| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932199331993419935199361993719938199391994019941199421994319944199451994619947199481994919950199511995219953199541995519956199571995819959199601996119962199631996419965199661996719968199691997019971199721997319974199751997619977199781997919980199811998219983199841998519986199871998819989199901999119992199931999419995199961999719998199992000020001200022000320004200052000620007200082000920010200112001220013200142001520016200172001820019200202002120022200232002420025200262002720028200292003020031200322003320034200352003620037200382003920040200412004220043200442004520046200472004820049200502005120052200532005420055200562005720058200592006020061200622006320064200652006620067200682006920070200712007220073200742007520076200772007820079200802008120082200832008420085200862008720088200892009020091200922009320094200952009620097200982009920100201012010220103201042010520106201072010820109201102011120112201132011420115201162011720118201192012020121201222012320124201252012620127201282012920130201312013220133201342013520136201372013820139201402014120142201432014420145201462014720148201492015020151201522015320154201552015620157201582015920160201612016220163201642016520166201672016820169201702017120172201732017420175201762017720178201792018020181201822018320184201852018620187201882018920190201912019220193201942019520196201972019820199202002020120202202032020420205202062020720208202092021020211202122021320214202152021620217202182021920220202212022220223202242022520226202272022820229202302023120232202332023420235202362023720238202392024020241202422024320244202452024620247202482024920250202512025220253202542025520256202572025820259202602026120262202632026420265202662026720268202692027020271202722027320274202752027620277202782027920280202812028220283202842028520286202872028820289202902029120292202932029420295202962029720298202992030020301203022030320304203052030620307203082030920310203112031220313203142031520316203172031820319203202032120322203232032420325203262032720328203292033020331203322033320334203352033620337203382033920340203412034220343203442034520346203472034820349203502035120352203532035420355203562035720358203592036020361203622036320364203652036620367203682036920370203712037220373203742037520376203772037820379203802038120382203832038420385203862038720388203892039020391203922039320394203952039620397203982039920400204012040220403204042040520406204072040820409204102041120412204132041420415204162041720418204192042020421204222042320424204252042620427204282042920430204312043220433204342043520436204372043820439204402044120442204432044420445204462044720448204492045020451204522045320454204552045620457204582045920460204612046220463204642046520466204672046820469204702047120472204732047420475204762047720478204792048020481204822048320484204852048620487204882048920490204912049220493204942049520496204972049820499205002050120502205032050420505205062050720508205092051020511205122051320514205152051620517205182051920520205212052220523205242052520526205272052820529205302053120532205332053420535205362053720538205392054020541205422054320544205452054620547205482054920550205512055220553205542055520556205572055820559205602056120562205632056420565205662056720568205692057020571205722057320574205752057620577205782057920580205812058220583205842058520586205872058820589205902059120592205932059420595205962059720598205992060020601206022060320604206052060620607206082060920610206112061220613206142061520616206172061820619206202062120622206232062420625206262062720628206292063020631206322063320634206352063620637206382063920640206412064220643206442064520646206472064820649206502065120652206532065420655206562065720658206592066020661206622066320664206652066620667206682066920670206712067220673206742067520676206772067820679206802068120682206832068420685206862068720688206892069020691206922069320694206952069620697206982069920700207012070220703207042070520706207072070820709207102071120712207132071420715207162071720718207192072020721207222072320724207252072620727207282072920730207312073220733207342073520736207372073820739207402074120742207432074420745207462074720748207492075020751207522075320754207552075620757207582075920760207612076220763207642076520766207672076820769207702077120772207732077420775207762077720778207792078020781207822078320784207852078620787207882078920790207912079220793207942079520796207972079820799208002080120802208032080420805208062080720808208092081020811208122081320814208152081620817208182081920820208212082220823208242082520826208272082820829208302083120832208332083420835208362083720838208392084020841208422084320844208452084620847208482084920850208512085220853208542085520856208572085820859208602086120862208632086420865208662086720868208692087020871208722087320874208752087620877208782087920880208812088220883208842088520886208872088820889208902089120892208932089420895208962089720898208992090020901209022090320904209052090620907209082090920910209112091220913209142091520916209172091820919209202092120922209232092420925209262092720928209292093020931209322093320934209352093620937209382093920940209412094220943209442094520946209472094820949209502095120952209532095420955209562095720958209592096020961209622096320964209652096620967209682096920970209712097220973209742097520976209772097820979209802098120982209832098420985209862098720988209892099020991209922099320994209952099620997209982099921000210012100221003210042100521006210072100821009210102101121012210132101421015210162101721018210192102021021210222102321024210252102621027210282102921030210312103221033210342103521036210372103821039210402104121042210432104421045210462104721048210492105021051210522105321054210552105621057210582105921060210612106221063210642106521066210672106821069210702107121072210732107421075210762107721078210792108021081210822108321084210852108621087210882108921090210912109221093210942109521096210972109821099211002110121102211032110421105211062110721108211092111021111211122111321114211152111621117211182111921120211212112221123211242112521126211272112821129211302113121132211332113421135211362113721138211392114021141211422114321144211452114621147211482114921150211512115221153211542115521156211572115821159211602116121162211632116421165211662116721168211692117021171211722117321174211752117621177211782117921180211812118221183211842118521186211872118821189211902119121192211932119421195211962119721198211992120021201212022120321204212052120621207212082120921210212112121221213212142121521216212172121821219212202122121222212232122421225212262122721228212292123021231212322123321234212352123621237212382123921240212412124221243212442124521246212472124821249212502125121252212532125421255212562125721258212592126021261212622126321264212652126621267212682126921270212712127221273212742127521276212772127821279212802128121282212832128421285212862128721288212892129021291212922129321294212952129621297212982129921300213012130221303213042130521306213072130821309213102131121312213132131421315213162131721318213192132021321213222132321324213252132621327213282132921330213312133221333213342133521336213372133821339213402134121342213432134421345213462134721348213492135021351213522135321354213552135621357213582135921360213612136221363213642136521366213672136821369213702137121372213732137421375213762137721378213792138021381213822138321384213852138621387213882138921390213912139221393213942139521396213972139821399214002140121402214032140421405214062140721408214092141021411214122141321414214152141621417214182141921420214212142221423214242142521426214272142821429214302143121432214332143421435214362143721438214392144021441214422144321444214452144621447214482144921450214512145221453214542145521456214572145821459214602146121462214632146421465214662146721468214692147021471214722147321474214752147621477214782147921480214812148221483214842148521486214872148821489214902149121492214932149421495214962149721498214992150021501215022150321504215052150621507215082150921510215112151221513215142151521516215172151821519215202152121522215232152421525215262152721528215292153021531215322153321534215352153621537215382153921540215412154221543215442154521546215472154821549215502155121552215532155421555215562155721558215592156021561215622156321564215652156621567215682156921570215712157221573215742157521576215772157821579215802158121582215832158421585215862158721588215892159021591215922159321594215952159621597215982159921600216012160221603216042160521606216072160821609216102161121612216132161421615216162161721618216192162021621216222162321624216252162621627216282162921630216312163221633216342163521636216372163821639216402164121642216432164421645216462164721648216492165021651216522165321654216552165621657216582165921660216612166221663216642166521666216672166821669216702167121672216732167421675216762167721678216792168021681216822168321684216852168621687216882168921690216912169221693216942169521696216972169821699217002170121702217032170421705217062170721708217092171021711217122171321714217152171621717217182171921720217212172221723217242172521726217272172821729217302173121732217332173421735217362173721738217392174021741217422174321744217452174621747217482174921750217512175221753217542175521756217572175821759217602176121762217632176421765217662176721768217692177021771217722177321774217752177621777217782177921780217812178221783217842178521786217872178821789217902179121792217932179421795217962179721798217992180021801218022180321804218052180621807218082180921810218112181221813218142181521816218172181821819218202182121822218232182421825218262182721828218292183021831218322183321834218352183621837218382183921840218412184221843218442184521846218472184821849218502185121852218532185421855218562185721858218592186021861218622186321864218652186621867218682186921870218712187221873218742187521876218772187821879218802188121882218832188421885218862188721888218892189021891218922189321894218952189621897218982189921900219012190221903219042190521906219072190821909219102191121912219132191421915219162191721918219192192021921219222192321924219252192621927219282192921930219312193221933219342193521936219372193821939219402194121942219432194421945219462194721948219492195021951219522195321954219552195621957219582195921960219612196221963219642196521966219672196821969219702197121972219732197421975219762197721978219792198021981219822198321984219852198621987219882198921990219912199221993219942199521996219972199821999220002200122002220032200422005220062200722008220092201022011220122201322014220152201622017220182201922020220212202222023220242202522026220272202822029220302203122032220332203422035220362203722038220392204022041220422204322044220452204622047220482204922050220512205222053220542205522056220572205822059220602206122062220632206422065220662206722068220692207022071220722207322074220752207622077220782207922080220812208222083220842208522086220872208822089220902209122092220932209422095220962209722098220992210022101221022210322104221052210622107221082210922110221112211222113221142211522116221172211822119221202212122122221232212422125221262212722128221292213022131221322213322134221352213622137221382213922140221412214222143221442214522146221472214822149221502215122152221532215422155221562215722158221592216022161221622216322164221652216622167221682216922170221712217222173221742217522176221772217822179221802218122182221832218422185221862218722188221892219022191221922219322194221952219622197221982219922200222012220222203222042220522206222072220822209222102221122212222132221422215222162221722218222192222022221222222222322224222252222622227222282222922230222312223222233222342223522236222372223822239222402224122242222432224422245222462224722248222492225022251222522225322254222552225622257222582225922260222612226222263222642226522266222672226822269222702227122272222732227422275222762227722278222792228022281222822228322284222852228622287222882228922290222912229222293222942229522296222972229822299223002230122302223032230422305223062230722308223092231022311223122231322314223152231622317223182231922320223212232222323223242232522326223272232822329223302233122332223332233422335223362233722338223392234022341223422234322344223452234622347223482234922350223512235222353223542235522356223572235822359223602236122362223632236422365223662236722368223692237022371223722237322374223752237622377223782237922380223812238222383223842238522386223872238822389223902239122392223932239422395223962239722398223992240022401224022240322404224052240622407224082240922410224112241222413224142241522416224172241822419224202242122422224232242422425224262242722428224292243022431224322243322434224352243622437224382243922440224412244222443224442244522446224472244822449224502245122452224532245422455224562245722458224592246022461224622246322464224652246622467224682246922470224712247222473224742247522476224772247822479224802248122482224832248422485224862248722488224892249022491224922249322494224952249622497224982249922500225012250222503225042250522506225072250822509225102251122512225132251422515225162251722518225192252022521225222252322524225252252622527225282252922530225312253222533225342253522536225372253822539225402254122542225432254422545225462254722548225492255022551225522255322554225552255622557225582255922560225612256222563225642256522566225672256822569225702257122572225732257422575225762257722578225792258022581225822258322584225852258622587225882258922590225912259222593225942259522596225972259822599226002260122602226032260422605226062260722608226092261022611226122261322614226152261622617226182261922620226212262222623226242262522626226272262822629226302263122632226332263422635226362263722638226392264022641226422264322644226452264622647226482264922650226512265222653226542265522656226572265822659226602266122662226632266422665226662266722668226692267022671226722267322674226752267622677226782267922680226812268222683226842268522686226872268822689226902269122692226932269422695226962269722698226992270022701227022270322704227052270622707227082270922710227112271222713227142271522716227172271822719227202272122722227232272422725227262272722728227292273022731227322273322734227352273622737227382273922740227412274222743227442274522746227472274822749227502275122752227532275422755227562275722758227592276022761227622276322764227652276622767227682276922770227712277222773227742277522776227772277822779227802278122782227832278422785227862278722788227892279022791227922279322794227952279622797227982279922800228012280222803228042280522806228072280822809228102281122812228132281422815228162281722818228192282022821228222282322824228252282622827228282282922830228312283222833228342283522836228372283822839228402284122842228432284422845228462284722848228492285022851228522285322854228552285622857228582285922860228612286222863228642286522866228672286822869228702287122872228732287422875228762287722878228792288022881228822288322884228852288622887228882288922890228912289222893228942289522896228972289822899229002290122902229032290422905229062290722908229092291022911229122291322914229152291622917229182291922920229212292222923229242292522926229272292822929229302293122932229332293422935229362293722938229392294022941229422294322944229452294622947229482294922950229512295222953229542295522956229572295822959229602296122962229632296422965229662296722968229692297022971229722297322974229752297622977229782297922980229812298222983229842298522986229872298822989229902299122992229932299422995229962299722998229992300023001230022300323004230052300623007230082300923010230112301223013230142301523016230172301823019230202302123022230232302423025230262302723028230292303023031230322303323034230352303623037230382303923040230412304223043230442304523046230472304823049230502305123052230532305423055230562305723058230592306023061230622306323064230652306623067230682306923070230712307223073230742307523076230772307823079230802308123082230832308423085230862308723088230892309023091230922309323094230952309623097230982309923100231012310223103231042310523106231072310823109231102311123112231132311423115231162311723118231192312023121231222312323124231252312623127231282312923130231312313223133231342313523136231372313823139231402314123142231432314423145231462314723148231492315023151231522315323154231552315623157231582315923160231612316223163231642316523166231672316823169231702317123172231732317423175231762317723178231792318023181231822318323184231852318623187231882318923190231912319223193231942319523196231972319823199232002320123202232032320423205232062320723208232092321023211232122321323214232152321623217232182321923220232212322223223232242322523226232272322823229232302323123232232332323423235232362323723238232392324023241232422324323244232452324623247232482324923250232512325223253232542325523256232572325823259232602326123262232632326423265232662326723268232692327023271232722327323274232752327623277232782327923280232812328223283232842328523286232872328823289232902329123292232932329423295232962329723298232992330023301233022330323304233052330623307233082330923310233112331223313233142331523316233172331823319233202332123322233232332423325233262332723328233292333023331233322333323334233352333623337233382333923340233412334223343233442334523346233472334823349233502335123352233532335423355233562335723358233592336023361233622336323364233652336623367233682336923370233712337223373233742337523376233772337823379233802338123382233832338423385233862338723388233892339023391233922339323394233952339623397233982339923400234012340223403234042340523406234072340823409234102341123412234132341423415234162341723418234192342023421234222342323424234252342623427234282342923430234312343223433234342343523436234372343823439234402344123442234432344423445234462344723448234492345023451234522345323454234552345623457234582345923460234612346223463234642346523466234672346823469234702347123472234732347423475234762347723478234792348023481234822348323484234852348623487234882348923490234912349223493234942349523496234972349823499235002350123502235032350423505235062350723508235092351023511235122351323514235152351623517235182351923520235212352223523235242352523526235272352823529235302353123532235332353423535235362353723538235392354023541235422354323544235452354623547235482354923550235512355223553235542355523556235572355823559235602356123562235632356423565235662356723568235692357023571235722357323574235752357623577235782357923580235812358223583235842358523586235872358823589235902359123592235932359423595235962359723598235992360023601236022360323604236052360623607236082360923610236112361223613236142361523616236172361823619236202362123622236232362423625236262362723628236292363023631236322363323634236352363623637236382363923640236412364223643236442364523646236472364823649236502365123652236532365423655236562365723658236592366023661236622366323664236652366623667236682366923670236712367223673236742367523676236772367823679236802368123682236832368423685236862368723688236892369023691236922369323694236952369623697236982369923700237012370223703237042370523706237072370823709237102371123712237132371423715237162371723718237192372023721237222372323724237252372623727237282372923730237312373223733237342373523736237372373823739237402374123742237432374423745237462374723748237492375023751237522375323754237552375623757237582375923760237612376223763237642376523766237672376823769237702377123772237732377423775237762377723778237792378023781237822378323784237852378623787237882378923790237912379223793237942379523796237972379823799238002380123802238032380423805238062380723808238092381023811238122381323814238152381623817238182381923820238212382223823238242382523826238272382823829238302383123832238332383423835238362383723838238392384023841238422384323844238452384623847238482384923850238512385223853238542385523856238572385823859238602386123862238632386423865238662386723868238692387023871238722387323874238752387623877238782387923880238812388223883238842388523886238872388823889238902389123892238932389423895238962389723898238992390023901239022390323904239052390623907239082390923910239112391223913239142391523916239172391823919239202392123922239232392423925239262392723928239292393023931239322393323934239352393623937239382393923940239412394223943239442394523946239472394823949239502395123952239532395423955239562395723958239592396023961239622396323964239652396623967239682396923970239712397223973239742397523976239772397823979239802398123982239832398423985239862398723988239892399023991239922399323994239952399623997239982399924000240012400224003240042400524006240072400824009240102401124012240132401424015240162401724018240192402024021240222402324024240252402624027240282402924030240312403224033240342403524036240372403824039240402404124042240432404424045240462404724048240492405024051240522405324054240552405624057240582405924060240612406224063240642406524066240672406824069240702407124072240732407424075240762407724078240792408024081240822408324084240852408624087240882408924090240912409224093240942409524096240972409824099241002410124102241032410424105241062410724108241092411024111241122411324114241152411624117241182411924120241212412224123241242412524126241272412824129241302413124132241332413424135241362413724138241392414024141241422414324144241452414624147241482414924150241512415224153241542415524156241572415824159241602416124162241632416424165241662416724168241692417024171241722417324174241752417624177241782417924180241812418224183241842418524186241872418824189241902419124192241932419424195241962419724198241992420024201242022420324204242052420624207242082420924210242112421224213242142421524216242172421824219242202422124222242232422424225242262422724228242292423024231242322423324234242352423624237242382423924240242412424224243242442424524246242472424824249242502425124252242532425424255242562425724258242592426024261242622426324264242652426624267242682426924270242712427224273242742427524276242772427824279242802428124282242832428424285242862428724288242892429024291242922429324294242952429624297242982429924300243012430224303243042430524306243072430824309243102431124312243132431424315243162431724318243192432024321243222432324324243252432624327243282432924330243312433224333243342433524336243372433824339243402434124342243432434424345243462434724348243492435024351243522435324354243552435624357243582435924360243612436224363243642436524366243672436824369243702437124372243732437424375243762437724378243792438024381243822438324384243852438624387243882438924390243912439224393243942439524396243972439824399244002440124402244032440424405244062440724408244092441024411244122441324414244152441624417244182441924420244212442224423244242442524426244272442824429244302443124432244332443424435244362443724438244392444024441244422444324444244452444624447244482444924450244512445224453244542445524456244572445824459244602446124462244632446424465244662446724468244692447024471244722447324474244752447624477244782447924480244812448224483244842448524486244872448824489244902449124492244932449424495244962449724498244992450024501245022450324504245052450624507245082450924510245112451224513245142451524516245172451824519245202452124522245232452424525245262452724528245292453024531245322453324534245352453624537245382453924540245412454224543245442454524546245472454824549245502455124552245532455424555245562455724558245592456024561245622456324564245652456624567245682456924570245712457224573245742457524576245772457824579245802458124582245832458424585245862458724588245892459024591245922459324594245952459624597245982459924600246012460224603246042460524606246072460824609246102461124612246132461424615246162461724618246192462024621246222462324624246252462624627246282462924630246312463224633246342463524636246372463824639246402464124642246432464424645246462464724648246492465024651246522465324654246552465624657246582465924660246612466224663246642466524666246672466824669246702467124672246732467424675246762467724678246792468024681246822468324684246852468624687246882468924690246912469224693246942469524696246972469824699247002470124702247032470424705247062470724708247092471024711247122471324714247152471624717247182471924720247212472224723247242472524726247272472824729247302473124732247332473424735247362473724738247392474024741247422474324744247452474624747247482474924750247512475224753247542475524756247572475824759247602476124762247632476424765247662476724768247692477024771247722477324774247752477624777247782477924780247812478224783247842478524786247872478824789247902479124792247932479424795247962479724798247992480024801248022480324804248052480624807248082480924810248112481224813248142481524816248172481824819248202482124822248232482424825248262482724828248292483024831248322483324834248352483624837248382483924840248412484224843248442484524846248472484824849248502485124852248532485424855248562485724858248592486024861248622486324864248652486624867248682486924870248712487224873248742487524876248772487824879248802488124882248832488424885248862488724888248892489024891248922489324894248952489624897248982489924900249012490224903249042490524906249072490824909249102491124912249132491424915249162491724918249192492024921249222492324924249252492624927249282492924930249312493224933249342493524936249372493824939249402494124942249432494424945249462494724948249492495024951249522495324954249552495624957249582495924960249612496224963249642496524966249672496824969249702497124972249732497424975249762497724978249792498024981249822498324984249852498624987249882498924990249912499224993249942499524996249972499824999250002500125002250032500425005250062500725008250092501025011250122501325014250152501625017250182501925020250212502225023250242502525026250272502825029250302503125032250332503425035250362503725038250392504025041250422504325044250452504625047250482504925050250512505225053250542505525056250572505825059250602506125062250632506425065250662506725068250692507025071250722507325074250752507625077250782507925080250812508225083250842508525086250872508825089250902509125092250932509425095250962509725098250992510025101251022510325104251052510625107251082510925110251112511225113251142511525116251172511825119251202512125122251232512425125251262512725128251292513025131251322513325134251352513625137251382513925140251412514225143251442514525146251472514825149251502515125152251532515425155251562515725158251592516025161251622516325164251652516625167251682516925170251712517225173251742517525176251772517825179251802518125182251832518425185251862518725188251892519025191251922519325194251952519625197251982519925200252012520225203252042520525206252072520825209252102521125212252132521425215252162521725218252192522025221252222522325224252252522625227252282522925230252312523225233252342523525236252372523825239252402524125242252432524425245252462524725248252492525025251252522525325254252552525625257252582525925260252612526225263252642526525266252672526825269252702527125272252732527425275252762527725278252792528025281252822528325284252852528625287252882528925290252912529225293252942529525296252972529825299253002530125302253032530425305253062530725308253092531025311253122531325314253152531625317253182531925320253212532225323253242532525326253272532825329253302533125332253332533425335253362533725338253392534025341253422534325344253452534625347253482534925350253512535225353253542535525356253572535825359253602536125362253632536425365253662536725368253692537025371253722537325374253752537625377253782537925380253812538225383253842538525386253872538825389253902539125392253932539425395253962539725398253992540025401254022540325404254052540625407254082540925410254112541225413254142541525416254172541825419254202542125422254232542425425254262542725428254292543025431254322543325434254352543625437254382543925440254412544225443254442544525446254472544825449254502545125452254532545425455254562545725458254592546025461254622546325464254652546625467254682546925470254712547225473254742547525476254772547825479254802548125482254832548425485254862548725488254892549025491254922549325494254952549625497254982549925500255012550225503255042550525506255072550825509255102551125512255132551425515255162551725518255192552025521255222552325524255252552625527255282552925530255312553225533255342553525536255372553825539255402554125542255432554425545255462554725548255492555025551255522555325554255552555625557255582555925560255612556225563255642556525566255672556825569255702557125572255732557425575255762557725578255792558025581255822558325584255852558625587255882558925590255912559225593255942559525596255972559825599256002560125602256032560425605256062560725608256092561025611256122561325614256152561625617256182561925620256212562225623256242562525626256272562825629256302563125632256332563425635256362563725638256392564025641256422564325644256452564625647256482564925650256512565225653256542565525656256572565825659256602566125662256632566425665256662566725668256692567025671256722567325674256752567625677256782567925680256812568225683256842568525686256872568825689256902569125692256932569425695256962569725698256992570025701257022570325704257052570625707257082570925710257112571225713257142571525716257172571825719257202572125722257232572425725257262572725728257292573025731257322573325734257352573625737257382573925740257412574225743257442574525746257472574825749257502575125752257532575425755257562575725758257592576025761257622576325764257652576625767257682576925770257712577225773257742577525776257772577825779257802578125782257832578425785257862578725788257892579025791257922579325794257952579625797257982579925800258012580225803258042580525806258072580825809258102581125812258132581425815258162581725818258192582025821258222582325824258252582625827258282582925830258312583225833258342583525836258372583825839258402584125842258432584425845258462584725848258492585025851258522585325854258552585625857258582585925860258612586225863258642586525866258672586825869258702587125872258732587425875258762587725878258792588025881258822588325884258852588625887258882588925890258912589225893258942589525896258972589825899259002590125902259032590425905259062590725908259092591025911259122591325914259152591625917259182591925920259212592225923259242592525926259272592825929259302593125932259332593425935259362593725938259392594025941259422594325944259452594625947259482594925950259512595225953259542595525956259572595825959259602596125962259632596425965259662596725968259692597025971259722597325974259752597625977259782597925980259812598225983259842598525986259872598825989259902599125992259932599425995259962599725998259992600026001260022600326004260052600626007260082600926010260112601226013260142601526016260172601826019260202602126022260232602426025260262602726028260292603026031260322603326034260352603626037260382603926040260412604226043260442604526046260472604826049260502605126052260532605426055260562605726058260592606026061260622606326064260652606626067260682606926070260712607226073260742607526076260772607826079260802608126082260832608426085260862608726088260892609026091260922609326094260952609626097260982609926100261012610226103261042610526106261072610826109261102611126112261132611426115261162611726118261192612026121261222612326124261252612626127261282612926130261312613226133261342613526136261372613826139261402614126142261432614426145261462614726148261492615026151261522615326154261552615626157261582615926160261612616226163261642616526166261672616826169261702617126172261732617426175261762617726178261792618026181261822618326184261852618626187261882618926190261912619226193261942619526196261972619826199262002620126202262032620426205262062620726208262092621026211262122621326214262152621626217262182621926220262212622226223262242622526226262272622826229262302623126232262332623426235262362623726238262392624026241262422624326244262452624626247262482624926250262512625226253262542625526256262572625826259262602626126262262632626426265262662626726268262692627026271262722627326274262752627626277262782627926280262812628226283262842628526286262872628826289262902629126292262932629426295262962629726298262992630026301263022630326304263052630626307263082630926310263112631226313263142631526316263172631826319263202632126322263232632426325263262632726328263292633026331263322633326334263352633626337263382633926340263412634226343263442634526346263472634826349263502635126352263532635426355263562635726358263592636026361263622636326364263652636626367263682636926370263712637226373263742637526376263772637826379263802638126382263832638426385263862638726388263892639026391263922639326394263952639626397263982639926400264012640226403264042640526406264072640826409264102641126412264132641426415264162641726418264192642026421264222642326424264252642626427264282642926430264312643226433264342643526436264372643826439264402644126442264432644426445264462644726448264492645026451264522645326454264552645626457264582645926460264612646226463264642646526466264672646826469264702647126472264732647426475264762647726478264792648026481264822648326484264852648626487264882648926490264912649226493264942649526496264972649826499265002650126502265032650426505265062650726508265092651026511265122651326514265152651626517265182651926520265212652226523265242652526526265272652826529265302653126532265332653426535265362653726538265392654026541265422654326544265452654626547265482654926550265512655226553265542655526556265572655826559265602656126562265632656426565265662656726568265692657026571265722657326574265752657626577265782657926580265812658226583265842658526586265872658826589265902659126592265932659426595265962659726598265992660026601266022660326604266052660626607266082660926610266112661226613266142661526616266172661826619266202662126622266232662426625266262662726628266292663026631266322663326634266352663626637266382663926640266412664226643266442664526646266472664826649266502665126652266532665426655266562665726658266592666026661266622666326664266652666626667266682666926670266712667226673266742667526676266772667826679266802668126682266832668426685266862668726688266892669026691266922669326694266952669626697266982669926700267012670226703267042670526706267072670826709267102671126712267132671426715267162671726718267192672026721267222672326724267252672626727267282672926730267312673226733267342673526736267372673826739267402674126742267432674426745267462674726748267492675026751267522675326754267552675626757267582675926760267612676226763267642676526766267672676826769267702677126772267732677426775267762677726778267792678026781267822678326784267852678626787267882678926790267912679226793267942679526796267972679826799268002680126802268032680426805268062680726808268092681026811268122681326814268152681626817268182681926820268212682226823268242682526826268272682826829268302683126832268332683426835268362683726838268392684026841268422684326844268452684626847268482684926850268512685226853268542685526856268572685826859268602686126862268632686426865268662686726868268692687026871268722687326874268752687626877268782687926880268812688226883268842688526886268872688826889268902689126892268932689426895268962689726898268992690026901269022690326904269052690626907269082690926910269112691226913269142691526916269172691826919269202692126922269232692426925269262692726928269292693026931269322693326934269352693626937269382693926940269412694226943269442694526946269472694826949269502695126952269532695426955269562695726958269592696026961269622696326964269652696626967269682696926970269712697226973269742697526976269772697826979269802698126982269832698426985269862698726988269892699026991269922699326994269952699626997269982699927000270012700227003270042700527006270072700827009270102701127012270132701427015270162701727018270192702027021270222702327024270252702627027270282702927030270312703227033270342703527036270372703827039270402704127042270432704427045270462704727048270492705027051270522705327054270552705627057270582705927060270612706227063270642706527066270672706827069270702707127072270732707427075270762707727078270792708027081270822708327084270852708627087270882708927090270912709227093270942709527096270972709827099271002710127102271032710427105271062710727108271092711027111271122711327114271152711627117271182711927120271212712227123271242712527126271272712827129271302713127132271332713427135271362713727138271392714027141271422714327144271452714627147271482714927150271512715227153271542715527156271572715827159271602716127162271632716427165271662716727168271692717027171271722717327174271752717627177271782717927180271812718227183271842718527186271872718827189271902719127192271932719427195271962719727198271992720027201272022720327204272052720627207272082720927210272112721227213272142721527216272172721827219272202722127222272232722427225272262722727228272292723027231272322723327234272352723627237272382723927240272412724227243272442724527246272472724827249272502725127252272532725427255272562725727258272592726027261272622726327264272652726627267272682726927270272712727227273272742727527276272772727827279272802728127282272832728427285272862728727288272892729027291272922729327294272952729627297272982729927300273012730227303273042730527306273072730827309273102731127312273132731427315273162731727318273192732027321273222732327324273252732627327273282732927330273312733227333273342733527336273372733827339273402734127342273432734427345273462734727348273492735027351273522735327354273552735627357273582735927360273612736227363273642736527366273672736827369273702737127372273732737427375273762737727378273792738027381273822738327384273852738627387273882738927390273912739227393273942739527396273972739827399274002740127402274032740427405274062740727408274092741027411274122741327414274152741627417274182741927420274212742227423274242742527426274272742827429274302743127432274332743427435274362743727438274392744027441274422744327444274452744627447274482744927450274512745227453274542745527456274572745827459274602746127462274632746427465274662746727468274692747027471274722747327474274752747627477274782747927480274812748227483274842748527486274872748827489274902749127492274932749427495274962749727498274992750027501275022750327504275052750627507275082750927510275112751227513275142751527516275172751827519275202752127522275232752427525275262752727528275292753027531275322753327534275352753627537275382753927540275412754227543275442754527546275472754827549275502755127552275532755427555275562755727558275592756027561275622756327564275652756627567275682756927570275712757227573275742757527576275772757827579275802758127582275832758427585275862758727588275892759027591275922759327594275952759627597275982759927600276012760227603276042760527606276072760827609276102761127612276132761427615276162761727618276192762027621276222762327624276252762627627276282762927630276312763227633276342763527636276372763827639276402764127642276432764427645276462764727648276492765027651276522765327654276552765627657276582765927660276612766227663276642766527666276672766827669276702767127672276732767427675276762767727678276792768027681276822768327684276852768627687276882768927690276912769227693276942769527696276972769827699277002770127702277032770427705277062770727708277092771027711277122771327714277152771627717277182771927720277212772227723277242772527726277272772827729277302773127732277332773427735277362773727738277392774027741277422774327744277452774627747277482774927750277512775227753277542775527756277572775827759277602776127762277632776427765277662776727768277692777027771277722777327774277752777627777277782777927780277812778227783277842778527786277872778827789277902779127792277932779427795277962779727798277992780027801278022780327804278052780627807278082780927810278112781227813278142781527816278172781827819278202782127822278232782427825278262782727828278292783027831278322783327834278352783627837278382783927840278412784227843278442784527846278472784827849278502785127852278532785427855278562785727858278592786027861278622786327864278652786627867278682786927870278712787227873278742787527876278772787827879278802788127882278832788427885278862788727888278892789027891278922789327894278952789627897278982789927900279012790227903279042790527906279072790827909279102791127912279132791427915279162791727918279192792027921279222792327924279252792627927279282792927930279312793227933279342793527936279372793827939279402794127942279432794427945279462794727948279492795027951279522795327954279552795627957279582795927960279612796227963279642796527966279672796827969279702797127972279732797427975279762797727978279792798027981279822798327984279852798627987279882798927990279912799227993279942799527996279972799827999280002800128002280032800428005280062800728008280092801028011280122801328014280152801628017280182801928020280212802228023280242802528026280272802828029280302803128032280332803428035280362803728038280392804028041280422804328044280452804628047280482804928050280512805228053280542805528056280572805828059280602806128062280632806428065280662806728068280692807028071280722807328074280752807628077280782807928080280812808228083280842808528086280872808828089280902809128092280932809428095280962809728098280992810028101281022810328104281052810628107281082810928110281112811228113281142811528116281172811828119281202812128122281232812428125281262812728128281292813028131281322813328134281352813628137281382813928140281412814228143281442814528146281472814828149281502815128152281532815428155281562815728158281592816028161281622816328164281652816628167281682816928170281712817228173281742817528176281772817828179281802818128182281832818428185281862818728188281892819028191281922819328194281952819628197281982819928200282012820228203282042820528206282072820828209282102821128212282132821428215282162821728218282192822028221282222822328224282252822628227282282822928230282312823228233282342823528236282372823828239282402824128242282432824428245282462824728248282492825028251282522825328254282552825628257282582825928260282612826228263282642826528266282672826828269282702827128272282732827428275282762827728278282792828028281282822828328284282852828628287282882828928290282912829228293282942829528296282972829828299283002830128302283032830428305283062830728308283092831028311283122831328314283152831628317283182831928320283212832228323283242832528326283272832828329283302833128332283332833428335283362833728338283392834028341283422834328344283452834628347283482834928350283512835228353283542835528356283572835828359283602836128362283632836428365283662836728368283692837028371283722837328374283752837628377283782837928380283812838228383283842838528386283872838828389283902839128392283932839428395283962839728398283992840028401284022840328404284052840628407284082840928410284112841228413284142841528416284172841828419284202842128422284232842428425284262842728428284292843028431284322843328434284352843628437284382843928440284412844228443284442844528446284472844828449284502845128452284532845428455284562845728458284592846028461284622846328464284652846628467284682846928470284712847228473284742847528476284772847828479284802848128482284832848428485284862848728488284892849028491284922849328494284952849628497284982849928500285012850228503285042850528506285072850828509285102851128512285132851428515285162851728518285192852028521285222852328524285252852628527285282852928530285312853228533285342853528536285372853828539285402854128542285432854428545285462854728548285492855028551285522855328554285552855628557285582855928560285612856228563285642856528566285672856828569285702857128572285732857428575285762857728578285792858028581285822858328584285852858628587285882858928590285912859228593285942859528596285972859828599286002860128602286032860428605286062860728608286092861028611286122861328614286152861628617286182861928620286212862228623286242862528626286272862828629286302863128632286332863428635286362863728638286392864028641286422864328644286452864628647286482864928650286512865228653286542865528656286572865828659286602866128662286632866428665286662866728668286692867028671286722867328674286752867628677286782867928680286812868228683286842868528686286872868828689286902869128692286932869428695286962869728698286992870028701287022870328704287052870628707287082870928710287112871228713287142871528716287172871828719287202872128722287232872428725287262872728728287292873028731287322873328734287352873628737287382873928740287412874228743287442874528746287472874828749287502875128752287532875428755287562875728758287592876028761287622876328764287652876628767287682876928770287712877228773287742877528776287772877828779287802878128782287832878428785287862878728788287892879028791287922879328794287952879628797287982879928800288012880228803288042880528806288072880828809288102881128812288132881428815288162881728818288192882028821288222882328824288252882628827288282882928830288312883228833288342883528836288372883828839288402884128842288432884428845288462884728848288492885028851288522885328854288552885628857288582885928860288612886228863288642886528866288672886828869288702887128872288732887428875288762887728878288792888028881288822888328884288852888628887288882888928890288912889228893288942889528896288972889828899289002890128902289032890428905289062890728908289092891028911289122891328914289152891628917289182891928920289212892228923289242892528926289272892828929289302893128932289332893428935289362893728938289392894028941289422894328944289452894628947289482894928950289512895228953289542895528956289572895828959289602896128962289632896428965289662896728968289692897028971289722897328974289752897628977289782897928980289812898228983289842898528986289872898828989289902899128992289932899428995289962899728998289992900029001290022900329004290052900629007290082900929010290112901229013290142901529016290172901829019290202902129022290232902429025290262902729028290292903029031290322903329034290352903629037290382903929040290412904229043290442904529046290472904829049290502905129052290532905429055290562905729058290592906029061290622906329064290652906629067290682906929070290712907229073290742907529076290772907829079290802908129082290832908429085290862908729088290892909029091290922909329094290952909629097290982909929100291012910229103291042910529106291072910829109291102911129112291132911429115291162911729118291192912029121291222912329124291252912629127291282912929130291312913229133291342913529136291372913829139291402914129142291432914429145291462914729148291492915029151291522915329154291552915629157291582915929160291612916229163291642916529166291672916829169291702917129172291732917429175291762917729178291792918029181291822918329184291852918629187291882918929190291912919229193291942919529196291972919829199292002920129202292032920429205292062920729208292092921029211292122921329214292152921629217292182921929220292212922229223292242922529226292272922829229292302923129232292332923429235292362923729238292392924029241292422924329244292452924629247292482924929250292512925229253292542925529256292572925829259292602926129262292632926429265292662926729268292692927029271292722927329274292752927629277292782927929280292812928229283292842928529286292872928829289292902929129292292932929429295292962929729298292992930029301293022930329304293052930629307293082930929310293112931229313293142931529316293172931829319293202932129322293232932429325293262932729328293292933029331293322933329334293352933629337293382933929340293412934229343293442934529346293472934829349293502935129352293532935429355293562935729358293592936029361293622936329364293652936629367293682936929370293712937229373293742937529376293772937829379293802938129382293832938429385293862938729388293892939029391293922939329394293952939629397293982939929400294012940229403294042940529406294072940829409294102941129412294132941429415294162941729418294192942029421294222942329424294252942629427294282942929430294312943229433294342943529436294372943829439294402944129442294432944429445294462944729448294492945029451294522945329454294552945629457294582945929460294612946229463294642946529466294672946829469294702947129472294732947429475294762947729478294792948029481294822948329484294852948629487294882948929490294912949229493294942949529496294972949829499295002950129502295032950429505295062950729508295092951029511295122951329514295152951629517295182951929520295212952229523295242952529526295272952829529295302953129532295332953429535295362953729538295392954029541295422954329544295452954629547295482954929550295512955229553295542955529556295572955829559295602956129562295632956429565295662956729568295692957029571295722957329574295752957629577295782957929580295812958229583295842958529586295872958829589295902959129592295932959429595295962959729598295992960029601296022960329604296052960629607296082960929610296112961229613296142961529616296172961829619296202962129622296232962429625296262962729628296292963029631296322963329634296352963629637296382963929640296412964229643296442964529646296472964829649296502965129652296532965429655296562965729658296592966029661296622966329664296652966629667296682966929670296712967229673296742967529676296772967829679296802968129682296832968429685296862968729688296892969029691296922969329694296952969629697296982969929700297012970229703297042970529706297072970829709297102971129712297132971429715297162971729718297192972029721297222972329724297252972629727297282972929730297312973229733297342973529736297372973829739297402974129742297432974429745297462974729748297492975029751297522975329754297552975629757297582975929760297612976229763297642976529766297672976829769297702977129772297732977429775297762977729778297792978029781297822978329784297852978629787297882978929790297912979229793297942979529796297972979829799298002980129802298032980429805298062980729808298092981029811298122981329814298152981629817298182981929820298212982229823298242982529826298272982829829298302983129832298332983429835298362983729838298392984029841298422984329844298452984629847298482984929850298512985229853298542985529856298572985829859298602986129862298632986429865298662986729868298692987029871298722987329874298752987629877298782987929880298812988229883298842988529886298872988829889298902989129892298932989429895298962989729898298992990029901299022990329904299052990629907299082990929910299112991229913299142991529916299172991829919299202992129922299232992429925299262992729928299292993029931299322993329934299352993629937299382993929940299412994229943299442994529946299472994829949299502995129952299532995429955299562995729958299592996029961299622996329964299652996629967299682996929970299712997229973299742997529976299772997829979299802998129982299832998429985299862998729988299892999029991299922999329994299952999629997299982999930000300013000230003300043000530006300073000830009300103001130012300133001430015300163001730018300193002030021300223002330024300253002630027300283002930030300313003230033300343003530036300373003830039300403004130042300433004430045300463004730048300493005030051300523005330054300553005630057300583005930060300613006230063300643006530066300673006830069300703007130072300733007430075300763007730078300793008030081300823008330084300853008630087300883008930090300913009230093300943009530096300973009830099301003010130102301033010430105301063010730108301093011030111301123011330114301153011630117301183011930120301213012230123301243012530126301273012830129301303013130132301333013430135301363013730138301393014030141301423014330144301453014630147301483014930150301513015230153301543015530156301573015830159301603016130162301633016430165301663016730168301693017030171301723017330174301753017630177301783017930180301813018230183301843018530186301873018830189301903019130192301933019430195301963019730198301993020030201302023020330204302053020630207302083020930210302113021230213302143021530216302173021830219302203022130222302233022430225302263022730228302293023030231302323023330234302353023630237302383023930240302413024230243302443024530246302473024830249302503025130252302533025430255302563025730258302593026030261302623026330264302653026630267302683026930270302713027230273302743027530276302773027830279302803028130282302833028430285302863028730288302893029030291302923029330294302953029630297302983029930300303013030230303303043030530306303073030830309303103031130312303133031430315303163031730318303193032030321303223032330324303253032630327303283032930330303313033230333303343033530336303373033830339303403034130342303433034430345303463034730348303493035030351303523035330354303553035630357303583035930360303613036230363303643036530366303673036830369303703037130372303733037430375303763037730378303793038030381303823038330384303853038630387303883038930390303913039230393303943039530396303973039830399304003040130402304033040430405304063040730408304093041030411304123041330414304153041630417304183041930420304213042230423304243042530426304273042830429304303043130432304333043430435304363043730438304393044030441304423044330444304453044630447304483044930450304513045230453304543045530456304573045830459304603046130462304633046430465304663046730468304693047030471304723047330474304753047630477304783047930480304813048230483304843048530486304873048830489304903049130492304933049430495304963049730498304993050030501305023050330504305053050630507305083050930510305113051230513305143051530516305173051830519305203052130522305233052430525305263052730528305293053030531305323053330534305353053630537305383053930540305413054230543305443054530546305473054830549305503055130552305533055430555305563055730558305593056030561305623056330564305653056630567305683056930570305713057230573305743057530576305773057830579305803058130582305833058430585305863058730588305893059030591305923059330594305953059630597305983059930600306013060230603306043060530606306073060830609306103061130612306133061430615306163061730618306193062030621306223062330624306253062630627306283062930630306313063230633306343063530636306373063830639306403064130642306433064430645306463064730648306493065030651306523065330654306553065630657306583065930660306613066230663306643066530666306673066830669306703067130672306733067430675306763067730678306793068030681306823068330684306853068630687306883068930690306913069230693306943069530696306973069830699307003070130702307033070430705307063070730708307093071030711307123071330714307153071630717307183071930720307213072230723307243072530726307273072830729307303073130732307333073430735307363073730738307393074030741307423074330744307453074630747307483074930750307513075230753307543075530756307573075830759307603076130762307633076430765307663076730768307693077030771307723077330774307753077630777307783077930780307813078230783307843078530786307873078830789307903079130792307933079430795307963079730798307993080030801308023080330804308053080630807308083080930810308113081230813308143081530816308173081830819308203082130822308233082430825308263082730828308293083030831308323083330834308353083630837308383083930840308413084230843308443084530846308473084830849308503085130852308533085430855308563085730858308593086030861308623086330864308653086630867308683086930870308713087230873308743087530876308773087830879308803088130882308833088430885308863088730888308893089030891308923089330894308953089630897308983089930900309013090230903309043090530906309073090830909309103091130912309133091430915309163091730918309193092030921309223092330924309253092630927309283092930930309313093230933309343093530936309373093830939309403094130942309433094430945309463094730948309493095030951309523095330954309553095630957309583095930960309613096230963309643096530966309673096830969309703097130972309733097430975309763097730978309793098030981309823098330984309853098630987309883098930990309913099230993309943099530996309973099830999310003100131002310033100431005310063100731008310093101031011310123101331014310153101631017310183101931020310213102231023310243102531026310273102831029310303103131032310333103431035310363103731038310393104031041310423104331044310453104631047310483104931050310513105231053310543105531056310573105831059310603106131062310633106431065310663106731068310693107031071310723107331074310753107631077310783107931080310813108231083310843108531086310873108831089310903109131092310933109431095310963109731098310993110031101311023110331104311053110631107311083110931110311113111231113311143111531116311173111831119311203112131122311233112431125311263112731128311293113031131311323113331134311353113631137311383113931140311413114231143311443114531146311473114831149311503115131152311533115431155311563115731158311593116031161311623116331164311653116631167311683116931170311713117231173311743117531176311773117831179311803118131182311833118431185311863118731188311893119031191311923119331194311953119631197311983119931200312013120231203312043120531206312073120831209312103121131212312133121431215312163121731218312193122031221312223122331224312253122631227312283122931230312313123231233312343123531236312373123831239312403124131242312433124431245312463124731248312493125031251312523125331254312553125631257312583125931260312613126231263312643126531266312673126831269312703127131272312733127431275312763127731278312793128031281312823128331284312853128631287312883128931290312913129231293312943129531296312973129831299313003130131302313033130431305313063130731308313093131031311313123131331314313153131631317313183131931320313213132231323313243132531326313273132831329313303133131332313333133431335313363133731338313393134031341313423134331344313453134631347313483134931350313513135231353313543135531356313573135831359313603136131362313633136431365313663136731368313693137031371313723137331374313753137631377313783137931380313813138231383313843138531386313873138831389313903139131392313933139431395313963139731398313993140031401314023140331404314053140631407314083140931410314113141231413314143141531416314173141831419314203142131422314233142431425314263142731428314293143031431314323143331434314353143631437314383143931440314413144231443314443144531446314473144831449314503145131452314533145431455314563145731458314593146031461314623146331464314653146631467314683146931470314713147231473314743147531476314773147831479314803148131482314833148431485314863148731488314893149031491314923149331494314953149631497314983149931500315013150231503315043150531506315073150831509315103151131512315133151431515315163151731518315193152031521315223152331524315253152631527315283152931530315313153231533315343153531536315373153831539315403154131542315433154431545315463154731548315493155031551315523155331554315553155631557315583155931560315613156231563315643156531566315673156831569315703157131572315733157431575315763157731578315793158031581315823158331584315853158631587315883158931590315913159231593315943159531596315973159831599316003160131602316033160431605316063160731608316093161031611316123161331614316153161631617316183161931620316213162231623316243162531626316273162831629316303163131632316333163431635316363163731638316393164031641316423164331644316453164631647316483164931650316513165231653316543165531656316573165831659316603166131662316633166431665316663166731668316693167031671316723167331674316753167631677316783167931680316813168231683316843168531686316873168831689316903169131692316933169431695316963169731698316993170031701317023170331704317053170631707317083170931710317113171231713317143171531716317173171831719317203172131722317233172431725317263172731728317293173031731317323173331734317353173631737317383173931740317413174231743317443174531746317473174831749317503175131752317533175431755317563175731758317593176031761317623176331764317653176631767317683176931770317713177231773317743177531776317773177831779317803178131782317833178431785317863178731788317893179031791317923179331794317953179631797317983179931800318013180231803318043180531806318073180831809318103181131812318133181431815318163181731818318193182031821318223182331824318253182631827318283182931830318313183231833318343183531836318373183831839318403184131842318433184431845318463184731848318493185031851318523185331854318553185631857318583185931860318613186231863318643186531866318673186831869318703187131872318733187431875318763187731878318793188031881318823188331884318853188631887318883188931890318913189231893318943189531896318973189831899319003190131902319033190431905319063190731908319093191031911319123191331914319153191631917319183191931920319213192231923319243192531926319273192831929319303193131932319333193431935319363193731938319393194031941319423194331944319453194631947319483194931950319513195231953319543195531956319573195831959319603196131962319633196431965319663196731968319693197031971319723197331974319753197631977319783197931980319813198231983319843198531986319873198831989319903199131992319933199431995319963199731998319993200032001320023200332004320053200632007320083200932010320113201232013320143201532016320173201832019320203202132022320233202432025320263202732028320293203032031320323203332034320353203632037320383203932040320413204232043320443204532046320473204832049320503205132052320533205432055320563205732058320593206032061320623206332064320653206632067320683206932070320713207232073320743207532076320773207832079320803208132082320833208432085320863208732088320893209032091320923209332094320953209632097320983209932100321013210232103321043210532106321073210832109321103211132112321133211432115321163211732118321193212032121321223212332124321253212632127321283212932130321313213232133321343213532136321373213832139321403214132142321433214432145321463214732148321493215032151321523215332154321553215632157321583215932160321613216232163321643216532166321673216832169321703217132172321733217432175321763217732178321793218032181321823218332184321853218632187321883218932190321913219232193321943219532196321973219832199322003220132202322033220432205322063220732208322093221032211322123221332214322153221632217322183221932220322213222232223322243222532226322273222832229322303223132232322333223432235322363223732238322393224032241322423224332244322453224632247322483224932250322513225232253322543225532256322573225832259322603226132262322633226432265322663226732268322693227032271322723227332274322753227632277322783227932280322813228232283322843228532286322873228832289322903229132292322933229432295322963229732298322993230032301323023230332304323053230632307323083230932310323113231232313323143231532316323173231832319323203232132322323233232432325323263232732328323293233032331323323233332334323353233632337323383233932340323413234232343323443234532346323473234832349323503235132352323533235432355323563235732358323593236032361323623236332364323653236632367323683236932370323713237232373323743237532376323773237832379323803238132382323833238432385323863238732388323893239032391323923239332394323953239632397323983239932400324013240232403324043240532406324073240832409324103241132412324133241432415324163241732418324193242032421324223242332424324253242632427324283242932430324313243232433324343243532436324373243832439324403244132442324433244432445324463244732448324493245032451324523245332454324553245632457324583245932460324613246232463324643246532466324673246832469324703247132472324733247432475324763247732478324793248032481324823248332484324853248632487324883248932490324913249232493324943249532496324973249832499325003250132502325033250432505325063250732508325093251032511325123251332514325153251632517325183251932520325213252232523325243252532526325273252832529325303253132532325333253432535325363253732538325393254032541325423254332544325453254632547325483254932550325513255232553325543255532556325573255832559325603256132562325633256432565325663256732568325693257032571325723257332574325753257632577325783257932580325813258232583325843258532586325873258832589325903259132592325933259432595325963259732598325993260032601326023260332604326053260632607326083260932610326113261232613326143261532616326173261832619326203262132622326233262432625326263262732628326293263032631326323263332634326353263632637326383263932640326413264232643326443264532646326473264832649326503265132652326533265432655326563265732658326593266032661326623266332664326653266632667326683266932670326713267232673326743267532676326773267832679326803268132682326833268432685326863268732688326893269032691326923269332694326953269632697326983269932700327013270232703327043270532706327073270832709327103271132712327133271432715327163271732718327193272032721327223272332724327253272632727327283272932730327313273232733327343273532736327373273832739327403274132742327433274432745327463274732748327493275032751327523275332754327553275632757327583275932760327613276232763327643276532766327673276832769327703277132772327733277432775327763277732778327793278032781327823278332784327853278632787327883278932790327913279232793327943279532796327973279832799328003280132802328033280432805328063280732808328093281032811328123281332814328153281632817328183281932820328213282232823328243282532826328273282832829328303283132832328333283432835328363283732838328393284032841328423284332844328453284632847328483284932850328513285232853328543285532856328573285832859328603286132862328633286432865328663286732868328693287032871328723287332874328753287632877328783287932880328813288232883328843288532886328873288832889328903289132892328933289432895328963289732898328993290032901329023290332904329053290632907329083290932910329113291232913329143291532916329173291832919329203292132922329233292432925329263292732928329293293032931329323293332934329353293632937329383293932940329413294232943329443294532946329473294832949329503295132952329533295432955329563295732958329593296032961329623296332964329653296632967329683296932970329713297232973329743297532976329773297832979329803298132982329833298432985329863298732988329893299032991329923299332994329953299632997329983299933000330013300233003330043300533006330073300833009330103301133012330133301433015330163301733018330193302033021330223302333024330253302633027330283302933030330313303233033330343303533036330373303833039330403304133042330433304433045330463304733048330493305033051330523305333054330553305633057330583305933060330613306233063330643306533066330673306833069330703307133072330733307433075330763307733078330793308033081330823308333084330853308633087330883308933090330913309233093330943309533096330973309833099331003310133102331033310433105331063310733108331093311033111331123311333114331153311633117331183311933120331213312233123331243312533126331273312833129331303313133132331333313433135331363313733138331393314033141331423314333144331453314633147331483314933150331513315233153331543315533156331573315833159331603316133162331633316433165331663316733168331693317033171331723317333174331753317633177331783317933180331813318233183331843318533186331873318833189331903319133192331933319433195331963319733198331993320033201332023320333204332053320633207332083320933210332113321233213332143321533216332173321833219332203322133222332233322433225332263322733228332293323033231332323323333234332353323633237332383323933240332413324233243332443324533246332473324833249332503325133252332533325433255332563325733258332593326033261332623326333264332653326633267332683326933270332713327233273332743327533276332773327833279332803328133282332833328433285332863328733288332893329033291332923329333294332953329633297332983329933300333013330233303333043330533306333073330833309333103331133312333133331433315333163331733318333193332033321333223332333324333253332633327333283332933330333313333233333333343333533336333373333833339333403334133342333433334433345333463334733348333493335033351333523335333354333553335633357333583335933360333613336233363333643336533366333673336833369333703337133372333733337433375333763337733378333793338033381333823338333384333853338633387333883338933390333913339233393333943339533396333973339833399334003340133402334033340433405334063340733408334093341033411334123341333414334153341633417334183341933420334213342233423334243342533426334273342833429334303343133432334333343433435334363343733438334393344033441334423344333444334453344633447334483344933450334513345233453334543345533456334573345833459334603346133462334633346433465334663346733468334693347033471334723347333474334753347633477334783347933480334813348233483334843348533486334873348833489334903349133492334933349433495334963349733498334993350033501335023350333504335053350633507335083350933510335113351233513335143351533516335173351833519335203352133522335233352433525335263352733528335293353033531335323353333534335353353633537335383353933540335413354233543335443354533546335473354833549335503355133552335533355433555335563355733558335593356033561335623356333564335653356633567335683356933570335713357233573335743357533576335773357833579335803358133582335833358433585335863358733588335893359033591335923359333594335953359633597335983359933600336013360233603336043360533606336073360833609336103361133612336133361433615336163361733618336193362033621336223362333624336253362633627336283362933630336313363233633336343363533636336373363833639336403364133642336433364433645336463364733648336493365033651336523365333654336553365633657336583365933660336613366233663336643366533666336673366833669336703367133672336733367433675336763367733678336793368033681336823368333684336853368633687336883368933690336913369233693336943369533696336973369833699337003370133702337033370433705337063370733708337093371033711337123371333714337153371633717337183371933720337213372233723337243372533726337273372833729337303373133732337333373433735337363373733738337393374033741337423374333744337453374633747337483374933750337513375233753337543375533756337573375833759337603376133762337633376433765337663376733768337693377033771337723377333774337753377633777337783377933780337813378233783337843378533786337873378833789337903379133792337933379433795337963379733798337993380033801338023380333804338053380633807338083380933810338113381233813338143381533816338173381833819338203382133822338233382433825338263382733828338293383033831338323383333834338353383633837338383383933840338413384233843338443384533846338473384833849338503385133852338533385433855338563385733858338593386033861338623386333864338653386633867338683386933870338713387233873338743387533876338773387833879338803388133882338833388433885338863388733888338893389033891338923389333894338953389633897338983389933900339013390233903339043390533906339073390833909339103391133912339133391433915339163391733918339193392033921339223392333924339253392633927339283392933930339313393233933339343393533936339373393833939339403394133942339433394433945339463394733948339493395033951339523395333954339553395633957339583395933960339613396233963339643396533966339673396833969339703397133972339733397433975339763397733978339793398033981339823398333984339853398633987339883398933990339913399233993339943399533996339973399833999340003400134002340033400434005340063400734008340093401034011340123401334014340153401634017340183401934020340213402234023340243402534026340273402834029340303403134032340333403434035340363403734038340393404034041340423404334044340453404634047340483404934050340513405234053340543405534056340573405834059340603406134062340633406434065340663406734068340693407034071340723407334074340753407634077340783407934080340813408234083340843408534086340873408834089340903409134092340933409434095340963409734098340993410034101341023410334104341053410634107341083410934110341113411234113341143411534116341173411834119341203412134122341233412434125341263412734128341293413034131341323413334134341353413634137341383413934140341413414234143341443414534146341473414834149341503415134152341533415434155341563415734158341593416034161341623416334164341653416634167341683416934170341713417234173341743417534176341773417834179341803418134182341833418434185341863418734188341893419034191341923419334194341953419634197341983419934200342013420234203342043420534206342073420834209342103421134212342133421434215342163421734218342193422034221342223422334224342253422634227342283422934230342313423234233342343423534236342373423834239342403424134242342433424434245342463424734248342493425034251342523425334254342553425634257342583425934260342613426234263342643426534266342673426834269342703427134272342733427434275342763427734278342793428034281342823428334284342853428634287342883428934290342913429234293342943429534296342973429834299343003430134302343033430434305343063430734308343093431034311343123431334314343153431634317343183431934320343213432234323343243432534326343273432834329343303433134332343333433434335343363433734338343393434034341343423434334344343453434634347343483434934350343513435234353343543435534356343573435834359343603436134362343633436434365343663436734368343693437034371343723437334374343753437634377343783437934380343813438234383343843438534386343873438834389343903439134392343933439434395343963439734398343993440034401344023440334404344053440634407344083440934410344113441234413344143441534416344173441834419344203442134422344233442434425344263442734428344293443034431344323443334434344353443634437344383443934440344413444234443344443444534446344473444834449344503445134452344533445434455344563445734458344593446034461344623446334464344653446634467344683446934470344713447234473344743447534476344773447834479344803448134482344833448434485344863448734488344893449034491344923449334494344953449634497344983449934500345013450234503345043450534506345073450834509345103451134512345133451434515345163451734518345193452034521345223452334524345253452634527345283452934530345313453234533345343453534536345373453834539345403454134542345433454434545345463454734548345493455034551345523455334554345553455634557345583455934560345613456234563345643456534566345673456834569345703457134572345733457434575345763457734578345793458034581345823458334584345853458634587345883458934590345913459234593345943459534596345973459834599346003460134602346033460434605346063460734608346093461034611346123461334614346153461634617346183461934620346213462234623346243462534626346273462834629346303463134632346333463434635346363463734638346393464034641346423464334644346453464634647346483464934650346513465234653346543465534656346573465834659346603466134662346633466434665346663466734668346693467034671346723467334674346753467634677346783467934680346813468234683346843468534686346873468834689346903469134692346933469434695346963469734698346993470034701347023470334704347053470634707347083470934710347113471234713347143471534716347173471834719347203472134722347233472434725347263472734728347293473034731347323473334734347353473634737347383473934740347413474234743347443474534746347473474834749347503475134752347533475434755347563475734758347593476034761347623476334764347653476634767347683476934770347713477234773347743477534776347773477834779347803478134782347833478434785347863478734788347893479034791347923479334794347953479634797347983479934800348013480234803348043480534806348073480834809348103481134812348133481434815348163481734818348193482034821348223482334824348253482634827348283482934830348313483234833348343483534836348373483834839348403484134842348433484434845348463484734848348493485034851348523485334854348553485634857348583485934860348613486234863348643486534866348673486834869348703487134872348733487434875348763487734878348793488034881348823488334884348853488634887348883488934890348913489234893348943489534896348973489834899349003490134902349033490434905349063490734908349093491034911349123491334914349153491634917349183491934920349213492234923349243492534926349273492834929349303493134932349333493434935349363493734938349393494034941349423494334944349453494634947349483494934950349513495234953349543495534956349573495834959349603496134962349633496434965349663496734968349693497034971349723497334974349753497634977349783497934980349813498234983349843498534986349873498834989349903499134992349933499434995349963499734998349993500035001350023500335004350053500635007350083500935010350113501235013350143501535016350173501835019350203502135022350233502435025350263502735028350293503035031350323503335034350353503635037350383503935040350413504235043350443504535046350473504835049350503505135052350533505435055350563505735058350593506035061350623506335064350653506635067350683506935070350713507235073350743507535076350773507835079350803508135082350833508435085350863508735088350893509035091350923509335094350953509635097350983509935100351013510235103351043510535106351073510835109351103511135112351133511435115351163511735118351193512035121351223512335124351253512635127351283512935130351313513235133351343513535136351373513835139351403514135142351433514435145351463514735148351493515035151351523515335154351553515635157351583515935160351613516235163351643516535166351673516835169351703517135172351733517435175351763517735178351793518035181351823518335184351853518635187351883518935190351913519235193351943519535196351973519835199352003520135202352033520435205352063520735208352093521035211352123521335214352153521635217352183521935220352213522235223352243522535226352273522835229352303523135232352333523435235352363523735238352393524035241352423524335244352453524635247352483524935250352513525235253352543525535256352573525835259352603526135262352633526435265352663526735268352693527035271352723527335274352753527635277352783527935280352813528235283352843528535286352873528835289352903529135292352933529435295352963529735298352993530035301353023530335304353053530635307353083530935310353113531235313353143531535316353173531835319353203532135322353233532435325353263532735328353293533035331353323533335334353353533635337353383533935340353413534235343353443534535346353473534835349353503535135352353533535435355353563535735358353593536035361353623536335364353653536635367353683536935370353713537235373353743537535376353773537835379353803538135382353833538435385353863538735388353893539035391353923539335394353953539635397353983539935400354013540235403354043540535406354073540835409354103541135412354133541435415354163541735418354193542035421354223542335424354253542635427354283542935430354313543235433354343543535436354373543835439354403544135442354433544435445354463544735448354493545035451354523545335454354553545635457354583545935460354613546235463354643546535466354673546835469354703547135472354733547435475354763547735478354793548035481354823548335484354853548635487354883548935490354913549235493354943549535496354973549835499355003550135502355033550435505355063550735508355093551035511355123551335514355153551635517355183551935520355213552235523355243552535526355273552835529355303553135532355333553435535355363553735538355393554035541355423554335544355453554635547355483554935550355513555235553355543555535556355573555835559355603556135562355633556435565355663556735568355693557035571355723557335574355753557635577355783557935580355813558235583355843558535586355873558835589355903559135592355933559435595355963559735598355993560035601356023560335604356053560635607356083560935610356113561235613356143561535616356173561835619356203562135622356233562435625356263562735628356293563035631356323563335634356353563635637356383563935640356413564235643356443564535646356473564835649356503565135652356533565435655356563565735658356593566035661356623566335664356653566635667356683566935670356713567235673356743567535676356773567835679356803568135682356833568435685356863568735688356893569035691356923569335694356953569635697356983569935700357013570235703357043570535706357073570835709357103571135712357133571435715357163571735718357193572035721357223572335724357253572635727357283572935730357313573235733357343573535736357373573835739357403574135742357433574435745357463574735748357493575035751357523575335754357553575635757357583575935760357613576235763357643576535766357673576835769357703577135772357733577435775357763577735778357793578035781357823578335784357853578635787357883578935790357913579235793357943579535796357973579835799358003580135802358033580435805358063580735808358093581035811358123581335814358153581635817358183581935820358213582235823358243582535826358273582835829358303583135832358333583435835358363583735838358393584035841358423584335844358453584635847358483584935850358513585235853358543585535856358573585835859358603586135862358633586435865358663586735868358693587035871358723587335874358753587635877358783587935880358813588235883358843588535886358873588835889358903589135892358933589435895358963589735898358993590035901359023590335904359053590635907359083590935910359113591235913359143591535916359173591835919359203592135922359233592435925359263592735928359293593035931359323593335934359353593635937359383593935940359413594235943359443594535946359473594835949359503595135952359533595435955359563595735958359593596035961359623596335964359653596635967359683596935970359713597235973359743597535976359773597835979359803598135982359833598435985359863598735988359893599035991359923599335994359953599635997359983599936000360013600236003360043600536006360073600836009360103601136012360133601436015360163601736018360193602036021360223602336024360253602636027360283602936030360313603236033360343603536036360373603836039360403604136042360433604436045360463604736048360493605036051360523605336054360553605636057360583605936060360613606236063360643606536066360673606836069360703607136072360733607436075360763607736078360793608036081360823608336084360853608636087360883608936090360913609236093360943609536096360973609836099361003610136102361033610436105361063610736108361093611036111361123611336114361153611636117361183611936120361213612236123361243612536126361273612836129361303613136132361333613436135361363613736138361393614036141361423614336144361453614636147361483614936150361513615236153361543615536156361573615836159361603616136162361633616436165361663616736168361693617036171361723617336174361753617636177361783617936180361813618236183361843618536186361873618836189361903619136192361933619436195361963619736198361993620036201362023620336204362053620636207362083620936210362113621236213362143621536216362173621836219362203622136222362233622436225362263622736228362293623036231362323623336234362353623636237362383623936240362413624236243362443624536246362473624836249362503625136252362533625436255362563625736258362593626036261362623626336264362653626636267362683626936270362713627236273362743627536276362773627836279362803628136282362833628436285362863628736288362893629036291362923629336294362953629636297362983629936300363013630236303363043630536306363073630836309363103631136312363133631436315363163631736318363193632036321363223632336324363253632636327363283632936330363313633236333363343633536336363373633836339363403634136342363433634436345363463634736348363493635036351363523635336354363553635636357363583635936360363613636236363363643636536366363673636836369363703637136372363733637436375363763637736378363793638036381363823638336384363853638636387363883638936390363913639236393363943639536396363973639836399364003640136402364033640436405364063640736408364093641036411364123641336414364153641636417364183641936420364213642236423364243642536426364273642836429364303643136432364333643436435364363643736438364393644036441364423644336444364453644636447364483644936450364513645236453364543645536456364573645836459364603646136462364633646436465364663646736468364693647036471364723647336474364753647636477364783647936480364813648236483364843648536486364873648836489364903649136492364933649436495364963649736498364993650036501365023650336504365053650636507365083650936510365113651236513365143651536516365173651836519365203652136522365233652436525365263652736528365293653036531365323653336534365353653636537365383653936540365413654236543365443654536546365473654836549365503655136552365533655436555365563655736558365593656036561365623656336564365653656636567365683656936570365713657236573365743657536576365773657836579365803658136582365833658436585365863658736588365893659036591365923659336594365953659636597365983659936600366013660236603366043660536606366073660836609366103661136612366133661436615366163661736618366193662036621366223662336624366253662636627366283662936630366313663236633366343663536636366373663836639366403664136642366433664436645366463664736648366493665036651366523665336654366553665636657366583665936660366613666236663366643666536666366673666836669366703667136672366733667436675366763667736678366793668036681366823668336684366853668636687366883668936690366913669236693366943669536696366973669836699367003670136702367033670436705367063670736708367093671036711367123671336714367153671636717367183671936720367213672236723367243672536726367273672836729367303673136732367333673436735367363673736738367393674036741367423674336744367453674636747367483674936750367513675236753367543675536756367573675836759367603676136762367633676436765367663676736768367693677036771367723677336774367753677636777367783677936780367813678236783367843678536786367873678836789367903679136792367933679436795367963679736798367993680036801368023680336804368053680636807368083680936810368113681236813368143681536816368173681836819368203682136822368233682436825368263682736828368293683036831368323683336834368353683636837368383683936840368413684236843368443684536846368473684836849368503685136852368533685436855368563685736858368593686036861368623686336864368653686636867368683686936870368713687236873368743687536876368773687836879368803688136882368833688436885368863688736888368893689036891368923689336894368953689636897368983689936900369013690236903369043690536906369073690836909369103691136912369133691436915369163691736918369193692036921369223692336924369253692636927369283692936930369313693236933369343693536936369373693836939369403694136942369433694436945369463694736948369493695036951369523695336954369553695636957369583695936960369613696236963369643696536966369673696836969369703697136972369733697436975369763697736978369793698036981369823698336984369853698636987369883698936990369913699236993369943699536996369973699836999370003700137002370033700437005370063700737008370093701037011370123701337014370153701637017370183701937020370213702237023370243702537026370273702837029370303703137032370333703437035370363703737038370393704037041370423704337044370453704637047370483704937050370513705237053370543705537056370573705837059370603706137062370633706437065370663706737068370693707037071370723707337074370753707637077370783707937080370813708237083370843708537086370873708837089370903709137092370933709437095370963709737098370993710037101371023710337104371053710637107371083710937110371113711237113371143711537116371173711837119371203712137122371233712437125371263712737128371293713037131371323713337134371353713637137371383713937140371413714237143371443714537146371473714837149371503715137152371533715437155371563715737158371593716037161371623716337164371653716637167371683716937170371713717237173371743717537176371773717837179371803718137182371833718437185371863718737188371893719037191371923719337194371953719637197371983719937200372013720237203372043720537206372073720837209372103721137212372133721437215372163721737218372193722037221372223722337224372253722637227372283722937230372313723237233372343723537236372373723837239372403724137242372433724437245372463724737248372493725037251372523725337254372553725637257372583725937260372613726237263372643726537266372673726837269372703727137272372733727437275372763727737278372793728037281372823728337284372853728637287372883728937290372913729237293372943729537296372973729837299373003730137302373033730437305373063730737308373093731037311373123731337314373153731637317373183731937320373213732237323373243732537326373273732837329373303733137332373333733437335373363733737338373393734037341373423734337344373453734637347373483734937350373513735237353373543735537356373573735837359373603736137362373633736437365373663736737368373693737037371373723737337374373753737637377373783737937380373813738237383373843738537386373873738837389373903739137392373933739437395373963739737398373993740037401374023740337404374053740637407374083740937410374113741237413374143741537416374173741837419374203742137422374233742437425374263742737428374293743037431374323743337434374353743637437374383743937440374413744237443374443744537446374473744837449374503745137452374533745437455374563745737458374593746037461374623746337464374653746637467374683746937470374713747237473374743747537476374773747837479374803748137482374833748437485374863748737488374893749037491374923749337494374953749637497374983749937500375013750237503375043750537506375073750837509375103751137512375133751437515375163751737518375193752037521375223752337524375253752637527375283752937530375313753237533375343753537536375373753837539375403754137542375433754437545375463754737548375493755037551375523755337554375553755637557375583755937560375613756237563375643756537566375673756837569375703757137572375733757437575375763757737578375793758037581375823758337584375853758637587375883758937590375913759237593375943759537596375973759837599376003760137602376033760437605376063760737608376093761037611376123761337614376153761637617376183761937620376213762237623376243762537626376273762837629376303763137632376333763437635376363763737638376393764037641376423764337644376453764637647376483764937650376513765237653376543765537656376573765837659376603766137662376633766437665376663766737668376693767037671376723767337674376753767637677376783767937680376813768237683376843768537686376873768837689376903769137692376933769437695376963769737698376993770037701377023770337704377053770637707377083770937710377113771237713377143771537716377173771837719377203772137722377233772437725377263772737728377293773037731377323773337734377353773637737377383773937740377413774237743377443774537746377473774837749377503775137752377533775437755377563775737758377593776037761377623776337764377653776637767377683776937770377713777237773377743777537776377773777837779377803778137782377833778437785377863778737788377893779037791377923779337794377953779637797377983779937800378013780237803378043780537806378073780837809378103781137812378133781437815378163781737818378193782037821378223782337824378253782637827378283782937830378313783237833378343783537836378373783837839378403784137842378433784437845378463784737848378493785037851378523785337854378553785637857378583785937860378613786237863378643786537866378673786837869378703787137872378733787437875378763787737878378793788037881378823788337884378853788637887378883788937890378913789237893378943789537896378973789837899379003790137902379033790437905379063790737908379093791037911379123791337914379153791637917379183791937920379213792237923379243792537926379273792837929379303793137932379333793437935379363793737938379393794037941379423794337944379453794637947379483794937950379513795237953379543795537956379573795837959379603796137962379633796437965379663796737968379693797037971379723797337974379753797637977379783797937980379813798237983379843798537986379873798837989379903799137992379933799437995379963799737998379993800038001380023800338004380053800638007380083800938010380113801238013380143801538016380173801838019380203802138022380233802438025380263802738028380293803038031380323803338034380353803638037380383803938040380413804238043380443804538046380473804838049380503805138052380533805438055380563805738058380593806038061380623806338064380653806638067380683806938070380713807238073380743807538076380773807838079380803808138082380833808438085380863808738088380893809038091380923809338094380953809638097380983809938100381013810238103381043810538106381073810838109381103811138112381133811438115381163811738118381193812038121381223812338124381253812638127381283812938130381313813238133381343813538136381373813838139381403814138142381433814438145381463814738148381493815038151381523815338154381553815638157381583815938160381613816238163381643816538166381673816838169381703817138172381733817438175381763817738178381793818038181381823818338184381853818638187381883818938190381913819238193381943819538196381973819838199382003820138202382033820438205382063820738208382093821038211382123821338214382153821638217382183821938220382213822238223382243822538226382273822838229382303823138232382333823438235382363823738238382393824038241382423824338244382453824638247382483824938250382513825238253382543825538256382573825838259382603826138262382633826438265382663826738268382693827038271382723827338274382753827638277382783827938280382813828238283382843828538286382873828838289382903829138292382933829438295382963829738298382993830038301383023830338304383053830638307383083830938310383113831238313383143831538316383173831838319383203832138322383233832438325383263832738328383293833038331383323833338334383353833638337383383833938340383413834238343383443834538346383473834838349383503835138352383533835438355383563835738358383593836038361383623836338364383653836638367383683836938370383713837238373383743837538376383773837838379383803838138382383833838438385383863838738388383893839038391383923839338394383953839638397383983839938400384013840238403384043840538406384073840838409384103841138412384133841438415384163841738418384193842038421384223842338424384253842638427384283842938430384313843238433384343843538436384373843838439384403844138442384433844438445384463844738448384493845038451384523845338454384553845638457384583845938460384613846238463384643846538466384673846838469384703847138472384733847438475384763847738478384793848038481384823848338484384853848638487384883848938490384913849238493384943849538496384973849838499385003850138502385033850438505385063850738508385093851038511385123851338514385153851638517385183851938520385213852238523385243852538526385273852838529385303853138532385333853438535385363853738538385393854038541385423854338544385453854638547385483854938550385513855238553385543855538556385573855838559385603856138562385633856438565385663856738568385693857038571385723857338574385753857638577385783857938580385813858238583385843858538586385873858838589385903859138592385933859438595385963859738598385993860038601386023860338604386053860638607386083860938610386113861238613386143861538616386173861838619386203862138622386233862438625386263862738628386293863038631386323863338634386353863638637386383863938640386413864238643386443864538646386473864838649386503865138652386533865438655386563865738658386593866038661386623866338664386653866638667386683866938670386713867238673386743867538676386773867838679386803868138682386833868438685386863868738688386893869038691386923869338694386953869638697386983869938700387013870238703387043870538706387073870838709387103871138712387133871438715387163871738718387193872038721387223872338724387253872638727387283872938730387313873238733387343873538736387373873838739387403874138742387433874438745387463874738748387493875038751387523875338754387553875638757387583875938760387613876238763387643876538766387673876838769387703877138772387733877438775387763877738778387793878038781387823878338784387853878638787387883878938790387913879238793387943879538796387973879838799388003880138802388033880438805388063880738808388093881038811388123881338814388153881638817388183881938820388213882238823388243882538826388273882838829388303883138832388333883438835388363883738838388393884038841388423884338844388453884638847388483884938850388513885238853388543885538856388573885838859388603886138862388633886438865388663886738868388693887038871388723887338874388753887638877388783887938880388813888238883388843888538886388873888838889388903889138892388933889438895388963889738898388993890038901389023890338904389053890638907389083890938910389113891238913389143891538916389173891838919389203892138922389233892438925389263892738928389293893038931389323893338934389353893638937389383893938940389413894238943389443894538946389473894838949389503895138952389533895438955389563895738958389593896038961389623896338964389653896638967389683896938970389713897238973389743897538976389773897838979389803898138982389833898438985389863898738988389893899038991389923899338994389953899638997389983899939000390013900239003390043900539006390073900839009390103901139012390133901439015390163901739018390193902039021390223902339024390253902639027390283902939030390313903239033390343903539036390373903839039390403904139042390433904439045390463904739048390493905039051390523905339054390553905639057390583905939060390613906239063390643906539066390673906839069390703907139072390733907439075390763907739078390793908039081390823908339084390853908639087390883908939090390913909239093390943909539096390973909839099391003910139102391033910439105391063910739108391093911039111391123911339114391153911639117391183911939120391213912239123391243912539126391273912839129391303913139132391333913439135391363913739138391393914039141391423914339144391453914639147391483914939150391513915239153391543915539156391573915839159391603916139162391633916439165391663916739168391693917039171391723917339174391753917639177391783917939180391813918239183391843918539186391873918839189391903919139192391933919439195391963919739198391993920039201392023920339204392053920639207392083920939210392113921239213392143921539216392173921839219392203922139222392233922439225392263922739228392293923039231392323923339234392353923639237392383923939240392413924239243392443924539246392473924839249392503925139252392533925439255392563925739258392593926039261392623926339264392653926639267392683926939270392713927239273392743927539276392773927839279392803928139282392833928439285392863928739288392893929039291392923929339294392953929639297392983929939300393013930239303393043930539306393073930839309393103931139312393133931439315393163931739318393193932039321393223932339324393253932639327393283932939330393313933239333393343933539336393373933839339393403934139342393433934439345393463934739348393493935039351393523935339354393553935639357393583935939360393613936239363393643936539366393673936839369393703937139372393733937439375393763937739378393793938039381393823938339384393853938639387393883938939390393913939239393393943939539396393973939839399394003940139402394033940439405394063940739408394093941039411394123941339414394153941639417394183941939420394213942239423394243942539426394273942839429394303943139432394333943439435394363943739438394393944039441394423944339444394453944639447394483944939450394513945239453394543945539456394573945839459394603946139462394633946439465394663946739468394693947039471394723947339474394753947639477394783947939480394813948239483394843948539486394873948839489394903949139492394933949439495394963949739498394993950039501395023950339504395053950639507395083950939510395113951239513395143951539516395173951839519395203952139522395233952439525395263952739528395293953039531395323953339534395353953639537395383953939540395413954239543395443954539546395473954839549395503955139552395533955439555395563955739558395593956039561395623956339564395653956639567395683956939570395713957239573395743957539576395773957839579395803958139582395833958439585395863958739588395893959039591395923959339594395953959639597395983959939600396013960239603396043960539606396073960839609396103961139612396133961439615396163961739618396193962039621396223962339624396253962639627396283962939630396313963239633396343963539636396373963839639396403964139642396433964439645396463964739648396493965039651396523965339654396553965639657396583965939660396613966239663396643966539666396673966839669396703967139672396733967439675396763967739678396793968039681396823968339684396853968639687396883968939690396913969239693396943969539696396973969839699397003970139702397033970439705397063970739708397093971039711397123971339714397153971639717397183971939720397213972239723397243972539726397273972839729397303973139732397333973439735397363973739738397393974039741397423974339744397453974639747397483974939750397513975239753397543975539756397573975839759397603976139762397633976439765397663976739768397693977039771397723977339774397753977639777397783977939780397813978239783397843978539786397873978839789397903979139792397933979439795397963979739798397993980039801398023980339804398053980639807398083980939810398113981239813398143981539816398173981839819398203982139822398233982439825398263982739828398293983039831398323983339834398353983639837398383983939840398413984239843398443984539846398473984839849398503985139852398533985439855398563985739858398593986039861398623986339864398653986639867398683986939870398713987239873398743987539876398773987839879398803988139882398833988439885398863988739888398893989039891398923989339894398953989639897398983989939900399013990239903399043990539906399073990839909399103991139912399133991439915399163991739918399193992039921399223992339924399253992639927399283992939930399313993239933399343993539936399373993839939399403994139942399433994439945399463994739948399493995039951399523995339954399553995639957399583995939960399613996239963399643996539966399673996839969399703997139972399733997439975399763997739978399793998039981399823998339984399853998639987399883998939990399913999239993399943999539996399973999839999400004000140002400034000440005400064000740008400094001040011400124001340014400154001640017400184001940020400214002240023400244002540026400274002840029400304003140032400334003440035400364003740038400394004040041400424004340044400454004640047400484004940050400514005240053400544005540056400574005840059400604006140062400634006440065400664006740068400694007040071400724007340074400754007640077400784007940080400814008240083400844008540086400874008840089400904009140092400934009440095400964009740098400994010040101401024010340104401054010640107401084010940110401114011240113401144011540116401174011840119401204012140122401234012440125401264012740128401294013040131401324013340134401354013640137401384013940140401414014240143401444014540146401474014840149401504015140152401534015440155401564015740158401594016040161401624016340164401654016640167401684016940170401714017240173401744017540176401774017840179401804018140182401834018440185401864018740188401894019040191401924019340194401954019640197401984019940200402014020240203402044020540206402074020840209402104021140212402134021440215402164021740218402194022040221402224022340224402254022640227402284022940230402314023240233402344023540236402374023840239402404024140242402434024440245402464024740248402494025040251402524025340254402554025640257402584025940260402614026240263402644026540266402674026840269402704027140272402734027440275402764027740278402794028040281402824028340284402854028640287402884028940290402914029240293402944029540296402974029840299403004030140302403034030440305403064030740308403094031040311403124031340314403154031640317403184031940320403214032240323403244032540326403274032840329403304033140332403334033440335403364033740338403394034040341403424034340344403454034640347403484034940350403514035240353403544035540356403574035840359403604036140362403634036440365403664036740368403694037040371403724037340374403754037640377403784037940380403814038240383403844038540386403874038840389403904039140392403934039440395403964039740398403994040040401404024040340404404054040640407404084040940410404114041240413404144041540416404174041840419404204042140422404234042440425404264042740428404294043040431404324043340434404354043640437404384043940440404414044240443404444044540446404474044840449404504045140452404534045440455404564045740458404594046040461404624046340464404654046640467404684046940470404714047240473404744047540476404774047840479404804048140482404834048440485404864048740488404894049040491404924049340494404954049640497404984049940500405014050240503405044050540506405074050840509405104051140512405134051440515405164051740518405194052040521405224052340524405254052640527405284052940530405314053240533405344053540536405374053840539405404054140542405434054440545405464054740548405494055040551405524055340554405554055640557405584055940560405614056240563405644056540566405674056840569405704057140572405734057440575405764057740578405794058040581405824058340584405854058640587405884058940590405914059240593405944059540596405974059840599406004060140602406034060440605406064060740608406094061040611406124061340614406154061640617406184061940620406214062240623406244062540626406274062840629406304063140632406334063440635406364063740638406394064040641406424064340644406454064640647406484064940650406514065240653406544065540656406574065840659406604066140662406634066440665406664066740668406694067040671406724067340674406754067640677406784067940680406814068240683406844068540686406874068840689406904069140692406934069440695406964069740698406994070040701407024070340704407054070640707407084070940710407114071240713407144071540716407174071840719407204072140722407234072440725407264072740728407294073040731407324073340734407354073640737407384073940740407414074240743407444074540746407474074840749407504075140752407534075440755407564075740758407594076040761407624076340764407654076640767407684076940770407714077240773407744077540776407774077840779407804078140782407834078440785407864078740788407894079040791407924079340794407954079640797407984079940800408014080240803408044080540806408074080840809408104081140812408134081440815408164081740818408194082040821408224082340824408254082640827408284082940830408314083240833408344083540836408374083840839408404084140842408434084440845408464084740848408494085040851408524085340854408554085640857408584085940860408614086240863408644086540866408674086840869408704087140872408734087440875408764087740878408794088040881408824088340884408854088640887408884088940890408914089240893408944089540896408974089840899409004090140902409034090440905409064090740908409094091040911409124091340914409154091640917409184091940920409214092240923409244092540926409274092840929409304093140932409334093440935409364093740938409394094040941409424094340944409454094640947409484094940950409514095240953409544095540956409574095840959409604096140962409634096440965409664096740968409694097040971409724097340974409754097640977409784097940980409814098240983409844098540986409874098840989409904099140992409934099440995409964099740998409994100041001410024100341004410054100641007410084100941010410114101241013410144101541016410174101841019410204102141022410234102441025410264102741028410294103041031410324103341034410354103641037410384103941040410414104241043410444104541046410474104841049410504105141052410534105441055410564105741058410594106041061410624106341064410654106641067410684106941070410714107241073410744107541076410774107841079410804108141082410834108441085410864108741088410894109041091410924109341094410954109641097410984109941100411014110241103411044110541106411074110841109411104111141112411134111441115411164111741118411194112041121411224112341124411254112641127411284112941130411314113241133411344113541136411374113841139411404114141142411434114441145411464114741148411494115041151411524115341154411554115641157411584115941160411614116241163411644116541166411674116841169411704117141172411734117441175411764117741178411794118041181411824118341184411854118641187411884118941190411914119241193411944119541196411974119841199412004120141202412034120441205412064120741208412094121041211412124121341214412154121641217412184121941220412214122241223412244122541226412274122841229412304123141232412334123441235412364123741238412394124041241412424124341244412454124641247412484124941250412514125241253412544125541256412574125841259412604126141262412634126441265412664126741268412694127041271412724127341274412754127641277412784127941280412814128241283412844128541286412874128841289412904129141292412934129441295412964129741298412994130041301413024130341304413054130641307413084130941310413114131241313413144131541316413174131841319413204132141322413234132441325413264132741328413294133041331413324133341334413354133641337413384133941340413414134241343413444134541346413474134841349413504135141352413534135441355413564135741358413594136041361413624136341364413654136641367413684136941370413714137241373413744137541376413774137841379413804138141382413834138441385413864138741388413894139041391413924139341394413954139641397413984139941400414014140241403414044140541406414074140841409414104141141412414134141441415414164141741418414194142041421414224142341424414254142641427414284142941430414314143241433414344143541436414374143841439414404144141442414434144441445414464144741448414494145041451414524145341454414554145641457414584145941460414614146241463414644146541466414674146841469414704147141472414734147441475414764147741478414794148041481414824148341484414854148641487414884148941490414914149241493414944149541496414974149841499415004150141502415034150441505415064150741508415094151041511415124151341514415154151641517415184151941520415214152241523415244152541526415274152841529415304153141532415334153441535415364153741538415394154041541415424154341544415454154641547415484154941550415514155241553415544155541556415574155841559415604156141562415634156441565415664156741568415694157041571415724157341574415754157641577415784157941580415814158241583415844158541586415874158841589415904159141592415934159441595415964159741598415994160041601416024160341604416054160641607416084160941610416114161241613416144161541616416174161841619416204162141622416234162441625416264162741628416294163041631416324163341634416354163641637416384163941640416414164241643416444164541646416474164841649416504165141652416534165441655416564165741658416594166041661416624166341664416654166641667416684166941670416714167241673416744167541676416774167841679416804168141682416834168441685416864168741688416894169041691416924169341694416954169641697416984169941700417014170241703417044170541706417074170841709417104171141712417134171441715417164171741718417194172041721417224172341724417254172641727417284172941730417314173241733417344173541736417374173841739417404174141742417434174441745417464174741748417494175041751417524175341754417554175641757417584175941760417614176241763417644176541766417674176841769417704177141772417734177441775417764177741778417794178041781417824178341784417854178641787417884178941790417914179241793417944179541796417974179841799418004180141802418034180441805418064180741808418094181041811418124181341814418154181641817418184181941820418214182241823418244182541826418274182841829418304183141832418334183441835418364183741838418394184041841418424184341844418454184641847418484184941850418514185241853418544185541856418574185841859418604186141862418634186441865418664186741868418694187041871418724187341874418754187641877418784187941880418814188241883418844188541886418874188841889418904189141892418934189441895418964189741898418994190041901419024190341904419054190641907419084190941910419114191241913419144191541916419174191841919419204192141922419234192441925419264192741928419294193041931419324193341934419354193641937419384193941940419414194241943419444194541946419474194841949419504195141952419534195441955419564195741958419594196041961419624196341964419654196641967419684196941970419714197241973419744197541976419774197841979419804198141982419834198441985419864198741988419894199041991419924199341994419954199641997419984199942000420014200242003420044200542006420074200842009420104201142012420134201442015420164201742018420194202042021420224202342024420254202642027420284202942030420314203242033420344203542036420374203842039420404204142042420434204442045420464204742048420494205042051420524205342054420554205642057420584205942060420614206242063420644206542066420674206842069420704207142072420734207442075420764207742078420794208042081420824208342084420854208642087420884208942090420914209242093420944209542096420974209842099421004210142102421034210442105421064210742108421094211042111421124211342114421154211642117421184211942120421214212242123421244212542126421274212842129421304213142132421334213442135421364213742138421394214042141421424214342144421454214642147421484214942150421514215242153421544215542156421574215842159421604216142162421634216442165421664216742168421694217042171421724217342174421754217642177421784217942180421814218242183421844218542186421874218842189421904219142192421934219442195421964219742198421994220042201422024220342204422054220642207422084220942210422114221242213422144221542216422174221842219422204222142222422234222442225422264222742228422294223042231422324223342234422354223642237422384223942240422414224242243422444224542246422474224842249422504225142252422534225442255422564225742258422594226042261422624226342264422654226642267422684226942270422714227242273422744227542276422774227842279422804228142282422834228442285422864228742288422894229042291422924229342294422954229642297422984229942300423014230242303423044230542306423074230842309423104231142312423134231442315423164231742318423194232042321423224232342324423254232642327423284232942330423314233242333423344233542336423374233842339423404234142342423434234442345423464234742348423494235042351423524235342354423554235642357423584235942360423614236242363423644236542366423674236842369423704237142372423734237442375423764237742378423794238042381423824238342384423854238642387423884238942390423914239242393423944239542396423974239842399424004240142402424034240442405424064240742408424094241042411424124241342414424154241642417424184241942420424214242242423424244242542426424274242842429424304243142432424334243442435424364243742438424394244042441424424244342444424454244642447424484244942450424514245242453424544245542456424574245842459424604246142462424634246442465424664246742468424694247042471424724247342474424754247642477424784247942480424814248242483424844248542486424874248842489424904249142492424934249442495424964249742498424994250042501425024250342504425054250642507425084250942510425114251242513425144251542516425174251842519425204252142522425234252442525425264252742528425294253042531425324253342534425354253642537425384253942540425414254242543425444254542546425474254842549425504255142552425534255442555425564255742558425594256042561425624256342564425654256642567425684256942570425714257242573425744257542576425774257842579425804258142582425834258442585425864258742588425894259042591425924259342594425954259642597425984259942600426014260242603426044260542606426074260842609426104261142612426134261442615426164261742618426194262042621426224262342624426254262642627426284262942630426314263242633426344263542636426374263842639426404264142642426434264442645426464264742648426494265042651426524265342654426554265642657426584265942660426614266242663426644266542666426674266842669426704267142672426734267442675426764267742678426794268042681426824268342684426854268642687426884268942690426914269242693426944269542696426974269842699427004270142702427034270442705427064270742708427094271042711427124271342714427154271642717427184271942720427214272242723427244272542726427274272842729427304273142732427334273442735427364273742738427394274042741427424274342744427454274642747427484274942750427514275242753427544275542756427574275842759427604276142762427634276442765427664276742768427694277042771427724277342774427754277642777427784277942780427814278242783427844278542786427874278842789427904279142792427934279442795427964279742798427994280042801428024280342804428054280642807428084280942810428114281242813428144281542816428174281842819428204282142822428234282442825428264282742828428294283042831428324283342834428354283642837428384283942840428414284242843428444284542846428474284842849428504285142852428534285442855428564285742858428594286042861428624286342864428654286642867428684286942870428714287242873428744287542876428774287842879428804288142882428834288442885428864288742888428894289042891428924289342894428954289642897428984289942900429014290242903429044290542906429074290842909429104291142912429134291442915429164291742918429194292042921429224292342924429254292642927429284292942930429314293242933429344293542936429374293842939429404294142942429434294442945429464294742948429494295042951429524295342954429554295642957429584295942960429614296242963429644296542966429674296842969429704297142972429734297442975429764297742978429794298042981429824298342984429854298642987429884298942990429914299242993429944299542996429974299842999430004300143002430034300443005430064300743008430094301043011430124301343014430154301643017430184301943020430214302243023430244302543026430274302843029430304303143032430334303443035430364303743038430394304043041430424304343044430454304643047430484304943050430514305243053430544305543056430574305843059430604306143062430634306443065430664306743068430694307043071430724307343074430754307643077430784307943080430814308243083430844308543086430874308843089430904309143092430934309443095430964309743098430994310043101431024310343104431054310643107431084310943110431114311243113431144311543116431174311843119431204312143122431234312443125431264312743128431294313043131431324313343134431354313643137431384313943140431414314243143431444314543146431474314843149431504315143152431534315443155431564315743158431594316043161431624316343164431654316643167431684316943170431714317243173431744317543176431774317843179431804318143182431834318443185431864318743188431894319043191431924319343194431954319643197431984319943200432014320243203432044320543206432074320843209432104321143212432134321443215432164321743218432194322043221432224322343224432254322643227432284322943230432314323243233432344323543236432374323843239432404324143242432434324443245432464324743248432494325043251432524325343254432554325643257432584325943260432614326243263432644326543266432674326843269432704327143272432734327443275432764327743278432794328043281432824328343284432854328643287432884328943290432914329243293432944329543296432974329843299433004330143302433034330443305433064330743308433094331043311433124331343314433154331643317433184331943320433214332243323433244332543326433274332843329433304333143332433334333443335433364333743338433394334043341433424334343344433454334643347433484334943350433514335243353433544335543356433574335843359433604336143362433634336443365433664336743368433694337043371433724337343374433754337643377433784337943380433814338243383433844338543386433874338843389433904339143392433934339443395433964339743398433994340043401434024340343404434054340643407434084340943410434114341243413434144341543416434174341843419434204342143422434234342443425434264342743428434294343043431434324343343434434354343643437434384343943440434414344243443434444344543446434474344843449434504345143452434534345443455434564345743458434594346043461434624346343464434654346643467434684346943470434714347243473434744347543476434774347843479434804348143482434834348443485434864348743488434894349043491434924349343494434954349643497434984349943500435014350243503435044350543506435074350843509435104351143512435134351443515435164351743518435194352043521435224352343524435254352643527435284352943530435314353243533435344353543536435374353843539435404354143542435434354443545435464354743548435494355043551435524355343554435554355643557435584355943560435614356243563435644356543566435674356843569435704357143572435734357443575435764357743578435794358043581435824358343584435854358643587435884358943590435914359243593435944359543596435974359843599436004360143602436034360443605436064360743608436094361043611436124361343614436154361643617436184361943620436214362243623436244362543626436274362843629436304363143632436334363443635436364363743638436394364043641436424364343644436454364643647436484364943650436514365243653436544365543656436574365843659436604366143662436634366443665436664366743668436694367043671436724367343674436754367643677436784367943680436814368243683436844368543686436874368843689436904369143692436934369443695436964369743698436994370043701437024370343704437054370643707437084370943710437114371243713437144371543716437174371843719437204372143722437234372443725437264372743728437294373043731437324373343734437354373643737437384373943740437414374243743437444374543746437474374843749437504375143752437534375443755437564375743758437594376043761437624376343764437654376643767437684376943770437714377243773437744377543776437774377843779437804378143782437834378443785437864378743788437894379043791437924379343794437954379643797437984379943800438014380243803438044380543806438074380843809438104381143812438134381443815438164381743818438194382043821438224382343824438254382643827438284382943830438314383243833438344383543836438374383843839438404384143842438434384443845438464384743848438494385043851438524385343854438554385643857438584385943860438614386243863438644386543866438674386843869438704387143872438734387443875438764387743878438794388043881438824388343884438854388643887438884388943890438914389243893438944389543896438974389843899439004390143902439034390443905439064390743908439094391043911439124391343914439154391643917439184391943920439214392243923439244392543926439274392843929439304393143932439334393443935439364393743938439394394043941439424394343944439454394643947439484394943950439514395243953439544395543956439574395843959439604396143962439634396443965439664396743968439694397043971439724397343974439754397643977439784397943980439814398243983439844398543986439874398843989439904399143992439934399443995439964399743998439994400044001440024400344004440054400644007440084400944010440114401244013440144401544016440174401844019440204402144022440234402444025440264402744028440294403044031440324403344034440354403644037440384403944040440414404244043440444404544046440474404844049440504405144052440534405444055440564405744058440594406044061440624406344064440654406644067440684406944070440714407244073440744407544076440774407844079440804408144082440834408444085440864408744088440894409044091440924409344094440954409644097440984409944100441014410244103441044410544106441074410844109441104411144112441134411444115441164411744118441194412044121441224412344124441254412644127441284412944130441314413244133441344413544136441374413844139441404414144142441434414444145441464414744148441494415044151441524415344154441554415644157441584415944160441614416244163441644416544166441674416844169441704417144172441734417444175441764417744178441794418044181441824418344184441854418644187441884418944190441914419244193441944419544196441974419844199442004420144202442034420444205442064420744208442094421044211442124421344214442154421644217442184421944220442214422244223442244422544226442274422844229442304423144232442334423444235442364423744238442394424044241442424424344244442454424644247442484424944250442514425244253442544425544256442574425844259442604426144262442634426444265442664426744268442694427044271442724427344274442754427644277442784427944280442814428244283442844428544286442874428844289442904429144292442934429444295442964429744298442994430044301443024430344304443054430644307443084430944310443114431244313443144431544316443174431844319443204432144322443234432444325443264432744328443294433044331443324433344334443354433644337443384433944340443414434244343443444434544346443474434844349443504435144352443534435444355443564435744358443594436044361443624436344364443654436644367443684436944370443714437244373443744437544376443774437844379443804438144382443834438444385443864438744388443894439044391443924439344394443954439644397443984439944400444014440244403444044440544406444074440844409444104441144412444134441444415444164441744418444194442044421444224442344424444254442644427444284442944430444314443244433444344443544436444374443844439444404444144442444434444444445444464444744448444494445044451444524445344454444554445644457444584445944460444614446244463444644446544466444674446844469444704447144472444734447444475444764447744478444794448044481444824448344484444854448644487444884448944490444914449244493444944449544496444974449844499445004450144502445034450444505445064450744508445094451044511445124451344514445154451644517445184451944520445214452244523445244452544526445274452844529445304453144532445334453444535445364453744538445394454044541445424454344544445454454644547445484454944550445514455244553445544455544556445574455844559445604456144562445634456444565445664456744568445694457044571445724457344574445754457644577445784457944580445814458244583445844458544586445874458844589445904459144592445934459444595445964459744598445994460044601446024460344604446054460644607446084460944610446114461244613446144461544616446174461844619446204462144622446234462444625446264462744628446294463044631446324463344634446354463644637446384463944640446414464244643446444464544646446474464844649446504465144652446534465444655446564465744658446594466044661446624466344664446654466644667446684466944670446714467244673446744467544676446774467844679446804468144682446834468444685446864468744688446894469044691446924469344694446954469644697446984469944700447014470244703447044470544706447074470844709447104471144712447134471444715447164471744718447194472044721447224472344724447254472644727447284472944730447314473244733447344473544736447374473844739447404474144742447434474444745447464474744748447494475044751447524475344754447554475644757447584475944760447614476244763447644476544766447674476844769447704477144772447734477444775447764477744778447794478044781447824478344784447854478644787447884478944790447914479244793447944479544796447974479844799448004480144802448034480444805448064480744808448094481044811448124481344814448154481644817448184481944820448214482244823448244482544826448274482844829448304483144832448334483444835448364483744838448394484044841448424484344844448454484644847448484484944850448514485244853448544485544856448574485844859448604486144862448634486444865448664486744868448694487044871448724487344874448754487644877448784487944880448814488244883448844488544886448874488844889448904489144892448934489444895448964489744898448994490044901449024490344904449054490644907449084490944910449114491244913449144491544916449174491844919449204492144922449234492444925449264492744928449294493044931449324493344934449354493644937449384493944940449414494244943449444494544946449474494844949449504495144952449534495444955449564495744958449594496044961449624496344964449654496644967449684496944970449714497244973449744497544976449774497844979449804498144982449834498444985449864498744988449894499044991449924499344994449954499644997449984499945000450014500245003450044500545006450074500845009450104501145012450134501445015450164501745018450194502045021450224502345024450254502645027450284502945030450314503245033450344503545036450374503845039450404504145042450434504445045450464504745048450494505045051450524505345054450554505645057450584505945060450614506245063450644506545066450674506845069450704507145072450734507445075450764507745078450794508045081450824508345084450854508645087450884508945090450914509245093450944509545096450974509845099451004510145102451034510445105451064510745108451094511045111451124511345114451154511645117451184511945120451214512245123451244512545126451274512845129451304513145132451334513445135451364513745138451394514045141451424514345144451454514645147451484514945150451514515245153451544515545156451574515845159451604516145162451634516445165451664516745168451694517045171451724517345174451754517645177451784517945180451814518245183451844518545186451874518845189451904519145192451934519445195451964519745198451994520045201452024520345204452054520645207452084520945210452114521245213452144521545216452174521845219452204522145222452234522445225452264522745228452294523045231452324523345234452354523645237452384523945240452414524245243452444524545246452474524845249452504525145252452534525445255452564525745258452594526045261452624526345264452654526645267452684526945270452714527245273452744527545276452774527845279452804528145282452834528445285452864528745288452894529045291452924529345294452954529645297452984529945300453014530245303453044530545306453074530845309453104531145312453134531445315453164531745318453194532045321453224532345324453254532645327453284532945330453314533245333453344533545336453374533845339453404534145342453434534445345453464534745348453494535045351453524535345354453554535645357453584535945360453614536245363453644536545366453674536845369453704537145372453734537445375453764537745378453794538045381453824538345384453854538645387453884538945390453914539245393453944539545396453974539845399454004540145402454034540445405454064540745408454094541045411454124541345414454154541645417454184541945420454214542245423454244542545426454274542845429454304543145432454334543445435454364543745438454394544045441454424544345444454454544645447454484544945450454514545245453454544545545456454574545845459454604546145462454634546445465454664546745468454694547045471454724547345474454754547645477454784547945480454814548245483454844548545486454874548845489454904549145492454934549445495454964549745498454994550045501455024550345504455054550645507455084550945510455114551245513455144551545516455174551845519455204552145522455234552445525455264552745528455294553045531455324553345534455354553645537455384553945540455414554245543455444554545546455474554845549455504555145552455534555445555455564555745558455594556045561455624556345564455654556645567455684556945570455714557245573455744557545576455774557845579455804558145582455834558445585455864558745588455894559045591455924559345594455954559645597455984559945600456014560245603456044560545606456074560845609456104561145612456134561445615456164561745618456194562045621456224562345624456254562645627456284562945630456314563245633456344563545636456374563845639456404564145642456434564445645456464564745648456494565045651456524565345654456554565645657456584565945660456614566245663456644566545666456674566845669456704567145672456734567445675456764567745678456794568045681456824568345684456854568645687456884568945690456914569245693456944569545696456974569845699457004570145702457034570445705457064570745708457094571045711457124571345714457154571645717457184571945720457214572245723457244572545726457274572845729457304573145732457334573445735457364573745738457394574045741457424574345744457454574645747457484574945750457514575245753457544575545756457574575845759457604576145762457634576445765457664576745768457694577045771457724577345774457754577645777457784577945780457814578245783457844578545786457874578845789457904579145792457934579445795457964579745798457994580045801458024580345804458054580645807458084580945810458114581245813458144581545816458174581845819458204582145822458234582445825458264582745828458294583045831458324583345834458354583645837458384583945840458414584245843458444584545846458474584845849458504585145852458534585445855458564585745858458594586045861458624586345864458654586645867458684586945870458714587245873458744587545876458774587845879458804588145882458834588445885458864588745888458894589045891458924589345894458954589645897458984589945900459014590245903459044590545906459074590845909459104591145912459134591445915459164591745918459194592045921459224592345924459254592645927459284592945930459314593245933459344593545936459374593845939459404594145942459434594445945459464594745948459494595045951459524595345954459554595645957459584595945960459614596245963459644596545966459674596845969459704597145972459734597445975459764597745978459794598045981459824598345984459854598645987459884598945990459914599245993459944599545996459974599845999460004600146002460034600446005460064600746008460094601046011460124601346014460154601646017460184601946020460214602246023460244602546026460274602846029460304603146032460334603446035460364603746038460394604046041460424604346044460454604646047460484604946050460514605246053460544605546056460574605846059460604606146062460634606446065460664606746068460694607046071460724607346074460754607646077460784607946080460814608246083460844608546086460874608846089460904609146092460934609446095460964609746098460994610046101461024610346104461054610646107461084610946110461114611246113461144611546116461174611846119461204612146122461234612446125461264612746128461294613046131461324613346134461354613646137461384613946140461414614246143461444614546146461474614846149461504615146152461534615446155461564615746158461594616046161461624616346164461654616646167461684616946170461714617246173461744617546176461774617846179461804618146182461834618446185461864618746188461894619046191461924619346194461954619646197461984619946200462014620246203462044620546206462074620846209462104621146212462134621446215462164621746218462194622046221462224622346224462254622646227462284622946230462314623246233462344623546236462374623846239462404624146242462434624446245462464624746248462494625046251462524625346254462554625646257462584625946260462614626246263462644626546266462674626846269462704627146272462734627446275462764627746278462794628046281462824628346284462854628646287462884628946290462914629246293462944629546296462974629846299463004630146302463034630446305463064630746308463094631046311463124631346314463154631646317463184631946320463214632246323463244632546326463274632846329463304633146332463334633446335463364633746338463394634046341463424634346344463454634646347463484634946350463514635246353463544635546356463574635846359463604636146362463634636446365463664636746368463694637046371463724637346374463754637646377463784637946380463814638246383463844638546386463874638846389463904639146392463934639446395463964639746398463994640046401464024640346404464054640646407464084640946410464114641246413464144641546416464174641846419464204642146422464234642446425464264642746428464294643046431464324643346434464354643646437464384643946440464414644246443464444644546446464474644846449464504645146452464534645446455464564645746458464594646046461464624646346464464654646646467464684646946470464714647246473464744647546476464774647846479464804648146482464834648446485464864648746488464894649046491464924649346494464954649646497464984649946500465014650246503465044650546506465074650846509465104651146512465134651446515465164651746518465194652046521465224652346524465254652646527465284652946530465314653246533465344653546536465374653846539465404654146542465434654446545465464654746548465494655046551465524655346554465554655646557465584655946560465614656246563465644656546566465674656846569465704657146572465734657446575465764657746578465794658046581465824658346584465854658646587465884658946590465914659246593465944659546596465974659846599466004660146602466034660446605466064660746608466094661046611466124661346614466154661646617466184661946620466214662246623466244662546626466274662846629466304663146632466334663446635466364663746638466394664046641466424664346644466454664646647466484664946650466514665246653466544665546656466574665846659466604666146662466634666446665466664666746668466694667046671466724667346674466754667646677466784667946680466814668246683466844668546686466874668846689466904669146692466934669446695466964669746698466994670046701467024670346704467054670646707467084670946710467114671246713467144671546716467174671846719467204672146722467234672446725467264672746728467294673046731467324673346734467354673646737467384673946740467414674246743467444674546746467474674846749467504675146752467534675446755467564675746758467594676046761467624676346764467654676646767467684676946770467714677246773467744677546776467774677846779467804678146782467834678446785467864678746788467894679046791467924679346794467954679646797467984679946800468014680246803468044680546806468074680846809468104681146812468134681446815468164681746818468194682046821468224682346824468254682646827468284682946830468314683246833468344683546836468374683846839468404684146842468434684446845468464684746848468494685046851468524685346854468554685646857468584685946860468614686246863468644686546866468674686846869468704687146872468734687446875468764687746878468794688046881468824688346884468854688646887468884688946890468914689246893468944689546896468974689846899469004690146902469034690446905469064690746908469094691046911469124691346914469154691646917469184691946920469214692246923469244692546926469274692846929469304693146932469334693446935469364693746938469394694046941469424694346944469454694646947469484694946950469514695246953469544695546956469574695846959469604696146962469634696446965469664696746968469694697046971469724697346974469754697646977469784697946980469814698246983469844698546986469874698846989469904699146992469934699446995469964699746998469994700047001470024700347004470054700647007470084700947010470114701247013470144701547016470174701847019470204702147022470234702447025470264702747028470294703047031470324703347034470354703647037470384703947040470414704247043470444704547046470474704847049470504705147052470534705447055470564705747058470594706047061470624706347064470654706647067470684706947070470714707247073470744707547076470774707847079470804708147082470834708447085470864708747088470894709047091470924709347094470954709647097470984709947100471014710247103471044710547106471074710847109471104711147112471134711447115471164711747118471194712047121471224712347124471254712647127471284712947130471314713247133471344713547136471374713847139471404714147142471434714447145471464714747148471494715047151471524715347154471554715647157471584715947160471614716247163471644716547166471674716847169471704717147172471734717447175471764717747178471794718047181471824718347184471854718647187471884718947190471914719247193471944719547196471974719847199472004720147202472034720447205472064720747208472094721047211472124721347214472154721647217472184721947220472214722247223472244722547226472274722847229472304723147232472334723447235472364723747238472394724047241472424724347244472454724647247472484724947250472514725247253472544725547256472574725847259472604726147262472634726447265472664726747268472694727047271472724727347274472754727647277472784727947280472814728247283472844728547286472874728847289472904729147292472934729447295472964729747298472994730047301473024730347304473054730647307473084730947310473114731247313473144731547316473174731847319473204732147322473234732447325473264732747328473294733047331473324733347334473354733647337473384733947340473414734247343473444734547346473474734847349473504735147352473534735447355473564735747358473594736047361473624736347364473654736647367473684736947370473714737247373473744737547376473774737847379473804738147382473834738447385473864738747388473894739047391473924739347394473954739647397473984739947400474014740247403474044740547406474074740847409474104741147412474134741447415474164741747418474194742047421474224742347424474254742647427474284742947430474314743247433474344743547436474374743847439474404744147442474434744447445474464744747448474494745047451474524745347454474554745647457474584745947460474614746247463474644746547466474674746847469474704747147472474734747447475474764747747478474794748047481474824748347484474854748647487474884748947490474914749247493474944749547496474974749847499475004750147502475034750447505475064750747508475094751047511475124751347514475154751647517475184751947520475214752247523475244752547526475274752847529475304753147532475334753447535475364753747538475394754047541475424754347544475454754647547475484754947550475514755247553475544755547556475574755847559475604756147562475634756447565475664756747568475694757047571475724757347574475754757647577475784757947580475814758247583475844758547586475874758847589475904759147592475934759447595475964759747598475994760047601476024760347604476054760647607476084760947610476114761247613476144761547616476174761847619476204762147622476234762447625476264762747628476294763047631476324763347634476354763647637476384763947640476414764247643476444764547646476474764847649476504765147652476534765447655476564765747658476594766047661476624766347664476654766647667476684766947670476714767247673476744767547676476774767847679476804768147682476834768447685476864768747688476894769047691476924769347694476954769647697476984769947700477014770247703477044770547706477074770847709477104771147712477134771447715477164771747718477194772047721477224772347724477254772647727477284772947730477314773247733477344773547736477374773847739477404774147742477434774447745477464774747748477494775047751477524775347754477554775647757477584775947760477614776247763477644776547766477674776847769477704777147772477734777447775477764777747778477794778047781477824778347784477854778647787477884778947790477914779247793477944779547796477974779847799478004780147802478034780447805478064780747808478094781047811478124781347814478154781647817478184781947820478214782247823478244782547826478274782847829478304783147832478334783447835478364783747838478394784047841478424784347844478454784647847478484784947850478514785247853478544785547856478574785847859478604786147862478634786447865478664786747868478694787047871478724787347874478754787647877478784787947880478814788247883478844788547886478874788847889478904789147892478934789447895478964789747898478994790047901479024790347904479054790647907479084790947910479114791247913479144791547916479174791847919479204792147922479234792447925479264792747928479294793047931479324793347934479354793647937479384793947940479414794247943479444794547946479474794847949479504795147952479534795447955479564795747958479594796047961479624796347964479654796647967479684796947970479714797247973479744797547976479774797847979479804798147982479834798447985479864798747988479894799047991479924799347994479954799647997479984799948000480014800248003480044800548006480074800848009480104801148012480134801448015480164801748018480194802048021480224802348024480254802648027480284802948030480314803248033480344803548036480374803848039480404804148042480434804448045480464804748048480494805048051480524805348054480554805648057480584805948060480614806248063480644806548066480674806848069480704807148072480734807448075480764807748078480794808048081480824808348084480854808648087480884808948090480914809248093480944809548096480974809848099481004810148102481034810448105481064810748108481094811048111481124811348114481154811648117481184811948120481214812248123481244812548126481274812848129481304813148132481334813448135481364813748138481394814048141481424814348144481454814648147481484814948150481514815248153481544815548156481574815848159481604816148162481634816448165481664816748168481694817048171481724817348174481754817648177481784817948180481814818248183481844818548186481874818848189481904819148192481934819448195481964819748198481994820048201482024820348204482054820648207482084820948210482114821248213482144821548216482174821848219482204822148222482234822448225482264822748228482294823048231482324823348234482354823648237482384823948240482414824248243482444824548246482474824848249482504825148252482534825448255482564825748258482594826048261482624826348264482654826648267482684826948270482714827248273482744827548276482774827848279482804828148282482834828448285482864828748288482894829048291482924829348294482954829648297482984829948300483014830248303483044830548306483074830848309483104831148312483134831448315483164831748318483194832048321483224832348324483254832648327483284832948330483314833248333483344833548336483374833848339483404834148342483434834448345483464834748348483494835048351483524835348354483554835648357483584835948360483614836248363483644836548366483674836848369483704837148372483734837448375483764837748378483794838048381483824838348384483854838648387483884838948390483914839248393483944839548396483974839848399484004840148402484034840448405484064840748408484094841048411484124841348414484154841648417484184841948420484214842248423484244842548426484274842848429484304843148432484334843448435484364843748438484394844048441484424844348444484454844648447484484844948450484514845248453484544845548456484574845848459484604846148462484634846448465484664846748468484694847048471484724847348474484754847648477484784847948480484814848248483484844848548486484874848848489484904849148492484934849448495484964849748498484994850048501485024850348504485054850648507485084850948510485114851248513485144851548516485174851848519485204852148522485234852448525485264852748528485294853048531485324853348534485354853648537485384853948540485414854248543485444854548546485474854848549485504855148552485534855448555485564855748558485594856048561485624856348564485654856648567485684856948570485714857248573485744857548576485774857848579485804858148582485834858448585485864858748588485894859048591485924859348594485954859648597485984859948600486014860248603486044860548606486074860848609486104861148612486134861448615486164861748618486194862048621486224862348624486254862648627486284862948630486314863248633486344863548636486374863848639486404864148642486434864448645486464864748648486494865048651486524865348654486554865648657486584865948660486614866248663486644866548666486674866848669486704867148672486734867448675486764867748678486794868048681486824868348684486854868648687486884868948690486914869248693486944869548696486974869848699487004870148702487034870448705487064870748708487094871048711487124871348714487154871648717487184871948720487214872248723487244872548726487274872848729487304873148732487334873448735487364873748738487394874048741487424874348744487454874648747487484874948750487514875248753487544875548756487574875848759487604876148762487634876448765487664876748768487694877048771487724877348774487754877648777487784877948780487814878248783487844878548786487874878848789487904879148792487934879448795487964879748798487994880048801488024880348804488054880648807488084880948810488114881248813488144881548816488174881848819488204882148822488234882448825488264882748828488294883048831488324883348834488354883648837488384883948840488414884248843488444884548846488474884848849488504885148852488534885448855488564885748858488594886048861488624886348864488654886648867488684886948870488714887248873488744887548876488774887848879488804888148882488834888448885488864888748888488894889048891488924889348894488954889648897488984889948900489014890248903489044890548906489074890848909489104891148912489134891448915489164891748918489194892048921489224892348924489254892648927489284892948930489314893248933489344893548936489374893848939489404894148942489434894448945489464894748948489494895048951489524895348954489554895648957489584895948960489614896248963489644896548966489674896848969489704897148972489734897448975489764897748978489794898048981489824898348984489854898648987489884898948990489914899248993489944899548996489974899848999490004900149002490034900449005490064900749008490094901049011490124901349014490154901649017490184901949020490214902249023490244902549026490274902849029490304903149032490334903449035490364903749038490394904049041490424904349044490454904649047490484904949050490514905249053490544905549056490574905849059490604906149062490634906449065490664906749068490694907049071490724907349074490754907649077490784907949080490814908249083490844908549086490874908849089490904909149092490934909449095490964909749098490994910049101491024910349104491054910649107491084910949110491114911249113491144911549116491174911849119491204912149122491234912449125491264912749128491294913049131491324913349134491354913649137491384913949140491414914249143491444914549146491474914849149491504915149152491534915449155491564915749158491594916049161491624916349164491654916649167491684916949170491714917249173491744917549176491774917849179491804918149182491834918449185491864918749188491894919049191491924919349194491954919649197491984919949200492014920249203492044920549206492074920849209492104921149212492134921449215492164921749218492194922049221492224922349224492254922649227492284922949230492314923249233492344923549236492374923849239492404924149242492434924449245492464924749248492494925049251492524925349254492554925649257492584925949260492614926249263492644926549266492674926849269492704927149272492734927449275492764927749278492794928049281492824928349284492854928649287492884928949290492914929249293492944929549296492974929849299493004930149302493034930449305493064930749308493094931049311493124931349314493154931649317493184931949320493214932249323493244932549326493274932849329493304933149332493334933449335493364933749338493394934049341493424934349344493454934649347493484934949350493514935249353493544935549356493574935849359493604936149362493634936449365493664936749368493694937049371493724937349374493754937649377493784937949380493814938249383493844938549386493874938849389493904939149392493934939449395493964939749398493994940049401494024940349404494054940649407494084940949410494114941249413494144941549416494174941849419494204942149422494234942449425494264942749428494294943049431494324943349434494354943649437494384943949440494414944249443494444944549446494474944849449494504945149452494534945449455494564945749458494594946049461494624946349464494654946649467494684946949470494714947249473494744947549476494774947849479494804948149482494834948449485494864948749488494894949049491494924949349494494954949649497494984949949500495014950249503495044950549506495074950849509495104951149512495134951449515495164951749518495194952049521495224952349524495254952649527495284952949530495314953249533495344953549536495374953849539495404954149542495434954449545495464954749548495494955049551495524955349554495554955649557495584955949560495614956249563495644956549566495674956849569495704957149572495734957449575495764957749578495794958049581495824958349584495854958649587495884958949590495914959249593495944959549596495974959849599496004960149602496034960449605496064960749608496094961049611496124961349614496154961649617496184961949620496214962249623496244962549626496274962849629496304963149632496334963449635496364963749638496394964049641496424964349644496454964649647496484964949650496514965249653496544965549656496574965849659496604966149662496634966449665496664966749668496694967049671496724967349674496754967649677496784967949680496814968249683496844968549686496874968849689496904969149692496934969449695496964969749698496994970049701497024970349704497054970649707497084970949710497114971249713497144971549716497174971849719497204972149722497234972449725497264972749728497294973049731497324973349734497354973649737497384973949740497414974249743497444974549746497474974849749497504975149752497534975449755497564975749758497594976049761497624976349764497654976649767497684976949770497714977249773497744977549776497774977849779497804978149782497834978449785497864978749788497894979049791497924979349794497954979649797497984979949800498014980249803498044980549806498074980849809498104981149812498134981449815498164981749818498194982049821498224982349824498254982649827498284982949830498314983249833498344983549836498374983849839498404984149842498434984449845498464984749848498494985049851498524985349854498554985649857498584985949860498614986249863498644986549866498674986849869498704987149872498734987449875498764987749878498794988049881498824988349884498854988649887498884988949890498914989249893498944989549896498974989849899499004990149902499034990449905499064990749908499094991049911499124991349914499154991649917499184991949920499214992249923499244992549926499274992849929499304993149932499334993449935499364993749938499394994049941499424994349944499454994649947499484994949950499514995249953499544995549956499574995849959499604996149962499634996449965499664996749968499694997049971499724997349974499754997649977499784997949980499814998249983499844998549986499874998849989499904999149992499934999449995499964999749998499995000050001500025000350004500055000650007500085000950010500115001250013500145001550016500175001850019500205002150022500235002450025500265002750028500295003050031500325003350034500355003650037500385003950040500415004250043500445004550046500475004850049500505005150052500535005450055500565005750058500595006050061500625006350064500655006650067500685006950070500715007250073500745007550076500775007850079500805008150082500835008450085500865008750088500895009050091500925009350094500955009650097500985009950100501015010250103501045010550106501075010850109501105011150112501135011450115501165011750118501195012050121501225012350124501255012650127501285012950130501315013250133501345013550136501375013850139501405014150142501435014450145501465014750148501495015050151501525015350154501555015650157501585015950160501615016250163501645016550166501675016850169501705017150172501735017450175501765017750178501795018050181501825018350184501855018650187501885018950190501915019250193501945019550196501975019850199502005020150202502035020450205502065020750208502095021050211502125021350214502155021650217502185021950220502215022250223502245022550226502275022850229502305023150232502335023450235502365023750238502395024050241502425024350244502455024650247502485024950250502515025250253502545025550256502575025850259502605026150262502635026450265502665026750268502695027050271502725027350274502755027650277502785027950280502815028250283502845028550286502875028850289502905029150292502935029450295502965029750298502995030050301503025030350304503055030650307503085030950310503115031250313503145031550316503175031850319503205032150322503235032450325503265032750328503295033050331503325033350334503355033650337503385033950340503415034250343503445034550346503475034850349503505035150352503535035450355503565035750358503595036050361503625036350364503655036650367503685036950370503715037250373503745037550376503775037850379503805038150382503835038450385503865038750388503895039050391503925039350394503955039650397503985039950400504015040250403504045040550406504075040850409504105041150412504135041450415504165041750418504195042050421504225042350424504255042650427504285042950430504315043250433504345043550436504375043850439504405044150442504435044450445504465044750448504495045050451504525045350454504555045650457504585045950460504615046250463504645046550466504675046850469504705047150472504735047450475504765047750478504795048050481504825048350484504855048650487504885048950490504915049250493504945049550496504975049850499505005050150502505035050450505505065050750508505095051050511505125051350514505155051650517505185051950520505215052250523505245052550526505275052850529505305053150532505335053450535505365053750538505395054050541505425054350544505455054650547505485054950550505515055250553505545055550556505575055850559505605056150562505635056450565505665056750568505695057050571505725057350574505755057650577505785057950580505815058250583505845058550586505875058850589505905059150592505935059450595505965059750598505995060050601506025060350604506055060650607506085060950610506115061250613506145061550616506175061850619506205062150622506235062450625506265062750628506295063050631506325063350634506355063650637506385063950640506415064250643506445064550646506475064850649506505065150652506535065450655506565065750658506595066050661506625066350664506655066650667506685066950670506715067250673506745067550676506775067850679506805068150682506835068450685506865068750688506895069050691506925069350694506955069650697506985069950700507015070250703507045070550706507075070850709507105071150712507135071450715507165071750718507195072050721507225072350724507255072650727507285072950730507315073250733507345073550736507375073850739507405074150742507435074450745507465074750748507495075050751507525075350754507555075650757507585075950760507615076250763507645076550766507675076850769507705077150772507735077450775507765077750778507795078050781507825078350784507855078650787507885078950790507915079250793507945079550796507975079850799508005080150802508035080450805508065080750808508095081050811508125081350814508155081650817508185081950820508215082250823508245082550826508275082850829508305083150832508335083450835508365083750838508395084050841508425084350844508455084650847508485084950850508515085250853508545085550856508575085850859508605086150862508635086450865508665086750868508695087050871508725087350874508755087650877508785087950880508815088250883508845088550886508875088850889508905089150892508935089450895508965089750898508995090050901509025090350904509055090650907509085090950910509115091250913509145091550916509175091850919509205092150922509235092450925509265092750928509295093050931509325093350934509355093650937509385093950940509415094250943509445094550946509475094850949509505095150952509535095450955509565095750958509595096050961509625096350964509655096650967509685096950970509715097250973509745097550976509775097850979509805098150982509835098450985509865098750988509895099050991509925099350994509955099650997509985099951000510015100251003510045100551006510075100851009510105101151012510135101451015510165101751018510195102051021510225102351024510255102651027510285102951030510315103251033510345103551036510375103851039510405104151042510435104451045510465104751048510495105051051510525105351054510555105651057510585105951060510615106251063510645106551066510675106851069510705107151072510735107451075510765107751078510795108051081510825108351084510855108651087510885108951090510915109251093510945109551096510975109851099511005110151102511035110451105511065110751108511095111051111511125111351114511155111651117511185111951120511215112251123511245112551126511275112851129511305113151132511335113451135511365113751138511395114051141511425114351144511455114651147511485114951150511515115251153511545115551156511575115851159511605116151162511635116451165511665116751168511695117051171511725117351174511755117651177511785117951180511815118251183511845118551186511875118851189511905119151192511935119451195511965119751198511995120051201512025120351204512055120651207512085120951210512115121251213512145121551216512175121851219512205122151222512235122451225512265122751228512295123051231512325123351234512355123651237512385123951240512415124251243512445124551246512475124851249512505125151252512535125451255512565125751258512595126051261512625126351264512655126651267512685126951270512715127251273512745127551276512775127851279512805128151282512835128451285512865128751288512895129051291512925129351294512955129651297512985129951300513015130251303513045130551306513075130851309513105131151312513135131451315513165131751318513195132051321513225132351324513255132651327513285132951330513315133251333513345133551336513375133851339513405134151342513435134451345513465134751348513495135051351513525135351354513555135651357513585135951360513615136251363513645136551366513675136851369513705137151372513735137451375513765137751378513795138051381513825138351384513855138651387513885138951390513915139251393513945139551396513975139851399514005140151402514035140451405514065140751408514095141051411514125141351414514155141651417514185141951420514215142251423514245142551426514275142851429514305143151432514335143451435514365143751438514395144051441514425144351444514455144651447514485144951450514515145251453514545145551456514575145851459514605146151462514635146451465514665146751468514695147051471514725147351474514755147651477514785147951480514815148251483514845148551486514875148851489514905149151492514935149451495514965149751498514995150051501515025150351504515055150651507515085150951510515115151251513515145151551516515175151851519515205152151522515235152451525515265152751528515295153051531515325153351534515355153651537515385153951540515415154251543515445154551546515475154851549515505155151552515535155451555515565155751558515595156051561515625156351564515655156651567515685156951570515715157251573515745157551576515775157851579515805158151582515835158451585515865158751588515895159051591515925159351594515955159651597515985159951600516015160251603516045160551606516075160851609516105161151612516135161451615516165161751618516195162051621516225162351624516255162651627516285162951630516315163251633516345163551636516375163851639516405164151642516435164451645516465164751648516495165051651516525165351654516555165651657516585165951660516615166251663516645166551666516675166851669516705167151672516735167451675516765167751678516795168051681516825168351684516855168651687516885168951690516915169251693516945169551696516975169851699517005170151702517035170451705517065170751708517095171051711517125171351714517155171651717517185171951720517215172251723517245172551726517275172851729517305173151732517335173451735517365173751738517395174051741517425174351744517455174651747517485174951750517515175251753517545175551756517575175851759517605176151762517635176451765517665176751768517695177051771517725177351774517755177651777517785177951780517815178251783517845178551786517875178851789517905179151792517935179451795517965179751798517995180051801518025180351804518055180651807518085180951810518115181251813518145181551816518175181851819518205182151822518235182451825518265182751828518295183051831518325183351834518355183651837518385183951840518415184251843518445184551846518475184851849518505185151852518535185451855518565185751858518595186051861518625186351864518655186651867518685186951870518715187251873518745187551876518775187851879518805188151882518835188451885518865188751888518895189051891518925189351894518955189651897518985189951900519015190251903519045190551906519075190851909519105191151912519135191451915519165191751918519195192051921519225192351924519255192651927519285192951930519315193251933519345193551936519375193851939519405194151942519435194451945519465194751948519495195051951519525195351954519555195651957519585195951960519615196251963519645196551966519675196851969519705197151972519735197451975519765197751978519795198051981519825198351984519855198651987519885198951990519915199251993519945199551996519975199851999520005200152002520035200452005520065200752008520095201052011520125201352014520155201652017520185201952020520215202252023520245202552026520275202852029520305203152032520335203452035520365203752038520395204052041520425204352044520455204652047520485204952050520515205252053520545205552056520575205852059520605206152062520635206452065520665206752068520695207052071520725207352074520755207652077520785207952080520815208252083520845208552086520875208852089520905209152092520935209452095520965209752098520995210052101521025210352104521055210652107521085210952110521115211252113521145211552116521175211852119521205212152122521235212452125521265212752128521295213052131521325213352134521355213652137521385213952140521415214252143521445214552146521475214852149521505215152152521535215452155521565215752158521595216052161521625216352164521655216652167521685216952170521715217252173521745217552176521775217852179521805218152182521835218452185521865218752188521895219052191521925219352194521955219652197521985219952200522015220252203522045220552206522075220852209522105221152212522135221452215522165221752218522195222052221522225222352224522255222652227522285222952230522315223252233522345223552236522375223852239522405224152242522435224452245522465224752248522495225052251522525225352254522555225652257522585225952260522615226252263522645226552266522675226852269522705227152272522735227452275522765227752278522795228052281522825228352284522855228652287522885228952290522915229252293522945229552296522975229852299523005230152302523035230452305523065230752308523095231052311523125231352314523155231652317523185231952320523215232252323523245232552326523275232852329523305233152332523335233452335523365233752338523395234052341523425234352344523455234652347523485234952350523515235252353523545235552356523575235852359523605236152362523635236452365523665236752368523695237052371523725237352374523755237652377523785237952380523815238252383523845238552386523875238852389523905239152392523935239452395523965239752398523995240052401524025240352404524055240652407524085240952410524115241252413524145241552416524175241852419524205242152422524235242452425524265242752428524295243052431524325243352434524355243652437524385243952440524415244252443524445244552446524475244852449524505245152452524535245452455524565245752458524595246052461524625246352464524655246652467524685246952470524715247252473524745247552476524775247852479524805248152482524835248452485524865248752488524895249052491524925249352494524955249652497524985249952500525015250252503525045250552506525075250852509525105251152512525135251452515525165251752518525195252052521525225252352524525255252652527525285252952530525315253252533525345253552536525375253852539525405254152542525435254452545525465254752548525495255052551525525255352554525555255652557525585255952560525615256252563525645256552566525675256852569525705257152572525735257452575525765257752578525795258052581525825258352584525855258652587525885258952590525915259252593525945259552596525975259852599526005260152602526035260452605526065260752608526095261052611526125261352614526155261652617526185261952620526215262252623526245262552626526275262852629526305263152632526335263452635526365263752638526395264052641526425264352644526455264652647526485264952650526515265252653526545265552656526575265852659526605266152662526635266452665526665266752668526695267052671526725267352674526755267652677526785267952680526815268252683526845268552686526875268852689526905269152692526935269452695526965269752698526995270052701527025270352704527055270652707527085270952710527115271252713527145271552716527175271852719527205272152722527235272452725527265272752728527295273052731527325273352734527355273652737527385273952740527415274252743527445274552746527475274852749527505275152752527535275452755527565275752758527595276052761527625276352764527655276652767527685276952770527715277252773527745277552776527775277852779527805278152782527835278452785527865278752788527895279052791527925279352794527955279652797527985279952800528015280252803528045280552806528075280852809528105281152812528135281452815528165281752818528195282052821528225282352824528255282652827528285282952830528315283252833528345283552836528375283852839528405284152842528435284452845528465284752848528495285052851528525285352854528555285652857528585285952860528615286252863528645286552866528675286852869528705287152872528735287452875528765287752878528795288052881528825288352884528855288652887528885288952890528915289252893528945289552896528975289852899529005290152902529035290452905529065290752908529095291052911529125291352914529155291652917529185291952920529215292252923529245292552926529275292852929529305293152932529335293452935529365293752938529395294052941529425294352944529455294652947529485294952950529515295252953529545295552956529575295852959529605296152962529635296452965529665296752968529695297052971529725297352974529755297652977529785297952980529815298252983529845298552986529875298852989529905299152992529935299452995529965299752998529995300053001530025300353004530055300653007530085300953010530115301253013530145301553016530175301853019530205302153022530235302453025530265302753028530295303053031530325303353034530355303653037530385303953040530415304253043530445304553046530475304853049530505305153052530535305453055530565305753058530595306053061530625306353064530655306653067530685306953070530715307253073530745307553076530775307853079530805308153082530835308453085530865308753088530895309053091530925309353094530955309653097530985309953100531015310253103531045310553106531075310853109531105311153112531135311453115531165311753118531195312053121531225312353124531255312653127531285312953130531315313253133531345313553136531375313853139531405314153142531435314453145531465314753148531495315053151531525315353154531555315653157531585315953160531615316253163531645316553166531675316853169531705317153172531735317453175531765317753178531795318053181531825318353184531855318653187531885318953190531915319253193531945319553196531975319853199532005320153202532035320453205532065320753208532095321053211532125321353214532155321653217532185321953220532215322253223532245322553226532275322853229532305323153232532335323453235532365323753238532395324053241532425324353244532455324653247532485324953250532515325253253532545325553256532575325853259532605326153262532635326453265532665326753268532695327053271532725327353274532755327653277532785327953280532815328253283532845328553286532875328853289532905329153292532935329453295532965329753298532995330053301533025330353304533055330653307533085330953310533115331253313533145331553316533175331853319533205332153322533235332453325533265332753328533295333053331533325333353334533355333653337533385333953340533415334253343533445334553346533475334853349533505335153352533535335453355533565335753358533595336053361533625336353364533655336653367533685336953370533715337253373533745337553376533775337853379533805338153382533835338453385533865338753388533895339053391533925339353394533955339653397533985339953400534015340253403534045340553406534075340853409534105341153412534135341453415534165341753418534195342053421534225342353424534255342653427534285342953430534315343253433534345343553436534375343853439534405344153442534435344453445534465344753448534495345053451534525345353454534555345653457534585345953460534615346253463534645346553466534675346853469534705347153472534735347453475534765347753478534795348053481534825348353484534855348653487534885348953490534915349253493534945349553496534975349853499535005350153502535035350453505535065350753508535095351053511535125351353514535155351653517535185351953520535215352253523535245352553526535275352853529535305353153532535335353453535535365353753538535395354053541535425354353544535455354653547535485354953550535515355253553535545355553556535575355853559535605356153562535635356453565535665356753568535695357053571535725357353574535755357653577535785357953580535815358253583535845358553586535875358853589535905359153592535935359453595535965359753598535995360053601536025360353604536055360653607536085360953610536115361253613536145361553616536175361853619536205362153622536235362453625536265362753628536295363053631536325363353634536355363653637536385363953640536415364253643536445364553646536475364853649536505365153652536535365453655536565365753658536595366053661536625366353664536655366653667536685366953670536715367253673536745367553676536775367853679536805368153682536835368453685536865368753688536895369053691536925369353694536955369653697536985369953700537015370253703537045370553706537075370853709537105371153712537135371453715537165371753718537195372053721537225372353724537255372653727537285372953730537315373253733537345373553736537375373853739537405374153742537435374453745537465374753748537495375053751537525375353754537555375653757537585375953760537615376253763537645376553766537675376853769537705377153772537735377453775537765377753778537795378053781537825378353784537855378653787537885378953790537915379253793537945379553796537975379853799538005380153802538035380453805538065380753808538095381053811538125381353814538155381653817538185381953820538215382253823538245382553826538275382853829538305383153832538335383453835538365383753838538395384053841538425384353844538455384653847538485384953850538515385253853538545385553856538575385853859538605386153862538635386453865538665386753868538695387053871538725387353874538755387653877538785387953880538815388253883538845388553886538875388853889538905389153892538935389453895538965389753898538995390053901539025390353904539055390653907539085390953910539115391253913539145391553916539175391853919539205392153922539235392453925539265392753928539295393053931539325393353934539355393653937539385393953940539415394253943539445394553946539475394853949539505395153952539535395453955539565395753958539595396053961539625396353964539655396653967539685396953970539715397253973539745397553976539775397853979539805398153982539835398453985539865398753988539895399053991539925399353994539955399653997539985399954000540015400254003540045400554006540075400854009540105401154012540135401454015540165401754018540195402054021540225402354024540255402654027540285402954030540315403254033540345403554036540375403854039540405404154042540435404454045540465404754048540495405054051540525405354054540555405654057540585405954060540615406254063540645406554066540675406854069540705407154072540735407454075540765407754078540795408054081540825408354084540855408654087540885408954090540915409254093540945409554096540975409854099541005410154102541035410454105541065410754108541095411054111541125411354114541155411654117541185411954120541215412254123541245412554126541275412854129541305413154132541335413454135541365413754138541395414054141541425414354144541455414654147541485414954150541515415254153541545415554156541575415854159541605416154162541635416454165541665416754168541695417054171541725417354174541755417654177541785417954180541815418254183541845418554186541875418854189541905419154192541935419454195541965419754198541995420054201542025420354204542055420654207542085420954210542115421254213542145421554216542175421854219542205422154222542235422454225542265422754228542295423054231542325423354234542355423654237542385423954240542415424254243542445424554246542475424854249542505425154252542535425454255542565425754258542595426054261542625426354264542655426654267542685426954270542715427254273542745427554276542775427854279542805428154282542835428454285542865428754288542895429054291542925429354294542955429654297542985429954300543015430254303543045430554306543075430854309543105431154312543135431454315543165431754318543195432054321543225432354324543255432654327543285432954330543315433254333543345433554336543375433854339543405434154342543435434454345543465434754348543495435054351543525435354354543555435654357543585435954360543615436254363543645436554366543675436854369543705437154372543735437454375543765437754378543795438054381543825438354384543855438654387543885438954390543915439254393543945439554396543975439854399544005440154402544035440454405544065440754408544095441054411544125441354414544155441654417544185441954420544215442254423544245442554426544275442854429544305443154432544335443454435544365443754438544395444054441544425444354444544455444654447544485444954450544515445254453544545445554456544575445854459544605446154462544635446454465544665446754468544695447054471544725447354474544755447654477544785447954480544815448254483544845448554486544875448854489544905449154492544935449454495544965449754498544995450054501545025450354504545055450654507545085450954510545115451254513545145451554516545175451854519545205452154522545235452454525545265452754528545295453054531545325453354534545355453654537545385453954540545415454254543545445454554546545475454854549545505455154552545535455454555545565455754558545595456054561545625456354564545655456654567545685456954570545715457254573545745457554576545775457854579545805458154582545835458454585545865458754588545895459054591545925459354594545955459654597545985459954600546015460254603546045460554606546075460854609546105461154612546135461454615546165461754618546195462054621546225462354624546255462654627546285462954630546315463254633546345463554636546375463854639546405464154642546435464454645546465464754648546495465054651546525465354654546555465654657546585465954660546615466254663546645466554666546675466854669546705467154672546735467454675546765467754678546795468054681546825468354684546855468654687546885468954690546915469254693546945469554696546975469854699547005470154702547035470454705547065470754708547095471054711547125471354714547155471654717547185471954720547215472254723547245472554726547275472854729547305473154732547335473454735547365473754738547395474054741547425474354744547455474654747547485474954750547515475254753547545475554756547575475854759547605476154762547635476454765547665476754768547695477054771547725477354774547755477654777547785477954780547815478254783547845478554786547875478854789547905479154792547935479454795547965479754798547995480054801548025480354804548055480654807548085480954810548115481254813548145481554816548175481854819548205482154822548235482454825548265482754828548295483054831548325483354834548355483654837548385483954840548415484254843548445484554846548475484854849548505485154852548535485454855548565485754858548595486054861548625486354864548655486654867548685486954870548715487254873548745487554876548775487854879548805488154882548835488454885548865488754888548895489054891548925489354894548955489654897548985489954900549015490254903549045490554906549075490854909549105491154912549135491454915549165491754918549195492054921549225492354924549255492654927549285492954930549315493254933549345493554936549375493854939549405494154942549435494454945549465494754948549495495054951549525495354954549555495654957549585495954960549615496254963549645496554966549675496854969549705497154972549735497454975549765497754978549795498054981549825498354984549855498654987549885498954990549915499254993549945499554996549975499854999550005500155002550035500455005550065500755008550095501055011550125501355014550155501655017550185501955020550215502255023550245502555026550275502855029550305503155032550335503455035550365503755038550395504055041550425504355044550455504655047550485504955050550515505255053550545505555056550575505855059550605506155062550635506455065550665506755068550695507055071550725507355074550755507655077550785507955080550815508255083550845508555086550875508855089550905509155092550935509455095550965509755098550995510055101551025510355104551055510655107551085510955110551115511255113551145511555116551175511855119551205512155122551235512455125551265512755128551295513055131551325513355134551355513655137551385513955140551415514255143551445514555146551475514855149551505515155152551535515455155551565515755158551595516055161551625516355164551655516655167551685516955170551715517255173551745517555176551775517855179551805518155182551835518455185551865518755188551895519055191551925519355194551955519655197551985519955200552015520255203552045520555206552075520855209552105521155212552135521455215552165521755218552195522055221552225522355224552255522655227552285522955230552315523255233552345523555236552375523855239552405524155242552435524455245552465524755248552495525055251552525525355254552555525655257552585525955260552615526255263552645526555266552675526855269552705527155272552735527455275552765527755278552795528055281552825528355284552855528655287552885528955290552915529255293552945529555296552975529855299553005530155302553035530455305553065530755308553095531055311553125531355314553155531655317553185531955320553215532255323553245532555326553275532855329553305533155332553335533455335553365533755338553395534055341553425534355344553455534655347553485534955350553515535255353553545535555356553575535855359553605536155362553635536455365553665536755368553695537055371553725537355374553755537655377553785537955380553815538255383553845538555386553875538855389553905539155392553935539455395553965539755398553995540055401554025540355404554055540655407554085540955410554115541255413554145541555416554175541855419554205542155422554235542455425554265542755428554295543055431554325543355434554355543655437554385543955440554415544255443554445544555446554475544855449554505545155452554535545455455554565545755458554595546055461554625546355464554655546655467554685546955470554715547255473554745547555476554775547855479554805548155482554835548455485554865548755488554895549055491554925549355494554955549655497554985549955500555015550255503555045550555506555075550855509555105551155512555135551455515555165551755518555195552055521555225552355524555255552655527555285552955530555315553255533555345553555536555375553855539555405554155542555435554455545555465554755548555495555055551555525555355554555555555655557555585555955560555615556255563555645556555566555675556855569555705557155572555735557455575555765557755578555795558055581555825558355584555855558655587555885558955590555915559255593555945559555596555975559855599556005560155602556035560455605556065560755608556095561055611556125561355614556155561655617556185561955620556215562255623556245562555626556275562855629556305563155632556335563455635556365563755638556395564055641556425564355644556455564655647556485564955650556515565255653556545565555656556575565855659556605566155662556635566455665556665566755668556695567055671556725567355674556755567655677556785567955680556815568255683556845568555686556875568855689556905569155692556935569455695556965569755698556995570055701557025570355704557055570655707557085570955710557115571255713557145571555716557175571855719557205572155722557235572455725557265572755728557295573055731557325573355734557355573655737557385573955740557415574255743557445574555746557475574855749557505575155752557535575455755557565575755758557595576055761557625576355764557655576655767557685576955770557715577255773557745577555776557775577855779557805578155782557835578455785557865578755788557895579055791557925579355794557955579655797557985579955800558015580255803558045580555806558075580855809558105581155812558135581455815558165581755818558195582055821558225582355824558255582655827558285582955830558315583255833558345583555836558375583855839558405584155842558435584455845558465584755848558495585055851558525585355854558555585655857558585585955860558615586255863558645586555866558675586855869558705587155872558735587455875558765587755878558795588055881558825588355884558855588655887558885588955890558915589255893558945589555896558975589855899559005590155902559035590455905559065590755908559095591055911559125591355914559155591655917559185591955920559215592255923559245592555926559275592855929559305593155932559335593455935559365593755938559395594055941559425594355944559455594655947559485594955950559515595255953559545595555956559575595855959559605596155962559635596455965559665596755968559695597055971559725597355974559755597655977559785597955980559815598255983559845598555986559875598855989559905599155992559935599455995559965599755998559995600056001560025600356004560055600656007560085600956010560115601256013560145601556016560175601856019560205602156022560235602456025560265602756028560295603056031560325603356034560355603656037560385603956040560415604256043560445604556046560475604856049560505605156052560535605456055560565605756058560595606056061560625606356064560655606656067560685606956070560715607256073560745607556076560775607856079560805608156082560835608456085560865608756088560895609056091560925609356094560955609656097560985609956100561015610256103561045610556106561075610856109561105611156112561135611456115561165611756118561195612056121561225612356124561255612656127561285612956130561315613256133561345613556136561375613856139561405614156142561435614456145561465614756148561495615056151561525615356154561555615656157561585615956160561615616256163561645616556166561675616856169561705617156172561735617456175561765617756178561795618056181561825618356184561855618656187561885618956190561915619256193561945619556196561975619856199562005620156202562035620456205562065620756208562095621056211562125621356214562155621656217562185621956220562215622256223562245622556226562275622856229562305623156232562335623456235562365623756238562395624056241562425624356244562455624656247562485624956250562515625256253562545625556256562575625856259562605626156262562635626456265562665626756268562695627056271562725627356274562755627656277562785627956280562815628256283562845628556286562875628856289562905629156292562935629456295562965629756298562995630056301563025630356304563055630656307563085630956310563115631256313563145631556316563175631856319563205632156322563235632456325563265632756328563295633056331563325633356334563355633656337563385633956340563415634256343563445634556346563475634856349563505635156352563535635456355563565635756358563595636056361563625636356364563655636656367563685636956370563715637256373563745637556376563775637856379563805638156382563835638456385563865638756388563895639056391563925639356394563955639656397563985639956400564015640256403564045640556406564075640856409564105641156412564135641456415564165641756418564195642056421564225642356424564255642656427564285642956430564315643256433564345643556436564375643856439564405644156442564435644456445564465644756448564495645056451564525645356454564555645656457564585645956460564615646256463564645646556466564675646856469564705647156472564735647456475564765647756478564795648056481564825648356484564855648656487564885648956490564915649256493564945649556496564975649856499565005650156502565035650456505565065650756508565095651056511565125651356514565155651656517565185651956520565215652256523565245652556526565275652856529565305653156532565335653456535565365653756538565395654056541565425654356544565455654656547565485654956550565515655256553565545655556556565575655856559565605656156562565635656456565565665656756568565695657056571565725657356574565755657656577565785657956580565815658256583565845658556586565875658856589565905659156592565935659456595565965659756598565995660056601566025660356604566055660656607566085660956610566115661256613566145661556616566175661856619566205662156622566235662456625566265662756628566295663056631566325663356634566355663656637566385663956640566415664256643566445664556646566475664856649566505665156652566535665456655566565665756658566595666056661566625666356664566655666656667566685666956670566715667256673566745667556676566775667856679566805668156682566835668456685566865668756688566895669056691566925669356694566955669656697566985669956700567015670256703567045670556706567075670856709567105671156712567135671456715567165671756718567195672056721567225672356724567255672656727567285672956730567315673256733567345673556736567375673856739567405674156742567435674456745567465674756748567495675056751567525675356754567555675656757567585675956760567615676256763567645676556766567675676856769567705677156772567735677456775567765677756778567795678056781567825678356784567855678656787567885678956790567915679256793567945679556796567975679856799568005680156802568035680456805568065680756808568095681056811568125681356814568155681656817568185681956820568215682256823568245682556826568275682856829568305683156832568335683456835568365683756838568395684056841568425684356844568455684656847568485684956850568515685256853568545685556856568575685856859568605686156862568635686456865568665686756868568695687056871568725687356874568755687656877568785687956880568815688256883568845688556886568875688856889568905689156892568935689456895568965689756898568995690056901569025690356904569055690656907569085690956910569115691256913569145691556916569175691856919569205692156922569235692456925569265692756928569295693056931569325693356934569355693656937569385693956940569415694256943569445694556946569475694856949569505695156952569535695456955569565695756958569595696056961569625696356964569655696656967569685696956970569715697256973569745697556976569775697856979569805698156982569835698456985569865698756988569895699056991569925699356994569955699656997569985699957000570015700257003570045700557006570075700857009570105701157012570135701457015570165701757018570195702057021570225702357024570255702657027570285702957030570315703257033570345703557036570375703857039570405704157042570435704457045570465704757048570495705057051570525705357054570555705657057570585705957060570615706257063570645706557066570675706857069570705707157072570735707457075570765707757078570795708057081570825708357084570855708657087570885708957090570915709257093570945709557096570975709857099571005710157102571035710457105571065710757108571095711057111571125711357114571155711657117571185711957120571215712257123571245712557126571275712857129571305713157132571335713457135571365713757138571395714057141571425714357144571455714657147571485714957150571515715257153571545715557156571575715857159571605716157162571635716457165571665716757168571695717057171571725717357174571755717657177571785717957180571815718257183571845718557186571875718857189571905719157192571935719457195571965719757198571995720057201572025720357204572055720657207572085720957210572115721257213572145721557216572175721857219572205722157222572235722457225572265722757228572295723057231572325723357234572355723657237572385723957240572415724257243572445724557246572475724857249572505725157252572535725457255572565725757258572595726057261572625726357264572655726657267572685726957270572715727257273572745727557276572775727857279572805728157282572835728457285572865728757288572895729057291572925729357294572955729657297572985729957300573015730257303573045730557306573075730857309573105731157312573135731457315573165731757318573195732057321573225732357324573255732657327573285732957330573315733257333573345733557336573375733857339573405734157342573435734457345573465734757348573495735057351573525735357354573555735657357573585735957360573615736257363573645736557366573675736857369573705737157372573735737457375573765737757378573795738057381573825738357384573855738657387573885738957390573915739257393573945739557396573975739857399574005740157402574035740457405574065740757408574095741057411574125741357414574155741657417574185741957420574215742257423574245742557426574275742857429574305743157432574335743457435574365743757438574395744057441574425744357444574455744657447574485744957450574515745257453574545745557456574575745857459574605746157462574635746457465574665746757468574695747057471574725747357474574755747657477574785747957480574815748257483574845748557486574875748857489574905749157492574935749457495574965749757498574995750057501575025750357504575055750657507575085750957510575115751257513575145751557516575175751857519575205752157522575235752457525575265752757528575295753057531575325753357534575355753657537575385753957540575415754257543575445754557546575475754857549575505755157552575535755457555575565755757558575595756057561575625756357564575655756657567575685756957570575715757257573575745757557576575775757857579575805758157582575835758457585575865758757588575895759057591575925759357594575955759657597575985759957600576015760257603576045760557606576075760857609576105761157612576135761457615576165761757618576195762057621576225762357624576255762657627576285762957630576315763257633576345763557636576375763857639576405764157642576435764457645576465764757648576495765057651576525765357654576555765657657576585765957660576615766257663576645766557666576675766857669576705767157672576735767457675576765767757678576795768057681576825768357684576855768657687576885768957690576915769257693576945769557696576975769857699577005770157702577035770457705577065770757708577095771057711577125771357714577155771657717577185771957720577215772257723577245772557726577275772857729577305773157732577335773457735577365773757738577395774057741577425774357744577455774657747577485774957750577515775257753577545775557756577575775857759577605776157762577635776457765577665776757768577695777057771577725777357774577755777657777577785777957780577815778257783577845778557786577875778857789577905779157792577935779457795577965779757798577995780057801578025780357804578055780657807578085780957810578115781257813578145781557816578175781857819578205782157822578235782457825578265782757828578295783057831578325783357834578355783657837578385783957840578415784257843578445784557846578475784857849578505785157852578535785457855578565785757858578595786057861578625786357864578655786657867578685786957870578715787257873578745787557876578775787857879578805788157882578835788457885578865788757888578895789057891578925789357894578955789657897578985789957900579015790257903579045790557906579075790857909579105791157912579135791457915579165791757918579195792057921579225792357924579255792657927579285792957930579315793257933579345793557936579375793857939579405794157942579435794457945579465794757948579495795057951579525795357954579555795657957579585795957960579615796257963579645796557966579675796857969579705797157972579735797457975579765797757978579795798057981579825798357984579855798657987579885798957990579915799257993579945799557996579975799857999580005800158002580035800458005580065800758008580095801058011580125801358014580155801658017580185801958020580215802258023580245802558026580275802858029580305803158032580335803458035580365803758038580395804058041580425804358044580455804658047580485804958050580515805258053580545805558056580575805858059580605806158062580635806458065580665806758068580695807058071580725807358074580755807658077580785807958080580815808258083580845808558086580875808858089580905809158092580935809458095580965809758098580995810058101581025810358104581055810658107581085810958110581115811258113581145811558116581175811858119581205812158122581235812458125581265812758128581295813058131581325813358134581355813658137581385813958140581415814258143581445814558146581475814858149581505815158152581535815458155581565815758158581595816058161581625816358164581655816658167581685816958170581715817258173581745817558176581775817858179581805818158182581835818458185581865818758188581895819058191581925819358194581955819658197581985819958200582015820258203582045820558206582075820858209582105821158212582135821458215582165821758218582195822058221582225822358224582255822658227582285822958230582315823258233582345823558236582375823858239582405824158242582435824458245582465824758248582495825058251582525825358254582555825658257582585825958260582615826258263582645826558266582675826858269582705827158272582735827458275582765827758278582795828058281582825828358284582855828658287582885828958290582915829258293582945829558296582975829858299583005830158302583035830458305583065830758308583095831058311583125831358314583155831658317583185831958320583215832258323583245832558326583275832858329583305833158332583335833458335583365833758338583395834058341583425834358344583455834658347583485834958350583515835258353583545835558356583575835858359583605836158362583635836458365583665836758368583695837058371583725837358374583755837658377583785837958380583815838258383583845838558386583875838858389583905839158392583935839458395583965839758398583995840058401584025840358404584055840658407584085840958410584115841258413584145841558416584175841858419584205842158422584235842458425584265842758428584295843058431584325843358434584355843658437584385843958440584415844258443584445844558446584475844858449584505845158452584535845458455584565845758458584595846058461584625846358464584655846658467584685846958470584715847258473584745847558476584775847858479584805848158482584835848458485584865848758488584895849058491584925849358494584955849658497584985849958500585015850258503585045850558506585075850858509585105851158512585135851458515585165851758518585195852058521585225852358524585255852658527585285852958530585315853258533585345853558536585375853858539585405854158542585435854458545585465854758548585495855058551585525855358554585555855658557585585855958560585615856258563585645856558566585675856858569585705857158572585735857458575585765857758578585795858058581585825858358584585855858658587585885858958590585915859258593585945859558596585975859858599586005860158602586035860458605586065860758608586095861058611586125861358614586155861658617586185861958620586215862258623586245862558626586275862858629586305863158632586335863458635586365863758638586395864058641586425864358644586455864658647586485864958650586515865258653586545865558656586575865858659586605866158662586635866458665586665866758668586695867058671586725867358674586755867658677586785867958680586815868258683586845868558686586875868858689586905869158692586935869458695586965869758698586995870058701587025870358704587055870658707587085870958710587115871258713587145871558716587175871858719587205872158722587235872458725587265872758728587295873058731587325873358734587355873658737587385873958740587415874258743587445874558746587475874858749587505875158752587535875458755587565875758758587595876058761587625876358764587655876658767587685876958770587715877258773587745877558776587775877858779587805878158782587835878458785587865878758788587895879058791587925879358794587955879658797587985879958800588015880258803588045880558806588075880858809588105881158812588135881458815588165881758818588195882058821588225882358824588255882658827588285882958830588315883258833588345883558836588375883858839588405884158842588435884458845588465884758848588495885058851588525885358854588555885658857588585885958860588615886258863588645886558866588675886858869588705887158872588735887458875588765887758878588795888058881588825888358884588855888658887588885888958890588915889258893588945889558896588975889858899589005890158902589035890458905589065890758908589095891058911589125891358914589155891658917589185891958920589215892258923589245892558926589275892858929589305893158932589335893458935589365893758938589395894058941589425894358944589455894658947589485894958950589515895258953589545895558956589575895858959589605896158962589635896458965589665896758968589695897058971589725897358974589755897658977589785897958980589815898258983589845898558986589875898858989589905899158992589935899458995589965899758998589995900059001590025900359004590055900659007590085900959010590115901259013590145901559016590175901859019590205902159022590235902459025590265902759028590295903059031590325903359034590355903659037590385903959040590415904259043590445904559046590475904859049590505905159052590535905459055590565905759058590595906059061590625906359064590655906659067590685906959070590715907259073590745907559076590775907859079590805908159082590835908459085590865908759088590895909059091590925909359094590955909659097590985909959100591015910259103591045910559106591075910859109591105911159112591135911459115591165911759118591195912059121591225912359124591255912659127591285912959130591315913259133591345913559136591375913859139591405914159142591435914459145591465914759148591495915059151591525915359154591555915659157591585915959160591615916259163591645916559166591675916859169591705917159172591735917459175591765917759178591795918059181591825918359184591855918659187591885918959190591915919259193591945919559196591975919859199592005920159202592035920459205592065920759208592095921059211592125921359214592155921659217592185921959220592215922259223592245922559226592275922859229592305923159232592335923459235592365923759238592395924059241592425924359244592455924659247592485924959250592515925259253592545925559256592575925859259592605926159262592635926459265592665926759268592695927059271592725927359274592755927659277592785927959280592815928259283592845928559286592875928859289592905929159292592935929459295592965929759298592995930059301593025930359304593055930659307593085930959310593115931259313593145931559316593175931859319593205932159322593235932459325593265932759328593295933059331593325933359334593355933659337593385933959340593415934259343593445934559346593475934859349593505935159352593535935459355593565935759358593595936059361593625936359364593655936659367593685936959370593715937259373593745937559376593775937859379593805938159382593835938459385593865938759388593895939059391593925939359394593955939659397593985939959400594015940259403594045940559406594075940859409594105941159412594135941459415594165941759418594195942059421594225942359424594255942659427594285942959430594315943259433594345943559436594375943859439594405944159442594435944459445594465944759448594495945059451594525945359454594555945659457594585945959460594615946259463594645946559466594675946859469594705947159472594735947459475594765947759478594795948059481594825948359484594855948659487594885948959490594915949259493594945949559496594975949859499595005950159502595035950459505595065950759508595095951059511595125951359514595155951659517595185951959520595215952259523595245952559526595275952859529595305953159532595335953459535595365953759538595395954059541595425954359544595455954659547595485954959550595515955259553595545955559556595575955859559595605956159562595635956459565595665956759568595695957059571595725957359574595755957659577595785957959580595815958259583595845958559586595875958859589595905959159592595935959459595595965959759598595995960059601596025960359604596055960659607596085960959610596115961259613596145961559616596175961859619596205962159622596235962459625596265962759628596295963059631596325963359634596355963659637596385963959640596415964259643596445964559646596475964859649596505965159652596535965459655596565965759658596595966059661596625966359664596655966659667596685966959670596715967259673596745967559676596775967859679596805968159682596835968459685596865968759688596895969059691596925969359694596955969659697596985969959700597015970259703597045970559706597075970859709597105971159712597135971459715597165971759718597195972059721597225972359724597255972659727597285972959730597315973259733597345973559736597375973859739597405974159742597435974459745597465974759748597495975059751597525975359754597555975659757597585975959760597615976259763597645976559766597675976859769597705977159772597735977459775597765977759778597795978059781597825978359784597855978659787597885978959790597915979259793597945979559796597975979859799598005980159802598035980459805598065980759808598095981059811598125981359814598155981659817598185981959820598215982259823598245982559826598275982859829598305983159832598335983459835598365983759838598395984059841598425984359844598455984659847598485984959850598515985259853598545985559856598575985859859598605986159862598635986459865598665986759868598695987059871598725987359874598755987659877598785987959880598815988259883598845988559886598875988859889598905989159892598935989459895598965989759898598995990059901599025990359904599055990659907599085990959910599115991259913599145991559916599175991859919599205992159922599235992459925599265992759928599295993059931599325993359934599355993659937599385993959940599415994259943599445994559946599475994859949599505995159952599535995459955599565995759958599595996059961599625996359964599655996659967599685996959970599715997259973599745997559976599775997859979599805998159982599835998459985599865998759988599895999059991599925999359994599955999659997599985999960000600016000260003600046000560006600076000860009600106001160012600136001460015600166001760018600196002060021600226002360024600256002660027600286002960030600316003260033600346003560036600376003860039600406004160042600436004460045600466004760048600496005060051600526005360054600556005660057600586005960060600616006260063600646006560066600676006860069600706007160072600736007460075600766007760078600796008060081600826008360084600856008660087600886008960090600916009260093600946009560096600976009860099601006010160102601036010460105601066010760108601096011060111601126011360114601156011660117601186011960120601216012260123601246012560126601276012860129601306013160132601336013460135601366013760138601396014060141601426014360144601456014660147601486014960150601516015260153601546015560156601576015860159601606016160162601636016460165601666016760168601696017060171601726017360174601756017660177601786017960180601816018260183601846018560186601876018860189601906019160192601936019460195601966019760198601996020060201602026020360204602056020660207602086020960210602116021260213602146021560216602176021860219602206022160222602236022460225602266022760228602296023060231602326023360234602356023660237602386023960240602416024260243602446024560246602476024860249602506025160252602536025460255602566025760258602596026060261602626026360264602656026660267602686026960270602716027260273602746027560276602776027860279602806028160282602836028460285602866028760288602896029060291602926029360294602956029660297602986029960300603016030260303603046030560306603076030860309603106031160312603136031460315603166031760318603196032060321603226032360324603256032660327603286032960330603316033260333603346033560336603376033860339603406034160342603436034460345603466034760348603496035060351603526035360354603556035660357603586035960360603616036260363603646036560366603676036860369603706037160372603736037460375603766037760378603796038060381603826038360384603856038660387603886038960390603916039260393603946039560396603976039860399604006040160402604036040460405604066040760408604096041060411604126041360414604156041660417604186041960420604216042260423604246042560426604276042860429604306043160432604336043460435604366043760438604396044060441604426044360444604456044660447604486044960450604516045260453604546045560456604576045860459604606046160462604636046460465604666046760468604696047060471604726047360474604756047660477604786047960480604816048260483604846048560486604876048860489604906049160492604936049460495604966049760498604996050060501605026050360504605056050660507605086050960510605116051260513605146051560516605176051860519605206052160522605236052460525605266052760528605296053060531605326053360534605356053660537605386053960540605416054260543605446054560546605476054860549605506055160552605536055460555605566055760558605596056060561605626056360564605656056660567605686056960570605716057260573605746057560576605776057860579605806058160582605836058460585605866058760588605896059060591605926059360594605956059660597605986059960600606016060260603606046060560606606076060860609606106061160612606136061460615606166061760618606196062060621606226062360624606256062660627606286062960630606316063260633606346063560636606376063860639606406064160642606436064460645606466064760648606496065060651606526065360654606556065660657606586065960660606616066260663606646066560666606676066860669606706067160672606736067460675606766067760678606796068060681606826068360684606856068660687606886068960690606916069260693606946069560696606976069860699607006070160702607036070460705607066070760708607096071060711607126071360714607156071660717607186071960720607216072260723607246072560726607276072860729607306073160732607336073460735607366073760738607396074060741607426074360744607456074660747607486074960750607516075260753607546075560756607576075860759607606076160762607636076460765607666076760768607696077060771607726077360774607756077660777607786077960780607816078260783607846078560786607876078860789607906079160792607936079460795607966079760798607996080060801608026080360804608056080660807608086080960810608116081260813608146081560816608176081860819608206082160822608236082460825608266082760828608296083060831608326083360834608356083660837608386083960840608416084260843608446084560846608476084860849608506085160852608536085460855608566085760858608596086060861608626086360864608656086660867608686086960870608716087260873608746087560876608776087860879608806088160882608836088460885608866088760888608896089060891608926089360894608956089660897608986089960900609016090260903609046090560906609076090860909609106091160912609136091460915609166091760918609196092060921609226092360924609256092660927609286092960930609316093260933609346093560936609376093860939609406094160942609436094460945609466094760948609496095060951609526095360954609556095660957609586095960960609616096260963609646096560966609676096860969609706097160972609736097460975609766097760978609796098060981609826098360984609856098660987609886098960990609916099260993609946099560996609976099860999610006100161002610036100461005610066100761008610096101061011610126101361014610156101661017610186101961020610216102261023610246102561026610276102861029610306103161032610336103461035610366103761038610396104061041610426104361044610456104661047610486104961050610516105261053610546105561056610576105861059610606106161062610636106461065610666106761068610696107061071610726107361074610756107661077610786107961080610816108261083610846108561086610876108861089610906109161092610936109461095610966109761098610996110061101611026110361104611056110661107611086110961110611116111261113611146111561116611176111861119611206112161122611236112461125611266112761128611296113061131611326113361134611356113661137611386113961140611416114261143611446114561146611476114861149611506115161152611536115461155611566115761158611596116061161611626116361164611656116661167611686116961170611716117261173611746117561176611776117861179611806118161182611836118461185611866118761188611896119061191611926119361194611956119661197611986119961200612016120261203612046120561206612076120861209612106121161212612136121461215612166121761218612196122061221612226122361224612256122661227612286122961230612316123261233612346123561236612376123861239612406124161242612436124461245612466124761248612496125061251612526125361254612556125661257612586125961260612616126261263612646126561266612676126861269612706127161272612736127461275612766127761278612796128061281612826128361284612856128661287612886128961290612916129261293612946129561296612976129861299613006130161302613036130461305613066130761308613096131061311613126131361314613156131661317613186131961320613216132261323613246132561326613276132861329613306133161332613336133461335613366133761338613396134061341613426134361344613456134661347613486134961350613516135261353613546135561356613576135861359613606136161362613636136461365613666136761368613696137061371613726137361374613756137661377613786137961380613816138261383613846138561386613876138861389613906139161392613936139461395613966139761398613996140061401614026140361404614056140661407614086140961410614116141261413614146141561416614176141861419614206142161422614236142461425614266142761428614296143061431614326143361434614356143661437614386143961440614416144261443614446144561446614476144861449614506145161452614536145461455614566145761458614596146061461614626146361464614656146661467614686146961470614716147261473614746147561476614776147861479614806148161482614836148461485614866148761488614896149061491614926149361494614956149661497614986149961500615016150261503615046150561506615076150861509615106151161512615136151461515615166151761518615196152061521615226152361524615256152661527615286152961530615316153261533615346153561536615376153861539615406154161542615436154461545615466154761548615496155061551615526155361554615556155661557615586155961560615616156261563615646156561566615676156861569615706157161572615736157461575615766157761578615796158061581615826158361584615856158661587615886158961590615916159261593615946159561596615976159861599616006160161602616036160461605616066160761608616096161061611616126161361614616156161661617616186161961620616216162261623616246162561626616276162861629616306163161632616336163461635616366163761638616396164061641616426164361644616456164661647616486164961650616516165261653616546165561656616576165861659616606166161662616636166461665616666166761668616696167061671616726167361674616756167661677616786167961680616816168261683616846168561686616876168861689616906169161692616936169461695616966169761698616996170061701617026170361704617056170661707617086170961710617116171261713617146171561716617176171861719617206172161722617236172461725617266172761728617296173061731617326173361734617356173661737617386173961740617416174261743617446174561746617476174861749617506175161752617536175461755617566175761758617596176061761617626176361764617656176661767617686176961770617716177261773617746177561776617776177861779617806178161782617836178461785617866178761788617896179061791617926179361794617956179661797617986179961800618016180261803618046180561806618076180861809618106181161812618136181461815618166181761818618196182061821618226182361824618256182661827618286182961830618316183261833618346183561836618376183861839618406184161842618436184461845618466184761848618496185061851618526185361854618556185661857618586185961860618616186261863618646186561866618676186861869618706187161872618736187461875618766187761878618796188061881618826188361884618856188661887618886188961890618916189261893618946189561896618976189861899619006190161902619036190461905619066190761908619096191061911619126191361914619156191661917619186191961920619216192261923619246192561926619276192861929619306193161932619336193461935619366193761938619396194061941619426194361944619456194661947619486194961950619516195261953619546195561956619576195861959619606196161962619636196461965619666196761968619696197061971619726197361974619756197661977619786197961980619816198261983619846198561986619876198861989619906199161992619936199461995619966199761998619996200062001620026200362004620056200662007620086200962010620116201262013620146201562016620176201862019620206202162022620236202462025620266202762028620296203062031620326203362034620356203662037620386203962040620416204262043620446204562046620476204862049620506205162052620536205462055620566205762058620596206062061620626206362064620656206662067620686206962070620716207262073620746207562076620776207862079620806208162082620836208462085620866208762088620896209062091620926209362094620956209662097620986209962100621016210262103621046210562106621076210862109621106211162112621136211462115621166211762118621196212062121621226212362124621256212662127621286212962130621316213262133621346213562136621376213862139621406214162142621436214462145621466214762148621496215062151621526215362154621556215662157621586215962160621616216262163621646216562166621676216862169621706217162172621736217462175621766217762178621796218062181621826218362184621856218662187621886218962190621916219262193621946219562196621976219862199622006220162202622036220462205622066220762208622096221062211622126221362214622156221662217622186221962220622216222262223622246222562226622276222862229622306223162232622336223462235622366223762238622396224062241622426224362244622456224662247622486224962250622516225262253622546225562256622576225862259622606226162262622636226462265622666226762268622696227062271622726227362274622756227662277622786227962280622816228262283622846228562286622876228862289622906229162292622936229462295622966229762298622996230062301623026230362304623056230662307623086230962310623116231262313623146231562316623176231862319623206232162322623236232462325623266232762328623296233062331623326233362334623356233662337623386233962340623416234262343623446234562346623476234862349623506235162352623536235462355623566235762358623596236062361623626236362364623656236662367623686236962370623716237262373623746237562376623776237862379623806238162382623836238462385623866238762388623896239062391623926239362394623956239662397623986239962400624016240262403624046240562406624076240862409624106241162412624136241462415624166241762418624196242062421624226242362424624256242662427624286242962430624316243262433624346243562436624376243862439624406244162442624436244462445624466244762448624496245062451624526245362454624556245662457624586245962460624616246262463624646246562466624676246862469624706247162472624736247462475624766247762478624796248062481624826248362484624856248662487624886248962490624916249262493624946249562496624976249862499625006250162502625036250462505625066250762508625096251062511625126251362514625156251662517625186251962520625216252262523625246252562526625276252862529625306253162532625336253462535625366253762538625396254062541625426254362544625456254662547625486254962550625516255262553625546255562556625576255862559625606256162562625636256462565625666256762568625696257062571625726257362574625756257662577625786257962580625816258262583625846258562586625876258862589625906259162592625936259462595625966259762598625996260062601626026260362604626056260662607626086260962610626116261262613626146261562616626176261862619626206262162622626236262462625626266262762628626296263062631626326263362634626356263662637626386263962640626416264262643626446264562646626476264862649626506265162652626536265462655626566265762658626596266062661626626266362664626656266662667626686266962670626716267262673626746267562676626776267862679626806268162682626836268462685626866268762688626896269062691626926269362694626956269662697626986269962700627016270262703627046270562706627076270862709627106271162712627136271462715627166271762718627196272062721627226272362724627256272662727627286272962730627316273262733627346273562736627376273862739627406274162742627436274462745627466274762748627496275062751627526275362754627556275662757627586275962760627616276262763627646276562766627676276862769627706277162772627736277462775627766277762778627796278062781627826278362784627856278662787627886278962790627916279262793627946279562796627976279862799628006280162802628036280462805628066280762808628096281062811628126281362814628156281662817628186281962820628216282262823628246282562826628276282862829628306283162832628336283462835628366283762838628396284062841628426284362844628456284662847628486284962850628516285262853628546285562856628576285862859628606286162862628636286462865628666286762868628696287062871628726287362874628756287662877628786287962880628816288262883628846288562886628876288862889628906289162892628936289462895628966289762898628996290062901629026290362904629056290662907629086290962910629116291262913629146291562916629176291862919629206292162922629236292462925629266292762928629296293062931629326293362934629356293662937629386293962940629416294262943629446294562946629476294862949629506295162952629536295462955629566295762958629596296062961629626296362964629656296662967629686296962970629716297262973629746297562976629776297862979629806298162982629836298462985629866298762988629896299062991629926299362994629956299662997629986299963000630016300263003630046300563006630076300863009630106301163012630136301463015630166301763018630196302063021630226302363024630256302663027630286302963030630316303263033630346303563036630376303863039630406304163042630436304463045630466304763048630496305063051630526305363054630556305663057630586305963060630616306263063630646306563066630676306863069630706307163072630736307463075630766307763078630796308063081630826308363084630856308663087630886308963090630916309263093630946309563096630976309863099631006310163102631036310463105631066310763108631096311063111631126311363114631156311663117631186311963120631216312263123631246312563126631276312863129631306313163132631336313463135631366313763138631396314063141631426314363144631456314663147631486314963150631516315263153631546315563156631576315863159631606316163162631636316463165631666316763168631696317063171631726317363174631756317663177631786317963180631816318263183631846318563186631876318863189631906319163192631936319463195631966319763198631996320063201632026320363204632056320663207632086320963210632116321263213632146321563216632176321863219632206322163222632236322463225632266322763228632296323063231632326323363234632356323663237632386323963240632416324263243632446324563246632476324863249632506325163252632536325463255632566325763258632596326063261632626326363264632656326663267632686326963270632716327263273632746327563276632776327863279632806328163282632836328463285632866328763288632896329063291632926329363294632956329663297632986329963300633016330263303633046330563306633076330863309633106331163312633136331463315633166331763318633196332063321633226332363324633256332663327633286332963330633316333263333633346333563336633376333863339633406334163342633436334463345633466334763348633496335063351633526335363354633556335663357633586335963360633616336263363633646336563366633676336863369633706337163372633736337463375633766337763378633796338063381633826338363384633856338663387633886338963390633916339263393633946339563396633976339863399634006340163402634036340463405634066340763408634096341063411634126341363414634156341663417634186341963420634216342263423634246342563426634276342863429634306343163432634336343463435634366343763438634396344063441634426344363444634456344663447634486344963450634516345263453634546345563456634576345863459634606346163462634636346463465634666346763468634696347063471634726347363474634756347663477634786347963480634816348263483634846348563486634876348863489634906349163492634936349463495634966349763498634996350063501635026350363504635056350663507635086350963510635116351263513635146351563516635176351863519635206352163522635236352463525635266352763528635296353063531635326353363534635356353663537635386353963540635416354263543635446354563546635476354863549635506355163552635536355463555635566355763558635596356063561635626356363564635656356663567635686356963570635716357263573635746357563576635776357863579635806358163582635836358463585635866358763588635896359063591635926359363594635956359663597635986359963600636016360263603636046360563606636076360863609636106361163612636136361463615636166361763618636196362063621636226362363624636256362663627636286362963630636316363263633636346363563636636376363863639636406364163642636436364463645636466364763648636496365063651636526365363654636556365663657636586365963660636616366263663636646366563666636676366863669636706367163672636736367463675636766367763678636796368063681636826368363684636856368663687636886368963690636916369263693636946369563696636976369863699637006370163702637036370463705637066370763708637096371063711637126371363714637156371663717637186371963720637216372263723637246372563726637276372863729637306373163732637336373463735637366373763738637396374063741637426374363744637456374663747637486374963750637516375263753637546375563756637576375863759637606376163762637636376463765637666376763768637696377063771637726377363774637756377663777637786377963780637816378263783637846378563786637876378863789637906379163792637936379463795637966379763798637996380063801638026380363804638056380663807638086380963810638116381263813638146381563816638176381863819638206382163822638236382463825638266382763828638296383063831638326383363834638356383663837638386383963840638416384263843638446384563846638476384863849638506385163852638536385463855638566385763858638596386063861638626386363864638656386663867638686386963870638716387263873638746387563876638776387863879638806388163882638836388463885638866388763888638896389063891638926389363894638956389663897638986389963900639016390263903639046390563906639076390863909639106391163912639136391463915639166391763918639196392063921639226392363924639256392663927639286392963930639316393263933639346393563936639376393863939639406394163942639436394463945639466394763948639496395063951639526395363954639556395663957639586395963960639616396263963639646396563966639676396863969639706397163972639736397463975639766397763978639796398063981639826398363984639856398663987639886398963990639916399263993639946399563996639976399863999640006400164002640036400464005640066400764008640096401064011640126401364014640156401664017640186401964020640216402264023640246402564026640276402864029640306403164032640336403464035640366403764038640396404064041640426404364044640456404664047640486404964050640516405264053640546405564056640576405864059640606406164062640636406464065640666406764068640696407064071640726407364074640756407664077640786407964080640816408264083640846408564086640876408864089640906409164092640936409464095640966409764098640996410064101641026410364104641056410664107641086410964110641116411264113641146411564116641176411864119641206412164122641236412464125641266412764128641296413064131641326413364134641356413664137641386413964140641416414264143641446414564146641476414864149641506415164152641536415464155641566415764158641596416064161641626416364164641656416664167641686416964170641716417264173641746417564176641776417864179641806418164182641836418464185641866418764188641896419064191641926419364194641956419664197641986419964200642016420264203642046420564206642076420864209642106421164212642136421464215642166421764218642196422064221642226422364224642256422664227642286422964230642316423264233642346423564236642376423864239642406424164242642436424464245642466424764248642496425064251642526425364254642556425664257642586425964260642616426264263642646426564266642676426864269642706427164272642736427464275642766427764278642796428064281642826428364284642856428664287642886428964290642916429264293642946429564296642976429864299643006430164302643036430464305643066430764308643096431064311643126431364314643156431664317643186431964320643216432264323643246432564326643276432864329643306433164332643336433464335643366433764338643396434064341643426434364344643456434664347643486434964350643516435264353643546435564356643576435864359643606436164362643636436464365643666436764368643696437064371643726437364374643756437664377643786437964380643816438264383643846438564386643876438864389643906439164392643936439464395643966439764398643996440064401644026440364404644056440664407644086440964410644116441264413644146441564416644176441864419644206442164422644236442464425644266442764428644296443064431644326443364434644356443664437644386443964440644416444264443644446444564446644476444864449644506445164452644536445464455644566445764458644596446064461644626446364464644656446664467644686446964470644716447264473644746447564476644776447864479644806448164482644836448464485644866448764488644896449064491644926449364494644956449664497644986449964500645016450264503645046450564506645076450864509645106451164512645136451464515645166451764518645196452064521645226452364524645256452664527645286452964530645316453264533645346453564536645376453864539645406454164542645436454464545645466454764548645496455064551645526455364554645556455664557645586455964560645616456264563645646456564566645676456864569645706457164572645736457464575645766457764578645796458064581645826458364584645856458664587645886458964590645916459264593645946459564596645976459864599646006460164602646036460464605646066460764608646096461064611646126461364614646156461664617646186461964620646216462264623646246462564626646276462864629646306463164632646336463464635646366463764638646396464064641646426464364644646456464664647646486464964650646516465264653646546465564656646576465864659646606466164662646636466464665646666466764668646696467064671646726467364674646756467664677646786467964680646816468264683646846468564686646876468864689646906469164692646936469464695646966469764698646996470064701647026470364704647056470664707647086470964710647116471264713647146471564716647176471864719647206472164722647236472464725647266472764728647296473064731647326473364734647356473664737647386473964740647416474264743647446474564746647476474864749647506475164752647536475464755647566475764758647596476064761647626476364764647656476664767647686476964770647716477264773647746477564776647776477864779647806478164782647836478464785647866478764788647896479064791647926479364794647956479664797647986479964800648016480264803648046480564806648076480864809648106481164812648136481464815648166481764818648196482064821648226482364824648256482664827648286482964830648316483264833648346483564836648376483864839648406484164842648436484464845648466484764848648496485064851648526485364854648556485664857648586485964860648616486264863648646486564866648676486864869648706487164872648736487464875648766487764878648796488064881648826488364884648856488664887648886488964890648916489264893648946489564896648976489864899649006490164902649036490464905649066490764908649096491064911649126491364914649156491664917649186491964920649216492264923649246492564926649276492864929649306493164932649336493464935649366493764938649396494064941649426494364944649456494664947649486494964950649516495264953649546495564956649576495864959649606496164962649636496464965649666496764968649696497064971649726497364974649756497664977649786497964980649816498264983649846498564986649876498864989649906499164992649936499464995649966499764998649996500065001650026500365004650056500665007650086500965010650116501265013650146501565016650176501865019650206502165022650236502465025650266502765028650296503065031650326503365034650356503665037650386503965040650416504265043650446504565046650476504865049650506505165052650536505465055650566505765058650596506065061650626506365064650656506665067650686506965070650716507265073650746507565076650776507865079650806508165082650836508465085650866508765088650896509065091650926509365094650956509665097650986509965100651016510265103651046510565106651076510865109651106511165112651136511465115651166511765118651196512065121651226512365124651256512665127651286512965130651316513265133651346513565136651376513865139651406514165142651436514465145651466514765148651496515065151651526515365154651556515665157651586515965160651616516265163651646516565166651676516865169651706517165172651736517465175651766517765178651796518065181651826518365184651856518665187651886518965190651916519265193651946519565196651976519865199652006520165202652036520465205652066520765208652096521065211652126521365214652156521665217652186521965220652216522265223652246522565226652276522865229652306523165232652336523465235652366523765238652396524065241652426524365244652456524665247652486524965250652516525265253652546525565256652576525865259652606526165262652636526465265652666526765268652696527065271652726527365274652756527665277652786527965280652816528265283652846528565286652876528865289652906529165292652936529465295652966529765298652996530065301653026530365304653056530665307653086530965310653116531265313653146531565316653176531865319653206532165322653236532465325653266532765328653296533065331653326533365334653356533665337653386533965340653416534265343653446534565346653476534865349653506535165352653536535465355653566535765358653596536065361653626536365364653656536665367653686536965370653716537265373653746537565376653776537865379653806538165382653836538465385653866538765388653896539065391653926539365394653956539665397653986539965400654016540265403654046540565406654076540865409654106541165412654136541465415654166541765418654196542065421654226542365424654256542665427654286542965430654316543265433654346543565436654376543865439654406544165442654436544465445654466544765448654496545065451654526545365454654556545665457654586545965460654616546265463654646546565466654676546865469654706547165472654736547465475654766547765478654796548065481654826548365484654856548665487654886548965490654916549265493654946549565496654976549865499655006550165502655036550465505655066550765508655096551065511655126551365514655156551665517655186551965520655216552265523655246552565526655276552865529655306553165532655336553465535655366553765538655396554065541655426554365544655456554665547655486554965550655516555265553655546555565556655576555865559655606556165562655636556465565655666556765568655696557065571655726557365574655756557665577655786557965580655816558265583655846558565586655876558865589655906559165592655936559465595655966559765598655996560065601656026560365604656056560665607656086560965610656116561265613656146561565616656176561865619656206562165622656236562465625656266562765628656296563065631656326563365634656356563665637656386563965640656416564265643656446564565646656476564865649656506565165652656536565465655656566565765658656596566065661656626566365664656656566665667656686566965670656716567265673656746567565676656776567865679656806568165682656836568465685656866568765688656896569065691656926569365694656956569665697656986569965700657016570265703657046570565706657076570865709657106571165712657136571465715657166571765718657196572065721657226572365724657256572665727657286572965730657316573265733657346573565736657376573865739657406574165742657436574465745657466574765748657496575065751657526575365754657556575665757657586575965760657616576265763657646576565766657676576865769657706577165772657736577465775657766577765778657796578065781657826578365784657856578665787657886578965790657916579265793657946579565796657976579865799658006580165802658036580465805658066580765808658096581065811658126581365814658156581665817658186581965820658216582265823658246582565826658276582865829658306583165832658336583465835658366583765838658396584065841658426584365844658456584665847658486584965850658516585265853658546585565856658576585865859658606586165862658636586465865658666586765868658696587065871658726587365874658756587665877658786587965880658816588265883658846588565886658876588865889658906589165892658936589465895658966589765898658996590065901659026590365904659056590665907659086590965910659116591265913659146591565916659176591865919659206592165922659236592465925659266592765928659296593065931659326593365934659356593665937659386593965940659416594265943659446594565946659476594865949659506595165952659536595465955659566595765958659596596065961659626596365964659656596665967659686596965970659716597265973659746597565976659776597865979659806598165982659836598465985659866598765988659896599065991659926599365994659956599665997659986599966000660016600266003660046600566006660076600866009660106601166012660136601466015660166601766018660196602066021660226602366024660256602666027660286602966030660316603266033660346603566036660376603866039660406604166042660436604466045660466604766048660496605066051660526605366054660556605666057660586605966060660616606266063660646606566066660676606866069660706607166072660736607466075660766607766078660796608066081660826608366084660856608666087660886608966090660916609266093660946609566096660976609866099661006610166102661036610466105661066610766108661096611066111661126611366114661156611666117661186611966120661216612266123661246612566126661276612866129661306613166132661336613466135661366613766138661396614066141661426614366144661456614666147661486614966150661516615266153661546615566156661576615866159661606616166162661636616466165661666616766168661696617066171661726617366174661756617666177661786617966180661816618266183661846618566186661876618866189661906619166192661936619466195661966619766198661996620066201662026620366204662056620666207662086620966210662116621266213662146621566216662176621866219662206622166222662236622466225662266622766228662296623066231662326623366234662356623666237662386623966240662416624266243662446624566246662476624866249662506625166252662536625466255662566625766258662596626066261662626626366264662656626666267662686626966270662716627266273662746627566276662776627866279662806628166282662836628466285662866628766288662896629066291662926629366294662956629666297662986629966300663016630266303663046630566306663076630866309663106631166312663136631466315663166631766318663196632066321663226632366324663256632666327663286632966330663316633266333663346633566336663376633866339663406634166342663436634466345663466634766348663496635066351663526635366354663556635666357663586635966360663616636266363663646636566366663676636866369663706637166372663736637466375663766637766378663796638066381663826638366384663856638666387663886638966390663916639266393663946639566396663976639866399664006640166402664036640466405664066640766408664096641066411664126641366414664156641666417664186641966420664216642266423664246642566426664276642866429664306643166432664336643466435664366643766438664396644066441664426644366444664456644666447664486644966450664516645266453664546645566456664576645866459664606646166462664636646466465664666646766468664696647066471664726647366474664756647666477664786647966480664816648266483664846648566486664876648866489664906649166492664936649466495664966649766498664996650066501665026650366504665056650666507665086650966510665116651266513665146651566516665176651866519665206652166522665236652466525665266652766528665296653066531665326653366534665356653666537665386653966540665416654266543665446654566546665476654866549665506655166552665536655466555665566655766558665596656066561665626656366564665656656666567665686656966570665716657266573665746657566576665776657866579665806658166582665836658466585665866658766588665896659066591665926659366594665956659666597665986659966600666016660266603666046660566606666076660866609666106661166612666136661466615666166661766618666196662066621666226662366624666256662666627666286662966630666316663266633666346663566636666376663866639666406664166642666436664466645666466664766648666496665066651666526665366654666556665666657666586665966660666616666266663666646666566666666676666866669666706667166672666736667466675666766667766678666796668066681666826668366684666856668666687666886668966690666916669266693666946669566696666976669866699667006670166702667036670466705667066670766708667096671066711667126671366714667156671666717667186671966720667216672266723667246672566726667276672866729667306673166732667336673466735667366673766738667396674066741667426674366744667456674666747667486674966750667516675266753667546675566756667576675866759667606676166762667636676466765667666676766768667696677066771667726677366774667756677666777667786677966780667816678266783667846678566786667876678866789667906679166792667936679466795667966679766798667996680066801668026680366804668056680666807668086680966810668116681266813668146681566816668176681866819668206682166822668236682466825668266682766828668296683066831668326683366834668356683666837668386683966840668416684266843668446684566846668476684866849668506685166852668536685466855668566685766858668596686066861668626686366864668656686666867668686686966870668716687266873668746687566876668776687866879668806688166882668836688466885668866688766888668896689066891668926689366894668956689666897668986689966900669016690266903669046690566906669076690866909669106691166912669136691466915669166691766918669196692066921669226692366924669256692666927669286692966930669316693266933669346693566936669376693866939669406694166942669436694466945669466694766948669496695066951669526695366954669556695666957669586695966960669616696266963669646696566966669676696866969669706697166972669736697466975669766697766978669796698066981669826698366984669856698666987669886698966990669916699266993669946699566996669976699866999670006700167002670036700467005670066700767008670096701067011670126701367014670156701667017670186701967020670216702267023670246702567026670276702867029670306703167032670336703467035670366703767038670396704067041670426704367044670456704667047670486704967050670516705267053670546705567056670576705867059670606706167062670636706467065670666706767068670696707067071670726707367074670756707667077670786707967080670816708267083670846708567086670876708867089670906709167092670936709467095670966709767098670996710067101671026710367104671056710667107671086710967110671116711267113671146711567116671176711867119671206712167122671236712467125671266712767128671296713067131671326713367134671356713667137671386713967140671416714267143671446714567146671476714867149671506715167152671536715467155671566715767158671596716067161671626716367164671656716667167671686716967170671716717267173671746717567176671776717867179671806718167182671836718467185671866718767188671896719067191671926719367194671956719667197671986719967200672016720267203672046720567206672076720867209672106721167212672136721467215672166721767218672196722067221672226722367224672256722667227672286722967230672316723267233672346723567236672376723867239672406724167242672436724467245672466724767248672496725067251672526725367254672556725667257672586725967260672616726267263672646726567266672676726867269672706727167272672736727467275672766727767278672796728067281672826728367284672856728667287672886728967290672916729267293672946729567296672976729867299673006730167302673036730467305673066730767308673096731067311673126731367314673156731667317673186731967320673216732267323673246732567326673276732867329673306733167332673336733467335673366733767338673396734067341673426734367344673456734667347673486734967350673516735267353673546735567356673576735867359673606736167362673636736467365673666736767368673696737067371673726737367374673756737667377673786737967380673816738267383673846738567386673876738867389673906739167392673936739467395673966739767398673996740067401674026740367404674056740667407674086740967410674116741267413674146741567416674176741867419674206742167422674236742467425674266742767428674296743067431674326743367434674356743667437674386743967440674416744267443674446744567446674476744867449674506745167452674536745467455674566745767458674596746067461674626746367464674656746667467674686746967470674716747267473674746747567476674776747867479674806748167482674836748467485674866748767488674896749067491674926749367494674956749667497674986749967500675016750267503675046750567506675076750867509675106751167512675136751467515675166751767518675196752067521675226752367524675256752667527675286752967530675316753267533675346753567536675376753867539675406754167542675436754467545675466754767548675496755067551675526755367554675556755667557675586755967560675616756267563675646756567566675676756867569675706757167572675736757467575675766757767578675796758067581675826758367584675856758667587675886758967590675916759267593675946759567596675976759867599676006760167602676036760467605676066760767608676096761067611676126761367614676156761667617676186761967620676216762267623676246762567626676276762867629676306763167632676336763467635676366763767638676396764067641676426764367644676456764667647676486764967650676516765267653676546765567656676576765867659676606766167662676636766467665676666766767668676696767067671676726767367674676756767667677676786767967680676816768267683676846768567686676876768867689676906769167692676936769467695676966769767698676996770067701677026770367704677056770667707677086770967710677116771267713677146771567716677176771867719677206772167722677236772467725677266772767728677296773067731677326773367734677356773667737677386773967740677416774267743677446774567746677476774867749677506775167752677536775467755677566775767758677596776067761677626776367764677656776667767677686776967770677716777267773677746777567776677776777867779677806778167782677836778467785677866778767788677896779067791677926779367794677956779667797677986779967800678016780267803678046780567806678076780867809678106781167812678136781467815678166781767818678196782067821678226782367824678256782667827678286782967830678316783267833678346783567836678376783867839678406784167842678436784467845678466784767848678496785067851678526785367854678556785667857678586785967860678616786267863678646786567866678676786867869678706787167872678736787467875678766787767878678796788067881678826788367884678856788667887678886788967890678916789267893678946789567896678976789867899679006790167902679036790467905679066790767908679096791067911679126791367914679156791667917679186791967920679216792267923679246792567926679276792867929679306793167932679336793467935679366793767938679396794067941679426794367944679456794667947679486794967950679516795267953679546795567956679576795867959679606796167962679636796467965679666796767968679696797067971679726797367974679756797667977679786797967980679816798267983679846798567986679876798867989679906799167992679936799467995679966799767998679996800068001680026800368004680056800668007680086800968010680116801268013680146801568016680176801868019680206802168022680236802468025680266802768028680296803068031680326803368034680356803668037680386803968040680416804268043680446804568046680476804868049680506805168052680536805468055680566805768058680596806068061680626806368064680656806668067680686806968070680716807268073680746807568076680776807868079680806808168082680836808468085680866808768088680896809068091680926809368094680956809668097680986809968100681016810268103681046810568106681076810868109681106811168112681136811468115681166811768118681196812068121681226812368124681256812668127681286812968130681316813268133681346813568136681376813868139681406814168142681436814468145681466814768148681496815068151681526815368154681556815668157681586815968160681616816268163681646816568166681676816868169681706817168172681736817468175681766817768178681796818068181681826818368184681856818668187681886818968190681916819268193681946819568196681976819868199682006820168202682036820468205682066820768208682096821068211682126821368214682156821668217682186821968220682216822268223682246822568226682276822868229682306823168232682336823468235682366823768238682396824068241682426824368244682456824668247682486824968250682516825268253682546825568256682576825868259682606826168262682636826468265682666826768268682696827068271682726827368274682756827668277682786827968280682816828268283682846828568286682876828868289682906829168292682936829468295682966829768298682996830068301683026830368304683056830668307683086830968310683116831268313683146831568316683176831868319683206832168322683236832468325683266832768328683296833068331683326833368334683356833668337683386833968340683416834268343683446834568346683476834868349683506835168352683536835468355683566835768358683596836068361683626836368364683656836668367683686836968370683716837268373683746837568376683776837868379683806838168382683836838468385683866838768388683896839068391683926839368394683956839668397683986839968400684016840268403684046840568406684076840868409684106841168412684136841468415684166841768418684196842068421684226842368424684256842668427684286842968430684316843268433684346843568436684376843868439684406844168442684436844468445684466844768448684496845068451684526845368454684556845668457684586845968460684616846268463684646846568466684676846868469684706847168472684736847468475684766847768478684796848068481684826848368484684856848668487684886848968490684916849268493684946849568496684976849868499685006850168502685036850468505685066850768508685096851068511685126851368514685156851668517685186851968520685216852268523685246852568526685276852868529685306853168532685336853468535685366853768538685396854068541685426854368544685456854668547685486854968550685516855268553685546855568556685576855868559685606856168562685636856468565685666856768568685696857068571685726857368574685756857668577685786857968580685816858268583685846858568586685876858868589685906859168592685936859468595685966859768598685996860068601686026860368604686056860668607686086860968610686116861268613686146861568616686176861868619686206862168622686236862468625686266862768628686296863068631686326863368634686356863668637686386863968640686416864268643686446864568646686476864868649686506865168652686536865468655686566865768658686596866068661686626866368664686656866668667686686866968670686716867268673686746867568676686776867868679686806868168682686836868468685686866868768688686896869068691686926869368694686956869668697686986869968700687016870268703687046870568706687076870868709687106871168712687136871468715687166871768718687196872068721687226872368724687256872668727687286872968730687316873268733687346873568736687376873868739687406874168742687436874468745687466874768748687496875068751687526875368754687556875668757687586875968760687616876268763687646876568766687676876868769687706877168772687736877468775687766877768778687796878068781687826878368784687856878668787687886878968790687916879268793687946879568796687976879868799688006880168802688036880468805688066880768808688096881068811688126881368814688156881668817688186881968820688216882268823688246882568826688276882868829688306883168832688336883468835688366883768838688396884068841688426884368844688456884668847688486884968850688516885268853688546885568856688576885868859688606886168862688636886468865688666886768868688696887068871688726887368874688756887668877688786887968880688816888268883688846888568886688876888868889688906889168892688936889468895688966889768898688996890068901689026890368904689056890668907689086890968910689116891268913689146891568916689176891868919689206892168922689236892468925689266892768928689296893068931689326893368934689356893668937689386893968940689416894268943689446894568946689476894868949689506895168952689536895468955689566895768958689596896068961689626896368964689656896668967689686896968970689716897268973689746897568976689776897868979689806898168982689836898468985689866898768988689896899068991689926899368994689956899668997689986899969000690016900269003690046900569006690076900869009690106901169012690136901469015690166901769018690196902069021690226902369024690256902669027690286902969030690316903269033690346903569036690376903869039690406904169042690436904469045690466904769048690496905069051690526905369054690556905669057690586905969060690616906269063690646906569066690676906869069690706907169072690736907469075690766907769078690796908069081690826908369084690856908669087690886908969090690916909269093690946909569096690976909869099691006910169102691036910469105691066910769108691096911069111691126911369114691156911669117691186911969120691216912269123691246912569126691276912869129691306913169132691336913469135691366913769138691396914069141691426914369144691456914669147691486914969150691516915269153691546915569156691576915869159691606916169162691636916469165691666916769168691696917069171691726917369174691756917669177691786917969180691816918269183691846918569186691876918869189691906919169192691936919469195691966919769198691996920069201692026920369204692056920669207692086920969210692116921269213692146921569216692176921869219692206922169222692236922469225692266922769228692296923069231692326923369234692356923669237692386923969240692416924269243692446924569246692476924869249692506925169252692536925469255692566925769258692596926069261692626926369264692656926669267692686926969270692716927269273692746927569276692776927869279692806928169282692836928469285692866928769288692896929069291692926929369294692956929669297692986929969300693016930269303693046930569306693076930869309693106931169312693136931469315693166931769318693196932069321693226932369324693256932669327693286932969330693316933269333693346933569336693376933869339693406934169342693436934469345693466934769348693496935069351693526935369354693556935669357693586935969360693616936269363693646936569366693676936869369693706937169372693736937469375693766937769378693796938069381693826938369384693856938669387693886938969390693916939269393693946939569396693976939869399694006940169402694036940469405694066940769408694096941069411694126941369414694156941669417694186941969420694216942269423694246942569426694276942869429694306943169432694336943469435694366943769438694396944069441694426944369444694456944669447694486944969450694516945269453694546945569456694576945869459694606946169462694636946469465694666946769468694696947069471694726947369474694756947669477694786947969480694816948269483694846948569486694876948869489694906949169492694936949469495694966949769498694996950069501695026950369504695056950669507695086950969510695116951269513695146951569516695176951869519695206952169522695236952469525695266952769528695296953069531695326953369534695356953669537695386953969540695416954269543695446954569546695476954869549695506955169552695536955469555695566955769558695596956069561695626956369564695656956669567695686956969570695716957269573695746957569576695776957869579695806958169582695836958469585695866958769588695896959069591695926959369594695956959669597695986959969600696016960269603696046960569606696076960869609696106961169612696136961469615696166961769618696196962069621696226962369624696256962669627696286962969630696316963269633696346963569636696376963869639696406964169642696436964469645696466964769648696496965069651696526965369654696556965669657696586965969660696616966269663696646966569666696676966869669696706967169672696736967469675696766967769678696796968069681696826968369684696856968669687696886968969690696916969269693696946969569696696976969869699697006970169702697036970469705697066970769708697096971069711697126971369714697156971669717697186971969720697216972269723697246972569726697276972869729697306973169732697336973469735697366973769738697396974069741697426974369744697456974669747697486974969750697516975269753697546975569756697576975869759697606976169762697636976469765697666976769768697696977069771697726977369774697756977669777697786977969780697816978269783697846978569786697876978869789697906979169792697936979469795697966979769798697996980069801698026980369804698056980669807698086980969810698116981269813698146981569816698176981869819698206982169822698236982469825698266982769828698296983069831698326983369834698356983669837698386983969840698416984269843698446984569846698476984869849698506985169852698536985469855698566985769858698596986069861698626986369864698656986669867698686986969870698716987269873698746987569876698776987869879698806988169882698836988469885698866988769888698896989069891698926989369894698956989669897698986989969900699016990269903699046990569906699076990869909699106991169912699136991469915699166991769918699196992069921699226992369924699256992669927699286992969930699316993269933699346993569936699376993869939699406994169942699436994469945699466994769948699496995069951699526995369954699556995669957699586995969960699616996269963699646996569966699676996869969699706997169972699736997469975699766997769978699796998069981699826998369984699856998669987699886998969990699916999269993699946999569996699976999869999700007000170002700037000470005700067000770008700097001070011700127001370014700157001670017700187001970020700217002270023700247002570026700277002870029700307003170032700337003470035700367003770038700397004070041700427004370044700457004670047700487004970050700517005270053700547005570056700577005870059700607006170062700637006470065700667006770068700697007070071700727007370074700757007670077700787007970080700817008270083700847008570086700877008870089700907009170092700937009470095700967009770098700997010070101701027010370104701057010670107701087010970110701117011270113701147011570116701177011870119701207012170122701237012470125701267012770128701297013070131701327013370134701357013670137701387013970140701417014270143701447014570146701477014870149701507015170152701537015470155701567015770158701597016070161701627016370164701657016670167701687016970170701717017270173701747017570176701777017870179701807018170182701837018470185701867018770188701897019070191701927019370194701957019670197701987019970200702017020270203702047020570206702077020870209702107021170212702137021470215702167021770218702197022070221702227022370224702257022670227702287022970230702317023270233702347023570236702377023870239702407024170242702437024470245702467024770248702497025070251702527025370254702557025670257702587025970260702617026270263702647026570266702677026870269702707027170272702737027470275702767027770278702797028070281702827028370284702857028670287702887028970290702917029270293702947029570296702977029870299703007030170302703037030470305703067030770308703097031070311703127031370314703157031670317703187031970320703217032270323703247032570326703277032870329703307033170332703337033470335703367033770338703397034070341703427034370344703457034670347703487034970350703517035270353703547035570356703577035870359703607036170362703637036470365703667036770368703697037070371703727037370374703757037670377703787037970380703817038270383703847038570386703877038870389703907039170392703937039470395703967039770398703997040070401704027040370404704057040670407704087040970410704117041270413704147041570416704177041870419704207042170422704237042470425704267042770428704297043070431704327043370434704357043670437704387043970440704417044270443704447044570446704477044870449704507045170452704537045470455704567045770458704597046070461704627046370464704657046670467704687046970470704717047270473704747047570476704777047870479704807048170482704837048470485704867048770488704897049070491704927049370494704957049670497704987049970500705017050270503705047050570506705077050870509705107051170512705137051470515705167051770518705197052070521705227052370524705257052670527705287052970530705317053270533705347053570536705377053870539705407054170542705437054470545705467054770548705497055070551705527055370554705557055670557705587055970560705617056270563705647056570566705677056870569705707057170572705737057470575705767057770578705797058070581705827058370584705857058670587705887058970590705917059270593705947059570596705977059870599706007060170602706037060470605706067060770608706097061070611706127061370614706157061670617706187061970620706217062270623706247062570626706277062870629706307063170632706337063470635706367063770638706397064070641706427064370644706457064670647706487064970650706517065270653706547065570656706577065870659706607066170662706637066470665706667066770668706697067070671706727067370674706757067670677706787067970680706817068270683706847068570686706877068870689706907069170692706937069470695706967069770698706997070070701707027070370704707057070670707707087070970710707117071270713707147071570716707177071870719707207072170722707237072470725707267072770728707297073070731707327073370734707357073670737707387073970740707417074270743707447074570746707477074870749707507075170752707537075470755707567075770758707597076070761707627076370764707657076670767707687076970770707717077270773707747077570776707777077870779707807078170782707837078470785707867078770788707897079070791707927079370794707957079670797707987079970800708017080270803708047080570806708077080870809708107081170812708137081470815708167081770818708197082070821708227082370824708257082670827708287082970830708317083270833708347083570836708377083870839708407084170842708437084470845708467084770848708497085070851708527085370854708557085670857708587085970860708617086270863708647086570866708677086870869708707087170872708737087470875708767087770878708797088070881708827088370884708857088670887708887088970890708917089270893708947089570896708977089870899709007090170902709037090470905709067090770908709097091070911709127091370914709157091670917709187091970920709217092270923709247092570926709277092870929709307093170932709337093470935709367093770938709397094070941709427094370944709457094670947709487094970950709517095270953709547095570956709577095870959709607096170962709637096470965709667096770968709697097070971709727097370974709757097670977709787097970980709817098270983709847098570986709877098870989709907099170992709937099470995709967099770998709997100071001710027100371004710057100671007710087100971010710117101271013710147101571016710177101871019710207102171022710237102471025710267102771028710297103071031710327103371034710357103671037710387103971040710417104271043710447104571046710477104871049710507105171052710537105471055710567105771058710597106071061710627106371064710657106671067710687106971070710717107271073710747107571076710777107871079710807108171082710837108471085710867108771088710897109071091710927109371094710957109671097710987109971100711017110271103711047110571106711077110871109711107111171112711137111471115711167111771118711197112071121711227112371124711257112671127711287112971130711317113271133711347113571136711377113871139711407114171142711437114471145711467114771148711497115071151711527115371154711557115671157711587115971160711617116271163711647116571166711677116871169711707117171172711737117471175711767117771178711797118071181711827118371184711857118671187711887118971190711917119271193711947119571196711977119871199712007120171202712037120471205712067120771208712097121071211712127121371214712157121671217712187121971220712217122271223712247122571226712277122871229712307123171232712337123471235712367123771238712397124071241712427124371244712457124671247712487124971250712517125271253712547125571256712577125871259712607126171262712637126471265712667126771268712697127071271712727127371274712757127671277712787127971280712817128271283712847128571286712877128871289712907129171292712937129471295712967129771298712997130071301713027130371304713057130671307713087130971310713117131271313713147131571316713177131871319713207132171322713237132471325713267132771328713297133071331713327133371334713357133671337713387133971340713417134271343713447134571346713477134871349713507135171352713537135471355713567135771358713597136071361713627136371364713657136671367713687136971370713717137271373713747137571376713777137871379713807138171382713837138471385713867138771388713897139071391713927139371394713957139671397713987139971400714017140271403714047140571406714077140871409714107141171412714137141471415714167141771418714197142071421714227142371424714257142671427714287142971430714317143271433714347143571436714377143871439714407144171442714437144471445714467144771448714497145071451714527145371454714557145671457714587145971460714617146271463714647146571466714677146871469714707147171472714737147471475714767147771478714797148071481714827148371484714857148671487714887148971490714917149271493714947149571496714977149871499715007150171502715037150471505715067150771508715097151071511715127151371514715157151671517715187151971520715217152271523715247152571526715277152871529715307153171532715337153471535715367153771538715397154071541715427154371544715457154671547715487154971550715517155271553715547155571556715577155871559715607156171562715637156471565715667156771568715697157071571715727157371574715757157671577715787157971580715817158271583715847158571586715877158871589715907159171592715937159471595715967159771598715997160071601716027160371604716057160671607716087160971610716117161271613716147161571616716177161871619716207162171622716237162471625716267162771628716297163071631716327163371634716357163671637716387163971640716417164271643716447164571646716477164871649716507165171652716537165471655716567165771658716597166071661716627166371664716657166671667716687166971670716717167271673716747167571676716777167871679716807168171682716837168471685716867168771688716897169071691716927169371694716957169671697716987169971700717017170271703717047170571706717077170871709717107171171712717137171471715717167171771718717197172071721717227172371724717257172671727717287172971730717317173271733717347173571736717377173871739717407174171742717437174471745717467174771748717497175071751717527175371754717557175671757717587175971760717617176271763717647176571766717677176871769717707177171772717737177471775717767177771778717797178071781717827178371784717857178671787717887178971790717917179271793717947179571796717977179871799718007180171802718037180471805718067180771808718097181071811718127181371814718157181671817718187181971820718217182271823718247182571826718277182871829718307183171832718337183471835718367183771838718397184071841718427184371844718457184671847718487184971850718517185271853718547185571856718577185871859718607186171862718637186471865718667186771868718697187071871718727187371874718757187671877718787187971880718817188271883718847188571886718877188871889718907189171892718937189471895718967189771898718997190071901719027190371904719057190671907719087190971910719117191271913719147191571916719177191871919719207192171922719237192471925719267192771928719297193071931719327193371934719357193671937719387193971940719417194271943719447194571946719477194871949719507195171952719537195471955719567195771958719597196071961719627196371964719657196671967719687196971970719717197271973719747197571976719777197871979719807198171982719837198471985719867198771988719897199071991719927199371994719957199671997719987199972000720017200272003720047200572006720077200872009720107201172012720137201472015720167201772018720197202072021720227202372024720257202672027720287202972030720317203272033720347203572036720377203872039720407204172042720437204472045720467204772048720497205072051720527205372054720557205672057720587205972060720617206272063720647206572066720677206872069720707207172072720737207472075720767207772078720797208072081720827208372084720857208672087720887208972090720917209272093720947209572096720977209872099721007210172102721037210472105721067210772108721097211072111721127211372114721157211672117721187211972120721217212272123721247212572126721277212872129721307213172132721337213472135721367213772138721397214072141721427214372144721457214672147721487214972150721517215272153721547215572156721577215872159721607216172162721637216472165721667216772168721697217072171721727217372174721757217672177721787217972180721817218272183721847218572186721877218872189721907219172192721937219472195721967219772198721997220072201722027220372204722057220672207722087220972210722117221272213722147221572216722177221872219722207222172222722237222472225722267222772228722297223072231722327223372234722357223672237722387223972240722417224272243722447224572246722477224872249722507225172252722537225472255722567225772258722597226072261722627226372264722657226672267722687226972270722717227272273722747227572276722777227872279722807228172282722837228472285722867228772288722897229072291722927229372294722957229672297722987229972300723017230272303723047230572306723077230872309723107231172312723137231472315723167231772318723197232072321723227232372324723257232672327723287232972330723317233272333723347233572336723377233872339723407234172342723437234472345723467234772348723497235072351723527235372354723557235672357723587235972360723617236272363723647236572366723677236872369723707237172372723737237472375723767237772378723797238072381723827238372384723857238672387723887238972390723917239272393723947239572396723977239872399724007240172402724037240472405724067240772408724097241072411724127241372414724157241672417724187241972420724217242272423724247242572426724277242872429724307243172432724337243472435724367243772438724397244072441724427244372444724457244672447724487244972450724517245272453724547245572456724577245872459724607246172462724637246472465724667246772468724697247072471724727247372474724757247672477724787247972480724817248272483724847248572486724877248872489724907249172492724937249472495724967249772498724997250072501725027250372504725057250672507725087250972510725117251272513725147251572516725177251872519725207252172522725237252472525725267252772528725297253072531725327253372534725357253672537725387253972540725417254272543725447254572546725477254872549725507255172552725537255472555725567255772558725597256072561725627256372564725657256672567725687256972570725717257272573725747257572576725777257872579725807258172582725837258472585725867258772588725897259072591725927259372594725957259672597725987259972600726017260272603726047260572606726077260872609726107261172612726137261472615726167261772618726197262072621726227262372624726257262672627726287262972630726317263272633726347263572636726377263872639726407264172642726437264472645726467264772648726497265072651726527265372654726557265672657726587265972660726617266272663726647266572666726677266872669726707267172672726737267472675726767267772678726797268072681726827268372684726857268672687726887268972690726917269272693726947269572696726977269872699727007270172702727037270472705727067270772708727097271072711727127271372714727157271672717727187271972720727217272272723727247272572726727277272872729727307273172732727337273472735727367273772738727397274072741727427274372744727457274672747727487274972750727517275272753727547275572756727577275872759727607276172762727637276472765727667276772768727697277072771727727277372774727757277672777727787277972780727817278272783727847278572786727877278872789727907279172792727937279472795727967279772798727997280072801728027280372804728057280672807728087280972810728117281272813728147281572816728177281872819728207282172822728237282472825728267282772828728297283072831728327283372834728357283672837728387283972840728417284272843728447284572846728477284872849728507285172852728537285472855728567285772858728597286072861728627286372864728657286672867728687286972870728717287272873728747287572876728777287872879728807288172882728837288472885728867288772888728897289072891728927289372894728957289672897728987289972900729017290272903729047290572906729077290872909729107291172912729137291472915729167291772918729197292072921729227292372924729257292672927729287292972930729317293272933729347293572936729377293872939729407294172942729437294472945729467294772948729497295072951729527295372954729557295672957729587295972960729617296272963729647296572966729677296872969729707297172972729737297472975729767297772978729797298072981729827298372984729857298672987729887298972990729917299272993729947299572996729977299872999730007300173002730037300473005730067300773008730097301073011730127301373014730157301673017730187301973020730217302273023730247302573026730277302873029730307303173032730337303473035730367303773038730397304073041730427304373044730457304673047730487304973050730517305273053730547305573056730577305873059730607306173062730637306473065730667306773068730697307073071730727307373074730757307673077730787307973080730817308273083730847308573086730877308873089730907309173092730937309473095730967309773098730997310073101731027310373104731057310673107731087310973110731117311273113731147311573116731177311873119731207312173122731237312473125731267312773128731297313073131731327313373134731357313673137731387313973140731417314273143731447314573146731477314873149731507315173152731537315473155731567315773158731597316073161731627316373164731657316673167731687316973170731717317273173731747317573176731777317873179731807318173182731837318473185731867318773188731897319073191731927319373194731957319673197731987319973200732017320273203732047320573206732077320873209732107321173212732137321473215732167321773218732197322073221732227322373224732257322673227732287322973230732317323273233732347323573236732377323873239732407324173242732437324473245732467324773248732497325073251732527325373254732557325673257732587325973260732617326273263732647326573266732677326873269732707327173272732737327473275732767327773278732797328073281732827328373284732857328673287732887328973290732917329273293732947329573296732977329873299733007330173302733037330473305733067330773308733097331073311733127331373314733157331673317733187331973320733217332273323733247332573326733277332873329733307333173332733337333473335733367333773338733397334073341733427334373344733457334673347733487334973350733517335273353733547335573356733577335873359733607336173362733637336473365733667336773368733697337073371733727337373374733757337673377733787337973380733817338273383733847338573386733877338873389733907339173392733937339473395733967339773398733997340073401734027340373404734057340673407734087340973410734117341273413734147341573416734177341873419734207342173422734237342473425734267342773428734297343073431734327343373434734357343673437734387343973440734417344273443734447344573446734477344873449734507345173452734537345473455734567345773458734597346073461734627346373464734657346673467734687346973470734717347273473734747347573476734777347873479734807348173482734837348473485734867348773488734897349073491734927349373494734957349673497734987349973500735017350273503735047350573506735077350873509735107351173512735137351473515735167351773518735197352073521735227352373524735257352673527735287352973530735317353273533735347353573536735377353873539735407354173542735437354473545735467354773548735497355073551735527355373554735557355673557735587355973560735617356273563735647356573566735677356873569735707357173572735737357473575735767357773578735797358073581735827358373584735857358673587735887358973590735917359273593735947359573596735977359873599736007360173602736037360473605736067360773608736097361073611736127361373614736157361673617736187361973620736217362273623736247362573626736277362873629736307363173632736337363473635736367363773638736397364073641736427364373644736457364673647736487364973650736517365273653736547365573656736577365873659736607366173662736637366473665736667366773668736697367073671736727367373674736757367673677736787367973680736817368273683736847368573686736877368873689736907369173692736937369473695736967369773698736997370073701737027370373704737057370673707737087370973710737117371273713737147371573716737177371873719737207372173722737237372473725737267372773728737297373073731737327373373734737357373673737737387373973740737417374273743737447374573746737477374873749737507375173752737537375473755737567375773758737597376073761737627376373764737657376673767737687376973770737717377273773737747377573776737777377873779737807378173782737837378473785737867378773788737897379073791737927379373794737957379673797737987379973800738017380273803738047380573806738077380873809738107381173812738137381473815738167381773818738197382073821738227382373824738257382673827738287382973830738317383273833738347383573836738377383873839738407384173842738437384473845738467384773848738497385073851738527385373854738557385673857738587385973860738617386273863738647386573866738677386873869738707387173872738737387473875738767387773878738797388073881738827388373884738857388673887738887388973890738917389273893738947389573896738977389873899739007390173902739037390473905739067390773908739097391073911739127391373914739157391673917739187391973920739217392273923739247392573926739277392873929739307393173932739337393473935739367393773938739397394073941739427394373944739457394673947739487394973950739517395273953739547395573956739577395873959739607396173962739637396473965739667396773968739697397073971739727397373974739757397673977739787397973980739817398273983739847398573986739877398873989739907399173992739937399473995739967399773998739997400074001740027400374004740057400674007740087400974010740117401274013740147401574016740177401874019740207402174022740237402474025740267402774028740297403074031740327403374034740357403674037740387403974040740417404274043740447404574046740477404874049740507405174052740537405474055740567405774058740597406074061740627406374064740657406674067740687406974070740717407274073740747407574076740777407874079740807408174082740837408474085740867408774088740897409074091740927409374094740957409674097740987409974100741017410274103741047410574106741077410874109741107411174112741137411474115741167411774118741197412074121741227412374124741257412674127741287412974130741317413274133741347413574136741377413874139741407414174142741437414474145741467414774148741497415074151741527415374154741557415674157741587415974160741617416274163741647416574166741677416874169741707417174172741737417474175741767417774178741797418074181741827418374184741857418674187741887418974190741917419274193741947419574196741977419874199742007420174202742037420474205742067420774208742097421074211742127421374214742157421674217742187421974220742217422274223742247422574226742277422874229742307423174232742337423474235742367423774238742397424074241742427424374244742457424674247742487424974250742517425274253742547425574256742577425874259742607426174262742637426474265742667426774268742697427074271742727427374274742757427674277742787427974280742817428274283742847428574286742877428874289742907429174292742937429474295742967429774298742997430074301743027430374304743057430674307743087430974310743117431274313743147431574316743177431874319743207432174322743237432474325743267432774328743297433074331743327433374334743357433674337743387433974340743417434274343743447434574346743477434874349743507435174352743537435474355743567435774358743597436074361743627436374364743657436674367743687436974370743717437274373743747437574376743777437874379743807438174382743837438474385743867438774388743897439074391743927439374394743957439674397743987439974400744017440274403744047440574406744077440874409744107441174412744137441474415744167441774418744197442074421744227442374424744257442674427744287442974430744317443274433744347443574436744377443874439744407444174442744437444474445744467444774448744497445074451744527445374454744557445674457744587445974460744617446274463744647446574466744677446874469744707447174472744737447474475744767447774478744797448074481744827448374484744857448674487744887448974490744917449274493744947449574496744977449874499745007450174502745037450474505745067450774508745097451074511745127451374514745157451674517745187451974520745217452274523745247452574526745277452874529745307453174532745337453474535745367453774538745397454074541745427454374544745457454674547745487454974550745517455274553745547455574556745577455874559745607456174562745637456474565745667456774568745697457074571745727457374574745757457674577745787457974580745817458274583745847458574586745877458874589745907459174592745937459474595745967459774598745997460074601746027460374604746057460674607746087460974610746117461274613746147461574616746177461874619746207462174622746237462474625746267462774628746297463074631746327463374634746357463674637746387463974640746417464274643746447464574646746477464874649746507465174652746537465474655746567465774658746597466074661746627466374664746657466674667746687466974670746717467274673746747467574676746777467874679746807468174682746837468474685746867468774688746897469074691746927469374694746957469674697746987469974700747017470274703747047470574706747077470874709747107471174712747137471474715747167471774718747197472074721747227472374724747257472674727747287472974730747317473274733747347473574736747377473874739747407474174742747437474474745747467474774748747497475074751747527475374754747557475674757747587475974760747617476274763747647476574766747677476874769747707477174772747737477474775747767477774778747797478074781747827478374784747857478674787747887478974790747917479274793747947479574796747977479874799748007480174802748037480474805748067480774808748097481074811748127481374814748157481674817748187481974820748217482274823748247482574826748277482874829748307483174832748337483474835748367483774838748397484074841748427484374844748457484674847748487484974850748517485274853748547485574856748577485874859748607486174862748637486474865748667486774868748697487074871748727487374874748757487674877748787487974880748817488274883748847488574886748877488874889748907489174892748937489474895748967489774898748997490074901749027490374904749057490674907749087490974910749117491274913749147491574916749177491874919749207492174922749237492474925749267492774928749297493074931749327493374934749357493674937749387493974940749417494274943749447494574946749477494874949749507495174952749537495474955749567495774958749597496074961749627496374964749657496674967749687496974970749717497274973749747497574976749777497874979749807498174982749837498474985749867498774988749897499074991749927499374994749957499674997749987499975000750017500275003750047500575006750077500875009750107501175012750137501475015750167501775018750197502075021750227502375024750257502675027750287502975030750317503275033750347503575036750377503875039750407504175042750437504475045750467504775048750497505075051750527505375054750557505675057750587505975060750617506275063750647506575066750677506875069750707507175072750737507475075750767507775078750797508075081750827508375084750857508675087750887508975090750917509275093750947509575096750977509875099751007510175102751037510475105751067510775108751097511075111751127511375114751157511675117751187511975120751217512275123751247512575126751277512875129751307513175132751337513475135751367513775138751397514075141751427514375144751457514675147751487514975150751517515275153751547515575156751577515875159751607516175162751637516475165751667516775168751697517075171751727517375174751757517675177751787517975180751817518275183751847518575186751877518875189751907519175192751937519475195751967519775198751997520075201752027520375204752057520675207752087520975210752117521275213752147521575216752177521875219752207522175222752237522475225752267522775228752297523075231752327523375234752357523675237752387523975240752417524275243752447524575246752477524875249752507525175252752537525475255752567525775258752597526075261752627526375264752657526675267752687526975270752717527275273752747527575276752777527875279752807528175282752837528475285752867528775288752897529075291752927529375294752957529675297752987529975300753017530275303753047530575306753077530875309753107531175312753137531475315753167531775318753197532075321753227532375324753257532675327753287532975330753317533275333753347533575336753377533875339753407534175342753437534475345753467534775348753497535075351753527535375354753557535675357753587535975360753617536275363753647536575366753677536875369753707537175372753737537475375753767537775378753797538075381753827538375384753857538675387753887538975390753917539275393753947539575396753977539875399754007540175402754037540475405754067540775408754097541075411754127541375414754157541675417754187541975420754217542275423754247542575426754277542875429754307543175432754337543475435754367543775438754397544075441754427544375444754457544675447754487544975450754517545275453754547545575456754577545875459754607546175462754637546475465754667546775468754697547075471754727547375474754757547675477754787547975480754817548275483754847548575486754877548875489754907549175492754937549475495754967549775498754997550075501755027550375504755057550675507755087550975510755117551275513755147551575516755177551875519755207552175522755237552475525755267552775528755297553075531755327553375534755357553675537755387553975540755417554275543755447554575546755477554875549755507555175552755537555475555755567555775558755597556075561755627556375564755657556675567755687556975570755717557275573755747557575576755777557875579755807558175582755837558475585755867558775588755897559075591755927559375594755957559675597755987559975600756017560275603756047560575606756077560875609756107561175612756137561475615756167561775618756197562075621756227562375624756257562675627756287562975630756317563275633756347563575636756377563875639756407564175642756437564475645756467564775648756497565075651756527565375654756557565675657756587565975660756617566275663756647566575666756677566875669756707567175672756737567475675756767567775678756797568075681756827568375684756857568675687756887568975690756917569275693756947569575696756977569875699757007570175702757037570475705757067570775708757097571075711757127571375714757157571675717757187571975720757217572275723757247572575726757277572875729757307573175732757337573475735757367573775738757397574075741757427574375744757457574675747757487574975750757517575275753757547575575756757577575875759757607576175762757637576475765757667576775768757697577075771757727577375774757757577675777757787577975780757817578275783757847578575786757877578875789757907579175792757937579475795757967579775798757997580075801758027580375804758057580675807758087580975810758117581275813758147581575816758177581875819758207582175822758237582475825758267582775828758297583075831758327583375834758357583675837758387583975840758417584275843758447584575846758477584875849758507585175852758537585475855758567585775858758597586075861758627586375864758657586675867758687586975870758717587275873758747587575876758777587875879758807588175882758837588475885758867588775888758897589075891758927589375894758957589675897758987589975900759017590275903759047590575906759077590875909759107591175912759137591475915759167591775918759197592075921759227592375924759257592675927759287592975930759317593275933759347593575936759377593875939759407594175942759437594475945759467594775948759497595075951759527595375954759557595675957759587595975960759617596275963759647596575966759677596875969759707597175972759737597475975759767597775978759797598075981759827598375984759857598675987759887598975990759917599275993759947599575996759977599875999760007600176002760037600476005760067600776008760097601076011760127601376014760157601676017760187601976020760217602276023760247602576026760277602876029760307603176032760337603476035760367603776038760397604076041760427604376044760457604676047760487604976050760517605276053760547605576056760577605876059760607606176062760637606476065760667606776068760697607076071760727607376074760757607676077760787607976080760817608276083760847608576086760877608876089760907609176092760937609476095760967609776098760997610076101761027610376104761057610676107761087610976110761117611276113761147611576116761177611876119761207612176122761237612476125761267612776128761297613076131761327613376134761357613676137761387613976140761417614276143761447614576146761477614876149761507615176152761537615476155761567615776158761597616076161761627616376164761657616676167761687616976170761717617276173761747617576176761777617876179761807618176182761837618476185761867618776188761897619076191761927619376194761957619676197761987619976200762017620276203762047620576206762077620876209762107621176212762137621476215762167621776218762197622076221762227622376224762257622676227762287622976230762317623276233762347623576236762377623876239762407624176242762437624476245762467624776248762497625076251762527625376254762557625676257762587625976260762617626276263762647626576266762677626876269762707627176272762737627476275762767627776278762797628076281762827628376284762857628676287762887628976290762917629276293762947629576296762977629876299763007630176302763037630476305763067630776308763097631076311763127631376314763157631676317763187631976320763217632276323763247632576326763277632876329763307633176332763337633476335763367633776338763397634076341763427634376344763457634676347763487634976350763517635276353763547635576356763577635876359763607636176362763637636476365763667636776368763697637076371763727637376374763757637676377763787637976380763817638276383763847638576386763877638876389763907639176392763937639476395763967639776398763997640076401764027640376404764057640676407764087640976410764117641276413764147641576416764177641876419764207642176422764237642476425764267642776428764297643076431764327643376434764357643676437764387643976440764417644276443764447644576446764477644876449764507645176452764537645476455764567645776458764597646076461764627646376464764657646676467764687646976470764717647276473764747647576476764777647876479764807648176482764837648476485764867648776488764897649076491764927649376494764957649676497764987649976500765017650276503765047650576506765077650876509765107651176512765137651476515765167651776518765197652076521765227652376524765257652676527765287652976530765317653276533765347653576536765377653876539765407654176542765437654476545765467654776548765497655076551765527655376554765557655676557765587655976560765617656276563765647656576566765677656876569765707657176572765737657476575765767657776578765797658076581765827658376584765857658676587765887658976590765917659276593765947659576596765977659876599766007660176602766037660476605766067660776608766097661076611766127661376614766157661676617766187661976620766217662276623766247662576626766277662876629766307663176632766337663476635766367663776638766397664076641766427664376644766457664676647766487664976650766517665276653766547665576656766577665876659766607666176662766637666476665766667666776668766697667076671766727667376674766757667676677766787667976680766817668276683766847668576686766877668876689766907669176692766937669476695766967669776698766997670076701767027670376704767057670676707767087670976710767117671276713767147671576716767177671876719767207672176722767237672476725767267672776728767297673076731767327673376734767357673676737767387673976740767417674276743767447674576746767477674876749767507675176752767537675476755767567675776758767597676076761767627676376764767657676676767767687676976770767717677276773767747677576776767777677876779767807678176782767837678476785767867678776788767897679076791767927679376794767957679676797767987679976800768017680276803768047680576806768077680876809768107681176812768137681476815768167681776818768197682076821768227682376824768257682676827768287682976830768317683276833768347683576836768377683876839768407684176842768437684476845768467684776848768497685076851768527685376854768557685676857768587685976860768617686276863768647686576866768677686876869768707687176872768737687476875768767687776878768797688076881768827688376884768857688676887768887688976890768917689276893768947689576896768977689876899769007690176902769037690476905769067690776908769097691076911769127691376914769157691676917769187691976920769217692276923769247692576926769277692876929769307693176932769337693476935769367693776938769397694076941769427694376944769457694676947769487694976950769517695276953769547695576956769577695876959769607696176962769637696476965769667696776968769697697076971769727697376974769757697676977769787697976980769817698276983769847698576986769877698876989769907699176992769937699476995769967699776998769997700077001770027700377004770057700677007770087700977010770117701277013770147701577016770177701877019770207702177022770237702477025770267702777028770297703077031770327703377034770357703677037770387703977040770417704277043770447704577046770477704877049770507705177052770537705477055770567705777058770597706077061770627706377064770657706677067770687706977070770717707277073770747707577076770777707877079770807708177082770837708477085770867708777088770897709077091770927709377094770957709677097770987709977100771017710277103771047710577106771077710877109771107711177112771137711477115771167711777118771197712077121771227712377124771257712677127771287712977130771317713277133771347713577136771377713877139771407714177142771437714477145771467714777148771497715077151771527715377154771557715677157771587715977160771617716277163771647716577166771677716877169771707717177172771737717477175771767717777178771797718077181771827718377184771857718677187771887718977190771917719277193771947719577196771977719877199772007720177202772037720477205772067720777208772097721077211772127721377214772157721677217772187721977220772217722277223772247722577226772277722877229772307723177232772337723477235772367723777238772397724077241772427724377244772457724677247772487724977250772517725277253772547725577256772577725877259772607726177262772637726477265772667726777268772697727077271772727727377274772757727677277772787727977280772817728277283772847728577286772877728877289772907729177292772937729477295772967729777298772997730077301773027730377304773057730677307773087730977310773117731277313773147731577316773177731877319773207732177322773237732477325773267732777328773297733077331773327733377334773357733677337773387733977340773417734277343773447734577346773477734877349773507735177352773537735477355773567735777358773597736077361773627736377364773657736677367773687736977370773717737277373773747737577376773777737877379773807738177382773837738477385773867738777388773897739077391773927739377394773957739677397773987739977400774017740277403774047740577406774077740877409774107741177412774137741477415774167741777418774197742077421774227742377424774257742677427774287742977430774317743277433774347743577436774377743877439774407744177442774437744477445774467744777448774497745077451774527745377454774557745677457774587745977460774617746277463774647746577466774677746877469774707747177472774737747477475774767747777478774797748077481774827748377484774857748677487774887748977490774917749277493774947749577496774977749877499775007750177502775037750477505775067750777508775097751077511775127751377514775157751677517775187751977520775217752277523775247752577526775277752877529775307753177532775337753477535775367753777538775397754077541775427754377544775457754677547775487754977550775517755277553775547755577556775577755877559775607756177562775637756477565775667756777568775697757077571775727757377574775757757677577775787757977580775817758277583775847758577586775877758877589775907759177592775937759477595775967759777598775997760077601776027760377604776057760677607776087760977610776117761277613776147761577616776177761877619776207762177622776237762477625776267762777628776297763077631776327763377634776357763677637776387763977640776417764277643776447764577646776477764877649776507765177652776537765477655776567765777658776597766077661776627766377664776657766677667776687766977670776717767277673776747767577676776777767877679776807768177682776837768477685776867768777688776897769077691776927769377694776957769677697776987769977700777017770277703777047770577706777077770877709777107771177712777137771477715777167771777718777197772077721777227772377724777257772677727777287772977730777317773277733777347773577736777377773877739777407774177742777437774477745777467774777748777497775077751777527775377754777557775677757777587775977760777617776277763777647776577766777677776877769777707777177772777737777477775777767777777778777797778077781777827778377784777857778677787777887778977790777917779277793777947779577796777977779877799778007780177802778037780477805778067780777808778097781077811778127781377814778157781677817778187781977820778217782277823778247782577826778277782877829778307783177832778337783477835778367783777838778397784077841778427784377844778457784677847778487784977850778517785277853778547785577856778577785877859778607786177862778637786477865778667786777868778697787077871778727787377874778757787677877778787787977880778817788277883778847788577886778877788877889778907789177892778937789477895778967789777898778997790077901779027790377904779057790677907779087790977910779117791277913779147791577916779177791877919779207792177922779237792477925779267792777928779297793077931779327793377934779357793677937779387793977940779417794277943779447794577946779477794877949779507795177952779537795477955779567795777958779597796077961779627796377964779657796677967779687796977970779717797277973779747797577976779777797877979779807798177982779837798477985779867798777988779897799077991779927799377994779957799677997779987799978000780017800278003780047800578006780077800878009780107801178012780137801478015780167801778018780197802078021780227802378024780257802678027780287802978030780317803278033780347803578036780377803878039780407804178042780437804478045780467804778048780497805078051780527805378054780557805678057780587805978060780617806278063780647806578066780677806878069780707807178072780737807478075780767807778078780797808078081780827808378084780857808678087780887808978090780917809278093780947809578096780977809878099781007810178102781037810478105781067810778108781097811078111781127811378114781157811678117781187811978120781217812278123781247812578126781277812878129781307813178132781337813478135781367813778138781397814078141781427814378144781457814678147781487814978150781517815278153781547815578156781577815878159781607816178162781637816478165781667816778168781697817078171781727817378174781757817678177781787817978180781817818278183781847818578186781877818878189781907819178192781937819478195781967819778198781997820078201782027820378204782057820678207782087820978210782117821278213782147821578216782177821878219782207822178222782237822478225782267822778228782297823078231782327823378234782357823678237782387823978240782417824278243782447824578246782477824878249782507825178252782537825478255782567825778258782597826078261782627826378264782657826678267782687826978270782717827278273782747827578276782777827878279782807828178282782837828478285782867828778288782897829078291782927829378294782957829678297782987829978300783017830278303783047830578306783077830878309783107831178312783137831478315783167831778318783197832078321783227832378324783257832678327783287832978330783317833278333783347833578336783377833878339783407834178342783437834478345783467834778348783497835078351783527835378354783557835678357783587835978360783617836278363783647836578366783677836878369783707837178372783737837478375783767837778378783797838078381783827838378384783857838678387783887838978390783917839278393783947839578396783977839878399784007840178402784037840478405784067840778408784097841078411784127841378414784157841678417784187841978420784217842278423784247842578426784277842878429784307843178432784337843478435784367843778438784397844078441784427844378444784457844678447784487844978450784517845278453784547845578456784577845878459784607846178462784637846478465784667846778468784697847078471784727847378474784757847678477784787847978480784817848278483784847848578486784877848878489784907849178492784937849478495784967849778498784997850078501785027850378504785057850678507785087850978510785117851278513785147851578516785177851878519785207852178522785237852478525785267852778528785297853078531785327853378534785357853678537785387853978540785417854278543785447854578546785477854878549785507855178552785537855478555785567855778558785597856078561785627856378564785657856678567785687856978570785717857278573785747857578576785777857878579785807858178582785837858478585785867858778588785897859078591785927859378594785957859678597785987859978600786017860278603786047860578606786077860878609786107861178612786137861478615786167861778618786197862078621786227862378624786257862678627786287862978630786317863278633786347863578636786377863878639786407864178642786437864478645786467864778648786497865078651786527865378654786557865678657786587865978660786617866278663786647866578666786677866878669786707867178672786737867478675786767867778678786797868078681786827868378684786857868678687786887868978690786917869278693786947869578696786977869878699787007870178702787037870478705787067870778708787097871078711787127871378714787157871678717787187871978720787217872278723787247872578726787277872878729787307873178732787337873478735787367873778738787397874078741787427874378744787457874678747787487874978750787517875278753787547875578756787577875878759787607876178762787637876478765787667876778768787697877078771787727877378774787757877678777787787877978780787817878278783787847878578786787877878878789787907879178792787937879478795787967879778798787997880078801788027880378804788057880678807788087880978810788117881278813788147881578816788177881878819788207882178822788237882478825788267882778828788297883078831788327883378834788357883678837788387883978840788417884278843788447884578846788477884878849788507885178852788537885478855788567885778858788597886078861788627886378864788657886678867788687886978870788717887278873788747887578876788777887878879788807888178882788837888478885788867888778888788897889078891788927889378894788957889678897788987889978900789017890278903789047890578906789077890878909789107891178912789137891478915789167891778918789197892078921789227892378924789257892678927789287892978930789317893278933789347893578936789377893878939789407894178942789437894478945789467894778948789497895078951789527895378954789557895678957789587895978960789617896278963789647896578966789677896878969789707897178972789737897478975789767897778978789797898078981789827898378984789857898678987789887898978990789917899278993789947899578996789977899878999790007900179002790037900479005790067900779008790097901079011790127901379014790157901679017790187901979020790217902279023790247902579026790277902879029790307903179032790337903479035790367903779038790397904079041790427904379044790457904679047790487904979050790517905279053790547905579056790577905879059790607906179062790637906479065790667906779068790697907079071790727907379074790757907679077790787907979080790817908279083790847908579086790877908879089790907909179092790937909479095790967909779098790997910079101791027910379104791057910679107791087910979110791117911279113791147911579116791177911879119791207912179122791237912479125791267912779128791297913079131791327913379134791357913679137791387913979140791417914279143791447914579146791477914879149791507915179152791537915479155791567915779158791597916079161791627916379164791657916679167791687916979170791717917279173791747917579176791777917879179791807918179182791837918479185791867918779188791897919079191791927919379194791957919679197791987919979200792017920279203792047920579206792077920879209792107921179212792137921479215792167921779218792197922079221792227922379224792257922679227792287922979230792317923279233792347923579236792377923879239792407924179242792437924479245792467924779248792497925079251792527925379254792557925679257792587925979260792617926279263792647926579266792677926879269792707927179272792737927479275792767927779278792797928079281792827928379284792857928679287792887928979290792917929279293792947929579296792977929879299793007930179302793037930479305793067930779308793097931079311793127931379314793157931679317793187931979320793217932279323793247932579326793277932879329793307933179332793337933479335793367933779338793397934079341793427934379344793457934679347793487934979350793517935279353793547935579356793577935879359793607936179362793637936479365793667936779368793697937079371793727937379374793757937679377793787937979380793817938279383793847938579386793877938879389793907939179392793937939479395793967939779398793997940079401794027940379404794057940679407794087940979410794117941279413794147941579416794177941879419794207942179422794237942479425794267942779428794297943079431794327943379434794357943679437794387943979440794417944279443794447944579446794477944879449794507945179452794537945479455794567945779458794597946079461794627946379464794657946679467794687946979470794717947279473794747947579476794777947879479794807948179482794837948479485794867948779488794897949079491794927949379494794957949679497794987949979500795017950279503795047950579506795077950879509795107951179512795137951479515795167951779518795197952079521795227952379524795257952679527795287952979530795317953279533795347953579536795377953879539795407954179542795437954479545795467954779548795497955079551795527955379554795557955679557795587955979560795617956279563795647956579566795677956879569795707957179572795737957479575795767957779578795797958079581795827958379584795857958679587795887958979590795917959279593795947959579596795977959879599796007960179602796037960479605796067960779608796097961079611796127961379614796157961679617796187961979620796217962279623796247962579626796277962879629796307963179632796337963479635796367963779638796397964079641796427964379644796457964679647796487964979650796517965279653796547965579656796577965879659796607966179662796637966479665796667966779668796697967079671796727967379674796757967679677796787967979680796817968279683796847968579686796877968879689796907969179692796937969479695796967969779698796997970079701797027970379704797057970679707797087970979710797117971279713797147971579716797177971879719797207972179722797237972479725797267972779728797297973079731797327973379734797357973679737797387973979740797417974279743797447974579746797477974879749797507975179752797537975479755797567975779758797597976079761797627976379764797657976679767797687976979770797717977279773797747977579776797777977879779797807978179782797837978479785797867978779788797897979079791797927979379794797957979679797797987979979800798017980279803798047980579806798077980879809798107981179812798137981479815798167981779818798197982079821798227982379824798257982679827798287982979830798317983279833798347983579836798377983879839798407984179842798437984479845798467984779848798497985079851798527985379854798557985679857798587985979860798617986279863798647986579866798677986879869798707987179872798737987479875798767987779878798797988079881798827988379884798857988679887798887988979890798917989279893798947989579896798977989879899799007990179902799037990479905799067990779908799097991079911799127991379914799157991679917799187991979920799217992279923799247992579926799277992879929799307993179932799337993479935799367993779938799397994079941799427994379944799457994679947799487994979950799517995279953799547995579956799577995879959799607996179962799637996479965799667996779968799697997079971799727997379974799757997679977799787997979980799817998279983799847998579986799877998879989799907999179992799937999479995799967999779998799998000080001800028000380004800058000680007800088000980010800118001280013800148001580016800178001880019800208002180022800238002480025800268002780028800298003080031800328003380034800358003680037800388003980040800418004280043800448004580046800478004880049800508005180052800538005480055800568005780058800598006080061800628006380064800658006680067800688006980070800718007280073800748007580076800778007880079800808008180082800838008480085800868008780088800898009080091800928009380094800958009680097800988009980100801018010280103801048010580106801078010880109801108011180112801138011480115801168011780118801198012080121801228012380124801258012680127801288012980130801318013280133801348013580136801378013880139801408014180142801438014480145801468014780148801498015080151801528015380154801558015680157801588015980160801618016280163801648016580166801678016880169801708017180172801738017480175801768017780178801798018080181801828018380184801858018680187801888018980190801918019280193801948019580196801978019880199802008020180202802038020480205802068020780208802098021080211802128021380214802158021680217802188021980220802218022280223802248022580226802278022880229802308023180232802338023480235802368023780238802398024080241802428024380244802458024680247802488024980250802518025280253802548025580256802578025880259802608026180262802638026480265802668026780268802698027080271802728027380274802758027680277802788027980280802818028280283802848028580286802878028880289802908029180292802938029480295802968029780298802998030080301803028030380304803058030680307803088030980310803118031280313803148031580316803178031880319803208032180322803238032480325803268032780328803298033080331803328033380334803358033680337803388033980340803418034280343803448034580346803478034880349803508035180352803538035480355803568035780358803598036080361803628036380364803658036680367803688036980370803718037280373803748037580376803778037880379803808038180382803838038480385803868038780388803898039080391803928039380394803958039680397803988039980400804018040280403804048040580406804078040880409804108041180412804138041480415804168041780418804198042080421804228042380424804258042680427804288042980430804318043280433804348043580436804378043880439804408044180442804438044480445804468044780448804498045080451804528045380454804558045680457804588045980460804618046280463804648046580466804678046880469804708047180472804738047480475804768047780478804798048080481804828048380484804858048680487804888048980490804918049280493804948049580496804978049880499805008050180502805038050480505805068050780508805098051080511805128051380514805158051680517805188051980520805218052280523805248052580526805278052880529805308053180532805338053480535805368053780538805398054080541805428054380544805458054680547805488054980550805518055280553805548055580556805578055880559805608056180562805638056480565805668056780568805698057080571805728057380574805758057680577805788057980580805818058280583805848058580586805878058880589805908059180592805938059480595805968059780598805998060080601806028060380604806058060680607806088060980610806118061280613806148061580616806178061880619806208062180622806238062480625806268062780628806298063080631806328063380634806358063680637806388063980640806418064280643806448064580646806478064880649806508065180652806538065480655806568065780658806598066080661806628066380664806658066680667806688066980670806718067280673806748067580676806778067880679806808068180682806838068480685806868068780688806898069080691806928069380694806958069680697806988069980700807018070280703807048070580706807078070880709807108071180712807138071480715807168071780718807198072080721807228072380724807258072680727807288072980730807318073280733807348073580736807378073880739807408074180742807438074480745807468074780748807498075080751807528075380754807558075680757807588075980760807618076280763807648076580766807678076880769807708077180772807738077480775807768077780778807798078080781807828078380784807858078680787807888078980790807918079280793807948079580796807978079880799808008080180802808038080480805808068080780808808098081080811808128081380814808158081680817808188081980820808218082280823808248082580826808278082880829808308083180832808338083480835808368083780838808398084080841808428084380844808458084680847808488084980850808518085280853808548085580856808578085880859808608086180862808638086480865808668086780868808698087080871808728087380874808758087680877808788087980880808818088280883808848088580886808878088880889808908089180892808938089480895808968089780898808998090080901809028090380904809058090680907809088090980910809118091280913809148091580916809178091880919809208092180922809238092480925809268092780928809298093080931809328093380934809358093680937809388093980940809418094280943809448094580946809478094880949809508095180952809538095480955809568095780958809598096080961809628096380964809658096680967809688096980970809718097280973809748097580976809778097880979809808098180982809838098480985809868098780988809898099080991809928099380994809958099680997809988099981000810018100281003810048100581006810078100881009810108101181012810138101481015810168101781018810198102081021810228102381024810258102681027810288102981030810318103281033810348103581036810378103881039810408104181042810438104481045810468104781048810498105081051810528105381054810558105681057810588105981060810618106281063810648106581066810678106881069810708107181072810738107481075810768107781078810798108081081810828108381084810858108681087810888108981090810918109281093810948109581096810978109881099811008110181102811038110481105811068110781108811098111081111811128111381114811158111681117811188111981120811218112281123811248112581126811278112881129811308113181132811338113481135811368113781138811398114081141811428114381144811458114681147811488114981150811518115281153811548115581156811578115881159811608116181162811638116481165811668116781168811698117081171811728117381174811758117681177811788117981180811818118281183811848118581186811878118881189811908119181192811938119481195811968119781198811998120081201812028120381204812058120681207812088120981210812118121281213812148121581216812178121881219812208122181222812238122481225812268122781228812298123081231812328123381234812358123681237812388123981240812418124281243812448124581246812478124881249812508125181252812538125481255812568125781258812598126081261812628126381264812658126681267812688126981270812718127281273812748127581276812778127881279812808128181282812838128481285812868128781288812898129081291812928129381294812958129681297812988129981300813018130281303813048130581306813078130881309813108131181312813138131481315813168131781318813198132081321813228132381324813258132681327813288132981330813318133281333813348133581336813378133881339813408134181342813438134481345813468134781348813498135081351813528135381354813558135681357813588135981360813618136281363813648136581366813678136881369813708137181372813738137481375813768137781378813798138081381813828138381384813858138681387813888138981390813918139281393813948139581396813978139881399814008140181402814038140481405814068140781408814098141081411814128141381414814158141681417814188141981420814218142281423814248142581426814278142881429814308143181432814338143481435814368143781438814398144081441814428144381444814458144681447814488144981450814518145281453814548145581456814578145881459814608146181462814638146481465814668146781468814698147081471814728147381474814758147681477814788147981480814818148281483814848148581486814878148881489814908149181492814938149481495814968149781498814998150081501815028150381504815058150681507815088150981510815118151281513815148151581516815178151881519815208152181522815238152481525815268152781528815298153081531815328153381534815358153681537815388153981540815418154281543815448154581546815478154881549815508155181552815538155481555815568155781558815598156081561815628156381564815658156681567815688156981570815718157281573815748157581576815778157881579815808158181582815838158481585815868158781588815898159081591815928159381594815958159681597815988159981600816018160281603816048160581606816078160881609816108161181612816138161481615816168161781618816198162081621816228162381624816258162681627816288162981630816318163281633816348163581636816378163881639816408164181642816438164481645816468164781648816498165081651816528165381654816558165681657816588165981660816618166281663816648166581666816678166881669816708167181672816738167481675816768167781678816798168081681816828168381684816858168681687816888168981690816918169281693816948169581696816978169881699817008170181702817038170481705817068170781708817098171081711817128171381714817158171681717817188171981720817218172281723817248172581726817278172881729817308173181732817338173481735817368173781738817398174081741817428174381744817458174681747817488174981750817518175281753817548175581756817578175881759817608176181762817638176481765817668176781768817698177081771817728177381774817758177681777817788177981780817818178281783817848178581786817878178881789817908179181792817938179481795817968179781798817998180081801818028180381804818058180681807818088180981810818118181281813818148181581816818178181881819818208182181822818238182481825818268182781828818298183081831818328183381834818358183681837818388183981840818418184281843818448184581846818478184881849818508185181852818538185481855818568185781858818598186081861818628186381864818658186681867818688186981870818718187281873818748187581876818778187881879818808188181882818838188481885818868188781888818898189081891818928189381894818958189681897818988189981900819018190281903819048190581906819078190881909819108191181912819138191481915819168191781918819198192081921819228192381924819258192681927819288192981930819318193281933819348193581936819378193881939819408194181942819438194481945819468194781948819498195081951819528195381954819558195681957819588195981960819618196281963819648196581966819678196881969819708197181972819738197481975819768197781978819798198081981819828198381984819858198681987819888198981990819918199281993819948199581996819978199881999820008200182002820038200482005820068200782008820098201082011820128201382014820158201682017820188201982020820218202282023820248202582026820278202882029820308203182032820338203482035820368203782038820398204082041820428204382044820458204682047820488204982050820518205282053820548205582056820578205882059820608206182062820638206482065820668206782068820698207082071820728207382074820758207682077820788207982080820818208282083820848208582086820878208882089820908209182092820938209482095820968209782098820998210082101821028210382104821058210682107821088210982110821118211282113821148211582116821178211882119821208212182122821238212482125821268212782128821298213082131821328213382134821358213682137821388213982140821418214282143821448214582146821478214882149821508215182152821538215482155821568215782158821598216082161821628216382164821658216682167821688216982170821718217282173821748217582176821778217882179821808218182182821838218482185821868218782188821898219082191821928219382194821958219682197821988219982200822018220282203822048220582206822078220882209822108221182212822138221482215822168221782218822198222082221822228222382224822258222682227822288222982230822318223282233822348223582236822378223882239822408224182242822438224482245822468224782248822498225082251822528225382254822558225682257822588225982260822618226282263822648226582266822678226882269822708227182272822738227482275822768227782278822798228082281822828228382284822858228682287822888228982290822918229282293822948229582296822978229882299823008230182302823038230482305823068230782308823098231082311823128231382314823158231682317823188231982320823218232282323823248232582326823278232882329823308233182332823338233482335823368233782338823398234082341823428234382344823458234682347823488234982350823518235282353823548235582356823578235882359823608236182362823638236482365823668236782368823698237082371823728237382374823758237682377823788237982380823818238282383823848238582386823878238882389823908239182392823938239482395823968239782398823998240082401824028240382404824058240682407824088240982410824118241282413824148241582416824178241882419824208242182422824238242482425824268242782428824298243082431824328243382434824358243682437824388243982440824418244282443824448244582446824478244882449824508245182452824538245482455824568245782458824598246082461824628246382464824658246682467824688246982470824718247282473824748247582476824778247882479824808248182482824838248482485824868248782488824898249082491824928249382494824958249682497824988249982500825018250282503825048250582506825078250882509825108251182512825138251482515825168251782518825198252082521825228252382524825258252682527825288252982530825318253282533825348253582536825378253882539825408254182542825438254482545825468254782548825498255082551825528255382554825558255682557825588255982560825618256282563825648256582566825678256882569825708257182572825738257482575825768257782578825798258082581825828258382584825858258682587825888258982590825918259282593825948259582596825978259882599826008260182602826038260482605826068260782608826098261082611826128261382614826158261682617826188261982620826218262282623826248262582626826278262882629826308263182632826338263482635826368263782638826398264082641826428264382644826458264682647826488264982650826518265282653826548265582656826578265882659826608266182662826638266482665826668266782668826698267082671826728267382674826758267682677826788267982680826818268282683826848268582686826878268882689826908269182692826938269482695826968269782698826998270082701827028270382704827058270682707827088270982710827118271282713827148271582716827178271882719827208272182722827238272482725827268272782728827298273082731827328273382734827358273682737827388273982740827418274282743827448274582746827478274882749827508275182752827538275482755827568275782758827598276082761827628276382764827658276682767827688276982770827718277282773827748277582776827778277882779827808278182782827838278482785827868278782788827898279082791827928279382794827958279682797827988279982800828018280282803828048280582806828078280882809828108281182812828138281482815828168281782818828198282082821828228282382824828258282682827828288282982830828318283282833828348283582836828378283882839828408284182842828438284482845828468284782848828498285082851828528285382854828558285682857828588285982860828618286282863828648286582866828678286882869828708287182872828738287482875828768287782878828798288082881828828288382884828858288682887828888288982890828918289282893828948289582896828978289882899829008290182902829038290482905829068290782908829098291082911829128291382914829158291682917829188291982920829218292282923829248292582926829278292882929829308293182932829338293482935829368293782938829398294082941829428294382944829458294682947829488294982950829518295282953829548295582956829578295882959829608296182962829638296482965829668296782968829698297082971829728297382974829758297682977829788297982980829818298282983829848298582986829878298882989829908299182992829938299482995829968299782998829998300083001830028300383004830058300683007830088300983010830118301283013830148301583016830178301883019830208302183022830238302483025830268302783028830298303083031830328303383034830358303683037830388303983040830418304283043830448304583046830478304883049830508305183052830538305483055830568305783058830598306083061830628306383064830658306683067830688306983070830718307283073830748307583076830778307883079830808308183082830838308483085830868308783088830898309083091830928309383094830958309683097830988309983100831018310283103831048310583106831078310883109831108311183112831138311483115831168311783118831198312083121831228312383124831258312683127831288312983130831318313283133831348313583136831378313883139831408314183142831438314483145831468314783148831498315083151831528315383154831558315683157831588315983160831618316283163831648316583166831678316883169831708317183172831738317483175831768317783178831798318083181831828318383184831858318683187831888318983190831918319283193831948319583196831978319883199832008320183202832038320483205832068320783208832098321083211832128321383214832158321683217832188321983220832218322283223832248322583226832278322883229832308323183232832338323483235832368323783238832398324083241832428324383244832458324683247832488324983250832518325283253832548325583256832578325883259832608326183262832638326483265832668326783268832698327083271832728327383274832758327683277832788327983280832818328283283832848328583286832878328883289832908329183292832938329483295832968329783298832998330083301833028330383304833058330683307833088330983310833118331283313833148331583316833178331883319833208332183322833238332483325833268332783328833298333083331833328333383334833358333683337833388333983340833418334283343833448334583346833478334883349833508335183352833538335483355833568335783358833598336083361833628336383364833658336683367833688336983370833718337283373833748337583376833778337883379833808338183382833838338483385833868338783388833898339083391833928339383394833958339683397833988339983400834018340283403834048340583406834078340883409834108341183412834138341483415834168341783418834198342083421834228342383424834258342683427834288342983430834318343283433834348343583436834378343883439834408344183442834438344483445834468344783448834498345083451834528345383454834558345683457834588345983460834618346283463834648346583466834678346883469834708347183472834738347483475834768347783478834798348083481834828348383484834858348683487834888348983490834918349283493834948349583496834978349883499835008350183502835038350483505835068350783508835098351083511835128351383514835158351683517835188351983520835218352283523835248352583526835278352883529835308353183532835338353483535835368353783538835398354083541835428354383544835458354683547835488354983550835518355283553835548355583556835578355883559835608356183562835638356483565835668356783568835698357083571835728357383574835758357683577835788357983580835818358283583835848358583586835878358883589835908359183592835938359483595835968359783598835998360083601836028360383604836058360683607836088360983610836118361283613836148361583616836178361883619836208362183622836238362483625836268362783628836298363083631836328363383634836358363683637836388363983640836418364283643836448364583646836478364883649836508365183652836538365483655836568365783658836598366083661836628366383664836658366683667836688366983670836718367283673836748367583676836778367883679836808368183682836838368483685836868368783688836898369083691836928369383694836958369683697836988369983700837018370283703837048370583706837078370883709837108371183712837138371483715837168371783718837198372083721837228372383724837258372683727837288372983730837318373283733837348373583736837378373883739837408374183742837438374483745837468374783748837498375083751837528375383754837558375683757837588375983760837618376283763837648376583766837678376883769837708377183772837738377483775837768377783778837798378083781837828378383784837858378683787837888378983790837918379283793837948379583796837978379883799838008380183802838038380483805838068380783808838098381083811838128381383814838158381683817838188381983820838218382283823838248382583826838278382883829838308383183832838338383483835838368383783838838398384083841838428384383844838458384683847838488384983850838518385283853838548385583856838578385883859838608386183862838638386483865838668386783868838698387083871838728387383874838758387683877838788387983880838818388283883838848388583886838878388883889838908389183892838938389483895838968389783898838998390083901839028390383904839058390683907839088390983910839118391283913839148391583916839178391883919839208392183922839238392483925839268392783928839298393083931839328393383934839358393683937839388393983940839418394283943839448394583946839478394883949839508395183952839538395483955839568395783958839598396083961839628396383964839658396683967839688396983970839718397283973839748397583976839778397883979839808398183982839838398483985839868398783988839898399083991839928399383994839958399683997839988399984000840018400284003840048400584006840078400884009840108401184012840138401484015840168401784018840198402084021840228402384024840258402684027840288402984030840318403284033840348403584036840378403884039840408404184042840438404484045840468404784048840498405084051840528405384054840558405684057840588405984060840618406284063840648406584066840678406884069840708407184072840738407484075840768407784078840798408084081840828408384084840858408684087840888408984090840918409284093840948409584096840978409884099841008410184102841038410484105841068410784108841098411084111841128411384114841158411684117841188411984120841218412284123841248412584126841278412884129841308413184132841338413484135841368413784138841398414084141841428414384144841458414684147841488414984150841518415284153841548415584156841578415884159841608416184162841638416484165841668416784168841698417084171841728417384174841758417684177841788417984180841818418284183841848418584186841878418884189841908419184192841938419484195841968419784198841998420084201842028420384204842058420684207842088420984210842118421284213842148421584216842178421884219842208422184222842238422484225842268422784228842298423084231842328423384234842358423684237842388423984240842418424284243842448424584246842478424884249842508425184252842538425484255842568425784258842598426084261842628426384264842658426684267842688426984270842718427284273842748427584276842778427884279842808428184282842838428484285842868428784288842898429084291842928429384294842958429684297842988429984300843018430284303843048430584306843078430884309843108431184312843138431484315843168431784318843198432084321843228432384324843258432684327843288432984330843318433284333843348433584336843378433884339843408434184342843438434484345843468434784348843498435084351843528435384354843558435684357843588435984360843618436284363843648436584366843678436884369843708437184372843738437484375843768437784378843798438084381843828438384384843858438684387843888438984390843918439284393843948439584396843978439884399844008440184402844038440484405844068440784408844098441084411844128441384414844158441684417844188441984420844218442284423844248442584426844278442884429844308443184432844338443484435844368443784438844398444084441844428444384444844458444684447844488444984450844518445284453844548445584456844578445884459844608446184462844638446484465844668446784468844698447084471844728447384474844758447684477844788447984480844818448284483844848448584486844878448884489844908449184492844938449484495844968449784498844998450084501845028450384504845058450684507845088450984510845118451284513845148451584516845178451884519845208452184522845238452484525845268452784528845298453084531845328453384534845358453684537845388453984540845418454284543845448454584546845478454884549845508455184552845538455484555845568455784558845598456084561845628456384564845658456684567845688456984570845718457284573845748457584576845778457884579845808458184582845838458484585845868458784588845898459084591845928459384594845958459684597845988459984600846018460284603846048460584606846078460884609846108461184612846138461484615846168461784618846198462084621846228462384624846258462684627846288462984630846318463284633846348463584636846378463884639846408464184642846438464484645846468464784648846498465084651846528465384654846558465684657846588465984660846618466284663846648466584666846678466884669846708467184672846738467484675846768467784678846798468084681846828468384684846858468684687846888468984690846918469284693846948469584696846978469884699847008470184702847038470484705847068470784708847098471084711847128471384714847158471684717847188471984720847218472284723847248472584726847278472884729847308473184732847338473484735847368473784738847398474084741847428474384744847458474684747847488474984750847518475284753847548475584756847578475884759847608476184762847638476484765847668476784768847698477084771847728477384774847758477684777847788477984780847818478284783847848478584786847878478884789847908479184792847938479484795847968479784798847998480084801848028480384804848058480684807848088480984810848118481284813848148481584816848178481884819848208482184822848238482484825848268482784828848298483084831848328483384834848358483684837848388483984840848418484284843848448484584846848478484884849848508485184852848538485484855848568485784858848598486084861848628486384864848658486684867848688486984870848718487284873848748487584876848778487884879848808488184882848838488484885848868488784888848898489084891848928489384894848958489684897848988489984900849018490284903849048490584906849078490884909849108491184912849138491484915849168491784918849198492084921849228492384924849258492684927849288492984930849318493284933849348493584936849378493884939849408494184942849438494484945849468494784948849498495084951849528495384954849558495684957849588495984960849618496284963849648496584966849678496884969849708497184972849738497484975849768497784978849798498084981849828498384984849858498684987849888498984990849918499284993849948499584996849978499884999850008500185002850038500485005850068500785008850098501085011850128501385014850158501685017850188501985020850218502285023850248502585026850278502885029850308503185032850338503485035850368503785038850398504085041850428504385044850458504685047850488504985050850518505285053850548505585056850578505885059850608506185062850638506485065850668506785068850698507085071850728507385074850758507685077850788507985080850818508285083850848508585086850878508885089850908509185092850938509485095850968509785098850998510085101851028510385104851058510685107851088510985110851118511285113851148511585116851178511885119851208512185122851238512485125851268512785128851298513085131851328513385134851358513685137851388513985140851418514285143851448514585146851478514885149851508515185152851538515485155851568515785158851598516085161851628516385164851658516685167851688516985170851718517285173851748517585176851778517885179851808518185182851838518485185851868518785188851898519085191851928519385194851958519685197851988519985200852018520285203852048520585206852078520885209852108521185212852138521485215852168521785218852198522085221852228522385224852258522685227852288522985230852318523285233852348523585236852378523885239852408524185242852438524485245852468524785248852498525085251852528525385254852558525685257852588525985260852618526285263852648526585266852678526885269852708527185272852738527485275852768527785278852798528085281852828528385284852858528685287852888528985290852918529285293852948529585296852978529885299853008530185302853038530485305853068530785308853098531085311853128531385314853158531685317853188531985320853218532285323853248532585326853278532885329853308533185332853338533485335853368533785338853398534085341853428534385344853458534685347853488534985350853518535285353853548535585356853578535885359853608536185362853638536485365853668536785368853698537085371853728537385374853758537685377853788537985380853818538285383853848538585386853878538885389853908539185392853938539485395853968539785398853998540085401854028540385404854058540685407854088540985410854118541285413854148541585416854178541885419854208542185422854238542485425854268542785428854298543085431854328543385434854358543685437854388543985440854418544285443854448544585446854478544885449854508545185452854538545485455854568545785458854598546085461854628546385464854658546685467854688546985470854718547285473854748547585476854778547885479854808548185482854838548485485854868548785488854898549085491854928549385494854958549685497854988549985500855018550285503855048550585506855078550885509855108551185512855138551485515855168551785518855198552085521855228552385524855258552685527855288552985530855318553285533855348553585536855378553885539855408554185542855438554485545855468554785548855498555085551855528555385554855558555685557855588555985560855618556285563855648556585566855678556885569855708557185572855738557485575855768557785578855798558085581855828558385584855858558685587855888558985590855918559285593855948559585596855978559885599856008560185602856038560485605856068560785608856098561085611856128561385614856158561685617856188561985620856218562285623856248562585626856278562885629856308563185632856338563485635856368563785638856398564085641856428564385644856458564685647856488564985650856518565285653856548565585656856578565885659856608566185662856638566485665856668566785668856698567085671856728567385674856758567685677856788567985680856818568285683856848568585686856878568885689856908569185692856938569485695856968569785698856998570085701857028570385704857058570685707857088570985710857118571285713857148571585716857178571885719857208572185722857238572485725857268572785728857298573085731857328573385734857358573685737857388573985740857418574285743857448574585746857478574885749857508575185752857538575485755857568575785758857598576085761857628576385764857658576685767857688576985770857718577285773857748577585776857778577885779857808578185782857838578485785857868578785788857898579085791857928579385794857958579685797857988579985800858018580285803858048580585806858078580885809858108581185812858138581485815858168581785818858198582085821858228582385824858258582685827858288582985830858318583285833858348583585836858378583885839858408584185842858438584485845858468584785848858498585085851858528585385854858558585685857858588585985860858618586285863858648586585866858678586885869858708587185872858738587485875858768587785878858798588085881858828588385884858858588685887858888588985890858918589285893858948589585896858978589885899859008590185902859038590485905859068590785908859098591085911859128591385914859158591685917859188591985920859218592285923859248592585926859278592885929859308593185932859338593485935859368593785938859398594085941859428594385944859458594685947859488594985950859518595285953859548595585956859578595885959859608596185962859638596485965859668596785968859698597085971859728597385974859758597685977859788597985980859818598285983859848598585986859878598885989859908599185992859938599485995859968599785998859998600086001860028600386004860058600686007860088600986010860118601286013860148601586016860178601886019860208602186022860238602486025860268602786028860298603086031860328603386034860358603686037860388603986040860418604286043860448604586046860478604886049860508605186052860538605486055860568605786058860598606086061860628606386064860658606686067860688606986070860718607286073860748607586076860778607886079860808608186082860838608486085860868608786088860898609086091860928609386094860958609686097860988609986100861018610286103861048610586106861078610886109861108611186112861138611486115861168611786118861198612086121861228612386124861258612686127861288612986130861318613286133861348613586136861378613886139861408614186142861438614486145861468614786148861498615086151861528615386154861558615686157861588615986160861618616286163861648616586166861678616886169861708617186172861738617486175861768617786178861798618086181861828618386184861858618686187861888618986190861918619286193861948619586196861978619886199862008620186202862038620486205862068620786208862098621086211862128621386214862158621686217862188621986220862218622286223862248622586226862278622886229862308623186232862338623486235862368623786238862398624086241862428624386244862458624686247862488624986250862518625286253862548625586256862578625886259862608626186262862638626486265862668626786268862698627086271862728627386274862758627686277862788627986280862818628286283862848628586286862878628886289862908629186292862938629486295862968629786298862998630086301863028630386304863058630686307863088630986310863118631286313863148631586316863178631886319863208632186322863238632486325863268632786328863298633086331863328633386334863358633686337863388633986340863418634286343863448634586346863478634886349863508635186352863538635486355863568635786358863598636086361863628636386364863658636686367863688636986370863718637286373863748637586376863778637886379863808638186382863838638486385863868638786388863898639086391863928639386394863958639686397863988639986400864018640286403864048640586406864078640886409864108641186412864138641486415864168641786418864198642086421864228642386424864258642686427864288642986430864318643286433864348643586436864378643886439864408644186442864438644486445864468644786448864498645086451864528645386454864558645686457864588645986460864618646286463864648646586466864678646886469864708647186472864738647486475864768647786478864798648086481864828648386484864858648686487864888648986490864918649286493864948649586496864978649886499865008650186502865038650486505865068650786508865098651086511865128651386514865158651686517865188651986520865218652286523865248652586526865278652886529865308653186532865338653486535865368653786538865398654086541865428654386544865458654686547865488654986550865518655286553865548655586556865578655886559865608656186562865638656486565865668656786568865698657086571865728657386574865758657686577865788657986580865818658286583865848658586586865878658886589865908659186592865938659486595865968659786598865998660086601866028660386604866058660686607866088660986610866118661286613866148661586616866178661886619866208662186622866238662486625866268662786628866298663086631866328663386634866358663686637866388663986640866418664286643866448664586646866478664886649866508665186652866538665486655866568665786658866598666086661866628666386664866658666686667866688666986670866718667286673866748667586676866778667886679866808668186682866838668486685866868668786688866898669086691866928669386694866958669686697866988669986700867018670286703867048670586706867078670886709867108671186712867138671486715867168671786718867198672086721867228672386724867258672686727867288672986730867318673286733867348673586736867378673886739867408674186742867438674486745867468674786748867498675086751867528675386754867558675686757867588675986760867618676286763867648676586766867678676886769867708677186772867738677486775867768677786778867798678086781867828678386784867858678686787867888678986790867918679286793867948679586796867978679886799868008680186802868038680486805868068680786808868098681086811868128681386814868158681686817868188681986820868218682286823868248682586826868278682886829868308683186832868338683486835868368683786838868398684086841868428684386844868458684686847868488684986850868518685286853868548685586856868578685886859868608686186862868638686486865868668686786868868698687086871868728687386874868758687686877868788687986880868818688286883868848688586886868878688886889868908689186892868938689486895868968689786898868998690086901869028690386904869058690686907869088690986910869118691286913869148691586916869178691886919869208692186922869238692486925869268692786928869298693086931869328693386934869358693686937869388693986940869418694286943869448694586946869478694886949869508695186952869538695486955869568695786958869598696086961869628696386964869658696686967869688696986970869718697286973869748697586976869778697886979869808698186982869838698486985869868698786988869898699086991869928699386994869958699686997869988699987000870018700287003870048700587006870078700887009870108701187012870138701487015870168701787018870198702087021870228702387024870258702687027870288702987030870318703287033870348703587036870378703887039870408704187042870438704487045870468704787048870498705087051870528705387054870558705687057870588705987060870618706287063870648706587066870678706887069870708707187072870738707487075870768707787078870798708087081870828708387084870858708687087870888708987090870918709287093870948709587096870978709887099871008710187102871038710487105871068710787108871098711087111871128711387114871158711687117871188711987120871218712287123871248712587126871278712887129871308713187132871338713487135871368713787138871398714087141871428714387144871458714687147871488714987150871518715287153871548715587156871578715887159871608716187162871638716487165871668716787168871698717087171871728717387174871758717687177871788717987180871818718287183871848718587186871878718887189871908719187192871938719487195871968719787198871998720087201872028720387204872058720687207872088720987210872118721287213872148721587216872178721887219872208722187222872238722487225872268722787228872298723087231872328723387234872358723687237872388723987240872418724287243872448724587246872478724887249872508725187252872538725487255872568725787258872598726087261872628726387264872658726687267872688726987270872718727287273872748727587276872778727887279872808728187282872838728487285872868728787288872898729087291872928729387294872958729687297872988729987300873018730287303873048730587306873078730887309873108731187312873138731487315873168731787318873198732087321873228732387324873258732687327873288732987330873318733287333873348733587336873378733887339873408734187342873438734487345873468734787348873498735087351873528735387354873558735687357873588735987360873618736287363873648736587366873678736887369873708737187372873738737487375873768737787378873798738087381873828738387384873858738687387873888738987390873918739287393873948739587396873978739887399874008740187402874038740487405874068740787408874098741087411874128741387414874158741687417874188741987420874218742287423874248742587426874278742887429874308743187432874338743487435874368743787438874398744087441874428744387444874458744687447874488744987450874518745287453874548745587456874578745887459874608746187462874638746487465874668746787468874698747087471874728747387474874758747687477874788747987480874818748287483874848748587486874878748887489874908749187492874938749487495874968749787498874998750087501875028750387504875058750687507875088750987510875118751287513875148751587516875178751887519875208752187522875238752487525875268752787528875298753087531875328753387534875358753687537875388753987540875418754287543875448754587546875478754887549875508755187552875538755487555875568755787558875598756087561875628756387564875658756687567875688756987570875718757287573875748757587576875778757887579875808758187582875838758487585875868758787588875898759087591875928759387594875958759687597875988759987600876018760287603876048760587606876078760887609876108761187612876138761487615876168761787618876198762087621876228762387624876258762687627876288762987630876318763287633876348763587636876378763887639876408764187642876438764487645876468764787648876498765087651876528765387654876558765687657876588765987660876618766287663876648766587666876678766887669876708767187672876738767487675876768767787678876798768087681876828768387684876858768687687876888768987690876918769287693876948769587696876978769887699877008770187702877038770487705877068770787708877098771087711877128771387714877158771687717877188771987720877218772287723877248772587726877278772887729877308773187732877338773487735877368773787738877398774087741877428774387744877458774687747877488774987750877518775287753877548775587756877578775887759877608776187762877638776487765877668776787768877698777087771877728777387774877758777687777877788777987780877818778287783877848778587786877878778887789877908779187792877938779487795877968779787798877998780087801878028780387804878058780687807878088780987810878118781287813878148781587816878178781887819878208782187822878238782487825878268782787828878298783087831878328783387834878358783687837878388783987840878418784287843878448784587846878478784887849878508785187852878538785487855878568785787858878598786087861878628786387864878658786687867878688786987870878718787287873878748787587876878778787887879878808788187882878838788487885878868788787888878898789087891878928789387894878958789687897878988789987900879018790287903879048790587906879078790887909879108791187912879138791487915879168791787918879198792087921879228792387924879258792687927879288792987930879318793287933879348793587936879378793887939879408794187942879438794487945879468794787948879498795087951879528795387954879558795687957879588795987960879618796287963879648796587966879678796887969879708797187972879738797487975879768797787978879798798087981879828798387984879858798687987879888798987990879918799287993879948799587996879978799887999880008800188002880038800488005880068800788008880098801088011880128801388014880158801688017880188801988020880218802288023880248802588026880278802888029880308803188032880338803488035880368803788038880398804088041880428804388044880458804688047880488804988050880518805288053880548805588056880578805888059880608806188062880638806488065880668806788068880698807088071880728807388074880758807688077880788807988080880818808288083880848808588086880878808888089880908809188092880938809488095880968809788098880998810088101881028810388104881058810688107881088810988110881118811288113881148811588116881178811888119881208812188122881238812488125881268812788128881298813088131881328813388134881358813688137881388813988140881418814288143881448814588146881478814888149881508815188152881538815488155881568815788158881598816088161881628816388164881658816688167881688816988170881718817288173881748817588176881778817888179881808818188182881838818488185881868818788188881898819088191881928819388194881958819688197881988819988200882018820288203882048820588206882078820888209882108821188212882138821488215882168821788218882198822088221882228822388224882258822688227882288822988230882318823288233882348823588236882378823888239882408824188242882438824488245882468824788248882498825088251882528825388254882558825688257882588825988260882618826288263882648826588266882678826888269882708827188272882738827488275882768827788278882798828088281882828828388284882858828688287882888828988290882918829288293882948829588296882978829888299883008830188302883038830488305883068830788308883098831088311883128831388314883158831688317883188831988320883218832288323883248832588326883278832888329883308833188332883338833488335883368833788338883398834088341883428834388344883458834688347883488834988350883518835288353883548835588356883578835888359883608836188362883638836488365883668836788368883698837088371883728837388374883758837688377883788837988380883818838288383883848838588386883878838888389883908839188392883938839488395883968839788398883998840088401884028840388404884058840688407884088840988410884118841288413884148841588416884178841888419884208842188422884238842488425884268842788428884298843088431884328843388434884358843688437884388843988440884418844288443884448844588446884478844888449884508845188452884538845488455884568845788458884598846088461884628846388464884658846688467884688846988470884718847288473884748847588476884778847888479884808848188482884838848488485884868848788488884898849088491884928849388494884958849688497884988849988500885018850288503885048850588506885078850888509885108851188512885138851488515885168851788518885198852088521885228852388524885258852688527885288852988530885318853288533885348853588536885378853888539885408854188542885438854488545885468854788548885498855088551885528855388554885558855688557885588855988560885618856288563885648856588566885678856888569885708857188572885738857488575885768857788578885798858088581885828858388584885858858688587885888858988590885918859288593885948859588596885978859888599886008860188602886038860488605886068860788608886098861088611886128861388614886158861688617886188861988620886218862288623886248862588626886278862888629886308863188632886338863488635886368863788638886398864088641886428864388644886458864688647886488864988650886518865288653886548865588656886578865888659886608866188662886638866488665886668866788668886698867088671886728867388674886758867688677886788867988680886818868288683886848868588686886878868888689886908869188692886938869488695886968869788698886998870088701887028870388704887058870688707887088870988710887118871288713887148871588716887178871888719887208872188722887238872488725887268872788728887298873088731887328873388734887358873688737887388873988740887418874288743887448874588746887478874888749887508875188752887538875488755887568875788758887598876088761887628876388764887658876688767887688876988770887718877288773887748877588776887778877888779887808878188782887838878488785887868878788788887898879088791887928879388794887958879688797887988879988800888018880288803888048880588806888078880888809888108881188812888138881488815888168881788818888198882088821888228882388824888258882688827888288882988830888318883288833888348883588836888378883888839888408884188842888438884488845888468884788848888498885088851888528885388854888558885688857888588885988860888618886288863888648886588866888678886888869888708887188872888738887488875888768887788878888798888088881888828888388884888858888688887888888888988890888918889288893888948889588896888978889888899889008890188902889038890488905889068890788908889098891088911889128891388914889158891688917889188891988920889218892288923889248892588926889278892888929889308893188932889338893488935889368893788938889398894088941889428894388944889458894688947889488894988950889518895288953889548895588956889578895888959889608896188962889638896488965889668896788968889698897088971889728897388974889758897688977889788897988980889818898288983889848898588986889878898888989889908899188992889938899488995889968899788998889998900089001890028900389004890058900689007890088900989010890118901289013890148901589016890178901889019890208902189022890238902489025890268902789028890298903089031890328903389034890358903689037890388903989040890418904289043890448904589046890478904889049890508905189052890538905489055890568905789058890598906089061890628906389064890658906689067890688906989070890718907289073890748907589076890778907889079890808908189082890838908489085890868908789088890898909089091890928909389094890958909689097890988909989100891018910289103891048910589106891078910889109891108911189112891138911489115891168911789118891198912089121891228912389124891258912689127891288912989130891318913289133891348913589136891378913889139891408914189142891438914489145891468914789148891498915089151891528915389154891558915689157891588915989160891618916289163891648916589166891678916889169891708917189172891738917489175891768917789178891798918089181891828918389184891858918689187891888918989190891918919289193891948919589196891978919889199892008920189202892038920489205892068920789208892098921089211892128921389214892158921689217892188921989220892218922289223892248922589226892278922889229892308923189232892338923489235892368923789238892398924089241892428924389244892458924689247892488924989250892518925289253892548925589256892578925889259892608926189262892638926489265892668926789268892698927089271892728927389274892758927689277892788927989280892818928289283892848928589286892878928889289892908929189292892938929489295892968929789298892998930089301893028930389304893058930689307893088930989310893118931289313893148931589316893178931889319893208932189322893238932489325893268932789328893298933089331893328933389334893358933689337893388933989340893418934289343893448934589346893478934889349893508935189352893538935489355893568935789358893598936089361893628936389364893658936689367893688936989370893718937289373893748937589376893778937889379893808938189382893838938489385893868938789388893898939089391893928939389394893958939689397893988939989400894018940289403894048940589406894078940889409894108941189412894138941489415894168941789418894198942089421894228942389424894258942689427894288942989430894318943289433894348943589436894378943889439894408944189442894438944489445894468944789448894498945089451894528945389454894558945689457894588945989460894618946289463894648946589466894678946889469894708947189472894738947489475894768947789478894798948089481894828948389484894858948689487894888948989490894918949289493894948949589496894978949889499895008950189502895038950489505895068950789508895098951089511895128951389514895158951689517895188951989520895218952289523895248952589526895278952889529895308953189532895338953489535895368953789538895398954089541895428954389544895458954689547895488954989550895518955289553895548955589556895578955889559895608956189562895638956489565895668956789568895698957089571895728957389574895758957689577895788957989580895818958289583895848958589586895878958889589895908959189592895938959489595895968959789598895998960089601896028960389604896058960689607896088960989610896118961289613896148961589616896178961889619896208962189622896238962489625896268962789628896298963089631896328963389634896358963689637896388963989640896418964289643896448964589646896478964889649896508965189652896538965489655896568965789658896598966089661896628966389664896658966689667896688966989670896718967289673896748967589676896778967889679896808968189682896838968489685896868968789688896898969089691896928969389694896958969689697896988969989700897018970289703897048970589706897078970889709897108971189712897138971489715897168971789718897198972089721897228972389724897258972689727897288972989730897318973289733897348973589736897378973889739897408974189742897438974489745897468974789748897498975089751897528975389754897558975689757897588975989760897618976289763897648976589766897678976889769897708977189772897738977489775897768977789778897798978089781897828978389784897858978689787897888978989790897918979289793897948979589796897978979889799898008980189802898038980489805898068980789808898098981089811898128981389814898158981689817898188981989820898218982289823898248982589826898278982889829898308983189832898338983489835898368983789838898398984089841898428984389844898458984689847898488984989850898518985289853898548985589856898578985889859898608986189862898638986489865898668986789868898698987089871898728987389874898758987689877898788987989880898818988289883898848988589886898878988889889898908989189892898938989489895898968989789898898998990089901899028990389904899058990689907899088990989910899118991289913899148991589916899178991889919899208992189922899238992489925899268992789928899298993089931899328993389934899358993689937899388993989940899418994289943899448994589946899478994889949899508995189952899538995489955899568995789958899598996089961899628996389964899658996689967899688996989970899718997289973899748997589976899778997889979899808998189982899838998489985899868998789988899898999089991899928999389994899958999689997899988999990000900019000290003900049000590006900079000890009900109001190012900139001490015900169001790018900199002090021900229002390024900259002690027900289002990030900319003290033900349003590036900379003890039900409004190042900439004490045900469004790048900499005090051900529005390054900559005690057900589005990060900619006290063900649006590066900679006890069900709007190072900739007490075900769007790078900799008090081900829008390084900859008690087900889008990090900919009290093900949009590096900979009890099901009010190102901039010490105901069010790108901099011090111901129011390114901159011690117901189011990120901219012290123901249012590126901279012890129901309013190132901339013490135901369013790138901399014090141901429014390144901459014690147901489014990150901519015290153901549015590156901579015890159901609016190162901639016490165901669016790168901699017090171901729017390174901759017690177901789017990180901819018290183901849018590186901879018890189901909019190192901939019490195901969019790198901999020090201902029020390204902059020690207902089020990210902119021290213902149021590216902179021890219902209022190222902239022490225902269022790228902299023090231902329023390234902359023690237902389023990240902419024290243902449024590246902479024890249902509025190252902539025490255902569025790258902599026090261902629026390264902659026690267902689026990270902719027290273902749027590276902779027890279902809028190282902839028490285902869028790288902899029090291902929029390294902959029690297902989029990300903019030290303903049030590306903079030890309903109031190312903139031490315903169031790318903199032090321903229032390324903259032690327903289032990330903319033290333903349033590336903379033890339903409034190342903439034490345903469034790348903499035090351903529035390354903559035690357903589035990360903619036290363903649036590366903679036890369903709037190372903739037490375903769037790378903799038090381903829038390384903859038690387903889038990390903919039290393903949039590396903979039890399904009040190402904039040490405904069040790408904099041090411904129041390414904159041690417904189041990420904219042290423904249042590426904279042890429904309043190432904339043490435904369043790438904399044090441904429044390444904459044690447904489044990450904519045290453904549045590456904579045890459904609046190462904639046490465904669046790468904699047090471904729047390474904759047690477904789047990480904819048290483904849048590486904879048890489904909049190492904939049490495904969049790498904999050090501905029050390504905059050690507905089050990510905119051290513905149051590516905179051890519905209052190522905239052490525905269052790528905299053090531905329053390534905359053690537905389053990540905419054290543905449054590546905479054890549905509055190552905539055490555905569055790558905599056090561905629056390564905659056690567905689056990570905719057290573905749057590576905779057890579905809058190582905839058490585905869058790588905899059090591905929059390594905959059690597905989059990600906019060290603906049060590606906079060890609906109061190612906139061490615906169061790618906199062090621906229062390624906259062690627906289062990630906319063290633906349063590636906379063890639906409064190642906439064490645906469064790648906499065090651906529065390654906559065690657906589065990660906619066290663906649066590666906679066890669906709067190672906739067490675906769067790678906799068090681906829068390684906859068690687906889068990690906919069290693906949069590696906979069890699907009070190702907039070490705907069070790708907099071090711907129071390714907159071690717907189071990720907219072290723907249072590726907279072890729907309073190732907339073490735907369073790738907399074090741907429074390744907459074690747907489074990750907519075290753907549075590756907579075890759907609076190762907639076490765907669076790768907699077090771907729077390774907759077690777907789077990780907819078290783907849078590786907879078890789907909079190792907939079490795907969079790798907999080090801908029080390804908059080690807908089080990810908119081290813908149081590816908179081890819908209082190822908239082490825908269082790828908299083090831908329083390834908359083690837908389083990840908419084290843908449084590846908479084890849908509085190852908539085490855908569085790858908599086090861908629086390864908659086690867908689086990870908719087290873908749087590876908779087890879908809088190882908839088490885908869088790888908899089090891908929089390894908959089690897908989089990900909019090290903909049090590906909079090890909909109091190912909139091490915909169091790918909199092090921909229092390924909259092690927909289092990930909319093290933909349093590936909379093890939909409094190942909439094490945909469094790948909499095090951909529095390954909559095690957909589095990960909619096290963909649096590966909679096890969909709097190972909739097490975909769097790978909799098090981909829098390984909859098690987909889098990990909919099290993909949099590996909979099890999910009100191002910039100491005910069100791008910099101091011910129101391014910159101691017910189101991020910219102291023910249102591026910279102891029910309103191032910339103491035910369103791038910399104091041910429104391044910459104691047910489104991050910519105291053910549105591056910579105891059910609106191062910639106491065910669106791068910699107091071910729107391074910759107691077910789107991080910819108291083910849108591086910879108891089910909109191092910939109491095910969109791098910999110091101911029110391104911059110691107911089110991110911119111291113911149111591116911179111891119911209112191122911239112491125911269112791128911299113091131911329113391134911359113691137911389113991140911419114291143911449114591146911479114891149911509115191152911539115491155911569115791158911599116091161911629116391164911659116691167911689116991170911719117291173911749117591176911779117891179911809118191182911839118491185911869118791188911899119091191911929119391194911959119691197911989119991200912019120291203912049120591206912079120891209912109121191212912139121491215912169121791218912199122091221912229122391224912259122691227912289122991230912319123291233912349123591236912379123891239912409124191242912439124491245912469124791248912499125091251912529125391254912559125691257912589125991260912619126291263912649126591266912679126891269912709127191272912739127491275912769127791278912799128091281912829128391284912859128691287912889128991290912919129291293912949129591296912979129891299913009130191302913039130491305913069130791308913099131091311913129131391314913159131691317913189131991320913219132291323913249132591326913279132891329913309133191332913339133491335913369133791338913399134091341913429134391344913459134691347913489134991350913519135291353913549135591356913579135891359913609136191362913639136491365913669136791368913699137091371913729137391374913759137691377913789137991380913819138291383913849138591386913879138891389913909139191392913939139491395913969139791398913999140091401914029140391404914059140691407914089140991410914119141291413914149141591416914179141891419914209142191422914239142491425914269142791428914299143091431914329143391434914359143691437914389143991440914419144291443914449144591446914479144891449914509145191452914539145491455914569145791458914599146091461914629146391464914659146691467914689146991470914719147291473914749147591476914779147891479914809148191482914839148491485914869148791488914899149091491914929149391494914959149691497914989149991500915019150291503915049150591506915079150891509915109151191512915139151491515915169151791518915199152091521915229152391524915259152691527915289152991530915319153291533915349153591536915379153891539915409154191542915439154491545915469154791548915499155091551915529155391554915559155691557915589155991560915619156291563915649156591566915679156891569915709157191572915739157491575915769157791578915799158091581915829158391584915859158691587915889158991590915919159291593915949159591596915979159891599916009160191602916039160491605916069160791608916099161091611916129161391614916159161691617916189161991620916219162291623916249162591626916279162891629916309163191632916339163491635916369163791638916399164091641916429164391644916459164691647916489164991650916519165291653916549165591656916579165891659916609166191662916639166491665916669166791668916699167091671916729167391674916759167691677916789167991680916819168291683916849168591686916879168891689916909169191692916939169491695916969169791698916999170091701917029170391704917059170691707917089170991710917119171291713917149171591716917179171891719917209172191722917239172491725917269172791728917299173091731917329173391734917359173691737917389173991740917419174291743917449174591746917479174891749917509175191752917539175491755917569175791758917599176091761917629176391764917659176691767917689176991770917719177291773917749177591776917779177891779917809178191782917839178491785917869178791788917899179091791917929179391794917959179691797917989179991800918019180291803918049180591806918079180891809918109181191812918139181491815918169181791818918199182091821918229182391824918259182691827918289182991830918319183291833918349183591836918379183891839918409184191842918439184491845918469184791848918499185091851918529185391854918559185691857918589185991860918619186291863918649186591866918679186891869918709187191872918739187491875918769187791878918799188091881918829188391884918859188691887918889188991890918919189291893918949189591896918979189891899919009190191902919039190491905919069190791908919099191091911919129191391914919159191691917919189191991920919219192291923919249192591926919279192891929919309193191932919339193491935919369193791938919399194091941919429194391944919459194691947919489194991950919519195291953919549195591956919579195891959919609196191962919639196491965919669196791968919699197091971919729197391974919759197691977919789197991980919819198291983919849198591986919879198891989919909199191992919939199491995919969199791998919999200092001920029200392004920059200692007920089200992010920119201292013920149201592016920179201892019920209202192022920239202492025920269202792028920299203092031920329203392034920359203692037920389203992040920419204292043920449204592046920479204892049920509205192052920539205492055920569205792058920599206092061920629206392064920659206692067920689206992070920719207292073920749207592076920779207892079920809208192082920839208492085920869208792088920899209092091920929209392094920959209692097920989209992100921019210292103921049210592106921079210892109921109211192112921139211492115921169211792118921199212092121921229212392124921259212692127921289212992130921319213292133921349213592136921379213892139921409214192142921439214492145921469214792148921499215092151921529215392154921559215692157921589215992160921619216292163921649216592166921679216892169921709217192172921739217492175921769217792178921799218092181921829218392184921859218692187921889218992190921919219292193921949219592196921979219892199922009220192202922039220492205922069220792208922099221092211922129221392214922159221692217922189221992220922219222292223922249222592226922279222892229922309223192232922339223492235922369223792238922399224092241922429224392244922459224692247922489224992250922519225292253922549225592256922579225892259922609226192262922639226492265922669226792268922699227092271922729227392274922759227692277922789227992280922819228292283922849228592286922879228892289922909229192292922939229492295922969229792298922999230092301923029230392304923059230692307923089230992310923119231292313923149231592316923179231892319923209232192322923239232492325923269232792328923299233092331923329233392334923359233692337923389233992340923419234292343923449234592346923479234892349923509235192352923539235492355923569235792358923599236092361923629236392364923659236692367923689236992370923719237292373923749237592376923779237892379923809238192382923839238492385923869238792388923899239092391923929239392394923959239692397923989239992400924019240292403924049240592406924079240892409924109241192412924139241492415924169241792418924199242092421924229242392424924259242692427924289242992430924319243292433924349243592436924379243892439924409244192442924439244492445924469244792448924499245092451924529245392454924559245692457924589245992460924619246292463924649246592466924679246892469924709247192472924739247492475924769247792478924799248092481924829248392484924859248692487924889248992490924919249292493924949249592496924979249892499925009250192502925039250492505925069250792508925099251092511925129251392514925159251692517925189251992520925219252292523925249252592526925279252892529925309253192532925339253492535925369253792538925399254092541925429254392544925459254692547925489254992550925519255292553925549255592556925579255892559925609256192562925639256492565925669256792568925699257092571925729257392574925759257692577925789257992580925819258292583925849258592586925879258892589925909259192592925939259492595925969259792598925999260092601926029260392604926059260692607926089260992610926119261292613926149261592616926179261892619926209262192622926239262492625926269262792628926299263092631926329263392634926359263692637926389263992640926419264292643926449264592646926479264892649926509265192652926539265492655926569265792658926599266092661926629266392664926659266692667926689266992670926719267292673926749267592676926779267892679926809268192682926839268492685926869268792688926899269092691926929269392694926959269692697926989269992700927019270292703927049270592706927079270892709927109271192712927139271492715927169271792718927199272092721927229272392724927259272692727927289272992730927319273292733927349273592736927379273892739927409274192742927439274492745927469274792748927499275092751927529275392754927559275692757927589275992760927619276292763927649276592766927679276892769927709277192772927739277492775927769277792778927799278092781927829278392784927859278692787927889278992790927919279292793927949279592796927979279892799928009280192802928039280492805928069280792808928099281092811928129281392814928159281692817928189281992820928219282292823928249282592826928279282892829928309283192832928339283492835928369283792838928399284092841928429284392844928459284692847928489284992850928519285292853928549285592856928579285892859928609286192862928639286492865928669286792868928699287092871928729287392874928759287692877928789287992880928819288292883928849288592886928879288892889928909289192892928939289492895928969289792898928999290092901929029290392904929059290692907929089290992910929119291292913929149291592916929179291892919929209292192922929239292492925929269292792928929299293092931929329293392934929359293692937929389293992940929419294292943929449294592946929479294892949929509295192952929539295492955929569295792958929599296092961929629296392964929659296692967929689296992970929719297292973929749297592976929779297892979929809298192982929839298492985929869298792988929899299092991929929299392994929959299692997929989299993000930019300293003930049300593006930079300893009930109301193012930139301493015930169301793018930199302093021930229302393024930259302693027930289302993030930319303293033930349303593036930379303893039930409304193042930439304493045930469304793048930499305093051930529305393054930559305693057930589305993060930619306293063930649306593066930679306893069930709307193072930739307493075930769307793078930799308093081930829308393084930859308693087930889308993090930919309293093930949309593096930979309893099931009310193102931039310493105931069310793108931099311093111931129311393114931159311693117931189311993120931219312293123931249312593126931279312893129931309313193132931339313493135931369313793138931399314093141931429314393144931459314693147931489314993150931519315293153931549315593156931579315893159931609316193162931639316493165931669316793168931699317093171931729317393174931759317693177931789317993180931819318293183931849318593186931879318893189931909319193192931939319493195931969319793198931999320093201932029320393204932059320693207932089320993210932119321293213932149321593216932179321893219932209322193222932239322493225932269322793228932299323093231932329323393234932359323693237932389323993240932419324293243932449324593246932479324893249932509325193252932539325493255932569325793258932599326093261932629326393264932659326693267932689326993270932719327293273932749327593276932779327893279932809328193282932839328493285932869328793288932899329093291932929329393294932959329693297932989329993300933019330293303933049330593306933079330893309933109331193312933139331493315933169331793318933199332093321933229332393324933259332693327933289332993330933319333293333933349333593336933379333893339933409334193342933439334493345933469334793348933499335093351933529335393354933559335693357933589335993360933619336293363933649336593366933679336893369933709337193372933739337493375933769337793378933799338093381933829338393384933859338693387933889338993390933919339293393933949339593396933979339893399934009340193402934039340493405934069340793408934099341093411934129341393414934159341693417934189341993420934219342293423934249342593426934279342893429934309343193432934339343493435934369343793438934399344093441934429344393444934459344693447934489344993450934519345293453934549345593456934579345893459934609346193462934639346493465934669346793468934699347093471934729347393474934759347693477934789347993480934819348293483934849348593486934879348893489934909349193492934939349493495934969349793498934999350093501935029350393504935059350693507935089350993510935119351293513935149351593516935179351893519935209352193522935239352493525935269352793528935299353093531935329353393534935359353693537935389353993540935419354293543935449354593546935479354893549935509355193552935539355493555935569355793558935599356093561935629356393564935659356693567935689356993570935719357293573935749357593576935779357893579935809358193582935839358493585935869358793588935899359093591935929359393594935959359693597935989359993600936019360293603936049360593606936079360893609936109361193612936139361493615936169361793618936199362093621936229362393624936259362693627936289362993630936319363293633936349363593636936379363893639936409364193642936439364493645936469364793648936499365093651936529365393654936559365693657936589365993660936619366293663936649366593666936679366893669936709367193672936739367493675936769367793678936799368093681936829368393684936859368693687936889368993690936919369293693936949369593696936979369893699937009370193702937039370493705937069370793708937099371093711937129371393714937159371693717937189371993720937219372293723937249372593726937279372893729937309373193732937339373493735937369373793738937399374093741937429374393744937459374693747937489374993750937519375293753937549375593756937579375893759937609376193762937639376493765937669376793768937699377093771937729377393774937759377693777937789377993780937819378293783937849378593786937879378893789937909379193792937939379493795937969379793798937999380093801938029380393804938059380693807938089380993810938119381293813938149381593816938179381893819938209382193822938239382493825938269382793828938299383093831938329383393834938359383693837938389383993840938419384293843938449384593846938479384893849938509385193852938539385493855938569385793858938599386093861938629386393864938659386693867938689386993870938719387293873938749387593876938779387893879938809388193882938839388493885938869388793888938899389093891938929389393894938959389693897938989389993900939019390293903939049390593906939079390893909939109391193912939139391493915939169391793918939199392093921939229392393924939259392693927939289392993930939319393293933939349393593936939379393893939939409394193942939439394493945939469394793948939499395093951939529395393954939559395693957939589395993960939619396293963939649396593966939679396893969939709397193972939739397493975939769397793978939799398093981939829398393984939859398693987939889398993990939919399293993939949399593996939979399893999940009400194002940039400494005940069400794008940099401094011940129401394014940159401694017940189401994020940219402294023940249402594026940279402894029940309403194032940339403494035940369403794038940399404094041940429404394044940459404694047940489404994050940519405294053940549405594056940579405894059940609406194062940639406494065940669406794068940699407094071940729407394074940759407694077940789407994080940819408294083940849408594086940879408894089940909409194092940939409494095940969409794098940999410094101941029410394104941059410694107941089410994110941119411294113941149411594116941179411894119941209412194122941239412494125941269412794128941299413094131941329413394134941359413694137941389413994140941419414294143941449414594146941479414894149941509415194152941539415494155941569415794158941599416094161941629416394164941659416694167941689416994170941719417294173941749417594176941779417894179941809418194182941839418494185941869418794188941899419094191941929419394194941959419694197941989419994200942019420294203942049420594206942079420894209942109421194212942139421494215942169421794218942199422094221942229422394224942259422694227942289422994230942319423294233942349423594236942379423894239942409424194242942439424494245942469424794248942499425094251942529425394254942559425694257942589425994260942619426294263942649426594266942679426894269942709427194272942739427494275942769427794278942799428094281942829428394284942859428694287942889428994290942919429294293942949429594296942979429894299943009430194302943039430494305943069430794308943099431094311943129431394314943159431694317943189431994320943219432294323943249432594326943279432894329943309433194332943339433494335943369433794338943399434094341943429434394344943459434694347943489434994350943519435294353943549435594356943579435894359943609436194362943639436494365943669436794368943699437094371943729437394374943759437694377943789437994380943819438294383943849438594386943879438894389943909439194392943939439494395943969439794398943999440094401944029440394404944059440694407944089440994410944119441294413944149441594416944179441894419944209442194422944239442494425944269442794428944299443094431944329443394434944359443694437944389443994440944419444294443944449444594446944479444894449944509445194452944539445494455944569445794458944599446094461944629446394464944659446694467944689446994470944719447294473944749447594476944779447894479944809448194482944839448494485944869448794488944899449094491944929449394494944959449694497944989449994500945019450294503945049450594506945079450894509945109451194512945139451494515945169451794518945199452094521945229452394524945259452694527945289452994530945319453294533945349453594536945379453894539945409454194542945439454494545945469454794548945499455094551945529455394554945559455694557945589455994560945619456294563945649456594566945679456894569945709457194572945739457494575945769457794578945799458094581945829458394584945859458694587945889458994590945919459294593945949459594596945979459894599946009460194602946039460494605946069460794608946099461094611946129461394614946159461694617946189461994620946219462294623946249462594626946279462894629946309463194632946339463494635946369463794638946399464094641946429464394644946459464694647946489464994650946519465294653946549465594656946579465894659946609466194662946639466494665946669466794668946699467094671946729467394674946759467694677946789467994680946819468294683946849468594686946879468894689946909469194692946939469494695946969469794698946999470094701947029470394704947059470694707947089470994710947119471294713947149471594716947179471894719947209472194722947239472494725947269472794728947299473094731947329473394734947359473694737947389473994740947419474294743947449474594746947479474894749947509475194752947539475494755947569475794758947599476094761947629476394764947659476694767947689476994770947719477294773947749477594776947779477894779947809478194782947839478494785947869478794788947899479094791947929479394794947959479694797947989479994800948019480294803948049480594806948079480894809948109481194812948139481494815948169481794818948199482094821948229482394824948259482694827948289482994830948319483294833948349483594836948379483894839948409484194842948439484494845948469484794848948499485094851948529485394854948559485694857948589485994860948619486294863948649486594866948679486894869948709487194872948739487494875948769487794878948799488094881948829488394884948859488694887948889488994890948919489294893948949489594896948979489894899949009490194902949039490494905949069490794908949099491094911949129491394914949159491694917949189491994920949219492294923949249492594926949279492894929949309493194932949339493494935949369493794938949399494094941949429494394944949459494694947949489494994950949519495294953949549495594956949579495894959949609496194962949639496494965949669496794968949699497094971949729497394974949759497694977949789497994980949819498294983949849498594986949879498894989949909499194992949939499494995949969499794998949999500095001950029500395004950059500695007950089500995010950119501295013950149501595016950179501895019950209502195022950239502495025950269502795028950299503095031950329503395034950359503695037950389503995040950419504295043950449504595046950479504895049950509505195052950539505495055950569505795058950599506095061950629506395064950659506695067950689506995070950719507295073950749507595076950779507895079950809508195082950839508495085950869508795088950899509095091950929509395094950959509695097950989509995100951019510295103951049510595106951079510895109951109511195112951139511495115951169511795118951199512095121951229512395124951259512695127951289512995130951319513295133951349513595136951379513895139951409514195142951439514495145951469514795148951499515095151951529515395154951559515695157951589515995160951619516295163951649516595166951679516895169951709517195172951739517495175951769517795178951799518095181951829518395184951859518695187951889518995190951919519295193951949519595196951979519895199952009520195202952039520495205952069520795208952099521095211952129521395214952159521695217952189521995220952219522295223952249522595226952279522895229952309523195232952339523495235952369523795238952399524095241952429524395244952459524695247952489524995250952519525295253952549525595256952579525895259952609526195262952639526495265952669526795268952699527095271952729527395274952759527695277952789527995280952819528295283952849528595286952879528895289952909529195292952939529495295952969529795298952999530095301953029530395304953059530695307953089530995310953119531295313953149531595316953179531895319953209532195322953239532495325953269532795328953299533095331953329533395334953359533695337953389533995340953419534295343953449534595346953479534895349953509535195352953539535495355953569535795358953599536095361953629536395364953659536695367953689536995370953719537295373953749537595376953779537895379953809538195382953839538495385953869538795388953899539095391953929539395394953959539695397953989539995400954019540295403954049540595406954079540895409954109541195412954139541495415954169541795418954199542095421954229542395424954259542695427954289542995430954319543295433954349543595436954379543895439954409544195442954439544495445954469544795448954499545095451954529545395454954559545695457954589545995460954619546295463954649546595466954679546895469954709547195472954739547495475954769547795478954799548095481954829548395484954859548695487954889548995490954919549295493954949549595496954979549895499955009550195502955039550495505955069550795508955099551095511955129551395514955159551695517955189551995520955219552295523955249552595526955279552895529955309553195532955339553495535955369553795538955399554095541955429554395544955459554695547955489554995550955519555295553955549555595556955579555895559955609556195562955639556495565955669556795568955699557095571955729557395574955759557695577955789557995580955819558295583955849558595586955879558895589955909559195592955939559495595955969559795598955999560095601956029560395604956059560695607956089560995610956119561295613956149561595616956179561895619956209562195622956239562495625956269562795628956299563095631956329563395634956359563695637956389563995640956419564295643956449564595646956479564895649956509565195652956539565495655956569565795658956599566095661956629566395664956659566695667956689566995670956719567295673956749567595676956779567895679956809568195682956839568495685956869568795688956899569095691956929569395694956959569695697956989569995700957019570295703957049570595706957079570895709957109571195712957139571495715957169571795718957199572095721957229572395724957259572695727957289572995730957319573295733957349573595736957379573895739957409574195742957439574495745957469574795748957499575095751957529575395754957559575695757957589575995760957619576295763957649576595766957679576895769957709577195772957739577495775957769577795778957799578095781957829578395784957859578695787957889578995790957919579295793957949579595796957979579895799958009580195802958039580495805958069580795808958099581095811958129581395814958159581695817958189581995820958219582295823958249582595826958279582895829958309583195832958339583495835958369583795838958399584095841958429584395844958459584695847958489584995850958519585295853958549585595856958579585895859958609586195862958639586495865958669586795868958699587095871958729587395874958759587695877958789587995880958819588295883958849588595886958879588895889958909589195892958939589495895958969589795898958999590095901959029590395904959059590695907959089590995910959119591295913959149591595916959179591895919959209592195922959239592495925959269592795928959299593095931959329593395934959359593695937959389593995940959419594295943959449594595946959479594895949959509595195952959539595495955959569595795958959599596095961959629596395964959659596695967959689596995970959719597295973959749597595976959779597895979959809598195982959839598495985959869598795988959899599095991959929599395994959959599695997959989599996000960019600296003960049600596006960079600896009960109601196012960139601496015960169601796018960199602096021960229602396024960259602696027960289602996030960319603296033960349603596036960379603896039960409604196042960439604496045960469604796048960499605096051960529605396054960559605696057960589605996060960619606296063960649606596066960679606896069960709607196072960739607496075960769607796078960799608096081960829608396084960859608696087960889608996090960919609296093960949609596096960979609896099961009610196102961039610496105961069610796108961099611096111961129611396114961159611696117961189611996120961219612296123961249612596126961279612896129961309613196132961339613496135961369613796138961399614096141961429614396144961459614696147961489614996150961519615296153961549615596156961579615896159961609616196162961639616496165961669616796168961699617096171961729617396174961759617696177961789617996180961819618296183961849618596186961879618896189961909619196192961939619496195961969619796198961999620096201962029620396204962059620696207962089620996210962119621296213962149621596216962179621896219962209622196222962239622496225962269622796228962299623096231962329623396234962359623696237962389623996240962419624296243962449624596246962479624896249962509625196252962539625496255962569625796258962599626096261962629626396264962659626696267962689626996270962719627296273962749627596276962779627896279962809628196282962839628496285962869628796288962899629096291962929629396294962959629696297962989629996300963019630296303963049630596306963079630896309963109631196312963139631496315963169631796318963199632096321963229632396324963259632696327963289632996330963319633296333963349633596336963379633896339963409634196342963439634496345963469634796348963499635096351963529635396354963559635696357963589635996360963619636296363963649636596366963679636896369963709637196372963739637496375963769637796378963799638096381963829638396384963859638696387963889638996390963919639296393963949639596396963979639896399964009640196402964039640496405964069640796408964099641096411964129641396414964159641696417964189641996420964219642296423964249642596426964279642896429964309643196432964339643496435964369643796438964399644096441964429644396444964459644696447964489644996450964519645296453964549645596456964579645896459964609646196462964639646496465964669646796468964699647096471964729647396474964759647696477964789647996480964819648296483964849648596486964879648896489964909649196492964939649496495964969649796498964999650096501965029650396504965059650696507965089650996510965119651296513965149651596516965179651896519965209652196522965239652496525965269652796528965299653096531965329653396534965359653696537965389653996540965419654296543965449654596546965479654896549965509655196552965539655496555965569655796558965599656096561965629656396564965659656696567965689656996570965719657296573965749657596576965779657896579965809658196582965839658496585965869658796588965899659096591965929659396594965959659696597965989659996600966019660296603966049660596606966079660896609966109661196612966139661496615966169661796618966199662096621966229662396624966259662696627966289662996630966319663296633966349663596636966379663896639966409664196642966439664496645966469664796648966499665096651966529665396654966559665696657966589665996660966619666296663966649666596666966679666896669966709667196672966739667496675966769667796678966799668096681966829668396684966859668696687966889668996690966919669296693966949669596696966979669896699967009670196702967039670496705967069670796708967099671096711967129671396714967159671696717967189671996720967219672296723967249672596726967279672896729967309673196732967339673496735967369673796738967399674096741967429674396744967459674696747967489674996750967519675296753967549675596756967579675896759967609676196762967639676496765967669676796768967699677096771967729677396774967759677696777967789677996780967819678296783967849678596786967879678896789967909679196792967939679496795967969679796798967999680096801968029680396804968059680696807968089680996810968119681296813968149681596816968179681896819968209682196822968239682496825968269682796828968299683096831968329683396834968359683696837968389683996840968419684296843968449684596846968479684896849968509685196852968539685496855968569685796858968599686096861968629686396864968659686696867968689686996870968719687296873968749687596876968779687896879968809688196882968839688496885968869688796888968899689096891968929689396894968959689696897968989689996900969019690296903969049690596906969079690896909969109691196912969139691496915969169691796918969199692096921969229692396924969259692696927969289692996930969319693296933969349693596936969379693896939969409694196942969439694496945969469694796948969499695096951969529695396954969559695696957969589695996960969619696296963969649696596966969679696896969969709697196972969739697496975969769697796978969799698096981969829698396984969859698696987969889698996990969919699296993969949699596996969979699896999970009700197002970039700497005970069700797008970099701097011970129701397014970159701697017970189701997020970219702297023970249702597026970279702897029970309703197032970339703497035970369703797038970399704097041970429704397044970459704697047970489704997050970519705297053970549705597056970579705897059970609706197062970639706497065970669706797068970699707097071970729707397074970759707697077970789707997080970819708297083970849708597086970879708897089970909709197092970939709497095970969709797098970999710097101971029710397104971059710697107971089710997110971119711297113971149711597116971179711897119971209712197122971239712497125971269712797128971299713097131971329713397134971359713697137971389713997140971419714297143971449714597146971479714897149971509715197152971539715497155971569715797158971599716097161971629716397164971659716697167971689716997170971719717297173971749717597176971779717897179971809718197182971839718497185971869718797188971899719097191971929719397194971959719697197971989719997200972019720297203972049720597206972079720897209972109721197212972139721497215972169721797218972199722097221972229722397224972259722697227972289722997230972319723297233972349723597236972379723897239972409724197242972439724497245972469724797248972499725097251972529725397254972559725697257972589725997260972619726297263972649726597266972679726897269972709727197272972739727497275972769727797278972799728097281972829728397284972859728697287972889728997290972919729297293972949729597296972979729897299973009730197302973039730497305973069730797308973099731097311973129731397314973159731697317973189731997320973219732297323973249732597326973279732897329973309733197332973339733497335973369733797338973399734097341973429734397344973459734697347973489734997350973519735297353973549735597356973579735897359973609736197362973639736497365973669736797368973699737097371973729737397374973759737697377973789737997380973819738297383973849738597386973879738897389973909739197392973939739497395973969739797398973999740097401974029740397404974059740697407974089740997410974119741297413974149741597416974179741897419974209742197422974239742497425974269742797428974299743097431974329743397434974359743697437974389743997440974419744297443974449744597446974479744897449974509745197452974539745497455974569745797458974599746097461974629746397464974659746697467974689746997470974719747297473974749747597476974779747897479974809748197482974839748497485974869748797488974899749097491974929749397494974959749697497974989749997500975019750297503975049750597506975079750897509975109751197512975139751497515975169751797518975199752097521975229752397524975259752697527975289752997530975319753297533975349753597536975379753897539975409754197542975439754497545975469754797548975499755097551975529755397554975559755697557975589755997560975619756297563975649756597566975679756897569975709757197572975739757497575975769757797578975799758097581975829758397584975859758697587975889758997590975919759297593975949759597596975979759897599976009760197602976039760497605976069760797608976099761097611976129761397614976159761697617976189761997620976219762297623976249762597626976279762897629976309763197632976339763497635976369763797638976399764097641976429764397644976459764697647976489764997650976519765297653976549765597656976579765897659976609766197662976639766497665976669766797668976699767097671976729767397674976759767697677976789767997680976819768297683976849768597686976879768897689976909769197692976939769497695976969769797698976999770097701977029770397704977059770697707977089770997710977119771297713977149771597716977179771897719977209772197722977239772497725977269772797728977299773097731977329773397734977359773697737977389773997740977419774297743977449774597746977479774897749977509775197752977539775497755977569775797758977599776097761977629776397764977659776697767977689776997770977719777297773977749777597776977779777897779977809778197782977839778497785977869778797788977899779097791977929779397794977959779697797977989779997800978019780297803978049780597806978079780897809978109781197812978139781497815978169781797818978199782097821978229782397824978259782697827978289782997830978319783297833978349783597836978379783897839978409784197842978439784497845978469784797848978499785097851978529785397854978559785697857978589785997860978619786297863978649786597866978679786897869978709787197872978739787497875978769787797878978799788097881978829788397884978859788697887978889788997890978919789297893978949789597896978979789897899979009790197902979039790497905979069790797908979099791097911979129791397914979159791697917979189791997920979219792297923979249792597926979279792897929979309793197932979339793497935979369793797938979399794097941979429794397944979459794697947979489794997950979519795297953979549795597956979579795897959979609796197962979639796497965979669796797968979699797097971979729797397974979759797697977979789797997980979819798297983979849798597986979879798897989979909799197992979939799497995979969799797998979999800098001980029800398004980059800698007980089800998010980119801298013980149801598016980179801898019980209802198022980239802498025980269802798028980299803098031980329803398034980359803698037980389803998040980419804298043980449804598046980479804898049980509805198052980539805498055980569805798058980599806098061980629806398064980659806698067980689806998070980719807298073980749807598076980779807898079980809808198082980839808498085980869808798088980899809098091980929809398094980959809698097980989809998100981019810298103981049810598106981079810898109981109811198112981139811498115981169811798118981199812098121981229812398124981259812698127981289812998130981319813298133981349813598136981379813898139981409814198142981439814498145981469814798148981499815098151981529815398154981559815698157981589815998160981619816298163981649816598166981679816898169981709817198172981739817498175981769817798178981799818098181981829818398184981859818698187981889818998190981919819298193981949819598196981979819898199982009820198202982039820498205982069820798208982099821098211982129821398214982159821698217982189821998220982219822298223982249822598226982279822898229982309823198232982339823498235982369823798238982399824098241982429824398244982459824698247982489824998250982519825298253982549825598256982579825898259982609826198262982639826498265982669826798268982699827098271982729827398274982759827698277982789827998280982819828298283982849828598286982879828898289982909829198292982939829498295982969829798298982999830098301983029830398304983059830698307983089830998310983119831298313983149831598316983179831898319983209832198322983239832498325983269832798328983299833098331983329833398334983359833698337983389833998340983419834298343983449834598346983479834898349983509835198352983539835498355983569835798358983599836098361983629836398364983659836698367983689836998370983719837298373983749837598376983779837898379983809838198382983839838498385983869838798388983899839098391983929839398394983959839698397983989839998400984019840298403984049840598406984079840898409984109841198412984139841498415984169841798418984199842098421984229842398424984259842698427984289842998430984319843298433984349843598436984379843898439984409844198442984439844498445984469844798448984499845098451984529845398454984559845698457984589845998460984619846298463984649846598466984679846898469984709847198472984739847498475984769847798478984799848098481984829848398484984859848698487984889848998490984919849298493984949849598496984979849898499985009850198502985039850498505985069850798508985099851098511985129851398514985159851698517985189851998520985219852298523985249852598526985279852898529985309853198532985339853498535985369853798538985399854098541985429854398544985459854698547985489854998550985519855298553985549855598556985579855898559985609856198562985639856498565985669856798568985699857098571985729857398574985759857698577985789857998580985819858298583985849858598586985879858898589985909859198592985939859498595985969859798598985999860098601986029860398604986059860698607986089860998610986119861298613986149861598616986179861898619986209862198622986239862498625986269862798628986299863098631986329863398634986359863698637986389863998640986419864298643986449864598646986479864898649986509865198652986539865498655986569865798658986599866098661986629866398664986659866698667986689866998670986719867298673986749867598676986779867898679986809868198682986839868498685986869868798688986899869098691986929869398694986959869698697986989869998700987019870298703987049870598706987079870898709987109871198712987139871498715987169871798718987199872098721987229872398724987259872698727987289872998730987319873298733987349873598736987379873898739987409874198742987439874498745987469874798748987499875098751987529875398754987559875698757987589875998760987619876298763987649876598766987679876898769987709877198772987739877498775987769877798778987799878098781987829878398784987859878698787987889878998790987919879298793987949879598796987979879898799988009880198802988039880498805988069880798808988099881098811988129881398814988159881698817988189881998820988219882298823988249882598826988279882898829988309883198832988339883498835988369883798838988399884098841988429884398844988459884698847988489884998850988519885298853988549885598856988579885898859988609886198862988639886498865988669886798868988699887098871988729887398874988759887698877988789887998880988819888298883988849888598886988879888898889988909889198892988939889498895988969889798898988999890098901989029890398904989059890698907989089890998910989119891298913989149891598916989179891898919989209892198922989239892498925989269892798928989299893098931989329893398934989359893698937989389893998940989419894298943989449894598946989479894898949989509895198952989539895498955989569895798958989599896098961989629896398964989659896698967989689896998970989719897298973989749897598976989779897898979989809898198982989839898498985989869898798988989899899098991989929899398994989959899698997989989899999000990019900299003990049900599006990079900899009990109901199012990139901499015990169901799018990199902099021990229902399024990259902699027990289902999030990319903299033990349903599036990379903899039990409904199042990439904499045990469904799048990499905099051990529905399054990559905699057990589905999060990619906299063990649906599066990679906899069990709907199072990739907499075990769907799078990799908099081990829908399084990859908699087990889908999090990919909299093990949909599096990979909899099991009910199102991039910499105991069910799108991099911099111991129911399114991159911699117991189911999120991219912299123991249912599126991279912899129991309913199132991339913499135991369913799138991399914099141991429914399144991459914699147991489914999150991519915299153991549915599156991579915899159991609916199162991639916499165991669916799168991699917099171991729917399174991759917699177991789917999180991819918299183991849918599186991879918899189991909919199192991939919499195991969919799198991999920099201992029920399204992059920699207992089920999210992119921299213992149921599216992179921899219992209922199222992239922499225992269922799228992299923099231992329923399234992359923699237992389923999240992419924299243992449924599246992479924899249992509925199252992539925499255992569925799258992599926099261992629926399264992659926699267992689926999270992719927299273992749927599276992779927899279992809928199282992839928499285992869928799288992899929099291992929929399294992959929699297992989929999300993019930299303993049930599306993079930899309993109931199312993139931499315993169931799318993199932099321993229932399324993259932699327993289932999330993319933299333993349933599336993379933899339993409934199342993439934499345993469934799348993499935099351993529935399354993559935699357993589935999360993619936299363993649936599366993679936899369993709937199372993739937499375993769937799378993799938099381993829938399384993859938699387993889938999390993919939299393993949939599396993979939899399994009940199402994039940499405994069940799408994099941099411994129941399414994159941699417994189941999420994219942299423994249942599426994279942899429994309943199432994339943499435994369943799438994399944099441994429944399444994459944699447994489944999450994519945299453994549945599456994579945899459994609946199462994639946499465994669946799468994699947099471994729947399474994759947699477994789947999480994819948299483994849948599486994879948899489994909949199492994939949499495994969949799498994999950099501995029950399504995059950699507995089950999510995119951299513995149951599516995179951899519995209952199522995239952499525995269952799528995299953099531995329953399534995359953699537995389953999540995419954299543995449954599546995479954899549995509955199552995539955499555995569955799558995599956099561995629956399564995659956699567995689956999570995719957299573995749957599576995779957899579995809958199582995839958499585995869958799588995899959099591995929959399594995959959699597995989959999600996019960299603996049960599606996079960899609996109961199612996139961499615996169961799618996199962099621996229962399624996259962699627996289962999630996319963299633996349963599636996379963899639996409964199642996439964499645996469964799648996499965099651996529965399654996559965699657996589965999660996619966299663996649966599666996679966899669996709967199672996739967499675996769967799678996799968099681996829968399684996859968699687996889968999690996919969299693996949969599696996979969899699997009970199702997039970499705997069970799708997099971099711997129971399714997159971699717997189971999720997219972299723997249972599726997279972899729997309973199732997339973499735997369973799738997399974099741997429974399744997459974699747997489974999750997519975299753997549975599756997579975899759997609976199762997639976499765997669976799768997699977099771997729977399774997759977699777997789977999780997819978299783997849978599786997879978899789997909979199792997939979499795997969979799798997999980099801998029980399804998059980699807998089980999810998119981299813998149981599816998179981899819998209982199822998239982499825998269982799828998299983099831998329983399834998359983699837998389983999840998419984299843998449984599846998479984899849998509985199852998539985499855998569985799858998599986099861998629986399864998659986699867998689986999870998719987299873998749987599876998779987899879998809988199882998839988499885998869988799888998899989099891998929989399894998959989699897998989989999900999019990299903999049990599906999079990899909999109991199912999139991499915999169991799918999199992099921999229992399924999259992699927999289992999930999319993299933999349993599936999379993899939999409994199942999439994499945999469994799948999499995099951999529995399954999559995699957999589995999960999619996299963999649996599966999679996899969999709997199972999739997499975999769997799978999799998099981999829998399984999859998699987999889998999990999919999299993999949999599996999979999899999100000100001100002100003100004100005100006100007100008100009100010100011100012100013100014100015100016100017100018100019100020100021100022100023100024100025100026100027100028100029100030100031100032100033100034100035100036100037100038100039100040100041100042100043100044100045100046100047100048100049100050100051100052100053100054100055100056100057100058100059100060100061100062100063100064100065100066100067100068100069100070100071100072100073100074100075100076100077100078100079100080100081100082100083100084100085100086100087100088100089100090100091100092100093100094100095100096100097100098100099100100100101100102100103100104100105100106100107100108100109100110100111100112100113100114100115100116100117100118100119100120100121100122100123100124100125100126100127100128100129100130100131100132100133100134100135100136100137100138100139100140100141100142100143100144100145100146100147100148100149100150100151100152100153100154100155100156100157100158100159100160100161100162100163100164100165100166100167100168100169100170100171100172100173100174100175100176100177100178100179100180100181100182100183100184100185100186100187100188100189100190100191100192100193100194100195100196100197100198100199100200100201100202100203100204100205100206100207100208100209100210100211100212100213100214100215100216100217100218100219100220100221100222100223100224100225100226100227100228100229100230100231100232100233100234100235100236100237100238100239100240100241100242100243100244100245100246100247100248100249100250100251100252100253100254100255100256100257100258100259100260100261100262100263100264100265100266100267100268100269100270100271100272100273100274100275100276100277100278100279100280100281100282100283100284100285100286100287100288100289100290100291100292100293100294100295100296100297100298100299100300100301100302100303100304100305100306100307100308100309100310100311100312100313100314100315100316100317100318100319100320100321100322100323100324100325100326100327100328100329100330100331100332100333100334100335100336100337100338100339100340100341100342100343100344100345100346100347100348100349100350100351100352100353100354100355100356100357100358100359100360100361100362100363100364100365100366100367100368100369100370100371100372100373100374100375100376100377100378100379100380100381100382100383100384100385100386100387100388100389100390100391100392100393100394100395100396100397100398100399100400100401100402100403100404100405100406100407100408100409100410100411100412100413100414100415100416100417100418100419100420100421100422100423100424100425100426100427100428100429100430100431100432100433100434100435100436100437100438100439100440100441100442100443100444100445100446100447100448100449100450100451100452100453100454100455100456100457100458100459100460100461100462100463100464100465100466100467100468100469100470100471100472100473100474100475100476100477100478100479100480100481100482100483100484100485100486100487100488100489100490100491100492100493100494100495100496100497100498100499100500100501100502100503100504100505100506100507100508100509100510100511100512100513100514100515100516100517100518100519100520100521100522100523100524100525100526100527100528100529100530100531100532100533100534100535100536100537100538100539100540100541100542100543100544100545100546100547100548100549100550100551100552100553100554100555100556100557100558100559100560100561100562100563100564100565100566100567100568100569100570100571100572100573100574100575100576100577100578100579100580100581100582100583100584100585100586100587100588100589100590100591100592100593100594100595100596100597100598100599100600100601100602100603100604100605100606100607100608100609100610100611100612100613100614100615100616100617100618100619100620100621100622100623100624100625100626100627100628100629100630100631100632100633100634100635100636100637100638100639100640100641100642100643100644100645100646100647100648100649100650100651100652100653100654100655100656100657100658100659100660100661100662100663100664100665100666100667100668100669100670100671100672100673100674100675100676100677100678100679100680100681100682100683100684100685100686100687100688100689100690100691100692100693100694100695100696100697100698100699100700100701100702100703100704100705100706100707100708100709100710100711100712100713100714100715100716100717100718100719100720100721100722100723100724100725100726100727100728100729100730100731100732100733100734100735100736100737100738100739100740100741100742100743100744100745100746100747100748100749100750100751100752100753100754100755100756100757100758100759100760100761100762100763100764100765100766100767100768100769100770100771100772100773100774100775100776100777100778100779100780100781100782100783100784100785100786100787100788100789100790100791100792100793100794100795100796100797100798100799100800100801100802100803100804100805100806100807100808100809100810100811100812100813100814100815100816100817100818100819100820100821100822100823100824100825100826100827100828100829100830100831100832100833100834100835100836100837100838100839100840100841100842100843100844100845100846100847100848100849100850100851100852100853100854100855100856100857100858100859100860100861100862100863100864100865100866100867100868100869100870100871100872100873100874100875100876100877100878100879100880100881100882100883100884100885100886100887100888100889100890100891100892100893100894100895100896100897100898100899100900100901100902100903100904100905100906100907100908100909100910100911100912100913100914100915100916100917100918100919100920100921100922100923100924100925100926100927100928100929100930100931100932100933100934100935100936100937100938100939100940100941100942100943100944100945100946100947100948100949100950100951100952100953100954100955100956100957100958100959100960100961100962100963100964100965100966100967100968100969100970100971100972100973100974100975100976100977100978100979100980100981100982100983100984100985100986100987100988100989100990100991100992100993100994100995100996100997100998100999101000101001101002101003101004101005101006101007101008101009101010101011101012101013101014101015101016101017101018101019101020101021101022101023101024101025101026101027101028101029101030101031101032101033101034101035101036101037101038101039101040101041101042101043101044101045101046101047101048101049101050101051101052101053101054101055101056101057101058101059101060101061101062101063101064101065101066101067101068101069101070101071101072101073101074101075101076101077101078101079101080101081101082101083101084101085101086101087101088101089101090101091101092101093101094101095101096101097101098101099101100101101101102101103101104101105101106101107101108101109101110101111101112101113101114101115101116101117101118101119101120101121101122101123101124101125101126101127101128101129101130101131101132101133101134101135101136101137101138101139101140101141101142101143101144101145101146101147101148101149101150101151101152101153101154101155101156101157101158101159101160101161101162101163101164101165101166101167101168101169101170101171101172101173101174101175101176101177101178101179101180101181101182101183101184101185101186101187101188101189101190101191101192101193101194101195101196101197101198101199101200101201101202101203101204101205101206101207101208101209101210101211101212101213101214101215101216101217101218101219101220101221101222101223101224101225101226101227101228101229101230101231101232101233101234101235101236101237101238101239101240101241101242101243101244101245101246101247101248101249101250101251101252101253101254101255101256101257101258101259101260101261101262101263101264101265101266101267101268101269101270101271101272101273101274101275101276101277101278101279101280101281101282101283101284101285101286101287101288101289101290101291101292101293101294101295101296101297101298101299101300101301101302101303101304101305101306101307101308101309101310101311101312101313101314101315101316101317101318101319101320101321101322101323101324101325101326101327101328101329101330101331101332101333101334101335101336101337101338101339101340101341101342101343101344101345101346101347101348101349101350101351101352101353101354101355101356101357101358101359101360101361101362101363101364101365101366101367101368101369101370101371101372101373101374101375101376101377101378101379101380101381101382101383101384101385101386101387101388101389101390101391101392101393101394101395101396101397101398101399101400101401101402101403101404101405101406101407101408101409101410101411101412101413101414101415101416101417101418101419101420101421101422101423101424101425101426101427101428101429101430101431101432101433101434101435101436101437101438101439101440101441101442101443101444101445101446101447101448101449101450101451101452101453101454101455101456101457101458101459101460101461101462101463101464101465101466101467101468101469101470101471101472101473101474101475101476101477101478101479101480101481101482101483101484101485101486101487101488101489101490101491101492101493101494101495101496101497101498101499101500101501101502101503101504101505101506101507101508101509101510101511101512101513101514101515101516101517101518101519101520101521101522101523101524101525101526101527101528101529101530101531101532101533101534101535101536101537101538101539101540101541101542101543101544101545101546101547101548101549101550101551101552101553101554101555101556101557101558101559101560101561101562101563101564101565101566101567101568101569101570101571101572101573101574101575101576101577101578101579101580101581101582101583101584101585101586101587101588101589101590101591101592101593101594101595101596101597101598101599101600101601101602101603101604101605101606101607101608101609101610101611101612101613101614101615101616101617101618101619101620101621101622101623101624101625101626101627101628101629101630101631101632101633101634101635101636101637101638101639101640101641101642101643101644101645101646101647101648101649101650101651101652101653101654101655101656101657101658101659101660101661101662101663101664101665101666101667101668101669101670101671101672101673101674101675101676101677101678101679101680101681101682101683101684101685101686101687101688101689101690101691101692101693101694101695101696101697101698101699101700101701101702101703101704101705101706101707101708101709101710101711101712101713101714101715101716101717101718101719101720101721101722101723101724101725101726101727101728101729101730101731101732101733101734101735101736101737101738101739101740101741101742101743101744101745101746101747101748101749101750101751101752101753101754101755101756101757101758101759101760101761101762101763101764101765101766101767101768101769101770101771101772101773101774101775101776101777101778101779101780101781101782101783101784101785101786101787101788101789101790101791101792101793101794101795101796101797101798101799101800101801101802101803101804101805101806101807101808101809101810101811101812101813101814101815101816101817101818101819101820101821101822101823101824101825101826101827101828101829101830101831101832101833101834101835101836101837101838101839101840101841101842101843101844101845101846101847101848101849101850101851101852101853101854101855101856101857101858101859101860101861101862101863101864101865101866101867101868101869101870101871101872101873101874101875101876101877101878101879101880101881101882101883101884101885101886101887101888101889101890101891101892101893101894101895101896101897101898101899101900101901101902101903101904101905101906101907101908101909101910101911101912101913101914101915101916101917101918101919101920101921101922101923101924101925101926101927101928101929101930101931101932101933101934101935101936101937101938101939101940101941101942101943101944101945101946101947101948101949101950101951101952101953101954101955101956101957101958101959101960101961101962101963101964101965101966101967101968101969101970101971101972101973101974101975101976101977101978101979101980101981101982101983101984101985101986101987101988101989101990101991101992101993101994101995101996101997101998101999102000102001102002102003102004102005102006102007102008102009102010102011102012102013102014102015102016102017102018102019102020102021102022102023102024102025102026102027102028102029102030102031102032102033102034102035102036102037102038102039102040102041102042102043102044102045102046102047102048102049102050102051102052102053102054102055102056102057102058102059102060102061102062102063102064102065102066102067102068102069102070102071102072102073102074102075102076102077102078102079102080102081102082102083102084102085102086102087102088102089102090102091102092102093102094102095102096102097102098102099102100102101102102102103102104102105102106102107102108102109102110102111102112102113102114102115102116102117102118102119102120102121102122102123102124102125102126102127102128102129102130102131102132102133102134102135102136102137102138102139102140102141102142102143102144102145102146102147102148102149102150102151102152102153102154102155102156102157102158102159102160102161102162102163102164102165102166102167102168102169102170102171102172102173102174102175102176102177102178102179102180102181102182102183102184102185102186102187102188102189102190102191102192102193102194102195102196102197102198102199102200102201102202102203102204102205102206102207102208102209102210102211102212102213102214102215102216102217102218102219102220102221102222102223102224102225102226102227102228102229102230102231102232102233102234102235102236102237102238102239102240102241102242102243102244102245102246102247102248102249102250102251102252102253102254102255102256102257102258102259102260102261102262102263102264102265102266102267102268102269102270102271102272102273102274102275102276102277102278102279102280102281102282102283102284102285102286102287102288102289102290102291102292102293102294102295102296102297102298102299102300102301102302102303102304102305102306102307102308102309102310102311102312102313102314102315102316102317102318102319102320102321102322102323102324102325102326102327102328102329102330102331102332102333102334102335102336102337102338102339102340102341102342102343102344102345102346102347102348102349102350102351102352102353102354102355102356102357102358102359102360102361102362102363102364102365102366102367102368102369102370102371102372102373102374102375102376102377102378102379102380102381102382102383102384102385102386102387102388102389102390102391102392102393102394102395102396102397102398102399102400102401102402102403102404102405102406102407102408102409102410102411102412102413102414102415102416102417102418102419102420102421102422102423102424102425102426102427102428102429102430102431102432102433102434102435102436102437102438102439102440102441102442102443102444102445102446102447102448102449102450102451102452102453102454102455102456102457102458102459102460102461102462102463102464102465102466102467102468102469102470102471102472102473102474102475102476102477102478102479102480102481102482102483102484102485102486102487102488102489102490102491102492102493102494102495102496102497102498102499102500102501102502102503102504102505102506102507102508102509102510102511102512102513102514102515102516102517102518102519102520102521102522102523102524102525102526102527102528102529102530102531102532102533102534102535102536102537102538102539102540102541102542102543102544102545102546102547102548102549102550102551102552102553102554102555102556102557102558102559102560102561102562102563102564102565102566102567102568102569102570102571102572102573102574102575102576102577102578102579102580102581102582102583102584102585102586102587102588102589102590102591102592102593102594102595102596102597102598102599102600102601102602102603102604102605102606102607102608102609102610102611102612102613102614102615102616102617102618102619102620102621102622102623102624102625102626102627102628102629102630102631102632102633102634102635102636102637102638102639102640102641102642102643102644102645102646102647102648102649102650102651102652102653102654102655102656102657102658102659102660102661102662102663102664102665102666102667102668102669102670102671102672102673102674102675102676102677102678102679102680102681102682102683102684102685102686102687102688102689102690102691102692102693102694102695102696102697102698102699102700102701102702102703102704102705102706102707102708102709102710102711102712102713102714102715102716102717102718102719102720102721102722102723102724102725102726102727102728102729102730102731102732102733102734102735102736102737102738102739102740102741102742102743102744102745102746102747102748102749102750102751102752102753102754102755102756102757102758102759102760102761102762102763102764102765102766102767102768102769102770102771102772102773102774102775102776102777102778102779102780102781102782102783102784102785102786102787102788102789102790102791102792102793102794102795102796102797102798102799102800102801102802102803102804102805102806102807102808102809102810102811102812102813102814102815102816102817102818102819102820102821102822102823102824102825102826102827102828102829102830102831102832102833102834102835102836102837102838102839102840102841102842102843102844102845102846102847102848102849102850102851102852102853102854102855102856102857102858102859102860102861102862102863102864102865102866102867102868102869102870102871102872102873102874102875102876102877102878102879102880102881102882102883102884102885102886102887102888102889102890102891102892102893102894102895102896102897102898102899102900102901102902102903102904102905102906102907102908102909102910102911102912102913102914102915102916102917102918102919102920102921102922102923102924102925102926102927102928102929102930102931102932102933102934102935102936102937102938102939102940102941102942102943102944102945102946102947102948102949102950102951102952102953102954102955102956102957102958102959102960102961102962102963102964102965102966102967102968102969102970102971102972102973102974102975102976102977102978102979102980102981102982102983102984102985102986102987102988102989102990102991102992102993102994102995102996102997102998102999103000103001103002103003103004103005103006103007103008103009103010103011103012103013103014103015103016103017103018103019103020103021103022103023103024103025103026103027103028103029103030103031103032103033103034103035103036103037103038103039103040103041103042103043103044103045103046103047103048103049103050103051103052103053103054103055103056103057103058103059103060103061103062103063103064103065103066103067103068103069103070103071103072103073103074103075103076103077103078103079103080103081103082103083103084103085103086103087103088103089103090103091103092103093103094103095103096103097103098103099103100103101103102103103103104103105103106103107103108103109103110103111103112103113103114103115103116103117103118103119103120103121103122103123103124103125103126103127103128103129103130103131103132103133103134103135103136103137103138103139103140103141103142103143103144103145103146103147103148103149103150103151103152103153103154103155103156103157103158103159103160103161103162103163103164103165103166103167103168103169103170103171103172103173103174103175103176103177103178103179103180103181103182103183103184103185103186103187103188103189103190103191103192103193103194103195103196103197103198103199103200103201103202103203103204103205103206103207103208103209103210103211103212103213103214103215103216103217103218103219103220103221103222103223103224103225103226103227103228103229103230103231103232103233103234103235103236103237103238103239103240103241103242103243103244103245103246103247103248103249103250103251103252103253103254103255103256103257103258103259103260103261103262103263103264103265103266103267103268103269103270103271103272103273103274103275103276103277103278103279103280103281103282103283103284103285103286103287103288103289103290103291103292103293103294103295103296103297103298103299103300103301103302103303103304103305103306103307103308103309103310103311103312103313103314103315103316103317103318103319103320103321103322103323103324103325103326103327103328103329103330103331103332103333103334103335103336103337103338103339103340103341103342103343103344103345103346103347103348103349103350103351103352103353103354103355103356103357103358103359103360103361103362103363103364103365103366103367103368103369103370103371103372103373103374103375103376103377103378103379103380103381103382103383103384103385103386103387103388103389103390103391103392103393103394103395103396103397103398103399103400103401103402103403103404103405103406103407103408103409103410103411103412103413103414103415103416103417103418103419103420103421103422103423103424103425103426103427103428103429103430103431103432103433103434103435103436103437103438103439103440103441103442103443103444103445103446103447103448103449103450103451103452103453103454103455103456103457103458103459103460103461103462103463103464103465103466103467103468103469103470103471103472103473103474103475103476103477103478103479103480103481103482103483103484103485103486103487103488103489103490103491103492103493103494103495103496103497103498103499103500103501103502103503103504103505103506103507103508103509103510103511103512103513103514103515103516103517103518103519103520103521103522103523103524103525103526103527103528103529103530103531103532103533103534103535103536103537103538103539103540103541103542103543103544103545103546103547103548103549103550103551103552103553103554103555103556103557103558103559103560103561103562103563103564103565103566103567103568103569103570103571103572103573103574103575103576103577103578103579103580103581103582103583103584103585103586103587103588103589103590103591103592103593103594103595103596103597103598103599103600103601103602103603103604103605103606103607103608103609103610103611103612103613103614103615103616103617103618103619103620103621103622103623103624103625103626103627103628103629103630103631103632103633103634103635103636103637103638103639103640103641103642103643103644103645103646103647103648103649103650103651103652103653103654103655103656103657103658103659103660103661103662103663103664103665103666103667103668103669103670103671103672103673103674103675103676103677103678103679103680103681103682103683103684103685103686103687103688103689103690103691103692103693103694103695103696103697103698103699103700103701103702103703103704103705103706103707103708103709103710103711103712103713103714103715103716103717103718103719103720103721103722103723103724103725103726103727103728103729103730103731103732103733103734103735103736103737103738103739103740103741103742103743103744103745103746103747103748103749103750103751103752103753103754103755103756103757103758103759103760103761103762103763103764103765103766103767103768103769103770103771103772103773103774103775103776103777103778103779103780103781103782103783103784103785103786103787103788103789103790103791103792103793103794103795103796103797103798103799103800103801103802103803103804103805103806103807103808103809103810103811103812103813103814103815103816103817103818103819103820103821103822103823103824103825103826103827103828103829103830103831103832103833103834103835103836103837103838103839103840103841103842103843103844103845103846103847103848103849103850103851103852103853103854103855103856103857103858103859103860103861103862103863103864103865103866103867103868103869103870103871103872103873103874103875103876103877103878103879103880103881103882103883103884103885103886103887103888103889103890103891103892103893103894103895103896103897103898103899103900103901103902103903103904103905103906103907103908103909103910103911103912103913103914103915103916103917103918103919103920103921103922103923103924103925103926103927103928103929103930103931103932103933103934103935103936103937103938103939103940103941103942103943103944103945103946103947103948103949103950103951103952103953103954103955103956103957103958103959103960103961103962103963103964103965103966103967103968103969103970103971103972103973103974103975103976103977103978103979103980103981103982103983103984103985103986103987103988103989103990103991103992103993103994103995103996103997103998103999104000104001104002104003104004104005104006104007104008104009104010104011104012104013104014104015104016104017104018104019104020104021104022104023104024104025104026104027104028104029104030104031104032104033104034104035104036104037104038104039104040104041104042104043104044104045104046104047104048104049104050104051104052104053104054104055104056104057104058104059104060104061104062104063104064104065104066104067104068104069104070104071104072104073104074104075104076104077104078104079104080104081104082104083104084104085104086104087104088104089104090104091104092104093104094104095104096104097104098104099104100104101104102104103104104104105104106104107104108104109104110104111104112104113104114104115104116104117104118104119104120104121104122104123104124104125104126104127104128104129104130104131104132104133104134104135104136104137104138104139104140104141104142104143104144104145104146104147104148104149104150104151104152104153104154104155104156104157104158104159104160104161104162104163104164104165104166104167104168104169104170104171104172104173104174104175104176104177104178104179104180104181104182104183104184104185104186104187104188104189104190104191104192104193104194104195104196104197104198104199104200104201104202104203104204104205104206104207104208104209104210104211104212104213104214104215104216104217104218104219104220104221104222104223104224104225104226104227104228104229104230104231104232104233104234104235104236104237104238104239104240104241104242104243104244104245104246104247104248104249104250104251104252104253104254104255104256104257104258104259104260104261104262104263104264104265104266104267104268104269104270104271104272104273104274104275104276104277104278104279104280104281104282104283104284104285104286104287104288104289104290104291104292104293104294104295104296104297104298104299104300104301104302104303104304104305104306104307104308104309104310104311104312104313104314104315104316104317104318104319104320104321104322104323104324104325104326104327104328104329104330104331104332104333104334104335104336104337104338104339104340104341104342104343104344104345104346104347104348104349104350104351104352104353104354104355104356104357104358104359104360104361104362104363104364104365104366104367104368104369104370104371104372104373104374104375104376104377104378104379104380104381104382104383104384104385104386104387104388104389104390104391104392104393104394104395104396104397104398104399104400104401104402104403104404104405104406104407104408104409104410104411104412104413104414104415104416104417104418104419104420104421104422104423104424104425104426104427104428104429104430104431104432104433104434104435104436104437104438104439104440104441104442104443104444104445104446104447104448104449104450104451104452104453104454104455104456104457104458104459104460104461104462104463104464104465104466104467104468104469104470104471104472104473104474104475104476104477104478104479104480104481104482104483104484104485104486104487104488104489104490104491104492104493104494104495104496104497104498104499104500104501104502104503104504104505104506104507104508104509104510104511104512104513104514104515104516104517104518104519104520104521104522104523104524104525104526104527104528104529104530104531104532104533104534104535104536104537104538104539104540104541104542104543104544104545104546104547104548104549104550104551104552104553104554104555104556104557104558104559104560104561104562104563104564104565104566104567104568104569104570104571104572104573104574104575104576104577104578104579104580104581104582104583104584104585104586104587104588104589104590104591104592104593104594104595104596104597104598104599104600104601104602104603104604104605104606104607104608104609104610104611104612104613104614104615104616104617104618104619104620104621104622104623104624104625104626104627104628104629104630104631104632104633104634104635104636104637104638104639104640104641104642104643104644104645104646104647104648104649104650104651104652104653104654104655104656104657104658104659104660104661104662104663104664104665104666104667104668104669104670104671104672104673104674104675104676104677104678104679104680104681104682104683104684104685104686104687104688104689104690104691104692104693104694104695104696104697104698104699104700104701104702104703104704104705104706104707104708104709104710104711104712104713104714104715104716104717104718104719104720104721104722104723104724104725104726104727104728104729104730104731104732104733104734104735104736104737104738104739104740104741104742104743104744104745104746104747104748104749104750104751104752104753104754104755104756104757104758104759104760104761104762104763104764104765104766104767104768104769104770104771104772104773104774104775104776104777104778104779104780104781104782104783104784104785104786104787104788104789104790104791104792104793104794104795104796104797104798104799104800104801104802104803104804104805104806104807104808104809104810104811104812104813104814104815104816104817104818104819104820104821104822104823104824104825104826104827104828104829104830104831104832104833104834104835104836104837104838104839104840104841104842104843104844104845104846104847104848104849104850104851104852104853104854104855104856104857104858104859104860104861104862104863104864104865104866104867104868104869104870104871104872104873104874104875104876104877104878104879104880104881104882104883104884104885104886104887104888104889104890104891104892104893104894104895104896104897104898104899104900104901104902104903104904104905104906104907104908104909104910104911104912104913104914104915104916104917104918104919104920104921104922104923104924104925104926104927104928104929104930104931104932104933104934104935104936104937104938104939104940104941104942104943104944104945104946104947104948104949104950104951104952104953104954104955104956104957104958104959104960104961104962104963104964104965104966104967104968104969104970104971104972104973104974104975104976104977104978104979104980104981104982104983104984104985104986104987104988104989104990104991104992104993104994104995104996104997104998104999105000105001105002105003105004105005105006105007105008105009105010105011105012105013105014105015105016105017105018105019105020105021105022105023105024105025105026105027105028105029105030105031105032105033105034105035105036105037105038105039105040105041105042105043105044105045105046105047105048105049105050105051105052105053105054105055105056105057105058105059105060105061105062105063105064105065105066105067105068105069105070105071105072105073105074105075105076105077105078105079105080105081105082105083105084105085105086105087105088105089105090105091105092105093105094105095105096105097105098105099105100105101105102105103105104105105105106105107105108105109105110105111105112105113105114105115105116105117105118105119105120105121105122105123105124105125105126105127105128105129105130105131105132105133105134105135105136105137105138105139105140105141105142105143105144105145105146105147105148105149105150105151105152105153105154105155105156105157105158105159105160105161105162105163105164105165105166105167105168105169105170105171105172105173105174105175105176105177105178105179105180105181105182105183105184105185105186105187105188105189105190105191105192105193105194105195105196105197105198105199105200105201105202105203105204105205105206105207105208105209105210105211105212105213105214105215105216105217105218105219105220105221105222105223105224105225105226105227105228105229105230105231105232105233105234105235105236105237105238105239105240105241105242105243105244105245105246105247105248105249105250105251105252105253105254105255105256105257105258105259105260105261105262105263105264105265105266105267105268105269105270105271105272105273105274105275105276105277105278105279105280105281105282105283105284105285105286105287105288105289105290105291105292105293105294105295105296105297105298105299105300105301105302105303105304105305105306105307105308105309105310105311105312105313105314105315105316105317105318105319105320105321105322105323105324105325105326105327105328105329105330105331105332105333105334105335105336105337105338105339105340105341105342105343105344105345105346105347105348105349105350105351105352105353105354105355105356105357105358105359105360105361105362105363105364105365105366105367105368105369105370105371105372105373105374105375105376105377105378105379105380105381105382105383105384105385105386105387105388105389105390105391105392105393105394105395105396105397105398105399105400105401105402105403105404105405105406105407105408105409105410105411105412105413105414105415105416105417105418105419105420105421105422105423105424105425105426105427105428105429105430105431105432105433105434105435105436105437105438105439105440105441105442105443105444105445105446105447105448105449105450105451105452105453105454105455105456105457105458105459105460105461105462105463105464105465105466105467105468105469105470105471105472105473105474105475105476105477105478105479105480105481105482105483105484105485105486105487105488105489105490105491105492105493105494105495105496105497105498105499105500105501105502105503105504105505105506105507105508105509105510105511105512105513105514105515105516105517105518105519105520105521105522105523105524105525105526105527105528105529105530105531105532105533105534105535105536105537105538105539105540105541105542105543105544105545105546105547105548105549105550105551105552105553105554105555105556105557105558105559105560105561105562105563105564105565105566105567105568105569105570105571105572105573105574105575105576105577105578105579105580105581105582105583105584105585105586105587105588105589105590105591105592105593105594105595105596105597105598105599105600105601105602105603105604105605105606105607105608105609105610105611105612105613105614105615105616105617105618105619105620105621105622105623105624105625105626105627105628105629105630105631105632105633105634105635105636105637105638105639105640105641105642105643105644105645105646105647105648105649105650105651105652105653105654105655105656105657105658105659105660105661105662105663105664105665105666105667105668105669105670105671105672105673105674105675105676105677105678105679105680105681105682105683105684105685105686105687105688105689105690105691105692105693105694105695105696105697105698105699105700105701105702105703105704105705105706105707105708105709105710105711105712105713105714105715105716105717105718105719105720105721105722105723105724105725105726105727105728105729105730105731105732105733105734105735105736105737105738105739105740105741105742105743105744105745105746105747105748105749105750105751105752105753105754105755105756105757105758105759105760105761105762105763105764105765105766105767105768105769105770105771105772105773105774105775105776105777105778105779105780105781105782105783105784105785105786105787105788105789105790105791105792105793105794105795105796105797105798105799105800105801105802105803105804105805105806105807105808105809105810105811105812105813105814105815105816105817105818105819105820105821105822105823105824105825105826105827105828105829105830105831105832105833105834105835105836105837105838105839105840105841105842105843105844105845105846105847105848105849105850105851105852105853105854105855105856105857105858105859105860105861105862105863105864105865105866105867105868105869105870105871105872105873105874105875105876105877105878105879105880105881105882105883105884105885105886105887105888105889105890105891105892105893105894105895105896105897105898105899105900105901105902105903105904105905105906105907105908105909105910105911105912105913105914105915105916105917105918105919105920105921105922105923105924105925105926105927105928105929105930105931105932105933105934105935105936105937105938105939105940105941105942105943105944105945105946105947105948105949105950105951105952105953105954105955105956105957105958105959105960105961105962105963105964105965105966105967105968105969105970105971105972105973105974105975105976105977105978105979105980105981105982105983105984105985105986105987105988105989105990105991105992105993105994105995105996105997105998105999106000106001106002106003106004106005106006106007106008106009106010106011106012106013106014106015106016106017106018106019106020106021106022106023106024106025106026106027106028106029106030106031106032106033106034106035106036106037106038106039106040106041106042106043106044106045106046106047106048106049106050106051106052106053106054106055106056106057106058106059106060106061106062106063106064106065106066106067106068106069106070106071106072106073106074106075106076106077106078106079106080106081106082106083106084106085106086106087106088106089106090106091106092106093106094106095106096106097106098106099106100106101106102106103106104106105106106106107106108106109106110106111106112106113106114106115106116106117106118106119106120106121106122106123106124106125106126106127106128106129106130106131106132106133106134106135106136106137106138106139106140106141106142106143106144106145106146106147106148106149106150106151106152106153106154106155106156106157106158106159106160106161106162106163106164106165106166106167106168106169106170106171106172106173106174106175106176106177106178106179106180106181106182106183106184106185106186106187106188106189106190106191106192106193106194106195106196106197106198106199106200106201106202106203106204106205106206106207106208106209106210106211106212106213106214106215106216106217106218106219106220106221106222106223106224106225106226106227106228106229106230106231106232106233106234106235106236106237106238106239106240106241106242106243106244106245106246106247106248106249106250106251106252106253106254106255106256106257106258106259106260106261106262106263106264106265106266106267106268106269106270106271106272106273106274106275106276106277106278106279106280106281106282106283106284106285106286106287106288106289106290106291106292106293106294106295106296106297106298106299106300106301106302106303106304106305106306106307106308106309106310106311106312106313106314106315106316106317106318106319106320106321106322106323106324106325106326106327106328106329106330106331106332106333106334106335106336106337106338106339106340106341106342106343106344106345106346106347106348106349106350106351106352106353106354106355106356106357106358106359106360106361106362106363106364106365106366106367106368106369106370106371106372106373106374106375106376106377106378106379106380106381106382106383106384106385106386106387106388106389106390106391106392106393106394106395106396106397106398106399106400106401106402106403106404106405106406106407106408106409106410106411106412106413106414106415106416106417106418106419106420106421106422106423106424106425106426106427106428106429106430106431106432106433106434106435106436106437106438106439106440106441106442106443106444106445106446106447106448106449106450106451106452106453106454106455106456106457106458106459106460106461106462106463106464106465106466106467106468106469106470106471106472106473106474106475106476106477106478106479106480106481106482106483106484106485106486106487106488106489106490106491106492106493106494106495106496106497106498106499106500106501106502106503106504106505106506106507106508106509106510106511106512106513106514106515106516106517106518106519106520106521106522106523106524106525106526106527106528106529106530106531106532106533106534106535106536106537106538106539106540106541106542106543106544106545106546106547106548106549106550106551106552106553106554106555106556106557106558106559106560106561106562106563106564106565106566106567106568106569106570106571106572106573106574106575106576106577106578106579106580106581106582106583106584106585106586106587106588106589106590106591106592106593106594106595106596106597106598106599106600106601106602106603106604106605106606106607106608106609106610106611106612106613106614106615106616106617106618106619106620106621106622106623106624106625106626106627106628106629106630106631106632106633106634106635106636106637106638106639106640106641106642106643106644106645106646106647106648106649106650106651106652106653106654106655106656106657106658106659106660106661106662106663106664106665106666106667106668106669106670106671106672106673106674106675106676106677106678106679106680106681106682106683106684106685106686106687106688106689106690106691106692106693106694106695106696106697106698106699106700106701106702106703106704106705106706106707106708106709106710106711106712106713106714106715106716106717106718106719106720106721106722106723106724106725106726106727106728106729106730106731106732106733106734106735106736106737106738106739106740106741106742106743106744106745106746106747106748106749106750106751106752106753106754106755106756106757106758106759106760106761106762106763106764106765106766106767106768106769106770106771106772106773106774106775106776106777106778106779106780106781106782106783106784106785106786106787106788106789106790106791106792106793106794106795106796106797106798106799106800106801106802106803106804106805106806106807106808106809106810106811106812106813106814106815106816106817106818106819106820106821106822106823106824106825106826106827106828106829106830106831106832106833106834106835106836106837106838106839106840106841106842106843106844106845106846106847106848106849106850106851106852106853106854106855106856106857106858106859106860106861106862106863106864106865106866106867106868106869106870106871106872106873106874106875106876106877106878106879106880106881106882106883106884106885106886106887106888106889106890106891106892106893106894106895106896106897106898106899106900106901106902106903106904106905106906106907106908106909106910106911106912106913106914106915106916106917106918106919106920106921106922106923106924106925106926106927106928106929106930106931106932106933106934106935106936106937106938106939106940106941106942106943106944106945106946106947106948106949106950106951106952106953106954106955106956106957106958106959106960106961106962106963106964106965106966106967106968106969106970106971106972106973106974106975106976106977106978106979106980106981106982106983106984106985106986106987106988106989106990106991106992106993106994106995106996106997106998106999107000107001107002107003107004107005107006107007107008107009107010107011107012107013107014107015107016107017107018107019107020107021107022107023107024107025107026107027107028107029107030107031107032107033107034107035107036107037107038107039107040107041107042107043107044107045107046107047107048107049107050107051107052107053107054107055107056107057107058107059107060107061107062107063107064107065107066107067107068107069107070107071107072107073107074107075107076107077107078107079107080107081107082107083107084107085107086107087107088107089107090107091107092107093107094107095107096107097107098107099107100107101107102107103107104107105107106107107107108107109107110107111107112107113107114107115107116107117107118107119107120107121107122107123107124107125107126107127107128107129107130107131107132107133107134107135107136107137107138107139107140107141107142107143107144107145107146107147107148107149107150107151107152107153107154107155107156107157107158107159107160107161107162107163107164107165107166107167107168107169107170107171107172107173107174107175107176107177107178107179107180107181107182107183107184107185107186107187107188107189107190107191107192107193107194107195107196107197107198107199107200107201107202107203107204107205107206107207107208107209107210107211107212107213107214107215107216107217107218107219107220107221107222107223107224107225107226107227107228107229107230107231107232107233107234107235107236107237107238107239107240107241107242107243107244107245107246107247107248107249107250107251107252107253107254107255107256107257107258107259107260107261107262107263107264107265107266107267107268107269107270107271107272107273107274107275107276107277107278107279107280107281107282107283107284107285107286107287107288107289107290107291107292107293107294107295107296107297107298107299107300107301107302107303107304107305107306107307107308107309107310107311107312107313107314107315107316107317107318107319107320107321107322107323107324107325107326107327107328107329107330107331107332107333107334107335107336107337107338107339107340107341107342107343107344107345107346107347107348107349107350107351107352107353107354107355107356107357107358107359107360107361107362107363107364107365107366107367107368107369107370107371107372107373107374107375107376107377107378107379107380107381107382107383107384107385107386107387107388107389107390107391107392107393107394107395107396107397107398107399107400107401107402107403107404107405107406107407107408107409107410107411107412107413107414107415107416107417107418107419107420107421107422107423107424107425107426107427107428107429107430107431107432107433107434107435107436107437107438107439107440107441107442107443107444107445107446107447107448107449107450107451107452107453107454107455107456107457107458107459107460107461107462107463107464107465107466107467107468107469107470107471107472107473107474107475107476107477107478107479107480107481107482107483107484107485107486107487107488107489107490107491107492107493107494107495107496107497107498107499107500107501107502107503107504107505107506107507107508107509107510107511107512107513107514107515107516107517107518107519107520107521107522107523107524107525107526107527107528107529107530107531107532107533107534107535107536107537107538107539107540107541107542107543107544107545107546107547107548107549107550107551107552107553107554107555107556107557107558107559107560107561107562107563107564107565107566107567107568107569107570107571107572107573107574107575107576107577107578107579107580107581107582107583107584107585107586107587107588107589107590107591107592107593107594107595107596107597107598107599107600107601107602107603107604107605107606107607107608107609107610107611107612107613107614107615107616107617107618107619107620107621107622107623107624107625107626107627107628107629107630107631107632107633107634107635107636107637107638107639107640107641107642107643107644107645107646107647107648107649107650107651107652107653107654107655107656107657107658107659107660107661107662107663107664107665107666107667107668107669107670107671107672107673107674107675107676107677107678107679107680107681107682107683107684107685107686107687107688107689107690107691107692107693107694107695107696107697107698107699107700107701107702107703107704107705107706107707107708107709107710107711107712107713107714107715107716107717107718107719107720107721107722107723107724107725107726107727107728107729107730107731107732107733107734107735107736107737107738107739107740107741107742107743107744107745107746107747107748107749107750107751107752107753107754107755107756107757107758107759107760107761107762107763107764107765107766107767107768107769107770107771107772107773107774107775107776107777107778107779107780107781107782107783107784107785107786107787107788107789107790107791107792107793107794107795107796107797107798107799107800107801107802107803107804107805107806107807107808107809107810107811107812107813107814107815107816107817107818107819107820107821107822107823107824107825107826107827107828107829107830107831107832107833107834107835107836107837107838107839107840107841107842107843107844107845107846107847107848107849107850107851107852107853107854107855107856107857107858107859107860107861107862107863107864107865107866107867107868107869107870107871107872107873107874107875107876107877107878107879107880107881107882107883107884107885107886107887107888107889107890107891107892107893107894107895107896107897107898107899107900107901107902107903107904107905107906107907107908107909107910107911107912107913107914107915107916107917107918107919107920107921107922107923107924107925107926107927107928107929107930107931107932107933107934107935107936107937107938107939107940107941107942107943107944107945107946107947107948107949107950107951107952107953107954107955107956107957107958107959107960107961107962107963107964107965107966107967107968107969107970107971107972107973107974107975107976107977107978107979107980107981107982107983107984107985107986107987107988107989107990107991107992107993107994107995107996107997107998107999108000108001108002108003108004108005108006108007108008108009108010108011108012108013108014108015108016108017108018108019108020108021108022108023108024108025108026108027108028108029108030108031108032108033108034108035108036108037108038108039108040108041108042108043108044108045108046108047108048108049108050108051108052108053108054108055108056108057108058108059108060108061108062108063108064108065108066108067108068108069108070108071108072108073108074108075108076108077108078108079108080108081108082108083108084108085108086108087108088108089108090108091108092108093108094108095108096108097108098108099108100108101108102108103108104108105108106108107108108108109108110108111108112108113108114108115108116108117108118108119108120108121108122108123108124108125108126108127108128108129108130108131108132108133108134108135108136108137108138108139108140108141108142108143108144108145108146108147108148108149108150108151108152108153108154108155108156108157108158108159108160108161108162108163108164108165108166108167108168108169108170108171108172108173108174108175108176108177108178108179108180108181108182108183108184108185108186108187108188108189108190108191108192108193108194108195108196108197108198108199108200108201108202108203108204108205108206108207108208108209108210108211108212108213108214108215108216108217108218108219108220108221108222108223108224108225108226108227108228108229108230108231108232108233108234108235108236108237108238108239108240108241108242108243108244108245108246108247108248108249108250108251108252108253108254108255108256108257108258108259108260108261108262108263108264108265108266108267108268108269108270108271108272108273108274108275108276108277108278108279108280108281108282108283108284108285108286108287108288108289108290108291108292108293108294108295108296108297108298108299108300108301108302108303108304108305108306108307108308108309108310108311108312108313108314108315108316108317108318108319108320108321108322108323108324108325108326108327108328108329108330108331108332108333108334108335108336108337108338108339108340108341108342108343108344108345108346108347108348108349108350108351108352108353108354108355108356108357108358108359108360108361108362108363108364108365108366108367108368108369108370108371108372108373108374108375108376108377108378108379108380108381108382108383108384108385108386108387108388108389108390108391108392108393108394108395108396108397108398108399108400108401108402108403108404108405108406108407108408108409108410108411108412108413108414108415108416108417108418108419108420108421108422108423108424108425108426108427108428108429108430108431108432108433108434108435108436108437108438108439108440108441108442108443108444108445108446108447108448108449108450108451108452108453108454108455108456108457108458108459108460108461108462108463108464108465108466108467108468108469108470108471108472108473108474108475108476108477108478108479108480108481108482108483108484108485108486108487108488108489108490108491108492108493108494108495108496108497108498108499108500108501108502108503108504108505108506108507108508108509108510108511108512108513108514108515108516108517108518108519108520108521108522108523108524108525108526108527108528108529108530108531108532108533108534108535108536108537108538108539108540108541108542108543108544108545108546108547108548108549108550108551108552108553108554108555108556108557108558108559108560108561108562108563108564108565108566108567108568108569108570108571108572108573108574108575108576108577108578108579108580108581108582108583108584108585108586108587108588108589108590108591108592108593108594108595108596108597108598108599108600108601108602108603108604108605108606108607108608108609108610108611108612108613108614108615108616108617108618108619108620108621108622108623108624108625108626108627108628108629108630108631108632108633108634108635108636108637108638108639108640108641108642108643108644108645108646108647108648108649108650108651108652108653108654108655108656108657108658108659108660108661108662108663108664108665108666108667108668108669108670108671108672108673108674108675108676108677108678108679108680108681108682108683108684108685108686108687108688108689108690108691108692108693108694108695108696108697108698108699108700108701108702108703108704108705108706108707108708108709108710108711108712108713108714108715108716108717108718108719108720108721108722108723108724108725108726108727108728108729108730108731108732108733108734108735108736108737108738108739108740108741108742108743108744108745108746108747108748108749108750108751108752108753108754108755108756108757108758108759108760108761108762108763108764108765108766108767108768108769108770108771108772108773108774108775108776108777108778108779108780108781108782108783108784108785108786108787108788108789108790108791108792108793108794108795108796108797108798108799108800108801108802108803108804108805108806108807108808108809108810108811108812108813108814108815108816108817108818108819108820108821108822108823108824108825108826108827108828108829108830108831108832108833108834108835108836108837108838108839108840108841108842108843108844108845108846108847108848108849108850108851108852108853108854108855108856108857108858108859108860108861108862108863108864108865108866108867108868108869108870108871108872108873108874108875108876108877108878108879108880108881108882108883108884108885108886108887108888108889108890108891108892108893108894108895108896108897108898108899108900108901108902108903108904108905108906108907108908108909108910108911108912108913108914108915108916108917108918108919108920108921108922108923108924108925108926108927108928108929108930108931108932108933108934108935108936108937108938108939108940108941108942108943108944108945108946108947108948108949108950108951108952108953108954108955108956108957108958108959108960108961108962108963108964108965108966108967108968108969108970108971108972108973108974108975108976108977108978108979108980108981108982108983108984108985108986108987108988108989108990108991108992108993108994108995108996108997108998108999109000109001109002109003109004109005109006109007109008109009109010109011109012109013109014109015109016109017109018109019109020109021109022109023109024109025109026109027109028109029109030109031109032109033109034109035109036109037109038109039109040109041109042109043109044109045109046109047109048109049109050109051109052109053109054109055109056109057109058109059109060109061109062109063109064109065109066109067109068109069109070109071109072109073109074109075109076109077109078109079109080109081109082109083109084109085109086109087109088109089109090109091109092109093109094109095109096109097109098109099109100109101109102109103109104109105109106109107109108109109109110109111109112109113109114109115109116109117109118109119109120109121109122109123109124109125109126109127109128109129109130109131109132109133109134109135109136109137109138109139109140109141109142109143109144109145109146109147109148109149109150109151109152109153109154109155109156109157109158109159109160109161109162109163109164109165109166109167109168109169109170109171109172109173109174109175109176109177109178109179109180109181109182109183109184109185109186109187109188109189109190109191109192109193109194109195109196109197109198109199109200109201109202109203109204109205109206109207109208109209109210109211109212109213109214109215109216109217109218109219109220109221109222109223109224109225109226109227109228109229109230109231109232109233109234109235109236109237109238109239109240109241109242109243109244109245109246109247109248109249109250109251109252109253109254109255109256109257109258109259109260109261109262109263109264109265109266109267109268109269109270109271109272109273109274109275109276109277109278109279109280109281109282109283109284109285109286109287109288109289109290109291109292109293109294109295109296109297109298109299109300109301109302109303109304109305109306109307109308109309109310109311109312109313109314109315109316109317109318109319109320109321109322109323109324109325109326109327109328109329109330109331109332109333109334109335109336109337109338109339109340109341109342109343109344109345109346109347109348109349109350109351109352109353109354109355109356109357109358109359109360109361109362109363109364109365109366109367109368109369109370109371109372109373109374109375109376109377109378109379109380109381109382109383109384109385109386109387109388109389109390109391109392109393109394109395109396109397109398109399109400109401109402109403109404109405109406109407109408109409109410109411109412109413109414109415109416109417109418109419109420109421109422109423109424109425109426109427109428109429109430109431109432109433109434109435109436109437109438109439109440109441109442109443109444109445109446109447109448109449109450109451109452109453109454109455109456109457109458109459109460109461109462109463109464109465109466109467109468109469109470109471109472109473109474109475109476109477109478109479109480109481109482109483109484109485109486109487109488109489109490109491109492109493109494109495109496109497109498109499109500109501109502109503109504109505109506109507109508109509109510109511109512109513109514109515109516109517109518109519109520109521109522109523109524109525109526109527109528109529109530109531109532109533109534109535109536109537109538109539109540109541109542109543109544109545109546109547109548109549109550109551109552109553109554109555109556109557109558109559109560109561109562109563109564109565109566109567109568109569109570109571109572109573109574109575109576109577109578109579109580109581109582109583109584109585109586109587109588109589109590109591109592109593109594109595109596109597109598109599109600109601109602109603109604109605109606109607109608109609109610109611109612109613109614109615109616109617109618109619109620109621109622109623109624109625109626109627109628109629109630109631109632109633109634109635109636109637109638109639109640109641109642109643109644109645109646109647109648109649109650109651109652109653109654109655109656109657109658109659109660109661109662109663109664109665109666109667109668109669109670109671109672109673109674109675109676109677109678109679109680109681109682109683109684109685109686109687109688109689109690109691109692109693109694109695109696109697109698109699109700109701109702109703109704109705109706109707109708109709109710109711109712109713109714109715109716109717109718109719109720109721109722109723109724109725109726109727109728109729109730109731109732109733109734109735109736109737109738109739109740109741109742109743109744109745109746109747109748109749109750109751109752109753109754109755109756109757109758109759109760109761109762109763109764109765109766109767109768109769109770109771109772109773109774109775109776109777109778109779109780109781109782109783109784109785109786109787109788109789109790109791109792109793109794109795109796109797109798109799109800109801109802109803109804109805109806109807109808109809109810109811109812109813109814109815109816109817109818109819109820109821109822109823109824109825109826109827109828109829109830109831109832109833109834109835109836109837109838109839109840109841109842109843109844109845109846109847109848109849109850109851109852109853109854109855109856109857109858109859109860109861109862109863109864109865109866109867109868109869109870109871109872109873109874109875109876109877109878109879109880109881109882109883109884109885109886109887109888109889109890109891109892109893109894109895109896109897109898109899109900109901109902109903109904109905109906109907109908109909109910109911109912109913109914109915109916109917109918109919109920109921109922109923109924109925109926109927109928109929109930109931109932109933109934109935109936109937109938109939109940109941109942109943109944109945109946109947109948109949109950109951109952109953109954109955109956109957109958109959109960109961109962109963109964109965109966109967109968109969109970109971109972109973109974109975109976109977109978109979109980109981109982109983109984109985109986109987109988109989109990109991109992109993109994109995109996109997109998109999110000110001110002110003110004110005110006110007110008110009110010110011110012110013110014110015110016110017110018110019110020110021110022110023110024110025110026110027110028110029110030110031110032110033110034110035110036110037110038110039110040110041110042110043110044110045110046110047110048110049110050110051110052110053110054110055110056110057110058110059110060110061110062110063110064110065110066110067110068110069110070110071110072110073110074110075110076110077110078110079110080110081110082110083110084110085110086110087110088110089110090110091110092110093110094110095110096110097110098110099110100110101110102110103110104110105110106110107110108110109110110110111110112110113110114110115110116110117110118110119110120110121110122110123110124110125110126110127110128110129110130110131110132110133110134110135110136110137110138110139110140110141110142110143110144110145110146110147110148110149110150110151110152110153110154110155110156110157110158110159110160110161110162110163110164110165110166110167110168110169110170110171110172110173110174110175110176110177110178110179110180110181110182110183110184110185110186110187110188110189110190110191110192110193110194110195110196110197110198110199110200110201110202110203110204110205110206110207110208110209110210110211110212110213110214110215110216110217110218110219110220110221110222110223110224110225110226110227110228110229110230110231110232110233110234110235110236110237110238110239110240110241110242110243110244110245110246110247110248110249110250110251110252110253110254110255110256110257110258110259110260110261110262110263110264110265110266110267110268110269110270110271110272110273110274110275110276110277110278110279110280110281110282110283110284110285110286110287110288110289110290110291110292110293110294110295110296110297110298110299110300110301110302110303110304110305110306110307110308110309110310110311110312110313110314110315110316110317110318110319110320110321110322110323110324110325110326110327110328110329110330110331110332110333110334110335110336110337110338110339110340110341110342110343110344110345110346110347110348110349110350110351110352110353110354110355110356110357110358110359110360110361110362110363110364110365110366110367110368110369110370110371110372110373110374110375110376110377110378110379110380110381110382110383110384110385110386110387110388110389110390110391110392110393110394110395110396110397110398110399110400110401110402110403110404110405110406110407110408110409110410110411110412110413110414110415110416110417110418110419110420110421110422110423110424110425110426110427110428110429110430110431110432110433110434110435110436110437110438110439110440110441110442110443110444110445110446110447110448110449110450110451110452110453110454110455110456110457110458110459110460110461110462110463110464110465110466110467110468110469110470110471110472110473110474110475110476110477110478110479110480110481110482110483110484110485110486110487110488110489110490110491110492110493110494110495110496110497110498110499110500110501110502110503110504110505110506110507110508110509110510110511110512110513110514110515110516110517110518110519110520110521110522110523110524110525110526110527110528110529110530110531110532110533110534110535110536110537110538110539110540110541110542110543110544110545110546110547110548110549110550110551110552110553110554110555110556110557110558110559110560110561110562110563110564110565110566110567110568110569110570110571110572110573110574110575110576110577110578110579110580110581110582110583110584110585110586110587110588110589110590110591110592110593110594110595110596110597110598110599110600110601110602110603110604110605110606110607110608110609110610110611110612110613110614110615110616110617110618110619110620110621110622110623110624110625110626110627110628110629110630110631110632110633110634110635110636110637110638110639110640110641110642110643110644110645110646110647110648110649110650110651110652110653110654110655110656110657110658110659110660110661110662110663110664110665110666110667110668110669110670110671110672110673110674110675110676110677110678110679110680110681110682110683110684110685110686110687110688110689110690110691110692110693110694110695110696110697110698110699110700110701110702110703110704110705110706110707110708110709110710110711110712110713110714110715110716110717110718110719110720110721110722110723110724110725110726110727110728110729110730110731110732110733110734110735110736110737110738110739110740110741110742110743110744110745110746110747110748110749110750110751110752110753110754110755110756110757110758110759110760110761110762110763110764110765110766110767110768110769110770110771110772110773110774110775110776110777110778110779110780110781110782110783110784110785110786110787110788110789110790110791110792110793110794110795110796110797110798110799110800110801110802110803110804110805110806110807110808110809110810110811110812110813110814110815110816110817110818110819110820110821110822110823110824110825110826110827110828110829110830110831110832110833110834110835110836110837110838110839110840110841110842110843110844110845110846110847110848110849110850110851110852110853110854110855110856110857110858110859110860110861110862110863110864110865110866110867110868110869110870110871110872110873110874110875110876110877110878110879110880110881110882110883110884110885110886110887110888110889110890110891110892110893110894110895110896110897110898110899110900110901110902110903110904110905110906110907110908110909110910110911110912110913110914110915110916110917110918110919110920110921110922110923110924110925110926110927110928110929110930110931110932110933110934110935110936110937110938110939110940110941110942110943110944110945110946110947110948110949110950110951110952110953110954110955110956110957110958110959110960110961110962110963110964110965110966110967110968110969110970110971110972110973110974110975110976110977110978110979110980110981110982110983110984110985110986110987110988110989110990110991110992110993110994110995110996110997110998110999111000111001111002111003111004111005111006111007111008111009111010111011111012111013111014111015111016111017111018111019111020111021111022111023111024111025111026111027111028111029111030111031111032111033111034111035111036111037111038111039111040111041111042111043111044111045111046111047111048111049111050111051111052111053111054111055111056111057111058111059111060111061111062111063111064111065111066111067111068111069111070111071111072111073111074111075111076111077111078111079111080111081111082111083111084111085111086111087111088111089111090111091111092111093111094111095111096111097111098111099111100111101111102111103111104111105111106111107111108111109111110111111111112111113111114111115111116111117111118111119111120111121111122111123111124111125111126111127111128111129111130111131111132111133111134111135111136111137111138111139111140111141111142111143111144111145111146111147111148111149111150111151111152111153111154111155111156111157111158111159111160111161111162111163111164111165111166111167111168111169111170111171111172111173111174111175111176111177111178111179111180111181111182111183111184111185111186111187111188111189111190111191111192111193111194111195111196111197111198111199111200111201111202111203111204111205111206111207111208111209111210111211111212111213111214111215111216111217111218111219111220111221111222111223111224111225111226111227111228111229111230111231111232111233111234111235111236111237111238111239111240111241111242111243111244111245111246111247111248111249111250111251111252111253111254111255111256111257111258111259111260111261111262111263111264111265111266111267111268111269111270111271111272111273111274111275111276111277111278111279111280111281111282111283111284111285111286111287111288111289111290111291111292111293111294111295111296111297111298111299111300111301111302111303111304111305111306111307111308111309111310111311111312111313111314111315111316111317111318111319111320111321111322111323111324111325111326111327111328111329111330111331111332111333111334111335111336111337111338111339111340111341111342111343111344111345111346111347111348111349111350111351111352111353111354111355111356111357111358111359111360111361111362111363111364111365111366111367111368111369111370111371111372111373111374111375111376111377111378111379111380111381111382111383111384111385111386111387111388111389111390111391111392111393111394111395111396111397111398111399111400111401111402111403111404111405111406111407111408111409111410111411111412111413111414111415111416111417111418111419111420111421111422111423111424111425111426111427111428111429111430111431111432111433111434111435111436111437111438111439111440111441111442111443111444111445111446111447111448111449111450111451111452111453111454111455111456111457111458111459111460111461111462111463111464111465111466111467111468111469111470111471111472111473111474111475111476111477111478111479111480111481111482111483111484111485111486111487111488111489111490111491111492111493111494111495111496111497111498111499111500111501111502111503111504111505111506111507111508111509111510111511111512111513111514111515111516111517111518111519111520111521111522111523111524111525111526111527111528111529111530111531111532111533111534111535111536111537111538111539111540111541111542111543111544111545111546111547111548111549111550111551111552111553111554111555111556111557111558111559111560111561111562111563111564111565111566111567111568111569111570111571111572111573111574111575111576111577111578111579111580111581111582111583111584111585111586111587111588111589111590111591111592111593111594111595111596111597111598111599111600111601111602111603111604111605111606111607111608111609111610111611111612111613111614111615111616111617111618111619111620111621111622111623111624111625111626111627111628111629111630111631111632111633111634111635111636111637111638111639111640111641111642111643111644111645111646111647111648111649111650111651111652111653111654111655111656111657111658111659111660111661111662111663111664111665111666111667111668111669111670111671111672111673111674111675111676111677111678111679111680111681111682111683111684111685111686111687111688111689111690111691111692111693111694111695111696111697111698111699111700111701111702111703111704111705111706111707111708111709111710111711111712111713111714111715111716111717111718111719111720111721111722111723111724111725111726111727111728111729111730111731111732111733111734111735111736111737111738111739111740111741111742111743111744111745111746111747111748111749111750111751111752111753111754111755111756111757111758111759111760111761111762111763111764111765111766111767111768111769111770111771111772111773111774111775111776111777111778111779111780111781111782111783111784111785111786111787111788111789111790111791111792111793111794111795111796111797111798111799111800111801111802111803111804111805111806111807111808111809111810111811111812111813111814111815111816111817111818111819111820111821111822111823111824111825111826111827111828111829111830111831111832111833111834111835111836111837111838111839111840111841111842111843111844111845111846111847111848111849111850111851111852111853111854111855111856111857111858111859111860111861111862111863111864111865111866111867111868111869111870111871111872111873111874111875111876111877111878111879111880111881111882111883111884111885111886111887111888111889111890111891111892111893111894111895111896111897111898111899111900111901111902111903111904111905111906111907111908111909111910111911111912111913111914111915111916111917111918111919111920111921111922111923111924111925111926111927111928111929111930111931111932111933111934111935111936111937111938111939111940111941111942111943111944111945111946111947111948111949111950111951111952111953111954111955111956111957111958111959111960111961111962111963111964111965111966111967111968111969111970111971111972111973111974111975111976111977111978111979111980111981111982111983111984111985111986111987111988111989111990111991111992111993111994111995111996111997111998111999112000112001112002112003112004112005112006112007112008112009112010112011112012112013112014112015112016112017112018112019112020112021112022112023112024112025112026112027112028112029112030112031112032112033112034112035112036112037112038112039112040112041112042112043112044112045112046112047112048112049112050112051112052112053112054112055112056112057112058112059112060112061112062112063112064112065112066112067112068112069112070112071112072112073112074112075112076112077112078112079112080112081112082112083112084112085112086112087112088112089112090112091112092112093112094112095112096112097112098112099112100112101112102112103112104112105112106112107112108112109112110112111112112112113112114112115112116112117112118112119112120112121112122112123112124112125112126112127112128112129112130112131112132112133112134112135112136112137112138112139112140112141112142112143112144112145112146112147112148112149112150112151112152112153112154112155112156112157112158112159112160112161112162112163112164112165112166112167112168112169112170112171112172112173112174112175112176112177112178112179112180112181112182112183112184112185112186112187112188112189112190112191112192112193112194112195112196112197112198112199112200112201112202112203112204112205112206112207112208112209112210112211112212112213112214112215112216112217112218112219112220112221112222112223112224112225112226112227112228112229112230112231112232112233112234112235112236112237112238112239112240112241112242112243112244112245112246112247112248112249112250112251112252112253112254112255112256112257112258112259112260112261112262112263112264112265112266112267112268112269112270112271112272112273112274112275112276112277112278112279112280112281112282112283112284112285112286112287112288112289112290112291112292112293112294112295112296112297112298112299112300112301112302112303112304112305112306112307112308112309112310112311112312112313112314112315112316112317112318112319112320112321112322112323112324112325112326112327112328112329112330112331112332112333112334112335112336112337112338112339112340112341112342112343112344112345112346112347112348112349112350112351112352112353112354112355112356112357112358112359112360112361112362112363112364112365112366112367112368112369112370112371112372112373112374112375112376112377112378112379112380112381112382112383112384112385112386112387112388112389112390112391112392112393112394112395112396112397112398112399112400112401112402112403112404112405112406112407112408112409112410112411112412112413112414112415112416112417112418112419112420112421112422112423112424112425112426112427112428112429112430112431112432112433112434112435112436112437112438112439112440112441112442112443112444112445112446112447112448112449112450112451112452112453112454112455112456112457112458112459112460112461112462112463112464112465112466112467112468112469112470112471112472112473112474112475112476112477112478112479112480112481112482112483112484112485112486112487112488112489112490112491112492112493112494112495112496112497112498112499112500112501112502112503112504112505112506112507112508112509112510112511112512112513112514112515112516112517112518112519112520112521112522112523112524112525112526112527112528112529112530112531112532112533112534112535112536112537112538112539112540112541112542112543112544112545112546112547112548112549112550112551112552112553112554112555112556112557112558112559112560112561112562112563112564112565112566112567112568112569112570112571112572112573112574112575112576112577112578112579112580112581112582112583112584112585112586112587112588112589112590112591112592112593112594112595112596112597112598112599112600112601112602112603112604112605112606112607112608112609112610112611112612112613112614112615112616112617112618112619112620112621112622112623112624112625112626112627112628112629112630112631112632112633112634112635112636112637112638112639112640112641112642112643112644112645112646112647112648112649112650112651112652112653112654112655112656112657112658112659112660112661112662112663112664112665112666112667112668112669112670112671112672112673112674112675112676112677112678112679112680112681112682112683112684112685112686112687112688112689112690112691112692112693112694112695112696112697112698112699112700112701112702112703112704112705112706112707112708112709112710112711112712112713112714112715112716112717112718112719112720112721112722112723112724112725112726112727112728112729112730112731112732112733112734112735112736112737112738112739112740112741112742112743112744112745112746112747112748112749112750112751112752112753112754112755112756112757112758112759112760112761112762112763112764112765112766112767112768112769112770112771112772112773112774112775112776112777112778112779112780112781112782112783112784112785112786112787112788112789112790112791112792112793112794112795112796112797112798112799112800112801112802112803112804112805112806112807112808112809112810112811112812112813112814112815112816112817112818112819112820112821112822112823112824112825112826112827112828112829112830112831112832112833112834112835112836112837112838112839112840112841112842112843112844112845112846112847112848112849112850112851112852112853112854112855112856112857112858112859112860112861112862112863112864112865112866112867112868112869112870112871112872112873112874112875112876112877112878112879112880112881112882112883112884112885112886112887112888112889112890112891112892112893112894112895112896112897112898112899112900112901112902112903112904112905112906112907112908112909112910112911112912112913112914112915112916112917112918112919112920112921112922112923112924112925112926112927112928112929112930112931112932112933112934112935112936112937112938112939112940112941112942112943112944112945112946112947112948112949112950112951112952112953112954112955112956112957112958112959112960112961112962112963112964112965112966112967112968112969112970112971112972112973112974112975112976112977112978112979112980112981112982112983112984112985112986112987112988112989112990112991112992112993112994112995112996112997112998112999113000113001113002113003113004113005113006113007113008113009113010113011113012113013113014113015113016113017113018113019113020113021113022113023113024113025113026113027113028113029113030113031113032113033113034113035113036113037113038113039113040113041113042113043113044113045113046113047113048113049113050113051113052113053113054113055113056113057113058113059113060113061113062113063113064113065113066113067113068113069113070113071113072113073113074113075113076113077113078113079113080113081113082113083113084113085113086113087113088113089113090113091113092113093113094113095113096113097113098113099113100113101113102113103113104113105113106113107113108113109113110113111113112113113113114113115113116113117113118113119113120113121113122113123113124113125113126113127113128113129113130113131113132113133113134113135113136113137113138113139113140113141113142113143113144113145113146113147113148113149113150113151113152113153113154113155113156113157113158113159113160113161113162113163113164113165113166113167113168113169113170113171113172113173113174113175113176113177113178113179113180113181113182113183113184113185113186113187113188113189113190113191113192113193113194113195113196113197113198113199113200113201113202113203113204113205113206113207113208113209113210113211113212113213113214113215113216113217113218113219113220113221113222113223113224113225113226113227113228113229113230113231113232113233113234113235113236113237113238113239113240113241113242113243113244113245113246113247113248113249113250113251113252113253113254113255113256113257113258113259113260113261113262113263113264113265113266113267113268113269113270113271113272113273113274113275113276113277113278113279113280113281113282113283113284113285113286113287113288113289113290113291113292113293113294113295113296113297113298113299113300113301113302113303113304113305113306113307113308113309113310113311113312113313113314113315113316113317113318113319113320113321113322113323113324113325113326113327113328113329113330113331113332113333113334113335113336113337113338113339113340113341113342113343113344113345113346113347113348113349113350113351113352113353113354113355113356113357113358113359113360113361113362113363113364113365113366113367113368113369113370113371113372113373113374113375113376113377113378113379113380113381113382113383113384113385113386113387113388113389113390113391113392113393113394113395113396113397113398113399113400113401113402113403113404113405113406113407113408113409113410113411113412113413113414113415113416113417113418113419113420113421113422113423113424113425113426113427113428113429113430113431113432113433113434113435113436113437113438113439113440113441113442113443113444113445113446113447113448113449113450113451113452113453113454113455113456113457113458113459113460113461113462113463113464113465113466113467113468113469113470113471113472113473113474113475113476113477113478113479113480113481113482113483113484113485113486113487113488113489113490113491113492113493113494113495113496113497113498113499113500113501113502113503113504113505113506113507113508113509113510113511113512113513113514113515113516113517113518113519113520113521113522113523113524113525113526113527113528113529113530113531113532113533113534113535113536113537113538113539113540113541113542113543113544113545113546113547113548113549113550113551113552113553113554113555113556113557113558113559113560113561113562113563113564113565113566113567113568113569113570113571113572113573113574113575113576113577113578113579113580113581113582113583113584113585113586113587113588113589113590113591113592113593113594113595113596113597113598113599113600113601113602113603113604113605113606113607113608113609113610113611113612113613113614113615113616113617113618113619113620113621113622113623113624113625113626113627113628113629113630113631113632113633113634113635113636113637113638113639113640113641113642113643113644113645113646113647113648113649113650113651113652113653113654113655113656113657113658113659113660113661113662113663113664113665113666113667113668113669113670113671113672113673113674113675113676113677113678113679113680113681113682113683113684113685113686113687113688113689113690113691113692113693113694113695113696113697113698113699113700113701113702113703113704113705113706113707113708113709113710113711113712113713113714113715113716113717113718113719113720113721113722113723113724113725113726113727113728113729113730113731113732113733113734113735113736113737113738113739113740113741113742113743113744113745113746113747113748113749113750113751113752113753113754113755113756113757113758113759113760113761113762113763113764113765113766113767113768113769113770113771113772113773113774113775113776113777113778113779113780113781113782113783113784113785113786113787113788113789113790113791113792113793113794113795113796113797113798113799113800113801113802113803113804113805113806113807113808113809113810113811113812113813113814113815113816113817113818113819113820113821113822113823113824113825113826113827113828113829113830113831113832113833113834113835113836113837113838113839113840113841113842113843113844113845113846113847113848113849113850113851113852113853113854113855113856113857113858113859113860113861113862113863113864113865113866113867113868113869113870113871113872113873113874113875113876113877113878113879113880113881113882113883113884113885113886113887113888113889113890113891113892113893113894113895113896113897113898113899113900113901113902113903113904113905113906113907113908113909113910113911113912113913113914113915113916113917113918113919113920113921113922113923113924113925113926113927113928113929113930113931113932113933113934113935113936113937113938113939113940113941113942113943113944113945113946113947113948113949113950113951113952113953113954113955113956113957113958113959113960113961113962113963113964113965113966113967113968113969113970113971113972113973113974113975113976113977113978113979113980113981113982113983113984113985113986113987113988113989113990113991113992113993113994113995113996113997113998113999114000114001114002114003114004114005114006114007114008114009114010114011114012114013114014114015114016114017114018114019114020114021114022114023114024114025114026114027114028114029114030114031114032114033114034114035114036114037114038114039114040114041114042114043114044114045114046114047114048114049114050114051114052114053114054114055114056114057114058114059114060114061114062114063114064114065114066114067114068114069114070114071114072114073114074114075114076114077114078114079114080114081114082114083114084114085114086114087114088114089114090114091114092114093114094114095114096114097114098114099114100114101114102114103114104114105114106114107114108114109114110114111114112114113114114114115114116114117114118114119114120114121114122114123114124114125114126114127114128114129114130114131114132114133114134114135114136114137114138114139114140114141114142114143114144114145114146114147114148114149114150114151114152114153114154114155114156114157114158114159114160114161114162114163114164114165114166114167114168114169114170114171114172114173114174114175114176114177114178114179114180114181114182114183114184114185114186114187114188114189114190114191114192114193114194114195114196114197114198114199114200114201114202114203114204114205114206114207114208114209114210114211114212114213114214114215114216114217114218114219114220114221114222114223114224114225114226114227114228114229114230114231114232114233114234114235114236114237114238114239114240114241114242114243114244114245114246114247114248114249114250114251114252114253114254114255114256114257114258114259114260114261114262114263114264114265114266114267114268114269114270114271114272114273114274114275114276114277114278114279114280114281114282114283114284114285114286114287114288114289114290114291114292114293114294114295114296114297114298114299114300114301114302114303114304114305114306114307114308114309114310114311114312114313114314114315114316114317114318114319114320114321114322114323114324114325114326114327114328114329114330114331114332114333114334114335114336114337114338114339114340114341114342114343114344114345114346114347114348114349114350114351114352114353114354114355114356114357114358114359114360114361114362114363114364114365114366114367114368114369114370114371114372114373114374114375114376114377114378114379114380114381114382114383114384114385114386114387114388114389114390114391114392114393114394114395114396114397114398114399114400114401114402114403114404114405114406114407114408114409114410114411114412114413114414114415114416114417114418114419114420114421114422114423114424114425114426114427114428114429114430114431114432114433114434114435114436114437114438114439114440114441114442114443114444114445114446114447114448114449114450114451114452114453114454114455114456114457114458114459114460114461114462114463114464114465114466114467114468114469114470114471114472114473114474114475114476114477114478114479114480114481114482114483114484114485114486114487114488114489114490114491114492114493114494114495114496114497114498114499114500114501114502114503114504114505114506114507114508114509114510114511114512114513114514114515114516114517114518114519114520114521114522114523114524114525114526114527114528114529114530114531114532114533114534114535114536114537114538114539114540114541114542114543114544114545114546114547114548114549114550114551114552114553114554114555114556114557114558114559114560114561114562114563114564114565114566114567114568114569114570114571114572114573114574114575114576114577114578114579114580114581114582114583114584114585114586114587114588114589114590114591114592114593114594114595114596114597114598114599114600114601114602114603114604114605114606114607114608114609114610114611114612114613114614114615114616114617114618114619114620114621114622114623114624114625114626114627114628114629114630114631114632114633114634114635114636114637114638114639114640114641114642114643114644114645114646114647114648114649114650114651114652114653114654114655114656114657114658114659114660114661114662114663114664114665114666114667114668114669114670114671114672114673114674114675114676114677114678114679114680114681114682114683114684114685114686114687114688114689114690114691114692114693114694114695114696114697114698114699114700114701114702114703114704114705114706114707114708114709114710114711114712114713114714114715114716114717114718114719114720114721114722114723114724114725114726114727114728114729114730114731114732114733114734114735114736114737114738114739114740114741114742114743114744114745114746114747114748114749114750114751114752114753114754114755114756114757114758114759114760114761114762114763114764114765114766114767114768114769114770114771114772114773114774114775114776114777114778114779114780114781114782114783114784114785114786114787114788114789114790114791114792114793114794114795114796114797114798114799114800114801114802114803114804114805114806114807114808114809114810114811114812114813114814114815114816114817114818114819114820114821114822114823114824114825114826114827114828114829114830114831114832114833114834114835114836114837114838114839114840114841114842114843114844114845114846114847114848114849114850114851114852114853114854114855114856114857114858114859114860114861114862114863114864114865114866114867114868114869114870114871114872114873114874114875114876114877114878114879114880114881114882114883114884114885114886114887114888114889114890114891114892114893114894114895114896114897114898114899114900114901114902114903114904114905114906114907114908114909114910114911114912114913114914114915114916114917114918114919114920114921114922114923114924114925114926114927114928114929114930114931114932114933114934114935114936114937114938114939114940114941114942114943114944114945114946114947114948114949114950114951114952114953114954114955114956114957114958114959114960114961114962114963114964114965114966114967114968114969114970114971114972114973114974114975114976114977114978114979114980114981114982114983114984114985114986114987114988114989114990114991114992114993114994114995114996114997114998114999115000115001115002115003115004115005115006115007115008115009115010115011115012115013115014115015115016115017115018115019115020115021115022115023115024115025115026115027115028115029115030115031115032115033115034115035115036115037115038115039115040115041115042115043115044115045115046115047115048115049115050115051115052115053115054115055115056115057115058115059115060115061115062115063115064115065115066115067115068115069115070115071115072115073115074115075115076115077115078115079115080115081115082115083115084115085115086115087115088115089115090115091115092115093115094115095115096115097115098115099115100115101115102115103115104115105115106115107115108115109115110115111115112115113115114115115115116115117115118115119115120115121115122115123115124115125115126115127115128115129115130115131115132115133115134115135115136115137115138115139115140115141115142115143115144115145115146115147115148115149115150115151115152115153115154115155115156115157115158115159115160115161115162115163115164115165115166115167115168115169115170115171115172115173115174115175115176115177115178115179115180115181115182115183115184115185115186115187115188115189115190115191115192115193115194115195115196115197115198115199115200115201115202115203115204115205115206115207115208115209115210115211115212115213115214115215115216115217115218115219115220115221115222115223115224115225115226115227115228115229115230115231115232115233115234115235115236115237115238115239115240115241115242115243115244115245115246115247115248115249115250115251115252115253115254115255115256115257115258115259115260115261115262115263115264115265115266115267115268115269115270115271115272115273115274115275115276115277115278115279115280115281115282115283115284115285115286115287115288115289115290115291115292115293115294115295115296115297115298115299115300115301115302115303115304115305115306115307115308115309115310115311115312115313115314115315115316115317115318115319115320115321115322115323115324115325115326115327115328115329115330115331115332115333115334115335115336115337115338115339115340115341115342115343115344115345115346115347115348115349115350115351115352115353115354115355115356115357115358115359115360115361115362115363115364115365115366115367115368115369115370115371115372115373115374115375115376115377115378115379115380115381115382115383115384115385115386115387115388115389115390115391115392115393115394115395115396115397115398115399115400115401115402115403115404115405115406115407115408115409115410115411115412115413115414115415115416115417115418115419115420115421115422115423115424115425115426115427115428115429115430115431115432115433115434115435115436115437115438115439115440115441115442115443115444115445115446115447115448115449115450115451115452115453115454115455115456115457115458115459115460115461115462115463115464115465115466115467115468115469115470115471115472115473115474115475115476115477115478115479115480115481115482115483115484115485115486115487115488115489115490115491115492115493115494115495115496115497115498115499115500115501115502115503115504115505115506115507115508115509115510115511115512115513115514115515115516115517115518115519115520115521115522115523115524115525115526115527115528115529115530115531115532115533115534115535115536115537115538115539115540115541115542115543115544115545115546115547115548115549115550115551115552115553115554115555115556115557115558115559115560115561115562115563115564115565115566115567115568115569115570115571115572115573115574115575115576115577115578115579115580115581115582115583115584115585115586115587115588115589115590115591115592115593115594115595115596115597115598115599115600115601115602115603115604115605115606115607115608115609115610115611115612115613115614115615115616115617115618115619115620115621115622115623115624115625115626115627115628115629115630115631115632115633115634115635115636115637115638115639115640115641115642115643115644115645115646115647115648115649115650115651115652115653115654115655115656115657115658115659115660115661115662115663115664115665115666115667115668115669115670115671115672115673115674115675115676115677115678115679115680115681115682115683115684115685115686115687115688115689115690115691115692115693115694115695115696115697115698115699115700115701115702115703115704115705115706115707115708115709115710115711115712115713115714115715115716115717115718115719115720115721115722115723115724115725115726115727115728115729115730115731115732115733115734115735115736115737115738115739115740115741115742115743115744115745115746115747115748115749115750115751115752115753115754115755115756115757115758115759115760115761115762115763115764115765115766115767115768115769115770115771115772115773115774115775115776115777115778115779115780115781115782115783115784115785115786115787115788115789115790115791115792115793115794115795115796115797115798115799115800115801115802115803115804115805115806115807115808115809115810115811115812115813115814115815115816115817115818115819115820115821115822115823115824115825115826115827115828115829115830115831115832115833115834115835115836115837115838115839115840115841115842115843115844115845115846115847115848115849115850115851115852115853115854115855115856115857115858115859115860115861115862115863115864115865115866115867115868115869115870115871115872115873115874115875115876115877115878115879115880115881115882115883115884115885115886115887115888115889115890115891115892115893115894115895115896115897115898115899115900115901115902115903115904115905115906115907115908115909115910115911115912115913115914115915115916115917115918115919115920115921115922115923115924115925115926115927115928115929115930115931115932115933115934115935115936115937115938115939115940115941115942115943115944115945115946115947115948115949115950115951115952115953115954115955115956115957115958115959115960115961115962115963115964115965115966115967115968115969115970115971115972115973115974115975115976115977115978115979115980115981115982115983115984115985115986115987115988115989115990115991115992115993115994115995115996115997115998115999116000116001116002116003116004116005116006116007116008116009116010116011116012116013116014116015116016116017116018116019116020116021116022116023116024116025116026116027116028116029116030116031116032116033116034116035116036116037116038116039116040116041116042116043116044116045116046116047116048116049116050116051116052116053116054116055116056116057116058116059116060116061116062116063116064116065116066116067116068116069116070116071116072116073116074116075116076116077116078116079116080116081116082116083116084116085116086116087116088116089116090116091116092116093116094116095116096116097116098116099116100116101116102116103116104116105116106116107116108116109116110116111116112116113116114116115116116116117116118116119116120116121116122116123116124116125116126116127116128116129116130116131116132116133116134116135116136116137116138116139116140116141116142116143116144116145116146116147116148116149116150116151116152116153116154116155116156116157116158116159116160116161116162116163116164116165116166116167116168116169116170116171116172116173116174116175116176116177116178116179116180116181116182116183116184116185116186116187116188116189116190116191116192116193116194116195116196116197116198116199116200116201116202116203116204116205116206116207116208116209116210116211116212116213116214116215116216116217116218116219116220116221116222116223116224116225116226116227116228116229116230116231116232116233116234116235116236116237116238116239116240116241116242116243116244116245116246116247116248116249116250116251116252116253116254116255116256116257116258116259116260116261116262116263116264116265116266116267116268116269116270116271116272116273116274116275116276116277116278116279116280116281116282116283116284116285116286116287116288116289116290116291116292116293116294116295116296116297116298116299116300116301116302116303116304116305116306116307116308116309116310116311116312116313116314116315116316116317116318116319116320116321116322116323116324116325116326116327116328116329116330116331116332116333116334116335116336116337116338116339116340116341116342116343116344116345116346116347116348116349116350116351116352116353116354116355116356116357116358116359116360116361116362116363116364116365116366116367116368116369116370116371116372116373116374116375116376116377116378116379116380116381116382116383116384116385116386116387116388116389116390116391116392116393116394116395116396116397116398116399116400116401116402116403116404116405116406116407116408116409116410116411116412116413116414116415116416116417116418116419116420116421116422116423116424116425116426116427116428116429116430116431116432116433116434116435116436116437116438116439116440116441116442116443116444116445116446116447116448116449116450116451116452116453116454116455116456116457116458116459116460116461116462116463116464116465116466116467116468116469116470116471116472116473116474116475116476116477116478116479116480116481116482116483116484116485116486116487116488116489116490116491116492116493116494116495116496116497116498116499116500116501116502116503116504116505116506116507116508116509116510116511116512116513116514116515116516116517116518116519116520116521116522116523116524116525116526116527116528116529116530116531116532116533116534116535116536116537116538116539116540116541116542116543116544116545116546116547116548116549116550116551116552116553116554116555116556116557116558116559116560116561116562116563116564116565116566116567116568116569116570116571116572116573116574116575116576116577116578116579116580116581116582116583116584116585116586116587116588116589116590116591116592116593116594116595116596116597116598116599116600116601116602116603116604116605116606116607116608116609116610116611116612116613116614116615116616116617116618116619116620116621116622116623116624116625116626116627116628116629116630116631116632116633116634116635116636116637116638116639116640116641116642116643116644116645116646116647116648116649116650116651116652116653116654116655116656116657116658116659116660116661116662116663116664116665116666116667116668116669116670116671116672116673116674116675116676116677116678116679116680116681116682116683116684116685116686116687116688116689116690116691116692116693116694116695116696116697116698116699116700116701116702116703116704116705116706116707116708116709116710116711116712116713116714116715116716116717116718116719116720116721116722116723116724116725116726116727116728116729116730116731116732116733116734116735116736116737116738116739116740116741116742116743116744116745116746116747116748116749116750116751116752116753116754116755116756116757116758116759116760116761116762116763116764116765116766116767116768116769116770116771116772116773116774116775116776116777116778116779116780116781116782116783116784116785116786116787116788116789116790116791116792116793116794116795116796116797116798116799116800116801116802116803116804116805116806116807116808116809116810116811116812116813116814116815116816116817116818116819116820116821116822116823116824116825116826116827116828116829116830116831116832116833116834116835116836116837116838116839116840116841116842116843116844116845116846116847116848116849116850116851116852116853116854116855116856116857116858116859116860116861116862116863116864116865116866116867116868116869116870116871116872116873116874116875116876116877116878116879116880116881116882116883116884116885116886116887116888116889116890116891116892116893116894116895116896116897116898116899116900116901116902116903116904116905116906116907116908116909116910116911116912116913116914116915116916116917116918116919116920116921116922116923116924116925116926116927116928116929116930116931116932116933116934116935116936116937116938116939116940116941116942116943116944116945116946116947116948116949116950116951116952116953116954116955116956116957116958116959116960116961116962116963116964116965116966116967116968116969116970116971116972116973116974116975116976116977116978116979116980116981116982116983116984116985116986116987116988116989116990116991116992116993116994116995116996116997116998116999117000117001117002117003117004117005117006117007117008117009117010117011117012117013117014117015117016117017117018117019117020117021117022117023117024117025117026117027117028117029117030117031117032117033117034117035117036117037117038117039117040117041117042117043117044117045117046117047117048117049117050117051117052117053117054117055117056117057117058117059117060117061117062117063117064117065117066117067117068117069117070117071117072117073117074117075117076117077117078117079117080117081117082117083117084117085117086117087117088117089117090117091117092117093117094117095117096117097117098117099117100117101117102117103117104117105117106117107117108117109117110117111117112117113117114117115117116117117117118117119117120117121117122117123117124117125117126117127117128117129117130117131117132117133117134117135117136117137117138117139117140117141117142117143117144117145117146117147117148117149117150117151117152117153117154117155117156117157117158117159117160117161117162117163117164117165117166117167117168117169117170117171117172117173117174117175117176117177117178117179117180117181117182117183117184117185117186117187117188117189117190117191117192117193117194117195117196117197117198117199117200117201117202117203117204117205117206117207117208117209117210117211117212117213117214117215117216117217117218117219117220117221117222117223117224117225117226117227117228117229117230117231117232117233117234117235117236117237117238117239117240117241117242117243117244117245117246117247117248117249117250117251117252117253117254117255117256117257117258117259117260117261117262117263117264117265117266117267117268117269117270117271117272117273117274117275117276117277117278117279117280117281117282117283117284117285117286117287117288117289117290117291117292117293117294117295117296117297117298117299117300117301117302117303117304117305117306117307117308117309117310117311117312117313117314117315117316117317117318117319117320117321117322117323117324117325117326117327117328117329117330117331117332117333117334117335117336117337117338117339117340117341117342117343117344117345117346117347117348117349117350117351117352117353117354117355117356117357117358117359117360117361117362117363117364117365117366117367117368117369117370117371117372117373117374117375117376117377117378117379117380117381117382117383117384117385117386117387117388117389117390117391117392117393117394117395117396117397117398117399117400117401117402117403117404117405117406117407117408117409117410117411117412117413117414117415117416117417117418117419117420117421117422117423117424117425117426117427117428117429117430117431117432117433117434117435117436117437117438117439117440117441117442117443117444117445117446117447117448117449117450117451117452117453117454117455117456117457117458117459117460117461117462117463117464117465117466117467117468117469117470117471117472117473117474117475117476117477117478117479117480117481117482117483117484117485117486117487117488117489117490117491117492117493117494117495117496117497117498117499117500117501117502117503117504117505117506117507117508117509117510117511117512117513117514117515117516117517117518117519117520117521117522117523117524117525117526117527117528117529117530117531117532117533117534117535117536117537117538117539117540117541117542117543117544117545117546117547117548117549117550117551117552117553117554117555117556117557117558117559117560117561117562117563117564117565117566117567117568117569117570117571117572117573117574117575117576117577117578117579117580117581117582117583117584117585117586117587117588117589117590117591117592117593117594117595117596117597117598117599117600117601117602117603117604117605117606117607117608117609117610117611117612117613117614117615117616117617117618117619117620117621117622117623117624117625117626117627117628117629117630117631117632117633117634117635117636117637117638117639117640117641117642117643117644117645117646117647117648117649117650117651117652117653117654117655117656117657117658117659117660117661117662117663117664117665117666117667117668117669117670117671117672117673117674117675117676117677117678117679117680117681117682117683117684117685117686117687117688117689117690117691117692117693117694117695117696117697117698117699117700117701117702117703117704117705117706117707117708117709117710117711117712117713117714117715117716117717117718117719117720117721117722117723117724117725117726117727117728117729117730117731117732117733117734117735117736117737117738117739117740117741117742117743117744117745117746117747117748117749117750117751117752117753117754117755117756117757117758117759117760117761117762117763117764117765117766117767117768117769117770117771117772117773117774117775117776117777117778117779117780117781117782117783117784117785117786117787117788117789117790117791117792117793117794117795117796117797117798117799117800117801117802117803117804117805117806117807117808117809117810117811117812117813117814117815117816117817117818117819117820117821117822117823117824117825117826117827117828117829117830117831117832117833117834117835117836117837117838117839117840117841117842117843117844117845117846117847117848117849117850117851117852117853117854117855117856117857117858117859117860117861117862117863117864117865117866117867117868117869117870117871117872117873117874117875117876117877117878117879117880117881117882117883117884117885117886117887117888117889117890117891117892117893117894117895117896117897117898117899117900117901117902117903117904117905117906117907117908117909117910117911117912117913117914117915117916117917117918117919117920117921117922117923117924117925117926117927117928117929117930117931117932117933117934117935117936117937117938117939117940117941117942117943117944117945117946117947117948117949117950117951117952117953117954117955117956117957117958117959117960117961117962117963117964117965117966117967117968117969117970117971117972117973117974117975117976117977117978117979117980117981117982117983117984117985117986117987117988117989117990117991117992117993117994117995117996117997117998117999118000118001118002118003118004118005118006118007118008118009118010118011118012118013118014118015118016118017118018118019118020118021118022118023118024118025118026118027118028118029118030118031118032118033118034118035118036118037118038118039118040118041118042118043118044118045118046118047118048118049118050118051118052118053118054118055118056118057118058118059118060118061118062118063118064118065118066118067118068118069118070118071118072118073118074118075118076118077118078118079118080118081118082118083118084118085118086118087118088118089118090118091118092118093118094118095118096118097118098118099118100118101118102118103118104118105118106118107118108118109118110118111118112118113118114118115118116118117118118118119118120118121118122118123118124118125118126118127118128118129118130118131118132118133118134118135118136118137118138118139118140118141118142118143118144118145118146118147118148118149118150118151118152118153118154118155118156118157118158118159118160118161118162118163118164118165118166118167118168118169118170118171118172118173118174118175118176118177118178118179118180118181118182118183118184118185118186118187118188118189118190118191118192118193118194118195118196118197118198118199118200118201118202118203118204118205118206118207118208118209118210118211118212118213118214118215118216118217118218118219118220118221118222118223118224118225118226118227118228118229118230118231118232118233118234118235118236118237118238118239118240118241118242118243118244118245118246118247118248118249118250118251118252118253118254118255118256118257118258118259118260118261118262118263118264118265118266118267118268118269118270118271118272118273118274118275118276118277118278118279118280118281118282118283118284118285118286118287118288118289118290118291118292118293118294118295118296118297118298118299118300118301118302118303118304118305118306118307118308118309118310118311118312118313118314118315118316118317118318118319118320118321118322118323118324118325118326118327118328118329118330118331118332118333118334118335118336118337118338118339118340118341118342118343118344118345118346118347118348118349118350118351118352118353118354118355118356118357118358118359118360118361118362118363118364118365118366118367118368118369118370118371118372118373118374118375118376118377118378118379118380118381118382118383118384118385118386118387118388118389118390118391118392118393118394118395118396118397118398118399118400118401118402118403118404118405118406118407118408118409118410118411118412118413118414118415118416118417118418118419118420118421118422118423118424118425118426118427118428118429118430118431118432118433118434118435118436118437118438118439118440118441118442118443118444118445118446118447118448118449118450118451118452118453118454118455118456118457118458118459118460118461118462118463118464118465118466118467118468118469118470118471118472118473118474118475118476118477118478118479118480118481118482118483118484118485118486118487118488118489118490118491118492118493118494118495118496118497118498118499118500118501118502118503118504118505118506118507118508118509118510118511118512118513118514118515118516118517118518118519118520118521118522118523118524118525118526118527118528118529118530118531118532118533118534118535118536118537118538118539118540118541118542118543118544118545118546118547118548118549118550118551118552118553118554118555118556118557118558118559118560118561118562118563118564118565118566118567118568118569118570118571118572118573118574118575118576118577118578118579118580118581118582118583118584118585118586118587118588118589118590118591118592118593118594118595118596118597118598118599118600118601118602118603118604118605118606118607118608118609118610118611118612118613118614118615118616118617118618118619118620118621118622118623118624118625118626118627118628118629118630118631118632118633118634118635118636118637118638118639118640118641118642118643118644118645118646118647118648118649118650118651118652118653118654118655118656118657118658118659118660118661118662118663118664118665118666118667118668118669118670118671118672118673118674118675118676118677118678118679118680118681118682118683118684118685118686118687118688118689118690118691118692118693118694118695118696118697118698118699118700118701118702118703118704118705118706118707118708118709118710118711118712118713118714118715118716118717118718118719118720118721118722118723118724118725118726118727118728118729118730118731118732118733118734118735118736118737118738118739118740118741118742118743118744118745118746118747118748118749118750118751118752118753118754118755118756118757118758118759118760118761118762118763118764118765118766118767118768118769118770118771118772118773118774118775118776118777118778118779118780118781118782118783118784118785118786118787118788118789118790118791118792118793118794118795118796118797118798118799118800118801118802118803118804118805118806118807118808118809118810118811118812118813118814118815118816118817118818118819118820118821118822118823118824118825118826118827118828118829118830118831118832118833118834118835118836118837118838118839118840118841118842118843118844118845118846118847118848118849118850118851118852118853118854118855118856118857118858118859118860118861118862118863118864118865118866118867118868118869118870118871118872118873118874118875118876118877118878118879118880118881118882118883118884118885118886118887118888118889118890118891118892118893118894118895118896118897118898118899118900118901118902118903118904118905118906118907118908118909118910118911118912118913118914118915118916118917118918118919118920118921118922118923118924118925118926118927118928118929118930118931118932118933118934118935118936118937118938118939118940118941118942118943118944118945118946118947118948118949118950118951118952118953118954118955118956118957118958118959118960118961118962118963118964118965118966118967118968118969118970118971118972118973118974118975118976118977118978118979118980118981118982118983118984118985118986118987118988118989118990118991118992118993118994118995118996118997118998118999119000119001119002119003119004119005119006119007119008119009119010119011119012119013119014119015119016119017119018119019119020119021119022119023119024119025119026119027119028119029119030119031119032119033119034119035119036119037119038119039119040119041119042119043119044119045119046119047119048119049119050119051119052119053119054119055119056119057119058119059119060119061119062119063119064119065119066119067119068119069119070119071119072119073119074119075119076119077119078119079119080119081119082119083119084119085119086119087119088119089119090119091119092119093119094119095119096119097119098119099119100119101119102119103119104119105119106119107119108119109119110119111119112119113119114119115119116119117119118119119119120119121119122119123119124119125119126119127119128119129119130119131119132119133119134119135119136119137119138119139119140119141119142119143119144119145119146119147119148119149119150119151119152119153119154119155119156119157119158119159119160119161119162119163119164119165119166119167119168119169119170119171119172119173119174119175119176119177119178119179119180119181119182119183119184119185119186119187119188119189119190119191119192119193119194119195119196119197119198119199119200119201119202119203119204119205119206119207119208119209119210119211119212119213119214119215119216119217119218119219119220119221119222119223119224119225119226119227119228119229119230119231119232119233119234119235119236119237119238119239119240119241119242119243119244119245119246119247119248119249119250119251119252119253119254119255119256119257119258119259119260119261119262119263119264119265119266119267119268119269119270119271119272119273119274119275119276119277119278119279119280119281119282119283119284119285119286119287119288119289119290119291119292119293119294119295119296119297119298119299119300119301119302119303119304119305119306119307119308119309119310119311119312119313119314119315119316119317119318119319119320119321119322119323119324119325119326119327119328119329119330119331119332119333119334119335119336119337119338119339119340119341119342119343119344119345119346119347119348119349119350119351119352119353119354119355119356119357119358119359119360119361119362119363119364119365119366119367119368119369119370119371119372119373119374119375119376119377119378119379119380119381119382119383119384119385119386119387119388119389119390119391119392119393119394119395119396119397119398119399119400119401119402119403119404119405119406119407119408119409119410119411119412119413119414119415119416119417119418119419119420119421119422119423119424119425119426119427119428119429119430119431119432119433119434119435119436119437119438119439119440119441119442119443119444119445119446119447119448119449119450119451119452119453119454119455119456119457119458119459119460119461119462119463119464119465119466119467119468119469119470119471119472119473119474119475119476119477119478119479119480119481119482119483119484119485119486119487119488119489119490119491119492119493119494119495119496119497119498119499119500119501119502119503119504119505119506119507119508119509119510119511119512119513119514119515119516119517119518119519119520119521119522119523119524119525119526119527119528119529119530119531119532119533119534119535119536119537119538119539119540119541119542119543119544119545119546119547119548119549119550119551119552119553119554119555119556119557119558119559119560119561119562119563119564119565119566119567119568119569119570119571119572119573119574119575119576119577119578119579119580119581119582119583119584119585119586119587119588119589119590119591119592119593119594119595119596119597119598119599119600119601119602119603119604119605119606119607119608119609119610119611119612119613119614119615119616119617119618119619119620119621119622119623119624119625119626119627119628119629119630119631119632119633119634119635119636119637119638119639119640119641119642119643119644119645119646119647119648119649119650119651119652119653119654119655119656119657119658119659119660119661119662119663119664119665119666119667119668119669119670119671119672119673119674119675119676119677119678119679119680119681119682119683119684119685119686119687119688119689119690119691119692119693119694119695119696119697119698119699119700119701119702119703119704119705119706119707119708119709119710119711119712119713119714119715119716119717119718119719119720119721119722119723119724119725119726119727119728119729119730119731119732119733119734119735119736119737119738119739119740119741119742119743119744119745119746119747119748119749119750119751119752119753119754119755119756119757119758119759119760119761119762119763119764119765119766119767119768119769119770119771119772119773119774119775119776119777119778119779119780119781119782119783119784119785119786119787119788119789119790119791119792119793119794119795119796119797119798119799119800119801119802119803119804119805119806119807119808119809119810119811119812119813119814119815119816119817119818119819119820119821119822119823119824119825119826119827119828119829119830119831119832119833119834119835119836119837119838119839119840119841119842119843119844119845119846119847119848119849119850119851119852119853119854119855119856119857119858119859119860119861119862119863119864119865119866119867119868119869119870119871119872119873119874119875119876119877119878119879119880119881119882119883119884119885119886119887119888119889119890119891119892119893119894119895119896119897119898119899119900119901119902119903119904119905119906119907119908119909119910119911119912119913119914119915119916119917119918119919119920119921119922119923119924119925119926119927119928119929119930119931119932119933119934119935119936119937119938119939119940119941119942119943119944119945119946119947119948119949119950119951119952119953119954119955119956119957119958119959119960119961119962119963119964119965119966119967119968119969119970119971119972119973119974119975119976119977119978119979119980119981119982119983119984119985119986119987119988119989119990119991119992119993119994119995119996119997119998119999120000120001120002120003120004120005120006120007120008120009120010120011120012120013120014120015120016120017120018120019120020120021120022120023120024120025120026120027120028120029120030120031120032120033120034120035120036120037120038120039120040120041120042120043120044120045120046120047120048120049120050120051120052120053120054120055120056120057120058120059120060120061120062120063120064120065120066120067120068120069120070120071120072120073120074120075120076120077120078120079120080120081120082120083120084120085120086120087120088120089120090120091120092120093120094120095120096120097120098120099120100120101120102120103120104120105120106120107120108120109120110120111120112120113120114120115120116120117120118120119120120120121120122120123120124120125120126120127120128120129120130120131120132120133120134120135120136120137120138120139120140120141120142120143120144120145120146120147120148120149120150120151120152120153120154120155120156120157120158120159120160120161120162120163120164120165120166120167120168120169120170120171120172120173120174120175120176120177120178120179120180120181120182120183120184120185120186120187120188120189120190120191120192120193120194120195120196120197120198120199120200120201120202120203120204120205120206120207120208120209120210120211120212120213120214120215120216120217120218120219120220120221120222120223120224120225120226120227120228120229120230120231120232120233120234120235120236120237120238120239120240120241120242120243120244120245120246120247120248120249120250120251120252120253120254120255120256120257120258120259120260120261120262120263120264120265120266120267120268120269120270120271120272120273120274120275120276120277120278120279120280120281120282120283120284120285120286120287120288120289120290120291120292120293120294120295120296120297120298120299120300120301120302120303120304120305120306120307120308120309120310120311120312120313120314120315120316120317120318120319120320120321120322120323120324120325120326120327120328120329120330120331120332120333120334120335120336120337120338120339120340120341120342120343120344120345120346120347120348120349120350120351120352120353120354120355120356120357120358120359120360120361120362120363120364120365120366120367120368120369120370120371120372120373120374120375120376120377120378120379120380120381120382120383120384120385120386120387120388120389120390120391120392120393120394120395120396120397120398120399120400120401120402120403120404120405120406120407120408120409120410120411120412120413120414120415120416120417120418120419120420120421120422120423120424120425120426120427120428120429120430120431120432120433120434120435120436120437120438120439120440120441120442120443120444120445120446120447120448120449120450120451120452120453120454120455120456120457120458120459120460120461120462120463120464120465120466120467120468120469120470120471120472120473120474120475120476120477120478120479120480120481120482120483120484120485120486120487120488120489120490120491120492120493120494120495120496120497120498120499120500120501120502120503120504120505120506120507120508120509120510120511120512120513120514120515120516120517120518120519120520120521120522120523120524120525120526120527120528120529120530120531120532120533120534120535120536120537120538120539120540120541120542120543120544120545120546120547120548120549120550120551120552120553120554120555120556120557120558120559120560120561120562120563120564120565120566120567120568120569120570120571120572120573120574120575120576120577120578120579120580120581120582120583120584120585120586120587120588120589120590120591120592120593120594120595120596120597120598120599120600120601120602120603120604120605120606120607120608120609120610120611120612120613120614120615120616120617120618120619120620120621120622120623120624120625120626120627120628120629120630120631120632120633120634120635120636120637120638120639120640120641120642120643120644120645120646120647120648120649120650120651120652120653120654120655120656120657120658120659120660120661120662120663120664120665120666120667120668120669120670120671120672120673120674120675120676120677120678120679120680120681120682120683120684120685120686120687120688120689120690120691120692120693120694120695120696120697120698120699120700120701120702120703120704120705120706120707120708120709120710120711120712120713120714120715120716120717120718120719120720120721120722120723120724120725120726120727120728120729120730120731120732120733120734120735120736120737120738120739120740120741120742120743120744120745120746120747120748120749120750120751120752120753120754120755120756120757120758120759120760120761120762120763120764120765120766120767120768120769120770120771120772120773120774120775120776120777120778120779120780120781120782120783120784120785120786120787120788120789120790120791120792120793120794120795120796120797120798120799120800120801120802120803120804120805120806120807120808120809120810120811120812120813120814120815120816120817120818120819120820120821120822120823120824120825120826120827120828120829120830120831120832120833120834120835120836120837120838120839120840120841120842120843120844120845120846120847120848120849120850120851120852120853120854120855120856120857120858120859120860120861120862120863120864120865120866120867120868120869120870120871120872120873120874120875120876120877120878120879120880120881120882120883120884120885120886120887120888120889120890120891120892120893120894120895120896120897120898120899120900120901120902120903120904120905120906120907120908120909120910120911120912120913120914120915120916120917120918120919120920120921120922120923120924120925120926120927120928120929120930120931120932120933120934120935120936120937120938120939120940120941120942120943120944120945120946120947120948120949120950120951120952120953120954120955120956120957120958120959120960120961120962120963120964120965120966120967120968120969120970120971120972120973120974120975120976120977120978120979120980120981120982120983120984120985120986120987120988120989120990120991120992120993120994120995120996120997120998120999121000121001121002121003121004121005121006121007121008121009121010121011121012121013121014121015121016121017121018121019121020121021121022121023121024121025121026121027121028121029121030121031121032121033121034121035121036121037121038121039121040121041121042121043121044121045121046121047121048121049121050121051121052121053121054121055121056121057121058121059121060121061121062121063121064121065121066121067121068121069121070121071121072121073121074121075121076121077121078121079121080121081121082121083121084121085121086121087121088121089121090121091121092121093121094121095121096121097121098121099121100121101121102121103121104121105121106121107121108121109121110121111121112121113121114121115121116121117121118121119121120121121121122121123121124121125121126121127121128121129121130121131121132121133121134121135121136121137121138121139121140121141121142121143121144121145121146121147121148121149121150121151121152121153121154121155121156121157121158121159121160121161121162121163121164121165121166121167121168121169121170121171121172121173121174121175121176121177121178121179121180121181121182121183121184121185121186121187121188121189121190121191121192121193121194121195121196121197121198121199121200121201121202121203121204121205121206121207121208121209121210121211121212121213121214121215121216121217121218121219121220121221121222121223121224121225121226121227121228121229121230121231121232121233121234121235121236121237121238121239121240121241121242121243121244121245121246121247121248121249121250121251121252121253121254121255121256121257121258121259121260121261121262121263121264121265121266121267121268121269121270121271121272121273121274121275121276121277121278121279121280121281121282121283121284121285121286121287121288121289121290121291121292121293121294121295121296121297121298121299121300121301121302121303121304121305121306121307121308121309121310121311121312121313121314121315121316121317121318121319121320121321121322121323121324121325121326121327121328121329121330121331121332121333121334121335121336121337121338121339121340121341121342121343121344121345121346121347121348121349121350121351121352121353121354121355121356121357121358121359121360121361121362121363121364121365121366121367121368121369121370121371121372121373121374121375121376121377121378121379121380121381121382121383121384121385121386121387121388121389121390121391121392121393121394121395121396121397121398121399121400121401121402121403121404121405121406121407121408121409121410121411121412121413121414121415121416121417121418121419121420121421121422121423121424121425121426121427121428121429121430121431121432121433121434121435121436121437121438121439121440121441121442121443121444121445121446121447121448121449121450121451121452121453121454121455121456121457121458121459121460121461121462121463121464121465121466121467121468121469121470121471121472121473121474121475121476121477121478121479121480121481121482121483121484121485121486121487121488121489121490121491121492121493121494121495121496121497121498121499121500121501121502121503121504121505121506121507121508121509121510121511121512121513121514121515121516121517121518121519121520121521121522121523121524121525121526121527121528121529121530121531121532121533121534121535121536121537121538121539121540121541121542121543121544121545121546121547121548121549121550121551121552121553121554121555121556121557121558121559121560121561121562121563121564121565121566121567121568121569121570121571121572121573121574121575121576121577121578121579121580121581121582121583121584121585121586121587121588121589121590121591121592121593121594121595121596121597121598121599121600121601121602121603121604121605121606121607121608121609121610121611121612121613121614121615121616121617121618121619121620121621121622121623121624121625121626121627121628121629121630121631121632121633121634121635121636121637121638121639121640121641121642121643121644121645121646121647121648121649121650121651121652121653121654121655121656121657121658121659121660121661121662121663121664121665121666121667121668121669121670121671121672121673121674121675121676121677121678121679121680121681121682121683121684121685121686121687121688121689121690121691121692121693121694121695121696121697121698121699121700121701121702121703121704121705121706121707121708121709121710121711121712121713121714121715121716121717121718121719121720121721121722121723121724121725121726121727121728121729121730121731121732121733121734121735121736121737121738121739121740121741121742121743121744121745121746121747121748121749121750121751121752121753121754121755121756121757121758121759121760121761121762121763121764121765121766121767121768121769121770121771121772121773121774121775121776121777121778121779121780121781121782121783121784121785121786121787121788121789121790121791121792121793121794121795121796121797121798121799121800121801121802121803121804121805121806121807121808121809121810121811121812121813121814121815121816121817121818121819121820121821121822121823121824121825121826121827121828121829121830121831121832121833121834121835121836121837121838121839121840121841121842121843121844121845121846121847121848121849121850121851121852121853121854121855121856121857121858121859121860121861121862121863121864121865121866121867121868121869121870121871121872121873121874121875121876121877121878121879121880121881121882121883121884121885121886121887121888121889121890121891121892121893121894121895121896121897121898121899121900121901121902121903121904121905121906121907121908121909121910121911121912121913121914121915121916121917121918121919121920121921121922121923121924121925121926121927121928121929121930121931121932121933121934121935121936121937121938121939121940121941121942121943121944121945121946121947121948121949121950121951121952121953121954121955121956121957121958121959121960121961121962121963121964121965121966121967121968121969121970121971121972121973121974121975121976121977121978121979121980121981121982121983121984121985121986121987121988121989121990121991121992121993121994121995121996121997121998121999122000122001122002122003122004122005122006122007122008122009122010122011122012122013122014122015122016122017122018122019122020122021122022122023122024122025122026122027122028122029122030122031122032122033122034122035122036122037122038122039122040122041122042122043122044122045122046122047122048122049122050122051122052122053122054122055122056122057122058122059122060122061122062122063122064122065122066122067122068122069122070122071122072122073122074122075122076122077122078122079122080122081122082122083122084122085122086122087122088122089122090122091122092122093122094122095122096122097122098122099122100122101122102122103122104122105122106122107122108122109122110122111122112122113122114122115122116122117122118122119122120122121122122122123122124122125122126122127122128122129122130122131122132122133122134122135122136122137122138122139122140122141122142122143122144122145122146122147122148122149122150122151122152122153122154122155122156122157122158122159122160122161122162122163122164122165122166122167122168122169122170122171122172122173122174122175122176122177122178122179122180122181122182122183122184122185122186122187122188122189122190122191122192122193122194122195122196122197122198122199122200122201122202122203122204122205122206122207122208122209122210122211122212122213122214122215122216122217122218122219122220122221122222122223122224122225122226122227122228122229122230122231122232122233122234122235122236122237122238122239122240122241122242122243122244122245122246122247122248122249122250122251122252122253122254122255122256122257122258122259122260122261122262122263122264122265122266122267122268122269122270122271122272122273122274122275122276122277122278122279122280122281122282122283122284122285122286122287122288122289122290122291122292122293122294122295122296122297122298122299122300122301122302122303122304122305122306122307122308122309122310122311122312122313122314122315122316122317122318122319122320122321122322122323122324122325122326122327122328122329122330122331122332122333122334122335122336122337122338122339122340122341122342122343122344122345122346122347122348122349122350122351122352122353122354122355122356122357122358122359122360122361122362122363122364122365122366122367122368122369122370122371122372122373122374122375122376122377122378122379122380122381122382122383122384122385122386122387122388122389122390122391122392122393122394122395122396122397122398122399122400122401122402122403122404122405122406122407122408122409122410122411122412122413122414122415122416122417122418122419122420122421122422122423122424122425122426122427122428122429122430122431122432122433122434122435122436122437122438122439122440122441122442122443122444122445122446122447122448122449122450122451122452122453122454122455122456122457122458122459122460122461122462122463122464122465122466122467122468122469122470122471122472122473122474122475122476122477122478122479122480122481122482122483122484122485122486122487122488122489122490122491122492122493122494122495122496122497122498122499122500122501122502122503122504122505122506122507122508122509122510122511122512122513122514122515122516122517122518122519122520122521122522122523122524122525122526122527122528122529122530122531122532122533122534122535122536122537122538122539122540122541122542122543122544122545122546122547122548122549122550122551122552122553122554122555122556122557122558122559122560122561122562122563122564122565122566122567122568122569122570122571122572122573122574122575122576122577122578122579122580122581122582122583122584122585122586122587122588122589122590122591122592122593122594122595122596122597122598122599122600122601122602122603122604122605122606122607122608122609122610122611122612122613122614122615122616122617122618122619122620122621122622122623122624122625122626122627122628122629122630122631122632122633122634122635122636122637122638122639122640122641122642122643122644122645122646122647122648122649122650122651122652122653122654122655122656122657122658122659122660122661122662122663122664122665122666122667122668122669122670122671122672122673122674122675122676122677122678122679122680122681122682122683122684122685122686122687122688122689122690122691122692122693122694122695122696122697122698122699122700122701122702122703122704122705122706122707122708122709122710122711122712122713122714122715122716122717122718122719122720122721122722122723122724122725122726122727122728122729122730122731122732122733122734122735122736122737122738122739122740122741122742122743122744122745122746122747122748122749122750122751122752122753122754122755122756122757122758122759122760122761122762122763122764122765122766122767122768122769122770122771122772122773122774122775122776122777122778122779122780122781122782122783122784122785122786122787122788122789122790122791122792122793122794122795122796122797122798122799122800122801122802122803122804122805122806122807122808122809122810122811122812122813122814122815122816122817122818122819122820122821122822122823122824122825122826122827122828122829122830122831122832122833122834122835122836122837122838122839122840122841122842122843122844122845122846122847122848122849122850122851122852122853122854122855122856122857122858122859122860122861122862122863122864122865122866122867122868122869122870122871122872122873122874122875122876122877122878122879122880122881122882122883122884122885122886122887122888122889122890122891122892122893122894122895122896122897122898122899122900122901122902122903122904122905122906122907122908122909122910122911122912122913122914122915122916122917122918122919122920122921122922122923122924122925122926122927122928122929122930122931122932122933122934122935122936122937122938122939122940122941122942122943122944122945122946122947122948122949122950122951122952122953122954122955122956122957122958122959122960122961122962122963122964122965122966122967122968122969122970122971122972122973122974122975122976122977122978122979122980122981122982122983122984122985122986122987122988122989122990122991122992122993122994122995122996122997122998122999123000123001123002123003123004123005123006123007123008123009123010123011123012123013123014123015123016123017123018123019123020123021123022123023123024123025123026123027123028123029123030123031123032123033123034123035123036123037123038123039123040123041123042123043123044123045123046123047123048123049123050123051123052123053123054123055123056123057123058123059123060123061123062123063123064123065123066123067123068123069123070123071123072123073123074123075123076123077123078123079123080123081123082123083123084123085123086123087123088123089123090123091123092123093123094123095123096123097123098123099123100123101123102123103123104123105123106123107123108123109123110123111123112123113123114123115123116123117123118123119123120123121123122123123123124123125123126123127123128123129123130123131123132123133123134123135123136123137123138123139123140123141123142123143123144123145123146123147123148123149123150123151123152123153123154123155123156123157123158123159123160123161123162123163123164123165123166123167123168123169123170123171123172123173123174123175123176123177123178123179123180123181123182123183123184123185123186123187123188123189123190123191123192123193123194123195123196123197123198123199123200123201123202123203123204123205123206123207123208123209123210123211123212123213123214123215123216123217123218123219123220123221123222123223123224123225123226123227123228123229123230123231123232123233123234123235123236123237123238123239123240123241123242123243123244123245123246123247123248123249123250123251123252123253123254123255123256123257123258123259123260123261123262123263123264123265123266123267123268123269123270123271123272123273123274123275123276123277123278123279123280123281123282123283123284123285123286123287123288123289123290123291123292123293123294123295123296123297123298123299123300123301123302123303123304123305123306123307123308123309123310123311123312123313123314123315123316123317123318123319123320123321123322123323123324123325123326123327123328123329123330123331123332123333123334123335123336123337123338123339123340123341123342123343123344123345123346123347123348123349123350123351123352123353123354123355123356123357123358123359123360123361123362123363123364123365123366123367123368123369123370123371123372123373123374123375123376123377123378123379123380123381123382123383123384123385123386123387123388123389123390123391123392123393123394123395123396123397123398123399123400123401123402123403123404123405123406123407123408123409123410123411123412123413123414123415123416123417123418123419123420123421123422123423123424123425123426123427123428123429123430123431123432123433123434123435123436123437123438123439123440123441123442123443123444123445123446123447123448123449123450123451123452123453123454123455123456123457123458123459123460123461123462123463123464123465123466123467123468123469123470123471123472123473123474123475123476123477123478123479123480123481123482123483123484123485123486123487123488123489123490123491123492123493123494123495123496123497123498123499123500123501123502123503123504123505123506123507123508123509123510123511123512123513123514123515123516123517123518123519123520123521123522123523123524123525123526123527123528123529123530123531123532123533123534123535123536123537123538123539123540123541123542123543123544123545123546123547123548123549123550123551123552123553123554123555123556123557123558123559123560123561123562123563123564123565123566123567123568123569123570123571123572123573123574123575123576123577123578123579123580123581123582123583123584123585123586123587123588123589123590123591123592123593123594123595123596123597123598123599123600123601123602123603123604123605123606123607123608123609123610123611123612123613123614123615123616123617123618123619123620123621123622123623123624123625123626123627123628123629123630123631123632123633123634123635123636123637123638123639123640123641123642123643123644123645123646123647123648123649123650123651123652123653123654123655123656123657123658123659123660123661123662123663123664123665123666123667123668123669123670123671123672123673123674123675123676123677123678123679123680123681123682123683123684123685123686123687123688123689123690123691123692123693123694123695123696123697123698123699123700123701123702123703123704123705123706123707123708123709123710123711123712123713123714123715123716123717123718123719123720123721123722123723123724123725123726123727123728123729123730123731123732123733123734123735123736123737123738123739123740123741123742123743123744123745123746123747123748123749123750123751123752123753123754123755123756123757123758123759123760123761123762123763123764123765123766123767123768123769123770123771123772123773123774123775123776123777123778123779123780123781123782123783123784123785123786123787123788123789123790123791123792123793123794123795123796123797123798123799123800123801123802123803123804123805123806123807123808123809123810123811123812123813123814123815123816123817123818123819123820123821123822123823123824123825123826123827123828123829123830123831123832123833123834123835123836123837123838123839123840123841123842123843123844123845123846123847123848123849123850123851123852123853123854123855123856123857123858123859123860123861123862123863123864123865123866123867123868123869123870123871123872123873123874123875123876123877123878123879123880123881123882123883123884123885123886123887123888123889123890123891123892123893123894123895123896123897123898123899123900123901123902123903123904123905123906123907123908123909123910123911123912123913123914123915123916123917123918123919123920123921123922123923123924123925123926123927123928123929123930123931123932123933123934123935123936123937123938123939123940123941123942123943123944123945123946123947123948123949123950123951123952123953123954123955123956123957123958123959123960123961123962123963123964123965123966123967123968123969123970123971123972123973123974123975123976123977123978123979123980123981123982123983123984123985123986123987123988123989123990123991123992123993123994123995123996123997123998123999124000124001124002124003124004124005124006124007124008124009124010124011124012124013124014124015124016124017124018124019124020124021124022124023124024124025124026124027124028124029124030124031124032124033124034124035124036124037124038124039124040124041124042124043124044124045124046124047124048124049124050124051124052124053124054124055124056124057124058124059124060124061124062124063124064124065124066124067124068124069124070124071124072124073124074124075124076124077124078124079124080124081124082124083124084124085124086124087124088124089124090124091124092124093124094124095124096124097124098124099124100124101124102124103124104124105124106124107124108124109124110124111124112124113124114124115124116124117124118124119124120124121124122124123124124124125124126124127124128124129124130124131124132124133124134124135124136124137124138124139124140124141124142124143124144124145124146124147124148124149124150124151124152124153124154124155124156124157124158124159124160124161124162124163124164124165124166124167124168124169124170124171124172124173124174124175124176124177124178124179124180124181124182124183124184124185124186124187124188124189124190124191124192124193124194124195124196124197124198124199124200124201124202124203124204124205124206124207124208124209124210124211124212124213124214124215124216124217124218124219124220124221124222124223124224124225124226124227124228124229124230124231124232124233124234124235124236124237124238124239124240124241124242124243124244124245124246124247124248124249124250124251124252124253124254124255124256124257124258124259124260124261124262124263124264124265124266124267124268124269124270124271124272124273124274124275124276124277124278124279124280124281124282124283124284124285124286124287124288124289124290124291124292124293124294124295124296124297124298124299124300124301124302124303124304124305124306124307124308124309124310124311124312124313124314124315124316124317124318124319124320124321124322124323124324124325124326124327124328124329124330124331124332124333124334124335124336124337124338124339124340124341124342124343124344124345124346124347124348124349124350124351124352124353124354124355124356124357124358124359124360124361124362124363124364124365124366124367124368124369124370124371124372124373124374124375124376124377124378124379124380124381124382124383124384124385124386124387124388124389124390124391124392124393124394124395124396124397124398124399124400124401124402124403124404124405124406124407124408124409124410124411124412124413124414124415124416124417124418124419124420124421124422124423124424124425124426124427124428124429124430124431124432124433124434124435124436124437124438124439124440124441124442124443124444124445124446124447124448124449124450124451124452124453124454124455124456124457124458124459124460124461124462124463124464124465124466124467124468124469124470124471124472124473124474124475124476124477124478124479124480124481124482124483124484124485124486124487124488124489124490124491124492124493124494124495124496124497124498124499124500124501124502124503124504124505124506124507124508124509124510124511124512124513124514124515124516124517124518124519124520124521124522124523124524124525124526124527124528124529124530124531124532124533124534124535124536124537124538124539124540124541124542124543124544124545124546124547124548124549124550124551124552124553124554124555124556124557124558124559124560124561124562124563124564124565124566124567124568124569124570124571124572124573124574124575124576124577124578124579124580124581124582124583124584124585124586124587124588124589124590124591124592124593124594124595124596124597124598124599124600124601124602124603124604124605124606124607124608124609124610124611124612124613124614124615124616124617124618124619124620124621124622124623124624124625124626124627124628124629124630124631124632124633124634124635124636124637124638124639124640124641124642124643124644124645124646124647124648124649124650124651124652124653124654124655124656124657124658124659124660124661124662124663124664124665124666124667124668124669124670124671124672124673124674124675124676124677124678124679124680124681124682124683124684124685124686124687124688124689124690124691124692124693124694124695124696124697124698124699124700124701124702124703124704124705124706124707124708124709124710124711124712124713124714124715124716124717124718124719124720124721124722124723124724124725124726124727124728124729124730124731124732124733124734124735124736124737124738124739124740124741124742124743124744124745124746124747124748124749124750124751124752124753124754124755124756124757124758124759124760124761124762124763124764124765124766124767124768124769124770124771124772124773124774124775124776124777124778124779124780124781124782124783124784124785124786124787124788124789124790124791124792124793124794124795124796124797124798124799124800124801124802124803124804124805124806124807124808124809124810124811124812124813124814124815124816124817124818124819124820124821124822124823124824124825124826124827124828124829124830124831124832124833124834124835124836124837124838124839124840124841124842124843124844124845124846124847124848124849124850124851124852124853124854124855124856124857124858124859124860124861124862124863124864124865124866124867124868124869124870124871124872124873124874124875124876124877124878124879124880124881124882124883124884124885124886124887124888124889124890124891124892124893124894124895124896124897124898124899124900124901124902124903124904124905124906124907124908124909124910124911124912124913124914124915124916124917124918124919124920124921124922124923124924124925124926124927124928124929124930124931124932124933124934124935124936124937124938124939124940124941124942124943124944124945124946124947124948124949124950124951124952124953124954124955124956124957124958124959124960124961124962124963124964124965124966124967124968124969124970124971124972124973124974124975124976124977124978124979124980124981124982124983124984124985124986124987124988124989124990124991124992124993124994124995124996124997124998124999125000125001125002125003125004125005125006125007125008125009125010125011125012125013125014125015125016125017125018125019125020125021125022125023125024125025125026125027125028125029125030125031125032125033125034125035125036125037125038125039125040125041125042125043125044125045125046125047125048125049125050125051125052125053125054125055125056125057125058125059125060125061125062125063125064125065125066125067125068125069125070125071125072125073125074125075125076125077125078125079125080125081125082125083125084125085125086125087125088125089125090125091125092125093125094125095125096125097125098125099125100125101125102125103125104125105125106125107125108125109125110125111125112125113125114125115125116125117125118125119125120125121125122125123125124125125125126125127125128125129125130125131125132125133125134125135125136125137125138125139125140125141125142125143125144125145125146125147125148125149125150125151125152125153125154125155125156125157125158125159125160125161125162125163125164125165125166125167125168125169125170125171125172125173125174125175125176125177125178125179125180125181125182125183125184125185125186125187125188125189125190125191125192125193125194125195125196125197125198125199125200125201125202125203125204125205125206125207125208125209125210125211125212125213125214125215125216125217125218125219125220125221125222125223125224125225125226125227125228125229125230125231125232125233125234125235125236125237125238125239125240125241125242125243125244125245125246125247125248125249125250125251125252125253125254125255125256125257125258125259125260125261125262125263125264125265125266125267125268125269125270125271125272125273125274125275125276125277125278125279125280125281125282125283125284125285125286125287125288125289125290125291125292125293125294125295125296125297125298125299125300125301125302125303125304125305125306125307125308125309125310125311125312125313125314125315125316125317125318125319125320125321125322125323125324125325125326125327125328125329125330125331125332125333125334125335125336125337125338125339125340125341125342125343125344125345125346125347125348125349125350125351125352125353125354125355125356125357125358125359125360125361125362125363125364125365125366125367125368125369125370125371125372125373125374125375125376125377125378125379125380125381125382125383125384125385125386125387125388125389125390125391125392125393125394125395125396125397125398125399125400125401125402125403125404125405125406125407125408125409125410125411125412125413125414125415125416125417125418125419125420125421125422125423125424125425125426125427125428125429125430125431125432125433125434125435125436125437125438125439125440125441125442125443125444125445125446125447125448125449125450125451125452125453125454125455125456125457125458125459125460125461125462125463125464125465125466125467125468125469125470125471125472125473125474125475125476125477125478125479125480125481125482125483125484125485125486125487125488125489125490125491125492125493125494125495125496125497125498125499125500125501125502125503125504125505125506125507125508125509125510125511125512125513125514125515125516125517125518125519125520125521125522125523125524125525125526125527125528125529125530125531125532125533125534125535125536125537125538125539125540125541125542125543125544125545125546125547125548125549125550125551125552125553125554125555125556125557125558125559125560125561125562125563125564125565125566125567125568125569125570125571125572125573125574125575125576125577125578125579125580125581125582125583125584125585125586125587125588125589125590125591125592125593125594125595125596125597125598125599125600125601125602125603125604125605125606125607125608125609125610125611125612125613125614125615125616125617125618125619125620125621125622125623125624125625125626125627125628125629125630125631125632125633125634125635125636125637125638125639125640125641125642125643125644125645125646125647125648125649125650125651125652125653125654125655125656125657125658125659125660125661125662125663125664125665125666125667125668125669125670125671125672125673125674125675125676125677125678125679125680125681125682125683125684125685125686125687125688125689125690125691125692125693125694125695125696125697125698125699125700125701125702125703125704125705125706125707125708125709125710125711125712125713125714125715125716125717125718125719125720125721125722125723125724125725125726125727125728125729125730125731125732125733125734125735125736125737125738125739125740125741125742125743125744125745125746125747125748125749125750125751125752125753125754125755125756125757125758125759125760125761125762125763125764125765125766125767125768125769125770125771125772125773125774125775125776125777125778125779125780125781125782125783125784125785125786125787125788125789125790125791125792125793125794125795125796125797125798125799125800125801125802125803125804125805125806125807125808125809125810125811125812125813125814125815125816125817125818125819125820125821125822125823125824125825125826125827125828125829125830125831125832125833125834125835125836125837125838125839125840125841125842125843125844125845125846125847125848125849125850125851125852125853125854125855125856125857125858125859125860125861125862125863125864125865125866125867125868125869125870125871125872125873125874125875125876125877125878125879125880125881125882125883125884125885125886125887125888125889125890125891125892125893125894125895125896125897125898125899125900125901125902125903125904125905125906125907125908125909125910125911125912125913125914125915125916125917125918125919125920125921125922125923125924125925125926125927125928125929125930125931125932125933125934125935125936125937125938125939125940125941125942125943125944125945125946125947125948125949125950125951125952125953125954125955125956125957125958125959125960125961125962125963125964125965125966125967125968125969125970125971125972125973125974125975125976125977125978125979125980125981125982125983125984125985125986125987125988125989125990125991125992125993125994125995125996125997125998125999126000126001126002126003126004126005126006126007126008126009126010126011126012126013126014126015126016126017126018126019126020126021126022126023126024126025126026126027126028126029126030126031126032126033126034126035126036126037126038126039126040126041126042126043126044126045126046126047126048126049126050126051126052126053126054126055126056126057126058126059126060126061126062126063126064126065126066126067126068126069126070126071126072126073126074126075126076126077126078126079126080126081126082126083126084126085126086126087126088126089126090126091126092126093126094126095126096126097126098126099126100126101126102126103126104126105126106126107126108126109126110126111126112126113126114126115126116126117126118126119126120126121126122126123126124126125126126126127126128126129126130126131126132126133126134126135126136126137126138126139126140126141126142126143126144126145126146126147126148126149126150126151126152126153126154126155126156126157126158126159126160126161126162126163126164126165126166126167126168126169126170126171126172126173126174126175126176126177126178126179126180126181126182126183126184126185126186126187126188126189126190126191126192126193126194126195126196126197126198126199126200126201126202126203126204126205126206126207126208126209126210126211126212126213126214126215126216126217126218126219126220126221126222126223126224126225126226126227126228126229126230126231126232126233126234126235126236126237126238126239126240126241126242126243126244126245126246126247126248126249126250126251126252126253126254126255126256126257126258126259126260126261126262126263126264126265126266126267126268126269126270126271126272126273126274126275126276126277126278126279126280126281126282126283126284126285126286126287126288126289126290126291126292126293126294126295126296126297126298126299126300126301126302126303126304126305126306126307126308126309126310126311126312126313126314126315126316126317126318126319126320126321126322126323126324126325126326126327126328126329126330126331126332126333126334126335126336126337126338126339126340126341126342126343126344126345126346126347126348126349126350126351126352126353126354126355126356126357126358126359126360126361126362126363126364126365126366126367126368126369126370126371126372126373126374126375126376126377126378126379126380126381126382126383126384126385126386126387126388126389126390126391126392126393126394126395126396126397126398126399126400126401126402126403126404126405126406126407126408126409126410126411126412126413126414126415126416126417126418126419126420126421126422126423126424126425126426126427126428126429126430126431126432126433126434126435126436126437126438126439126440126441126442126443126444126445126446126447126448126449126450126451126452126453126454126455126456126457126458126459126460126461126462126463126464126465126466126467126468126469126470126471126472126473126474126475126476126477126478126479126480126481126482126483126484126485126486126487126488126489126490126491126492126493126494126495126496126497126498126499126500126501126502126503126504126505126506126507126508126509126510126511126512126513126514126515126516126517126518126519126520126521126522126523126524126525126526126527126528126529126530126531126532126533126534126535126536126537126538126539126540126541126542126543126544126545126546126547126548126549126550126551126552126553126554126555126556126557126558126559126560126561126562126563126564126565126566126567126568126569126570126571126572126573126574126575126576126577126578126579126580126581126582126583126584126585126586126587126588126589126590126591126592126593126594126595126596126597126598126599126600126601126602126603126604126605126606126607126608126609126610126611126612126613126614126615126616126617126618126619126620126621126622126623126624126625126626126627126628126629126630126631126632126633126634126635126636126637126638126639126640126641126642126643126644126645126646126647126648126649126650126651126652126653126654126655126656126657126658126659126660126661126662126663126664126665126666126667126668126669126670126671126672126673126674126675126676126677126678126679126680126681126682126683126684126685126686126687126688126689126690126691126692126693126694126695126696126697126698126699126700126701126702126703126704126705126706126707126708126709126710126711126712126713126714126715126716126717126718126719126720126721126722126723126724126725126726126727126728126729126730126731126732126733126734126735126736126737126738126739126740126741126742126743126744126745126746126747126748126749126750126751126752126753126754126755126756126757126758126759126760126761126762126763126764126765126766126767126768126769126770126771126772126773126774126775126776126777126778126779126780126781126782126783126784126785126786126787126788126789126790126791126792126793126794126795126796126797126798126799126800126801126802126803126804126805126806126807126808126809126810126811126812126813126814126815126816126817126818126819126820126821126822126823126824126825126826126827126828126829126830126831126832126833126834126835126836126837126838126839126840126841126842126843126844126845126846126847126848126849126850126851126852126853126854126855126856126857126858126859126860126861126862126863126864126865126866126867126868126869126870126871126872126873126874126875126876126877126878126879126880126881126882126883126884126885126886126887126888126889126890126891126892126893126894126895126896126897126898126899126900126901126902126903126904126905126906126907126908126909126910126911126912126913126914126915126916126917126918126919126920126921126922126923126924126925126926126927126928126929126930126931126932126933126934126935126936126937126938126939126940126941126942126943126944126945126946126947126948126949126950126951126952126953126954126955126956126957126958126959126960126961126962126963126964126965126966126967126968126969126970126971126972126973126974126975126976126977126978126979126980126981126982126983126984126985126986126987126988126989126990126991126992126993126994126995126996126997126998126999127000127001127002127003127004127005127006127007127008127009127010127011127012127013127014127015127016127017127018127019127020127021127022127023127024127025127026127027127028127029127030127031127032127033127034127035127036127037127038127039127040127041127042127043127044127045127046127047127048127049127050127051127052127053127054127055127056127057127058127059127060127061127062127063127064127065127066127067127068127069127070127071127072127073127074127075127076127077127078127079127080127081127082127083127084127085127086127087127088127089127090127091127092127093127094127095127096127097127098127099127100127101127102127103127104127105127106127107127108127109127110127111127112127113127114127115127116127117127118127119127120127121127122127123127124127125127126127127127128127129127130127131127132127133127134127135127136127137127138127139127140127141127142127143127144127145127146127147127148127149127150127151127152127153127154127155127156127157127158127159127160127161127162127163127164127165127166127167127168127169127170127171127172127173127174127175127176127177127178127179127180127181127182127183127184127185127186127187127188127189127190127191127192127193127194127195127196127197127198127199127200127201127202127203127204127205127206127207127208127209127210127211127212127213127214127215127216127217127218127219127220127221127222127223127224127225127226127227127228127229127230127231127232127233127234127235127236127237127238127239127240127241127242127243127244127245127246127247127248127249127250127251127252127253127254127255127256127257127258127259127260127261127262127263127264127265127266127267127268127269127270127271127272127273127274127275127276127277127278127279127280127281127282127283127284127285127286127287127288127289127290127291127292127293127294127295127296127297127298127299127300127301127302127303127304127305127306127307127308127309127310127311127312127313127314127315127316127317127318127319127320127321127322127323127324127325127326127327127328127329127330127331127332127333127334127335127336127337127338127339127340127341127342127343127344127345127346127347127348127349127350127351127352127353127354127355127356127357127358127359127360127361127362127363127364127365127366127367127368127369127370127371127372127373127374127375127376127377127378127379127380127381127382127383127384127385127386127387127388127389127390127391127392127393127394127395127396127397127398127399127400127401127402127403127404127405127406127407127408127409127410127411127412127413127414127415127416127417127418127419127420127421127422127423127424127425127426127427127428127429127430127431127432127433127434127435127436127437127438127439127440127441127442127443127444127445127446127447127448127449127450127451127452127453127454127455127456127457127458127459127460127461127462127463127464127465127466127467127468127469127470127471127472127473127474127475127476127477127478127479127480127481127482127483127484127485127486127487127488127489127490127491127492127493127494127495127496127497127498127499127500127501127502127503127504127505127506127507127508127509127510127511127512127513127514127515127516127517127518127519127520127521127522127523127524127525127526127527127528127529127530127531127532127533127534127535127536127537127538127539127540127541127542127543127544127545127546127547127548127549127550127551127552127553127554127555127556127557127558127559127560127561127562127563127564127565127566127567127568127569127570127571127572127573127574127575127576127577127578127579127580127581127582127583127584127585127586127587127588127589127590127591127592127593127594127595127596127597127598127599127600127601127602127603127604127605127606127607127608127609127610127611127612127613127614127615127616127617127618127619127620127621127622127623127624127625127626127627127628127629127630127631127632127633127634127635127636127637127638127639127640127641127642127643127644127645127646127647127648127649127650127651127652127653127654127655127656127657127658127659127660127661127662127663127664127665127666127667127668127669127670127671127672127673127674127675127676127677127678127679127680127681127682127683127684127685127686127687127688127689127690127691127692127693127694127695127696127697127698127699127700127701127702127703127704127705127706127707127708127709127710127711127712127713127714127715127716127717127718127719127720127721127722127723127724127725127726127727127728127729127730127731127732127733127734127735127736127737127738127739127740127741127742127743127744127745127746127747127748127749127750127751127752127753127754127755127756127757127758127759127760127761127762127763127764127765127766127767127768127769127770127771127772127773127774127775127776127777127778127779127780127781127782127783127784127785127786127787127788127789127790127791127792127793127794127795127796127797127798127799127800127801127802127803127804127805127806127807127808127809127810127811127812127813127814127815127816127817127818127819127820127821127822127823127824127825127826127827127828127829127830127831127832127833127834127835127836127837127838127839127840127841127842127843127844127845127846127847127848127849127850127851127852127853127854127855127856127857127858127859127860127861127862127863127864127865127866127867127868127869127870127871127872127873127874127875127876127877127878127879127880127881127882127883127884127885127886127887127888127889127890127891127892127893127894127895127896127897127898127899127900127901127902127903127904127905127906127907127908127909127910127911127912127913127914127915127916127917127918127919127920127921127922127923127924127925127926127927127928127929127930127931127932127933127934127935127936127937127938127939127940127941127942127943127944127945127946127947127948127949127950127951127952127953127954127955127956127957127958127959127960127961127962127963127964127965127966127967127968127969127970127971127972127973127974127975127976127977127978127979127980127981127982127983127984127985127986127987127988127989127990127991127992127993127994127995127996127997127998127999128000128001128002128003128004128005128006128007128008128009128010128011128012128013128014128015128016128017128018128019128020128021128022128023128024128025128026128027128028128029128030128031128032128033128034128035128036128037128038128039128040128041128042128043128044128045128046128047128048128049128050128051128052128053128054128055128056128057128058128059128060128061128062128063128064128065128066128067128068128069128070128071128072128073128074128075128076128077128078128079128080128081128082128083128084128085128086128087128088128089128090128091128092128093128094128095128096128097128098128099128100128101128102128103128104128105128106128107128108128109128110128111128112128113128114128115128116128117128118128119128120128121128122128123128124128125128126128127128128128129128130128131128132128133128134128135128136128137128138128139128140128141128142128143128144128145128146128147128148128149128150128151128152128153128154128155128156128157128158128159128160128161128162128163128164128165128166128167128168128169128170128171128172128173128174128175128176128177128178128179128180128181128182128183128184128185128186128187128188128189128190128191128192128193128194128195128196128197128198128199128200128201128202128203128204128205128206128207128208128209128210128211128212128213128214128215128216128217128218128219128220128221128222128223128224128225128226128227128228128229128230128231128232128233128234128235128236128237128238128239128240128241128242128243128244128245128246128247128248128249128250128251128252128253128254128255128256128257128258128259128260128261128262128263128264128265128266128267128268128269128270128271128272128273128274128275128276128277128278128279128280128281128282128283128284128285128286128287128288128289128290128291128292128293128294128295128296128297128298128299128300128301128302128303128304128305128306128307128308128309128310128311128312128313128314128315128316128317128318128319128320128321128322128323128324128325128326128327128328128329128330128331128332128333128334128335128336128337128338128339128340128341128342128343128344128345128346128347128348128349128350128351128352128353128354128355128356128357128358128359128360128361128362128363128364128365128366128367128368128369128370128371128372128373128374128375128376128377128378128379128380128381128382128383128384128385128386128387128388128389128390128391128392128393128394128395128396128397128398128399128400128401128402128403128404128405128406128407128408128409128410128411128412128413128414128415128416128417128418128419128420128421128422128423128424128425128426128427128428128429128430128431128432128433128434128435128436128437128438128439128440128441128442128443128444128445128446128447128448128449128450128451128452128453128454128455128456128457128458128459128460128461128462128463128464128465128466128467128468128469128470128471128472128473128474128475128476128477128478128479128480128481128482128483128484128485128486128487128488128489128490128491128492128493128494128495128496128497128498128499128500128501128502128503128504128505128506128507128508128509128510128511128512128513128514128515128516128517128518128519128520128521128522128523128524128525128526128527128528128529128530128531128532128533128534128535128536128537128538128539128540128541128542128543128544128545128546128547128548128549128550128551128552128553128554128555128556128557128558128559128560128561128562128563128564128565128566128567128568128569128570128571128572128573128574128575128576128577128578128579128580128581128582128583128584128585128586128587128588128589128590128591128592128593128594128595128596128597128598128599128600128601128602128603128604128605128606128607128608128609128610128611128612128613128614128615128616128617128618128619128620128621128622128623128624128625128626128627128628128629128630128631128632128633128634128635128636128637128638128639128640128641128642128643128644128645128646128647128648128649128650128651128652128653128654128655128656128657128658128659128660128661128662128663128664128665128666128667128668128669128670128671128672128673128674128675128676128677128678128679128680128681128682128683128684128685128686128687128688128689128690128691128692128693128694128695128696128697128698128699128700128701128702128703128704128705128706128707128708128709128710128711128712128713128714128715128716128717128718128719128720128721128722128723128724128725128726128727128728128729128730128731128732128733128734128735128736128737128738128739128740128741128742128743128744128745128746128747128748128749128750128751128752128753128754128755128756128757128758128759128760128761128762128763128764128765128766128767128768128769128770128771128772128773128774128775128776128777128778128779128780128781128782128783128784128785128786128787128788128789128790128791128792128793128794128795128796128797128798128799128800128801128802128803128804128805128806128807128808128809128810128811128812128813128814128815128816128817128818128819128820128821128822128823128824128825128826128827128828128829128830128831128832128833128834128835128836128837128838128839128840128841128842128843128844128845128846128847128848128849128850128851128852128853128854128855128856128857128858128859128860128861128862128863128864128865128866128867128868128869128870128871128872128873128874128875128876128877128878128879128880128881128882128883128884128885128886128887128888128889128890128891128892128893128894128895128896128897128898128899128900128901128902128903128904128905128906128907128908128909128910128911128912128913128914128915128916128917128918128919128920128921128922128923128924128925128926128927128928128929128930128931128932128933128934128935128936128937128938128939128940128941128942128943128944128945128946128947128948128949128950128951128952128953128954128955128956128957128958128959128960128961128962128963128964128965128966128967128968128969128970128971128972128973128974128975128976128977128978128979128980128981128982128983128984128985128986128987128988128989128990128991128992128993128994128995128996128997128998128999129000129001129002129003129004129005129006129007129008129009129010129011129012129013129014129015129016129017129018129019129020129021129022129023129024129025129026129027129028129029129030129031129032129033129034129035129036129037129038129039129040129041129042129043129044129045129046129047129048129049129050129051129052129053129054129055129056129057129058129059129060129061129062129063129064129065129066129067129068129069129070129071129072129073129074129075129076129077129078129079129080129081129082129083129084129085129086129087129088129089129090129091129092129093129094129095129096129097129098129099129100129101129102129103129104129105129106129107129108129109129110129111129112129113129114129115129116129117129118129119129120129121129122129123129124129125129126129127129128129129129130129131129132129133129134129135129136129137129138129139129140129141129142129143129144129145129146129147129148129149129150129151129152129153129154129155129156129157129158129159129160129161129162129163129164129165129166129167129168129169129170129171129172129173129174129175129176129177129178129179129180129181129182129183129184129185129186129187129188129189129190129191129192129193129194129195129196129197129198129199129200129201129202129203129204129205129206129207129208129209129210129211129212129213129214129215129216129217129218129219129220129221129222129223129224129225129226129227129228129229129230129231129232129233129234129235129236129237129238129239129240129241129242129243129244129245129246129247129248129249129250129251129252129253129254129255129256129257129258129259129260129261129262129263129264129265129266129267129268129269129270129271129272129273129274129275129276129277129278129279129280129281129282129283129284129285129286129287129288129289129290129291129292129293129294129295129296129297129298129299129300129301129302129303129304129305129306129307129308129309129310129311129312129313129314129315129316129317129318129319129320129321129322129323129324129325129326129327129328129329129330129331129332129333129334129335129336129337129338129339129340129341129342129343129344129345129346129347129348129349129350129351129352129353129354129355129356129357129358129359129360129361129362129363129364129365129366129367129368129369129370129371129372129373129374129375129376129377129378129379129380129381129382129383129384129385129386129387129388129389129390129391129392129393129394129395129396129397129398129399129400129401129402129403129404129405129406129407129408129409129410129411129412129413129414129415129416129417129418129419129420129421129422129423129424129425129426129427129428129429129430129431129432129433129434129435129436129437129438129439129440129441129442129443129444129445129446129447129448129449129450129451129452129453129454129455129456129457129458129459129460129461129462129463129464129465129466129467129468129469129470129471129472129473129474129475129476129477129478129479129480129481129482129483129484129485129486129487129488129489129490129491129492129493129494129495129496129497129498129499129500129501129502129503129504129505129506129507129508129509129510129511129512129513129514129515129516129517129518129519129520129521129522129523129524129525129526129527129528129529129530129531129532129533129534129535129536129537129538129539129540129541129542129543129544129545129546129547129548129549129550129551129552129553129554129555129556129557129558129559129560129561129562129563129564129565129566129567129568129569129570129571129572129573129574129575129576129577129578129579129580129581129582129583129584129585129586129587129588129589129590129591129592129593129594129595129596129597129598129599129600129601129602129603129604129605129606129607129608129609129610129611129612129613129614129615129616129617129618129619129620129621129622129623129624129625129626129627129628129629129630129631129632129633129634129635129636129637129638129639129640129641129642129643129644129645129646129647129648129649129650129651129652129653129654129655129656129657129658129659129660129661129662129663129664129665129666129667129668129669129670129671129672129673129674129675129676129677129678129679129680129681129682129683129684129685129686129687129688129689129690129691129692129693129694129695129696129697129698129699129700129701129702129703129704129705129706129707129708129709129710129711129712129713129714129715129716129717129718129719129720129721129722129723129724129725129726129727129728129729129730129731129732129733129734129735129736129737129738129739129740129741129742129743129744129745129746129747129748129749129750129751129752129753129754129755129756129757129758129759129760129761129762129763129764129765129766129767129768129769129770129771129772129773129774129775129776129777129778129779129780129781129782129783129784129785129786129787129788129789129790129791129792129793129794129795129796129797129798129799129800129801129802129803129804129805129806129807129808129809129810129811129812129813129814129815129816129817129818129819129820129821129822129823129824129825129826129827129828129829129830129831129832129833129834129835129836129837129838129839129840129841129842129843129844129845129846129847129848129849129850129851129852129853129854129855129856129857129858129859129860129861129862129863129864129865129866129867129868129869129870129871129872129873129874129875129876129877129878129879129880129881129882129883129884129885129886129887129888129889129890129891129892129893129894129895129896129897129898129899129900129901129902129903129904129905129906129907129908129909129910129911129912129913129914129915129916129917129918129919129920129921129922129923129924129925129926129927129928129929129930129931129932129933129934129935129936129937129938129939129940129941129942129943129944129945129946129947129948129949129950129951129952129953129954129955129956129957129958129959129960129961129962129963129964129965129966129967129968129969129970129971129972129973129974129975129976129977129978129979129980129981129982129983129984129985129986129987129988129989129990129991129992129993129994129995129996129997129998129999130000130001130002130003130004130005130006130007130008130009130010130011130012130013130014130015130016130017130018130019130020130021130022130023130024130025130026130027130028130029130030130031130032130033130034130035130036130037130038130039130040130041130042130043130044130045130046130047130048130049130050130051130052130053130054130055130056130057130058130059130060130061130062130063130064130065130066130067130068130069130070130071130072130073130074130075130076130077130078130079130080130081130082130083130084130085130086130087130088130089130090130091130092130093130094130095130096130097130098130099130100130101130102130103130104130105130106130107130108130109130110130111130112130113130114130115130116130117130118130119130120130121130122130123130124130125130126130127130128130129130130130131130132130133130134130135130136130137130138130139130140130141130142130143130144130145130146130147130148130149130150130151130152130153130154130155130156130157130158130159130160130161130162130163130164130165130166130167130168130169130170130171130172130173130174130175130176130177130178130179130180130181130182130183130184130185130186130187130188130189130190130191130192130193130194130195130196130197130198130199130200130201130202130203130204130205130206130207130208130209130210130211130212130213130214130215130216130217130218130219130220130221130222130223130224130225130226130227130228130229130230130231130232130233130234130235130236130237130238130239130240130241130242130243130244130245130246130247130248130249130250130251130252130253130254130255130256130257130258130259130260130261130262130263130264130265130266130267130268130269130270130271130272130273130274130275130276130277130278130279130280130281130282130283130284130285130286130287130288130289130290130291130292130293130294130295130296130297130298130299130300130301130302130303130304130305130306130307130308130309130310130311130312130313130314130315130316130317130318130319130320130321130322130323130324130325130326130327130328130329130330130331130332130333130334130335130336130337130338130339130340130341130342130343130344130345130346130347130348130349130350130351130352130353130354130355130356130357130358130359130360130361130362130363130364130365130366130367130368130369130370130371130372130373130374130375130376130377130378130379130380130381130382130383130384130385130386130387130388130389130390130391130392130393130394130395130396130397130398130399130400130401130402130403130404130405130406130407130408130409130410130411130412130413130414130415130416130417130418130419130420130421130422130423130424130425130426130427130428130429130430130431130432130433130434130435130436130437130438130439130440130441130442130443130444130445130446130447130448130449130450130451130452130453130454130455130456130457130458130459130460130461130462130463130464130465130466130467130468130469130470130471130472130473130474130475130476130477130478130479130480130481130482130483130484130485130486130487130488130489130490130491130492130493130494130495130496130497130498130499130500130501130502130503130504130505130506130507130508130509130510130511130512130513130514130515130516130517130518130519130520130521130522130523130524130525130526130527130528130529130530130531130532130533130534130535130536130537130538130539130540130541130542130543130544130545130546130547130548130549130550130551130552130553130554130555130556130557130558130559130560130561130562130563130564130565130566130567130568130569130570130571130572130573130574130575130576130577130578130579130580130581130582130583130584130585130586130587130588130589130590130591130592130593130594130595130596130597130598130599130600130601130602130603130604130605130606130607130608130609130610130611130612130613130614130615130616130617130618130619130620130621130622130623130624130625130626130627130628130629130630130631130632130633130634130635130636130637130638130639130640130641130642130643130644130645130646130647130648130649130650130651130652130653130654130655130656130657130658130659130660130661130662130663130664130665130666130667130668130669130670130671130672130673130674130675130676130677130678130679130680130681130682130683130684130685130686130687130688130689130690130691130692130693130694130695130696130697130698130699130700130701130702130703130704130705130706130707130708130709130710130711130712130713130714130715130716130717130718130719130720130721130722130723130724130725130726130727130728130729130730130731130732130733130734130735130736130737130738130739130740130741130742130743130744130745130746130747130748130749130750130751130752130753130754130755130756130757130758130759130760130761130762130763130764130765130766130767130768130769130770130771130772130773130774130775130776130777130778130779130780130781130782130783130784130785130786130787130788130789130790130791130792130793130794130795130796130797130798130799130800130801130802130803130804130805130806130807130808130809130810130811130812130813130814130815130816130817130818130819130820130821130822130823130824130825130826130827130828130829130830130831130832130833130834130835130836130837130838130839130840130841130842130843130844130845130846130847130848130849130850130851130852130853130854130855130856130857130858130859130860130861130862130863130864130865130866130867130868130869130870130871130872130873130874130875130876130877130878130879130880130881130882130883130884130885130886130887130888130889130890130891130892130893130894130895130896130897130898130899130900130901130902130903130904130905130906130907130908130909130910130911130912130913130914130915130916130917130918130919130920130921130922130923130924130925130926130927130928130929130930130931130932130933130934130935130936130937130938130939130940130941130942130943130944130945130946130947130948130949130950130951130952130953130954130955130956130957130958130959130960130961130962130963130964130965130966130967130968130969130970130971130972130973130974130975130976130977130978130979130980130981130982130983130984130985130986130987130988130989130990130991130992130993130994130995130996130997130998130999131000131001131002131003131004131005131006131007131008131009131010131011131012131013131014131015131016131017131018131019131020131021131022131023131024131025131026131027131028131029131030131031131032131033131034131035131036131037131038131039131040131041131042131043131044131045131046131047131048131049131050131051131052131053131054131055131056131057131058131059131060131061131062131063131064131065131066131067131068131069131070131071131072131073131074131075131076131077131078131079131080131081131082131083131084131085131086131087131088131089131090131091131092131093131094131095131096131097131098131099131100131101131102131103131104131105131106131107131108131109131110131111131112131113131114131115131116131117131118131119131120131121131122131123131124131125131126131127131128131129131130131131131132131133131134131135131136131137131138131139131140131141131142131143131144131145131146131147131148131149131150131151131152131153131154131155131156131157131158131159131160131161131162131163131164131165131166131167131168131169131170131171131172131173131174131175131176131177131178131179131180131181131182131183131184131185131186131187131188131189131190131191131192131193131194131195131196131197131198131199131200131201131202131203131204131205131206131207131208131209131210131211131212131213131214131215131216131217131218131219131220131221131222131223131224131225131226131227131228131229131230131231131232131233131234131235131236131237131238131239131240131241131242131243131244131245131246131247131248131249131250131251131252131253131254131255131256131257131258131259131260131261131262131263131264131265131266131267131268131269131270131271131272131273131274131275131276131277131278131279131280131281131282131283131284131285131286131287131288131289131290131291131292131293131294131295131296131297131298131299131300131301131302131303131304131305131306131307131308131309131310131311131312131313131314131315131316131317131318131319131320131321131322131323131324131325131326131327131328131329131330131331131332131333131334131335131336131337131338131339131340131341131342131343131344131345131346131347131348131349131350131351131352131353131354131355131356131357131358131359131360131361131362131363131364131365131366131367131368131369131370131371131372131373131374131375131376131377131378131379131380131381131382131383131384131385131386131387131388131389131390131391131392131393131394131395131396131397131398131399131400131401131402131403131404131405131406131407131408131409131410131411131412131413131414131415131416131417131418131419131420131421131422131423131424131425131426131427131428131429131430131431131432131433131434131435131436131437131438131439131440131441131442131443131444131445131446131447131448131449131450131451131452131453131454131455131456131457131458131459131460131461131462131463131464131465131466131467131468131469131470131471131472131473131474131475131476131477131478131479131480131481131482131483131484131485131486131487131488131489131490131491131492131493131494131495131496131497131498131499131500131501131502131503131504131505131506131507131508131509131510131511131512131513131514131515131516131517131518131519131520131521131522131523131524131525131526131527131528131529131530131531131532131533131534131535131536131537131538131539131540131541131542131543131544131545131546131547131548131549131550131551131552131553131554131555131556131557131558131559131560131561131562131563131564131565131566131567131568131569131570131571131572131573131574131575131576131577131578131579131580131581131582131583131584131585131586131587131588131589131590131591131592131593131594131595131596131597131598131599131600131601131602131603131604131605131606131607131608131609131610131611131612131613131614131615131616131617131618131619131620131621131622131623131624131625131626131627131628131629131630131631131632131633131634131635131636131637131638131639131640131641131642131643131644131645131646131647131648131649131650131651131652131653131654131655131656131657131658131659131660131661131662131663131664131665131666131667131668131669131670131671131672131673131674131675131676131677131678131679131680131681131682131683131684131685131686131687131688131689131690131691131692131693131694131695131696131697131698131699131700131701131702131703131704131705131706131707131708131709131710131711131712131713131714131715131716131717131718131719131720131721131722131723131724131725131726131727131728131729131730131731131732131733131734131735131736131737131738131739131740131741131742131743131744131745131746131747131748131749131750131751131752131753131754131755131756131757131758131759131760131761131762131763131764131765131766131767131768131769131770131771131772131773131774131775131776131777131778131779131780131781131782131783131784131785131786131787131788131789131790131791131792131793131794131795131796131797131798131799131800131801131802131803131804131805131806131807131808131809131810131811131812131813131814131815131816131817131818131819131820131821131822131823131824131825131826131827131828131829131830131831131832131833131834131835131836131837131838131839131840131841131842131843131844131845131846131847131848131849131850131851131852131853131854131855131856131857131858131859131860131861131862131863131864131865131866131867131868131869131870131871131872131873131874131875131876131877131878131879131880131881131882131883131884131885131886131887131888131889131890131891131892131893131894131895131896131897131898131899131900131901131902131903131904131905131906131907131908131909131910131911131912131913131914131915131916131917131918131919131920131921131922131923131924131925131926131927131928131929131930131931131932131933131934131935131936131937131938131939131940131941131942131943131944131945131946131947131948131949131950131951131952131953131954131955131956131957131958131959131960131961131962131963131964131965131966131967131968131969131970131971131972131973131974131975131976131977131978131979131980131981131982131983131984131985131986131987131988131989131990131991131992131993131994131995131996131997131998131999132000132001132002132003132004132005132006132007132008132009132010132011132012132013132014132015132016132017132018132019132020132021132022132023132024132025132026132027132028132029132030132031132032132033132034132035132036132037132038132039132040132041132042132043132044132045132046132047132048132049132050132051132052132053132054132055132056132057132058132059132060132061132062132063132064132065132066132067132068132069132070132071132072132073132074132075132076132077132078132079132080132081132082132083132084132085132086132087132088132089132090132091132092132093132094132095132096132097132098132099132100132101132102132103132104132105132106132107132108132109132110132111132112132113132114132115132116132117132118132119132120132121132122132123132124132125132126132127132128132129132130132131132132132133132134132135132136132137132138132139132140132141132142132143132144132145132146132147132148132149132150132151132152132153132154132155132156132157132158132159132160132161132162132163132164132165132166132167132168132169132170132171132172132173132174132175132176132177132178132179132180132181132182132183132184132185132186132187132188132189132190132191132192132193132194132195132196132197132198132199132200132201132202132203132204132205132206132207132208132209132210132211132212132213132214132215132216132217132218132219132220132221132222132223132224132225132226132227132228132229132230132231132232132233132234132235132236132237132238132239132240132241132242132243132244132245132246132247132248132249132250132251132252132253132254132255132256132257132258132259132260132261132262132263132264132265132266132267132268132269132270132271132272132273132274132275132276132277132278132279132280132281132282132283132284132285132286132287132288132289132290132291132292132293132294132295132296132297132298132299132300132301132302132303132304132305132306132307132308132309132310132311132312132313132314132315132316132317132318132319132320132321132322132323132324132325132326132327132328132329132330132331132332132333132334132335132336132337132338132339132340132341132342132343132344132345132346132347132348132349132350132351132352132353132354132355132356132357132358132359132360132361132362132363132364132365132366132367132368132369132370132371132372132373132374132375132376132377132378132379132380132381132382132383132384132385132386132387132388132389132390132391132392132393132394132395132396132397132398132399132400132401132402132403132404132405132406132407132408132409132410132411132412132413132414132415132416132417132418132419132420132421132422132423132424132425132426132427132428132429132430132431132432132433132434132435132436132437132438132439132440132441132442132443132444132445132446132447132448132449132450132451132452132453132454132455132456132457132458132459132460132461132462132463132464132465132466132467132468132469132470132471132472132473132474132475132476132477132478132479132480132481132482132483132484132485132486132487132488132489132490132491132492132493132494132495132496132497132498132499132500132501132502132503132504132505132506132507132508132509132510132511132512132513132514132515132516132517132518132519132520132521132522132523132524132525132526132527132528132529132530132531132532132533132534132535132536132537132538132539132540132541132542132543132544132545132546132547132548132549132550132551132552132553132554132555132556132557132558132559132560132561132562132563132564132565132566132567132568132569132570132571132572132573132574132575132576132577132578132579132580132581132582132583132584132585132586132587132588132589132590132591132592132593132594132595132596132597132598132599132600132601132602132603132604132605132606132607132608132609132610132611132612132613132614132615132616132617132618132619132620132621132622132623132624132625132626132627132628132629132630132631132632132633132634132635132636132637132638132639132640132641132642132643132644132645132646132647132648132649132650132651132652132653132654132655132656132657132658132659132660132661132662132663132664132665132666132667132668132669132670132671132672132673132674132675132676132677132678132679132680132681132682132683132684132685132686132687132688132689132690132691132692132693132694132695132696132697132698132699132700132701132702132703132704132705132706132707132708132709132710132711132712132713132714132715132716132717132718132719132720132721132722132723132724132725132726132727132728132729132730132731132732132733132734132735132736132737132738132739132740132741132742132743132744132745132746132747132748132749132750132751132752132753132754132755132756132757132758132759132760132761132762132763132764132765132766132767132768132769132770132771132772132773132774132775132776132777132778132779132780132781132782132783132784132785132786132787132788132789132790132791132792132793132794132795132796132797132798132799132800132801132802132803132804132805132806132807132808132809132810132811132812132813132814132815132816132817132818132819132820132821132822132823132824132825132826132827132828132829132830132831132832132833132834132835132836132837132838132839132840132841132842132843132844132845132846132847132848132849132850132851132852132853132854132855132856132857132858132859132860132861132862132863132864132865132866132867132868132869132870132871132872132873132874132875132876132877132878132879132880132881132882132883132884132885132886132887132888132889132890132891132892132893132894132895132896132897132898132899132900132901132902132903132904132905132906132907132908132909132910132911132912132913132914132915132916132917132918132919132920132921132922132923132924132925132926132927132928132929132930132931132932132933132934132935132936132937132938132939132940132941132942132943132944132945132946132947132948132949132950132951132952132953132954132955132956132957132958132959132960132961132962132963132964132965132966132967132968132969132970132971132972132973132974132975132976132977132978132979132980132981132982132983132984132985132986132987132988132989132990132991132992132993132994132995132996132997132998132999133000133001133002133003133004133005133006133007133008133009133010133011133012133013133014133015133016133017133018133019133020133021133022133023133024133025133026133027133028133029133030133031133032133033133034133035133036133037133038133039133040133041133042133043133044133045133046133047133048133049133050133051133052133053133054133055133056133057133058133059133060133061133062133063133064133065133066133067133068133069133070133071133072133073133074133075133076133077133078133079133080133081133082133083133084133085133086133087133088133089133090133091133092133093133094133095133096133097133098133099133100133101133102133103133104133105133106133107133108133109133110133111133112133113133114133115133116133117133118133119133120133121133122133123133124133125133126133127133128133129133130133131133132133133133134133135133136133137133138133139133140133141133142133143133144133145133146133147133148133149133150133151133152133153133154133155133156133157133158133159133160133161133162133163133164133165133166133167133168133169133170133171133172133173133174133175133176133177133178133179133180133181133182133183133184133185133186133187133188133189133190133191133192133193133194133195133196133197133198133199133200133201133202133203133204133205133206133207133208133209133210133211133212133213133214133215133216133217133218133219133220133221133222133223133224133225133226133227133228133229133230133231133232133233133234133235133236133237133238133239133240133241133242133243133244133245133246133247133248133249133250133251133252133253133254133255133256133257133258133259133260133261133262133263133264133265133266133267133268133269133270133271133272133273133274133275133276133277133278133279133280133281133282133283133284133285133286133287133288133289133290133291133292133293133294133295133296133297133298133299133300133301133302133303133304133305133306133307133308133309133310133311133312133313133314133315133316133317133318133319133320133321133322133323133324133325133326133327133328133329133330133331133332133333133334133335133336133337133338133339133340133341133342133343133344133345133346133347133348133349133350133351133352133353133354133355133356133357133358133359133360133361133362133363133364133365133366133367133368133369133370133371133372133373133374133375133376133377133378133379133380133381133382133383133384133385133386133387133388133389133390133391133392133393133394133395133396133397133398133399133400133401133402133403133404133405133406133407133408133409133410133411133412133413133414133415133416133417133418133419133420133421133422133423133424133425133426133427133428133429133430133431133432133433133434133435133436133437133438133439133440133441133442133443133444133445133446133447133448133449133450133451133452133453133454133455133456133457133458133459133460133461133462133463133464133465133466133467133468133469133470133471133472133473133474133475133476133477133478133479133480133481133482133483133484133485133486133487133488133489133490133491133492133493133494133495133496133497133498133499133500133501133502133503133504133505133506133507133508133509133510133511133512133513133514133515133516133517133518133519133520133521133522133523133524133525133526133527133528133529133530133531133532133533133534133535133536133537133538133539133540133541133542133543133544133545133546133547133548133549133550133551133552133553133554133555133556133557133558133559133560133561133562133563133564133565133566133567133568133569133570133571133572133573133574133575133576133577133578133579133580133581133582133583133584133585133586133587133588133589133590133591133592133593133594133595133596133597133598133599133600133601133602133603133604133605133606133607133608133609133610133611133612133613133614133615133616133617133618133619133620133621133622133623133624133625133626133627133628133629133630133631133632133633133634133635133636133637133638133639133640133641133642133643133644133645133646133647133648133649133650133651133652133653133654133655133656133657133658133659133660133661133662133663133664133665133666133667133668133669133670133671133672133673133674133675133676133677133678133679133680133681133682133683133684133685133686133687133688133689133690133691133692133693133694133695133696133697133698133699133700133701133702133703133704133705133706133707133708133709133710133711133712133713133714133715133716133717133718133719133720133721133722133723133724133725133726133727133728133729133730133731133732133733133734133735133736133737133738133739133740133741133742133743133744133745133746133747133748133749133750133751133752133753133754133755133756133757133758133759133760133761133762133763133764133765133766133767133768133769133770133771133772133773133774133775133776133777133778133779133780133781133782133783133784133785133786133787133788133789133790133791133792133793133794133795133796133797133798133799133800133801133802133803133804133805133806133807133808133809133810133811133812133813133814133815133816133817133818133819133820133821133822133823133824133825133826133827133828133829133830133831133832133833133834133835133836133837133838133839133840133841133842133843133844133845133846133847133848133849133850133851133852133853133854133855133856133857133858133859133860133861133862133863133864133865133866133867133868133869133870133871133872133873133874133875133876133877133878133879133880133881133882133883133884133885133886133887133888133889133890133891133892133893133894133895133896133897133898133899133900133901133902133903133904133905133906133907133908133909133910133911133912133913133914133915133916133917133918133919133920133921133922133923133924133925133926133927133928133929133930133931133932133933133934133935133936133937133938133939133940133941133942133943133944133945133946133947133948133949133950133951133952133953133954133955133956133957133958133959133960133961133962133963133964133965133966133967133968133969133970133971133972133973133974133975133976133977133978133979133980133981133982133983133984133985133986133987133988133989133990133991133992133993133994133995133996133997133998133999134000134001134002134003134004134005134006134007134008134009134010134011134012134013134014134015134016134017134018134019134020134021134022134023134024134025134026134027134028134029134030134031134032134033134034134035134036134037134038134039134040134041134042134043134044134045134046134047134048134049134050134051134052134053134054134055134056134057134058134059134060134061134062134063134064134065134066134067134068134069134070134071134072134073134074134075134076134077134078134079134080134081134082134083134084134085134086134087134088134089134090134091134092134093134094134095134096134097134098134099134100134101134102134103134104134105134106134107134108134109134110134111134112134113134114134115134116134117134118134119134120134121134122134123134124134125134126134127134128134129134130134131134132134133134134134135134136134137134138134139134140134141134142134143134144134145134146134147134148134149134150134151134152134153134154134155134156134157134158134159134160134161134162134163134164134165134166134167134168134169134170134171134172134173134174134175134176134177134178134179134180134181134182134183134184134185134186134187134188134189134190134191134192134193134194134195134196134197134198134199134200134201134202134203134204134205134206134207134208134209134210134211134212134213134214134215134216134217134218134219134220134221134222134223134224134225134226134227134228134229134230134231134232134233134234134235134236134237134238134239134240134241134242134243134244134245134246134247134248134249134250134251134252134253134254134255134256134257134258134259134260134261134262134263134264134265134266134267134268134269134270134271134272134273134274134275134276134277134278134279134280134281134282134283134284134285134286134287134288134289134290134291134292134293134294134295134296134297134298134299134300134301134302134303134304134305134306134307134308134309134310134311134312134313134314134315134316134317134318134319134320134321134322134323134324134325134326134327134328134329134330134331134332134333134334134335134336134337134338134339134340134341134342134343134344134345134346134347134348134349134350134351134352134353134354134355134356134357134358134359134360134361134362134363134364134365134366134367134368134369134370134371134372134373134374134375134376134377134378134379134380134381134382134383134384134385134386134387134388134389134390134391134392134393134394134395134396134397134398134399134400134401134402134403134404134405134406134407134408134409134410134411134412134413134414134415134416134417134418134419134420134421134422134423134424134425134426134427134428134429134430134431134432134433134434134435134436134437134438134439134440134441134442134443134444134445134446134447134448134449134450134451134452134453134454134455134456134457134458134459134460134461134462134463134464134465134466134467134468134469134470134471134472134473134474134475134476134477134478134479134480134481134482134483134484134485134486134487134488134489134490134491134492134493134494134495134496134497134498134499134500134501134502134503134504134505134506134507134508134509134510134511134512134513134514134515134516134517134518134519134520134521134522134523134524134525134526134527134528134529134530134531134532134533134534134535134536134537134538134539134540134541134542134543134544134545134546134547134548134549134550134551134552134553134554134555134556134557134558134559134560134561134562134563134564134565134566134567134568134569134570134571134572134573134574134575134576134577134578134579134580134581134582134583134584134585134586134587134588134589134590134591134592134593134594134595134596134597134598134599134600134601134602134603134604134605134606134607134608134609134610134611134612134613134614134615134616134617134618134619134620134621134622134623134624134625134626134627134628134629134630134631134632134633134634134635134636134637134638134639134640134641134642134643134644134645134646134647134648134649134650134651134652134653134654134655134656134657134658134659134660134661134662134663134664134665134666134667134668134669134670134671134672134673134674134675134676134677134678134679134680134681134682134683134684134685134686134687134688134689134690134691134692134693134694134695134696134697134698134699134700134701134702134703134704134705134706134707134708134709134710134711134712134713134714134715134716134717134718134719134720134721134722134723134724134725134726134727134728134729134730134731134732134733134734134735134736134737134738134739134740134741134742134743134744134745134746134747134748134749134750134751134752134753134754134755134756134757134758134759134760134761134762134763134764134765134766134767134768134769134770134771134772134773134774134775134776134777134778134779134780134781134782134783134784134785134786134787134788134789134790134791134792134793134794134795134796134797134798134799134800134801134802134803134804134805134806134807134808134809134810134811134812134813134814134815134816134817134818134819134820134821134822134823134824134825134826134827134828134829134830134831134832134833134834134835134836134837134838134839134840134841134842134843134844134845134846134847134848134849134850134851134852134853134854134855134856134857134858134859134860134861134862134863134864134865134866134867134868134869134870134871134872134873134874134875134876134877134878134879134880134881134882134883134884134885134886134887134888134889134890134891134892134893134894134895134896134897134898134899134900134901134902134903134904134905134906134907134908134909134910134911134912134913134914134915134916134917134918134919134920134921134922134923134924134925134926134927134928134929134930134931134932134933134934134935134936134937134938134939134940134941134942134943134944134945134946134947134948134949134950134951134952134953134954134955134956134957134958134959134960134961134962134963134964134965134966134967134968134969134970134971134972134973134974134975134976134977134978134979134980134981134982134983134984134985134986134987134988134989134990134991134992134993134994134995134996134997134998134999135000135001135002135003135004135005135006135007135008135009135010135011135012135013135014135015135016135017135018135019135020135021135022135023135024135025135026135027135028135029135030135031135032135033135034135035135036135037135038135039135040135041135042135043135044135045135046135047135048135049135050135051135052135053135054135055135056135057135058135059135060135061135062135063135064135065135066135067135068135069135070135071135072135073135074135075135076135077135078135079135080135081135082135083135084135085135086135087135088135089135090135091135092135093135094135095135096135097135098135099135100135101135102135103135104135105135106135107135108135109135110135111135112135113135114135115135116135117135118135119135120135121135122135123135124135125135126135127135128135129135130135131135132135133135134135135135136135137135138135139135140135141135142135143135144135145135146135147135148135149135150135151135152135153135154135155135156135157135158135159135160135161135162135163135164135165135166135167135168135169135170135171135172135173135174135175135176135177135178135179135180135181135182135183135184135185135186135187135188135189135190135191135192135193135194135195135196135197135198135199135200135201135202135203135204135205135206135207135208135209135210135211135212135213135214135215135216135217135218135219135220135221135222135223135224135225135226135227135228135229135230135231135232135233135234135235135236135237135238135239135240135241135242135243135244135245135246135247135248135249135250135251135252135253135254135255135256135257135258135259135260135261135262135263135264135265135266135267135268135269135270135271135272135273135274135275135276135277135278135279135280135281135282135283135284135285135286135287135288135289135290135291135292135293135294135295135296135297135298135299135300135301135302135303135304135305135306135307135308135309135310135311135312135313135314135315135316135317135318135319135320135321135322135323135324135325135326135327135328135329135330135331135332135333135334135335135336135337135338135339135340135341135342135343135344135345135346135347135348135349135350135351135352135353135354135355135356135357135358135359135360135361135362135363135364135365135366135367135368135369135370135371135372135373135374135375135376135377135378135379135380135381135382135383135384135385135386135387135388135389135390135391135392135393135394135395135396135397135398135399135400135401135402135403135404135405135406135407135408135409135410135411135412135413135414135415135416135417135418135419135420135421135422135423135424135425135426135427135428135429135430135431135432135433135434135435135436135437135438135439135440135441135442135443135444135445135446135447135448135449135450135451135452135453135454135455135456135457135458135459135460135461135462135463135464135465135466135467135468135469135470135471135472135473135474135475135476135477135478135479135480135481135482135483135484135485135486135487135488135489135490135491135492135493135494135495135496135497135498135499135500135501135502135503135504135505135506135507135508135509135510135511135512135513135514135515135516135517135518135519135520135521135522135523135524135525135526135527135528135529135530135531135532135533135534135535135536135537135538135539135540135541135542135543135544135545135546135547135548135549135550135551135552135553135554135555135556135557135558135559135560135561135562135563135564135565135566135567135568135569135570135571135572135573135574135575135576135577135578135579135580135581135582135583135584135585135586135587135588135589135590135591135592135593135594135595135596135597135598135599135600135601135602135603135604135605135606135607135608135609135610135611135612135613135614135615135616135617135618135619135620135621135622135623135624135625135626135627135628135629135630135631135632135633135634135635135636135637135638135639135640135641135642135643135644135645135646135647135648135649135650135651135652135653135654135655135656135657135658135659135660135661135662135663135664135665135666135667135668135669135670135671135672135673135674135675135676135677135678135679135680135681135682135683135684135685135686135687135688135689135690135691135692135693135694135695135696135697135698135699135700135701135702135703135704135705135706135707135708135709135710135711135712135713135714135715135716135717135718135719135720135721135722135723135724135725135726135727135728135729135730135731135732135733135734135735135736135737135738135739135740135741135742135743135744135745135746135747135748135749135750135751135752135753135754135755135756135757135758135759135760135761135762135763135764135765135766135767135768135769135770135771135772135773135774135775135776135777135778135779135780135781135782135783135784135785135786135787135788135789135790135791135792135793135794135795135796135797135798135799135800135801135802135803135804135805135806135807135808135809135810135811135812135813135814135815135816135817135818135819135820135821135822135823135824135825135826135827135828135829135830135831135832135833135834135835135836135837135838135839135840135841135842135843135844135845135846135847135848135849135850135851135852135853135854135855135856135857135858135859135860135861135862135863135864135865135866135867135868135869135870135871135872135873135874135875135876135877135878135879135880135881135882135883135884135885135886135887135888135889135890135891135892135893135894135895135896135897135898135899135900135901135902135903135904135905135906135907135908135909135910135911135912135913135914135915135916135917135918135919135920135921135922135923135924135925135926135927135928135929135930135931135932135933135934135935135936135937135938135939135940135941135942135943135944135945135946135947135948135949135950135951135952135953135954135955135956135957135958135959135960135961135962135963135964135965135966135967135968135969135970135971135972135973135974135975135976135977135978135979135980135981135982135983135984135985135986135987135988135989135990135991135992135993135994135995135996135997135998135999136000136001136002136003136004136005136006136007136008136009136010136011136012136013136014136015136016136017136018136019136020136021136022136023136024136025136026136027136028136029136030136031136032136033136034136035136036136037136038136039136040136041136042136043136044136045136046136047136048136049136050136051136052136053136054136055136056136057136058136059136060136061136062136063136064136065136066136067136068136069136070136071136072136073136074136075136076136077136078136079136080136081136082136083136084136085136086136087136088136089136090136091136092136093136094136095136096136097136098136099136100136101136102136103136104136105136106136107136108136109136110136111136112136113136114136115136116136117136118136119136120136121136122136123136124136125136126136127136128136129136130136131136132136133136134136135136136136137136138136139136140136141136142136143136144136145136146136147136148136149136150136151136152136153136154136155136156136157136158136159136160136161136162136163136164136165136166136167136168136169136170136171136172136173136174136175136176136177136178136179136180136181136182136183136184136185136186136187136188136189136190136191136192136193136194136195136196136197136198136199136200136201136202136203136204136205136206136207136208136209136210136211136212136213136214136215136216136217136218136219136220136221136222136223136224136225136226136227136228136229136230136231136232136233136234136235136236136237136238136239136240136241136242136243136244136245136246136247136248136249136250136251136252136253136254136255136256136257136258136259136260136261136262136263136264136265136266136267136268136269136270136271136272136273136274136275136276136277136278136279136280136281136282136283136284136285136286136287136288136289136290136291136292136293136294136295136296136297136298136299136300136301136302136303136304136305136306136307136308136309136310136311136312136313136314136315136316136317136318136319136320136321136322136323136324136325136326136327136328136329136330136331136332136333136334136335136336136337136338136339136340136341136342136343136344136345136346136347136348136349136350136351136352136353136354136355136356136357136358136359136360136361136362136363136364136365136366136367136368136369136370136371136372136373136374136375136376136377136378136379136380136381136382136383136384136385136386136387136388136389136390136391136392136393136394136395136396136397136398136399136400136401136402136403136404136405136406136407136408136409136410136411136412136413136414136415136416136417136418136419136420136421136422136423136424136425136426136427136428136429136430136431136432136433136434136435136436136437136438136439136440136441136442136443136444136445136446136447136448136449136450136451136452136453136454136455136456136457136458136459136460136461136462136463136464136465136466136467136468136469136470136471136472136473136474136475136476136477136478136479136480136481136482136483136484136485136486136487136488136489136490136491136492136493136494136495136496136497136498136499136500136501136502136503136504136505136506136507136508136509136510136511136512136513136514136515136516136517136518136519136520136521136522136523136524136525136526136527136528136529136530136531136532136533136534136535136536136537136538136539136540136541136542136543136544136545136546136547136548136549136550136551136552136553136554136555136556136557136558136559136560136561136562136563136564136565136566136567136568136569136570136571136572136573136574136575136576136577136578136579136580136581136582136583136584136585136586136587136588136589136590136591136592136593136594136595136596136597136598136599136600136601136602136603136604136605136606136607136608136609136610136611136612136613136614136615136616136617136618136619136620136621136622136623136624136625136626136627136628136629136630136631136632136633136634136635136636136637136638136639136640136641136642136643136644136645136646136647136648136649136650136651136652136653136654136655136656136657136658136659136660136661136662136663136664136665136666136667136668136669136670136671136672136673136674136675136676136677136678136679136680136681136682136683136684136685136686136687136688136689136690136691136692136693136694136695136696136697136698136699136700136701136702136703136704136705136706136707136708136709136710136711136712136713136714136715136716136717136718136719136720136721136722136723136724136725136726136727136728136729136730136731136732136733136734136735136736136737136738136739136740136741136742136743136744136745136746136747136748136749136750136751136752136753136754136755136756136757136758136759136760136761136762136763136764136765136766136767136768136769136770136771136772136773136774136775136776136777136778136779136780136781136782136783136784136785136786136787136788136789136790136791136792136793136794136795136796136797136798136799136800136801136802136803136804136805136806136807136808136809136810136811136812136813136814136815136816136817136818136819136820136821136822136823136824136825136826136827136828136829136830136831136832136833136834136835136836136837136838136839136840136841136842136843136844136845136846136847136848136849136850136851136852136853136854136855136856136857136858136859136860136861136862136863136864136865136866136867136868136869136870136871136872136873136874136875136876136877136878136879136880136881136882136883136884136885136886136887136888136889136890136891136892136893136894136895136896136897136898136899136900136901136902136903136904136905136906136907136908136909136910136911136912136913136914136915136916136917136918136919136920136921136922136923136924136925136926136927136928136929136930136931136932136933136934136935136936136937136938136939136940136941136942136943136944136945136946136947136948136949136950136951136952136953136954136955136956136957136958136959136960136961136962136963136964136965136966136967136968136969136970136971136972136973136974136975136976136977136978136979136980136981136982136983136984136985136986136987136988136989136990136991136992136993136994136995136996136997136998136999137000137001137002137003137004137005137006137007137008137009137010137011137012137013137014137015137016137017137018137019137020137021137022137023137024137025137026137027137028137029137030137031137032137033137034137035137036137037137038137039137040137041137042137043137044137045137046137047137048137049137050137051137052137053137054137055137056137057137058137059137060137061137062137063137064137065137066137067137068137069137070137071137072137073137074137075137076137077137078137079137080137081137082137083137084137085137086137087137088137089137090137091137092137093137094137095137096137097137098137099137100137101137102137103137104137105137106137107137108137109137110137111137112137113137114137115137116137117137118137119137120137121137122137123137124137125137126137127137128137129137130137131137132137133137134137135137136137137137138137139137140137141137142137143137144137145137146137147137148137149137150137151137152137153137154137155137156137157137158137159137160137161137162137163137164137165137166137167137168137169137170137171137172137173137174137175137176137177137178137179137180137181137182137183137184137185137186137187137188137189137190137191137192137193137194137195137196137197137198137199137200137201137202137203137204137205137206137207137208137209137210137211137212137213137214137215137216137217137218137219137220137221137222137223137224137225137226137227137228137229137230137231137232137233137234137235137236137237137238137239137240137241137242137243137244137245137246137247137248137249137250137251137252137253137254137255137256137257137258137259137260137261137262137263137264137265137266137267137268137269137270137271137272137273137274137275137276137277137278137279137280137281137282137283137284137285137286137287137288137289137290137291137292137293137294137295137296137297137298137299137300137301137302137303137304137305137306137307137308137309137310137311137312137313137314137315137316137317137318137319137320137321137322137323137324137325137326137327137328137329137330137331137332137333137334137335137336137337137338137339137340137341137342137343137344137345137346137347137348137349137350137351137352137353137354137355137356137357137358137359137360137361137362137363137364137365137366137367137368137369137370137371137372137373137374137375137376137377137378137379137380137381137382137383137384137385137386137387137388137389137390137391137392137393137394137395137396137397137398137399137400137401137402137403137404137405137406137407137408137409137410137411137412137413137414137415137416137417137418137419137420137421137422137423137424137425137426137427137428137429137430137431137432137433137434137435137436137437137438137439137440137441137442137443137444137445137446137447137448137449137450137451137452137453137454137455137456137457137458137459137460137461137462137463137464137465137466137467137468137469137470137471137472137473137474137475137476137477137478137479137480137481137482137483137484137485137486137487137488137489137490137491137492137493137494137495137496137497137498137499137500137501137502137503137504137505137506137507137508137509137510137511137512137513137514137515137516137517137518137519137520137521137522137523137524137525137526137527137528137529137530137531137532137533137534137535137536137537137538137539137540137541137542137543137544137545137546137547137548137549137550137551137552137553137554137555137556137557137558137559137560137561137562137563137564137565137566137567137568137569137570137571137572137573137574137575137576137577137578137579137580137581137582137583137584137585137586137587137588137589137590137591137592137593137594137595137596137597137598137599137600137601137602137603137604137605137606137607137608137609137610137611137612137613137614137615137616137617137618137619137620137621137622137623137624137625137626137627137628137629137630137631137632137633137634137635137636137637137638137639137640137641137642137643137644137645137646137647137648137649137650137651137652137653137654137655137656137657137658137659137660137661137662137663137664137665137666137667137668137669137670137671137672137673137674137675137676137677137678137679137680137681137682137683137684137685137686137687137688137689137690137691137692137693137694137695137696137697137698137699137700137701137702137703137704137705137706137707137708137709137710137711137712137713137714137715137716137717137718137719137720137721137722137723137724137725137726137727137728137729137730137731137732137733137734137735137736137737137738137739137740137741137742137743137744137745137746137747137748137749137750137751137752137753137754137755137756137757137758137759137760137761137762137763137764137765137766137767137768137769137770137771137772137773137774137775137776137777137778137779137780137781137782137783137784137785137786137787137788137789137790137791137792137793137794137795137796137797137798137799137800137801137802137803137804137805137806137807137808137809137810137811137812137813137814137815137816137817137818137819137820137821137822137823137824137825137826137827137828137829137830137831137832137833137834137835137836137837137838137839137840137841137842137843137844137845137846137847137848137849137850137851137852137853137854137855137856137857137858137859137860137861137862137863137864137865137866137867137868137869137870137871137872137873137874137875137876137877137878137879137880137881137882137883137884137885137886137887137888137889137890137891137892137893137894137895137896137897137898137899137900137901137902137903137904137905137906137907137908137909137910137911137912137913137914137915137916137917137918137919137920137921137922137923137924137925137926137927137928137929137930137931137932137933137934137935137936137937137938137939137940137941137942137943137944137945137946137947137948137949137950137951137952137953137954137955137956137957137958137959137960137961137962137963137964137965137966137967137968137969137970137971137972137973137974137975137976137977137978137979137980137981137982137983137984137985137986137987137988137989137990137991137992137993137994137995137996137997137998137999138000138001138002138003138004138005138006138007138008138009138010138011138012138013138014138015138016138017138018138019138020138021138022138023138024138025138026138027138028138029138030138031138032138033138034138035138036138037138038138039138040138041138042138043138044138045138046138047138048138049138050138051138052138053138054138055138056138057138058138059138060138061138062138063138064138065138066138067138068138069138070138071138072138073138074138075138076138077138078138079138080138081138082138083138084138085138086138087138088138089138090138091138092138093138094138095138096138097138098138099138100138101138102138103138104138105138106138107138108138109138110138111138112138113138114138115138116138117138118138119138120138121138122138123138124138125138126138127138128138129138130138131138132138133138134138135138136138137138138138139138140138141138142138143138144138145138146138147138148138149138150138151138152138153138154138155138156138157138158138159138160138161138162138163138164138165138166138167138168138169138170138171138172138173138174138175138176138177138178138179138180138181138182138183138184138185138186138187138188138189138190138191138192138193138194138195138196138197138198138199138200138201138202138203138204138205138206138207138208138209138210138211138212138213138214138215138216138217138218138219138220138221138222138223138224138225138226138227138228138229138230138231138232138233138234138235138236138237138238138239138240138241138242138243138244138245138246138247138248138249138250138251138252138253138254138255138256138257138258138259138260138261138262138263138264138265138266138267138268138269138270138271138272138273138274138275138276138277138278138279138280138281138282138283138284138285138286138287138288138289138290138291138292138293138294138295138296138297138298138299138300138301138302138303138304138305138306138307138308138309138310138311138312138313138314138315138316138317138318138319138320138321138322138323138324138325138326138327138328138329138330138331138332138333138334138335138336138337138338138339138340138341138342138343138344138345138346138347138348138349138350138351138352138353138354138355138356138357138358138359138360138361138362138363138364138365138366138367138368138369138370138371138372138373138374138375138376138377138378138379138380138381138382138383138384138385138386138387138388138389138390138391138392138393138394138395138396138397138398138399138400138401138402138403138404138405138406138407138408138409138410138411138412138413138414138415138416138417138418138419138420138421138422138423138424138425138426138427138428138429138430138431138432138433138434138435138436138437138438138439138440138441138442138443138444138445138446138447138448138449138450138451138452138453138454138455138456138457138458138459138460138461138462138463138464138465138466138467138468138469138470138471138472138473138474138475138476138477138478138479138480138481138482138483138484138485138486138487138488138489138490138491138492138493138494138495138496138497138498138499138500138501138502138503138504138505138506138507138508138509138510138511138512138513138514138515138516138517138518138519138520138521138522138523138524138525138526138527138528138529138530138531138532138533138534138535138536138537138538138539138540138541138542138543138544138545138546138547138548138549138550138551138552138553138554138555138556138557138558138559138560138561138562138563138564138565138566138567138568138569138570138571138572138573138574138575138576138577138578138579138580138581138582138583138584138585138586138587138588138589138590138591138592138593138594138595138596138597138598138599138600138601138602138603138604138605138606138607138608138609138610138611138612138613138614138615138616138617138618138619138620138621138622138623138624138625138626138627138628138629138630138631138632138633138634138635138636138637138638138639138640138641138642138643138644138645138646138647138648138649138650138651138652138653138654138655138656138657138658138659138660138661138662138663138664138665138666138667138668138669138670138671138672138673138674138675138676138677138678138679138680138681138682138683138684138685138686138687138688138689138690138691138692138693138694138695138696138697138698138699138700138701138702138703138704138705138706138707138708138709138710138711138712138713138714138715138716138717138718138719138720138721138722138723138724138725138726138727138728138729138730138731138732138733138734138735138736138737138738138739138740138741138742138743138744138745138746138747138748138749138750138751138752138753138754138755138756138757138758138759138760138761138762138763138764138765138766138767138768138769138770138771138772138773138774138775138776138777138778138779138780138781138782138783138784138785138786138787138788138789138790138791138792138793138794138795138796138797138798138799138800138801138802138803138804138805138806138807138808138809138810138811138812138813138814138815138816138817138818138819138820138821138822138823138824138825138826138827138828138829138830138831138832138833138834138835138836138837138838138839138840138841138842138843138844138845138846138847138848138849138850138851138852138853138854138855138856138857138858138859138860138861138862138863138864138865138866138867138868138869138870138871138872138873138874138875138876138877138878138879138880138881138882138883138884138885138886138887138888138889138890138891138892138893138894138895138896138897138898138899138900138901138902138903138904138905138906138907138908138909138910138911138912138913138914138915138916138917138918138919138920138921138922138923138924138925138926138927138928138929138930138931138932138933138934138935138936138937138938138939138940138941138942138943138944138945138946138947138948138949138950138951138952138953138954138955138956138957138958138959138960138961138962138963138964138965138966138967138968138969138970138971138972138973138974138975138976138977138978138979138980138981138982138983138984138985138986138987138988138989138990138991138992138993138994138995138996138997138998138999139000139001139002139003139004139005139006139007139008139009139010139011139012139013139014139015139016139017139018139019139020139021139022139023139024139025139026139027139028139029139030139031139032139033139034139035139036139037139038139039139040139041139042139043139044139045139046139047139048139049139050139051139052139053139054139055139056139057139058139059139060139061139062139063139064139065139066139067139068139069139070139071139072139073139074139075139076139077139078139079139080139081139082139083139084139085139086139087139088139089139090139091139092139093139094139095139096139097139098139099139100139101139102139103139104139105139106139107139108139109139110139111139112139113139114139115139116139117139118139119139120139121139122139123139124139125139126139127139128139129139130139131139132139133139134139135139136139137139138139139139140139141139142139143139144139145139146139147139148139149139150139151139152139153139154139155139156139157139158139159139160139161139162139163139164139165139166139167139168139169139170139171139172139173139174139175139176139177139178139179139180139181139182139183139184139185139186139187139188139189139190139191139192139193139194139195139196139197139198139199139200139201139202139203139204139205139206139207139208139209139210139211139212139213139214139215139216139217139218139219139220139221139222139223139224139225139226139227139228139229139230139231139232139233139234139235139236139237139238139239139240139241139242139243139244139245139246139247139248139249139250139251139252139253139254139255139256139257139258139259139260139261139262139263139264139265139266139267139268139269139270139271139272139273139274139275139276139277139278139279139280139281139282139283139284139285139286139287139288139289139290139291139292139293139294139295139296139297139298139299139300139301139302139303139304139305139306139307139308139309139310139311139312139313139314139315139316139317139318139319139320139321139322139323139324139325139326139327139328139329139330139331139332139333139334139335139336139337139338139339139340139341139342139343139344139345139346139347139348139349139350139351139352139353139354139355139356139357139358139359139360139361139362139363139364139365139366139367139368139369139370139371139372139373139374139375139376139377139378139379139380139381139382139383139384139385139386139387139388139389139390139391139392139393139394139395139396139397139398139399139400139401139402139403139404139405139406139407139408139409139410139411139412139413139414139415139416139417139418139419139420139421139422139423139424139425139426139427139428139429139430139431139432139433139434139435139436139437139438139439139440139441139442139443139444139445139446139447139448139449139450139451139452139453139454139455139456139457139458139459139460139461139462139463139464139465139466139467139468139469139470139471139472139473139474139475139476139477139478139479139480139481139482139483139484139485139486139487139488139489139490139491139492139493139494139495139496139497139498139499139500139501139502139503139504139505139506139507139508139509139510139511139512139513139514139515139516139517139518139519139520139521139522139523139524139525139526139527139528139529139530139531139532139533139534139535139536139537139538139539139540139541139542139543139544139545139546139547139548139549139550139551139552139553139554139555139556139557139558139559139560139561139562139563139564139565139566139567139568139569139570139571139572139573139574139575139576139577139578139579139580139581139582139583139584139585139586139587139588139589139590139591139592139593139594139595139596139597139598139599139600139601139602139603139604139605139606139607139608139609139610139611139612139613139614139615139616139617139618139619139620139621139622139623139624139625139626139627139628139629139630139631139632139633139634139635139636139637139638139639139640139641139642139643139644139645139646139647139648139649139650139651139652139653139654139655139656139657139658139659139660139661139662139663139664139665139666139667139668139669139670139671139672139673139674139675139676139677139678139679139680139681139682139683139684139685139686139687139688139689139690139691139692139693139694139695139696139697139698139699139700139701139702139703139704139705139706139707139708139709139710139711139712139713139714139715139716139717139718139719139720139721139722139723139724139725139726139727139728139729139730139731139732139733139734139735139736139737139738139739139740139741139742139743139744139745139746139747139748139749139750139751139752139753139754139755139756139757139758139759139760139761139762139763139764139765139766139767139768139769139770139771139772139773139774139775139776139777139778139779139780139781139782139783139784139785139786139787139788139789139790139791139792139793139794139795139796139797139798139799139800139801139802139803139804139805139806139807139808139809139810139811139812139813139814139815139816139817139818139819139820139821139822139823139824139825139826139827139828139829139830139831139832139833139834139835139836139837139838139839139840139841139842139843139844139845139846139847139848139849139850139851139852139853139854139855139856139857139858139859139860139861139862139863139864139865139866139867139868139869139870139871139872139873139874139875139876139877139878139879139880139881139882139883139884139885139886139887139888139889139890139891139892139893139894139895139896139897139898139899139900139901139902139903139904139905139906139907139908139909139910139911139912139913139914139915139916139917139918139919139920139921139922139923139924139925139926139927139928139929139930139931139932139933139934139935139936139937139938139939139940139941139942139943139944139945139946139947139948139949139950139951139952139953139954139955139956139957139958139959139960139961139962139963139964139965139966139967139968139969139970139971139972139973139974139975139976139977139978139979139980139981139982139983139984139985139986139987139988139989139990139991139992139993139994139995139996139997139998139999140000140001140002140003140004140005140006140007140008140009140010140011140012140013140014140015140016140017140018140019140020140021140022140023140024140025140026140027140028140029140030140031140032140033140034140035140036140037140038140039140040140041140042140043140044140045140046140047140048140049140050140051140052140053140054140055140056140057140058140059140060140061140062140063140064140065140066140067140068140069140070140071140072140073140074140075140076140077140078140079140080140081140082140083140084140085140086140087140088140089140090140091140092140093140094140095140096140097140098140099140100140101140102140103140104140105140106140107140108140109140110140111140112140113140114140115140116140117140118140119140120140121140122140123140124140125140126140127140128140129140130140131140132140133140134140135140136140137140138140139140140140141140142140143140144140145140146140147140148140149140150140151140152140153140154140155140156140157140158140159140160140161140162140163140164140165140166140167140168140169140170140171140172140173140174140175140176140177140178140179140180140181140182140183140184140185140186140187140188140189140190140191140192140193140194140195140196140197140198140199140200140201140202140203140204140205140206140207140208140209140210140211140212140213140214140215140216140217140218140219140220140221140222140223140224140225140226140227140228140229140230140231140232140233140234140235140236140237140238140239140240140241140242140243140244140245140246140247140248140249140250140251140252140253140254140255140256140257140258140259140260140261140262140263140264140265140266140267140268140269140270140271140272140273140274140275140276140277140278140279140280140281140282140283140284140285140286140287140288140289140290140291140292140293140294140295140296140297140298140299140300140301140302140303140304140305140306140307140308140309140310140311140312140313140314140315140316140317140318140319140320140321140322140323140324140325140326140327140328140329140330140331140332140333140334140335140336140337140338140339140340140341140342140343140344140345140346140347140348140349140350140351140352140353140354140355140356140357140358140359140360140361140362140363140364140365140366140367140368140369140370140371140372140373140374140375140376140377140378140379140380140381140382140383140384140385140386140387140388140389140390140391140392140393140394140395140396140397140398140399140400140401140402140403140404140405140406140407140408140409140410140411140412140413140414140415140416140417140418140419140420140421140422140423140424140425140426140427140428140429140430140431140432140433140434140435140436140437140438140439140440140441140442140443140444140445140446140447140448140449140450140451140452140453140454140455140456140457140458140459140460140461140462140463140464140465140466140467140468140469140470140471140472140473140474140475140476140477140478140479140480140481140482140483140484140485140486140487140488140489140490140491140492140493140494140495140496140497140498140499140500140501140502140503140504140505140506140507140508140509140510140511140512140513140514140515140516140517140518140519140520140521140522140523140524140525140526140527140528140529140530140531140532140533140534140535140536140537140538140539140540140541140542140543140544140545140546140547140548140549140550140551140552140553140554140555140556140557140558140559140560140561140562140563140564140565140566140567140568140569140570140571140572140573140574140575140576140577140578140579140580140581140582140583140584140585140586140587140588140589140590140591140592140593140594140595140596140597140598140599140600140601140602140603140604140605140606140607140608140609140610140611140612140613140614140615140616140617140618140619140620140621140622140623140624140625140626140627140628140629140630140631140632140633140634140635140636140637140638140639140640140641140642140643140644140645140646140647140648140649140650140651140652140653140654140655140656140657140658140659140660140661140662140663140664140665140666140667140668140669140670140671140672140673140674140675140676140677140678140679140680140681140682140683140684140685140686140687140688140689140690140691140692140693140694140695140696140697140698140699140700140701140702140703140704140705140706140707140708140709140710140711140712140713140714140715140716140717140718140719140720140721140722140723140724140725140726140727140728140729140730140731140732140733140734140735140736140737140738140739140740140741140742140743140744140745140746140747140748140749140750140751140752140753140754140755140756140757140758140759140760140761140762140763140764140765140766140767140768140769140770140771140772140773140774140775140776140777140778140779140780140781140782140783140784140785140786140787140788140789140790140791140792140793140794140795140796140797140798140799140800140801140802140803140804140805140806140807140808140809140810140811140812140813140814140815140816140817140818140819140820140821140822140823140824140825140826140827140828140829140830140831140832140833140834140835140836140837140838140839140840140841140842140843140844140845140846140847140848140849140850140851140852140853140854140855140856140857140858140859140860140861140862140863140864140865140866140867140868140869140870140871140872140873140874140875140876140877140878140879140880140881140882140883140884140885140886140887140888140889140890140891140892140893140894140895140896140897140898140899140900140901140902140903140904140905140906140907140908140909140910140911140912140913140914140915140916140917140918140919140920140921140922140923140924140925140926140927140928140929140930140931140932140933140934140935140936140937140938140939140940140941140942140943140944140945140946140947140948140949140950140951140952140953140954140955140956140957140958140959140960140961140962140963140964140965140966140967140968140969140970140971140972140973140974140975140976140977140978140979140980140981140982140983140984140985140986140987140988140989140990140991140992140993140994140995140996140997140998140999141000141001141002141003141004141005141006141007141008141009141010141011141012141013141014141015141016141017141018141019141020141021141022141023141024141025141026141027141028141029141030141031141032141033141034141035141036141037141038141039141040141041141042141043141044141045141046141047141048141049141050141051141052141053141054141055141056141057141058141059141060141061141062141063141064141065141066141067141068141069141070141071141072141073141074141075141076141077141078141079141080141081141082141083141084141085141086141087141088141089141090141091141092141093141094141095141096141097141098141099141100141101141102141103141104141105141106141107141108141109141110141111141112141113141114141115141116141117141118141119141120141121141122141123141124141125141126141127141128141129141130141131141132141133141134141135141136141137141138141139141140141141141142141143141144141145141146141147141148141149141150141151141152141153141154141155141156141157141158141159141160141161141162141163141164141165141166141167141168141169141170141171141172141173141174141175141176141177141178141179141180141181141182141183141184141185141186141187141188141189141190141191141192141193141194141195141196141197141198141199141200141201141202141203141204141205141206141207141208141209141210141211141212141213141214141215141216141217141218141219141220141221141222141223141224141225141226141227141228141229141230141231141232141233141234141235141236141237141238141239141240141241141242141243141244141245141246141247141248141249141250141251141252141253141254141255141256141257141258141259141260141261141262141263141264141265141266141267141268141269141270141271141272141273141274141275141276141277141278141279141280141281141282141283141284141285141286141287141288141289141290141291141292141293141294141295141296141297141298141299141300141301141302141303141304141305141306141307141308141309141310141311141312141313141314141315141316141317141318141319141320141321141322141323141324141325141326141327141328141329141330141331141332141333141334141335141336141337141338141339141340141341141342141343141344141345141346141347141348141349141350141351141352141353141354141355141356141357141358141359141360141361141362141363141364141365141366141367141368141369141370141371141372141373141374141375141376141377141378141379141380141381141382141383141384141385141386141387141388141389141390141391141392141393141394141395141396141397141398141399141400141401141402141403141404141405141406141407141408141409141410141411141412141413141414141415141416141417141418141419141420141421141422141423141424141425141426141427141428141429141430141431141432141433141434141435141436141437141438141439141440141441141442141443141444141445141446141447141448141449141450141451141452141453141454141455141456141457141458141459141460141461141462141463141464141465141466141467141468141469141470141471141472141473141474141475141476141477141478141479141480141481141482141483141484141485141486141487141488141489141490141491141492141493141494141495141496141497141498141499141500141501141502141503141504141505141506141507141508141509141510141511141512141513141514141515141516141517141518141519141520141521141522141523141524141525141526141527141528141529141530141531141532141533141534141535141536141537141538141539141540141541141542141543141544141545141546141547141548141549141550141551141552141553141554141555141556141557141558141559141560141561141562141563141564141565141566141567141568141569141570141571141572141573141574141575141576141577141578141579141580141581141582141583141584141585141586141587141588141589141590141591141592141593141594141595141596141597141598141599141600141601141602141603141604141605141606141607141608141609141610141611141612141613141614141615141616141617141618141619141620141621141622141623141624141625141626141627141628141629141630141631141632141633141634141635141636141637141638141639141640141641141642141643141644141645141646141647141648141649141650141651141652141653141654141655141656141657141658141659141660141661141662141663141664141665141666141667141668141669141670141671141672141673141674141675141676141677141678141679141680141681141682141683141684141685141686141687141688141689141690141691141692141693141694141695141696141697141698141699141700141701141702141703141704141705141706141707141708141709141710141711141712141713141714141715141716141717141718141719141720141721141722141723141724141725141726141727141728141729141730141731141732141733141734141735141736141737141738141739141740141741141742141743141744141745141746141747141748141749141750141751141752141753141754141755141756141757141758141759141760141761141762141763141764141765141766141767141768141769141770141771141772141773141774141775141776141777141778141779141780141781141782141783141784141785141786141787141788141789141790141791141792141793141794141795141796141797141798141799141800141801141802141803141804141805141806141807141808141809141810141811141812141813141814141815141816141817141818141819141820141821141822141823141824141825141826141827141828141829141830141831141832141833141834141835141836141837141838141839141840141841141842141843141844141845141846141847141848141849141850141851141852141853141854141855141856141857141858141859141860141861141862141863141864141865141866141867141868141869141870141871141872141873141874141875141876141877141878141879141880141881141882141883141884141885141886141887141888141889141890141891141892141893141894141895141896141897141898141899141900141901141902141903141904141905141906141907141908141909141910141911141912141913141914141915141916141917141918141919141920141921141922141923141924141925141926141927141928141929141930141931141932141933141934141935141936141937141938141939141940141941141942141943141944141945141946141947141948141949141950141951141952141953141954141955141956141957141958141959141960141961141962141963141964141965141966141967141968141969141970141971141972141973141974141975141976141977141978141979141980141981141982141983141984141985141986141987141988141989141990141991141992141993141994141995141996141997141998141999142000142001142002142003142004142005142006142007142008142009142010142011142012142013142014142015142016142017142018142019142020142021142022142023142024142025142026142027142028142029142030142031142032142033142034142035142036142037142038142039142040142041142042142043142044142045142046142047142048142049142050142051142052142053142054142055142056142057142058142059142060142061142062142063142064142065142066142067142068142069142070142071142072142073142074142075142076142077142078142079142080142081142082142083142084142085142086142087142088142089142090142091142092142093142094142095142096142097142098142099142100142101142102142103142104142105142106142107142108142109142110142111142112142113142114142115142116142117142118142119142120142121142122142123142124142125142126142127142128142129142130142131142132142133142134142135142136142137142138142139142140142141142142142143142144142145142146142147142148142149142150142151142152142153142154142155142156142157142158142159142160142161142162142163142164142165142166142167142168142169142170142171142172142173142174142175142176142177142178142179142180142181142182142183142184142185142186142187142188142189142190142191142192142193142194142195142196142197142198142199142200142201142202142203142204142205142206142207142208142209142210142211142212142213142214142215142216142217142218142219142220142221142222142223142224142225142226142227142228142229142230142231142232142233142234142235142236142237142238142239142240142241142242142243142244142245142246142247142248142249142250142251142252142253142254142255142256142257142258142259142260142261142262142263142264142265142266142267142268142269142270142271142272142273142274142275142276142277142278142279142280142281142282142283142284142285142286142287142288142289142290142291142292142293142294142295142296142297142298142299142300142301142302142303142304142305142306142307142308142309142310142311142312142313142314142315142316142317142318142319142320142321142322142323142324142325142326142327142328142329142330142331142332142333142334142335142336142337142338142339142340142341142342142343142344142345142346142347142348142349142350142351142352142353142354142355142356142357142358142359142360142361142362142363142364142365142366142367142368142369142370142371142372142373142374142375142376142377142378142379142380142381142382142383142384142385142386142387142388142389142390142391142392142393142394142395142396142397142398142399142400142401142402142403142404142405142406142407142408142409142410142411142412142413142414142415142416142417142418142419142420142421142422142423142424142425142426142427142428142429142430142431142432142433142434142435142436142437142438142439142440142441142442142443142444142445142446142447142448142449142450142451142452142453142454142455142456142457142458142459142460142461142462142463142464142465142466142467142468142469142470142471142472142473142474142475142476142477142478142479142480142481142482142483142484142485142486142487142488142489142490142491142492142493142494142495142496142497142498142499142500142501142502142503142504142505142506142507142508142509142510142511142512142513142514142515142516142517142518142519142520142521142522142523142524142525142526142527142528142529142530142531142532142533142534142535142536142537142538142539142540142541142542142543142544142545142546142547142548142549142550142551142552142553142554142555142556142557142558142559142560142561142562142563142564142565142566142567142568142569142570142571142572142573142574142575142576142577142578142579142580142581142582142583142584142585142586142587142588142589142590142591142592142593142594142595142596142597142598142599142600142601142602142603142604142605142606142607142608142609142610142611142612142613142614142615142616142617142618142619142620142621142622142623142624142625142626142627142628142629142630142631142632142633142634142635142636142637142638142639142640142641142642142643142644142645142646142647142648142649142650142651142652142653142654142655142656142657142658142659142660142661142662142663142664142665142666142667142668142669142670142671142672142673142674142675142676142677142678142679142680142681142682142683142684142685142686142687142688142689142690142691142692142693142694142695142696142697142698142699142700142701142702142703142704142705142706142707142708142709142710142711142712142713142714142715142716142717142718142719142720142721142722142723142724142725142726142727142728142729142730142731142732142733142734142735142736142737142738142739142740142741142742142743142744142745142746142747142748142749142750142751142752142753142754142755142756142757142758142759142760142761142762142763142764142765142766142767142768142769142770142771142772142773142774142775142776142777142778142779142780142781142782142783142784142785142786142787142788142789142790142791142792142793142794142795142796142797142798142799142800142801142802142803142804142805142806142807142808142809142810142811142812142813142814142815142816142817142818142819142820142821142822142823142824142825142826142827142828142829142830142831142832142833142834142835142836142837142838142839142840142841142842142843142844142845142846142847142848142849142850142851142852142853142854142855142856142857142858142859142860142861142862142863142864142865142866142867142868142869142870142871142872142873142874142875142876142877142878142879142880142881142882142883142884142885142886142887142888142889142890142891142892142893142894142895142896142897142898142899142900142901142902142903142904142905142906142907142908142909142910142911142912142913142914142915142916142917142918142919142920142921142922142923142924142925142926142927142928142929142930142931142932142933142934142935142936142937142938142939142940142941142942142943142944142945142946142947142948142949142950142951142952142953142954142955142956142957142958142959142960142961142962142963142964142965142966142967142968142969142970142971142972142973142974142975142976142977142978142979142980142981142982142983142984142985142986142987142988142989142990142991142992142993142994142995142996142997142998142999143000143001143002143003143004143005143006143007143008143009143010143011143012143013143014143015143016143017143018143019143020143021143022143023143024143025143026143027143028143029143030143031143032143033143034143035143036143037143038143039143040143041143042143043143044143045143046143047143048143049143050143051143052143053143054143055143056143057143058143059143060143061143062143063143064143065143066143067143068143069143070143071143072143073143074143075143076143077143078143079143080143081143082143083143084143085143086143087143088143089143090143091143092143093143094143095143096143097143098143099143100143101143102143103143104143105143106143107143108143109143110143111143112143113143114143115143116143117143118143119143120143121143122143123143124143125143126143127143128143129143130143131143132143133143134143135143136143137143138143139143140143141143142143143143144143145143146143147143148143149143150143151143152143153143154143155143156143157143158143159143160143161143162143163143164143165143166143167143168143169143170143171143172143173143174143175143176143177143178143179143180143181143182143183143184143185143186143187143188143189143190143191143192143193143194143195143196143197143198143199143200143201143202143203143204143205143206143207143208143209143210143211143212143213143214143215143216143217143218143219143220143221143222143223143224143225143226143227143228143229143230143231143232143233143234143235143236143237143238143239143240143241143242143243143244143245143246143247143248143249143250143251143252143253143254143255143256143257143258143259143260143261143262143263143264143265143266143267143268143269143270143271143272143273143274143275143276143277143278143279143280143281143282143283143284143285143286143287143288143289143290143291143292143293143294143295143296143297143298143299143300143301143302143303143304143305143306143307143308143309143310143311143312143313143314143315143316143317143318143319143320143321143322143323143324143325143326143327143328143329143330143331143332143333143334143335143336143337143338143339143340143341143342143343143344143345143346143347143348143349143350143351143352143353143354143355143356143357143358143359143360143361143362143363143364143365143366143367143368143369143370143371143372143373143374143375143376143377143378143379143380143381143382143383143384143385143386143387143388143389143390143391143392143393143394143395143396143397143398143399143400143401143402143403143404143405143406143407143408143409143410143411143412143413143414143415143416143417143418143419143420143421143422143423143424143425143426143427143428143429143430143431143432143433143434143435143436143437143438143439143440143441143442143443143444143445143446143447143448143449143450143451143452143453143454143455143456143457143458143459143460143461143462143463143464143465143466143467143468143469143470143471143472143473143474143475143476143477143478143479143480143481143482143483143484143485143486143487143488143489143490143491143492143493143494143495143496143497143498143499143500143501143502143503143504143505143506143507143508143509143510143511143512143513143514143515143516143517143518143519143520143521143522143523143524143525143526143527143528143529143530143531143532143533143534143535143536143537143538143539143540143541143542143543143544143545143546143547143548143549143550143551143552143553143554143555143556143557143558143559143560143561143562143563143564143565143566143567143568143569143570143571143572143573143574143575143576143577143578143579143580143581143582143583143584143585143586143587143588143589143590143591143592143593143594143595143596143597143598143599143600143601143602143603143604143605143606143607143608143609143610143611143612143613143614143615143616143617143618143619143620143621143622143623143624143625143626143627143628143629143630143631143632143633143634143635143636143637143638143639143640143641143642143643143644143645143646143647143648143649143650143651143652143653143654143655143656143657143658143659143660143661143662143663143664143665143666143667143668143669143670143671143672143673143674143675143676143677143678143679143680143681143682143683143684143685143686143687143688143689143690143691143692143693143694143695143696143697143698143699143700143701143702143703143704143705143706143707143708143709143710143711143712143713143714143715143716143717143718143719143720143721143722143723143724143725143726143727143728143729143730143731143732143733143734143735143736143737143738143739143740143741143742143743143744143745143746143747143748143749143750143751143752143753143754143755143756143757143758143759143760143761143762143763143764143765143766143767143768143769143770143771143772143773143774143775143776143777143778143779143780143781143782143783143784143785143786143787143788143789143790143791143792143793143794143795143796143797143798143799143800143801143802143803143804143805143806143807143808143809143810143811143812143813143814143815143816143817143818143819143820143821143822143823143824143825143826143827143828143829143830143831143832143833143834143835143836143837143838143839143840143841143842143843143844143845143846143847143848143849143850143851143852143853143854143855143856143857143858143859143860143861143862143863143864143865143866143867143868143869143870143871143872143873143874143875143876143877143878143879143880143881143882143883143884143885143886143887143888143889143890143891143892143893143894143895143896143897143898143899143900143901143902143903143904143905143906143907143908143909143910143911143912143913143914143915143916143917143918143919143920143921143922143923143924143925143926143927143928143929143930143931143932143933143934143935143936143937143938143939143940143941143942143943143944143945143946143947143948143949143950143951143952143953143954143955143956143957143958143959143960143961143962143963143964143965143966143967143968143969143970143971143972143973143974143975143976143977143978143979143980143981143982143983143984143985143986143987143988143989143990143991143992143993143994143995143996143997143998143999144000144001144002144003144004144005144006144007144008144009144010144011144012144013144014144015144016144017144018144019144020144021144022144023144024144025144026144027144028144029144030144031144032144033144034144035144036144037144038144039144040144041144042144043144044144045144046144047144048144049144050144051144052144053144054144055144056144057144058144059144060144061144062144063144064144065144066144067144068144069144070144071144072144073144074144075144076144077144078144079144080144081144082144083144084144085144086144087144088144089144090144091144092144093144094144095144096144097144098144099144100144101144102144103144104144105144106144107144108144109144110144111144112144113144114144115144116144117144118144119144120144121144122144123144124144125144126144127144128144129144130144131144132144133144134144135144136144137144138144139144140144141144142144143144144144145144146144147144148144149144150144151144152144153144154144155144156144157144158144159144160144161144162144163144164144165144166144167144168144169144170144171144172144173144174144175144176144177144178144179144180144181144182144183144184144185144186144187144188144189144190144191144192144193144194144195144196144197144198144199144200144201144202144203144204144205144206144207144208144209144210144211144212144213144214144215144216144217144218144219144220144221144222144223144224144225144226144227144228144229144230144231144232144233144234144235144236144237144238144239144240144241144242144243144244144245144246144247144248144249144250144251144252144253144254144255144256144257144258144259144260144261144262144263144264144265144266144267144268144269144270144271144272144273144274144275144276144277144278144279144280144281144282144283144284144285144286144287144288144289144290144291144292144293144294144295144296144297144298144299144300144301144302144303144304144305144306144307144308144309144310144311144312144313144314144315144316144317144318144319144320144321144322144323144324144325144326144327144328144329144330144331144332144333144334144335144336144337144338144339144340144341144342144343144344144345144346144347144348144349144350144351144352144353144354144355144356144357144358144359144360144361144362144363144364144365144366144367144368144369144370144371144372144373144374144375144376144377144378144379144380144381144382144383144384144385144386144387144388144389144390144391144392144393144394144395144396144397144398144399144400144401144402144403144404144405144406144407144408144409144410144411144412144413144414144415144416144417144418144419144420144421144422144423144424144425144426144427144428144429144430144431144432144433144434144435144436144437144438144439144440144441144442144443144444144445144446144447144448144449144450144451144452144453144454144455144456144457144458144459144460144461144462144463144464144465144466144467144468144469144470144471144472144473144474144475144476144477144478144479144480144481144482144483144484144485144486144487144488144489144490144491144492144493144494144495144496144497144498144499144500144501144502144503144504144505144506144507144508144509144510144511144512144513144514144515144516144517144518144519144520144521144522144523144524144525144526144527144528144529144530144531144532144533144534144535144536144537144538144539144540144541144542144543144544144545144546144547144548144549144550144551144552144553144554144555144556144557144558144559144560144561144562144563144564144565144566144567144568144569144570144571144572144573144574144575144576144577144578144579144580144581144582144583144584144585144586144587144588144589144590144591144592144593144594144595144596144597144598144599144600144601144602144603144604144605144606144607144608144609144610144611144612144613144614144615144616144617144618144619144620144621144622144623144624144625144626144627144628144629144630144631144632144633144634144635144636144637144638144639144640144641144642144643144644144645144646144647144648144649144650144651144652144653144654144655144656144657144658144659144660144661144662144663144664144665144666144667144668144669144670144671144672144673144674144675144676144677144678144679144680144681144682144683144684144685144686144687144688144689144690144691144692144693144694144695144696144697144698144699144700144701144702144703144704144705144706144707144708144709144710144711144712144713144714144715144716144717144718144719144720144721144722144723144724144725144726144727144728144729144730144731144732144733144734144735144736144737144738144739144740144741144742144743144744144745144746144747144748144749144750144751144752144753144754144755144756144757144758144759144760144761144762144763144764144765144766144767144768144769144770144771144772144773144774144775144776144777144778144779144780144781144782144783144784144785144786144787144788144789144790144791144792144793144794144795144796144797144798144799144800144801144802144803144804144805144806144807144808144809144810144811144812144813144814144815144816144817144818144819144820144821144822144823144824144825144826144827144828144829144830144831144832144833144834144835144836144837144838144839144840144841144842144843144844144845144846144847144848144849144850144851144852144853144854144855144856144857144858144859144860144861144862144863144864144865144866144867144868144869144870144871144872144873144874144875144876144877144878144879144880144881144882144883144884144885144886144887144888144889144890144891144892144893144894144895144896144897144898144899144900144901144902144903144904144905144906144907144908144909144910144911144912144913144914144915144916144917144918144919144920144921144922144923144924144925144926144927144928144929144930144931144932144933144934144935144936144937144938144939144940144941144942144943144944144945144946144947144948144949144950144951144952144953144954144955144956144957144958144959144960144961144962144963144964144965144966144967144968144969144970144971144972144973144974144975144976144977144978144979144980144981144982144983144984144985144986144987144988144989144990144991144992144993144994144995144996144997144998144999145000145001145002145003145004145005145006145007145008145009145010145011145012145013145014145015145016145017145018145019145020145021145022145023145024145025145026145027145028145029145030145031145032145033145034145035145036145037145038145039145040145041145042145043145044145045145046145047145048145049145050145051145052145053145054145055145056145057145058145059145060145061145062145063145064145065145066145067145068145069145070145071145072145073145074145075145076145077145078145079145080145081145082145083145084145085145086145087145088145089145090145091145092145093145094145095145096145097145098145099145100145101145102145103145104145105145106145107145108145109145110145111145112145113145114145115145116145117145118145119145120145121145122145123145124145125145126145127145128145129145130145131145132145133145134145135145136145137145138145139145140145141145142145143145144145145145146145147145148145149145150145151145152145153145154145155145156145157145158145159145160145161145162145163145164145165145166145167145168145169145170145171145172145173145174145175145176145177145178145179145180145181145182145183145184145185145186145187145188145189145190145191145192145193145194145195145196145197145198145199145200145201145202145203145204145205145206145207145208145209145210145211145212145213145214145215145216145217145218145219145220145221145222145223145224145225145226145227145228145229145230145231145232145233145234145235145236145237145238145239145240145241145242145243145244145245145246145247145248145249145250145251145252145253145254145255145256145257145258145259145260145261145262145263145264145265145266145267145268145269145270145271145272145273145274145275145276145277145278145279145280145281145282145283145284145285145286145287145288145289145290145291145292145293145294145295145296145297145298145299145300145301145302145303145304145305145306145307145308145309145310145311145312145313145314145315145316145317145318145319145320145321145322145323145324145325145326145327145328145329145330145331145332145333145334145335145336145337145338145339145340145341145342145343145344145345145346145347145348145349145350145351145352145353145354145355145356145357145358145359145360145361145362145363145364145365145366145367145368145369145370145371145372145373145374145375145376145377145378145379145380145381145382145383145384145385145386145387145388145389145390145391145392145393145394145395145396145397145398145399145400145401145402145403145404145405145406145407145408145409145410145411145412145413145414145415145416145417145418145419145420145421145422145423145424145425145426145427145428145429145430145431145432145433145434145435145436145437145438145439145440145441145442145443145444145445145446145447145448145449145450145451145452145453145454145455145456145457145458145459145460145461145462145463145464145465145466145467145468145469145470145471145472145473145474145475145476145477145478145479145480145481145482145483145484145485145486145487145488145489145490145491145492145493145494145495145496145497145498145499145500145501145502145503145504145505145506145507145508145509145510145511145512145513145514145515145516145517145518145519145520145521145522145523145524145525145526145527145528145529145530145531145532145533145534145535145536145537145538145539145540145541145542145543145544145545145546145547145548145549145550145551145552145553145554145555145556145557145558145559145560145561145562145563145564145565145566145567145568145569145570145571145572145573145574145575145576145577145578145579145580145581145582145583145584145585145586145587145588145589145590145591145592145593145594145595145596145597145598145599145600145601145602145603145604145605145606145607145608145609145610145611145612145613145614145615145616145617145618145619145620145621145622145623145624145625145626145627145628145629145630145631145632145633145634145635145636145637145638145639145640145641145642145643145644145645145646145647145648145649145650145651145652145653145654145655145656145657145658145659145660145661145662145663145664145665145666145667145668145669145670145671145672145673145674145675145676145677145678145679145680145681145682145683145684145685145686145687145688145689145690145691145692145693145694145695145696145697145698145699145700145701145702145703145704145705145706145707145708145709145710145711145712145713145714145715145716145717145718145719145720145721145722145723145724145725145726145727145728145729145730145731145732145733145734145735145736145737145738145739145740145741145742145743145744145745145746145747145748145749145750145751145752145753145754145755145756145757145758145759145760145761145762145763145764145765145766145767145768145769145770145771145772145773145774145775145776145777145778145779145780145781145782145783145784145785145786145787145788145789145790145791145792145793145794145795145796145797145798145799145800145801145802145803145804145805145806145807145808145809145810145811145812145813145814145815145816145817145818145819145820145821145822145823145824145825145826145827145828145829145830145831145832145833145834145835145836145837145838145839145840145841145842145843145844145845145846145847145848145849145850145851145852145853145854145855145856145857145858145859145860145861145862145863145864145865145866145867145868145869145870145871145872145873145874145875145876145877145878145879145880145881145882145883145884145885145886145887145888145889145890145891145892145893145894145895145896145897145898145899145900145901145902145903145904145905145906145907145908145909145910145911145912145913145914145915145916145917145918145919145920145921145922145923145924145925145926145927145928145929145930145931145932145933145934145935145936145937145938145939145940145941145942145943145944145945145946145947145948145949145950145951145952145953145954145955145956145957145958145959145960145961145962145963145964145965145966145967145968145969145970145971145972145973145974145975145976145977145978145979145980145981145982145983145984145985145986145987145988145989145990145991145992145993145994145995145996145997145998145999146000146001146002146003146004146005146006146007146008146009146010146011146012146013146014146015146016146017146018146019146020146021146022146023146024146025146026146027146028146029146030146031146032146033146034146035146036146037146038146039146040146041146042146043146044146045146046146047146048146049146050146051146052146053146054146055146056146057146058146059146060146061146062146063146064146065146066146067146068146069146070146071146072146073146074146075146076146077146078146079146080146081146082146083146084146085146086146087146088146089146090146091146092146093146094146095146096146097146098146099146100146101146102146103146104146105146106146107146108146109146110146111146112146113146114146115146116146117146118146119146120146121146122146123146124146125146126146127146128146129146130146131146132146133146134146135146136146137146138146139146140146141146142146143146144146145146146146147146148146149146150146151146152146153146154146155146156146157146158146159146160146161146162146163146164146165146166146167146168146169146170146171146172146173146174146175146176146177146178146179146180146181146182146183146184146185146186146187146188146189146190146191146192146193146194146195146196146197146198146199146200146201146202146203146204146205146206146207146208146209146210146211146212146213146214146215146216146217146218146219146220146221146222146223146224146225146226146227146228146229146230146231146232146233146234146235146236146237146238146239146240146241146242146243146244146245146246146247146248146249146250146251146252146253146254146255146256146257146258146259146260146261146262146263146264146265146266146267146268146269146270146271146272146273146274146275146276146277146278146279146280146281146282146283146284146285146286146287146288146289146290146291146292146293146294146295146296146297146298146299146300146301146302146303146304146305146306146307146308146309146310146311146312146313146314146315146316146317146318146319146320146321146322146323146324146325146326146327146328146329146330146331146332146333146334146335146336146337146338146339146340146341146342146343146344146345146346146347146348146349146350146351146352146353146354146355146356146357146358146359146360146361146362146363146364146365146366146367146368146369146370146371146372146373146374146375146376146377146378146379146380146381146382146383146384146385146386146387146388146389146390146391146392146393146394146395146396146397146398146399146400146401146402146403146404146405146406146407146408146409146410146411146412146413146414146415146416146417146418146419146420146421146422146423146424146425146426146427146428146429146430146431146432146433146434146435146436146437146438146439146440146441146442146443146444146445146446146447146448146449146450146451146452146453146454146455146456146457146458146459146460146461146462146463146464146465146466146467146468146469146470146471146472146473146474146475146476146477146478146479146480146481146482146483146484146485146486146487146488146489146490146491146492146493146494146495146496146497146498146499146500146501146502146503146504146505146506146507146508146509146510146511146512146513146514146515146516146517146518146519146520146521146522146523146524146525146526146527146528146529146530146531146532146533146534146535146536146537146538146539146540146541146542146543146544146545146546146547146548146549146550146551146552146553146554146555146556146557146558146559146560146561146562146563146564146565146566146567146568146569146570146571146572146573146574146575146576146577146578146579146580146581146582146583146584146585146586146587146588146589146590146591146592146593146594146595146596146597146598146599146600146601146602146603146604146605146606146607146608146609146610146611146612146613146614146615146616146617146618146619146620146621146622146623146624146625146626146627146628146629146630146631146632146633146634146635146636146637146638146639146640146641146642146643146644146645146646146647146648146649146650146651146652146653146654146655146656146657146658146659146660146661146662146663146664146665146666146667146668146669146670146671146672146673146674146675146676146677146678146679146680146681146682146683146684146685146686146687146688146689146690146691146692146693146694146695146696146697146698146699146700146701146702146703146704146705146706146707146708146709146710146711146712146713146714146715146716146717146718146719146720146721146722146723146724146725146726146727146728146729146730146731146732146733146734146735146736146737146738146739146740146741146742146743146744146745146746146747146748146749146750146751146752146753146754146755146756146757146758146759146760146761146762146763146764146765146766146767146768146769146770146771146772146773146774146775146776146777146778146779146780146781146782146783146784146785146786146787146788146789146790146791146792146793146794146795146796146797146798146799146800146801146802146803146804146805146806146807146808146809146810146811146812146813146814146815146816146817146818146819146820146821146822146823146824146825146826146827146828146829146830146831146832146833146834146835146836146837146838146839146840146841146842146843146844146845146846146847146848146849146850146851146852146853146854146855146856146857146858146859146860146861146862146863146864146865146866146867146868146869146870146871146872146873146874146875146876146877146878146879146880146881146882146883146884146885146886146887146888146889146890146891146892146893146894146895146896146897146898146899146900146901146902146903146904146905146906146907146908146909146910146911146912146913146914146915146916146917146918146919146920146921146922146923146924146925146926146927146928146929146930146931146932146933146934146935146936146937146938146939146940146941146942146943146944146945146946146947146948146949146950146951146952146953146954146955146956146957146958146959146960146961146962146963146964146965146966146967146968146969146970146971146972146973146974146975146976146977146978146979146980146981146982146983146984146985146986146987146988146989146990146991146992146993146994146995146996146997146998146999147000147001147002147003147004147005147006147007147008147009147010147011147012147013147014147015147016147017147018147019147020147021147022147023147024147025147026147027147028147029147030147031147032147033147034147035147036147037147038147039147040147041147042147043147044147045147046147047147048147049147050147051147052147053147054147055147056147057147058147059147060147061147062147063147064147065147066147067147068147069147070147071147072147073147074147075147076147077147078147079147080147081147082147083147084147085147086147087147088147089147090147091147092147093147094147095147096147097147098147099147100147101147102147103147104147105147106147107147108147109147110147111147112147113147114147115147116147117147118147119147120147121147122147123147124147125147126147127147128147129147130147131147132147133147134147135147136147137147138147139147140147141147142147143147144147145147146147147147148147149147150147151147152147153147154147155147156147157147158147159147160147161147162147163147164147165147166147167147168147169147170147171147172147173147174147175147176147177147178147179147180147181147182147183147184147185147186147187147188147189147190147191147192147193147194147195147196147197147198147199147200147201147202147203147204147205147206147207147208147209147210147211147212147213147214147215147216147217147218147219147220147221147222147223147224147225147226147227147228147229147230147231147232147233147234147235147236147237147238147239147240147241147242147243147244147245147246147247147248147249147250147251147252147253147254147255147256147257147258147259147260147261147262147263147264147265147266147267147268147269147270147271147272147273147274147275147276147277147278147279147280147281147282147283147284147285147286147287147288147289147290147291147292147293147294147295147296147297147298147299147300147301147302147303147304147305147306147307147308147309147310147311147312147313147314147315147316147317147318147319147320147321147322147323147324147325147326147327147328147329147330147331147332147333147334147335147336147337147338147339147340147341147342147343147344147345147346147347147348147349147350147351147352147353147354147355147356147357147358147359147360147361147362147363147364147365147366147367147368147369147370147371147372147373147374147375147376147377147378147379147380147381147382147383147384147385147386147387147388147389147390147391147392147393147394147395147396147397147398147399147400147401147402147403147404147405147406147407147408147409147410147411147412147413147414147415147416147417147418147419147420147421147422147423147424147425147426147427 |
- Interrupt List Release 60 Last change 03jan99
- Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
- --------!---FLAGS----------------------------
- The use of -> instead of = signifies that the indicated register or register
- pair contains a pointer to the specified item, rather than the item itself.
- Register pairs (such as AX:BX) indicate that the item is split across the
- registers, with the high-order half in the first register.
- One or more letters may follow the interrupt number; they have the following
- meanings: U - undocumented function, u - partially documented function,
- P - available only in protected mode, R - available only in real or V86 mode,
- C - callout or callback (usually hooked rather than called),
- O - obsolete (no longer present in current versions)
- --------!---CATEGORIES-----------------------
- The ninth column of the divider line preceding an entry usually contains a
- classification code (the entry has not been classified if that character is
- a dash). The codes currently in use are:
- A - applications, a - access software (screen readers, etc),
- B - BIOS, b - vendor-specific BIOS extensions,
- C - CPU-generated, c - caches/spoolers,
- D - DOS kernel, d - disk I/O enhancements,
- E - DOS extenders, e - electronic mail, F - FAX,
- f - file manipulation, G - debuggers/debugging tools, g - games,
- H - hardware, h - vendor-specific hardware,
- I - IBM workstation/terminal emulators, i - system info/monitoring,
- J - Japanese, j - joke programs,
- K - keyboard enhancers, k - file/disk compression,
- l - shells/command interpreters,
- M - mouse/pointing device, m - memory management,
- N - network, n - non-traditional input devices,
- O - other operating systems,
- P - printer enhancements, p - power management,
- Q - DESQview/TopView and Quarterdeck programs,
- R - remote control/file access, r - runtime support,
- S - serial I/O, s - sound/speech,
- T - DOS-based task switchers/multitaskers, t - TSR libraries
- U - resident utilities, u - emulators,
- V - video, v - virus/antivirus,
- W - MS Windows,
- X - expansion bus BIOSes, x - non-volatile config storage
- y - security, * - reserved (and not otherwise classified)
- --------C-00---------------------------------
- INT 00 C - CPU-generated - DIVIDE ERROR
- Desc: generated if the divisor of a DIV or IDIV instruction is zero or the
- quotient overflows the result register; DX and AX will be unchanged.
- Notes: on an 8086/8088, the return address points to the following instruction
- on an 80286+, the return address points to the divide instruction
- an 8086/8088 will generate this interrupt if the result of a division
- is 80h (byte) or 8000h (word)
- SeeAlso: INT 04,OPCODE "AAD"
- --------G-00---------------------------------
- INT 00 - Zenith - ROM DEBUGGER
- Desc: invokes the ROM Debugger when at the BIOS level; equivalent to
- pressing Ctrl-Alt-Ins on booting.
- Note: since DOS revectors INT 00, it is necessary to restore this vector to
- its original ROM BIOS value in order to invoke the debugger once DOS
- loads
- SeeAlso: INT 03"Columbia"
- --------C-01---------------------------------
- INT 01 C - CPU-generated - SINGLE STEP
- Desc: generated after each instruction if TF (trap flag) is set; TF is
- cleared on invoking the single-step interrupt handler
- Notes: interrupts are prioritized such that external interrupts are invoked
- after the INT 01 pushes CS:IP/FLAGS and clears TF, but before the
- first instruction of the handler executes
- used by debuggers for single-instruction execution tracing, such as
- MS-DOS DEBUG's T command
- SeeAlso: INT 03"CPU"
- --------C-01---------------------------------
- INT 01 C - CPU-generated (80386+) - DEBUGGING EXCEPTIONS
- Desc: generated by the CPU on various occurrences which may be of interest
- to a debugger program
- Note: events which may trigger the interrupt:
- Instruction address breakpoint fault - will return to execute inst
- Data address breakpoint trap - will return to following instruction
- General detect fault, debug registers in use
- Task-switch breakpoint trap
- undocumented 386/486 opcode F1h - will return to following instruc
- SeeAlso: INT 03"CPU"
- --------H-02---------------------------------
- INT 02 C - external hardware - NON-MASKABLE INTERRUPT
- Desc: generated by the CPU when the input to the NMI pin is asserted
- Notes: return address points to start of interrupted instruction on 80286+
- on the 80286+, further NMIs are disabled until the next IRET
- instruction, but one additional NMI is remembered by the hardware
- and will be serviced after the IRET instruction reenables NMIs
- maskable interrupts may interrupt the NMI handler if interrupts are
- enabled
- although the Intel documentation states that this interrupt is
- typically used for power-failure procedures, it has many other uses
- on IBM-compatible machines:
- Memory parity error: all except Jr, CONV, and some machines
- without memory parity
- Breakout switch on hardware debuggers
- Coprocessor interrupt: all except Jr and CONV
- Keyboard interrupt: Jr, CONV
- I/O channel check: CONV, PS50+
- Disk-controller power-on request: CONV
- System suspend: CONV
- Real-time clock: CONV
- System watch-dog timer, time-out interrupt: PS50+
- DMA timer time-out interrupt: PS50+
- Low battery: HP 95LX
- Module pulled: HP 95LX
- --------m-02----SI0714-----------------------
- INT 02 U - STB RAPIDMAP.SYS - ???
- SI = 0714h
- ES:DI -> ???
- Return: ???
- SeeAlso: INT 67/AX=6100h"STB",PORT 00E1h"STB"
- --------C-03---------------------------------
- INT 03 C - CPU-generated - BREAKPOINT
- Desc: generated by the one-byte breakpoint instruction (opcode CCh)
- Notes: used by debuggers to implement breakpoints, such as MS-DOS DEBUG's G
- command
- also used by Turbo Pascal versions 1,2,3 when {$U+} specified
- return address points to byte following the breakpoint instruction
- called by Novell DOS 7 EMM386 after displaying an exception error
- message (GPF, illegal opcodes, etc.) and before waiting for user
- input
- called by QEMM-386 if the user presses 'I' (undocumented) when prompted
- after an exception error message
- SeeAlso: INT 01"CPU"
- --------G-03---------------------------------
- INT 03 - Columbia PCs (desktop,VP portables) - ROM DEBUGGER
- Desc: invokes the ROM Debugger if INT 03 has not been revectored; equivalent
- to pressing Esc on booting.
- SeeAlso: INT 00"Zenith",INT 03"Realia"
- --------G-03---------------------------------
- INT 03 - Realia COBOL - DEBUGGER SUPPORT
- Note: Realia COBOL checks for a signature eight bytes prior to the interrupt
- handler when it starts up
- BUG: if the offset of the INT 03 vector is less than 8, the compiler and
- all executables generated by it will crash the system
- SeeAlso: INT 03"Columbia"
- --------G-03---------------------------------
- INT 03 U - Watcom WVIDEO, Watcom WD - OUTPUT DEBUGGING MESSAGE
- STACK: DWORD selector
- DWORD offset of ASCIZ message to display
- Notes: the INT 03h instruction which invokes the debugger must be followed by
- a JMP SHORT and the signature string "WVIDEO"
- to check whether this interface is available, define a public byte
- variable named ___WD_Present, which the debugger will set to 01h
- before running the program
- SeeAlso: AX=0910h
- --------U-03---------------------------------
- INT 03 - DTown Utilities - POP UP
- Program: DTown Software Development's DTown Utilities contains various tools
- which are useful to programmers, such as a memory viewer and
- disassembler
- Note: DTU pops up on INT 03 (if not hooked by a debugger) to allow the
- user to inspect memory or code when the machine crashes; various
- memory managers will invoke INT 03 when displaying a CPU exception
- error message (either automatically or when the user presses a
- particular key)
- SeeAlso: INT 2D/AL=20h"DTown"
- --------G-030000-----------------------------
- INT 03 - Soft-ICE - BACK DOOR COMMANDS - GET Soft-ICE VERSION
- AX = 0000h
- SI = magic value 4647h ('FG')
- DI = magic value 4A4Dh ('JM')
- Return: SI = BCD version (0280h = v2.80)
- SeeAlso: INT 03/AX=0910h
- --------G-0301-------------------------------
- INT 03 - Soft-ICE - BACK DOOR COMMANDS - ???
- AH = 01h
- SI = magic value 4647h ('FG')
- DI = magic value 4A4Dh ('JM')
- Return: ???
- SeeAlso: AX=0000h,AX=090Bh,INT 03/AH=10h
- --------G-030900-----------------------------
- INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ???
- AX = 0900h
- SI = magic value 4647h ('FG')
- DI = magic value 4A4Dh ('JM')
- DS:BX -> ???
- CX = ???
- DX = ???
- Return: ???
- SeeAlso: AX=0000h,AH=01h,AX=0902h,AX=0914h
- --------G-030902-----------------------------
- INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - POPUP & START A DEBUG SESSION
- AX = 0902h
- SI = magic value 4647h ('FG')
- DI = magic value 4A4Dh ('JM')
- DS:BX -> initial register values (see #00001)
- Return: registers as specified in initial register values table
- Note: This function is called by LDR.EXE in loading a program to
- be debugged. After executing the function, Soft-ICE pops up its
- debugging window and you may start debugging your program.
- Return: ???
- SeeAlso: AX=0000h,AX=090Ah,AX=0910h,AX=0914h
- Format of Soft-ICE initial register values:
- Offset Size Description (Table 00001)
- 00h WORD initial value of SP
- 02h WORD initial value of SS
- 04h WORD initial value of IP
- 06h WORD initial value of CS
- 08h WORD initial value of DS and ES
- 0Ah WORD ???
- 0Ch WORD ???
- 0Eh WORD ???
- 10h WORD initial value of AX
- 12h WORD ??? (defaults to 000AH ???)
- 14h WORD ??? (defaults to 0001H ???)
- 16h WORD ??? (defaults to 0100H ???)
- --------G-030903-----------------------------
- INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ???
- AX = 0903h
- SI = magic value 4647h ('FG')
- DI = magic value 4A4Dh ('JM')
- DS:BX -> ???
- CX = ???
- DX = ???
- Return: ???
- SeeAlso: AX=0000h,AX=0902h,AX=0907h,AX=0914h
- --------G-030907-----------------------------
- INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ???
- AX = 0907h
- SI = magic value 4647h ('FG')
- DI = magic value 4A4Dh ('JM')
- DS:BX -> ???
- CX = ???
- DX = ???
- Return: ???
- SeeAlso: AX=0000h,AX=0903h,AX=090Ah,AX=0914h
- --------G-03090A-----------------------------
- INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ???
- AX = 090Ah
- SI = magic value 4647h ('FG')
- DI = magic value 4A4Dh ('JM')
- DS:BX -> ???
- CX = ???
- DX = ???
- Return: ???
- SeeAlso: AX=0000h,AX=0907h,AX=090Bh,AX=0914h
- --------G-03090B-----------------------------
- INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ???
- AX = 090Bh
- SI = magic value 4647h ('FG')
- DI = magic value 4A4Dh ('JM')
- DS:BX -> ???
- CX = ???
- DX = ???
- Return: ???
- SeeAlso: AX=0000h,AX=090Ah,AX=0910h,AX=0914h
- --------G-030910-----------------------------
- INT 03 - Soft-ICE - BACK DOOR COMMANDS - DISPLAY STRING IN Soft-ICE WINDOW
- AX = 0910h
- SI = magic value 4647h ('FG')
- DI = magic value 4A4Dh ('JM')
- DS:DX -> ASCIZ string to display (max 100 bytes, 0Dh OK)
- Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc.
- SeeAlso: INT 03"WVIDEO"
- --------G-030911-----------------------------
- INT 03 - Soft-ICE - BACK DOOR COMMANDS - EXECUTE Soft-ICE COMMAND
- AX = 0911h
- SI = magic value 4647h ('FG')
- DI = magic value 4A4Dh ('JM')
- DS:DX -> ASCIZ command string (max 100 bytes, 0Dh OK)
- Return: nothing
- SeeAlso: AX=0912h,AX=0913h
- --------G-030912-----------------------------
- INT 03 - Soft-ICE - BACK DOOR COMMANDS - GET BREAKPOINT INFORMATION
- AX = 0912h
- SI = magic value 4647h ('FG')
- DI = magic value 4A4Dh ('JM')
- Return: BH = entry number of last breakpoint set
- BL = type of last breakpoint set (see #00002)
- DH = entry number of last breakpoint to be triggered
- DL = type of last triggered breakpoint (see #00002)
- Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc.
- SeeAlso: AX=0911h,AX=0913h,AX=0914h
- (Table 00002)
- Values for Soft-ICE breakpoint type:
- 00h BPM (breakpoint register types)
- 01h I/O
- 02h INTerrupt
- 03h BPX (INT 03-style breakpoint)
- 04h reserved
- 05h range
- --------G-030913-----------------------------
- INT 03 - Soft-ICE v2.5x - BACK DOOR COMMANDS - SET Soft-ICE BREAKPOINT
- AX = 0913h
- SI = magic value 4647h ('FG')
- DI = magic value 4A4Dh ('JM')
- DS:DX -> breakpoint structure (see #00003)
- Return: AX = status
- 00h successful
- BX = breakpoint number
- 03h breakpoint table full
- 06h memory limit error
- 07h I/O limit error
- 09h range limit error
- 16h duplicate breakpoint
- SeeAlso: AX=0911h,AX=0912h,AX=0914h
- Format of Soft-ICE breakpoint structure:
- Offset Size Description (Table 00003)
- 00h BYTE breakpoint type (see #00004)
- 01h DWORD breakpoint address 1
- (lower range limit for memory BPs,
- interrupt number for interrupt BPs,
- address of BP for execution BPs,
- I/O address (only word) for I/O BPs)
- 05h DWORD breakpoint address 2
- (upper range limit for memory BPs,
- optional value to check for for interrupt BPs,
- overlay number (0 = root) for execution BPs)
- 09h DWORD breakpoint address 3
- 0Dh BYTE breakpoint mode 1 (see #00005)
- (for interrupt BPs = register to check
- 00h no value checking
- 01h check AL
- 02h check AH
- 03h check AX)
- 0Eh BYTE breakpoint mode 2 (see #00005)
- 0Fh BYTE breakpoint size (00h byte, 01h word, 03h dword)
- 10h BYTE breakpoint pass count before program stop
- 11h BYTE breakpoint state
- Note: all unused fields should contain zeros
- (Table 00004)
- Values for Soft-ICE breakpoint type:
- 00h memory location
- 01h memory range
- 03h I/O
- 04h interrupt
- 05h execution break
- (Table 00005)
- Values for Soft-ICE breakpoint mode:
- 01h read
- 02h write
- 04h execution
- --------G-030914-----------------------------
- INT 03 - Soft-ICE v2.5x - BACK DOOR COMMANDS - REMOVE Soft-ICE BREAKPOINT
- AX = 0914h
- SI = magic value 4647h ('FG')
- DI = magic value 4A4Dh ('JM')
- BX = breakpoint number (returned by AX=0913h)
- Return: BX = ???
- Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc.
- SeeAlso: AX=0912h,AX=0913h
- --------G-030918-----------------------------
- INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ???
- AX = 0918h
- SI = magic value 4647h ('FG')
- DI = magic value 4A4Dh ('JM')
- DS:BX -> ???
- CX = ???
- DX = ???
- Return: ???
- SeeAlso: INT 03/AX=0000h,INT 03/AX=0910h,INT 03/AX=0914h,INT 03/AH=10h
- --------G-0310-------------------------------
- INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ???
- AH = 10h
- SI = magic value 4647h ('FG')
- DI = magic value 4A4Dh ('JM')
- Return: ???
- SeeAlso: INT 03/AX=0000h,INT 03/AX=0910h,INT 03/AH=01h,INT 03/AH=11h
- --------G-0311-------------------------------
- INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ???
- AH = 11h
- SI = magic value 4647h ('FG')
- DI = magic value 4A4Dh ('JM')
- Return: none???
- SeeAlso: INT 03/AX=0000h,INT 03/AX=0910h,INT 03/AH=10h,INT 03/AX=130Ch
- --------G-03130C-----------------------------
- INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ???
- AX = 130Ch
- SI = magic value 4647h ('FG')
- DI = magic value 4A4Dh ('JM')
- BX = ???
- CX = ???
- DX = ???
- Return: AX = ??? (1300h)
- SeeAlso: INT 03/AX=0000h,INT 03/AX=0910h,INT 03/AH=11h,INT 03/AX=130Eh
- --------G-03130E-----------------------------
- INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ???
- AX = 130Eh
- SI = magic value 4647h ('FG')
- DI = magic value 4A4Dh ('JM')
- BX = ???
- CX = ???
- DX = ???
- Return: AX = ??? (1300h)
- SeeAlso: INT 03/AX=0000h,INT 03/AX=0910h,INT 03/AX=130Ch,INT 03/AX=1313h
- --------G-031313-----------------------------
- INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ???
- AX = 1313h
- SI = magic value 4647h ('FG')
- DI = magic value 4A4Dh ('JM')
- BX = ???
- CX = ???
- DX = ???
- Return: AX = ??? (1300h)
- SeeAlso: INT 03/AX=0000h,INT 03/AX=0910h,INT 03/AX=130Eh
- --------G-030900-----------------------------
- INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ???
- AX = 0900h
- SI = magic value 4647h ('FG')
- DI = magic value 4A4Dh ('JM')
- Return: none???
- SeeAlso: INT 03/AX=0000h,INT 03/AX=0910h,INT 03/AH=10h,INT 03/AH=12h
- --------C-04---------------------------------
- INT 04 C - CPU-generated - INTO DETECTED OVERFLOW
- Desc: the INTO instruction will generate this interrupt if OF (Overflow Flag)
- is set; otherwise, INTO is effectively a NOP
- Note: may be used for convenient overflow testing (to prevent errors from
- propagating) instead of JO or a JNO/JMP combination
- SeeAlso: INT 00"CPU",OPCODE "AAD",OPCODE "AAM"
- --------B-05---------------------------------
- INT 05 - PRINT SCREEN
- Desc: dump the current text screen to the first printer
- Notes: normally invoked by the INT 09 handler when PrtSc key is pressed, but
- may be invoked directly by applications
- byte at 0050h:0000h contains status used by default handler
- 00h not active
- 01h PrtSc in progress
- FFh last PrtSc encountered error
- default handler is at F000h:FF54h in IBM PC and 100%-compatible BIOSes
- since the BOUND instruction also calls INT 05h, but returns control
- to the BOUND instruction, a failed BOUND check will cause an infinite
- loop of PrtScreens unless the INT 05 handler is aware of the problem
- and checks whether the interrupt was invoked by a BOUND instruction
- BUG: some old BIOSes/applications appear to destroy BP on return
- SeeAlso: INT 10/AH=12h/BL=20h,INT 4A"Tandy 2000",INT 5E"TI Professional"
- SeeAlso: INT 80"Phar Lap"
- --------C-05---------------------------------
- INT 05 C - CPU-generated (80186+) - BOUND RANGE EXCEEDED
- Desc: generated by BOUND instruction when the value to be tested is less than
- the indicated lower bound or greater than the indicated upper bound.
- Note: returning from this interrupt re-executes the failing BOUND instruction
- --------P-05454A-----------------------------
- INT 05 U - PSPS v2.01 - EJECT PAGE
- AX = 454Ah ('EJ')
- Program: PSPS is shareware PostScript PrintScreen utility by A.N.D.
- Technologies
- Note: sends a ^D to the current printer
- SeeAlso: AX=4E57h,AX=5053h,AX=554Eh
- --------P-054E57-----------------------------
- INT 05 U - PSPS v2.01 - SET PARAMETERS
- AX = 4E57h ('NW')
- ES:SI -> 11-byte buffer containing new settings
- Return: buffer filled
- SeeAlso: AX=454Ah,AX=5053h,INT 17/AH=63h
- --------P-055053-----------------------------
- INT 05 U - PSPS v2.01 - GET PARAMETERS
- AX = 5053h ('PS')
- ES:SI -> 11-byte buffer for settings
- Return: buffer filled
- SeeAlso: AX=4E57h,AX=554Eh,INT 17/AH=64h
- --------P-05554E-----------------------------
- INT 05 U - PSPS v2.01 - UNINSTALL
- AX = 554Eh ('UN')
- Program: PSPS is shareware PostScript PrintScreen utility by A.N.D.
- Technologies
- SeeAlso: AX=454Ah,AX=4E57h,INT 17/AH=62h
- --------C-06---------------------------------
- INT 06 C - CPU-generated (80286+) - INVALID OPCODE
- Desc: this interrupt is generated when the CPU attempts to execute an
- invalid opcode (most protected-mode instructions are considered
- invalid in real mode) or a BOUND, LDS, LES, or LIDT instruction
- which specifies a register rather than a memory address
- Notes: return address points to beginning of invalid instruction
- with proper programming, this interrupt may be used to emulate
- instructions which do not exist; many 386 BIOSes emulate the 80286
- undocumented LOADALL instruction which was removed from the 80386+
- generated by the 80386+ when the LOCK prefix is used with instructions
- other than BTS, BTR, BTC, XCHG, XADD (486), CMPXCHG (486), INC, DEC,
- NOT, NEG, ADD, ADC, SUB, SBB, AND, OR, or XOR, or any instruction
- not accessing memory.
- SeeAlso: INT 0C"CPU",INT 0D"CPU"
- --------b-06---------------------------------
- INT 06 C - HP 95LX - SLEEP/WAKEUP
- Desc: this interrupt is called just before going into light or deep
- (shutdown) sleep and just after returning from light or deep sleep
- SeeAlso: INT 0B"HP 95LX",INT 15/AX=4DD4h,INT 15/AH=4Eh
- --------V-06---------------------------------
- INT 06 U - no-name clone - GRAPHICS CHARACTER TABLE (NOT A VECTOR!)
- Desc: points at graphics data for characters 00h-7Fh of the current font
- SeeAlso: INT 43"EGA",INT 44"VIDEO"
- --------C-07---------------------------------
- INT 07 C - CPU-generated (80286+) - PROCESSOR EXTENSION NOT AVAILABLE
- Desc: this interrupt is automatically called if a coprocessor instruction is
- encountered when no coprocessor is installed
- Note: can be used to emulate a numeric coprocessor in software
- SeeAlso: INT 09"CPU"
- --------H-08---------------------------------
- INT 08 C - IRQ0 - SYSTEM TIMER
- Desc: generated 18.2 times per second by channel 0 of the 8254 system timer,
- this interrupt is used to keep the time-of-day clock updated
- Notes: programs which need to be invoked regularly should use INT 1C unless
- they need to reprogram the timer while still keeping the time-of-day
- clock running at the proper rate
- default handler is at F000h:FEA5h in IBM PC and 100%-compatible BIOSes
- may be masked by setting bit 0 on I/O port 21h
- SeeAlso: INT 1C,INT 4A"SYSTEM",INT 50"DESQview",INT 58"DoubleDOS",INT 70"IRQ8"
- SeeAlso: INT 78"GO32",INT D8"Screen Thief",MEM 0040h:0040h,MEM 0040h:006Ch
- --------C-08---------------------------------
- INT 08 C - CPU-generated (80286+) - DOUBLE EXCEPTION DETECTED
- Desc: called when multiple exceptions occur on one instruction, or an
- exception occurs in an exception handler
- Notes: called in protected mode if an interrupt above the defined limit of
- the interrupt vector table occurs
- return address points at beginning of instruction with errors or the
- beginning of the instruction which was about to execute when the
- external interrupt caused the exception
- if an exception occurs in the double fault handler, the CPU goes into
- SHUTDOWN mode (which circuitry in the PC/AT converts to a reset);
- this "triple fault" is a faster way of returning to real mode on
- many 80286 machines than the standard keyboard controller reset
- --------H-09---------------------------------
- INT 09 C - IRQ1 - KEYBOARD DATA READY
- Desc: this interrupt is generated when data is received from the keyboard.
- This is normally a scan code (from either a keypress *or* a key
- release), but may also be an ACK or NAK of a command on AT-class
- keyboards.
- Notes: this IRQ may be masked by setting bit 1 on I/O port 21h
- if the BIOS supports an enhanced (101/102-key) keyboard, it calls
- INT 15/AH=4Fh after reading the scan code (see #00006) from the
- keyboard and before further processing; all further processing uses
- the scan code returned from INT 15/AH=4Fh
- the default interrupt handler is at F000h:E987h in 100%-compatible
- BIOSes
- the interrupt handler performs the following actions for certain
- special keystrokes:
- Ctrl-Break clear keyboard buffer, place word 0000h in buffer,
- invoke INT 1B, and set flag at 0040h:0071h
- SysReq invoke INT 15/AH=85h (SysReq is often labeled SysRq)
- Ctrl-Numlock place system in a tight wait loop until next INT 09
- Ctrl-Alt-Del jump to BIOS startup code (either F000h:FFF0h or the
- destination of the jump at that address)
- Shift-PrtSc invoke INT 05
- Ctrl-Alt-Plus (HP Vectra) enable keyclick
- Ctrl-Alt-Plus (many clones) set clock speed to high
- Ctrl-Alt-Minus (HP Vectra) reduce keyclick volume
- Ctrl-Alt-Minus (many clones) set clock speed to low
- Ctrl-Alt-SysReq (HP Vectra) generate hard reset
- Ctrl-Alt-S (many clones) run BIOS setup program
- Ctrl-Alt-Esc (many clones) run BIOS setup program
- Ctrl-Alt-Ins (many clones) run BIOS setup program
- Ctrl-Alt-LeftShift-GrayMinus (some clones) turn off system cache
- Ctrl-Alt-LeftShift-GrayPlus (some clones) turn on system cache
- DR DOS hooks this interrupt to control the cursor shape (underscore/
- half block) for overwrite/insert mode
- DR Multiuser DOS hooks this interrupt for cursor shape control and to
- control whether Ctrl-Alt-Del reboots the current session or the
- entire system
- SeeAlso: INT 05"PRINT SCREEN",INT 0B"HP 95LX",INT 15/AH=4Fh,INT 15/AH=85h
- SeeAlso: INT 16/AH=00h,INT 16/AH=10h,INT 1B,INT 2F/AX=A901h,INT 4A/AH=00h"TI"
- SeeAlso: INT 51"DESQview",INT 59"DoubleDOS",INT 79"GO32"
- (Table 00006)
- Values for keyboard make/break (scan) code:
- 01h Esc 31h N
- 02h 1 ! 32h M
- 03h 2 @ 33h , < 63h F16
- 04h 3 # 34h . > 64h F17
- 05h 4 $ 35h / ? 65h F18
- 06h 5 % 36h Right Shift 66h F19
- 07h 6 ^ 37h Grey* 67h F20
- 08h 7 & 38h Alt 68h F21 (Fn) [*]
- 09h 8 * 39h SpaceBar 69h F22
- 0Ah 9 ( 3Ah CapsLock 6Ah F23
- 0Bh 0 ) 3Bh F1 6Bh F24
- 0Ch - _ 3Ch F2 6Ch --
- 0Dh = + 3Dh F3 6Dh EraseEOF
- 0Eh Backspace 3Eh F4
- 0Fh Tab 3Fh F5 6Fh Copy/Play
- 10h Q 40h F6
- 11h W 41h F7
- 12h E 42h F8 72h CrSel
- 13h R 43h F9 73h <delta> [*]
- 14h T 44h F10 74h ExSel
- 15h Y 45h NumLock 75h --
- 16h U 46h ScrollLock 76h Clear
- 17h I 47h Home 77h [Note2] Joyst But1
- 18h O 48h UpArrow 78h [Note2] Joyst But2
- 19h P 49h PgUp 79h [Note2] Joyst Right
- 1Ah [ { 4Ah Grey- 7Ah [Note2] Joyst Left
- 1Bh ] } 4Bh LeftArrow 7Bh [Note2] Joyst Up
- 1Ch Enter 4Ch Keypad 5 7Ch [Note2] Joyst Down
- 1Dh Ctrl 4Dh RightArrow 7Dh [Note2] right mouse
- 1Eh A 4Eh Grey+ 7Eh [Note2] left mouse
- 1Fh S 4Fh End
- 20h D 50h DownArrow
- 21h F 51h PgDn
- 22h G 52h Ins
- 23h H 53h Del
- 24h J 54h SysReq ---non-key codes---
- 25h K 55h [Note1] F11 00h kbd buffer full
- 26h L 56h left \| (102-key)
- 27h ; : 57h F11 AAh self-test complete
- 28h ' " 58h F12 E0h prefix code
- 29h ` ~ 59h [Note1] F15 E1h prefix code
- 2Ah Left Shift 5Ah PA1 EEh ECHO
- 2Bh \ | 5Bh F13 (LWin) F0h prefix code (key break)
- 2Ch Z 5Ch F14 (RWin) FAh ACK
- 2Dh X 5Dh F15 (Menu) FCh diag failure (MF-kbd)
- 2Eh C FDh diag failure (AT-kbd)
- 2Fh V FEh RESEND
- 30h B FFh kbd error/buffer full
- Notes: scan codes 56h-E1h are only available on the extended (101/102-key)
- keyboard and Host Connected (122-key) keyboard; scan codes 5Bh-5Dh
- are only available on the 122-key keyboard and the Microsoft Natural
- Keyboard; scan codes 5Eh-76h are only available on the 122-key
- keyboard
- in the default configuration, break codes are the make scan codes with
- the high bit set; make codes 60h,61h,70h, etc. are not available
- because the corresponding break codes conflict with prefix codes
- (code 2Ah is available because the self-test result code AAh is only
- sent on keyboard initialization). An alternate keyboard
- configuration can be enabled on AT and later systems with enhanced
- keyboards, in which break codes are the same as make codes, but
- prefixed with an F0h scan code
- prefix code E0h indicates that the following make/break code is for a
- "gray" duplicate to a key which existed on the original PC keyboard;
- prefix code E1h indicates that the following make code has no
- corresponding break code (currently only the Pause key generates no
- break code)
- the Microsoft Natural Keyboard sends make codes 5Bh, 5Ch, and 5Dh
- (all with an E0h prefix) for the Left Windows, Right Windows, and
- Menu keys on the bottom row
- the European "Cherry G81-3000 SAx/04" keyboard contains contacts for
- four additional keys, which can be made available by a user
- modification; the three new keys located directly below the cursor
- pad's Delete, End, and PgDn keys send make codes 66h-68h (F19-F21);
- the fourth new key, named <delta>, sends make code 73h
- the SysReq key is often labeled SysRq
- the "Accord" ergonomic keyboard with optional touchpad (no other
- identification visible on keyboard or in owner's booklet) has an
- additional key above the Grey- key marked with a left-pointing
- triangle and labeled "Fn" in the owner's booklet which returns
- scan codes E0h 68h on make and E0h E8h on break
- the "Preh Commander AT" keyboard with additional F11-F22 keys treats
- F11-F20 as Shift-F1..Shift-F10 and F21/F22 as Ctrl-F1/Ctrl-F2; the
- Eagle PC-2 keyboard with F11-F24 keys treated those additional keys
- in the same way
- [Note1] the "Cherry G80-0777" keyboard has additional F11-F15 keys
- which generate make codes 55h-59h; some other extended keyboards
- generate codes 55h and 56h for F11 and F12, which cannot be managed
- by standard DOS keyboard drivers
- [Note2] the Schneider/Amstrad PC1512 PC keyboards contain extra keys,
- a mouse, and a digital joystick, which are handled like extra keys.
- The joystick's motion scancodes are converted into standard arrow
- keys by the BIOS, and the joystick and mouse button scan codes are
- converted to FFFFh codes in the BIOS keyboard buffer
- (see CMOS 15h"AMSTRAD").
- In addition to the keys listed in the table above, there are
- Del-> (delete forward) 70h
- Enter 74h
- SeeAlso: #00602 at INT 16/AX=6F07h,#03214 at INT 4A/AH=05h
- --------C-09---------------------------------
- INT 09 C - CPU-generated (80286,80386) - PROCESSOR EXTENSION PROTECTION ERROR
- Desc: called if the coprocessor attempts to access memory outside a segment
- boundary; it may occur at an arbitrary time after the coprocessor
- instruction was issued
- Notes: until the condition is cleared or the coprocessor is reset, the only
- coprocessor instruction which may be used is FNINIT; WAIT or other
- coprocessor instructions will cause a deadlock because the
- coprocessor is still busy waiting for data
- for the 486+, a coprocessor protection error generates an INT 0D
- SeeAlso: INT 07"CPU"
- --------*-09---------------------------------
- INT 09 P - internal hardware - RESERVED BY Intel (80486)
- Note: this exception has been moved to INT 0D
- SeeAlso: INT 09"CPU",INT 0D
- --------H-0A---------------------------------
- INT 0A C - IRQ2 - LPT2 (PC), VERTICAL RETRACE INTERRUPT (EGA,VGA)
- Notes: the TOPS and PCnet adapters use this interrupt request line by default
- DOS 3.2 revectors IRQ2 to a stack-switching routine
- on ATs and above, the physical data line for IRQ2 is labeled IRQ9 and
- connects to the slave 8259. The BIOS redirects the interrupt for
- IRQ9 back here.
- under DESQview, only the INT 15h vector and BASIC segment address (the
- word at 0000h:0510h) may be assumed to be valid for the handler's
- process
- many VGA boards do not implement the vertical retrace interrupt,
- including the IBM VGA Adapter where the traces are either cut or
- removed
- SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71,INT 7A"GO32"
- --------H-0A---------------------------------
- INT 0A C - IRQ2 - Tandy 1000-series HARD DISK
- Notes: this interrupt may be masked by setting bit 2 on I/O port 21h
- the Tandy 1000, 1000A, and 1000HD use IRQ2 for the hard disk; the
- 1000EX, HX, RLX, RLX-HD, RLX-B, RLX-HD-B use IRQ5 instead; the
- 1000RL, RL-HD, SL, SL/2, TL, TL/2, and TL/3 are jumper-selectable
- for either IRQ2 or IRQ5 (default IRQ5); the 1000SX and TX are
- DIP-switch selectable for IRQ2 or IRQ5 (default IRQ2); the RSX and
- RSX-HD use IRQ14. Tandy systems which use IRQ2 for the hard disk
- interrupt use IRQ5 for vertical retrace.
- SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71
- --------H-0A---------------------------------
- INT 0A - IRQ2 - ROLAND MPU MIDI INTERFACE
- Note: newer Roland cards and MIDI interfaces by other manufacturers use
- a jumper-selectable IRQ, but software and hardware generally defaults
- to IRQ2
- SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71,INT 7A"GO32"
- --------C-0A---------------------------------
- INT 0A CP - CPU-generated (80286+) - INVALID TASK STATE SEGMENT
- Desc: automatically called during a task switch if the new TSS specified by
- the task gate is invalid for any of the following reasons:
- TSS limit is less than 43 (80286) or 103 (80386/80486)
- LDT selector invalid or segment not present
- null SS selector, or SS selector outside LDT/GDT limit
- stack segment is read-only
- stack segment DPL differs from new CPL, or RPL <> CPL
- CS selector is outside LDT/GDT limit or not code
- non-conforming code segment's DPL differs from CPL
- conforming code segment's DPL > CPL
- DS/ES selectors outside LDT/GDT limit or not readable segments
- Note: the handler must use a task gate in order to have a valid TSS under
- which to execute; it must also reset the busy bit in the new TSS
- SeeAlso: INT 0B"CPU"
- --------H-0B---------------------------------
- INT 0B C - IRQ3 - SERIAL COMMUNICATIONS (COM2)
- Desc: automatically asserted by the UART when COM2 needs attention, if the
- UART has been programmed to generate interrupts
- Notes: the TOPS and PCnet adapters use this interrupt request line as an
- alternate
- on PS/2s, COM2 through COM8 share this interrupt; on many PC's, COM4
- shares this interrupt
- may be masked by setting bit 3 on I/O port 21h
- SeeAlso: INT 0C"COM1",INT 53"DESQview",INT 5B"DoubleDOS",INT 7B"GO32"
- --------C-0B---------------------------------
- INT 0B CP - CPU-generated (80286+) - SEGMENT NOT PRESENT
- Desc: generated when loading a segment register if the segment descriptor
- indicates that the segment is not currently in memory, unless the
- segment is an LDT (see INT 0A"CPU") or stack segment (see
- INT 0C"CPU") needed by a task switch
- Note: may be used to implement virtual memory by loading in segments as they
- are accessed, clearing the "not present" bit after loading
- SeeAlso: INT 0A"CPU",INT 0E"CPU"
- --------h-0B---------------------------------
- INT 0B - HP 95LX - LOW-LEVEL KEYBOARD HANDLER
- Desc: this is the lowest-level keyboard handler on an HP 95LX palmtop
- Note: debounces key, places the keycode in I/O register 60h, and calls INT 09
- SeeAlso: INT 09,INT 0D"HP 95LX",INT 15/AX=4DD4h
- --------H-0C---------------------------------
- INT 0C C - IRQ4 - SERIAL COMMUNICATIONS (COM1)
- Desc: automatically asserted by the UART when COM1 needs attention, if the
- UART has been programmed to generate interrupts
- BUG: this vector is modified but not restored by Direct Access v4.0, and
- may be left dangling by other programs written with the same version
- of compiled BASIC
- Notes: on many PC's, COM3 shares this interrupt
- may be masked by setting bit 4 on I/O port 21h
- SeeAlso: INT 0B"COM2",INT 54"DESQview",INT 5C"DoubleDOS",INT 7C"GO32"
- --------C-0C---------------------------------
- INT 0C C - CPU-generated (80286+) - STACK FAULT
- Desc: this interrupt is generated in protected mode on a stack overflow or
- underflow, or if an inter-level transition or task switch references
- a stack segment marked "not present"; it is generated in real mode
- on accessing a word operand at SS:FFFFh
- Note: the 80286 will shut down in real mode if SP=1 before a push. On the
- PC AT and compatibles, external circuitry generates a reset on
- shutdown.
- SeeAlso: INT 0B"CPU",INT 0D"CPU"
- --------I-0C---------------------------------
- INT 0C - IBM SYSTEM 36/38 WORKSTATION EMULATION - API POINTER
- Desc: the IBM System 36/38 emulator may be invoked through a private API,
- whose entry point address (see #00007) is offset 100h in the segment
- pointed at by this vector
- (Table 00007)
- Call the System 36/38 emulator API entry point with:
- AH = function
- 03h update screen
- 05h select next session
- AL = session number (00h-03h)
- Return: AL = session type code
- 00h not active
- 01h display session
- 02h printer session
- FEh invalid session number
- DS = requested session's data segment (0 if not active)
- (see #00008)
- Return: ???
- Format of System 36/38 emulator's data area:
- Offset Size Description (Table 00008)
- 13Eh BYTE bit flags for status line indicators turned on since this byte
- last zerod
- 13Fh BYTE bit flags for status line indicators turned off since this
- byte last set to FFh
- 140h WORD offset of EBCDIC to ASCII translation
- 146h WORD offset of EBCDIC screen buffer
- 148h WORD offset of EC (engineering change) level signature
- 150h BYTE "KEYI"
- 151h BYTE 5250 key scan code to be sent to remote
- 15Bh BYTE "SYSAV"
- 15Dh BYTE 5250 cursor column
- 15Eh BYTE 5250 cursor row
- 167h BYTE "DVCTAD"
- 178h BYTE "FLAGS"
- 184h BYTE "SESSNOAD"
- 193h BYTE "STNAD"
- 198h BYTE "NSDS"
- Note: offsets are from the interrupt handler's segment
- --------H-0D---------------------------------
- INT 0D C - IRQ5 - FIXED DISK (PC,XT), LPT2 (AT), reserved (PS/2)
- Notes: under DESQview, only the INT 15h vector and BASIC segment address (the
- word at 0000h:0510h) may be assumed to be valid for the handler's
- process
- the Tandy 1000, 1000A, and 1000HD use IRQ2 for the hard disk; the
- 1000EX, HX, RLX, RLX-HD, RLX-B, RLX-HD-B use IRQ5 instead; the
- 1000RL, RL-HD, SL, SL/2, TL, TL/2, and TL/3 are jumper-selectable
- for either IRQ2 or IRQ5 (default IRQ5); the 1000SX and TX are
- DIP-switch selectable for IRQ2 or IRQ5 (default IRQ2); the RSX and
- RSX-HD use IRQ14. Tandy systems which use IRQ2 for the hard disk
- interrupt use IRQ5 for vertical retrace.
- may be masked by setting bit 5 on I/O port 21h
- SeeAlso: INT 0E"IRQ6",INT 0F"IRQ7",INT 55"DESQview",INT 5D"DoubleDOS"
- SeeAlso: INT 7D"GO32"
- --------H-0D---------------------------------
- INT 0D C - IRQ5 - Tandy 1000 60 Hz RAM REFRESH
- Desc: used to ensure that the dynamic RAM retains its contents in earlier
- 1000-series models; later models use normal DMA for RAM refresh
- (some early models have no DMA unless it is added via an expansion
- card)
- SeeAlso: INT 55
- --------h-0D---------------------------------
- INT 0D - HP 95LX - INFRARED INTERRUPT
- Desc: this interrupt is used to perform communications over the infrared
- data link
- SeeAlso: INT 0B"HP 95LX",INT 0E"HP 95LX",INT 15/AX=4DD4h
- --------C-0D---------------------------------
- INT 0D C - CPU-generated (80286+) - GENERAL PROTECTION VIOLATION
- Desc: the CPU generates this interrupt when it detects a protection violation
- which does not fit under any other category having a separate
- interrupt
- Notes: called in real mode when
- an instruction accesses a memory operand extending beyond offset
- FFFFh (i.e. WORD at FFFFh or DWORD at FFFDh or higher) in segment
- CS, DS, ES, FG, or GS
- a PUSH MEM or POP MEM instruction contains an invalid bit encoding
- in the second byte
- an instruction exceeds the maximum length allowed (10 bytes for
- 80286, 15 bytes for 80386/80486)
- an instruction wraps from offset FFFFh to offset 0000h
- called in protected mode on protection violations not covered by INT 06
- through INT 0C, including
- segment limit violations
- write to read-only segments
- accesses using null DS or ES selectors
- accesses to segments with privilege greater than CPL
- wrong descriptor type
- called on 80486 protected-mode floating-point protection fault
- SeeAlso: INT 09"80486",INT 0C"STACK"
- --------H-0E---------------------------------
- INT 0E C - IRQ6 - DISKETTE CONTROLLER
- Desc: this interrupt is generated by the floppy disk controller on
- completion of an operation
- Notes: default handler is at F000h:EF57h in IBM PC and 100%-compatible BIOSes
- may be masked by setting bit 6 on I/O port 21h
- SeeAlso: INT 0D"IRQ5",INT 56"DESQview",INT 5E"DoubleDOS",INT 7E"GO32"
- --------C-0E---------------------------------
- INT 0E C - CPU-generated (80386+ native mode) - PAGE FAULT
- Desc: this interrupt is generated in protected and virtual-86 modes on
- attempting to access a 4K memory page whose page table entry has
- the "present" bit cleared
- Notes: used to implement virtual memory--when the page fault occurs, the
- operating system can load the appropriate page from disk
- a protected-mode program written in the Flat memory model will often
- generate this interrupt (typically reported as an Exception #14 or
- Exception 0E with a register dump) when dereferencing an
- uninitialized or corrupted pointer
- SeeAlso: INT 0B"CPU"
- --------h-0E---------------------------------
- INT 0E C - HP 95LX - EXTERNAL CARD INTERRUPT
- SeeAlso: INT 0D"HP 95LX",INT 0F"HP 95LX",INT 15/AX=4DD4h
- --------H-0F---------------------------------
- INT 0F C - IRQ7 - PARALLEL PRINTER
- Desc: this interrupt is generated by the LPT1 printer adapter when the
- printer becomes ready
- Notes: most printer adapters do not reliably generate this interrupt
- the 8259 interrupt controller generates an interrupt corresponding to
- IRQ7 when an error condition occurs
- SeeAlso: INT 0D"IRQ5",INT 57"DESQview",INT 5F"DoubleDOS",INT 7F"GO32"
- SeeAlso: MEM 0040h:006Bh
- --------h-0F---------------------------------
- INT 0F C - HP 95LX - REAL-TIME CLOCK
- SeeAlso: INT 0E"HP 95LX",INT 15/AX=4DD4h,INT 70"IRQ8"
- --------C-10---------------------------------
- INT 10 C - CPU-generated (80286+) - COPROCESSOR ERROR
- Desc: this interrupt is generated by the CPU when the -ERROR pin is asserted
- by the coprocessor
- Note: AT's and clones usually wire the coprocessor to use IRQ13, but not all
- get it right
- SeeAlso: INT 09"hardware",INT 75
- --------V-1000-------------------------------
- INT 10 - VIDEO - SET VIDEO MODE
- AH = 00h
- AL = desired video mode (see #00010)
- Return: AL = video mode flag (Phoenix, AMI BIOS)
- 20h mode > 7
- 30h modes 0-5 and 7
- 3Fh mode 6
- AL = CRT controller mode byte (Phoenix 386 BIOS v1.10)
- Desc: specify the display mode for the currently active display adapter
- InstallCheck: for Ahead adapters, the signature "AHEAD" at C000h:0025h
- for Paradise adapters, the signature "VGA=" at C000h:007Dh
- for Oak Tech OTI-037/057/067/077 chipsets, the signature "OAK VGA" at
- C000h:0008h
- for ATI adapters, the signature "761295520" at C000h:0031h; the byte
- at C000h:0043h indicates the chipset revision:
- 31h for 18800
- 32h for 18800-1
- 33h for 18800-2
- 34h for 18800-4
- 35h for 18800-5
- 62h for 68800AX (Mach32) (see also #00732)
- the two bytes at C000h:0040h indicate the adapter type
- "22" EGA Wonder
- "31" VGA Wonder
- "32" EGA Wonder800+
- the byte at C000h:0042h contains feature flags
- bit 1: mouse port present
- bit 4: programmable video clock
- the byte at C000h:0044h contains additional feature flags if chipset
- byte > 30h (see #00009)
- for Genoa video adapters, the signature 77h XXh 99h 66h at C000h:NNNNh,
- where NNNNh is stored at C000h:0037h and XXh is
- 00h for Genoa 6200/6300
- 11h for Genoa 6400/6600
- 22h for Genoa 6100
- 33h for Genoa 5100/5200
- 55h for Genoa 5300/5400
- for SuperEGA BIOS v2.41+, C000h:0057h contains the product level
- for Genoa SuperEGA BIOS v3.0+, C000h:0070h contains the signature
- "EXTMODE", indicating support for extended modes
- Notes: IBM standard modes do not clear the screen if the high bit of AL is set
- (EGA or higher only)
- the Tseng ET4000 chipset is used by the Orchid Prodesigner II, Diamond
- SpeedSTAR VGA, Groundhog Graphics Shadow VGA, Boca Super X VGA,
- Everex EV-673, etc.
- SeeAlso: AX=0070h,AX=007Eh,AX=10E0h,AX=10F0h,AH=40h,AX=6F05h,AH=FFh"GO32"
- SeeAlso: INT 33/AX=0028h,INT 5F/AH=00h,INT 62/AX=0001h,MEM 0040h:0049h
- Index: installation check;Tseng ET4000|installation check;Ahead video cards
- Index: installation check;Oak Technologies|installation check;ATI video cards
- Index: installation check;Paradise video|installation check;Genoa video cards
- Bitfields for ATI additional feature flags:
- Bit(s) Description (Table 00009)
- 0 70 Hz non-interlaced display
- 1 Korean (double-byte) characters
- 2 45 MHz memory clock rather than 40 MHz
- 3 zero wait states
- 4 paged ROMs
- 6 no 8514/A monitor support
- 7 HiColor DAC
- (Table 00010)
- Values for video mode:
- text/ text pixel pixel colors disply scrn system
- grph resol box resolution pages addr
- 00h = T 40x25 8x8 320x200 16gray 8 B800 CGA,PCjr,Tandy
- = T 40x25 8x14 320x350 16gray 8 B800 EGA
- = T 40x25 8x16 320x400 16 8 B800 MCGA
- = T 40x25 9x16 360x400 16 8 B800 VGA
- 01h = T 40x25 8x8 320x200 16 8 B800 CGA,PCjr,Tandy
- = T 40x25 8x14 320x350 16 8 B800 EGA
- = T 40x25 8x16 320x400 16 8 B800 MCGA
- = T 40x25 9x16 360x400 16 8 B800 VGA
- 02h = T 80x25 8x8 640x200 16gray 4 B800 CGA,PCjr,Tandy
- = T 80x25 8x14 640x350 16gray 8 B800 EGA
- = T 80x25 8x16 640x400 16 8 B800 MCGA
- = T 80x25 9x16 720x400 16 8 B800 VGA
- 03h = T 80x25 8x8 640x200 16 4 B800 CGA,PCjr,Tandy
- = T 80x25 8x14 640x350 16/64 8 B800 EGA
- = T 80x25 8x16 640x400 16 8 B800 MCGA
- = T 80x25 9x16 720x400 16 8 B800 VGA
- = T 80x43 8x8 640x350 16 4 B800 EGA,VGA [17]
- = T 80x50 8x8 640x400 16 4 B800 VGA [17]
- 04h = G 40x25 8x8 320x200 4 . B800 CGA,PCjr,EGA,MCGA,VGA
- 05h = G 40x25 8x8 320x200 4gray . B800 CGA,PCjr,EGA
- = G 40x25 8x8 320x200 4 . B800 MCGA,VGA
- 06h = G 80x25 8x8 640x200 2 . B800 CGA,PCjr,EGA,MCGA,VGA
- = G 80x25 . . mono . B000 HERCULES.COM on HGC [14]
- 07h = T 80x25 9x14 720x350 mono var B000 MDA,Hercules,EGA
- = T 80x25 9x16 720x400 mono . B000 VGA
- 08h = T 132x25 8x8 1056x200 16 . B800 ATI EGA/VGA Wonder [2]
- = T 132x25 8x8 1056x200 mono . B000 ATI EGA/VGA Wonder [2]
- = G 20x25 8x8 160x200 16 . . PCjr, Tandy 1000
- = G 80x25 8x16 640x400 color . . Tandy 2000
- = G 90x43 8x8 720x348 mono . B000 Hercules + MSHERC.COM
- = G 90x45 8x8 720x360 mono . B000 Hercules + HERKULES [11]
- = G 90x29 8x12 720x348 mono . . Hercules + HERCBIOS [15]
- 09h = G 40x25 8x8 320x200 16 . . PCjr, Tandy 1000
- = G 80x25 8x16 640x400 mono . . Tandy 2000
- = G 90x43 8x8 720x348 mono . . Hercules + HERCBIOS [15]
- 0Ah = G 80x25 8x8 640x200 4 . . PCjr, Tandy 1000
- 0Bh = reserved (EGA BIOS internal use)
- = G 80x25 8x8 640x200 16 . . Tandy 1000 SL/TL [13]
- 0Ch = reserved (EGA BIOS internal use)
- 0Dh = G 40x25 8x8 320x200 16 8 A000 EGA,VGA
- 0Eh = G 80x25 8x8 640x200 16 4 A000 EGA,VGA
- 0Fh = G 80x25 8x14 640x350 mono 2 A000 EGA,VGA
- 10h = G 80x25 8x14 640x350 4 2 A000 64k EGA
- = G . . 640x350 16 . A000 256k EGA,VGA
- 11h = G 80x30 8x16 640x480 mono . A000 VGA,MCGA,ATI EGA,ATI VIP
- 12h = G 80x30 8x16 640x480 16/256K . A000 VGA,ATI VIP
- = G 80x30 8x16 640x480 16/64 . A000 ATI EGA Wonder
- = G . . 640x480 16 . . UltraVision+256K EGA
- 13h = G 40x25 8x8 320x200 256/256K . A000 VGA,MCGA,ATI VIP
- 14h = T 132x25 Nx16 . 16 . B800 XGA, IBM Enhanced VGA [3]
- = T 132x25 8x16 1056x400 16/256K . . Cirrus CL-GD5420/5422/5426
- = G 80x25 8x8 640x200 . . . Lava Chrome II EGA
- = G . . 640x400 16 . . Tecmar VGA/AD
- 15h = G 80x25 8x14 640x350 . . . Lava Chrome II EGA
- 16h = G 80x25 8x14 640x350 . . . Lava Chrome II EGA
- = G . . 800x600 16 . . Tecmar VGA/AD
- 17h = T 132x25 . . . . . Tecmar VGA/AD
- = T 80x43 8x8 640x348 16 4 B800 Tseng ET4000 BIOS [10]
- = G 80x34 8x14 640x480 . . . Lava Chrome II EGA
- 18h = T 80x30 9x16 720x480 16 1 A000 Realtek RTVGA [12]
- = T 132x25 . . mono . B000 Cirrus 5320 chipset
- = T 132x44 8x8 1056x352 mono . B000 Tseng Labs EVA
- = T 132x44 9x8 1188x352 4gray 2 B000 Tseng ET3000 chipset
- = T 132x44 8x8 1056x352 16/256 2 B000 Tseng ET4000 chipset
- = G 80x34 8x14 640x480 . . . Lava Chrome II EGA
- = G 1024x768 16 . . Tecmar VGA/AD
- 19h = T 80x43 9x11 720x473 16 1 A000 Realtek RTVGA [12]
- = T 132x25 8x14 1056x350 mono . B000 Tseng Labs EVA
- = T 132x25 9x14 1188x350 4gray 4 B000 Tseng ET3000 chipset
- = T 132x25 8x14 1056x350 16/256 4 B000 Tseng ET4000 chipset
- = T 132x34 . . mono . B000 Cirrus 5320 chipset
- 1Ah = T 80x60 9x8 720x480 16 1 A000 Realtek RTVGA [12]
- = T 132x28 8x13 1056x364 mono . B000 Tseng Labs EVA
- = T 132x28 9x13 1188x364 4gray 4 B000 Tseng ET3000 chipset
- = T 132x28 8x13 1056x364 16/256 4 B000 Tseng ET4000 chipset
- = T 132x44 . . mono . B000 Cirrus 5320 chipset
- = G . . 640x350 256 . . Tecmar VGA/AD
- 1Bh = T 132x25 9x14 1188x350 16 1 A000 Realtek RTVGA [12]
- = G . . 640x400 256 . . Tecmar VGA/AD
- 1Ch = T 132x25 . . . . . Cirrus 5320 chipset
- = T 132x30 9x16 1188x480 16 1 A000 Realtek RTVGA [12]
- = G . . 640x480 256 . . Tecmar VGA/AD
- 1Dh = T 132x43 . . . . . Cirrus 5320 chipset
- = T 132x43 9x11 1188x473 16 1 A000 Realtek RTVGA [12]
- = G . . 800x600 256 . . Tecmar VGA/AD
- 1Eh = T 132x44 . . . . . Cirrus 5320 chipset
- = T 132x60 9x8 1188x480 16 1 A000 Realtek RTVGA [12]
- 1Fh = G 100x75 8x8 800x600 16 1 A000 Realtek RTVGA
- 20h = T 132x25 . . 16 . . Avance Logic AL2101
- = G 40x16 . 240x128 mono . B000 HP 95LX/100LX/200LX
- = G 80x30 8x16 640x480 16 . . C&T 64310/65530 BIOS
- = G 120x45 8x16 960x720 16 1 A000 Realtek RTVGA
- 21h = T 80x25 . . mono . B000 HP 200LX
- = T 132x30 . . 16 . . Avance Logic AL2101
- = T 132x44 9x9 1188x396 16/256K . B800 WD90C
- = T 132x44 9x9 1188x396 16 . B800 Diamond Speedstar 24X
- = T 132x60 . . 16 2 B800 Tseng ET4000 chipset [10]
- = G 80x43 8x8 720x348 mono . B000 DESQview 2.x+Hercules [4]
- = G 128x48 8x16 1024x768 16 1 A000 Realtek RTVGA [12]
- 22h = T 132x43 . . . . . Allstar Peacock (VGA)
- = T 132x43 . . 16 . . Avance Logic AL2101
- = T 132x44 8x8 1056x352 . . B800 Tseng Labs EVA
- = T 132x44 9x8 1188x352 16/256K 2 B800 Tseng ET3000 chipset
- = T 132x44 8x8 1056x352 16/256K 2 B800 Tseng ET4000 chipset
- = T 132x44 8x8 1056x352 . . . Ahead Systems EGA2001
- = T 132x44 8x8 1056x352 16 2 B800 Ahead B
- = T 132x44 8x9 1056x398 16 . . STB Lightspeed ET4000/W32P
- = T 132x44 . . 16 . . Orchid Prodesigner VGA
- = G 80x43 8x8 720x348 mono . B800 DESQview 2.x+Hercules [4]
- = G 96x64 8x16 768x1024 16 1 A000 Realtek RTVGA
- = G 100x37 8x16 800x600 16 . . C&T 64310/65530 BIOS
- 23h = T 132x25 6x14 792x350 . . B800 Tseng Labs EVA
- = T 132x25 9x14 1188x350 16/256K 4 B800 Tseng ET3000 chipset
- = T 132x25 8x14 1056x350 16/256 4 B800 Tseng ET4000 chipset
- = T 132x25 8x14 1056x350 . . . Ahead Systems EGA2001
- = T 132x25 8x14 1056x350 16 4 B800 Ahead B
- = T 132x25 8x8 1056x200 16 . B800 ATI EGA Wonder,ATI VIP
- = T 132x25 . . . . . Cirrus 5320 chipset
- = T 132x28 . . . . . Allstar Peacock (VGA)
- = T 132x28 . . 16 . . Orchid Prodesigner VGA
- = T 132x60 . . 16 . . Avance Logic AL2101
- = G 128x48 8x16 1024x768 4 1 A000 Realtek RTVGA
- 24h = T 80x30 . . 16 . . Avance Logic AL2101
- = T 132x25 . . . . . Allstar Peacock (VGA)
- = T 132x25 . . 16 . . Orchid Prodesigner VGA
- = T 132x28 6x13 792x364 . . B800 Tseng Labs EVA
- = T 132x28 9x13 1188x364 16/256K 4 B800 Tseng ET3000 chipset
- = T 132x28 8x12 1056x336 16 1 B800 Ahead B
- = T 132x28 8x13 1056x364 16/256K 4 B800 Tseng ET4000 chipset
- = T 132x28 8x14 1056x392 16 . . STB Lightspeed ET4000/W32P
- = T 132x28 . . . . . Cirrus 5320 chipset
- = G 64x32 8x16 512x512 256 1 A000 Realtek RTVGA
- = G 128x48 8x16 1024x768 16 . . C&T 64310/65530 BIOS
- 25h = T 80x43 . . 16 . . Avance Logic AL2101
- = G 80x60 8x8 640x480 . . A000 Tseng Labs EVA
- = G 80x60 8x8 640x480 16/256K 1 A000 Tseng ET3000/4000 chipset
- = G . . 640x480 16 . . VEGA VGA
- = G 80x60 8x8 640x480 16 . A000 Orchid Prodesigner VGA
- = G 80x60 8x8 640x480 16 1 A000 Ahead B (same as 26h)
- = G . . 640x480 16 . . NEC GB-1
- = G . . 640x480 16 . . Cirrus 5320 chipset
- = G . . 640x400 256 . . Realtek RTVGA
- 26h = T 80x60 8x8 640x480 . . . Tseng Labs EVA
- = T 80x60 8x8 640x480 16/256K 3 B800 Tseng ET3000/4000 chipset
- = T 80x60 . . . . . Allstar Peacock (VGA)
- = T 80x60 . . 16 . . Orchid ProDesigner VGA
- = T 80x60 . . 16 . . Avance Logic AL2101
- = G 80x60 8x8 640x480 . . . Ahead Systems EGA2001
- = G 80x60 8x8 640x480 16 1 A000 Ahead B (same as 25h)
- = G . . 640x480 256 . . Realtek RTVGA
- 27h = T 132x25 8x8 1056x200 mono . B000 ATI EGA Wonder,ATI VIP
- = G . . 720x512 16 . . VEGA VGA
- = G . . 720x512 16 . . Genoa
- = G 100x75 8x8 800x600 256 1 A000 Realtek RTVGA [12]
- = G . . 960x720 16 . . Avance Logic AL2101
- 28h = T ???x??? . . . . . VEGA VGA
- = G . . 512x512 256 . . Avance Logic AL2101
- = G . . 1024x768 256 . . Realtek RTVGA (1meg)
- = G 160x64 8x16 1280x1024 16 . . Chips&Technologies 64310 [1]
- 29h = G . . 640x400 256 . . Avance Logic AL2101
- = G . . 800x600 16 . . VEGA VGA
- = G 100x37 8x16 800x600 16 . A000 Orchid
- = G . . 800x600 16 . A000 STB,Genoa,Sigma
- = G . . 800x600 16 . . Allstar Peacock (VGA)
- = G 100x37 8x16 800x600 16/256K 1 A000 Tseng ET3000/4000 chipset
- = G . . 800x600 ??? . . EIZO MDB10
- = G . . 800x600 16 . . Cirrus 5320 chipset
- = G NA . 800x600 16 . . Compaq QVision 1024/1280
- = G . . 1024x1024 256 . . Realtek RTVGA BIOS v3.C10
- 2Ah = T 100x40 . . . . . Allstar Peacock (VGA)
- = T 100x40 8x16 800x640 16 . . Orchid Prodesigner VGA
- = T 100x40 8x15 800x600 16/256K 4 B800 Tseng ET3000/4000 chipset
- = T 100x40 8x15 800x600 16 . . STB Lightspeed ET4000/W32P
- = G . . 640x480 256 . . Avance Logic AL2101
- = G . . 1280x1024 16 . . Realtek RTVGA
- 2Bh = G . . 800x600 16 . . Avance Logic AL2101
- 2Ch = G . . 800x600 256 . . Avance Logic AL2101
- 2Dh = G . . 640x350 256 . . VEGA VGA
- = G . . 640x350 256/256K . A000 Orchid, Genoa, STB
- = G 80x25 8x14 640x350 256/256K 1 A000 Tseng ET3000/4000 chipset
- = G . . 640x350 256 . . Cirrus 5320 chipset
- = G 80x25 8x14 640x350 256 . . STB Lightspeed ET4000/W32P
- = G . . 768x1024 16 . . Avance Logic AL2101
- 2Eh = G . . 640x480 256 . . VEGA VGA
- = G 80x30 8x16 640x480 256/256K . A000 Orchid
- = G . . 640x480 256/256K . A000 STB,Genoa,Sigma
- = G 80x30 8x16 640x480 256/256K 1 A000 Tseng ET3000/4000 chipset
- = G . . 640x480 256/256K . . Compaq QVision 1024/1280
- = G . . 768x1024 256 . . Avance Logic AL2101
- 2Fh = T 160x50 8x8 1280x400 16 4 B800 Ahead B (Wizard/3270)
- = G . . 720x512 256 . . VEGA VGA
- = G . . 720x512 256 . . Genoa
- = G 80x25 8x16 640x400 256/256K 1 A000 Tseng ET4000 chipset
- = G . . 1024x768 4 . . Avance Logic AL2101
- 30h = G 80x30 8x16 640x480 256 . . C&T 64310/65530 BIOS
- = G . . . . . B800 AT&T 6300
- = G . . 720x350 2 . . 3270 PC
- = G . . 800x600 256 . . VEGA VGA
- = G 100x37 8x16 800x600 256/256K . A000 Orchid
- = G . . 800x600 256/256K . A000 STB,Genoa,Sigma
- = G . . 800x600 256 . . Cardinal
- = G 100x37 8x16 800x600 256/256K 1 A000 Tseng ET3000/4000 chipset
- = G . . 1024x768 16 . . Avance Logic AL2101
- 31h = G . . 1024x768 256 . . Avance Logic AL2101
- 32h = T 80x34 8x10 . 16 4 B800 Ahead B (Wizard/3270)
- = G . . 640x480 256 . . Compaq QVision 1024/1280
- = G 100x37 8x16 800x600 256 . . C&T 64310/65530 BIOS
- 33h = T 132x44 8x8 . 16 . B800 ATI EGA Wonder,ATI VIP
- = T 80x34 8x8 . 16 4 B800 Ahead B (Wizard/3270)
- 34h = T 80x66 8x8 . 16 4 B800 Ahead B (Wizard/3270)
- = G . . 800x600 256 . . Compaq QVision 1024/1280
- = G 128x48 8x16 1024x768 256 . . Chips&Technologies 64310
- 36h = G . . 960x720 16 . . VEGA VGA, STB
- = G . . 960x720 16 . A000 Tseng ET3000 only
- = G . . 1280x1024 16 . . Avance Logic AL2101
- 37h = T 132x44 8x8 . mono . B800 ATI EGA Wonder,ATI VIP
- = G . . 1024x768 16 . . VEGA VGA
- = G 128x48 8x16 1024x768 16 . A000 Orchid
- = G . . 1024x768 16 . A000 STB,Genoa,Sigma
- = G . . 1024x768 16 . . Definicon
- = G 128x48 8x16 1024x768 16 1 A000 Tseng ET3000/4000 chipset
- = G . . 1024x768 16 . . Compaq QVision 1024/1280
- = G . . 1280x1024 256 . . Avance Logic AL2101
- 38h = G . . 1024x768 256 . . STB VGA/EM-16 Plus (1MB)
- = G 128x48 8x16 1024x768 256/256K 1 A000 Tseng ET4000 chipset
- = G . . 1024x768 256 . . Orchid ProDesigner II
- = G . . 1024x768 256 . . Compaq QVision 1024/1280
- = G 160x64 8x16 1280x1024 256 . . Chips&Technologies 64310 [1]
- 39h = G . . 1280x1024 16 . . Compaq QVision 1280
- 3Ah = G . . 1280x1024 256 . . Compaq QVision 1280
- 3Bh = G . . 512x480 256 . . Compaq QVision 1024/1280
- 3Ch = G . . 640x400 64K . . Compaq QVision 1024/1280
- 3Dh = G . . 1280x1024 16 . . Definicon
- = G 128x64 8x16 1280x1024 16 1 A000 Tseng ET4000 v3.00 [1,7]
- 3Eh = G . . 1280x961 16 . . Definicon
- = G . . 640x480 64K . . Compaq QVision 1024/1280
- 3Fh = G . . 1280x1024 256 . . Hercules ??? (ET4000W32)
- = G . . 800x600 64K . . Compaq QVision 1024/1280
- 40h = T 80x43 . . . . . VEGA VGA, Tecmar VGA/AD
- = T 80x43 . . . . . Video7 V-RAM VGA
- = T 80x43 . . . . . Tatung VGA
- = T 100x30 . . 16 . . MORSE VGA
- = T 100x30 . . . . . Cirrus 510/520 chipset
- = T 80x25 . 720x350 mono . . Genoa SuperEGA BIOS 3.0+
- = G . . 320x200 64K . . Avance Logic AL2101
- = G 80x25 8x16 640x400 2 1 B800 AT&T 6300, AT&T VDC600
- = G 80x25 8x16 640x400 2 1 B800 Olivetti Quaderno
- = G 80x25 8x16 640x400 2 1 B800 Compaq Portable
- = G 80x30 8x16 640x480 32K . . Chips&Technologies 64310
- = G . . 1024x768 64K . . Compaq QVision 1280
- 41h = T 132x25 . . . . . VEGA VGA
- = T 132x25 . . . . . Tatung VGA
- = T 132x25 . . . . . Video7 V-RAM VGA
- = T 100x50 . . 16 . . MORSE VGA
- = T 100x50 . . . . . Cirrus 510/520 chipset
- = T 80x34 9x14 720x476 16/256K . B800 WD90C
- = T 80x34 9x14 . 16 . B800 Diamond Speedstar 24X
- = G . . 512x512 64K . . Avance Logic AL2101
- = G . . 640x200 16 1 . AT&T 6300
- = G 80x30 8x16 640x480 64K . . Chips&Technologies 64310
- = G 80x25 . 720x348 mono . B000 Genoa SuperEGA BIOS 3.0+
- 42h = T 132x43 . . . . . VEGA VGA
- = T 132x43 . . . . . Tatung VGA
- = T 132x43 . . . . . Video7 V-RAM VGA
- = T 80x34 9x10 . 4 4 B800 Ahead B (Wizard/3270)
- = T 100x60 . . 16 . . MORSE VGA
- = T 100x60 . . . . . Cirrus 510/520 chipset
- = G 80x25 8x16 640x400 16 . . AT&T 6300, AT&T VDC600
- = G . . 640x400 64K . . Avance Logic AL2101
- = G 80x25 . 720x348 mono . B800 Genoa SuperEGA BIOS 3.0+
- = G 100x37 8x16 800x600 32K . . Chips&Technologies 64310
- 43h = T 80x60 . . . . . VEGA VGA
- = T 80x60 . . . . . Tatung VGA
- = T 80x60 . . . . . Video7 V-RAM VGA
- = T 80x45 9x8 . 4 4 B800 Ahead B (Wizard/3270)
- = T 100x75 . . 16 . . MORSE VGA
- = T 80x29 . 720x348 mono . . Genoa SuperEGA BIOS 3.0+
- = G . . 640x200 of 640x400 viewport AT&T 6300 (unsupported)
- = G . . 640x480 64K . . Avance Logic AL2101
- = G 100x37 8x16 800x600 64K . . Chips&Technologies 64310
- 44h = disable VDC and DEB output . AT&T 6300
- = T 100x60 . . . . . VEGA VGA
- = T 100x60 . . . . . Tatung VGA
- = T 100x60 . . . . . Video7 V-RAM VGA
- = T 80x32 . 720x352 mono . . Genoa SuperEGA BIOS 3.0+
- = G . . 800x600 64K . . Avance Logic AL2101
- 45h = T 132x28 . . . . . Tatung VGA
- = T 132x28 . . . . . Video7 V-RAM VGA
- = T 80x44 . 720x352 mono . . Genoa SuperEGA BIOS 3.0+
- 46h = T 132x25 8x14 . mono . . Genoa 6400
- = T 132x25 9x14 . mono . . Genoa SuperEGA BIOS 3.0+
- = G 100x40 8x15 800x600 2 . . AT&T VDC600
- 47h = T 132x29 8x12 . mono . . Genoa 6400
- = T 132x29 9x12 . mono . . Genoa SuperEGA BIOS 3.0+
- = T 132x28 9x16 1188x448 16/256K . B800 WD90C
- = T 132x28 9x16 . 16 . B800 Diamond Speedstar 24X
- = G 100x37 8x16 800x600 16 . . AT&T VDC600
- 48h = T 132x32 8x12 . mono . . Genoa 6400
- = T 132x32 9x11 . mono . . Genoa SuperEGA BIOS 3.0+
- = G 80x50 8x8 640x400 2 . B800 AT&T 6300, AT&T VDC600
- = G 80x50 8x8 640x400 2 . B800 Olivetti Quaderno
- 49h = T 132x44 8x8 . mono . . Genoa 6400
- = T 132x44 9x8 . mono . . Genoa SuperEGA BIOS 3.0+
- = G 80x30 8x16 640x480 . . . Lava Chrome II EGA
- = G 80x30 8x16 640x480 . . A000 Diamond Stealth64 Video 2xx1
- 4Bh = G 100x37 8x16 800x600 . . A000 Diamond Stealth64 Video 2xx1
- 4Dh = T 120x25 . . . . . VEGA VGA
- = G . . 512x480 16M . . Compaq QVision 1024/1280
- = G 128x48 8x16 1024x768 . . A000 Diamond Stealth64 Video 2xx1
- 4Eh = T 120x43 . . . . . VEGA VGA
- = T 80x60 8x8 . 16/256K . B800 Oak OTI-067/OTI-077 [8]
- = G . . 640x400 16M . . Compaq QVision 1024/1280
- = G 144x54 8x16 1152x864 . . A000 Diamond Stealth64 Video 2xx1
- 4Fh = T 132x25 . . . . . VEGA VGA
- = T 132x60 . . . . . some Oak Tech VGA [8]
- = G . . 640x480 16M . . Compaq QVision 1280
- 50h = T 80x30 8x16 . 16/256K . B800 Trident TVGA 8800/8900
- = T 80x34 . . . . . Lava Chrome II EGA
- = T 80x43 . . mono . . VEGA VGA
- = T 132x25 9x14 . mono . . Ahead Systems EGA2001
- = T 132x25 9x14 . 4 4 B800 Ahead B
- = T 132x25 8x14 . 16 8 B800 OAK Technologies VGA-16
- = T 132x25 8x14 . 16/256K . B800 Oak OTI-037/067/077 [8]
- = T 132x25 8x14 1056x350 16 8 B800 UM587 chipset
- = T 132x30 . . 16 . . MORSE VGA
- = T 132x30 . . . . . Cirrus 510/520 chipset
- = G 80x30 8x16 640x480 16 . . Paradise EGA-480
- = G 80x30 8x16 640x480 16 . . NEL Electronics BIOS
- = G 80x30 8x16 640x480 16M . . Chips&Technologies 64310
- = G . . 640x480 mono??? . . Taxan 565 EGA
- = G 40x25 8x8 320x200 . . . Genoa SuperEGA BIOS 3.0+
- 51h = T 80x30 8x16 . . . . Paradise EGA-480
- = T 80x30 9x16 . . . . NEL Electronics BIOS
- = T 80x30 . . . . . Lava Chrome II EGA
- = T 80x43 8x11 . 16/256K . B800 Trident TVGA 8800/8900
- = T 132x25 . . mono . . VEGA VGA
- = T 132x28 9x12 . 4 4 B800 Ahead B
- = T 132x43 8x8 . 16 5 B800 OAK Technologies VGA-16
- = T 132x43 8x8 . 16/256K . B800 Oak OTI-037/067/077
- = T 132x43 8x8 1056x344 16 5 B800 UM587 chipset
- = T 132x50 . . 16 . . MORSE VGA
- = T 132x50 . . . . . Cirrus 510/520 chipset
- = G 80x34 8x14 640x480 16 . . ATI EGA Wonder
- = G 80x25 8x8 640x200 . . . Genoa SuperEGA BIOS 3.0+
- 52h = T 80x60 . . . . . Lava Chrome II EGA
- = T 80x60 8x8 . 16/256K . B800 Trident TVGA 8800/8900
- = T 132x43 . . mono . . VEGA VGA
- = T 132x44 9x8 . mono . . Ahead Systems EGA2001
- = T 132x44 9x8 . 4 2 B800 Ahead B
- = T 132x60 . . 16 . . MORSE VGA
- = T 132x60 . . . . . Cirrus 510/520 chipset
- = G 80x25 8x19 640x480 16 1 A000 AX VGA (Kanji&superimpose)
- = G 94x29 8x14 752x410 16 . . ATI EGA Wonder
- = G 100x75 8x8 800x600 16 1 A000 OAK Technologies VGA-16
- = G 100x75 8x8 800x600 16 . A000 Oak OTI-037 chipset [8]
- = G 100x37 8x16 800x600 16 . A000 Oak OTI-067/077 chips [8]
- = G 100x75 8x8 800x600 16 . A000 UM587 chipset
- = G 128x30 8x16 1024x480 16 . . NEL Electronics BIOS
- 53h = T 80x25 8x16 . . . . NEL Electronics BIOS
- = T 80x60 . . 16 . . MORSE VGA
- = T 80x60 . . . . . Cirrus 510/520 chipset
- = T 132x25 8x14 . 16/256K . B800 Trident TVGA 8800/8900
- = T 132x43 . . . . . Lava Chrome II EGA
- = G 80x25 8x19 640x480 16 1 A000 AX VGA (Kanji, no superimp.)
- = G . . 640x480 256 . . Oak VGA
- = G 80x30 8x16 640x480 256 . A000 Oak OTI-067/OTI-077 [8]
- = G 100x40 8x14 800x560 16 . . ATI EGA Wonder,ATI VIP
- = G . . . . . . AX PC
- 54h = T 132x25 . . . . . Lava Chrome II EGA
- = T 132x30 8x16 . 16/256K . B800 Trident TVGA 8800/8900
- = T 132x43 8x8 . . . . Paradise EGA-480
- = T 132x43 8x8 . . . . NEL Electronics BIOS
- = T 132x43 7x9 . 16/256K . B800 Paradise VGA
- = T 132x43 8x9 . 16/256K . B800 Paradise VGA on multisync
- = T 132x43 . . . . . Taxan 565 EGA
- = T 132x43 . . . . . AST VGA Plus
- = T 132x43 . . . . . Hewlett-Packard D1180A
- = T 132x43 7x9 . 16 . . AT&T VDC600
- = T 132x43 9x9 1188x387 16/256K . B800 WD90C
- = T 132x43 9x9 1188x387 16/256K . B800 Diamond Speedstar 24X
- = T 132x43 9x9 1188x387 16/256K . B800 Diamond Stealth 24
- = T 132x43 8x8 . . . B800 Diamond Stealth64 Video 2xx1
- = T 132x43 8x8 1056x350 16/256K . . Cirrus CL-GD5420/5422/5426
- = T 132x50 8x8 . 16 . A000 NCR 77C22 [9]
- = G 100x42 8x14 800x600 16 . A000 ATI EGA Wonder, VGA Wonder
- = G 100x42 8x14 800x600 16 . A000 ATI Ultra 8514A, ATI XL
- = G . . 800x600 256 . A000 Oak VGA
- = G 100x37 8x16 800x600 256 . A000 Oak OTI-067/077 chips [8]
- 55h = T 80x66 8x8 . 16/256K . A000 ATI VIP
- = T 132x25 8x14 . . . . Paradise EGA-480
- = T 132x25 8x14 . . . . NEL Electronics BIOS
- = T 132x25 7x16 . 16/256K . B800 Paradise VGA
- = T 132x25 8x16 . 16/256K . B800 Paradise VGA on multisync
- = T 132x25 . . . . . Taxan 565 EGA
- = T 132x25 . . . . . AST VGA Plus
- = T 132x25 . . . . . Hewlett-Packard D1180A
- = T 132x25 7x16 . 16 . . AT&T VDC600
- = T 132x25 8x16 . 16 . A000 NCR 77C22 [9]
- = T 132x25 9x16 1188x400 16/256K . B800 WD90C
- = T 132x25 9x16 1188x400 16/256K . B800 Diamond Speedstar 24X
- = T 132x25 9x16 1188x400 16/256K . B800 Diamond Stealth 24
- = T 132x25 8x16 . . . B800 Diamond Stealth64 Video 2xx1
- = T 132x25 8x14 1056x350 16/256K . . Cirrus CL-GD5420/5422/5426
- = T 132x43 8x11 . 16/256K . B800 Trident TVGA 8800/8900
- = G 94x29 8x14 752x410 . . . Lava Chrome II EGA
- = G 128x48 8x16 1024x768 16/256K . A000 ATI VGA Wonder v4+ [5]
- = G . . 1024x768 16/256K . . ATI VGA Wonder Plus
- = G . . 1024x768 16/256K . . ATI Ultra 8514A,ATI XL
- = G 128x48 8x16 1024x768 4 . A000 Oak OTI-067/077 chips [8]
- 56h = T 132x43 8x8 . 3??? 2 B000 NSI Smart EGA+
- = T 132x43 7x9 . 4 . B000 Paradise VGA
- = T 132x43 8x9 . 4 . B000 Paradise VGA on multisync
- = T 132x43 . . mono . . Taxan 565 EGA
- = T 132x43 7x9 . 2 . . AT&T VDC600
- = T 132x43 9x8 . . . . NEL Electronics BIOS
- = T 132x50 8x8 . 4 . A000 NCR 77C22 [9]
- = T 132x60 8x8 . 16/256K . B800 Trident TVGA 8800/8900
- = G . . 1024x768 16 . A000 Oak VGA
- = G 128x48 8x16 1024x768 16 . A000 Oak OTI-067/077 chips [8]
- 57h = T 132x25 8x14 . 3??? 4 B000 NSI Smart EGA+
- = T 132x25 7x16 . 4 . B000 Paradise VGA
- = T 132x25 8x16 . 4 . B000 Paradise VGA on multisync
- = T 132x25 9x14 . . . . NEL Electronics BIOS
- = T 132x25 . . mono . . Taxan 565 EGA
- = T 132x25 7x16 . 2 . . AT&T VDC600
- = T 132x25 9x14 . 16/256K . B800 Trident TVGA 8800/8900
- = T 132x25 8x16 . 4 . A000 NCR 77C22 [9]
- = G 96x48 8x16 768x1024 16 . A000 Oak OTI-067/077 chips [8]
- 58h = T 80x33 8x14 . 16 . B800 ATI EGA Wonder,ATI VIP
- = T 80x32 9x16 . 16 . . Genoa 6400
- = T 80x43 8x8 . . . . NEL Electronics BIOS
- = T 132x30 9x16 . 16/256K . B800 Trident TVGA 8800/8900
- = G 100x75 8x8 800x600 16/256K . A000 Paradise VGA
- = G 100x75 8x8 800x600 16 . . AT&T VDC600
- = G 100x75 8x8 800x600 16 . A000 NCR 77C22 [9]
- = G 100x75 8x8 800x600 16 . A000 Diamond Speedstar 24X
- = G 100x75 8x8 800x600 16/256K . A000 Paradise VGA, WD90C
- = G . . 800x600 16 . . AST VGA Plus, Compaq VGA
- = G . . 800x600 16 . . Dell VGA
- = G . . 800x600 16 . . Hewlett-Packard D1180A
- = G . . 800x600 ??? . . ELT VGA PLUS 16
- = G 100x37 8x16 800x600 16/256K . A000 Cirrus CL-GD5420/5422/5426
- = G 160x64 8x16 1280x1024 16 . A000 Oak OTI-077 chipset [8]
- 59h = T 80x43 9x8 . . . . NEL Electronics BIOS
- = T 80x66 8x8 . 16/256K . A000 ATI VIP
- = T 132x43 9x11 . 16/256K . B800 Trident TVGA 8800/8900
- = G 100x75 8x8 800x600 2 . A000 Paradise VGA
- = G 100x75 8x8 800x600 2 . . AT&T VDC600
- = G . . 800x600 2 . . AST VGA Plus, Compaq VGA
- = G . . 800x600 2 . . Dell VGA
- = G . . 800x600 2 . . Hewlett-Packard D1180A
- = G 100x75 8x8 800x600 2 . A000 NCR 77C22 [9]
- = G 128x48 8x16 1024x768 256 . A000 Oak OTI-077 chipset [8]
- 5Ah = T 80x60 8x8 . . . . NEL Electronics BIOS
- = T 132x60 9x8 . 16/256K . B800 Trident TVGA 8800/8900
- = G 128x48 8x16 1024x768 2 . A000 NCR 77C22 [9]
- 5Bh = T 80x30 8x16 . . . B800 ATI VGA Wonder (undoc)
- = G . . 640x350 256 . . Genoa 6400
- = G 80x25 8x16 640x400 32K . A000 Oak OTI-067/077 chips [8]
- = G . . 800x600 16 . . Maxxon, SEFCO TVGA, Imtec
- = G 100x75 8x8 800x600 16/256K . A000 Trident TVGA 8800, 8900
- = G . . 800x600 ??? . . Vobis MVGA
- = G 100x37 8x16 800x600 . . . NEL Electronics BIOS
- = G 128x48 8x16 1024x768 16 . A000 NCR 77C22 [1,9]
- 5Ch = T 100x37 8x16 . . . . NEL Electronics BIOS
- = G . . 640x400 256 . . Logix, ATI Prism Elite
- = G . . 640x400 256 . . Maxxon, SEFCO TVGA, Imtec
- = G 80x25 8x16 640x400 256/256K . A000 Zymos Poach, Hi Res 512
- = G 80x25 8x16 640x400 256/256K . A000 Trident TVGA 8800/8900
- = G 80x30 8x16 640x480 256 . . Genoa 6400
- = G 80x30 8x16 640x480 32K . A000 Oak OTI-077 chipset [8]
- = G 100x75 8x8 800x600 256 . A000 NCR 77C22 [9]
- = G 100x75 8x8 800x600 256/256K . A000 WD90C
- = G 100x75 8x8 800x600 256/256K . A000 Diamond Speedstar 24X
- = G 100x37 8x16 800x600 256/256K . A000 Cirrus CL-GD5420/5422/5426
- 5Dh = T 100x75 8x8 . . . . NEL Electronics BIOS
- = G 80x25 8x14 640x350 64K . . STB Lightspeed ET4000/W32P
- = G . . 640x480 256 . . Logix, ATI Prism Elite
- = G . . 640x480 256 . . Maxxon, SEFCO TVGA, Imtec
- = G 80x30 8x16 640x480 256/256K . A000 Zymos Poach, Hi Res 512
- = G 80x30 8x16 640x480 256/256K . A000 Trident TVGA 8800 (512K)
- = G 128x48 8x16 1024x768 16 . A000 NCR 77C22 [9]
- = G 128x48 8x16 1024x768 16/256K . A000 WD90C
- = G 128x48 8x16 1024x768 16 . A000 Diamond Speedstar 24X
- = G 128x48 8x16 1024x768 16/256K . A000 Cirrus CL-GD5420/5422/5426
- 5Eh = G . . 640x400 256 . . Paradise VGA,VEGA VGA
- = G . . 640x400 256 . . AST VGA Plus, NCR 77C22
- = G . . 640x400 256 . . Compaq VGA, Dell VGA
- = G 80x25 8x16 640x400 256 . . AT&T VDC600
- = G 80x25 8x16 640x400 256 . A000 NCR 77C22 [9]
- = G 80x25 8x16 640x400 256/256K . A000 WD90C
- = G 80x25 8x16 640x400 256/256K . A000 Diamond Speedstar 24X
- = G . . 800x600 16 . . Logix, ATI Prism Elite
- = G 100x37 8x16 800x600 16 . . NEL Electronics BIOS
- = G 100x75 8x8 800x600 256 . . Genoa 6400
- = G 100x75 8x8 800x600 256/256K . A000 Zymos Poach, Trident 8900
- = G 100x75 8x8 800x600 256/256K . A000 Hi Res 512
- 5Fh = G 80x25 8x16 640x400 64K . . STB Lightspeed ET4000/W32P
- = G . . 640x480 256 . . Paradise VGA
- = G . . 640x480 256 . . AST VGA Plus, NCR 77C22
- = G . . 640x480 256 . . Compaq VGA, Dell VGA
- = G . . 640x480 256 . . Hewlett-Packard D1180A
- = G 80x30 8x16 640x480 256 . . AT&T VDC600 (512K)
- = G 80x30 8x16 640x480 256 . A000 NCR 77C22 [9]
- = G 80x30 8x16 640x480 256/256K . A000 WD90C
- = G 80x30 8x16 640x480 256/256K . A000 Diamond Speedstar 24X
- = G 80x30 8x16 640x480 256/256K . A000 Cirrus CL-GD5420/5422/5426
- = G . . 1024x768 16 . . Logix, ATI Prism Elite
- = G . . 1024x768 16 . . Maxxon, Imtec
- = G 128x48 8x16 1024x768 16 . . Genoa 6400
- = G 128x48 8x16 1024x768 16/256K . A000 Zymos Poach, Hi Res 512
- = G 128x48 8x16 1024x768 16/256K . A000 Trident TVGA 88/8900 512K
- 60h = T 132x25 8x14 . 16/64 8 B800 Quadram Ultra VGA
- = T 132x25 8x14 . 16 . . Genoa 6400
- = T 132x25 8x14 . 16 . . Genoa SuperEGA BIOS 3.0+
- = T 132x25 . . . . . Cirrus 5320 chipset
- = T 132x25 8x16 1056x400 16 . B800 Chips&Technologies chipset
- = G 80x??? . ???x400 . . . Corona/Cordata BIOS 4.10+
- = G 80x25 8x16 640x400 256 1 A000 Ahead A, Ahead B
- = G . . 752x410 . . . VEGA VGA
- = G . . 752x410 16 . . Tatung VGA
- = G . . 752x410 16 . . Video7 V-RAM VGA
- = G 128x48 8x16 1024x768 4/256K . A000 Trident TVGA 8900
- = G 128x48 8x16 1024x768 256/256K . A000 WD90C
- = G 128x48 8x16 1024x768 256/256K . A000 Diamond Speedstar 24X
- = G 128x48 8x16 1024x768 256/256K . A000 Cirrus CL-GD5420/5422/5426
- = G 144x54 8x16 1152x864 . . A000 Diamond Stealth64 Video 2xx1
- 61h = T 132x29 8x12 . 16/64 8 B800 Quadram Ultra VGA
- = T 132x29 8x8 . 16 . . Genoa 6400
- = T 132x29 8x8 . 16 . . Genoa SuperEGA BIOS 3.0+
- = T 132x50 . . . . . Cirrus 5320 chipset
- = T 132x50 8x8 1056x400 16 . B800 Chips&Technologies chipset
- = T 132x50 8x16 1056x800 16 . B800 Chips&Technologies 64310
- = G . . ???x400 . . . Corona/Cordata BIOS 4.10+
- = G 80x25 8x16 640x400 256 . A000 ATI VGA Wonder,VGA Wonder+
- = G 80x25 8x16 640x400 256 . A000 ATI Ultra 8514A,ATI XL
- = G 80x25 8x16 640x400 . . A000 Diamond Stealth64 Video 2xx1
- = G 80x30 8x16 640x480 256 1 A000 Ahead A, Ahead B (512K)
- = G . . 720x540 . . . VEGA VGA
- = G . . 720x540 16 . . Tatung VGA
- = G . . 720x540 16 . . Video7 V-RAM VGA
- = G 96x64 8x16 768x1024 16/256K . A000 Trident TVGA 88/8900 512K
- = G 128x48 8x16 1024x768 256 . A000 NCR 77C22 [1,9]
- = G 144x54 8x16 1152x864 . . A000 Diamond Stealth64 Video 2xx1
- 62h = T 132x32 8x11 . 16/64 6 B800 Quadram Ultra VGA
- = T 132x32 8x12 . 16 . . Genoa 6400
- = T 132x32 8x11 . 16 . . Genoa SuperEGA BIOS 3.0+
- = T 132x43 8x8 1056x344 16 . B800 C&T 82C450 BIOS
- = G . . 640x450 16 . . Cirrus 510/520 chipset
- = G 80x30 8x16 640x480 256 . A000 ATI VGA Wonder,VGA Wonder+
- = G 80x30 8x16 640x480 256 . A000 ATI Ultra 8514A,ATI XL
- = G 80x30 8x16 640x480 32K . A000 WD90C
- = G 80x30 8x16 640x480 32K . A000 Diamond Speedstar 24X
- = G . . 800x600 . . . VEGA VGA
- = G . . 800x600 16 . . Tatung VGA
- = G . . 800x600 16 . . Video7 V-RAM VGA
- = G 100x75 8x8 800x600 256 1 A000 Ahead A, Ahead B (512K)
- = G 128x48 8x16 1024x768 256/256K . A000 Trident TVGA 8900, Zymos
- = G 128x48 8x16 1024x768 256 . A000 NCR 77C22 [9]
- 63h = T 132x44 8x8 . 16/64 5 B800 Quadram Ultra VGA
- = T 132x44 8x8 . 16 . . Genoa 6400
- = T 132x44 8x8 . 16 . . Genoa SuperEGA BIOS 3.0+
- = G . . 720x540 16 . . MORSE VGA
- = G . . 720x540 16 . . Cirrus 510/520 chipset
- = G 100x42 8x14 800x600 256 . A000 ATI VGA Wonder,VGA Wonder+
- = G 100x42 8x14 800x600 256 . A000 ATI Ultra 8514A,ATI XL
- = G . . 800x600 32K . A000 WD90C
- = G . . 800x600 32K . A000 Diamond Speedstar 24X
- = G 128x48 7x16 1024x768 256 1 A000 Ahead B (1MB)
- = G . . 1024x768 2 . . Video7 V-RAM VGA
- 64h = T 132x60 8x8 . 16 . . Genoa 6400
- = T 80x43 8x8 528x344 16 . B800 C&T 82C450 BIOS
- = G . . 640x480 64K . A000 Cirrus CL-GD 5422/5426
- = G . . 800x600 16 . . MORSE VGA
- = G . . 800x600 16 . . Cirrus 510/520 chipset
- = G . . 800x600 ??? . . SAMPO-Mira VGA
- = G . . 1024x768 4 . . Video7 V-RAM VGA
- = G 128x48 8x16 1024x768 256 . A000 ATI VGA Wonder Plus,ATI XL
- = G 160x64 8x16 1280x1024 16/256K . A000 WD90C [1]
- = G 160x64 8x16 1280x1024 16/256K . A000 Diamond Speedstar 24X [1]
- 65h = T 80x50 8x8 528x400 16 . B800 C&T 82C450 BIOS
- = G . . 800x600 64K . A000 Cirrus CL-GD 5422/5426
- = G . . 1024x768 16 . . Video7 V-RAM VGA
- = G 128x48 8x16 1024x768 16 . A000 ATI VGA Wonder
- 66h = T 80x50 8x8 640x400 16/256K . B800 WD90C
- = T 80x50 8x8 . 16 . B800 Diamond Speedstar 24X
- = G . . 640x400 256 . . Tatung VGA
- = G . . 640x400 256 . . Video7 V-RAM VGA
- = G . . 640x480 32K . A000 Cirrus CL-GD 5422/5426
- 67h = T 80x43 8x8 640x344 16/256K . B800 WD90C
- = T 80x43 8x8 . 16 . B800 Diamond Speedstar 24X
- = G . . 640x480 256 . . Video7 V-RAM VGA
- = G . . 800x600 32K . A000 Cirrus CL-GD 5422/5426
- = G 128x48 8x16 1024x768 4 . A000 ATI VGA Wonder
- = G 160x64 8x16 1280x1024 16 . A000 NCR 77C22 [1,9]
- 68h = G 80x25 8x16 640x400 . . A000 Diamond Stealth64 Video 2xx1
- 69h = T 132x50 8x8 1056x400 16/256K . B800 WD90C
- = T 132x50 8x8 . 16 . B800 Diamond Speedstar 24X
- = G 80x30 8x16 640x480 . . A000 Diamond Stealth64 Video 2xx1
- = G . . 720x540 256 . A000 Video7 V-RAM VGA
- 6Ah = G . . 800x600 16 . A000 VESA standard interface
- = G 100x75 8x8 800x600 16 . A000 Genoa 6400
- = G 100x75 8x8 800x600 16 . A000 Diamond Speedstar 24X
- = G . . 800x600 16 . A000 Ahead A
- = G 100x75 8x8 800x600 16 1 A000 Ahead B (VESA) [see 71h]
- = G . . 800x600 16 . . Zymos Poach, Hi Res 512
- = G . . 800x600 16 . . Epson LT-386SX in CRT Mode
- = G . . 800x600 16 . . Compuadd 316SL in CRT Mode
- = G 100x37 8x16 800x600 16/256K . A000 Cirrus CL-GD5420/5422/5426
- = G 100x37 8x16 800x600 16 . A000 Diamond Stealth64 Video 2xx1
- = G 100x42 8x14 800x600 . . A000 ATI VGA Wonder (undoc)
- = G . . 800x600 16 . A000 Chips&Technologies chipset
- = G 160x64 8x16 1280x1024 256 . A000 NCR 77C22 [1,9]
- 6Bh = T 100x37 8x16 . 16 . . Genoa 6400
- = T 100x37 8x16 . . . . NEL Electronics BIOS
- = G 100x37 8x16 800x600 . . A000 Diamond Stealth64 Video 2xx1
- 6Ch = G 80x30 8x16 640x480 16M . A000 Trident 8900CL/BIOS C04
- = G 100x75 8x8 800x600 256 . . Genoa 6400
- = G 128x48 8x16 1024x768 2 . A000 Diamond Stealth64 Video 2xx1
- = G 160x60 8x16 1280x960 16/256K . A000 WD90C [1]
- = G 160x60 8x16 1280x960 16/256K . A000 Diamond Speedstar 24X [1]
- = G 160x64 8x16 1280x1024 16/256K . A000 Cirrus CL-GD 5422/5426 [1]
- 6Dh = G 80x25 8x14 640x350 64K . A000 STB Lightspeed ET4000/W32P
- = G 128x48 8x16 1024x768 . . A000 Diamond Stealth64 Video 2xx1
- = G 160x64 8x16 1280x1024 256/256K . A000 Cirrus CL-GD 5422/5426 [1]
- 6Eh = G 40x25 8x8 320x200 64K . A000 Cirrus CL-GD 5422/5426
- = G 160x64 8x16 1280x1024 2 . A000 Diamond Stealth64 Video 2xx1
- 6Fh = G 40x25 8x8 320x200 16M . A000 Cirrus CL-GD 5422/5426
- = G 160x64 8x16 1280x1024 . . A000 Diamond Stealth64 Video 2xx1
- 70h = extended mode set (see AX=0070h) . Everex Micro Enhancer EGA
- = T 40x25 8x8 . 16 8 B800 Quadram (CGA double scan)
- = T 40x25 8x8 (CGA dblscan) . . Genoa SuperEGA BIOS 3.0+
- = G . . 360x480 256 . . Cirrus 510/520/5320 chips
- = G 90x28 8x14 720x392 16 1 A000 Ahead B
- = G 80x30 8x16 640x480 . . A000 Diamond Stealth64 Video 2xx1
- = G 100x38 8x16 800x600 16 . A000 C&T chipset, Cardinal
- = G . . 1024x480 256 . A000 Trident 8900C BIOS C3.0
- 71h = T 80x25 8x8 . 16 8 B800 Quadram (CGA double scan)
- = T 80x25 8x8 (CGA dblscan) . . Genoa SuperEGA BIOS 3.0+
- = G . . 528x400 256 . . Cirrus 510/520 chipset
- = G 80x30 8x16 640x480 16M . A000 Cirrus CL-GD 5422/5426
- = G 80x30 8x16 640x480 . . A000 Diamond Stealth64 Video 2xx1
- = G 100x35 8x16 800x600 16/64 . A000 NSI Smart EGA+
- = G 100x75 8x8 800x600 16 1 A000 Ahead B (same as 6Ah)
- = G . . 960x720 16 . . C&T chipset, Cardinal
- = G . . 1024x480 256 . A000 Trident 8900C BIOS C3.0
- 72h = T 80x60 8x8 . 16 . B800 Quadram Ultra VGA
- = T 80x60 8x8 . 16 . B800 Genoa 6400
- = T 80x60 8x8 . 16 . B800 Genoa SuperEGA BIOS 3.0+
- = G . . 528x480 256 . . Cirrus 510/520 chipset
- = G 80x25 8x19 640x480 16 1 A000 DOS/V w/ any VGA
- = G 80x30 8x16 640x480 . . A000 Diamond Stealth64 Video 2xx1
- = G . . 640x480 32K . A000 ATI
- = G . . 640x480 16M . A000 WD90C
- = G . . 640x480 16M . A000 Diamond Speedstar 24X
- = G . . 1024x768 16 . . C&T chipset, Cardinal
- = G 128x48 8x16 1024x768i 16 . A000 C&T 82C450 BIOS
- = G 128x48 8x16 1024x768 16 . A000 C&T 65530 BIOS (multisync)
- 73h = G 80x60 8x8 640x480 16 . A000 Quadram Ultra VGA
- = G 80x60 8x8 640x480 16 . . Genoa 6400
- = G 80x60 8x8 640x480 16 . . Genoa SuperEGA BIOS 3.0+
- = G 100x37 8x16 800x600 . . A000 Diamond Stealth64 Video 2xx1
- = T 80x25 8x19 640x475 16 1 none DOS/V, emulated in VGA graph
- 74h = T 80x66 8x8 . 16 . B800 Quadram Ultra VGA
- = T 80x66 8x8 . 16 . B800 Genoa 6400
- = T 80x66 8x8 . 16 . B800 Genoa SuperEGA BIOS 3.0+
- = G . . 640x400 2 . B800 Toshiba 3100 AT&T mode
- = G 80x30 8x16 640x480 32K . A000 Trident 8900C/BIOS C03
- = G 100x37 8x16 800x600 . . A000 Diamond Stealth64 Video 2xx1
- = G 128x48 8x16 1024x768 16 1 A000 Ahead A, Ahead B (512K)
- = G . . 1024x768 64K . A000 Cirrus CL-GD 5422/5426 [1]
- 75h = G 80x30 8x16 640x480 64K . A000 Trident 8900C/BIOS C03
- = G 80x66 . 640x528 16??? . A000 Quadram Ultra VGA
- = G 80x66 . 640x528 16 . . Genoa SuperEGA BIOS 3.0+
- = G 100x37 8x16 800x600 . . A000 Diamond Stealth64 Video 2xx1
- = G 128x48 8x16 1024x768 4 1 A000 Ahead B
- = G 128x48 8x16 1024x768 16 . A000 Chips&Technologies 64310
- 76h = T 94x29 8x14 . 16 . B800 Quadram Ultra VGA
- = T 94x29 8x14 . . . . Genoa SuperEGA BIOS 3.0+
- = G 100x75 8x8 800x600 32K . A000 Trident 8900C/BIOS C03
- = G 128x48 8x16 1024x768 2 1 A000 Ahead B
- = G 128x48 8x16 1024x768 . . A000 Diamond Stealth64 Video 2xx1
- = G 160x64 8x16 1280x1024 16 . A000 Chips&Technologies 64310 [1]
- 77h = G 94x29 . 752x410 16??? . A000 Quadram Ultra VGA
- = G 94x29 . 752x410 16 . . Genoa SuperEGA BIOS 3.0+
- = G 100x75 8x8 800x600 64K . A000 Trident 8900C/BIOS C03
- = G 128x48 8x16 1024x768 . . A000 Diamond Stealth64 Video 2xx1
- 78h = T 100x37 8x16 . 16 . . Genoa 6400
- = T 100x75 8x8 . 16 . B800 Quadram Ultra VGA
- = T 100x75 8x8 . . . . Genoa SuperEGA BIOS 3.0+
- = G . . 640x400 256 . . STB VGA/EM-16 Plus
- = G 80x25 8x16 640x400 256 . . Cardinal, C&T chipset
- = G . . 640x400 256 . . Cirrus 5320 chipset
- = G 80x25 8x16 640x400 256 . A000 Chips&Technologies 64310
- 79h = G 80x30 8x16 640x480 256 . . Cardinal, C&T chipset
- = G 80x30 8x16 640x480 256 . A000 Chips&Technologies 64310
- = G 100x75 . 800x600 16??? . A000 Quadram Ultra VGA
- = G 100x75 8x8 800x600 16 . . Genoa SuperEGA BIOS 3.0+
- = G 100x75 8x8 800x600 16 . . Genoa 6400
- 7Ah = T 114x60 8x8 . 16 . B800 Quadram Ultra VGA
- = T 114x60 8x8 . . . . Genoa SuperEGA BIOS 3.0+
- = G . . 720x540 256 . . C&T chipset, Cardinal
- 7Bh = G . . 800x600 256 . . C&T chipset, Cardinal
- = G 114x60 . 912x480 16??? . A000 Quadram Ultra VGA
- = G . . 912x480 16 . . Genoa SuperEGA BIOS 3.0+
- 7Ch = G . . 512x512 16 . . Genoa
- = G 100x37 8x16 800x600 256 . . C&T 82C453/F65530 chipsets
- = G 100x37 8x16 800x600 256 . A000 Chips&Technologies 64310
- = G 200x75 8x16 1600x1200 . [16] . A000 Diamond Stealth64 Video 2xx1
- 7Dh = G 64x32 8x16 512x512 256 . . Genoa
- 7Eh = special mode set (see AX=007Eh) . Paradise VGA, AT&T VDC600
- = G 80x25 8x16 640x400 256 . . Genoa 6400
- = G . . 1024x768 256 . . C&T 82C453 chipset
- = G 128x48 8x16 1024x768 256 . A000 Chips&Technologies 64310
- = G 90x43 . . mono . B000 HERCULES.COM on HGC [14]
- 7Fh = special function set (see AX=007Fh/BH=00h) Paradise VGA, AT&T VDC600
- = G 128x48 8x16 1024x768 4 . . Genoa 6400
- = G 90x29 . . mono . B000 HERCULES.COM on HGC [14]
- 82h = T 80x25 . . B&W . . AT&T VDC overlay mode [6]
- 83h = T 80x25 . . . . . AT&T VDC overlay mode [6]
- 86h = G . . 640x200 B&W . . AT&T VDC overlay mode [6]
- 88h = G 90x43 8x8 720x348 mono . B000 Hercules + MSHERC.COM
- C0h = G . . 640x400 2/prog palette . AT&T VDC overlay mode [6]
- = G . . 640x400 2/prog palette . Olivetti Quaderno overlay
- C4h = disable output . . . . AT&T VDC overlay mode [6]
- C8h = G 80x50 8x8 640x400 2 . B800 Olivetti Quaderno overlay
- D0h = G . . 640x400 2 . B800 DEC VAXmate AT&T mode
- Notes:
- [1] interlaced only
- [2] for ATI EGA Wonder, mode 08h is only valid if SMS.COM is loaded resident.
- SMS maps mode 08h to mode 27h if the byte at location 0040:0063 is 0B4h,
- otherwise to mode 23h, thus selecting the appropriate (monochrome or
- color) 132x25 character mode.
- for ATI VGA Wonder, mode 08h is the same, and only valid if VCONFIG loaded
- resident
- [3] early XGA boards support 132-column text but do not have this BIOS mode
- [4] DESQview intercepts calls to change into these two modes (21h is page 0,
- 22h is page 1) even if there is no Hercules graphics board installed
- [5] ATI BIOS v4-1.00 has a text-scrolling bug in this mode
- [6] for AT&T VDC overlay modes, BL contains the DEB mode, which may be 06h,
- 40h, or 44h
- [7] BIOS text support is broken in this undocumented mode; scrolling moves
- only about 1/3 of the screen (and does even that portion incorrectly),
- while screen clears only clear about 3/4.
- [8] The Oak OTI-037/067/077 modes are present in the Oak VGA BIOS, which OEMs
- may choose to use only partially or not at all; thus, not all Oak boards
- support all "Oak" modes listed here
- [9] this card uses the full 128K A000h-BFFFh range for the video buffer,
- precluding the use of a monochrome adapter in the same system
- [10] mode 17h supported by Tseng ET4000 BIOS 8.01X dated 09/14/90, but not
- v8.01X dated 02/28/92; mode 21h supported by 02/28/92 version but not
- 09/14/90 version
- [11] HERKULES simulates a 90x45 text mode in Hercules graphics mode; the
- installation check for HERKULES.COM is the signature "Herkules" two
- bytes beyond the INT 10 handler
- [12] The Realtek RTVGA BIOS v3.C10 crashes when attempting to switch into
- modes 21h or 27h; this version of the BIOS also sets the BIOS data area
- incorrectly for extended text modes, resulting in scrolling after only
- 24 lines (the VMODE.EXE utility does set the data area correctly)
- [13] The Tandy 1000SL/TL BIOS does not actually support this mode
- [14] HERCULES.COM is a graphics-mode BIOS extension for Hercules-compatible
- graphics cards by Soft Warehouse, Inc. Its installation check is to
- test whether the word preceding the INT 10 handler is 4137h.
- [15] The Hercules-graphics video modes for HERCBIOS (shareware by Dave
- Tutelman) may be changed by a command-line switch; the 90x43
- character-cell mode's number is always one higher than the 90x29 mode
- (whose default is mode 08h)
- [16] Stealth64 Video 2001-series BIOS v1.03 reports 76 lines for mode 7Ch,
- resulting in incorrect scrolling for TTY output (scrolling occurs only
- after the end of the 76th line, which is not displayed)
- [17] For 43-line text on EGA or 43/50-line text on VGA, you must load an 8x8
- font using AX=1102h after switching to mode 3; VGA may also require
- using INT 10/AH=12h/BL=30h
- SeeAlso: #00011,#00083,#00191
- Index: video modes
- Index: installation check;HERKULES|installation check;HERCULES.COM
- --------V-100070-----------------------------
- INT 10 - VIDEO - Everex Micro Enhancer EGA/Viewpoint VGA - EXTENDED MODE SET
- AX = 0070h
- BL = mode (see #00011)
- Desc: specify a proprietary display mode on the Everex Micro Enhancer or
- Viewpoint video adapters
- SeeAlso: AH=00h,AX=6F05h,AX=7000h/BX=0004h,AH=FFh"GO32"
- (Table 00011)
- Values for Everex video mode:
- text/ text pixel pixel colors disply scrn monitor adapter
- grph resol box resolution pages addr
- 00h = G . . 640x480 16 . . multisync EGA,VGA
- 01h = G . . 752x410 16 . . multisync EGA,VGA
- 02h = G . . 800x600 16 . . multisync EGA,VGA
- 03h = T 80x34 . . . . . multisync EGA,VGA
- 04h = T 80x60 . . . . . multisync EGA,VGA
- 05h = T 94x29 . . . . . multisync EGA only
- 06h = T 94x51 . . . . . multisync EGA only
- 07h = T 100x43 8x14 . 16 . . . VGA only
- 08h = T 100x75 8x8 . 16 . . . VGA only
- 09h = T 80x44 . . . . . EGA EGA only
- 0Ah = T 132x25 . . . . . EGA EGA,VGA
- 0Bh = T 132x44 . . . . . EGA EGA,VGA
- 0Ch = T 132x25 . . . . . CGA EGA only
- 0Dh = T 80x44 . . . . . mono EGA only
- 0Eh = T 132x25 . . . . . mono
- 0Fh = T 132x44 . . . . . mono
- 10h = reserved
- 11h = G . . 1280x350 4 . . . EGA only
- 12h = G . . 1280x600 4 . . . EGA only
- 13h = G . . 640x350 256 . . . EGA,EV673
- 14h = G . . 640x400 256 . . .
- 15h = G . . 512x480 256 . . .
- 16h = T 80x30 8x16 . 256 . . . VGA only
- 18h = T 100x27 8x16 . 16 . . . VGA only
- 20h = G . . 1024x768 16 . . . Everex 629,678
- . . . . . . . Everex EV-673
- 21h = T 160x64 8x16 1280x1024 16 . . . 1MB VGA only
- 30h = G . . 640x480 256 . . . Everex 629,678
- . . . . . . . Everex EV-673
- 31h = G . . 800x600 256 . . . Everex 629,678
- . . . . . . . Everex EV-673
- 32h = G 128x48 8x16 1024x768 256 . . . 1MB VGA only
- 40h = T 132x30 8x16 . 16 . . . VGA only
- 50h = T 132x32 8x16 . mono . . . VGA only
- 62h = G 40x25 8x8 320x200 32K . . . Vwpt TC (EV629)
- 70h = G 64x30 8x16 512x480 32K . . . Viewpoint TC
- 71h = G 80x30 8x16 640x480 32K . . . Viewpoint TC
- 76h = G 64x30 8x16 512x480 16M . . . Viewpoint TC
- 77h = G 80x30 8x16 640x480 16M . . . Viewpoint TC
- SeeAlso: #00010,#00191
- Index: video modes;Everex
- --------V-10007E-----------------------------
- INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET SPECIAL MODE
- AX = 007Eh
- BX = horizontal dimension of the mode desired
- CX = vertical dimension of the mode desired
- (both BX/CX in pixels for graphics modes, rows for alpha modes)
- DX = number of colors of the mode desired (0000h for monochrome modes)
- Return: BH = 7Eh if successful (Paradise VGA)
- AL = 7Eh if successful (AT&T VDC600)
- Desc: specify a display mode by resolution rather than mode number
- SeeAlso: AH=00h,AX=0070h,AX=007Fh/BH=00h,AX=6F05h,AH=FFh"GO32"
- Index: video modes;Paradise|video modes;AT&T
- --------V-10007FBH00-------------------------
- INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET VGA OPERATION
- AX = 007Fh
- BH = 00h
- Return: AL = 7Fh if successful (AT&T VDC600)
- BH = status (Paradise/Dell)
- 00h invalid function
- 7Fh successful
- SeeAlso: AX=007Fh/BH=01h,AX=007Fh/BH=02h
- --------V-10007FBH01-------------------------
- INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET NON-VGA OPERATION
- AX = 007Fh
- BH = 01h
- Return: AL = 7Fh if successful (AT&T VDC600)
- BH = status (Paradise/Dell)
- 00h invalid function
- 7Fh successful
- Note: color modes (0,1,2,3,4,5,6) will set non-VGA CGA operation, monochrome
- mode 7 will set non-VGA MDA/Hercules operation
- SeeAlso: AX=007Fh/BH=00h,AX=007Fh/BH=02h
- --------V-10007FBH02-------------------------
- INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - QUERY MODE STATUS
- AX = 007Fh
- BH = 02h
- Return: AL = 7Fh if successful (AT&T VDC600)
- BH = status (Paradise/Dell)
- 00h invalid function
- 7Fh successful
- ---if successful---
- BL = 00h if operating in VGA mode, 01h if non-VGA mode
- CH = total video RAM size in 64k byte units
- CL = video RAM used by the current mode
- Note: under Novell DOS 7 TaskMgr Multitasker, this call always returns 0K
- video memory in CX
- SeeAlso: AX=007Fh/BH=00h,AX=007Fh/BH=01h
- --------V-10007FBH03-------------------------
- INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - LOCK CURRENT MODE
- AX = 007Fh
- BH = 03h
- Return: AL = 7Fh if successful (AT&T VDC600)
- BH = status (Paradise/Dell)
- 00h invalid function
- 7Fh successful
- Desc: allows current mode (VGA or non-VGA) to survive re-boot
- SeeAlso: AX=007Eh,AX=007Fh/BH=04h,AX=007Fh/BH=06h,AH=FFh"Oak"
- --------V-10007FBH04-------------------------
- INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - ENTER MDA EMULATION MODE
- AX = 007Fh
- BH = 04h
- Return: AL = 7Fh if successful (AT&T VDC600)
- BH = status (Paradise/Dell)
- 00h invalid function
- 7Fh successful
- SeeAlso: AX=007Eh,AX=007Fh/BH=03h,AX=007Fh/BH=05h,AH=FFh"Oak"
- --------V-10007FBH05-------------------------
- INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - ENTER CGA EMULATION MODE
- AX = 007Fh
- BH = 05h
- Return: AL = 7Fh if successful (AT&T VDC600)
- BH = status (Paradise/Dell)
- 00h invalid function
- 7Fh successful
- SeeAlso: AX=007Eh,AX=007Fh/BH=03h,AX=007Fh/BH=04h,AH=FFh"Oak"
- --------V-10007FBH06-------------------------
- INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - ENTER MONOCHROME VGA MODE
- AX = 007Fh
- BH = 06h
- Return: AL = 7Fh if successful (AT&T VDC600)
- BH = status (Paradise/Dell)
- 00h invalid function
- 7Fh successful
- Note: this function also switches to video mode 7
- SeeAlso: AX=007Eh,AX=007Fh/BH=03h,AX=007Fh/BH=07h,AH=FFh"Oak"
- --------V-10007FBH07-------------------------
- INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - ENTER COLOR VGA MODE
- AX = 007Fh
- BH = 07h
- Return: AL = 7Fh if successful (AT&T VDC600)
- BH = status (Paradise/Dell)
- 00h invalid function
- 7Fh successful
- Note: this function also switches to video mode 3
- SeeAlso: AX=007Eh,AX=007Fh/BH=03h,AX=007Fh/BH=06h,AH=FFh"Oak"
- --------V-10007F-----------------------------
- INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - EXTENDED DATA REGISTER ACCESS
- AX = 007Fh
- BH = function
- 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh WRITE PARADISE REGISTERS 0,1,2,3,4,5
- (port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
- BL = value to set in the paradise register
- 1Ah,1Bh,1Ch,1Dh,1Eh,1Fh READ PARADISE REGISTERS 0,1,2,3,4,5
- (port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
- Return: BL = value of the paradise register
- BH = 7Fh if successful
- 29h-2Fh ??? (Paradise VGA for Dell, 7/24/91)
- Return: AL = 7Fh if successful (AT&T VDC600)
- BH = status (Paradise/Dell)
- 00h invalid function
- 7Fh successful
- SeeAlso: AX=007Eh,AX=007Fh/BH=03h,AX=007Fh/BH=05h,AH=FFh"Oak"
- --------V-10007FBH60-------------------------
- INT 10 - Paradise VGA - ???
- AX = 007Fh
- BH = 60h
- BL = ??? (00h-13h)
- ???
- Return: BH = status (00h failed or not supported, 7Fh successful)
- ???
- Note: this function is supported by the 5/14/93 ROM for the Dell 486D
- SeeAlso: AX=007Fh/BH=61h
- --------V-10007FBH61-------------------------
- INT 10 - Paradise VGA - ???
- AX = 007Fh
- BH = 61h
- ES:DI -> buffer for list of ??? (see #00012)
- Return: BH = status (00h failed or not supported, 7Fh successful)
- ???
- Note: this function is supported by the 5/14/93 ROM for the Dell 486D
- SeeAlso: AX=007Fh/BH=60h
- Format of Paradise VGA list entry:
- Offset Size Description (Table 00012)
- 00h BYTE ??? or 00h if end of list
- 01h BYTE ???
- 02h WORD ???
- 04h WORD ???
- 06h WORD ???
- --------V-10007FBXA500-----------------------
- INT 10 - Paradise VGA - ???
- AX = 007Fh
- BX = A500h
- ???
- Return: BH = status (00h failed or not supported, 7Fh successful)
- ???
- Note: this function is supported by the 5/14/93 ROM for the Dell 486D
- SeeAlso: AX=007Fh/BH=A6h
- --------V-10007FBHA5-------------------------
- INT 10 - Paradise VGA - ???
- AX = 007Fh
- BH = A5h
- BL = ???
- bits 3-0: ??? (0-4)
- bits 5,4: ???
- ???
- Return: BH = status (00h failed or not supported, 7Fh successful)
- ???
- Note: this function is supported by the 5/14/93 ROM for the Dell 486D
- --------V-10007FBHA6-------------------------
- INT 10 - Paradise VGA - ???
- AX = 007Fh
- BH = A6h
- ???
- Return: BH = status (00h failed or not supported, 7Fh successful)
- ???
- Note: this function is supported by the 5/14/93 ROM for the Dell 486D
- SeeAlso: AX=007Fh/BH=A5h
- --------V-1001-------------------------------
- INT 10 - VIDEO - SET TEXT-MODE CURSOR SHAPE
- AH = 01h
- CH = cursor start and options (see #00013)
- CL = bottom scan line containing cursor (bits 0-4)
- Return: nothing
- Desc: specify the starting and ending scan lines to be occupied by the
- hardware cursor in text modes
- Notes: buggy on EGA systems--BIOS remaps cursor shape in 43 line modes, but
- returns unmapped cursor shape
- UltraVision scales size to the current font height by assuming 14-line
- monochrome and 8-line color fonts; this call is not valid if cursor
- emulation has been disabled
- applications which wish to change the cursor by programming the
- hardware directly on EGA or above should call INT 10/AX=1130h or
- read 0040h:0085h first to determine the current font height
- on some adapters, setting the end line greater than the number of lines
- in the font will result in the cursor extending to the top of the
- next character cell on the right
- BUG: AMI 386 BIOS and AST Premier 386 BIOS will lock up the system if AL
- is not equal to the current video mode
- SeeAlso: AH=03h,AX=CD05h,AH=12h/BL=34h,#03885
- Bitfields for cursor start and options:
- Bit(s) Description (Table 00013)
- 7 should be zero
- 6,5 cursor blink
- (00=normal, 01=invisible, 10=erratic, 11=slow)
- (00=normal, other=invisible on EGA/VGA)
- 4-0 topmost scan line containing cursor
- --------V-1002-------------------------------
- INT 10 - VIDEO - SET CURSOR POSITION
- AH = 02h
- BH = page number
- 0-3 in modes 2&3
- 0-7 in modes 0&1
- 0 in graphics modes
- DH = row (00h is top)
- DL = column (00h is left)
- Return: nothing
- SeeAlso: AH=03h,AH=05h,INT 60/DI=030Bh,MEM 0040h:0050h
- --------V-1003-------------------------------
- INT 10 - VIDEO - GET CURSOR POSITION AND SIZE
- AH = 03h
- BH = page number
- 0-3 in modes 2&3
- 0-7 in modes 0&1
- 0 in graphics modes
- Return: AX = 0000h (Phoenix BIOS)
- CH = start scan line
- CL = end scan line
- DH = row (00h is top)
- DL = column (00h is left)
- Notes: a separate cursor is maintained for each of up to 8 display pages
- many ROM BIOSes incorrectly return the default size for a color display
- (start 06h, end 07h) when a monochrome display is attached
- SeeAlso: AH=01h,AH=02h,AH=12h/BL=34h,MEM 0040h:0050h,MEM 0040h:0060h
- --------V-1004-------------------------------
- INT 10 - VIDEO - READ LIGHT PEN POSITION (except VGA)
- AH = 04h
- Return: AH = light pen trigger flag
- 00h not down/triggered
- 01h down/triggered
- DH,DL = row,column of character light pen is on
- CH = pixel row (graphics modes 04h-06h)
- CX = pixel row (graphics modes with >200 rows)
- BX = pixel column
- Desc: determine the current position and status of the light pen (if
- present)
- Notes: on a CGA, returned column numbers are always multiples of 2 (320-
- column modes) or 4 (640-column modes)
- returned row numbers are only accurate to two lines
- --------V-1004------------------------------------
- INT 10 - HUNTER 16 - GET CURSOR ADDRESS
- AH = 04h
- BH = page
- Return: DH = row (0..24)
- DL = column (0..79)
- CH = cursor pixel Y-address (0..199)
- CL = cursor pixel X-address (0..639)
- Notes: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family
- members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
- pixel coordinates are for the lower left corner of the character cell
- containing the cursor
- SeeAlso: AH=60h"HUNTER"
- --------V-1005-------------------------------
- INT 10 - VIDEO - SELECT ACTIVE DISPLAY PAGE
- AH = 05h
- AL = new page number (00h to number of pages - 1) (see #00010)
- Return: nothing
- Desc: specify which of possibly multiple display pages will be visible
- Note: to determine whether the requested page actually exists, use AH=0Fh
- to query the current page after making this call
- SeeAlso: AH=0Fh,AH=43h,AH=45h,MEM 0040h:0062h,MEM 0040h:004Eh
- --------V-100500-----------------------------
- INT 10 - VIDEO - Corona/Cordata BIOS v4.10+ - SET GRAPHICS BITMAP BUFFER
- AX = 0500h
- BX = segment of buffer
- Return: nothing
- Desc: set the address of graphics bitmap buffer for video modes 60h and 61h
- SeeAlso: AX=050Fh"Corona"
- --------V-10050F-----------------------------
- INT 10 - VIDEO - Corona/Cordata BIOS v4.10+ - GET GRAPHICS BITMAP BUFFER
- AX = 050Fh
- Return: DX = segment of graphics bitmap buffer
- Desc: get the address of graphics bitmap buffer for video modes 60h and 61h
- SeeAlso: AX=0500h"Corona"
- --------V-100580-----------------------------
- INT 10 - VIDEO - PCjr, Tandy 1000 - GET CRT/CPU PAGE REGISTERS
- AX = 0580h
- Return: BH = CRT page register
- BL = CPU page register
- Notes: the CPU page determines which 16K block of the first 128K of physical
- memory will be mapped at B800h by the hardware
- the CRT page determines the start address of the memory used by the
- video controller
- SeeAlso: AH=05h"SET CRT/CPU"
- --------V-1005-------------------------------
- INT 10 - VIDEO - PCjr, Tandy 1000 - SET CRT/CPU PAGE REGISTERS
- AH = 05h
- AL = subfunction
- 81h set CPU page register
- BL = CPU page
- 82h set CRT page register
- BH = CRT page
- 83h set both CPU and CRT page registers
- BL = CPU page
- BH = CRT page
- Return: nothing
- Notes: the CPU page determines which 16K block of the first 128K of physical
- memory will be mapped at B800h by the hardware
- the CRT page determines the start address of the memory used by the
- video controller
- SeeAlso: AX=0580h
- --------V-1006-------------------------------
- INT 10 - VIDEO - SCROLL UP WINDOW
- AH = 06h
- AL = number of lines by which to scroll up (00h = clear entire window)
- BH = attribute used to write blank lines at bottom of window
- CH,CL = row,column of window's upper left corner
- DH,DL = row,column of window's lower right corner
- Return: nothing
- Note: affects only the currently active page (see AH=05h)
- BUGS: some implementations (including the original IBM PC) have a bug which
- destroys BP
- the Trident TVGA8900CL (BIOS dated 9/8/92) clears DS to 0000h when
- scrolling in an SVGA mode (800x600 or higher)
- SeeAlso: AH=07h,AH=12h"Tandy 2000",AH=72h,AH=73h,AX=7F07h,INT 50/AX=0014h
- --------V-1007-------------------------------
- INT 10 - VIDEO - SCROLL DOWN WINDOW
- AH = 07h
- AL = number of lines by which to scroll down (00h=clear entire window)
- BH = attribute used to write blank lines at top of window
- CH,CL = row,column of window's upper left corner
- DH,DL = row,column of window's lower right corner
- Return: nothing
- Note: affects only the currently active page (see AH=05h)
- BUGS: some implementations (including the original IBM PC) have a bug which
- destroys BP
- the Trident TVGA8900CL (BIOS dated 9/8/92) clears DS to 0000h when
- scrolling in an SVGA mode (800x600 or higher)
- SeeAlso: AH=06h,AH=12h"Tandy 2000",AH=72h,AH=73h,INT 50/AX=0014h
- --------V-1008-------------------------------
- INT 10 - VIDEO - READ CHARACTER AND ATTRIBUTE AT CURSOR POSITION
- AH = 08h
- BH = page number (00h to number of pages - 1) (see #00010)
- Return: AH = character's attribute (text mode only) (see #00014)
- AH = character's color (Tandy 2000 graphics mode only)
- AL = character
- Notes: for monochrome displays, a foreground of 1 with background 0 is
- underlined
- the blink bit may be reprogrammed to enable intense background colors
- using AX=1003h or by programming the CRT controller
- the foreground intensity bit (3) can be programmed to switch between
- character sets A and B on EGA and VGA cards, thus enabling 512
- simultaneous characters on screen. In this case the bit's usual
- function (intensity) is regularly turned off.
- in graphics modes, only characters drawn with white foreground pixels
- are matched by the pattern-comparison routine
- on the Tandy 2000, BH=FFh specifies that the current page should be
- used
- BUG: some IBM PC ROM BIOSes destroy BP when in graphics modes
- SeeAlso: AH=09h,AX=1003h,AX=1103h,AH=12h/BL=37h,AX=5001h
- Bitfields for character's display attribute:
- Bit(s) Description (Table 00014)
- 7 foreground blink or (alternate) background bright (see also AX=1003h)
- 6-4 background color (see #00015)
- 3 foreground bright or (alternate) alternate character set (see AX=1103h)
- 2-0 foreground color (see #00015)
- SeeAlso: #00026
- (Table 00015)
- Values for character color:
- Normal Bright
- 000b black dark gray
- 001b blue light blue
- 010b green light green
- 011b cyan light cyan
- 100b red light red
- 101b magenta light magenta
- 110b brown yellow
- 111b light gray white
- --------V-1009-------------------------------
- INT 10 - VIDEO - WRITE CHARACTER AND ATTRIBUTE AT CURSOR POSITION
- AH = 09h
- AL = character to display
- BH = page number (00h to number of pages - 1) (see #00010)
- background color in 256-color graphics modes (ET4000)
- BL = attribute (text mode) or color (graphics mode)
- if bit 7 set in <256-color graphics mode, character is XOR'ed
- onto screen
- CX = number of times to write character
- Return: nothing
- Notes: all characters are displayed, including CR, LF, and BS
- replication count in CX may produce an unpredictable result in graphics
- modes if it is greater than the number of positions remaining in the
- current row
- SeeAlso: AH=08h,AH=0Ah,AH=4Bh"GRAFIX",INT 17/AH=60h,INT 1F"SYSTEM DATA"
- SeeAlso: INT 43"VIDEO DATA",INT 44"VIDEO DATA"
- --------V-100A-------------------------------
- INT 10 - VIDEO - WRITE CHARACTER ONLY AT CURSOR POSITION
- AH = 0Ah
- AL = character to display
- BH = page number (00h to number of pages - 1) (see #00010)
- background color in 256-color graphics modes (ET4000)
- BL = attribute (PCjr, Tandy 1000 only) or color (graphics mode)
- if bit 7 set in <256-color graphics mode, character is XOR'ed
- onto screen
- CX = number of times to write character
- Return: nothing
- Notes: all characters are displayed, including CR, LF, and BS
- replication count in CX may produce an unpredictable result in graphics
- modes if it is greater than the number of positions remaining in the
- current row
- SeeAlso: AH=08h,AH=09h,AH=11h"Tandy 2000",AH=4Bh,INT 17/AH=60h
- SeeAlso: INT 1F"SYSTEM DATA",INT 43"VIDEO DATA",INT 44"VIDEO DATA"
- --------V-100B--BH00-------------------------
- INT 10 - VIDEO - SET BACKGROUND/BORDER COLOR
- AH = 0Bh
- BH = 00h
- BL = background/border color (border only in text modes)
- Return: nothing
- SeeAlso: AH=0Bh/BH=01h
- --------V-100B--BH01-------------------------
- INT 10 - VIDEO - SET PALETTE
- AH = 0Bh
- BH = 01h
- BL = palette ID
- 00h background, green, red, and brown/yellow
- 01h background, cyan, magenta, and white
- Return: nothing
- Note: this call was only valid in 320x200 graphics on the CGA, but newer
- cards support it in many or all graphics modes
- SeeAlso: AH=0Bh/BH=00h,MEM 0040h:0066h
- --------V-100B--BH02-------------------------
- INT 10 - Tandy 2000 - VIDEO - SET PALETTE ENTRY
- AH = 0Bh
- BH = 02h
- BL = palette entry number
- AL = new color value for palette entry
- Return: nothing
- Note: this interrupt is identical to INT 52 for Tandy 2000
- SeeAlso: INT 10/AH=00h,INT 10/AH=0Bh/BH=01h,INT 52"Tandy 2000"
- --------V-100C-------------------------------
- INT 10 - VIDEO - WRITE GRAPHICS PIXEL
- AH = 0Ch
- BH = page number
- AL = pixel color
- if bit 7 set, value is XOR'ed onto screen except in 256-color modes
- CX = column
- DX = row
- Return: nothing
- Desc: set a single pixel on the display in graphics modes
- Notes: valid only in graphics modes
- BH is ignored if the current video mode supports only one page
- SeeAlso: AH=0Dh,AH=46h
- --------V-100D-------------------------------
- INT 10 - VIDEO - READ GRAPHICS PIXEL
- AH = 0Dh
- BH = page number
- CX = column
- DX = row
- Return: AL = pixel color
- Desc: determine the current color of the specified pixel in grahics modes
- Notes: valid only in graphics modes
- BH is ignored if the current video mode supports only one page
- SeeAlso: AH=0Ch,AH=47h
- --------V-100E-------------------------------
- INT 10 - VIDEO - TELETYPE OUTPUT
- AH = 0Eh
- AL = character to write
- BH = page number
- BL = foreground color (graphics modes only)
- Return: nothing
- Desc: display a character on the screen, advancing the cursor and scrolling
- the screen as necessary
- Notes: characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted
- and do the expected things
- IBM PC ROMs dated 4/24/81 and 10/19/81 require that BH be the same as
- the current active page
- BUG: if the write causes the screen to scroll, BP is destroyed by BIOSes
- for which AH=06h destroys BP
- SeeAlso: AH=02h,AH=06h,AH=0Ah
- --------b-100E--CXABCD-----------------------
- INT 10 - V20-XT-BIOS - TELETYPE OUTPUT WITH ATTRIBUTE
- AH = 0Eh
- CX = ABCDh
- BP = ABCDh
- AL = character to write
- BH = page number
- BL = foreground color (text modes as well as graphics modes)
- Return: nothing
- Program: V20-XT-BIOS is a ROM BIOS replacement with extensions by Peter
- Koehlmann / c't magazine
- Desc: display a character on the screen, advancing the cursor and scrolling
- the screen as necessary
- Notes: characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted
- and do the expected things
- SeeAlso: INT 15/AH=84h"V20-XT-BIOS"
- --------V-100F-------------------------------
- INT 10 - VIDEO - GET CURRENT VIDEO MODE
- AH = 0Fh
- Return: AH = number of character columns
- AL = display mode (see #00010 at AH=00h)
- BH = active page (see AH=05h)
- Notes: if mode was set with bit 7 set ("no blanking"), the returned mode will
- also have bit 7 set
- EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
- (monochrome) in all extended-row text modes
- HP 200LX returns AL=07h (monochrome) if mode was set to AL=21h
- and always 80 resp. 40 columns in all text modes regardless of
- current zoom setting (see AH=D0h)
- when using a Hercules Graphics Card, additional checks are necessary:
- mode 05h: if WORD 0040h:0063h is 03B4h, may be in graphics page 1
- (as set by DOSSHELL and other Microsoft software)
- mode 06h: if WORD 0040h:0063h is 03B4h, may be in graphics page 0
- (as set by DOSSHELL and other Microsoft software)
- mode 07h: if BYTE 0040h:0065h bit 1 is set, Hercules card is in
- graphics mode, with bit 7 indicating the page (mode set by
- Hercules driver for Borland Turbo C)
- the Tandy 2000 BIOS is only documented as returning AL, not AH or BH
- SeeAlso: AH=00h,AH=05h,AX=10F2h,AX=1130h,AX=CD04h,MEM 0040h:004Ah
- --------V-100F56BX4756-----------------------
- INT 10 - VUIMAGE DISPLAY DRIVER (v2.20 and below)
- AX = 0F56h
- BX = 4756h
- CX = 4944h
- DL = function
- 01h installation check
- Return: AX = 5649h
- BX = 4443h
- CX = 5647h
- DH = 01h
- 02h get first video mode's parameters
- Return: AX = BIOS mode number
- BX = width in pixels
- CX = height in pixels
- DX = number of colors
- 03h get next video mode's parameters
- Return: as for DL=02h
- 04h display line???
- ES:DI -> record (see #00016)
- ???
- Return: ???
- Program: VUIMAGE is a shareware GIF/TIFF image viewer by Offe Enterprises
- Note: the use of TSR display drivers was discontinued after v2.20
- Index: installation check;VUIMAGE display driver
- Format of record for VUIMAGE Function 04h:
- Offset Size Description (Table 00016)
- 00h WORD row number
- 02h WORD starting column???
- 04h WORD ending column???
- ???
- --------V-100F--SIF123-----------------------
- INT 10 - FRIEZE v7.41+ - INSTALLATION CHECK
- AH = 0Fh
- SI = F123h
- DI = 321Fh
- Return: AH = number of character columns
- AL = display mode (see #00010 at AH=00h)
- BH = active page (see AH=05h)
- SI = DI = F345h if installed
- Notes: if mode was set with bit 7 set ("no blanking"), the returned mode will
- also have bit 7 set
- EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
- (monochrome) in all extended-row text modes
- SeeAlso: AH=0Fh"VIDEO",AH=4Bh"FRIEZE"
- --------V-1010-------------------------------
- INT 10 - BIOS Window Extension v1.1 - SET WINDOW COORDINATES
- AH = 10h
- CH,CL = row,column of upper left corner of window
- DH,DL = row,column of lower right corner of window
- Return: AL = status
- 00h successful
- 01h failed
- AH destroyed
- Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
- Note: when a window has been set, all output via AH=0Eh is restricted to
- the specified window
- SeeAlso: AH=11h"Window",AH=12h"Window"
- --------V-1010-------------------------------
- INT 10 - VIDEO - Eagle PC2 BIOS Rev. C - SET SCROLL SPEED
- AH = 10h
- AL = speed
- 00h fast
- 01h slow (scrolling only moves characters during vertical retrace)
- Return: AH = previous speed
- --------V-1010-------------------------------
- INT 10 - Tandy 2000 - VIDEO - GET/SET CHARACTER FONTS
- AH = 10h
- AL = control value
- bit 0: set character set instead of reading it
- bit 1: high 128 characters instead of low 128 characters
- ES:BX -> new character set if AL bit 0 set
- Return: ES:BX -> current character set if AL bit 0 clear on entry
- Notes: this interrupt is identical to INT 52 on Tandy 2000
- the character set consists of 16 bytes for each of the 128 characters,
- where each of the 16 bytes describes the pixels in one scan line,
- most significant bit leftmost
- SeeAlso: AH=00h,AH=0Bh/BH=02h,AH=11h"Tandy 2000",AH=12h"Tandy 2000"
- SeeAlso: INT 52"Tandy 2000"
- --------V-101000-----------------------------
- INT 10 - VIDEO - SET SINGLE PALETTE REGISTER (PCjr,Tandy,EGA,MCGA,VGA)
- AX = 1000h
- BL = palette register number (00h-0Fh)
- = attribute register number (undocumented) (see #00017)
- BH = color or attribute register value
- Return: nothing
- Notes: on MCGA, only BX = 0712h is supported
- under UltraVision, the palette locking status (see AX=CD01h)
- determines the outcome
- SeeAlso: AX=1002h,AX=1007h,AX=CD01h
- (Table 00017)
- Values for attribute register number:
- 10h attribute mode control register (should let BIOS control this)
- 11h overscan color register (see also AX=1001h)
- 12h color plane enable register (bits 3-0 enable corresponding
- text attribute bit)
- 13h horizontal PEL panning register
- 14h color select register
- --------V-101001-----------------------------
- INT 10 - VIDEO - SET BORDER (OVERSCAN) COLOR (PCjr,Tandy,EGA,VGA)
- AX = 1001h
- BH = border color (00h-3Fh)
- Return: nothing
- BUG: the original IBM VGA BIOS incorrectly updates the parameter save area
- and places the border color at offset 11h of the palette table
- rather than offset 10h
- Note: under UltraVision, the palette locking status (see AX=CD01h)
- determines the outcome
- SeeAlso: AX=1002h,AX=1008h,AX=CD01h
- --------V-101002-----------------------------
- INT 10 - VIDEO - SET ALL PALETTE REGISTERS (PCjr,Tandy,EGA,VGA)
- AX = 1002h
- ES:DX -> palette register list (see #00018)
- BH = 00h to avoid problems on some adapters
- Return: nothing
- Note: under UltraVision, the palette locking status (see AX=CD01h)
- determines the outcome
- SeeAlso: AX=1000h,AX=1001h,AX=1009h,AX=CD01h
- Format of palette register list:
- Offset Size Description (Table 00018)
- 00h 16 BYTEs colors for palette registers 00h through 0Fh
- 10h BYTE border color
- SeeAlso: #00461
- --------V-101003-----------------------------
- INT 10 - VIDEO - TOGGLE INTENSITY/BLINKING BIT (Jr, PS, TANDY 1000, EGA, VGA)
- AX = 1003h
- BL = new state
- 00h background intensity enabled
- 01h blink enabled
- BH = 00h to avoid problems on some adapters
- Return: nothing
- Notes: although there is no function to get the current status on adapters
- prior to the VGA, bit 5 of 0040h:0065h indicates the state; on the
- VGA, use AH=1Bh and check offset 2Dh of the returned data (see #00040)
- when configured for a monochrome display, the Boca Research Multi-EGA
- with ROM v M1.1 Type D has its screen disrupted if BH is not clear
- this call is reported to be "Get Cursor Position" on the Tandy
- 1000SL/TL
- SeeAlso: AH=08h,AH=1Bh
- --------V-101007-----------------------------
- INT 10 - VIDEO - GET INDIVIDUAL PALETTE REGISTER (VGA,UltraVision v2+)
- AX = 1007h
- BL = palette or attribute (undoc) register number (see #00017)
- Return: BH = palette or attribute register value
- Note: UltraVision v2+ supports this function even on color EGA systems in
- video modes 00h-03h, 10h, and 12h; direct programming of the palette
- registers will cause incorrect results because the EGA registers are
- write-only. To guard against older versions or unsupported video
- modes, programs which expect to use this function on EGA systems
- should set BH to FFh on entry.
- SeeAlso: AX=1000h,AX=1009h
- --------V-101008-----------------------------
- INT 10 - VIDEO - READ OVERSCAN (BORDER COLOR) REGISTER (VGA,UltraVision v2+)
- AX = 1008h
- Return: BH = border color (00h-3Fh)
- Note: (see AX=1007h)
- SeeAlso: AX=1001h
- --------V-101009-----------------------------
- INT 10 - VIDEO - READ ALL PALETTE REGISTERS AND OVERSCAN REGISTER (VGA)
- AX = 1009h
- ES:DX -> 17-byte buffer for palette register list (see #00018)
- Return: nothing
- Note: UltraVision v2+ supports this function even on color EGA systems in
- video modes 00h-03h, 10h, and 12h; direct programming of the palette
- registers will cause incorrect results because the EGA registers are
- write-only. To guard against older versions or unsupported video
- modes, programs which expect to use this function on EGA systems
- should set the ES:DX buffer to FFh before calling.
- SeeAlso: AX=1002h,AX=1007h,AX=CD02h
- --------V-101010-----------------------------
- INT 10 - VIDEO - SET INDIVIDUAL DAC REGISTER (VGA/MCGA)
- AX = 1010h
- BX = register number
- CH = new value for green (0-63)
- CL = new value for blue (0-63)
- DH = new value for red (0-63)
- Return: nothing
- SeeAlso: AX=1012h,AX=1015h
- --------V-101012-----------------------------
- INT 10 - VIDEO - SET BLOCK OF DAC REGISTERS (VGA/MCGA)
- AX = 1012h
- BX = starting color register
- CX = number of registers to set
- ES:DX -> table of 3*CX bytes where each 3 byte group represents one
- byte each of red, green and blue (0-63)
- Return: nothing
- SeeAlso: AX=1010h,AX=1017h,INT 62/AX=00A5h
- --------V-101013-----------------------------
- INT 10 - VIDEO - SELECT VIDEO DAC COLOR PAGE (VGA)
- AX = 1013h
- BL = subfunction
- 00h select paging mode
- BH = 00h select 4 blocks of 64
- BH = 01h select 16 blocks of 16
- 01h select page
- BH = page number (00h to 03h) or (00h to 0Fh)
- Return: nothing
- Note: this function is not valid in mode 13h
- SeeAlso: AX=101Ah
- --------V-101015-----------------------------
- INT 10 - VIDEO - READ INDIVIDUAL DAC REGISTER (VGA/MCGA)
- AX = 1015h
- BL = palette register number
- Return: DH = red value
- CH = green value
- CL = blue value
- AX destroyed by some BIOSes
- (e.g. Tseng ET4000 BIOS v8.00n always returns AX=00C9h)
- SeeAlso: AX=1010h,AX=1017h
- --------V-101017-----------------------------
- INT 10 - VIDEO - READ BLOCK OF DAC REGISTERS (VGA/MCGA)
- AX = 1017h
- BX = starting palette register
- CX = number of palette registers to read
- ES:DX -> buffer (3 * CX bytes in size) (see also AX=1012h)
- Return: buffer filled with CX red, green and blue triples
- SeeAlso: AX=1012h,AX=1015h,INT 62/AX=00A4h
- --------V-101018-----------------------------
- INT 10 U - VIDEO - SET PEL MASK (VGA/MCGA)
- AX = 1018h
- BL = new PEL value
- Return: nothing
- SeeAlso: AX=1019h
- --------V-101019-----------------------------
- INT 10 U - VIDEO - READ PEL MASK (VGA/MCGA)
- AX = 1019h
- Return: BL = value read
- SeeAlso: AX=1018h
- --------V-10101A-----------------------------
- INT 10 - VIDEO - GET VIDEO DAC COLOR-PAGE STATE (VGA)
- AX = 101Ah
- Return: BL = paging mode
- 00h four pages of 64
- 01h sixteen pages of 16
- BH = current page
- SeeAlso: AX=1013h
- --------V-10101B-----------------------------
- INT 10 - VIDEO - PERFORM GRAY-SCALE SUMMING (VGA/MCGA)
- AX = 101Bh
- BX = starting palette register
- CX = number of registers to convert
- Return: nothing
- Desc: convert the RGB values of one or more palette registers such that the
- resulting values are grays with the same intensities as the original
- colors
- SeeAlso: AH=12h/BL=33h
- --------V-1010E0-----------------------------
- INT 10 - VIDEO - Diamond Speedstar 24 - SET 24-BIT GRAPHICS MODE
- AX = 10E0h
- BL = video mode (see also #00010 at AH=00h)
- 2Eh = 640x480
- Return: ???
- SeeAlso: AH=00h,AX=10F0h
- --------V-1010F0-----------------------------
- INT 10 - VIDEO - Tseng ET-4000 BIOS - SET HiColor GRAPHICS MODE
- AX = 10F0h
- BL = video mode (see also #00010 at AH=00h)
- 13h = 320x200x32K
- 2Dh = 640x350x32K
- 2Eh = 640x480x32K
- 2Fh = 640x400x32K
- 30h = 800x600x32K
- 3Eh = 640x480x16M (Genoa 7900)
- FFh Tseng 24-bit color mode
- BH = mode
- 2Dh = 640x480
- 2Eh = 640x480x16M
- 2Fh = 640x400
- 30h = 800x600
- 38h = 1024x768??? (Tseng ET4000/W32i)
- Return: AL = 10h if supported
- AH = status
- 00h if successful
- other on error
- Desc: switch the display into a graphics mode with 15 or more bits per pixel
- Note: the Tseng HiColor BIOS extensions are supported by:
- Diamond Computer Systems SpeedStar HiColor VGA
- Everex Systems HC VGA
- Focus Information Systems 2theMax 4000
- Cardinal Technologies VGA732
- Orchid ProDesigner IIs Genoa 7900
- SeeAlso: AH=00h,AX=10E0h,AX=10F1h,AX=10F2h
- Index: video modes;Tseng Hi-Color
- --------V-1010F1-----------------------------
- INT 10 - VIDEO - Tseng ET-4000 BIOS - GET DAC TYPE
- AX = 10F1h
- Return: AL = 10h if supported
- BL = type of digital/analog converter (see #00019)
- Desc: determine which type of digital-to-analog converter is installed on the
- display board
- SeeAlso: AX=10F0h,AX=10F2h
- (Table 00019)
- Values for type of DAC:
- 00h normal VGA DAC
- 01h Sierra SC1148x HiColor DAC
- ---Diamond SpeedStar 24---
- 02h new Sierra SS24 DAC (24-bit)
- ---generic Tseng BIOS v8+ ---
- 02h Sierra Mark2 (15-bit) or Mark3 (15/16-bit) DAC
- 03h ATT20c490/1/2 (15/16/24-bit)
- 04h AcuMos ADAC1 (15/16/24-bit)
- 05h unknown 15/16/24-bit DAC
- 06h Cirrus Internal 15/16/24-bit (CL-GD54xx series adapters)
- 07h Diamond SS2410 (15/24-bit)
- 08h unknown 15/16/24-bit DAC
- 09h unknown 15/16/24-bit DAC
- else other HiColor DAC
- --------V-1010F2-----------------------------
- INT 10 u - VIDEO - Tseng ET-4000 BIOS - CHECK IF HiColor MODE/SET HiColor MODE
- AX = 10F2h
- BL = function
- 00h get current HiColor mode
- 01h set 15-bit HiColor mode
- 02h set 16-bit HiColor mode
- Return: AX = 0010h if supported
- BL = video mode type
- 00h not in HiColor mode
- 01h 15-bit RGB mode
- 02h 16-bit RGB mode
- 03h 24-bit RGB mode
- Desc: determine whether the display is in a graphics mode with 15 or more
- bits per pixel color resolution
- Note: set (BL=01h/02h) only works if already in a HiColor mode
- SeeAlso: AH=0Fh,AX=10F0h,AX=10F1h
- --------V-1011-------------------------------
- INT 10 - BIOS Window Extension v1.1 - GET WINDOW COORDINATES
- AH = 11h
- Return: CH,CL = row,column of upper left corner
- DH,DL = row,column of lower right corner
- Desc: determine the portion of the display to which output is restricted
- Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
- SeeAlso: AH=10h"Window",AH=12h"Window"
- --------V-1011-------------------------------
- INT 10 - Tandy 2000 - VIDEO - WRITE ATTRIBUTE ONLY
- AH = 11h
- BL = new character attribute (text modes) or color (graphics)
- CX = number of times to write attribute
- Return: nothing
- Note: this interrupt is identical to INT 52 on Tandy 2000
- SeeAlso: AH=0Ah,AH=0Bh/BH=02h,AH=11h"Tandy 2000",AH=12h"Tandy 2000"
- SeeAlso: INT 52"Tandy 2000"
- --------V-101100-----------------------------
- INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD USER-SPECIFIED PATTERNS (PS,EGA,VGA)
- AX = 1100h
- ES:BP -> user table
- CX = count of patterns to store
- DX = character offset into map 2 block
- BL = block to load in map 2
- BH = number of bytes per character pattern
- Return: nothing
- Notes: This function will cause a mode set, completely resetting
- the video environment, but without clearing the video buffer
- the current block specifiers may be determined with INT 10/AH=1Bh,
- looking at offsets 2Bh and 2Ch of the returned data (VGA only)
- (see AH=1Bh,#00040)
- SeeAlso: AX=1101h,AX=1102h,AX=1103h,AX=1104h,AX=1110h,AH=1Bh,AX=CD10h
- SeeAlso: MEM 0040h:0084h
- Index: text mode;font|text mode;screen rows
- --------V-101101-----------------------------
- INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM MONOCHROME PATTERNS (PS,EGA,VGA)
- AX = 1101h
- BL = block to load
- Return: nothing
- Notes: (see also AX=1100h)
- This function will cause a mode set, completely resetting
- the video environment, but without clearing the video buffer
- the "monochrome" patters are 8x14 pixels in size
- SeeAlso: AX=1100h,AX=1102h,AX=1103h,AX=1104h,AX=1111h,AH=1Bh,AX=CD10h
- SeeAlso: MEM 0040h:0084h
- Index: text mode;font|text mode;screen rows
- --------V-101102-----------------------------
- INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM 8x8 DBL-DOT PATTERNS (PS,EGA,VGA)
- AX = 1102h
- BL = block to load
- Return: nothing
- Notes: (see AX=1100h)
- SeeAlso: AX=1100h,AX=1101h,AX=1103h,AX=1104h,AX=1112h,AH=1Bh,AX=CD10h
- SeeAlso: MEM 0040h:0084h
- --------V-101103-----------------------------
- INT 10 - VIDEO - TEXT-MODE CHARGEN - SET BLOCK SPECIFIER (PS,EGA,VGA)
- AX = 1103h
- BL = block specifier (see #00020)
- Return: nothing
- Notes: (see also AX=1110h)
- This function allows dual character sets to appear on screen
- simultaneously
- SeeAlso: AX=1100h,AX=1101h,AX=1102h,AX=1104h,AH=1Bh,AX=CD10h
- SeeAlso: MEM 0040h:0084h
- Index: text mode;font|text mode;screen rows
- Bitfields for block specifier:
- Bit(s) Description (Table 00020)
- ---EGA/MCGA---
- 0,1 block selected by characters with attribute bit 3 clear
- 2,3 block selected by characters with attribute bit 3 set
- ---VGA---
- 0,1,4 block selected by characters with attribute bit 3 clear
- 2,3,5 block selected by characters with attribute bit 3 set
- --------V-101104-----------------------------
- INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM 8x16 CHARACTER SET (VGA)
- AX = 1104h
- BL = block to load
- Return: nothing
- Notes: (see AX=1100h)
- SeeAlso: AX=1100h,AX=1101h,AX=1102h,AX=1103h,AX=1114h,AH=1Bh,AX=CD10h
- SeeAlso: MEM 0040h:0084h
- Index: text mode;font|text mode;screen rows
- --------V-1011-------------------------------
- INT 10 - VIDEO - Realtek RTVGA - TEXT-MODE CHARACTER GENERATOR FUNCTIONS
- AH = 11h
- AL = 07h load user-specified patterns and recalculate mode parms
- parameters are the same as for AX=1110h
- AL = 08h load monochrome patterns (8x14) and recalculate mode parms
- parameters are the same as for AX=1111h
- AL = 09h load ROM 8 by 8 double-dot patterns and recalculate mode parms
- parameters are the same as for AX=1112h
- AL = 0Bh load ROM 8x16 character set (VGA) and recalculate mode parms
- parameters are the same as for AX=1114h
- Note: these functions should only be called under the same conditions as
- AL=1xh (see AX=1110h"EGA")
- SeeAlso: AX=1100h,AX=1110h"CHARGEN",AX=1110h"Realtek",MEM 0040h:0084h
- Index: text mode;font|text mode;screen rows
- --------V-10110F-----------------------------
- INT 10 - VIDEO - Realtek RTVGA - SET USER 8x8 GRAPHICS CHARACTERS
- AX = 110Fh
- ES:BP -> user table for INT 1F
- Return: nothing
- Note: this function is meant to be called immediately after a mode set;
- results are unpredictable at other times
- SeeAlso: AX=1110h"Realtek",AX=1111h"Realtek",AX=1112h"Realtek",AX=1120h
- --------V-101110-----------------------------
- INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD USER-SPECIFIED PATTERNS (PS,EGA,VGA)
- AX = 1110h
- ES:BP -> user table
- CX = count of patterns to store
- DX = character offset into map 2 block
- BL = block to load in map 2
- BH = number of bytes per character pattern
- Return: nothing
- Notes: This function will cause a mode set, completely resetting
- the video environment, but without clearing the video buffer
- This function is designed to be called immediately after a mode set,
- it is equivalent to AX=110xh except that:
- Page 0 must be active.
- Bytes/character is recalculated.
- Max character rows is recalculated.
- CRT buffer length is recalculated.
- CRTC registers are reprogrammed as follows:
- R09 = bytes/char-1 ; max scan line (mode 7 only)
- R0A = bytes/char-2 ; cursor start
- R0B = 0 ; cursor end
- R12 = ((rows+1)*(bytes/char))-1 ; vertical display end
- R14 = bytes/char ; underline loc
- (*** BUG: should be 1 less ***)
- the current block specifiers may be determined with INT 10/AH=1Bh,
- looking at offsets 2Bh and 2Ch of the returned data (VGA only)
- (see AH=1Bh,#00040)
- SeeAlso: AX=1100h,AX=1111h,AX=1112h,AX=1114h,AH=1Bh,AX=CD10h,MEM 0040h:0084h
- Index: text mode;font|text mode;screen rows
- --------V-101110-----------------------------
- INT 10 - VIDEO - Realtek RTVGA - SET USER GRAPHICS CHARACTERS
- AX = 1110h
- ES:BP -> user table
- CX = bytes per character
- BL = row specifier
- 00h user set
- DL = number of rows
- 01h 14 rows
- 02h 25 rows
- 03h 43 rows
- Return: nothing
- Note: this function is meant to be called immediately after a mode set;
- results are unpredictable at other times
- SeeAlso: AX=110Fh"Realtek",AX=1112h"Realtek",AX=1121h
- --------V-101111-----------------------------
- INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM MONOCHROME PATTERNS (PS,EGA,VGA)
- AX = 1111h
- BL = block to load
- Return: nothing
- Notes: (see AX=1110h)
- the "monochrome" patters are 8x14 pixels in size
- SeeAlso: AX=1101h,AX=1110h,AX=1112h,AX=1114h,AH=1Bh,AX=CD10h
- --------V-101111-----------------------------
- INT 10 - VIDEO - Realtek RTVGA - SET ROM 8x14 GRAPHICS CHARACTERS
- AX = 1111h
- BL = row specifier (see AX=1121h)
- Return: nothing
- Note: this function is meant to be called immediately after a mode set;
- results are unpredictable at other times
- SeeAlso: AX=110Fh"Realtek",AX=1110h"Realtek",AX=1122h
- --------V-101112-----------------------------
- INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM 8x8 DBL-DOT PATTERNS (PS,EGA,VGA)
- AX = 1112h
- BL = block to load
- Return: nothing
- Notes: (see AX=1110h)
- SeeAlso: AX=1103h,AX=1110h,AX=1111h,AX=1114h,AH=1Bh,AX=CD10h
- --------V-101112-----------------------------
- INT 10 - VIDEO - Realtek RTVGA - SET ROM 8x8 DOUBLE-DOT CHARACTERS
- AX = 1112h
- BL = row specifier (see AX=1121h)
- Return: nothing
- Note: this function is meant to be called immediately after a mode set;
- results are unpredictable at other times
- SeeAlso: AX=110Fh"Realtek",AX=1110h"Realtek",AX=1111h"Realtek",AX=1123h
- --------V-101114-----------------------------
- INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM 8x16 CHARACTER SET (VGA)
- AX = 1114h
- BL = block to load
- Return: nothing
- Notes: (see AX=1110h)
- SeeAlso: AX=1104h,AX=1110h,AX=1111h,AX=1112h,AH=1Bh,AX=CD10h
- --------V-101118-----------------------------
- INT 10 - IBM SurePath BIOS - Officially "Private" Function
- AX = 1118h
- --------V-101120-----------------------------
- INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET USER 8x8 GRAPHICS CHARS (PS,EGA,VGA)
- AX = 1120h
- ES:BP -> user table for INT 1F
- Return: nothing
- Note: this function is meant to be called immediately after a mode set;
- results are unpredictable at other times
- SeeAlso: AX=1121h,AX=1122h,AX=1123h,AX=1124h,AX=1129h,INT 1F"SYSTEM DATA"
- SeeAlso: INT 43"VIDEO DATA"
- --------V-101121-----------------------------
- INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET USER GRAPHICS CHARACTERS (PS,EGA,VGA)
- AX = 1121h
- ES:BP -> user table
- CX = bytes per character
- BL = row specifier
- 00h user set
- DL = number of rows
- 01h 14 rows
- 02h 25 rows
- 03h 43 rows
- Return: AL = new number of rows (Diamond Stealth64 Video)
- Note: this function is meant to be called immediately after a mode set;
- results are unpredictable at other times
- SeeAlso: AX=1120h,AX=1122h,AX=1123h,AX=1124h,AX=1129h"Compaq"
- SeeAlso: AX=1129h"Diamond",INT 1F"SYSTEM DATA",INT 43"VIDEO DATA"
- --------V-101122-----------------------------
- INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET ROM 8x14 GRAPHICS CHARS (PS,EGA,VGA)
- AX = 1122h
- BL = row specifier (see AX=1121h)
- Return: nothing
- Notes: this function is meant to be called immediately after a mode set;
- results are unpredictable at other times
- UltraVision v2+ sets INT 43 to the appropriate font on this call
- SeeAlso: AX=1111h,AX=1120h,AX=1121h,AX=1123h,AX=1124h,AX=1129h
- SeeAlso: INT 1F"SYSTEM DATA",INT 43"VIDEO DATA"
- --------V-101123-----------------------------
- INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET ROM 8x8 DOUBLE-DOT CHARS (PS,EGA,VGA)
- AX = 1123h
- BL = row specifier (see AX=1121h)
- Return: nothing
- Notes: this function is meant to be called immediately after a mode set;
- results are unpredictable at other times
- UltraVision v2+ sets INT 43 to the appropriate font on this call
- SeeAlso: AX=1112h,AX=1120h,AX=1121h,AX=1122h,AX=1124h,AX=1129h
- SeeAlso: INT 1F"SYSTEM DATA",INT 43"VIDEO DATA"
- --------V-101124-----------------------------
- INT 10 - VIDEO - GRAPH-MODE CHARGEN - LOAD 8x16 GRAPHICS CHARS (VGA,MCGA)
- AX = 1124h
- BL = row specifier (see AX=1121h)
- Return: nothing
- Notes: this function is meant to be called immediately after a mode set;
- results are unpredictable at other times
- UltraVision v2+ sets INT 43 to the appropriate font on this call
- SeeAlso: AX=1120h,AX=1121h,AX=1122h,AX=1123h,AX=1129h
- SeeAlso: INT 1F"SYSTEM DATA",INT 43"VIDEO DATA"
- --------V-101129-----------------------------
- INT 10 - VIDEO - GRAPH-MODE CHARGEN - LOAD 8x16 GRAPH CHARS (Compaq Systempro)
- AX = 1129h
- BL = row specifier (see AX=1121h)
- Return: nothing
- Notes: this function is meant to be called immediately after a mode set;
- results are unpredictable at other times
- UltraVision v2+ sets INT 43 to the appropriate font on this call
- SeeAlso: AX=1120h,AX=1121h,AX=1122h,AX=1123h,AX=1124h,INT 1F"SYSTEM DATA"
- SeeAlso: INT 43"VIDEO DATA"
- --------V-101129-----------------------------
- INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET USER GRAPHICS CHARACTERS (Diamond)
- AX = 1129h
- DI:BP -> user table
- CX = bytes per character
- BL = row specifier
- 00h user set
- DL = number of rows
- 01h 14 rows
- 02h 25 rows
- 03h 43 rows
- Return: AL = new number of rows
- Notes: this function is meant to be called immediately after a mode set;
- results are unpredictable at other times
- supported by Diamond Stealth64 Video
- SeeAlso: AX=1120h,AX=1122h,AX=1123h,AX=1124h,INT 1F"SYSTEM",INT 43"VIDEO"
- --------V-101130-----------------------------
- INT 10 - VIDEO - GET FONT INFORMATION (EGA, MCGA, VGA)
- AX = 1130h
- BH = pointer specifier
- 00h INT 1Fh pointer
- 01h INT 43h pointer
- 02h ROM 8x14 character font pointer
- 03h ROM 8x8 double dot font pointer
- 04h ROM 8x8 double dot font (high 128 characters)
- 05h ROM alpha alternate (9 by 14) pointer (EGA,VGA)
- 06h ROM 8x16 font (MCGA, VGA)
- 07h ROM alternate 9x16 font (VGA only) (see #00021)
- 11h (UltraVision v2+) 8x20 font (VGA) or 8x19 font (autosync EGA)
- 12h (UltraVision v2+) 8x10 font (VGA) or 8x11 font (autosync EGA)
- Return: ES:BP = specified pointer
- CX = bytes/character of on-screen font (not the requested font!)
- DL = highest character row on screen
- Note: for UltraVision v2+, the 9xN alternate fonts follow the corresponding
- 8xN font at ES:BP+256N
- BUG: the IBM EGA and some other EGA cards return in DL the number of rows on
- screen rather than the highest row number (which is one less).
- SeeAlso: AX=1100h,AX=1103h,AX=1120h,INT 1F"SYSTEM DATA",INT 43"VIDEO DATA"
- Format of alternate font table [array]:
- Offset Size Description (Table 00021)
- 00h BYTE character to be replaced (00h = end of table)
- 01h N BYTEs graphics data for character, one byte per scan line
- --------V-101130BX4D4F-----------------------
- INT 10 - M10_SCR.COM v3.5+ - INSTALLATION CHECK
- AX = 1130h
- BX = 4D4Fh
- Return: CX = 4F4Dh if installed
- ES:BP -> M10_SCR INT 10 handler
- Program: M10_SCR is a shareware extended text mode and font driver by
- I.V. Morozov
- SeeAlso: INT 16/AX=4D4Fh
- --------V-1012-------------------------------
- INT 10 - BIOS Window Extension v1.1 - GET BLANKING ATTRIBUTE
- AH = 12h
- Return: BH = attribute to use on blanked lines when scrolling
- Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
- SeeAlso: AH=11h"Window",AH=12h"Window"
- --------V-1012-------------------------------
- INT 10 - Tandy 2000 - VIDEO - SCROLL WINDOW
- AH = 12h
- AL = number of rows or columns to scroll
- BH = buffer flag
- 00h data in user buffer
- ES:SI -> buffer containing character/attribute pairs
- 01h no buffer, fill emptied rows/columns with blanks
- BL = direction in which to scroll
- 00h up
- 01h down
- 02h left
- 03h right
- CH,CL = row,column of upper left corner of scroll area
- DH,DL = row,column of lower right corner
- Return: nothing
- Notes: this interrupt is identical to INT 52 on Tandy 2000
- the user buffer, if supplied, must be organized by row; regardless of
- the scroll direction, all character/attribute pairs for the first
- row are first, then the pairs for the second row, etc.
- SeeAlso: AH=00h,AH=0Bh/BH=02h,AH=11h"Tandy 2000",AH=12h"Tandy 2000"
- SeeAlso: INT 52"Tandy"
- --------V-1012--BL10-------------------------
- INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, EGA, VGA, MCGA) - GET EGA INFO
- AH = 12h
- BL = 10h
- Return: BH = video state
- 00h color mode in effect (I/O port 3Dxh)
- 01h mono mode in effect (I/O port 3Bxh)
- BL = installed memory (00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K)
- CH = feature connector bits (see #00022)
- CL = switch settings (see #00023,#00024)
- AH destroyed (at least by Tseng ET4000 BIOS v8.00n)
- Note: one possible check for the presence of an EGA or later display card
- is to call this function with BH=FFh; if not present, BH will be
- unchanged on return
- another installation check is used by Athena Digital's HGCIBM, which
- sets CX to FFFFh on calling and checks whether it has been changed
- on return
- Index: installation check;EGA
- Bitfields for feature connector bits:
- Bit(s) Description (Table 00022)
- 0 FEAT 1 line, state 2
- 1 FEAT 0 line, state 2
- 2 FEAT 1 line, state 1
- 3 FEAT 0 line, state 1
- 4-7 unused (0)
- Bitfields for switch settings:
- Bit(s) Description (Table 00023)
- 0 switch 1 OFF
- 1 switch 2 OFF
- 2 switch 3 OFF
- 3 switch 4 OFF
- 4-7 unused
- (Table 00024)
- Values for switch settings on original EGA/VGA:
- 00h primary MDA/HGC, secondary EGA+ 40x25
- 01h-03h primary MDA/HGC, secondary EGA+ 80x25
- 04h primary CGA 40x25, secondary EGA+ 80x25 mono
- 05h primary CGA 80x25, secondary EGA+ 80x25 mono
- 06h primary EGA+ 40x25, secondary MDA/HGC (optional)
- 07h-09h primary EGA+ 80x25, secondary MDA/HGC (optional)
- 0Ah primary EGA+ 80x25 mono,secondary CGA 40x25 (optional)
- 0Bh primary EGA+ 80x25 mono,secondary CGA 80x25 (optional)
- --------V-1012--BL11-------------------------
- INT 10 - VIDEO - Trident TVGA 8800/8900/9000 BIOS - GET BIOS INFO
- AH = 12h
- BL = 11h
- Return: AL = 12h if function supported
- BL = ??? (10h)
- ES:BP -> BIOS info structure (see #00025)
- SeeAlso: AH=12h/BL=12h"TRIDENT"
- Format of Trident BIOS Info structure:
- Offset Size Description (Table 00025)
- 00h BYTE ??? (0000h)
- 01h BYTE OEM Code (00h for original Trident)
- 02h WORD ID??? (1073h for 8800BR, 1074 for 8800CS)
- 04h 8 BYTEs BIOS date ('mm/dd/yy')
- 0Ch WORD ???
- 0Eh 8 BYTEs BIOS Version (' C3-128 ', ' C3-129 ')
- --------V-1012--BL12-------------------------
- INT 10 - VIDEO - Trident TVGA 8800/8900/9000 BIOS - GET VIDEO RAM SIZE
- AH = 12h
- BL = 12h
- Return: AL = 12h if function supported
- AH = number of 256K banks of RAM installed
- (read from CRTC register 1Fh)
- SeeAlso: AH=12h/BL=11h"TRIDENT"
- --------V-1012--BL20-------------------------
- INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS,EGA,VGA,MCGA) - ALTERNATE PRTSC
- AH = 12h
- BL = 20h select alternate print screen routine
- Return: nothing
- Desc: installs a PrtSc routine from the video card's BIOS to replace the
- default PrtSc handler from the ROM BIOS, which usually does not
- understand screen heights other than 25 lines
- Note: some adapters disable print-screen instead of enhancing it
- SeeAlso: INT 05"PRINT SCREEN"
- --------V-1012--BL2E-------------------------
- INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
- AH = 12h
- BL = 2Eh
- Return: nothing
- Note: due to an omitted end-of-list marker, these versions of the BIOS will
- crash the system on this function
- --------V-1012--BL30-------------------------
- INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - SELECT VERTICAL RESOLUTION
- AH = 12h
- BL = 30h
- AL = vertical resolution
- 00h 200 scan lines
- 01h 350 scan lines
- 02h 400 scan lines
- Return: AL = 12h if function supported
- Desc: specify the number of scan lines used to display text modes
- Note: the specified resolution will take effect on the next mode set
- SeeAlso: AH=00h
- --------V-1012--BL31-------------------------
- INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - PALETTE LOADING
- AH = 12h
- BL = 31h
- AL = new state
- 00h enable default palette loading
- 01h disable default palette loading
- Return: AL = 12h if function supported
- Desc: specify whether a default palette should be loaded when the display
- mode is set
- SeeAlso: AH=00h
- --------V-1012--BL32-------------------------
- INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - VIDEO ADDRESSING
- AH = 12h
- BL = 32h
- AL = new state
- 00h enable video addressing
- 01h disable video addressing
- Return: AL = 12h if function supported
- Desc: specify whether the CPU should have access to video memory and the
- display adapters I/O registers
- --------V-1012--BL33-------------------------
- INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - GRAY-SCALE SUMMING
- AH = 12h
- BL = 33h
- AL = new state
- 00h enable gray scale summing
- 01h disable gray scale summing
- Return: AL = 12h if function supported
- Desc: specify whether or not colors should be converted to gray scale when
- palette or color registers are loaded
- SeeAlso: AX=101Bh,AX=BF06h,AX=BF08h
- --------V-1012--BL34-------------------------
- INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - CURSOR EMULATION
- AH = 12h
- BL = 34h
- AL = new state
- 00h enable alphanumeric cursor emulation
- 01h disable alphanumeric cursor emulation
- Return: AL = 12h if function supported
- Desc: specify whether the BIOS should automatically remap cursor start/end
- according to the current character height in text modes
- SeeAlso: AH=01h,AH=03h
- --------V-1012--BL35-------------------------
- INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS) - DISPLAY-SWITCH INTERFACE
- AH = 12h
- BL = 35h
- AL = subfunction
- 00h initial adapter video off
- 01h initial planar video on
- 02h switch active video off
- 03h switch inactive video on
- 80h *UNDOCUMENTED* set system board video active flag
- ES:DX -> buffer for 128 byte save area (if AL = 00h-03h)
- Return: AL = 12h if function supported
- Desc: switch between two video adapters which may otherwise have address
- conflicts
- SeeAlso: AX=BF00h,AX=BF01h,INT 6D"VGA"
- --------V-1012--BL36-------------------------
- INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, VGA) - VIDEO REFRESH CONTROL
- AH = 12h
- BL = 36h
- AL = new state
- 00h enable refresh
- 01h disable refresh
- Return: AL = 12h if function supported
- Desc: specify whether the contents of video memory should be displayed on
- the screen; disabling refresh effectively blanks the screen
- Note: when display refresh is disabled, the entire screen displays the color
- specified by the DAC color register 00h; thus to actually blank the
- screen, the application must first ensure that that register has been
- set to black
- BUG: GEM/VIEWMAX ET3000 and ET4000 drivers dated 6/23/88 do not correctly
- reenable refresh after the screen has been blanked due to inactivity,
- resulting in a total loss of video synchronization
- SeeAlso: AX=BF05h
- --------V-1012--BL37-------------------------
- INT 10 - VIDEO - XGA - MAINFRAME INTERACTIVE SUPPORT
- AH = 12h
- BL = 37h
- AL = text attribute type (00h normal VGA, 01h mainframe type)
- Return: AL = 12h if supported
- SeeAlso: #00026,AH=08h,#00042
- Bitfields for XGA mainframe type character attributes:
- Bit(s) Description (Table 00026)
- 7 blink double rate (75% ON time) or use color 8 as background
- (see AX=1003h)
- 6 reverse video
- 5 underlined
- 4 left-most and right-most dots of underline area inverted
- 3 foreground intensity/character font select
- 2-0 foreground color
- SeeAlso: #00014,#00036
- --------V-1012--BL38-------------------------
- INT 10 - IBM SurePath BIOS - Officially "Private" Function
- AH = 12h
- BL = 38h
- SeeAlso: AX=1118h,AH=12h/BL=39h
- --------V-1012--BL39-------------------------
- INT 10 - IBM SurePath BIOS - Officially "Private" Function
- AH = 12h
- BL = 39h
- SeeAlso: AX=1118h,AH=12h/BL=38h,AH=12h/BL=3Ah
- --------V-1012--BL3A-------------------------
- INT 10 - IBM SurePath BIOS - Officially "Private" Function
- AH = 12h
- BL = 3Ah
- SeeAlso: AX=1118h,AH=12h/BL=39h
- --------V-1012--BL53-------------------------
- INT 10 - Tseng ET-4000 BIOS v8.00 (06/07/91) - BUG
- AH = 12h
- BL = 53h
- Note: due to an omitted end-of-list marker, this version of the BIOS will
- crash the system on this function
- --------V-1012--BL57-------------------------
- INT 10 - Tseng ET-4000 BIOS v8.00 (06/07/91) - BUG
- AH = 12h
- BL = 57h
- Note: due to an omitted end-of-list marker, this version of the BIOS will
- crash the system on this function
- --------V-1012--BH55-------------------------
- INT 10 - VIDEO - ALTERNATE FUNC SELECT (ATI,Tatung,Taxan) - ENHANCED FEATURES
- AH = 12h
- BH = 55h
- BL = subfunction
- 00h disable enhanced features
- 01h enable enhanced features
- 02h get status
- Return: AL = status flags (see #00027)
- 03h disable register trapping (CGA emulation)
- 04h enable register trapping
- 05h program video mode
- ES:BP -> video mode table (see #00028)
- 06h get mode table
- AL = video mode
- Return: ES:BP -> table suitable for mode AL
- (and subfunc BL=05h) (see #00028)
- BP = FFFFh on error
- SI = 0000h (ATI Mach32)
- Note: the ATI Mouse driver (MOUSE.COM/MOUSE.SYS) uses subfunction 06h to get
- the mode table for mode 03h, and then looks for a signature string
- beginning within 32 bytes of the offset specified by the word at
- ES:000Ch
- SeeAlso: AH=FFh"Oak"
- Index: installation check;ATI video adapters
- Bitfields for status flags:
- Bit(s) Description (Table 00027)
- 3 set if enhanced features enabled
- 7-5 monitor type
- 000 PS/2 mono
- 001 PS/2 color
- 010 multi-sync
- 011 Taxan 650 25kHz
- 100 RGB
- 101 mono
- 110 EGA
- 111 Compaq internal
- Format of ATI VGA Wonder video mode table:
- Offset Size Description (Table 00028)
- 00h BYTE number of columns
- 01h BYTE maximum row (number of rows - 1)
- 02h BYTE scan lines per row
- 03h WORD video buffer size in bytes
- 05h 4 BYTEs values for Sequencer registers 1-4
- 09h BYTE value for Miscellaneous Output register
- 0Ah 25 BYTEs values for CRTC registers 00h-18h
- 00h horizontal total size (chars)
- 01h horizontal displayed (chars)
- 02h horizontal sync position (chars)
- 03h horizontal sync width (chars)
- 04h vertical total size (char rows)
- 05h vertical total adjust (scan lines)
- 06h vertical displayed (char rows)
- 07h vertical sync position (char rows)
- 08h interlace mode
- 09h max scan line in row
- 0Ah cursor start scan line
- 0Bh cursor end scan line
- 0Ch screen memory start (high)
- 0Dh screen memory start (low)
- 0Eh cursor address (high)
- 0Fh cursor address (low)
- 10h light pen (high)
- 11h light pen (low)
- 23h 20 BYTEs default palette (values for Attribute Controller regs 00h-13h)
- 37h 9 BYTEs values for Graphics Controller registers 00h-08h
- --------V-1012--BL74-------------------------
- INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
- AH = 12h
- BL = 74h
- Note: due to an omitted end-of-list marker, these versions of the BIOS will
- crash the system on this function
- --------V-1012--BL80-------------------------
- INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
- AH = 12h
- BL = 80h
- Note: due to an omitted end-of-list marker, these versions of the BIOS will
- crash the system on this function
- --------V-1012--BL80-------------------------
- INT 10 - Cirrus Logic BIOS - INQUIRE VGA TYPE
- AH = 12h
- BL = 80h
- Return: AX = controller type in bits 13-0 (see #00029)
- bit 14: ???
- bit 15: ???
- BL = silicon revision number (bit 7 set if not available)
- BH = ???
- bit 2 set if using CL-GD 6340 LCD interface
- SeeAlso: AH=12h/BL=81h,AH=12h/BL=82h,AH=12h/BL=85h,AH=12h/BL=9Ah,AH=12h/BL=A1h
- (Table 00029)
- Values for Cirrus Logic video controller type:
- 0000h no extended alternate select support
- 0001h reserved
- 0002h CL-GD510/520
- 0003h CL-GD610/620
- 0004h CL-GD5320
- 0005h CL-GD6410
- 0006h CL-GD5410
- 0007h CL-GD6420
- 0008h CL-GD6412
- 0010h CL-GD5401
- 0011h CL-GD5402
- 0012h CL-GD5420
- 0013h CL-GD5422
- 0014h CL-GD5424
- 0015h CL-GD5426
- 0016h CL-GD5420r1
- 0017h CL-GD5402r1
- 0018h CL-GD5428
- 0019h CL-GD5429
- 0020h CL-GD6205/15/25
- 0021h CL-GD6215
- 0022h CL-GD6225
- 0023h CL-GD6235
- 0024h CL-GD6245
- 0030h CL-GD5432
- 0031h CL-GD5434
- 0032h CL-GD5430
- 0033h CL-GD5434 rev. E and F
- 0035h CL-GD5440
- 0036h CL-GD5436
- 0039h CL-GD5446
- 0040h CL-GD6440
- 0041h CL-GD7542 (Nordic)
- 0042h CL-GD7543 (Viking)
- 0043h CL-GD7541 (Nordic Lite)
- 0050h CL-GD5452 (Northstar)
- 0052h CL-GD5452 (Northstar) ???
- SeeAlso: #00732,#00743
- --------V-1012--BL81-------------------------
- INT 10 - Cirrus Logic BIOS - GET BIOS VERSION NUMBER
- AH = 12h
- BL = 81h
- Return: AH = BIOS major version
- AL = BIOS minor version
- SeeAlso: AH=12h/BL=80h,AH=12h/BL=82h
- --------V-1012--BL82-------------------------
- INT 10 - Cirrus Logic BIOS - GET DESIGN REVISION CODE
- AH = 12h
- BL = 82h
- Return: AL = chip revision
- AH = ??? (AFh for v1.01)
- SeeAlso: AH=12h/BL=80h,AH=12h/BL=81h,#00732 at INT 1A/AX=B102h
- --------V-1012--BL84-------------------------
- INT 10 - Cirrus Logic BIOS v3.02 - INQUIRE OPTIONS
- AH = 12h
- BL = 84h
- Return: AX = user options word (see #00030)
- SeeAlso: AH=12h/BL=89h,AH=12h/BL=8Ah,AH=12h/BL=8Bh,AH=12h/BL=8Ch,AH=12h/BL=8Fh
- SeeAlso: AH=12h/BL=90h,AH=12h/BL=9Ah
- Bitfields for Cirrus Logic user options word:
- Bit(s) Description (Table 00030)
- 1,0 centering
- 00 vertical centered, 01 from bottom, 10 from top, 11 reserved
- 3,2 720-dot fix-up options
- 00 OR every 8th and 9th pixel
- 01 display MGA mode from left
- 10 display MGA mode from right
- 11 skip every 9th pixel
- 4 ???
- 7-5 video mode (001 CGA, 010 MGA, 011 EGA, 100 VGA)
- 8 external monitor enabled instead of LCD panel
- 9 vertical expand mode enabled
- 10 8-bit mode instead of 16-bit mode
- 11 normal video rather than reverse video (for LCD)
- 12 attribute automap rather than attribute emulation
- 13 bold mode disabled (default)
- 14 fast bandwidth
- 15 ???
- --------V-1012--BL85-------------------------
- INT 10 - Cirrus Logic BIOS - GET INSTALLED MEMORY
- AH = 12h
- BL = 85h
- Return: AL = number of 64K banks of video memory
- SeeAlso: AH=12h/BL=80h,AH=12h/BL=93h
- --------V-1012--BL89-------------------------
- INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - EN/DISABLE REVERSE VIDEO MODE
- AH = 12h
- BL = 89h
- AL = new state (00h enabled, 01h disabled)
- Return: nothing
- SeeAlso: AH=12h/BL=84h,AH=12h/BL=8Ah,AH=12h/BL=8Bh
- --------V-1012--BL8A-------------------------
- INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SET FRAME COLOR
- AH = 12h
- BL = 8Ah
- AL = new gray-scale color (00h = black to 0Fh = white)
- Return: nothing
- SeeAlso: AH=12h/BL=84h,AH=12h/BL=89h,AH=12h/BL=8Fh
- --------V-1012--BL8B-------------------------
- INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - ENABLE/DISABLE BOLD MODE
- AH = 12h
- BL = 8Bh
- AL = new state (00h enabled, 01h disabled)
- Return: nothing
- SeeAlso: AH=12h/BL=84h,AH=12h/BL=89h,AH=12h/BL=8Ch,AH=12h/BL=8Fh
- --------V-1012--BL8C-------------------------
- INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SET AUTOMAP/EMULATE ATTRIBUTES
- AH = 12h
- BL = 8Ch
- AL = new state
- 00h enable automap
- 01h disable automap and emulate attributes
- Return: nothing
- SeeAlso: AH=12h/BL=84h,AH=12h/BL=8Bh
- --------V-1012--BL8F-------------------------
- INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - ENABLE/DISABLE EXPAND MODE
- AH = 12h
- BL = 8Fh
- AL = new state (00h enabled, 01h disabled)
- Return: nothing
- Note: when expand mode is enabled, the vertical dimension is enlarged to
- full screen
- SeeAlso: AH=12h/BL=84h,AH=12h/BL=89h,AH=12h/BL=8Bh,AH=12h/BL=90h
- --------V-1012--BL90-------------------------
- INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SET CENTERING MODE
- AH = 12h
- BL = 90h
- AL = new position
- 00h centered
- 01h from top
- 02h from bottom
- 03h from top
- Return: nothing
- SeeAlso: AH=12h/BL=84h,AH=12h/BL=8Fh
- --------V-1012--BL91-------------------------
- INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SET 720-DOT FIXUP MODE
- AH = 12h
- BL = 91h
- AL = new mode
- 00h display MGA mode from left of screen (default)
- 01h display MGA from right
- 02h skip every ninth pixel
- 03h OR every 8th and 9th pixel
- Return: nothing
- SeeAlso: AH=12h/BL=84h,AH=12h/BL=8Ah,AH=12h/BL=90h
- --------V-1012--BL92-------------------------
- INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SWITCH DISPLAY
- AH = 12h
- BL = 92h
- AL = new display (00h LCD, 01h external monitor)
- Return: nothing
- Note: the deselected display is disabled
- SeeAlso: AH=12h/BL=84h,AH=12h/BL=89h,AH=12h/BL=90h,AH=12h/BL=94h
- --------V-1012--BL93-------------------------
- INT 10 - Cirrus Logic BIOS - FORCE 8-BIT OR 16-BIT OPERATION
- AH = 12h
- BL = 93h
- AL = new I/O width (00h = 16 bits, 01h = 8 bits)
- Return: nothing
- SeeAlso: AH=12h/BL=9Ah
- --------V-1012--BL94-------------------------
- INT 10 - Cirrus Logic BIOS v3.02 - POWER CONSERVATION
- AH = 12h
- BL = 94h
- AL = new state (00h wake up monitor, 01h shut down display)
- Return: nothing
- Note: AL=01h is reported not to work properly on the LCD panel
- SeeAlso: AH=12h/BL=84h,AH=12h/BL=92h
- --------V-1012--BL9A-------------------------
- INT 10 - Cirrus Logic BIOS - GET USER OPTIONS
- AH = 12h
- BL = 9Ah
- Return: AX = options word 1 (see #00031)
- CX = options word 2 (see #00032)
- BX,DX reserved
- SeeAlso: AH=12h/BL=80h,AH=12h/BL=84h,AH=12h/BL=93h,AH=12h/BL=A0h
- SeeAlso: AH=12h/BL=A3h,AH=12h/BL=A4h,#00732 at INT 1A/AX=B102h
- Bitfields for Cirrus Logic options word 1:
- Bit(s) Description (Table 00031)
- 0,1 reserved
- 2-4 monitor type
- 5-6 maximum vertical resolution
- 7-9 reserved
- 10 force 8-bit operation
- 11-13 reserved
- 14 vertical refresh frequency at 640x480
- =0 60 Hz
- =1 high refresh
- 15 reserved
- SeeAlso: AH=12h/BL=AEh
- Bitfields for Cirrus Logic options word 2:
- Bit(s) Description (Table 00032)
- 15-13 vertical refresh frequency at 1024x768
- 12-11 vertical refresh frequency at 800x600
- 10-6 reserved
- 5-4 vertical refresh frequency at 1280x1024
- 3-0 reserved
- SeeAlso: #00033
- Bitfields for Cirrus Logic Options word 2 (alternate???):
- Bit(s) Description (Table 00033)
- 15-12 vertical refresh frequency at 1024x768
- 0000 43i Hz
- 0001 60 Hz
- 0010 70 Hz
- 0011 72 Hz
- 0100 76 Hz
- other reserved
- 11-8 vertical refresh frequency at 800x600
- 0000 56 Hz
- 0001 60 Hz
- 0010 72 Hz
- 0011 75 Hz
- other reserved
- 7-4 maximum vertical resolution
- 0000 480 scanlines
- 0001 600 scanlines
- 0010 768 scanlines
- 0011 1024 scanlines
- other reserved
- 3-1 vertical refresh frequency at 1280x1024
- 000 43i Hz
- 001 60 Hz
- 010 71.2 Hz (CL-GD5434 rev. E and F)
- 011 74 Hz (CL-GD5434 rev. E and F)
- other reserved
- 0 reserved
- SeeAlso: #00032
- --------V-1012--BLA0-------------------------
- INT 10 - Cirrus Logic BIOS - GET VIDEO MODE AVAILABILITY
- AH = 12h
- BL = A0h
- AL = video mode number (00h-7Fh)
- Return: AH bit 0: video mode supported
- BX = offset of BIOS subroutine to fixup standard video parameters
- (call subroutine with DS:SI and ES:DI as returned by this call)
- DS:SI -> standard video parameters or FFFFh:FFFFh
- ES:DI -> supplemental video parameters or FFFFh:FFFFh
- SeeAlso: AH=00h,AH=12h/BL=9Ah,AH=12h/BL=A1h
- --------V-1012--BLA1-------------------------
- INT 10 - Cirrus Logic BIOS - READ MONITOR TYPE AND ID FROM 15-PIN CONNECTOR
- AH = 12h
- BL = A1h
- Return: BH = monitor ID (see #00034)
- BL = monitor type (00h color, 01h grayscale, 02h no display)
- SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A2h
- (Table 00034)
- Values for Cirrus Logic monitor ID:
- 00h-08h reserved
- 09h IBM 8604/8507 or equivalent
- 0Ah IBM 8514 or equivalent
- 0Bh IBM 8515 or equivalent
- 0Dh IBM 8503 or equivalent
- 0Eh IBM 8512/8513 or equivalent
- 0Fh no monitor
- --------V-1012--BLA2-------------------------
- INT 10 - Cirrus Logic BIOS - SET MONITOR HORIZONTAL RETRACE FREQUENCY
- AH = 12h
- BL = A2h
- AL = retrace rate
- 00h standard VGA (31.5 kHz)
- 01h 8514-compatible (31.5 kHz and 35.5 kHz interlaced)
- 02h SuperVGA (31.5-35.1 kHz)
- 03h extended SuperVGA (31.5-35.5 kHz)
- 04h multi-frequency (31.5-37.8 kHz)
- 05h extended multi-frequency (31.5-48.0 kHz)
- 06h super multi-frequency (31.5-56.0 kHz)
- 07h extended super multi-frequency (31.5-64.0 kHz)
- Return: nothing
- SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A0h,AH=12h/BL=A4h
- --------V-1012--BLA3-------------------------
- INT 10 - Cirrus Logic BIOS - SET VGA REFRESH
- AH = 12h
- BL = A3h
- AL = refresh rate for 640x480 (00h normal, 01h high)
- Return: nothing
- SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A4h
- --------V-1012--BLA4-------------------------
- INT 10 - Cirrus Logic BIOS - SET MONITOR TYPE
- AH = 12h
- BL = A4h
- AL = options 1
- bits 7-4 = vertical refresh at 640x480
- (0 = 60Hz, 1 = 72Hz, other reserved)
- bits 3-0 = maximum vertical resolution
- (0 = 480 scanlines, 1 = 600, 2 = 768, 3 = 1024, other reserved)
- BH = options 2
- bits 7-4 = vertical refresh at 1024x768
- (0=87Hz-int, 1=60Hz, 2=70Hz, 3=72Hz, 4=76Hz, other reserved)
- bits 3-0 = vertical refresh at 800x600
- (0 = 56Hz, 1 = 60Hz, 2 = 72Hz, other reserved)
- CH = options 3
- bits 7-4 = vertical refresh at 1280x1024
- (0=87Hz-int, 1=60Hz, 2=70Hz, other reserved)
- bits 3-0: reserved
- CL,DX reserved
- Return: nothing
- SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A3h
- --------V-1012--BLAE-------------------------
- INT 10 - Cirrus Logic BIOS - GET HIGH REFRESH
- AH = 12h
- BL = AEh
- Return: AL = result
- bits 7-1: reserved
- bit 0: 640x480 high refresh rate
- =0 72 Hz
- =1 75 Hz
- SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A3h,AH=12h/BL=A4h,AH=12h/BL=AFh
- --------V-1012--BLAF-------------------------
- INT 10 - Cirrus Logic BIOS - SET HIGH REFRESH
- AH = 12h
- BL = AFh
- AL = option
- bits 7-1: reserved
- bit 0: 640x480 high refresh rate
- =0 72 Hz
- =1 75 Hz
- Return: nothing
- SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A3h,AH=12h/BL=A4h,AH=12h/BL=AEh
- --------V-1012--BLBE-------------------------
- INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
- AH = 12h
- BL = BEh
- Note: due to an omitted end-of-list marker, these versions of the BIOS will
- crash the system on this function
- --------V-1012--BLC6-------------------------
- INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
- AH = 12h
- BL = C6h
- Note: due to an omitted end-of-list marker, these versions of the BIOS will
- crash the system on this function
- --------V-1012--BLF0-------------------------
- INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
- AH = 12h
- BL = F0h
- Note: due to an omitted end-of-list marker, these versions of the BIOS will
- crash the system on this function
- --------V-1012--BLF1--------------------------
- INT 10 - Tseng ET-4000 BIOS - GET/SET SCREEN REFRESH RATE
- AH = 12h
- BL = F1h
- AL = subfunction
- 00h set refresh rate
- 01h get refresh rate
- BH = video mode
- 00h 640x480
- 01h 800x600
- 02h 1024x768
- 03h 1280x1024
- CX = new refresh rate (see #00035) if AL = 00h
- Return: AL = 12h if supported
- CX = current rate (for AL=00h, a changed CX indicates failure)
- (Table 00035)
- Values for Tseng ET4000 refresh rate:
- CX 640x480 800x600 1024x768/1280x1024
- 00h 60 Hz 56 Hz interlaced
- 01h 72 Hz 60 Hz 60 Hz
- 02h 75 Hz 72 Hz 70 Hz
- 03h 90 Hz 75 Hz 75 Hz
- 04h -- 90 Hz --
- --------V-1013-------------------------------
- INT 10 - VIDEO - WRITE STRING (AT and later,EGA)
- AH = 13h
- AL = write mode
- bit 0: update cursor after writing
- bit 1: string contains alternating characters and attributes
- bits 2-7: reserved (0)
- BH = page number
- BL = attribute if string contains only characters
- CX = number of characters in string
- DH,DL = row,column at which to start writing
- ES:BP -> string to write
- Return: nothing
- Notes: recognizes CR, LF, BS, and bell; for the ET4000 BIOS, scrolling,
- backspace, and CR only take place in the active page
- also available PC or XT with EGA or higher
- HP 95LX only supports write mode 00h
- IBM documents AL=10h,11h,20h,21h as "private" rather than "reserved"
- BUG: on the IBM VGA Adapter, any scrolling which may occur is performed on
- the active page rather than the requested page
- SeeAlso: AH=09h,AH=0Ah,AH=13h"DOS/V"
- --------J-1013-------------------------------
- INT 10 - DOS/V - READ/WRITE DOUBLE-BYTE CHARACTER SET CHARACTERS/ATTRIBUTES
- AH = 13h
- AL = function
- 10h read characters and standard attributes
- 11h read characters and extended attributes
- 12h write characters and standard attributes
- 13h write characters and extended attributes
- BH = 00h
- CX = number of characters to transfer
- DH,DL = row,column at which to start transfer
- ES:BP -> buffer for/containing characters and attributes (see #00036)
- Return: ES:BP buffer filled if reading
- Program: DOS/V is a Japanese-language version of MS-DOS which can run on
- standard (non-Japanese) ATs and compatible equipped with a VGA or
- newer video adapter
- Notes: subfunctions 11h and 13h are only valid when DOS/V is using video
- mode 73h
- the cursor position is not changed by these functions
- extended attributes consist of three bytes; the first is the standard
- character attribute byte, the second is as described below, and the
- third is always zero in current versions
- SeeAlso: AH=00h,AH=13h"VIDEO"
- Bitfields for DOS/V second extended attribute byte:
- Bit(s) Description (Table 00036)
- 7 underline using foreground color
- 6 reverse foreground/background specified in standard attribute byte
- 5-4 unused
- 3 vertical white grid line in cell
- 2 horizontal white grid line in cell
- 1-0 unused
- SeeAlso: #00014,#00026
- --------V-101400-----------------------------
- INT 10 - VIDEO - LOAD USER-SPECIFIED LCD CHARACTER FONT (CONV,Compaq Port 386)
- AX = 1400h
- ES:DI -> character font
- BH = number of bytes per character
- 08h or 10h (Compaq)
- BL = 00h load main font (block 0)
- 01h load alternate font (block 1)
- CX = number of characters to store
- DX = character offset into RAM font area
- Return: nothing
- SeeAlso: AX=1100h,AX=1110h,AX=1401h
- --------V-101401-----------------------------
- INT 10 - VIDEO - LOAD SYSTEM ROM DEFAULT LCD CHARACTER FONT (CONV,CP386)
- AX = 1401h
- BL = font to load
- 00h main font (block 0)
- 01h alternate font (block 1)
- Return: nothing
- SeeAlso: AX=1100h,AX=1102h,AX=1400h
- --------V-101402-----------------------------
- INT 10 - VIDEO - SET MAPPING OF LCD HIGH INTENSITY ATTRIBUTES (CONV,CP386)
- AX = 1402h
- BL = subfunction
- 00h ignore high intensity attribute
- 01h map high intensity to reverse video
- 02h map high intensity to underscore
- 03h map high intensity to selected alternate font
- B0h half intensity (Compaq)
- B1h toggle active intensity bit interpretation (CP386)
- Return: nothing
- --------V-1015-------------------------------
- INT 10 - VIDEO - GET PHYSICAL DISPLAY PARAMETERS (CONVERTIBLE)
- AH = 15h
- Return: AX = alternate display adapter type (see #00037)
- ES:DI -> parameter table (see #00038)
- SeeAlso: AH=1Bh
- (Table 00037)
- Values for PC Convertible alternate display adapter type:
- 0000h none
- 5140h LCD
- 5153h CGA
- 5151h mono
- Format of PC Convertible display parameter table:
- Offset Size Description (Table 00038)
- 00h WORD monitor model number
- 02h WORD vertical pixels per meter
- 04h WORD horizontal pixels per meter
- 06h WORD total vertical pixels
- 08h WORD total horizontal pixels
- 0Ah WORD horizontal pixel separation in micrometers
- (width, center-to-center)
- 0Ch WORD vertical pixel separation in micrometers
- (height, center-to-center)
- --------V-1015-------------------------------
- INT 10 - VIDEO - SET SUPERIMPOSE MODE (Sperry PC)
- AH = 15h
- AL = superimpose mode
- 00h show graphics screen
- 01h show text screen
- 02h show text screen superimposed on graphics screen
- Return: nothing
- --------J-1018-------------------------------
- INT 10 - VIDEO - DOS/V - GET/SET FONT PATTERN
- AH = 18h
- AL = subfunction
- 00h get font pattern
- 01h set font pattern
- BX = 0000h
- CL = character size in bytes (01h,02h)
- CH = 00h
- DH = character width in pixels
- DL = character height in pixels
- ES:DI -> buffer for/containing font image
- Return: AL = status (00h successful, else error)
- ES:DI buffer filled for function 00h if successful
- Note: the supported font sizes are 8x16 single-byte, 8x19 single-byte,
- 16x16 double-byte, and 24x24 double-byte
- SeeAlso: AH=19h,INT 16/AH=14h
- --------V-1019-------------------------------
- INT 10 - Japanese VIDEO - DOUBLE-BYTE CHARACTER SET SHIFT INFORMATION
- AH = 19h
- ???
- Return: ???
- SeeAlso: AH=18h,INT 16/AH=14h
- --------V-101A00-----------------------------
- INT 10 - VIDEO - GET DISPLAY COMBINATION CODE (PS,VGA/MCGA)
- AX = 1A00h
- Return: AL = 1Ah if function was supported
- BL = active display code (see #00039)
- BH = alternate display code (see #00039)
- Notes: this function is commonly used to check for the presence of a VGA
- this function is supported on the ATI EGA Wonder with certain
- undocumented configuration switch settings, even though the EGA
- Wonder does not support VGA graphics; to distinguish this case,
- call AX=1C00h with CX nonzero, which the EGA Wonder does not support
- SeeAlso: AH=12h/BL=35h,AX=1A01h,AH=1Bh,AH=1Ch,MEM 0040h:008Ah
- Index: installation check;VGA
- (Table 00039)
- Values for display combination code:
- 00h no display
- 01h monochrome adapter w/ monochrome display
- 02h CGA w/ color display
- 03h reserved
- 04h EGA w/ color display
- 05h EGA w/ monochrome display
- 06h PGA w/ color display
- 07h VGA w/ monochrome analog display
- 08h VGA w/ color analog display
- 09h reserved
- 0Ah MCGA w/ digital color display
- 0Bh MCGA w/ monochrome analog display
- 0Ch MCGA w/ color analog display
- FFh unknown display type
- --------V-101A01-----------------------------
- INT 10 - VIDEO - SET DISPLAY COMBINATION CODE (PS,VGA/MCGA)
- AX = 1A01h
- BL = active display code (see #00039)
- BH = alternate display code
- Return: AL = 1Ah if function was supported
- SeeAlso: AH=12h/BL=35h,AX=1A00h
- --------V-101B-------------------------------
- INT 10 - VIDEO - FUNCTIONALITY/STATE INFORMATION (PS,VGA/MCGA)
- AH = 1Bh
- BX = implementation type
- 0000h return funtionality/state information
- ES:DI -> 64-byte buffer for state information (see #00040)
- Return: AL = 1Bh if function supported
- ES:DI buffer filled with state information
- BUG: Trident 8900 (BIOS D3.0 11/12/91) and Trident 9000 (C3.0 10/25/91)
- do not correctly set the fields at offsets 27h and 29h of the
- state information
- SeeAlso: AH=15h,AX=1A00h,AX=1F01h
- Format of MCGA+ state information:
- Offset Size Description (Table 00040)
- 00h DWORD address of static funtionality table (see #00045)
- 04h BYTE video mode in effect
- 05h WORD number of columns
- 07h WORD length of regen buffer in bytes
- 09h WORD starting address of regen buffer
- 0Bh WORD cursor position for page 0
- 0Dh WORD cursor position for page 1
- 0Fh WORD cursor position for page 2
- 11h WORD cursor position for page 3
- 13h WORD cursor position for page 4
- 15h WORD cursor position for page 5
- 17h WORD cursor position for page 6
- 19h WORD cursor position for page 7
- 1Bh WORD cursor "type" (start/stop scan lines)
- 1Dh BYTE active display page
- 1Eh WORD CRTC port address
- 20h BYTE current setting of PORT 03x8h
- 21h BYTE current setting of PORT 03x9h
- 22h BYTE number of rows - 1
- 23h WORD bytes/character
- 25h BYTE display combination code of active display
- 26h BYTE DCC of alternate display
- 27h WORD number of colors supported in current mode (0000h = mono)
- 29h BYTE number of pages supported in current mode
- 2Ah BYTE number of scan lines active
- (0,1,2,3) = (200,350,400,480)
- Tseng ET3000: (4,5,6 = 512,600,768)
- 2Bh BYTE primary character block
- 2Ch BYTE secondary character block
- 2Dh BYTE miscellaneous flags (see #00041)
- 2Eh BYTE non-VGA mode support (see #00042)
- 2Fh 2 BYTEs reserved (00h)
- 31h BYTE video memory available
- 00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K
- 32h BYTE save pointer state flags (see #00043)
- 33h BYTE display information and status (see #00044)
- 34h 12 BYTEs reserved (00h)
- Bitfields for miscellaneous flags:
- Bit(s) Description (Table 00041)
- 0 all modes on all displays on
- 1 gray summing on
- 2 monochrome display attached
- 3 default palette loading disabled
- 4 cursor emulation enabled
- 5 0 = intensity; 1 = blinking
- 6 flat-panel display is active
- 7 unused (0)
- SeeAlso: #00040
- Bitfields for non-VGA mode support:
- Bit(s) Description (Table 00042)
- 7-5 reserved
- 4 132-column mode supported
- 3 =1 MFI attributes enabled (see AH=12h/BL=37h)
- =0 VGA attributes
- 2 16-bit VGA graphics present
- 1 adapter interface driver required
- 0 BIOS supports information return for adapter interface
- SeeAlso: #00040
- Bitfields for save pointer state flags:
- Bit(s) Description (Table 00043)
- 0 512 character set active
- 1 dynamic save area present
- 2 alpha font override active
- 3 graphics font override active
- 4 palette override active
- 5 DCC override active
- 6-7 unused (0)
- SeeAlso: #00040
- Bitfields for display information and status:
- Bit(s) Description (Table 00044)
- 7 640x480 flat-panel can be used simultaneously with CRT controller
- 6-3 reserved
- 2 color display
- 1 flat-panel display active
- 0 flat-panel display attached
- SeeAlso: #00040
- Format of Static Functionality Table:
- Offset Size Description (Table 00045)
- 00h BYTE modes supported 1
- bit 0 to bit 7 = 1 modes 0,1,2,3,4,5,6,7 supported
- 01h BYTE modes supported 2
- bit 0 to bit 7 = 1 modes 8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh supported
- 02h BYTE modes supported 3
- bit 0 to bit 3 = 1 modes 10h,11h,12h,13h supported
- bit 4 to bit 7 unused (0)
- 03h BYTE (IBM) reserved
- (Tseng ET3000/4000) modes supported 4
- bit 0 to bit 7 = modes 18h-1Fh supported
- 04h BYTE (IBM) reserved
- (Tseng ET3000/4000) modes supported 5
- bit 0 to bit 7 = modes 20h-27h supported
- 05h BYTE (IBM) reserved
- (Tseng ET3000/4000) modes supported 6
- bit 0 to bit 7 = modes 28h-2Fh supported
- 06h BYTE (IBM) reserved
- (Tseng ET3000/4000) modes supported 7
- bit 0 to bit 7 = modes 30h-37h supported
- 07h BYTE scan lines supported
- bit 0 to bit 2 = 1 if scan lines 200,350,400 supported
- bits 3-7 = unused (0)
- 08h BYTE total number of character blocks available in text modes
- 09h BYTE maximum number of active character blocks in text modes
- 0Ah WORD miscellaneous function support flags (see #00046)
- 0Ch WORD reserved
- 0Eh BYTE save pointer function flags (see #00047)
- 0Fh BYTE reserved
- SeeAlso: #00040
- Bitfields for miscellaneous function support flags:
- Bit(s) Description (Table 00046)
- 0 all modes on all displays function supported
- 1 gray summing function supported
- 2 character font loading function supported
- 3 default palette loading enable/disable supported
- 4 cursor emulation function supported
- 5 EGA palette present
- 6 color palette present
- 7 color-register paging function supported
- 8 light pen supported (see AH=04h)
- 9 save/restore state function 1Ch supported
- 10 intensity/blinking function supported (see AX=1003h)
- 11 Display Combination Code supported (see #00039)
- 12-15 unused (0)
- SeeAlso: #00040
- Bitfields for save pointer function flags:
- Bit(s) Description (Table 00047)
- 0 512 character set supported
- 1 dynamic save area supported
- 2 alpha font override supported
- 3 graphics font override supported
- 4 palette override supported
- 5 DCC extension supported
- 6-7 unused (0)
- SeeAlso: #00040
- --------V-101C-------------------------------
- INT 10 - VIDEO - SAVE/RESTORE VIDEO STATE (PS50+,VGA)
- AH = 1Ch
- AL = function
- 00h return state buffer size
- Return: BX = number of 64-byte blocks needed
- 01h save video state
- ES:BX -> buffer
- 02h restore video state
- ES:BX -> buffer containing previously saved state
- CX = requested states (see #00048)
- Return: AL = 1Ch if function supported
- Notes: many BIOSes corrupt the video registers when saving the state, so a
- program should restore the state immediately after saving it (the
- saved data is uncorrupted)
- the BIOS data area consists of the 96 bytes from 0040h:0049h-00A8h
- this function is not supported when DOS/V is running
- this function may be a better VGA installation check than the usual
- INT 10/AX=1A00h, since some late-model EGA cards (such as the ATI
- EGA Wonder) supported that call
- SeeAlso: AX=1A00h,AX=5F90h,AX=5FA0h,MEM 0040h:00A8h
- Bitfields for requested states:
- Bit(s) Description (Table 00048)
- 0 video hardware (see #00049)
- 1 BIOS data areas
- 2 color registers and DAC state (see #00050)
- 3-15 unused (0)
- SeeAlso: #00186
- Format of VGA video hardware state:
- Offset Size Description (Table 00049)
- 00h BYTE sequencer index register
- 01h BYTE CRTC index register
- 02h BYTE graphics controller index register
- 03h BYTE attribute controller index register
- 04h BYTE feature controller register
- 05h 4 BYTEs sequencer registers
- 09h BYTE sequencer register 0
- 0Ah 25 BYTEs CRTC registers 0-8
- 23h 16 BYTEs palette registers 00h-0Fh
- 33h 4 BYTEs attribute registers 10h-13h
- 37h 9 BYTEs graphics controller registers 0-8
- 40h BYTE CRTC base address (low)
- 41h BYTE CRTC base address (high)
- 42h BYTE plane 0 latch
- 43h BYTE plane 1 latch
- 44h BYTE plane 2 latch
- 45h BYTE plane 3 latch
- Format of VGA DAC state:
- Offset Size Description (Table 00050)
- 00h BYTE read/write mode DAC
- 01h BYTE pixel address
- 02h BYTE pixel mask
- 03h 768 BYTEs color data (256 triples)
- 303h BYTE color select register
- --------J-101D-------------------------------
- INT 10 - VIDEO - DOS/V - SHIFT STATUS LINE CONTROL
- AH = 1Dh
- AL = function
- 00h enable shift status line(s)
- BX = number of lines to reserve at bottom of screen (usu. 1)
- 01h disable shift status line
- BX = number of lines reserved at bottom of screen (usually 1)
- 02h get number of status lines
- Return: BX = number of lines reserved for shift status
- SeeAlso: AH=19h
- --------V-101D-------------------------------
- INT 10 - SpeedSTAR Plus BIOS v4.23+ - SET SYNC PARAMETERS
- AH = 1Dh
- AL = video mode
- ES = caller's segment
- Return: nothing
- Note: the caller's segment contains at offset 5Ch (FCB field in PSP)
- or 100h a table with sync parameters (see #00051) (BIOS looks at both
- offsets)
- Format of SpeedSTAR Plus sync table:
- Offset Size Description (Table 00051)
- 00h 9 BYTEs ID contains string 'ey5CENTER'
- 09h 5 BYTEs sync parameters for 640x480 modes 11h,12h,25h,26h,2Eh
- 0Bh 5 BYTEs sync parameters for 800x600 modes 29h,30h,2Ah
- 13h 5 BYTEs sync parameters for 1024x768 modes 37h,38h
- --------V-101D-------------------------------
- INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
- AH = 1Dh
- Note: these versions of the BIOS jump to a random location on this function
- due to a fencepost error
- --------V-101DAABXFDEC-----------------------
- INT 10 U - Diamond Stealth64 Video - INSTALLATION CHECK
- AX = 1DAAh
- BX = FDECh
- Return: BX = CDEFh if Diamond Stealth64 Video 2001-series video card installed
- AL = number of megabytes of video memory
- AH = card type??? (4Bh for VL-Bus/5Bh for PCI)
- CX = ??? (0000h)
- SI:DI -> signature/copyright string
- --------V-101E00-----------------------------
- INT 10 - VIDEO - FLAT-PANEL - READ INFORMATION
- AX = 1E00h
- Return: AL = 1Eh if function supported
- BL = flat-panel status (see #00052)
- ES:DI -> information table (see #00053)
- Note: IBM classifies this function as optional
- SeeAlso: AX=1E01h,AX=1E02h,AX=1E03h,AX=1E04h,AX=1E05h,AX=1EFEh
- Bitfields for flat-panel status:
- Bit(s) Description (Table 00052)
- 7-3 reserved
- 2 color display
- 1 flat panel is active
- 0 flat panel is attached
- SeeAlso: #00053
- Format of flat-panel information table:
- Offset Size Description (Table 00053)
- 00h BYTE number of WORDs in the remainder of the table
- 01h WORD number of vertical pixels per meter
- 03h WORD number of horizontal pixels per meter
- 05h WORD total number of vertical pixels
- 07h WORD total number of horizontal pixels
- 09h WORD vertical pixel separation in micrometers (center-to-center)
- 0Bh WORD horizontal pixel separation in micrometers
- 0Dh WORD range of gray levels available, less 1
- 0Fh WORD number of red levels available, less 1 (0000h if nonochrome)
- 11h WORD number of green levels available, less 1 (0000h if nonochrome)
- 13h WORD number of blue levels available, less 1 (0000h if nonochrome)
- SeeAlso: #00052
- --------V-101E01-----------------------------
- INT 10 - VIDEO - FLAT-PANEL - LCD/CRT DISPLAY CONTROL
- AX = 1E01h
- BH = function
- bit 7: =1 set display control, =0 query control
- bits 6-0: reserved (0)
- ---if BH bit 7 set---
- BL = new display combination (see #00054)
- Return: AL = 1Eh if function supported
- BH = results
- bit 7: query/set (copied from input)
- bits 6-3: reserved (0)
- bit 2: simultaneous display is supported by hardware
- bit 1: LCD/CRT display control supported by hardware
- bit 0: set operation was successful (always clear on get)
- BL = active display combination (see #00054)
- SeeAlso: AX=1E00h,AX=1E02h
- Bitfields for Flat-Panel display combination:
- Bit(s) Description (Table 00054)
- 7-2 reserved (0)
- 1-0 combination
- 00 reserved
- 01 LCD active
- 10 CRT active
- 11 both LCD and CRT active (simultaneous display)
- SeeAlso: #00055
- --------V-101E02-----------------------------
- INT 10 - VIDEO - FLAT-PANEL - DISPLAY POSITION
- AX = 1E02h
- BH = function
- bit 7: =1 set display position, =0 query position
- bits 6-0: reserved (0)
- ---if BH bit 7 set---
- BL = new position setting (see #00055)
- Return: AL = 1Eh if function supported
- BH = results
- bit 7: query/set (copied from input)
- bits 6-4: reserved (0)
- bit 3: positioning to top is supported by hardware
- bit 2: positioning to center is supported by hardware
- bit 1: positioning to bottom is supported by hardware
- bit 0: set operation was successful (always clear on get)
- BL = active position setting (see #00055)
- SeeAlso: AX=1E00h,AX=1E01h
- Bitfields for Flat-Panel position setting:
- Bit(s) Description (Table 00055)
- 7-2 reserved (0)
- 1-0 position
- 00 center
- 01 top
- 10 bottom
- 11 reserved
- SeeAlso: #00054,#00056
- --------V-101E03-----------------------------
- INT 10 - VIDEO - FLAT-PANEL - VERTICAL EXPANSION FOR TEXT/GRAPHICS MODES
- AX = 1E03h
- BH = function
- bit 7: =1 set vertical expansion, =0 query expansion
- bits 6-0: reserved (0)
- ---if BH bit 7 set---
- BL = new vertical expansion setting (see #00056)
- Return: AL = 1Eh if function supported
- BH = results
- bit 7: query/set (copied from input)
- bits 6-4: reserved (0)
- bit 3: vertical expansion of text is supported by hardware
- bit 2: vertical expansion of graphics is supported by hardware
- bit 1: hardware supports independent control of expansion in
- text and graphics modes
- bit 0: set operation was successful (always clear on get)
- BL = active vertical expansion setting (see #00056)
- SeeAlso: AX=1E00h,AX=1E02h.AX=1E04h
- Bitfields for Flat-Panel vertical expansion setting:
- Bit(s) Description (Table 00056)
- 7-2 reserved (0)
- 1 vertical expansion turned on for text modes
- 0 vertical expansion turned on for graphics modes
- SeeAlso: #00054,#00055,#00057
- --------V-101E04-----------------------------
- INT 10 - VIDEO - FLAT-PANEL - NORMAL/REVERSE VIDEO FOR TEXT/GRAPHICS MODES
- AX = 1E04h
- BH = function
- bit 7: =1 set normal/reverse video, =0 query normal/reverse
- bits 6-0: reserved (0)
- ---if BH bit 7 set---
- BL = new normal/reverse video setting (see #00057)
- Return: AL = 1Eh if function supported
- BH = results
- bit 7: query/set (copied from input)
- bits 6-4: reserved (0)
- bit 3: hardware supports reverse video for text modes
- bit 2: hardware supports reverse video for graphics modes
- bit 1: hardware supports independent control of reverse video
- in text and graphics modes
- bit 0: set operation was successful (always clear on get)
- BL = active normal/reverse video setting (see #00057)
- SeeAlso: AX=1E00h,AX=1E03h,AX=1E05h
- Bitfields for Flat-Panel normal/reverse video setting:
- Bit(s) Description (Table 00057)
- 7-2 reserved (0)
- 1 reverse video for text
- 0 reverse video for graphics
- SeeAlso: #00054,#00056,#00058,#00059
- --------V-101E05-----------------------------
- INT 10 - VIDEO - FLAT-PANEL - BRIGHTNESS CONTROL
- AX = 1E05h
- BH = function
- bit 7: =1 set brightness, =0 query brightness
- bits 6-0: reserved (0)
- ---if BH bit 7 set---
- BL = new brightness setting (see #00058)
- Return: AL = 1Eh if function supported
- BH = results
- bit 7: query/set (copied from input)
- bits 6-2: reserved (0)
- bit 1: software brightness control is supported
- bit 0: set operation was successful (always clear on get)
- BL = active brightness setting (see #00058)
- Note: this function operates independently of AX=1E07h
- SeeAlso: AX=1E00h,AX=1E04h,AX=1E06h,AX=1E07h
- Bitfields for Flat-Panel brightness control:
- Bit(s) Description (Table 00058)
- 7-1 reserved (0)
- 0 high brightness
- SeeAlso: #00057,#00059
- --------V-101E06-----------------------------
- INT 10 - VIDEO - FLAT-PANEL - CONTRAST CONTROL FOR TEXT/GRAPHICS
- AX = 1E06h
- BH = function
- bit 7: =1 set contrast control, =0 query contrast
- bits 6-0: reserved (0)
- ---if BH bit 7 set---
- BL = new normal/reverse video setting (see #00059)
- Return: AL = 1Eh if function supported
- BH = results
- bit 7: query/set (copied from input)
- bits 6-4: reserved (0)
- bit 3: software contrast control supported for text
- bit 2: software contrast control supported for graphics
- bit 1: hardware supports independent control of contrast
- in text and graphics modes
- bit 0: set operation was successful (always clear on get)
- BL = active contrast setting (see #00059)
- Note: this function operates independently of AX=1E08h
- SeeAlso: AX=1E00h,AX=1E04h,AX=1E05h,AX=1E07h,AX=1E08h
- Bitfields for Flat-Panel contrast control:
- Bit(s) Description (Table 00059)
- 7-2 reserved (0)
- 1 high contrast for text
- 0 high contrast for graphics
- SeeAlso: #00057,#00058
- --------V-101E07-----------------------------
- INT 10 - VIDEO - FLAT-PANEL - BRIGHTNESS SETTING
- AX = 1E07h
- BH = function
- bit 7: =1 set brightness control, =0 query brightness
- bit 6: use standard brightness
- bits 5-0: reserved (0)
- ---if BH bits 7,6=10---
- BL = brightness (00h = minimum, FFh = maximum)
- Return: AL = 1Eh if function supported
- BH = results
- bit 7: query/set (copied from input)
- bit 6: standard/custom (copied from input)
- bits 5-2: reserved (0)
- bit 1: software brightness control is supported
- bit 0: set operation was succesful (always clear on get)
- BL = brightness (00h = minimum, FFh = maximum)
- Note: this function operates independently of AX=1E05h
- SeeAlso: AX=1E00h,AX=1E05h,AX=1E08h
- --------V-101E08-----------------------------
- INT 10 - VIDEO - FLAT-PANEL - CONTRAST SETTING
- AX = 1E08h
- BH = function
- bit 7: =1 set contrast control, =0 query contrast
- bit 6: use standard contrast
- bits 5-0: reserved (0)
- ---if BH bits 7,6=10---
- BL = contrast (00h = minimum, FFh = maximum)
- Return: AL = 1Eh if function supported
- BH = results
- bit 7: query/set (copied from input)
- bit 6: standard/custom (copied from input)
- bits 5-2: reserved (0)
- bit 1: software contrast control is supported
- bit 0: set operation was succesful (always clear on get)
- BL = contrast (00h = minimum, FFh = maximum)
- Note: this function operates independently of AX=1E06h
- SeeAlso: AX=1E00h,AX=1E06h,AX=1E07h
- --------V-101EFE-----------------------------
- INT 10 - VIDEO - FLAT-PANEL - FUNCTION SUPPORT FLAG
- AX = 1EFEh
- ES:DI -> DWORD buffer for bitmap of supported functions
- (set to all zeros before calling)
- Return: ES:DI buffer updated with mask of supported functions
- Index: installation check;flat-panel display support
- SeeAlso: AX=1E00h,AX=1E06h
- --------V-101F00-----------------------------
- INT 10 - VIDEO - XGA - GET DMQS (Display Mode Query and Set) DATA LENGTH
- AX = 1F00h
- Return: AL = 1Fh if supported
- BX = number of bytes of DMQS data
- Note: not supported on the original IBM XGA, only on XGA-NI (non-interlaced)
- and later models.
- SeeAlso: AX=1F01h
- --------V-101F01-----------------------------
- INT 10 - VIDEO - XGA - READ DMQS DATA
- AX = 1F01h
- ES:DI -> user buffer for return data (call AX=1F00h for size)
- Return: AL = 1Fh if function supported
- user buffer filled with DMQS data (see #00060)
- Note: not supported on the original IBM XGA, only on XGA-NI (non-interlaced)
- and later models.
- SeeAlso: AH=1Bh,AX=1F00h,AX=3000h
- Format of XGA DMQS buffer:
- Offset Size Description (Table 00060)
- 00h WORD offset (in bytes) to DMQS data for next XGA instance
- 02h BYTE slot number
- 03h BYTE XGA implementation function level identifier
- 04h BYTE XGA implementation resolution level identifier
- 05h WORD vendor identifier - identifies card vendor
- 07h WORD vendor defined field
- 09h WORD XGA adapter I/O register base address
- 0Bh WORD XGA coprocessor register base address
- (paragraph--multiply by 10h to get physical address)
- 0Dh WORD 1 Megabyte system video memory aperture
- 0000h if not allocated
- (Multiply by 100000h to get physical address)
- 0Fh WORD 4 Megabyte system video memory aperture
- 0000h if not allocated
- (multiply by 100000h to get physical address)
- 11h WORD video memory base address
- (multiply by 100000h to get physical address)
- 13h WORD composite ID of the attached display
- 15h BYTE amount of video memory available, in multiples of 256K bytes
- 16h DWORD alternate XGA coprocessor register base address. 0 = none.
- 1Ah var DMQS Data for further XGA Instances (as above)
- Note: "Instances" refers to the capability of having up to 8 XGA
- adapters in one computer.
- SeeAlso: #00061
- --------V-101F02-----------------------------
- INT 10 - VIDEO - XGA - GET SVGA DMQS DATA LENGTH
- AX = 1F02h
- Return: AL = 1Fh if function supported
- BX = length of SVGA DMQS data in bytes
- SeeAlso: AX=1F00h,AX=1F03h
- --------V-101F03-----------------------------
- INT 10 - VIDEO - XGA - GET SVGA DMQS DATA
- AX = 1F03h
- ES:DI -> buffer for SVGA DMQS data (see #00061)
- Return: AL = 1Fh if function supported
- ES:DI buffer filled
- SeeAlso: AX=1F00h,AX=1F02h
- Format of SVGA DMQS data:
- Offset Size Description (Table 00061)
- 00h WORD offset to DMQS data for next SVGA instance or 0000h
- 02h BYTE reserved
- 03h BYTE SVGA implementation functional level
- 04h BYTE SVGA implementation resolution level
- 05h WORD vendor ID
- 07h WORD vendor-specific
- 09h 7 BYTEs reserved
- 10h BYTE SVGA linear address window size
- 00h 64K
- 01h 1M
- 02h 2M
- 03h 4M
- 11h WORD SVGA linear address window location or 0000h if not allocated
- (multiply by 10000h [shift left 16 bits] to get physical addr)
- 13h WORD attached monitor's composite monitor ID
- 15h BYTE available video RAM in multiples of 256K
- 16h 11 BYTEs reserved
- SeeAlso: #00060
- --------V-103000CX0000-----------------------
- INT 10 - VIDEO - LOCATE 3270PC CONFIGURATION TABLE (INSTALLATION CHECK)
- AX = 3000h
- CX = 0000h
- DX = 0000h
- Return: CX:DX -> 3270PC configuration table (see #00062)
- CX:DX = 0000h:0000h if 3270PC Control Program not active
- SeeAlso: AX=1F01h
- Format of 3270 PC configuration table:
- Offset Size Description (Table 00062)
- 00h BYTE aspect ratio X
- 01h BYTE aspect ratio Y
- 02h BYTE monitor type (see #00063)
- 03h BYTE reserved
- 04h BYTE adapter ID
- 00h = 5151/5272 adapter
- 04h = 5151/5272 with XGA adapter
- 30h = 3295 or 3270PC G/GX adapter
- 05h BYTE reserved
- 06h BYTE function flags 1 (see #00064)
- 07h BYTE function flags 2
- bit 6: GPI graphics supported
- 08h WORD segment address of Control Program Level table (see #00065)
- 0Ah 10 BYTEs reserved
- (Table 00063)
- Values for 3270 PC monitor type:
- 00h 5151 (mono) or 5272 (color)
- 01h 3295
- 02h 5151 or 5272 with XGA (???) graphics adapter
- 03h 5279 with 3270PC G adapter
- 04h 5379 model C01 with 3270PC GX adapter
- 05h 5379 model M01 with 3270PC GX adapter
- 07h non-3270PC with 3270 Workstation Program
- FFh 3270PC Control Program not loaded
- Bitfields for 3270 PC function flags 1:
- Bit(s) Description (Table 00064)
- 7 mono text, 1 page
- 6 color text, 1 page
- 5 color text, 4 pages
- 4 CGA color graphics
- 3 720x350 two-color graphics
- 2 360x350 four-color graphics
- 1 720x350 eight-color graphics
- Format of Control Program Level table:
- Offset Size Description (Table 00065)
- 00h WORD program version
- 02xxh = 3270PC Control Program v2.xx
- 03xxh = 3270PC Control Program v3.xx
- 04xxh = 3270 Workstation Program v1.xx
- 02h BYTE Control Program ID (00h)
- 03h 27 BYTEs Control Program Descriptor ("IBM 3270 PC CONTROL PROGRAM")
- --------a-103800-----------------------------
- INT 10 - Tinytalk Personal v1.09f+ - GET CONFIGURATION INFO
- AX = 3800h
- Return: ES:DI -> configuration info (see #00066)
- Program: Tinytalk is a shareware screen reader by OMS Development/Eric Bohlman
- Notes: this call is also used as the installation check by verifying that the
- returned ES:DI points at valid configuration info
- Tinytalk v1.09f ignores AL and always returns the configuration info;
- v1.10 adds several subfunctions selected with AL
- SeeAlso: AX=3801h,AX=3803h,AX=3806h,AH=39h,INT 14/AX=F0F1h
- SeeAlso: INT 2F/AX=FB00h"AutoBraille"
- Index: installation check;Tinytalk Personal
- Format of Tinytalk Personal configuration info:
- Offset Size Description (Table 00066)
- 00h 8 BYTEs signature "TTCONFIG"
- 08h WORD size of configuration data, not counting signature, this WORD,
- or the following byte
- 0Ah BYTE ???
- 0Bh ??? configuration data
- --------a-103801-----------------------------
- INT 10 - Tinytalk Personal v1.10 - ???
- AX = 3801h
- DL = ???
- Return: ???
- SeeAlso: AX=3800h,AX=3802h
- --------a-103802-----------------------------
- INT 10 - Tinytalk Personal v1.10 - ???
- AX = 3802h
- DL = ???
- Return: ???
- SeeAlso: AX=3800h,AX=3801h
- --------a-103803-----------------------------
- INT 10 - Tinytalk Personal v1.10 - GET ???
- AX = 3803h
- Return: AL = ???
- SeeAlso: AX=3800h,AX=3804h,AX=3805h
- --------a-103804-----------------------------
- INT 10 - Tinytalk Personal v1.10 - GET ???
- AX = 3804h
- Return: AX = ???
- SeeAlso: AX=3800h,AX=3803h,AX=3805h
- --------a-103805-----------------------------
- INT 10 - Tinytalk Personal v1.10 - GET ???
- AX = 3805h
- Return: AL = ???
- SeeAlso: AX=3800h,AX=3803h,AX=3804h
- --------a-103806-----------------------------
- INT 10 - Tinytalk Personal v1.10 - ???
- AX = 3806h
- ES:DX -> ASCIZ ???
- Return: ???
- SeeAlso: AX=3800h
- --------a-1039-------------------------------
- INT 10 - Tinytalk Personal v1.10 - ???
- AH = 39h
- Program: Tinytalk is a shareware screen reader by OMS Development/Eric Bohlman
- Note: this function was a NOP in TTDEMO.EXE, but may be implemented in other
- variants of Tinytalk
- --------V-1040-------------------------------
- INT 10 - VIDEO - Hercules GRAFIX - "GMODE" - SET GRAPHICS MODE
- AH = 40h
- Return: nothing
- Desc: switch the Hercules Graphics Card into graphics mode (720x348)
- SeeAlso: AH=00h,AH=41h
- Index: video modes;Hercules
- --------V-1041-------------------------------
- INT 10 - VIDEO - Hercules GRAFIX - "TMODE" - SET TEXT MODE
- AH = 41h
- Return: nothing
- Desc: switch the Hercules Graphics Card into text mode
- SeeAlso: AH=00h,AH=40h
- Index: video modes;Hercules
- --------V-1042-------------------------------
- INT 10 - VIDEO - Hercules GRAFIX - "CLRSCR" - CLEAR CURRENT PAGE
- AH = 42h
- Return: nothing
- SeeAlso: AH=45h
- --------V-1043-------------------------------
- INT 10 - VIDEO - Hercules GRAFIX - "GPAGE" - SELECT DRAWING PAGE
- AH = 43h
- AL = page number (0,1)
- Return: nothing
- Desc: specify which of the two pages of video memory is to be used for
- output
- SeeAlso: AH=05h,AH=44h,AH=45h
- --------V-1044-------------------------------
- INT 10 - VIDEO - Hercules GRAFIX - "LEVEL" - SELECT DRAWING FUNCTION
- AH = 44h
- AL = drawing function
- 00h clear pixels
- 01h set pixels
- 02h invert pixels
- Return: nothing
- Desc: specify how graphics output will change the display
- SeeAlso: AH=45h,AH=46h,AH=4Ch,AH=4Dh
- --------V-1045-------------------------------
- INT 10 - VIDEO - Hercules GRAFIX - "DISP" - SELECT PAGE TO DISPLAY
- AH = 45h
- AL = page number (0,1)
- Return: nothing
- Desc: specify which of the two pages of video memory is visible on screen
- SeeAlso: AH=05h,AH=42h,AH=43h
- --------V-1046-------------------------------
- INT 10 - VIDEO - Hercules GRAFIX - "PLOT" - DRAW ONE PIXEL
- AH = 46h
- DI = x (0-719)
- BP = y (0-347)
- Return: nothing
- Notes: function 44h determines operation and function 43h which page to use
- if the indicated coordinate is valid, this function does nothing
- SeeAlso: AH=0Ch,AH=47h,AH=49h,AH=4Ch,AH=4Dh
- --------V-1047-------------------------------
- INT 10 - VIDEO - Hercules GRAFIX - "GETPT" - FIND PIXEL VALUE
- AH = 47h
- DI = x (0-719)
- BP = y (0-347)
- Return: AL = 00h pixel clear
- AL = 01h pixel set
- Note: function 43h specifies which page is used
- SeeAlso: AH=0Dh,AH=46h
- --------V-1048-------------------------------
- INT 10 - VIDEO - Hercules GRAFIX - "MOVE" - MOVE TO POINT
- AH = 48h
- DI = x (0-719)
- BP = y (0-347)
- Return: nothing
- Desc: specify the location from which to start the next graphics output
- SeeAlso: AH=49h
- --------V-1049-------------------------------
- INT 10 - VIDEO - Hercules GRAFIX - "DLINE" - DRAW TO POINT
- AH = 49h
- DI = x (0-719)
- BP = y (0-347)
- Return: nothing
- Note: function 48h or 49h specify first point, 44h operation and 43h page to
- use
- SeeAlso: AH=43h,AH=44h,AH=48h,AH=4Ch,AH=4Dh
- --------V-104A-------------------------------
- INT 10 - VIDEO - Hercules GRAFIX - "BLKFIL" - BLOCK FILL
- AH = 4Ah
- DI = x coordinate of lower left corner
- BP = y coordinate of lower left corner
- BX = height in pixels
- CX = width in pixels
- Return: nothing
- Desc: draw a solid rectangle of the specified size at the given location
- SeeAlso: AH=4Eh
- --------V-104B-------------------------------
- INT 10 - VIDEO - Hercules GRAFIX - "TEXT" - DISPLAY CHARACTER
- AH = 4Bh
- AL = character to display
- DI = x (0-719)
- BP = y (0-347)
- Return: nothing
- Notes: unlike the other BIOS character functions character position is
- specified in pixels rather than rows and columns
- the character is writting using the drawing function last specified by
- AH=44h
- SeeAlso: AH=09h,AH=0Ah
- --------P-104B-------------------------------
- INT 10 - FRIEZE - API
- AH = 4Bh
- CL = function
- 00h (v6.x-) print window
- AL = mode
- 00h character
- 01h normal
- 02h sideways
- 01h load window
- ES:BX -> ASCIZ filename from which to read
- 02h save window
- ES:BX -> ASCIZ filename to which to write
- 03h set print width
- AL = width in 1/4 inches
- 04h set print height
- AL = height in 1/4 inches
- 05h reserved
- 06h set left margin
- AL = printout margin in 1/4 inches
- 07h set window size
- ES:BX -> four-WORD structure with Xmin, Ymin, Xmax, Ymax
- 08h reserved
- 09h set patterns
- ES:BX -> 16-BYTE vector of screen->printer color correspondnces
- 0Ah get patterns
- ES:BX -> 16-BYTE buffer for color correspondences
- 0Bh set mode
- AL = mode
- 0Ch (v7.41) ???
- AL = ???
- 00h ??? (calls original INT 05)
- else ???
- 0Dh (v7.41) ???
- AL = ???
- 00h ??? (calls original INT 05)
- else ???
- 0Eh (v7.41) ???
- ???
- 0Fh get window
- ES:BX -> four-WORD buffer for Xmin, Ymin, Xmax, Ymax
- 10h set print options
- ES:BX -> printer options in same format as FRIEZE cmdline
- 11h initialize
- ES:BX -> three-WORD array from CARDS.DAT for HRes, VRes, code
- 12h (v7.41) ???
- ???
- 13h (v7.41) ???
- ???
- 14h get version
- Return: AH = major version (00h if FRIEZE version before 7)
- AL = minor version
- 15h set parameters
- ES:BX -> parameter table (see #00068)
- 16h get parameters
- ES:BX -> buffer for parameter table (see #00068)
- 17h get printer resolution
- ES:BX -> 12-WORD table for six horizontal/vertical resol pairs
- 18h (v8.0 only) reserved
- 50h (v7.41) get ???
- Return: AX = ???
- 51h (v7.41) get ???
- Return: ES = ??? (seen 2348h)
- AX = ??? (seen 8432h)
- Return: AX = status (see #00067)
- SeeAlso: AH=0Fh/SI=F123h
- (Table 00067)
- Values for FRIEZE function status:
- 00h successful
- 01h user aborted printout with ESC
- 02h reserved
- 03h file read error
- 04h file write error or printer error
- 05h file not found
- 06h invalid header (not an image or wrong screen mode) or can't create file
- 07h file close error
- 08h disk error
- 09h (v7.0+) printer error
- 0Ah invalid function
- 0Bh (v7.0+) can't create file
- 0Ch (v7.0+) wrong video mode
- Format of FRIEZE parameter table:
- Offset Size Description (Table 00068)
- 00h WORD top margin (1/100 inch)
- 02h WORD left margin (1/100 inch)
- 04h WORD horizontal size (1/100 inch)
- 06h WORD vertical size (1/100 inch)
- 08h WORD quality/draft mode
- 00h draft mode
- 01h quality mode
- 02h use horizontal/vertical resolution for output resolution
- 0Ah WORD printer horizontal resolution (dots per inch)
- 0Ch WORD printer vertical resolution (dots per inch)
- 0Eh WORD reserved (FFFFh)
- Note: any field which should remain unchanged may be filled with FFFFh
- --------V-104C-------------------------------
- INT 10 - VIDEO - Hercules GRAFIX - "ARC" - DRAW ARC
- AH = 4Ch
- AL = quadrant (1 = upper right, 2 = upper left, etc)
- DI = x coordinate of center
- BP = y coordinate of center
- BX = radius
- Return: nothing
- SeeAlso: AH=49h,AH=4Dh
- --------V-104D-------------------------------
- INT 10 - VIDEO - Hercules GRAFIX - "CIRC" - DRAW CIRCLE
- AH = 4Dh
- DI = x of center
- BP = y of center
- BX = radius
- Return: nothing
- SeeAlso: AH=49h,AH=4Ch
- --------V-104E-------------------------------
- INT 10 - VIDEO - Hercules GRAFIX - "FILL" - FILL AREA
- AH = 4Eh
- DI = x coordinate of an interior point
- BP = y coordinate of an interior point
- Return: nothing
- Desc: fill a convex polygonal area bounded by a contiguous line of the
- opposite color with the border color
- Note: the first fill makes the figure solid, the second erases it
- SeeAlso: AH=4Ah
- --------V-104E00-----------------------------
- INT 10 - VESA XGA BIOS Extensions - GET XGA ENVIRONMENT INFORMATION
- AX = 4E00h
- ES:DI -> 256-byte buffer for XGA information (see #00069)
- Return: AL = 4Eh if function supported
- AH = status
- 00h successful
- else error code
- Desc: determine whether VESA XGA extensions are present and the capabilities
- supported by the display adapter
- SeeAlso: AX=4E01h,AX=4E02h,AX=4F00h
- Index: installation check;VESA XGA
- Format of XGA information buffer:
- Offset Size Description (Table 00069)
- 00h 4 BYTEs signature ("VESA")
- 04h WORD VESA version number
- 06h DWORD pointer to ASCIZ OEM string
- 0Ah DWORD environment flags (see #00070)
- 0Eh WORD number of XGA adapters installed (other VESA XGA functions
- require a handle indicating which adapter to use)
- 10h 240 BYTEs reserved
- Bitfields for XGA environment flags:
- Bit(s) Description (Table 00070)
- 0-1 system bus (00 = MCA, 01 = ISA, 10 = EISA)
- 2 bus mastering available
- 3-31 reserved
- --------V-104E01----------------------------
- INT 10 - VESA XGA BIOS Extensions - RETURN XGA SUBSYSTEM INFORMATION
- AX = 4E01h
- DX = XGA handle (0 to number of XGAs-1)
- ES:DI -> 256-byte buffer for subsystem information (see #00071)
- Return: AL = 4Eh if function supported
- AH = status
- 00h function successful
- else error code
- SeeAlso: AX=4E00h,AX=4E02h
- Format of XGA subsystem information:
- Offset Size Description (Table 00071)
- 00h DWORD pointer to null-terminated board OEM string
- 04h DWORD capabilities (see #00072)
- 08h DWORD pointer to 8KB XGA ROM (or NULL)
- 0Ch DWORD pointer to the XGA memory mapped registers
- 10h WORD base address of XGA I/O registers (21x0h)
- 12h DWORD pointer to start of physical video memory
- (A000h:0000h or B000h:0000h)
- 16h DWORD physical address of 4MB aperture (or NULL if none)
- 1Ah DWORD physical address of 1MB aperture (or NULL if none)
- 1Eh DWORD physical address of 64KB aperture (or NULL if not enabled)
- 22h DWORD physical address of OEM aperture (or NULL if none)
- 26h WORD size of OEM aperture in 64KByte units
- 28h DWORD pointer to list of video modes
- The list is a series of WORDs terminated by FFFFh
- 2Ch WORD number of 64KB blocks on the board
- 2Eh DWORD XGA manufacturer ID
- byte 0 POS data index 1
- byte 1 is index 2
- byte 2 is 21xAh index 75h
- 32h 206 BYTEs reserved
- Bitfields for XGA capabilities:
- Bit(s) Description (Table 00072)
- 0-1 board bus architecture: 0=MCA, 1=ISA, 3=EISA
- 2-3 reserved
- 4-6 DMA Channel assigned for acquiring bus mastership (only for ISA bus)
- 7 DMA Channel Status (ISA only). enabled if set
- 8-31 reserved
- --------V-104E02-----------------------------------
- INT 10 - VESA XGA BIOS Extensions - RETURN XGA MODE INFORMATION
- AX = 4E02h
- CX = Video mode
- DX = XGA handle
- ES:DI -> 256 byte buffer for mode information (see #00073)
- Return: AL = 4Eh if function supported
- AH = status
- 00h function successful
- else error code
- SeeAlso: AX=4E00h,AX=4E01h
- Format of XGA mode information:
- Offset Size Description (Table 00073)
- 00h WORD attributes of the mode (see #00074)
- 02h WORD bytes per logical scanline
- 04h WORD horizontal resolution in pixels
- 06h WORD vertical resolution in scanlines
- 08h BYTE character Width in pixels
- 09h BYTE character Height in pixels
- 0Ah BYTE number of planes
- 0Bh BYTE bits per pixels
- 0Ch BYTE memory model (see #00075)
- 0Dh BYTE number of Image Pages
- 0Eh BYTE number of Red bits
- 0Fh BYTE bit position of Red bit field
- 10h BYTE number of Green bits
- 11h BYTE bit position of Green bit field
- 12h BYTE number of Blue bits
- 13h BYTE bit position of Blue bit field
- 14h BYTE number of Reserved bits
- 15h BYTE bit position of Reserved bit field
- 16h 235 BYTEs reserved
- Bitfields for XGA mode attributes:
- Bit(s) Description (Table 00074)
- 0 set if mode is supported
- 1 reserved
- 2 output is supported by the BIOS
- 3 reserved
- 4 if set this is a graphics mode (VGA registers inactive, XGA active),
- if clear this is a text mode (VGA registers active, XGA inactive)
- (Table 00075)
- Values for XGA video memory model:
- 00h Text Mode
- 01h CGA graphics
- 02h Hercules graphics
- 03h 4-planar graphics
- 04h Packed Pixel
- 05h Non-chain 4, 256 color
- 06h Direct Color
- 07h YUV-24
- --------V-104E03-----------------------------------
- INT 10 - VESA XGA BIOS Extensions - SET XGA VIDEO MODE
- AX = 4E03h
- BX = video mode
- CX = other command flags
- bit 0 If clear the feature connector is set to the default state
- DX = XGA handle
- ES:DI -> 256 byte buffer
- Return: AL = 4Eh if function supported
- AH = status
- 00h function successful
- else error code
- SeeAlso: AH=00h,AX=4E04h,AX=4F02h
- --------V-104E04-----------------------------------
- INT 10 - VESA XGA BIOS Extensions - RETURN CURRENT VIDEO MODE
- AX = 4E04h
- DX = XGA handle
- Return: AL = 4Eh if function supported
- AH = status
- 00h function successful
- BX??? = current mode
- else error code
- SeeAlso: AH=0Fh,AX=4E03h,AX=4F03h
- --------V-104E05-----------------------------------
- INT 10 - VESA XGA BIOS Extensions - SET FEATURE CONNECTOR STATE
- AX = 4E05h
- BX = Feature Connector State (see #00076)
- DX = XGA handle
- Return: AL = 4Eh if function supported
- AH = status
- 00h function successful
- else error code
- SeeAlso: AX=4E00h,AX=4E06h
- Bitfields for XGA Feature Connector State:
- Bit(s) Description (Table 00076)
- 0 Feature Connector is enabled
- 1 Feature Connector is in Output Mode rather than Input Mode
- 2-15 reserved (0)
- --------V-104E06-----------------------------------
- INT 10 - VESA XGA BIOS Extensions - RETURN FEATURE CONNECTOR STATE
- AX = 4E06h
- DX = XGA handle
- Return: AL = 4Eh if function supported
- AH = status
- 00h function successful
- else error code
- BX = Feature Connector State (see #00076)
- SeeAlso: AX=4E00h,AX=4E05h
- --------V-104F00-----------------------------
- INT 10 - VESA SuperVGA BIOS (VBE) - GET SuperVGA INFORMATION
- AX = 4F00h
- ES:DI -> buffer for SuperVGA information (see #00077)
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- ES:DI buffer filled
- 01h failed
- ---VBE v2.0---
- 02h function not supported by current hardware configuration
- 03h function invalid in current video mode
- Desc: determine whether VESA BIOS extensions are present and the capabilities
- supported by the display adapter
- SeeAlso: AX=4E00h,AX=4F01h,AX=7F00h"SOLLEX",AX=A00Ch
- Index: installation check;VESA SuperVGA
- Format of SuperVGA information:
- Offset Size Description (Table 00077)
- 00h 4 BYTEs (ret) signature ("VESA")
- (call) VESA 2.0 request signature ("VBE2"), required to receive
- version 2.0 info
- 04h WORD VESA version number (one-digit minor version -- 0102h = v1.2)
- 06h DWORD pointer to OEM name
- "761295520" for ATI
- 0Ah DWORD capabilities flags (see #00078)
- 0Eh DWORD pointer to list of supported VESA and OEM video modes
- (list of words terminated with FFFFh)
- 12h WORD total amount of video memory in 64K blocks
- ---VBE v1.x ---
- 14h 236 BYTEs reserved
- ---VBE v2.0 ---
- 14h WORD OEM software version (BCD, high byte = major, low byte = minor)
- 16h DWORD pointer to vendor name
- 1Ah DWORD pointer to product name
- 1Eh DWORD pointer to product revision string
- 22h WORD (if capabilities bit 3 set) VBE/AF version (BCD)
- 0100h for v1.0P
- 24h DWORD (if capabilities bit 3 set) pointer to list of supported
- accelerated video modes (list of words terminated with FFFFh)
- 28h 216 BYTEs reserved for VBE implementation
- 100h 256 BYTEs OEM scratchpad (for OEM strings, etc.)
- Notes: the list of supported video modes is stored in the reserved portion of
- the SuperVGA information record by some implementations, and it may
- thus be necessary to either copy the mode list or use a different
- buffer for all subsequent VESA calls
- the 1.1 VESA document specifies 242 reserved bytes at the end, so the
- buffer should be 262 bytes to ensure that it is not overrun; for
- v2.0, the buffer should be 512 bytes
- the S3 specific video modes will most likely follow the FFFFh
- terminator at the end of the standard modes. A search must then
- be made to find them, FFFFh will also terminate this second list
- in some cases, only a "stub" VBE may be present, supporting only
- AX=4F00h; this case may be assumed if the list of supported video
- modes is empty (consisting of a single word of FFFFh)
- Bitfields for VESA capabilities:
- Bit(s) Description (Table 00078)
- 0 DAC can be switched into 8-bit mode
- 1 non-VGA controller
- 2 programmed DAC with blank bit (i.e. only during blanking interval)
- 3 controller supports VBE/AF v1.0P extensions
- 4 (VBE/AF) must call EnableDirectAccess to access framebuffer
- 5 (VBE/AF) controller supports hardware mouse cursor
- 6 (VBE/AF) controller supports hardware clipping
- 7 (VBE/AF) controller supports transparent BitBLT
- 8-31 reserved (0)
- SeeAlso: #00077,AX=4F09h
- --------V-104F01-----------------------------
- INT 10 - VESA SuperVGA BIOS - GET SuperVGA MODE INFORMATION
- AX = 4F01h
- CX = SuperVGA video mode
- bit 14 set means enable linear framebuffer mode (VBE v2.0+)
- bit 13 set means VBE/AF v1.0P initializes accelerator hardware
- ES:DI -> 256-byte buffer for mode information (see #00079)
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- ES:DI buffer filled
- 01h failed
- Desc: determine the attributes of the specified video mode
- SeeAlso: AX=4F00h,AX=4F02h
- Format of VESA SuperVGA mode information:
- Offset Size Description (Table 00079)
- 00h WORD mode attributes (see #00080)
- 02h BYTE window attributes, window A (see #00081)
- 03h BYTE window attributes, window B (see #00081)
- 04h WORD window granularity in KB
- 06h WORD window size in KB
- 08h WORD start segment of window A
- 0Ah WORD start segment of window B
- 0Ch DWORD -> FAR window positioning function (equivalent to AX=4F05h)
- 10h WORD bytes per scan line
- ---remainder is optional for VESA modes in v1.0/1.1, needed for OEM modes---
- 12h WORD width in pixels (graphics) or characters (text)
- 14h WORD height in pixels (graphics) or characters (text)
- 16h BYTE width of character cell in pixels
- 17h BYTE height of character cell in pixels
- 18h BYTE number of memory planes
- 19h BYTE number of bits per pixel
- 1Ah BYTE number of banks
- 1Bh BYTE memory model type (see #00082)
- 1Ch BYTE size of bank in KB
- 1Dh BYTE number of image pages
- 1Eh BYTE reserved (0)
- ---VBE v1.2+---
- 1Fh BYTE red mask size
- 20h BYTE red field position
- 21h BYTE green mask size
- 22h BYTE green field size
- 23h BYTE blue mask size
- 24h BYTE blue field size
- 25h BYTE reserved mask size
- 26h BYTE reserved mask position
- 27h BYTE direct color mode info
- bit 0: color ramp is programmable
- bit 1: bytes in reserved field may be used by application
- ---VBE v2.0 ---
- 28h DWORD physical address of linear video buffer
- 2Ch DWORD pointer to start of offscreen memory
- 30h WORD KB of offscreen memory
- 32h 206 BYTEs reserved (0)
- Bitfields for VESA SuperVGA mode attributes:
- Bit(s) Description (Table 00080)
- 0 mode supported
- 1 optional information available
- 2 BIOS output supported
- 3 set if color, clear if monochrome
- 4 set if graphics mode, clear if text mode
- ---VBE v2.0 ---
- 5 mode is not VGA-compatible
- 6 bank-switched mode not supported
- 7 linear framebuffer mode supported
- 8 ???
- 9 (VBE/AF v1.0P) application must call EnableDirectAccess before calling
- bank-switching functions
- SeeAlso: #00079
- Bitfields for VESA SuperVGA window attributes:
- Bit(s) Description (Table 00081)
- 0 exists
- 1 readable
- 2 writable
- 3-7 reserved
- SeeAlso: #00079
- (Table 00082)
- Values for VESA SuperVGA memory model type:
- 00h text
- 01h CGA graphics
- 02h HGC graphics
- 03h 16-color (EGA) graphics
- 04h packed pixel graphics
- 05h "sequ 256" (non-chain 4) graphics
- 06h direct color (HiColor, 24-bit color)
- 07h YUV (luminance-chrominance, also called YIQ)
- 08h-0Fh reserved for VESA
- 10h-FFh OEM memory models
- SeeAlso: #00079
- --------V-104F02-----------------------------
- INT 10 - VESA SuperVGA BIOS - SET SuperVGA VIDEO MODE
- AX = 4F02h
- BX = mode (see #00083,#00084)
- bit 15 set means don't clear video memory
- bit 14 set means enable linear framebuffer mode (VBE v2.0+)
- bit 13 set means VBE/AF v1.0P initializes accelerator hardware
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- 01h failed
- Notes: bit 13 may only be set if the video mode is present in the list of
- accelerated video modes returned by AX=4F00h
- if the DAC supports both 8 bits per primary color and 6 bits, it will
- be reset to 6 bits after a mode set; use AX=4F08h to restore 8 bits
- SeeAlso: AX=4E03h,AX=4F00h,AX=4F01h,AX=4F03h,AX=4F08h
- (Table 00083)
- Values for VESA video mode:
- 00h-FFh OEM video modes (see #00010 at AH=00h)
- 100h 640x400x256
- 101h 640x480x256
- 102h 800x600x16
- 103h 800x600x256
- 104h 1024x768x16
- 105h 1024x768x256
- 106h 1280x1024x16
- 107h 1280x1024x256
- 108h 80x60 text
- 109h 132x25 text
- 10Ah 132x43 text
- 10Bh 132x50 text
- 10Ch 132x60 text
- ---VBE v1.2---
- 10Dh 320x200x32K
- 10Eh 320x200x64K
- 10Fh 320x200x16M
- 110h 640x480x32K
- 111h 640x480x64K
- 112h 640x480x16M
- 113h 800x600x32K
- 114h 800x600x64K
- 115h 800x600x16M
- 116h 1024x768x32K
- 117h 1024x768x64K
- 118h 1024x768x16M
- 119h 1280x1024x32K
- 11Ah 1280x1024x64K
- 11Bh 1280x1024x16M
- ---VBE 2.0---
- 120h 1600x1200x256
- 121h 1600x1200x32K
- 122h 1600x1200x64K
- 81FFh special full-memory access mode
- Note: the special mode 81FFh preserves the contents of the video memory and
- gives access to all of the memory; VESA recommends that the special
- mode be a packed-pixel mode
- SeeAlso: #00010,#00011,#00084,#00191
- Index: video modes;VESA
- (Table 00084)
- Values for S3 OEM video mode:
- 201h 640x480x256
- 202h 800x600x16
- 203h 800x600x256
- 204h 1024x768x16
- 205h 1024x768x256
- 206h 1280x960x16
- 207h 1152x864x256 (Diamond Stealth 64)
- 208h 1280x1024x16
- 209h 1152x864x32K
- 20Ah 1152x864x64K (Diamond Stealth 64)
- 20Bh 1152x864x4G
- 211h 640x480x64K (Diamond Stealth 24)
- 211h 640x400x4G (Diamond Stealth64 Video / Stealth64 Graphics)
- 212h 640x480x16M (Diamond Stealth 24)
- 301h 640x480x32K
- Note: these modes are only available on video cards using S3's VESA driver
- SeeAlso: #00083,#00191,#00732 at INT 1A/AX=B102h
- Index: video modes;S3
- --------V-104F03-----------------------------
- INT 10 - VESA SuperVGA BIOS - GET CURRENT VIDEO MODE
- AX = 4F03h
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- BX = video mode (see #00083,#00084)
- bit 13: VBE/AF v1.0P accelerated video mode
- bit 14: linear frame buffer enabled (VBE v2.0+)
- bit 15: don't clear video memory
- 01h failed
- SeeAlso: AH=0Fh,AX=4E04h,AX=4F02h
- --------V-104F04-----------------------------
- INT 10 - VESA SuperVGA BIOS - SAVE/RESTORE SuperVGA VIDEO STATE
- AX = 4F04h
- DL = subfunction
- 00h get state buffer size
- Return: BX = number of 64-byte blocks needed
- 01h save video states
- ES:BX -> buffer
- 02h restore video states
- ES:BX -> buffer
- CX = states to save/restore (see #00085)
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- 01h failed
- SeeAlso: AH=1Ch,AX=5F90h,AX=5FA0h
- Bitfields for VESA SuperVGA states to save/restore:
- Bit(s) Description (Table 00085)
- 0 video hardware state
- 1 video BIOS data state
- 2 video DAC state
- 3 SuperVGA state
- SeeAlso: #00048,#00186
- --------V-104F05-----------------------------
- INT 10 - VESA SuperVGA BIOS - CPU VIDEO MEMORY CONTROL
- AX = 4F05h
- BH = subfunction
- 00h select video memory window
- DX = window address in video memory (in granularity units)
- 01h get video memory window
- Return: DX = window address in video memory (in gran. units)
- BL = window number
- 00h window A
- 01h window B
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- 01h failed
- Note: when using an accelerated video mode under VBE/AF v1.0P, the
- application must call EnableDirectAccess before switching banks if
- bit 9 of the video mode attributes flag is set (see #00080)
- BUG: Phoenix S3 Trio64V+ v1.02-02 reportedly returns garbage in DX for
- subfunction 01h
- SeeAlso: AX=4F01h,AX=4F06h,AX=4F07h,AX=7000h/BX=0004h
- --------V-104F06-----------------------------
- INT 10 - VESA SuperVGA BIOS v1.1+ - GET/SET LOGICAL SCAN LINE LENGTH (PIXELS)
- AX = 4F06h
- BL = subfunction
- 00h set scan line length
- CX = desired width in pixels
- 01h get scan line length
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- 01h failed
- BX = bytes per scan line
- CX = number of pixels per scan line
- DX = maximum number of scan lines
- Notes: if the desired width is not achievable, the next larger width will be
- set
- the scan line may be wider than the visible area of the screen
- this function is valid in text modes, provided that pixel values are
- multiplied by the character cell width/height
- SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h/BL=02h,AX=4F06h/BL=03h,AX=4F07h
- --------V-104F06BL02-------------------------
- INT 10 - VESA SuperVGA BIOS v2.0+ - SET LOGICAL SCAN LINE LENGTH (BYTES)
- AX = 4F06h
- BL = 02h
- CX = desired scanline width in bytes
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- 01h failed
- BX = bytes per scan line
- CX = number of pixels per scan line
- DX = maximum number of scan lines
- Notes: if the desired width is not achievable, the next larger width will be
- set
- the scan line may be wider than the visible area of the screen
- this function is valid in text modes, provided that pixel values are
- multiplied by the character cell width/height
- SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h,AX=4F06h/BL=03h,AX=4F07h
- --------V-104F06BL03-------------------------
- INT 10 - VESA SuperVGA BIOS v2.0+ - GET MAXIMUM SCAN LINE LENGTH
- AX = 4F06h
- BL = 03h
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- 01h failed
- BX = maximum bytes per scan line
- CX = maximum number of pixels per scan line
- Notes: this function is valid in text modes, provided that pixel values are
- multiplied by the character cell width/height
- SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h,AX=4F06h/BL=02h,AX=4F07h
- --------V-104F07-----------------------------
- INT 10 - VESA SuperVGA BIOS v1.1+ - GET/SET DISPLAY START
- AX = 4F07h
- BL = subfunction
- 00h,80h set display start
- CX = leftmost displayed pixel in scan line
- DX = first displayed scan line
- 01h get display start
- Return: BH = 00h
- CX = leftmost displayed pixel in scan line
- DX = first displayed scan line
- BH = 00h (reserved)
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- 01h failed
- Notes: this function is valid in text modes, provided that values are
- multiplied by the character cell width/height
- subfunction 80h waits until vertical retrace before changing the
- display start address (VBE v2.0+)
- SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h
- --------V-104F08-----------------------------
- INT 10 - VESA SuperVGA BIOS v1.2+ - GET/SET DAC PALETTE CONTROL
- AX = 4F08h
- BL = subfunction
- 00h set DAC palette width
- BH = desired number of bits per primary color
- 01h get DAC palette width
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- 01h failed
- BH = current number of bits per primary (06h = standard VGA)
- --------V-104F09-----------------------------
- INT 10 - VESA SuperVGA BIOS v2.0+ - GET/SET PALETTE ENTRIES
- AX = 4F09h
- BL = subfunction
- 00h set (primary) palette
- 01h get (primary) palette
- 02h set secondary palette data
- 03h get secondary palette data
- 80h set palette during vertical retrace
- CX = number of entries to change
- DX = starting palette index
- ES:DI -> palette buffer (see #00086)
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- 01h failed
- SeeAlso: AX=4F0Ah,AX=D000h"S3VBE"
- Format of VESA VBE palette entry:
- Offset Size Description (Table 00086)
- 00h BYTE red
- 01h BYTE green
- 02h BYTE blue
- 03h BYTE alpha or alignment byte
- --------V-104F0ABL00-------------------------
- INT 10 - VESA SuperVGA BIOS v2.0+ - GET PROTECTED-MODE INTERFACE
- AX = 4F0Ah
- BL = 00h
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- ES:DI -> protected-mode table (see #00087)
- CX = length of table in bytes, included protected-mode code
- 01h failed
- SeeAlso: AX=4F00h,AX=4F05h,AX=4F07h,AX=4F09h
- Format of VESA VBE 2.0 protected-mode table:
- Offset Size Description (Table 00087)
- 00h WORD offset (within table) of protected-mode code for Function 5
- (Set Window)
- 02h WORD offset of protected-mode code for Function 7 (Set Disp Start)
- 04h WORD offset of protected-mode code for Function 9 (Set Primary
- Palette)
- 06h WORD offset (within table) of list of I/O ports and memory locations
- for which I/O privilege may be required in protected mode
- (0000h if no list)
- 08h var code and optional port/memory list
- --------V-104F0A-----------------------------
- INT 10 O - VESA SuperVGA BIOS v2.0 beta - GET PROTECTED-MODE CODE
- AX = 4F0Ah
- BX = function to be copied (see #00088)
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- CX = number of bytes to copy
- ES:DI -> code for requested function
- 01h failed
- SeeAlso: AX=4F09h,AX=D000h"S3VBE"
- (Table 00088)
- Values for VESA VBE protected-mode function identifiers:
- 0001h set bank (see AX=4F05h)
- 0002h set display start (see AX=4F07h)
- 0003h set palette (see AX=4F09h)
- --------V-104F0B-----------------------------
- INT 10 - VESA SuperVBA BIOS - GET VBE/AF v1.0P DEVICE CONTEXT BUFFER
- AX = 4F0Bh
- BL = subfunction
- 00h get length of device context buffer
- 01h initialize device context buffer
- ES:DI -> real-mode address of buffer (see #00089)
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- CX = number of bytes required for buffer (if BL=00h on entry)
- ES:DI buffer initialized (if BL=01h on entry)
- 01h failed
- Note: this interface description is derived from the draft VBE/AF proposal
- (version 1.0P, document revsion 0.12P, dated 13jan95)
- SeeAlso: AX=4F00h,AX=4F01h,AX=4F17h
- Format of VBE/AF v1.0P Device Context buffer:
- Offset Size Description (Table 00089)
- 00h WORD maximum X coordinate in frame buffer (0 = left edge)
- Note: application must never pass X coordinate greater than
- this value to the SetClipRect function (values are
- NOT range-checked!)
- 02h WORD maximum Y coordinate in frame buffer (0 = top edge)
- Note: application must never pass Y coordinate greater than
- this value to the SetClipRect function
- 04h DWORD -> "SetForeColor" to set foreground color/mix (see #00091)
- 08h DWORD -> "SetBackColor" to set background color/mix (see #00092)
- 0Ch DWORD -> "SetClipRect" set hardware clipping rectangle (see #00093)
- 10h DWORD -> function "DrawScan" to draw a single scan line
- 14h DWORD -> function "DrawScanList" to draw a list of scan lines
- 18h DWORD -> function "DrawRect" to draw a solid rectangle
- 1Ch DWORD -> function "DrawLine" to draw a solid line
- 20h DWORD -> function "DrawPattScan" to draw a patterned scan line
- 24h DWORD -> function "BitBlt" to perform screen-to-screen BitBLT
- 28h DWORD -> "TransBitBlt" to perform transparent screen-to-screen BitBLT
- 2Ch DWORD -> "MonoBitBlt" to monochrome expansion screen-to-screen BitBLT
- 30h DWORD -> function "SetCursor" to download hardware cursor image
- 34h DWORD -> function "SetCursorPos" to set hardware cursor position
- 38h DWORD -> function "SetCursorColor" to set hardware cursor color
- 3Ch DWORD -> function "ShowCursor" to show/hide hardware cursor
- 40h DWORD -> function "WaitTillIdle" to wait until graphics engine idle
- 44h DWORD -> "EnableDirectAccess" to enable direct framebuffer access
- 48h DWORD -> "DisableDirectAccess" to disable direct framebuffer access
- 4Ch DWORD -> "BankSwitchCB" bank-switching callback function
- (set by application, may simply point at 32-bit VBE 2.0 bank
- switching entry point)
- 50h WORD "VidMemSel" selector for video memory (must be set by app)
- 52h WORD "IOPortsOff" offset of I/O ports table in context buffer
- 54h WORD "IOMemoryOff" offset of I/O memory table in context buffer
- 56h WORD "IOMemSel1" selector for first I/O memory area specified by
- I/O memory table (must be set by application)
- 58h WORD "IOMemSel2" selector for second I/O memory area
- 5Ah WORD "IOMemSel3" selector for third I/O memory area
- 5Ch WORD "IOMemSel4" selector for fourth I/O memory area
- 5Eh N BYTEs device-specific state buffer
- N WORDs I/O port access table (list of ports, last entry is FFFFh)
- N DWORDs I/O memory access table (list of physical-address/length pairs,
- last entry is FFFFFFFFh)
- N BYTEs 32-bit code for VBE/AF v1.0P function
- Notes: all function pointers are offsets into the 32-bit code within the
- context buffer, and should be updated to point at the actual
- functions after the application has copied the buffer from the
- real-mode memory used for the interrupt call into its own flat-model
- memory space
- any functions which are not supported by the hardware have function
- pointers which are set to 00000000h initially
- (Table 00090)
- Values for VBE/AF v1.0P color mixing mode:
- 00h replace
- 01h XOR with existing pixel
- 02h OR with existing pixel
- 03h AND with existing pixel
- SeeAlso: #00091,#00090
- (Table 00091)
- Call VBE/AF v1.0P function "SetForeColor" with:
- ES:EDI -> device context buffer (see #00089)
- EAX = new foreground color (format varies by video mode)
- BL = new foreground mixing mode (see #00090)
- SeeAlso: #00089,#00092,#00107
- (Table 00092)
- Call VBE/AF v1.0P function "SetbackColor" with:
- ES:EDI -> device context buffer (see #00089)
- EAX = new background color (format varies by video mode)
- BL = new background mixing mode (see #00090)
- SeeAlso: #00089,#00091,#00093
- (Table 00093)
- Call VBE/AF v1.0P function "SetClipRect" with:
- ES:EDI -> device context buffer (see #00089)
- EAX = left clipping coordinate
- EBX = top clipping coordinate
- ECX = right clipping coordinate
- EDX = bottom clipping coordinate
- SeeAlso: #00089,#00092,#00094,#00107
- (Table 00094)
- Call VBE/AF v1.0P function "DrawScan" with:
- ES:EDI -> device context buffer (see #00089)
- EAX = X1 coordinate
- EBX = Y coordinate
- ECX = X2 coordinate
- Desc: draw a solid horizontal line from (X1,Y) to (X2,Y) in the currently-
- active foreground color and mix, omitting the pixel at the largest
- X coordinate
- SeeAlso: #00089,#00093,#00095,#00098,#00107
- (Table 00095)
- Call VBE/AF v1.0P function "DrawScanList" with:
- ES:EDI -> device context buffer (see #00089)
- EAX = Y coordinate of first line
- EBX = length of scan list
- DS:ESI -> scanline list X coordinates (2N WORDs)
- Desc: draw multiple solid horizontal lines at successive Y coordinates,
- using the currently-active foreground color and mix, omitting the
- pixel at the largest X coordinate for each line
- Note: the scanline list consists of pairs of X coordinates; because the
- last pixel is omitted, a scanline will be skipped if X1==X2
- SeeAlso: #00089,#00094,#00096,#00107
- (Table 00096)
- Call VBE/AF v1.0P function "DrawRect" with:
- ES:EDI -> device context buffer (see #00089)
- EAX = left coordinate
- EBX = top coordinate
- ECX = right coordinate
- EDX = bottom coordinate
- Desc: draw a solid rectangle in the currently-active foreground color and
- mix, omitting the rightmost X coordinate and bottom-most scan line
- Note: results are undefined if EAX>ECX or EBX>EDX; nothing will be drawn if
- EAX=ECX or EBX=EDX
- SeeAlso: #00089,#00094,#00095,#00097
- (Table 00097)
- Call VBE/AF v1.0P function "DrawLine" with:
- ES:EDI -> device context buffer (see #00089)
- EAX = ??? (specified this way in the draft documentation!)
- EBX = ???
- ECX = ???
- EDX = ???
- ESI = ???
- Desc: draw a solid line in the currently-active foreground color and mix,
- given the Bresenham parameters
- SeeAlso: #00089,#00094,#00096,#00098
- (Table 00098)
- Call VBE/AF v1.0P function "DrawPattScan" with:
- ES:EDI -> device context buffer (see #00089)
- EAX = X1 coordinate
- EBX = Y coordinate
- ECX = X2 coordinate
- DL = 8-bit stipple pattern
- Desc: draw a patterned horizontal line from (X1,Y) to (X2,Y) in the
- currently-active foreground color and mix, omitting the pixel at
- the largest X coordinate
- Note: for each pixel in the line, if DL bit (X mod 8) is set, the pixel is
- drawn, and left untouched if the bit is clear
- SeeAlso: #00089,#00096,#00097,#00094,#00099,#00107
- (Table 00099)
- Call VBE/AF v1.0P function "BitBlt" with:
- ES:EDI -> device context buffer (see #00089)
- DS:ESI -> BitBlt parameter block (see #00100)
- BL = mix operation
- 00h replace
- 01h XOR
- 02h OR
- 03h AND
- SeeAlso: #00089,#00094,#00098,#00101,#00107
- Format of VBE/AF BitBlt parameter block:
- Offset Size Description (Table 00100)
- 00h WORD left coordinate of source rectangle
- 02h WORD top coordinate of source rectangle
- 04h WORD right coordinate of source rectangle
- 06h WORD bottom coordinate of source rectangle
- 08h WORD left coordinate of destination rectangle
- 0Ah WORD top coordinate of destination rectangle
- 0Ch BYTE horizontal direction: 00h = decrement X, 01h = increment X
- 0Dh BYTE vertical direction: 00h = decrement Y, 01h = increment Y
- Notes: the rightmost pixel(s) and bottom-most scan line are not copied
- the horizontal/vertical direction flags are used to ensure correct
- copies when the source and destination rectangles overlap
- SeeAlso: #00099
- (Table 00101)
- Call VBE/AF v1.0P function "TransBitBlt" with:
- ES:EDI -> device context buffer (see #00089)
- DS:ESI -> BitBlt parameter block (see #00100)
- BL = mix operation
- 00h replace
- 01h XOR
- 02h OR
- 03h AND
- ECX = transparent color
- Desc: copy a rectangular area from one location to another, treating pixels
- with the specified color as transparent (leaving the destination
- unchanged)
- SeeAlso: #00089,#00099,#00102,#00107
- (Table 00102)
- Call VBE/AF v1.0P function "MonoBitBlt" with:
- ES:EDI -> device context buffer (see #00089)
- DS:ESI -> BitBlt parameter block (see #00100)
- BL = mix operation
- 00h replace
- 01h XOR
- 02h OR
- 03h AND
- BH = bit-plane from which to read
- Desc: copy a rectangular area from one location to another, expanding a
- single bit of each source pixel
- SeeAlso: #00089,#00099,#00101
- (Table 00103)
- Call VBE/AF v1.0P function "SetCursor" with:
- ES:EDI -> device context buffer (see #00089)
- DS -> application's data segment
- ESI -> 32x32 cursor data, in Windows 3.1 cursor-file format
- (32 DWORDs of XOR mask followed by 32 DWORDs of AND mask)
- SeeAlso: #00089,#00094,#00104,#00105
- (Table 00104)
- Call VBE/AF v1.0P function "SetCursorPos" with:
- ES:EDI -> device context buffer (see #00089)
- EAX = cursor X coordinate
- EBX = cursor Y coordinate
- CL = cursor's X hotspot
- CH = cursor's Y hotspot
- SeeAlso: #00089,#00103,#00105
- (Table 00105)
- Call VBE/AF v1.0P function "SetCursorColor" with:
- ES:EDI -> device context buffer (see #00089)
- AL = 8-bit color index, or color's Red value
- AH = color's Green value (16-bpp, 24-bpp, 32-bpp modes)
- BL = color's Blue value (16-bpp, 24-bpp, 32-bpp modes)
- SeeAlso: #00089,#00103,#00104,#00106
- (Table 00106)
- Call VBE/AF v1.0P function "ShowCursor" with:
- ES:EDI -> device context buffer (see #00089)
- AL = new visibility (00h hide cursor, 01h show cursor)
- SeeAlso: #00089,#00103,#00104,#00105
- (Table 00107)
- Call VBE/AF v1.0P function "WaitTillIdle" with:
- ES:EDI -> device context buffer (see #00089)
- Desc: pause until the hardware accelerator has completed all pending
- operations
- SeeAlso: #00089,#00108,#00109
- (Table 00108)
- Call VBE/AF v1.0P function "EnableDirectAccess" with:
- ES:EDI -> device context buffer (see #00089)
- SeeAlso: #00089,#00109,#00107,AX=4F05h,#00078,#00080
- (Table 00109)
- Call VBE/AF v1.0P function "DisableDirectAccess" with:
- ES:EDI -> device context buffer (see #00089)
- SeeAlso: #00089,#00108
- --------V-104F0C-----------------------------
- INT 10 - VESA SuperVGA BIOS - RESERVED FOR FUTURE SVGA FUNCTIONS
- AX = 4F0Ch-4F0Fh
- SeeAlso: AX=4F00h
- --------V-104F0B-----------------------------
- INT 10 - Diamond Viper V330 - ???
- AX = 4F0Bh
- ECX = ???
- ???
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- ECX = ???
- ???
- 01h failed
- Note: in BIOS v1.62, ECX is in multiples of 10000 (decimal) for both input
- and output, and this function never fails
- --------p-104F10BL00-------------------------
- INT 10 - VESA VBE/PM (Power Management) v1.0+ - GET CAPABILITIES
- AX = 4F10h
- BL = 00h
- ES:DI = 0000h:0000h (reserved for future use as pointer to info block)
- Return: AL = 4Fh if function supported (installed)
- AH = call status
- 00h successful
- else failed
- ---if successful---
- BL = VBE/PM version (bits 7-4: major, bits 3-0: minor)
- BH = supported states (see #00110)
- ES:DI unchanged
- Index: installation check;VESA VBE/Power Management|VESA DPMS
- SeeAlso: AX=4F10h/BL=01h,AX=4F10h/BL=02h
- Bitfields for VESA VBE/PM supported power states:
- Bit(s) Description (Table 00110)
- 0 standby
- 1 suspend
- 2 off
- 3 reduced on
- --------p-104F10BL01-------------------------
- INT 10 - VESA VBE/PM (Power Management) v1.0+ - SET DISPLAY POWER STATE
- AX = 4F10h
- BL = 01h
- BH = new state (see #00111)
- Return: AL = 4Fh if function supported
- AH = call status
- 00h successful
- else failed
- SeeAlso: AX=4F10h/BL=00h,AX=4F10h/BL=02h,AX=A00Ch
- (Table 00111)
- Values for VESA VBE/PM power state:
- 00h On
- 01h standby
- 02h suspend
- 04h Off
- 08h reduced On (for flat screens)
- --------p-104F10BL02-------------------------
- INT 10 - VESA VBE/PM (Power Management) v1.0+ - GET DISPLAY POWER STATE
- AX = 4F10h
- BL = 02h
- Return: AL = 4Fh if function supported
- AH = call status
- 00h successful
- BH = current power state (see #00111)
- else failed
- SeeAlso: AX=4F10h/BL=00h,AX=4F10h/BL=01h,AX=A00Dh
- --------V-104F11-----------------------------
- INT 10 - VESA VBE/FP (Flat Panel Interface) - API
- AX = 4F11h
- BL = function
- 00h installation check / get capabilities
- other registers vary by function
- Return: varies by function
- --------V-104F12-----------------------------
- INT 10 - VESA VBE/CI (Cursor Interface) - API
- AX = 4F12h
- BL = function
- other registers vary by function
- Return: varies by function
- SeeAlso: AX=4F4Dh
- --------s-104F13BX0000-----------------------
- INT 10 - VESA VBE/AI (Audio Interface) - INSTALLATION CHECK
- AX = 4F13h
- BX = 0000h
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- BX = version (0010h for 1.00 -- note nonstandard value!)
- 01h failed
- SeeAlso: AX=4F13h/BX=0001h,AX=4F13h/BX=0005h
- --------s-104F13BX0001-----------------------
- INT 10 - VESA VBE/AI (Audio Interface) - LOCATE DEVICE
- AX = 4F13h
- BX = 0001h
- CX = 0000h ???
- DX = type of device
- 0001h Wave device
- 0002h MIDI device
- 0003h Volume device
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- CX = handle [returned 1 for DX=1 and 3, and 2 for DX=2]
- 01h failed
- SeeAlso: AX=4F13h/BX=0000h,AX=4F13h/BX=0002h
- --------s-104F13BX0002-----------------------
- INT 10 - VESA VBE/AI (Audio Interface) - QUERY DEVICE
- AX = 4F13h
- BX = 0002h
- CX = handle
- DX = query
- 0001h return length of GeneralDeviceClass
- 0002h return copy of GeneralDeviceClass (see #00112)
- 0003h return length of Volume Info Structure
- 0004h return copy of Volume Info Structure (see #00122)
- 0005h return length of Volume Services Structure
- 0006h return copy of Volume Services Structure (see #00124)
- 0007h-000Fh reserved
- 0010h-FFFFh device-specific
- SI:DI -> buffer (functions 0002h,0004h,0006h)
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- SI:DI = length (functions 1,3,5)
- SI:DI buffer filled (functions 2,4,6)
- 01h failed
- Note: functions 0003h to 0006h are only supported for the Volume device
- Format of GeneralDeviceClass structure:
- Offset Size Description (Table 00112)
- 00h 4 BYTEs name of the structure ("GENI")
- 04h DWORD structure length
- 08h WORD type of device (1=Wave, 2=MIDI)
- 0Ah WORD version of VESA driver support (0100h for 1.00)
- 10h var for CX=handle for Wave device:
- Wave Info structure (see #00113)
- some bytes ???
- for CX=handle for MIDI device:
- MIDI Info Structure (see #00118)
- first 8 bytes of MIDI Service Structure ???
- SeeAlso: #00122,#00124
- Format of WAVE Info Structure:
- Offset Size Description (Table 00113)
- 00h 4 BYTEs name of the structure ("WAVI")
- 04h DWORD structure length [0000007Eh]
- 08h DWORD driver software version [00000003h]
- 0Ch 32 BYTEs vendor name, etc. (ASCIZ string)
- 2Ch 32 BYTEs vendor product name
- 4Ch 32 BYTEs vendor chip/hardware description
- 6Ch BYTE installed board number
- 6Dh 3 BYTEs unused data
- 70h DWORD feature bits (see #00114)
- 74h WORD user determined preference field
- 76h WORD memory required for driver use [0200h]
- 78h WORD number of timer tick callbacks per second [0000h]
- 7Ah WORD channels: 1 = mono, 2 = stereo
- stereo is assumed to be interleaved data
- 7Ch WORD bitfield of max sample sizes (see #00115)
- SeeAlso: #00118
- Bitfields for Wave feature bits:
- Bit(s) Description (Table 00114)
- 0 8000hz Mono Playback
- 1 8000hz Mono Record
- 2 8000hz Stereo Record
- 3 8000hz Stereo Playback
- 4 8000hz Full Duplex Play/Record
- 5 11025hz Mono Playback
- 6 11025hz Mono Record
- 7 11025hz Stereo Record
- 8 11025hz Stereo Playback
- 9 11025hz Full Duplex Play/Record
- 10 22050hz Mono Playback
- 11 22050hz Mono Record
- 12 22050hz Stereo Record
- 13 22050hz Stereo Playback
- 14 22050hz Full Duplex Play/Record
- 15 44100hz Mono Playback
- 16 44100hz Mono Record
- 17 44100hz Stereo Record
- 18 44100hz Stereo Playback
- 19 44100hz Full Duplex Play/Record
- 20-26 reserved (0)
- 27 driver must pre-handle the data
- 28 Variable Sample mono playback
- 29 Variable Sample stereo playback
- 30 Variable Sample mono record
- 31 Variable Sample stereo record
- (Table 00115)
- Values for Sample data size:
- 01h 8bit play
- 02h 16bit play
- 10h 8bit record
- 20h 16bit record
- Format of WAVE Audio Services structure:
- Offset Size Description (Table 00116)
- 00h 4 BYTEs name of the structure
- 04h DWORD structure length
- 08h 16 BYTEs for future expansion
- ---entry points (details???)---
- 18h DWORD DeviceCheck
- 11h compression (see also #00117)
- 12h driver state
- 13h get current pos
- 14h sample rate
- 15h set preference
- 16h get DMA,IRQ
- 17h get IO address
- 18h get mem address
- 19h get mem free
- 1Ah full duplex
- 1Bh get block size
- 1Ch get PCM format
- 1Dh enable PCM format
- 80h-.. vendors can add DevChks above 0x80
- 1Ch DWORD PCMInfo
- 20h DWORD PlayBlock
- 24h DWORD PlayCont
- 28h DWORD RecordBlock
- 2Ch DWORD RecordCont
- 30h DWORD PauseIO
- 34h DWORD ResumeIO
- 38h DWORD StopIO
- 3Ch DWORD WavePrepare
- 40h DWORD WaveRegister
- 44h DWORD GetLastError
- 01h unsupported feature/function
- 02h bad sample rate
- 03h bad block length
- 04h bad block address
- 05h app. missed an IRQ
- 06h don't understand the PCM size/format
- 80h-.. vendors specific errors
- 48h DWORD TimerTick
- 4Ch DWORD ApplPSyncCB: CallBack: play filled in by the app
- 50h DWORD ApplRSyncCB: CallBack: rec filled in by the app
- SeeAlso: #00120,#00124
- (Table 00117)
- Values for type of compression:
- 01h IMA play
- 02h ALAW play
- 03h ULAW play
- 11h IMA record
- 12h ALAW record
- 13h ULAW record
- Format of MIDI Info Structure:
- Offset Size Description (Table 00118)
- 00h 4 BYTEs name of the structure ("MIDI")
- 04h DWORD structure length
- 08h DWORD driver software version [00000003h]
- 0Ch 32 BYTEs vendor name, etc. (ASCIZ string)
- 2Ch 32 BYTEs vendor product name
- 4Ch 32 BYTEs vendor chip/hardware description
- 6Ch BYTE installed board number
- 6Dh 3 BYTEs unused data
- 70h 14 BYTEs the patch library file name [OPL2.BNK 00..]
- 7Eh DWORD feature bits (see #00119)
- 80h WORD user determined preference field
- 82h WORD memory required for driver use
- 84h WORD # of timer tick callbacks per second
- 86h WORD max # of tones (voices, partials)
- SeeAlso: #00112,#00120,#00122
- Bitfields for MIDI feature bits:
- Bit(s) Description (Table 00119)
- 0-3 reserved for GM extensions
- 4 Transmitter/Receiver only
- 5 Patches preloaded
- 6 MIDI receive has time stamp
- 8 MIDI interrupt driven input supported
- 9 MIDI polled input supported
- 10 MIDI remote patches supported
- Format of MIDI Service structure:
- Offset Size Description (Table 00120)
- 00h 4 BYTEs name of the structure ("MIDS")
- 04h DWORD structure length
- 08h 16 WORDs patches loaded table bit field
- 28h 16 BYTEs for future expansion
- ---entry points (details???)---
- 38h DWORD device check
- 11h return available tones
- 12h return TRUE/FALSE if patch is understood
- 13h set preference
- 14h allow/disallow voice stealing
- 15h get FIFO sizes
- 16h get DMA,IRQ
- 17h get IO address
- 18h get mem address
- 19h get mem free
- 80h-.. vendors can add DevChks above 0x80
- 3Ch DWORD global reset
- 40h DWORD MIDI msg
- 44h DWORD poll MIDI
- 48h DWORD preload patch
- 4Ch DWORD unload patch
- 50h DWORD timer tick
- 54h DWORD get last error
- 01h unsupported feature/function
- 02h unknown patch type (see #00121)
- 03h all tones are used
- 04h messages are out of sync
- 05h an incoming patch was incomplete
- 06h an incoming patch couldn't be stored
- 07h had to drop an incoming byte
- 08h driver is failing a patch download
- 80h-.. vendors specific errors
- 58h DWORD Patch Block free callback
- 5Ch DWORD MIDI byte avail. callback
- SeeAlso: #00116,#00124
- (Table 00121)
- Values for MIDI Registered Patch Types:
- 10h OPL2
- 11h OPL3
- Format of Volume Info Structure:
- Offset Size Description (Table 00122)
- 00h 4 BYTEs name of the structure ("VOLI")
- 04h DWORD structure length (00000092h)
- 08h DWORD driver software version [00000001h]
- 0Ch 32 BYTEs vendor name, etc. (ASCIZ string)
- 2Ch 32 BYTEs vendor product name
- 4Ch 32 BYTEs vendor chip/hardware description
- 6Ch BYTE installed board number (0 for 1st/only board)
- 6Dh 3 BYTEs unused data (0)
- 70h 24 BYTEs text name of the mixer channel
- 88h DWORD features bits (see #00123)
- 8Ch WORD minimum volume setting
- 8Eh WORD maximum volume setting
- 90h WORD attenuation/gain crossover
- SeeAlso: #00112,#00124
- Bitfields for Volume feature bits:
- Bit(s) Description (Table 00123)
- 0 Stereo Volume control available
- 2 Low Pass Filter is available
- 3 High Pass Filter is available
- 4 Parametric Tone Control is available
- 5 selectable output paths
- 8 Azimuth Field positioning supported
- 9 Phi Field positioning supported
- 10-30 unused???
- 31 Master Volume device
- Format of Volume Services Structure:
- Offset Size Description (Table 00124)
- 00h 4 BYTEs name of the structure ("VOLS")
- 04h DWORD structure length (00000038h)
- 08h 16 BYTEs 16 bytes for future expansion (0)
- ---entry points (details???)---
- 18h DWORD device check
- 0011h filter range
- 0012h filter setting
- 0013h filter current
- 0014h tone range
- 0015h tone setting
- 0016h tone current
- 0017h path
- 0018h get IO address
- 0080h-.. vendors can add DevChks above 0x80
- 1Ch DWORD set vol to an absolute setting
- 01h User master volume setting
- 02h application master volume setting
- 20h DWORD set 3D volume
- 24h DWORD tone control
- 28h DWORD filter control
- 2Ch DWORD output path
- 30h DWORD reset channel
- 34h DWORD get last error
- 01h unsupported feature/function
- 02h out of range parameter value
- 80h+ vendor-specific errors
- SeeAlso: #00116,#00120
- --------s-104F13BX0003-----------------------
- INT 10 - VESA VBE/AI (Audio Interface) - OPEN DEVICE
- AX = 4F13h
- BX = 0003h
- CX = handle
- DX = API set (16/32-bit)
- SI = segment ???
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- SI:CX -> memory ???
- 01h failed
- SeeAlso: AX=4F13h/BX=0000h,AX=4F13h/BX=0002h,AX=4F13h/BX=0004h
- --------s-104F13BX0004-----------------------
- INT 10 - VESA VBE/AI (Audio Interface) - CLOSE DEVICE
- AX = 4F13h
- BX = 0004h
- CX = handle
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- 01h failed
- SeeAlso: AX=4F13h/BX=0000h,AX=4F13h/BX=0003h,AX=4F13h/BX=0005h
- --------s-104F13BX0005-----------------------
- INT 10 - VESA VBE/AI (Audio Interface) - UNINSTALL DRIVER
- AX = 4F13h
- BX = 0005h
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- 01h failed
- SeeAlso: AX=4F13h/BX=0000h,AX=4F13h/BX=0006h
- --------s-104F13BX0006-----------------------
- INT 10 - VESA VBE/AI (Audio Interface) - DRIVER CHAIN/UNCHAIN
- AX = 4F13h
- BX = 0006h
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- 01h failed
- SeeAlso: AX=4F13h/BX=0000h,AX=4F13h/BX=0005h
- ----------104F14-----------------------------
- INT 10 - VESA OEM Extensions - API
- AX = 4F14h
- BL = function
- 00h installation check / get capabilities
- other registers vary by function
- Return: varies by function
- Note: this function is provided for OEMs to implement system-specific
- functionality in a VESA-compatible manner
- ----------104F14-----------------------------
- INT 10 - VESA OEM Extensions - Matrox Millenium (BIOS v2.1)
- AX = 4F14h
- BL = function
- 00h installation check / get capabilities
- ES:DI -> 256-byte buffer for Matrox-specific information
- (see #00125)
- Return: ES:DI buffer filled
- 01h read/write MGA indexed data register
- BH = direction (00h = write, else read)
- CL = register number (80h for most-recently used register)
- CH = new value, if writing
- Return: CH = current value, if reading
- 02h read/write register in MGA control space
- BH = direction and size
- bit 4: read register instead of writing
- bits 1-0: data size (00 = BYTE, 01 = WORD, 10 = DWORD)
- SI = register address
- CL/CX/ECX = new value if writing
- Return: CL/CX/ECX = current value if reading
- 03h read PINS byte
- SI = offset of byte within PINS data (see #00126)
- Return: CL = value of specified PINS byte
- 04h ??? (related to PLL programming)
- DX = ???
- Return: CL,EDX destroyed
- 05h read BIOS byte
- SI = offset of byte relative to start of BIOS image
- Return: CL = specified byte
- else
- Return: AX = FFFFh
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- 01h failed
- Note: most of this info is from http:\\grafi.ii.pw.edu.pl\gbm\matrox
- SeeAlso: MEM C000h:7FFCh"Matrox"
- Format of Matrox-specific VESA extensions information:
- Offset Size Description (Table 00125)
- 00h 7 BYTEs signature "VBE/MGA"
- 07h 10 BYTEs ??? (01h 01h 00h 00h 00h 00h 00h 00h 00h 07h)
- 11h WORD BIOS version (high byte = major, low byte = one-digit minor)
- 13h DWORD -> manufacturer name (ASCIZ "Matrox")
- 17h DWORD -> ASCIZ card name
- 1Bh DWORD -> ??? ASCIZ string (empty string on card examined)
- 1Fh DWORD -> ASCIZ vendor name
- 23h DWORD -> ASCIZ BIOS file base name
- 27h DWORD -> PINS
- 2Bh WORD video memory size in 64K units
- 2Dh DWORD linear address of linear frame buffer
- 31h DWORD linear address of MGA control aperture
- 35h WORD PCI bus/device for card???
- 37h 201 BYTEs unused??? (cleared to 00h)
- Format of Matrox PINS data (version 3.0):
- Offset Size Description (Table 00126)
- 00h 2 BYTEs signature ".A" (2Eh 41h)
- 02h BYTE structure length (40h for v3.0)
- 03h BYTE ???
- 04h WORD PINS version (high byte = major, low byte = minor)
- 06h WORD date last programmed
- 08h WORD number of times programmed
- 0Ah WORD flags
- 0Ch 8 BYTEs ASCII serial number, three letters + five digits
- 14h 8 BYTEs ???
- 1Ch 4 BYTEs ASCII card version
- 20h DWORD PCB revision
- 24h BYTE maximum RAMDAC frequency in MHz (less 100)
- 25h BYTE maximum RAMDAC frequency???
- 26h BYTE maximum RAMDAc frequency???
- 27h BYTE ???
- 28h BYTE ??? timing data?
- 29h BYTE ???
- 2Ah BYTE ???
- 2Bh BYTE ???
- 2Ch BYTE ???
- 2Dh BYTE ???
- 2Eh BYTE ???
- 2Fh BYTE ???
- 30h 4 BYTEs ???
- 34h BYTE ???
- 35h BYTE ???
- 36h BYTE ???
- 37h BYTE memory size in 64K units
- 38h BYTE ???
- 39h BYTE ???
- 3Ah BYTE ???
- 3Bh BYTE ???
- 3Ch BYTE ???
- 3Dh BYTE ???
- 3Eh BYTE ???
- 3Fh BYTE checksum (to make sum of all bytes MOD 256 == 00h)
- --------V-104F15BL00-------------------------
- INT 10 - VESA VBE/DC (Display Data Channel) - INSTALLATION CHECK / CAPABILITIES
- AX = 4F15h
- BL = 00h
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- BX = ???
- 01h failed
- ???
- SeeAlso: AX=4F15h/BL=01h,AX=4F15h/BL=02h
- --------V-104F15BL01-------------------------
- INT 10 - VESA VBE/DC (Display Data Channel) - READ EDID
- AX = 4F15h
- BL = 01h
- CX = 0000h
- DX = 0000h
- ES:DI -> 128-byte buffer for EDID record (see #00127)
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- ES:DI buffer filled
- 01h failed (e.g. non-DDC monitor)
- SeeAlso: AX=4F15h/BL=00h,AX=4F15h/BL=02h,I2C A0h"DDC"
- Format of VESA EDID record:
- Offset Size Description (Table 00127)
- 00h 8 BYTEs padding (all FFh, or 00h FFh..FFh 00h)
- 08h WORD big-endian manufacturer ID (see #00136)
- bits 14-10: first letter (01h='A', 02h='B', etc.)
- bits 9-5: second letter
- bits 4-0: third letter
- 0Ah WORD EDID ID code -- identifies monitor model
- 0Ch DWORD serial number or FFFFFFFFh
- for "MAG", subtract 7000000 to get actual serial number
- for "OQI", subtract 456150000
- for "PHL", subtract ???
- for "VSC", subtract 640000000
- 10h BYTE week number of manufacture
- 11h BYTE manufacture year - 1990
- 12h BYTE EDID version
- 13h BYTE EDID revision
- 14h BYTE video input type (see #00129)
- 15h BYTE maximum horizontal size in cm
- 16h BYTE maximum vertical size in cm
- 17h BYTE gamma factor (gamma = 1.0 + factor/100, so max = 3.55)
- 18h BYTE DPMS flags (see #00128)
- 19h BYTE chroma information: green X'/Y' and red X'/Y'
- 1Ah BYTE chroma information: white X'/Y' and blue X'/Y'
- 1Bh BYTE chroma information: red Y
- 1Ch BYTE chroma information: red X
- 1Dh BYTE chroma information: green Y
- 1Eh BYTE chroma information: green X
- 1Fh BYTE chroma information: blue Y
- 20h BYTE chroma information: blue X
- 21h BYTE chroma information: white Y
- 22h BYTE chroma information: white X
- 23h BYTE established timings 1 (see #00130)
- 24h BYTE established timings 2 (see #00131)
- 25h BYTE manufacturer's reserved timing or 00h for none
- bit 7: 1152x870 @ 75 Hz (Mac II, Apple)
- 26h 8 WORDs standard timing identification
- resolution (low byte) and vertical frequency (high byte) for
- each of eight modes (see #00132)
- X resolution = (lowbyte + 31) * 8
- 36h 18 BYTEs detailed timing description #1 (see #00133)
- (v1.1) alternately, text identification (see #00135)
- 48h 18 BYTEs detailed timing description #2
- (v1.1) alternately, text identification (see #00135)
- 5Ah 18 BYTEs detailed timing description #3
- (v1.1) alternately, text identification (see #00135)
- 6Ch 18 BYTEs detailed timing description #4
- (v1.1) alternately, text identification (see #00135)
- 7Eh BYTE unused???
- 7Fh BYTE checksum
- (radix-complement: 256-low byte of 16-bit sum of 00h-7Eh)
- Bitfields for DPMS EDID flags:
- Bit(s) Description (Table 00128)
- 2-0 unused???
- 3 display type
- =0 non-RGB multicolor
- =1 RGB color
- 4 unused???
- 5 Active Off supported
- 6 Suspend supported
- 7 Standby supported
- SeeAlso: #00127
- Bitfields for DPMS input signal type:
- Bit(s) Description (Table 00129)
- 0 separate sync
- 1 composite sync
- 2 sync on green
- 4-3 unused???
- 6-5 voltage level
- 00 0.700V/0.300V (1.00 Vp-p)
- 01 0.714V/0.286V
- 10 0.100V/0.400V
- 11 reserved
- 7 =1 digital signal, =0 analog
- SeeAlso: #00127
- Bitfields for DPMS established timings 1:
- Bit(s) Description (Table 00130)
- 0 720x400 @ 70 Hz (VGA 640x400, IBM)
- 1 720x400 @ 88 Hz (XGA2)
- 2 640x480 @ 60 Hz (VGA)
- 3 640x480 @ 67 Hz (Mac II, Apple)
- 4 640x480 @ 72 Hz (VESA)
- 5 640x480 @ 75 Hz (VESA)
- 6 800x600 @ 56 Hz (VESA)
- 7 800x600 @ 60 Hz (VESA)
- SeeAlso: #00127,#00131
- Bitfields for DPMS established timings 2:
- Bit(s) Description (Table 00131)
- 0 800x600 @ 72 Hz (VESA)
- 1 800x600 @ 75 Hz (VESA)
- 2 832x624 @ 75 Hz (Mac II)
- 3 1024x768 @ 87 Hz interlaced (8514A)
- 4 1024x768 @ 60 Hz (VESA)
- 5 1024x768 @ 70 Hz (VESA)
- 6 1024x768 @ 75 Hz (VESA)
- 7 1280x1024 @ 75 Hz (VESA)
- SeeAlso: #00127,#00130
- Bitfields for DPMS standard timing information:
- Bit(s) Description (Table 00132)
- 5-0 vertical refresh frequency - 60 (Hz)
- 7-6 aspect ratio (Y resolution = X resolution * aspect ratio)
- 00 ???
- 01 0.75
- 10 0.8
- 11 0.5625
- Note: if both bytes of the timing are 00h or 01h, then the Standard Timing
- is "None"
- SeeAlso: #00127
- Format of Detailed Timing Description:
- Offset Size Description (Table 00133)
- 00h BYTE horizontal frequency in kHz (if 00h, may be text)(see #00135)
- 01h BYTE vertical frequency in Hz
- 02h BYTE horizontal active time (pixels) and X resolution
- 03h BYTE horizontal blanking time (pixels)
- 04h BYTE horizontal active time 2 / horizontal blanking time 2
- 05h BYTE vertical active time (lines) and Y resolution
- 06h BYTE vertical blanking time (lines)
- 07h BYTE vertical active time 2 / vertical blanking time 2
- 08h BYTE horizontal sync offset (pixels)
- 09h BYTE horizontal sync pulsewidth (pixels)
- 0Ah BYTE vertical sync offset / vertical sync pulsewidth
- 0Bh BYTE vertical/horizontal sync offset 2 / vert/hor. sync pulsewidth 2
- 0Ch BYTE horizontal image size (mm)
- 0Dh BYTE vertical image size (mm)
- 0Eh BYTE horizontal image size 2 / vertical image size 2
- 0Fh BYTE horizontal border (pixels)
- 10h BYTE vertical border (lines)
- 11h BYTE type of display (see #00134)
- SeeAlso: #00127,#00135
- Bitfields for EDID detailed display type:
- Bit(s) Description (Table 00134)
- 7 interlaced
- 6-5 stereo mode
- 00 normal display (no stereo)
- 01 stereo, right stereo sync high
- 10 stereo, left stereo sync high
- 11 undefined
- 4-3 sync type
- 00 sync analog composite
- 01 sync bipolar analog composite
- 10 sync digital composite
- 11 sync digital separate
- ---sync digital separate---
- 2 vertical sync polarity (0 = negative, 1 = positive)
- 1 horizontal sync polarity (0 = negative, 1 = positive)
- ---other sync types---
- 2 serrate
- 1 sync location (0 = on green, 1 = on RGB)
- ------
- 0 not used???
- SeeAlso: #00133
- Format of EDID Text Identification Strings:
- Offset Size Description (Table 00135)
- 00h 3 BYTEs 00h 00h 00h (to distinguish from detailed timing description)
- 03h BYTE text identifier
- FFh serial number
- FEh vendor name
- FDh vertical/horizontal frequency range
- FCh model name
- ---frequency range---
- 04h BYTE 00h ???
- 05h BYTE minimum vertical refresh frequency in Hz
- 06h BYTE maximum vertical refresh
- 07h BYTE minimum horizontal frequency in kHz
- 08h BYTE maximum horizontal frequency
- 09h BYTE FFh ???
- ---other---
- 04h 14 BYTEs text, may be terminated with either a NUL (00h) or LF (0Ah)
- SeeAlso: #00132
- (Table 00136)
- Values for manufacturer ID:
- "AOC" AOC International (USA) Ltd. (see #00137)
- "API" Acer (see #00138)
- "APP" Apple Computer, Inc. (see #00139)
- "AST" AST Research (see #00140)
- "CPL" ALFA (see #00141)
- "CPQ" COMPAQ (see #00142)
- "CTX" CTX - Chuntex Electronic (see #00143)
- "DEC" Digital Equipment Corporation (see #00144)
- "DEL" Dell Computer Corp. (see #00145)
- "DPC" Delta Electronics, Inc. (see #00146)
- "DWE" Daewoo (see #00147)
- "ECS" ELITEGROUP Computer Systems (see #00148)
- "EIZ" EIZO (see #00149)
- "GSM" LG Electronics Inc. (see #00158)
- "HEI" Hyundai Electronics Industries Co., Ltd. (see #00150)
- "HIT" Hitachi (see #00151)
- "HSL" Hansol Electronics (see #00152)
- "HTC" Hitachi Ltd. (see #00153)
- "HWP" Hewlett Packard (see #00154)
- "IBM" IBM PC Company (see #00155)
- "ICL" Fujitsu ICL (see #00156)
- "IVM" Idek Iiyama North America, Inc. (see #00157)
- "LKM" AZALEA
- "LNK" LINK Technologies, Inc.
- "MAG" MAG Technology Co., Ltd. (see #00159)
- "MAX" Maxdata Computer GmbH
- "MEI" Panasonic Comm. & Systems Co. (see #00168)
- "MEL" Mitsubishi Electronics (see #00160)
- "MIR" miro Computer Products AG (see #00161)
- "MTC" MITAC
- "NAN" NANAO (see #00162)
- "NEC" NEC Technologies, Inc. (see #00163)
- "NOK" Nokia (see #00164)
- "OQI" OPTIQUEST (see #00165)
- "PGS" Princeton Graphic Systems (see #00166)
- "PHL" Philips Consumer Electronics Co. (see #00167)
- "REL" Relisys
- "SAM" Samsung (see #00169)
- "SDI" Samtron (see #00170)
- "SNI" Siemens Nixdorf
- "SNY" Sony Corporation
- "TAT" Tatung Co. of America, Inc. (see #00171)
- "TRL" Royal Information Company (see #00172)
- "UNM" Unisys Corporation
- "VSC" ViewSonic Corporation (see #00173)
- "___" Targa
- SeeAlso: #00127
- (Table 00137)
- Values for AOC monitor EDID:
- A566h AOC SPECTRUM 5Nlr
- A782h AOC SPECTRUM 7Nlr
- D350h AOC SPECTRUM 4V, 4VA, 4Vlr, 4VlrA
- D566h AOC SPECTRUM 5Vlr, 5VlrA
- E570h AOC SPECTRUM 5Glr
- E750h AOC SPECTRUM 7DlrA
- SeeAlso: #00136,#00138
- (Table 00138)
- Values for Acer monitor EDID:
- 0037h AcerView 55
- 424Ch AcerView 76ie
- 440Bh AcerView 11D
- 4421h AcerView 33D
- 4522h AcerView 7134e
- 4536h AcerView 7154e
- 4538h AcerView 7156e
- 454Ch AcerView 7176ie
- 454Eh AcerView 7178ie
- 4938h AcerView 7156i
- 494Ch AcerView 76i
- 494Eh AcerView 78i
- 4962h AcerView 98i
- 4C21h AcerView 33DL
- 4C22h AcerView 34TL
- 4C37h AcerView 55L
- 4C38h AcerView 56L
- 4E4Ch AcerView 76N
- 5321h AcerView 7133s
- 5322h AcerView 7134s
- 5336h AcerView 7154s
- 5338h AcerView 7156s, 7156is
- 534Ch AcerView 7176is
- 5422h AcerView 34T
- SeeAlso: #00136,#00137,#00140
- (Table 00139)
- Values for Apple Computer monitor EDID:
- 0352h AppleVision 850
- SeeAlso: #00136
- (Table 00140)
- Values for AST monitor EDID:
- 8001h ASTVision 4V
- 8002h ASTVision 4I
- 8003h ASTVision 4N
- 8004h ASTVision 4L
- 8005h ASTVision 5L
- 8006h ASTVision 7L
- 8007h ASTVision 7H
- 8008h ASTVision 20H
- 8009h AST Sabre
- 800Ah ASTVision 5V
- SeeAlso: #00136,#00127,#00138,#00141
- (Table 00141)
- Values for ALFA monitor EDID:
- 096Bh ALFA TH-450
- SeeAlso: #00136,#00140,#00142
- (Table 00142)
- Values for Compaq monitor EDID:
- 0011h COMPAQ 1024
- 0012h COMPAQ 1024
- 0013h COMPAQ 1024
- 0014h COMPAQ 1024
- 0015h COMPAQ 1024
- 0016h COMPAQ 1024
- 0017h COMPAQ PRB
- 0018h COMPAQ PRB
- 0019h COMPAQ PRB
- 001Ah COMPAQ PRB
- 0020h COMPAQ PRB
- 0021h COMPAQ PRB
- 0022h COMPAQ 151FS
- 0023h COMPAQ 151FS
- 0024h COMPAQ 151FS
- 0025h COMPAQ 151FS
- 0026h COMPAQ 151FS
- 0027h COMPAQ 151FS
- 0028h COMPAQ 151FS
- 0029h COMPAQ PRB
- 002Ah COMPAQ PRB
- 002Bh COMPAQ PRB
- 002Ch COMPAQ PRB
- 002Dh COMPAQ 171FS
- 002Eh COMPAQ 171FS
- 002Fh COMPAQ 171FS
- 0030h COMPAQ 171FS
- 0031h COMPAQ 171FS
- 0032h COMPAQ 171FS
- 0033h COMPAQ 171FS
- 0040h COMPAQ QVision 200
- 0041h COMPAQ QVision 200
- 0042h COMPAQ QVision 200
- 0043h COMPAQ QVision 200
- 0044h COMPAQ QVision 200
- 0045h COMPAQ QVision 200
- 0046h COMPAQ QVision 200
- 0047h COMPAQ QVision 200
- 0048h COMPAQ QVision 200
- 0049h COMPAQ QVision 200
- 0100h COMPAQ 1024
- 0146h COMPAQ 1024
- 0147h COMPAQ 1024
- 0346h COMPAQ 151FS
- 0347h COMPAQ 151FS
- 0348h COMPAQ 151FS
- 0349h COMPAQ 151FS
- 034Ah COMPAQ 151FS
- 034Bh COMPAQ 151FS
- 0546h COMPAQ 171FS
- 0547h COMPAQ 171FS
- 0548h COMPAQ 171FS
- 0549h COMPAQ 171FS
- 0746h COMPAQ PRB
- 0747h COMPAQ PRB
- 0846h COMPAQ PRA
- 0847h COMPAQ PRA
- 0848h COMPAQ PRA
- 0849h COMPAQ PRA
- 084Ah COMPAQ PRA
- 084Bh COMPAQ PRA
- 084Ch COMPAQ PRA
- 084Dh COMPAQ PRA
- 0946h COMPAQ PRB
- 0947h COMPAQ PRB
- 0948h COMPAQ PRB
- 0949h COMPAQ PRB
- 0A46h COMPAQ PRA
- 0A47h COMPAQ PRA
- 0A48h COMPAQ PRA
- 0A49h COMPAQ PRA
- 0A4Ah COMPAQ PRA
- 0A4Bh COMPAQ PRA
- 0A4Ch COMPAQ PRA
- 0A4Dh COMPAQ PRA
- 0D46h COMPAQ 140
- 0D47h COMPAQ 140
- 0D48h COMPAQ 140
- 0D49h COMPAQ 140
- 0D4Ah COMPAQ 140
- 0D4Bh COMPAQ 140
- 0D4Ch COMPAQ 140
- 0D4Dh COMPAQ 140
- 0F46h COMPAQ 150
- 0F47h COMPAQ 150
- 0F48h COMPAQ 150
- 0F49h COMPAQ 150
- 0F4Ah COMPAQ 150
- 0F4Bh COMPAQ 150
- 0F4Ch COMPAQ 150
- 0F4Dh COMPAQ 150
- SeeAlso: #00136,#00141,#00143
- (Table 00143)
- Values for "CTX" monitor EDID:
- 1451h CTX 1451
- 1551h CTX 1551
- 1562h CTX 1562
- 1565h CTX 1565
- 1569h CTX 1569S 15-inch
- 1765h CTX 1765
- 1785h CTX 1785 XE
- 2085h CTX 2085
- 2185h CTX 2185
- SeeAlso: #00136,#00142,#00144
- (Table 00144)
- Values for Digital Equipment Corporation monitor EDID:
- 06FAh Digital 21" Color (FR-PCXAV-WZ)
- 073Ah Digital 17" Color (FR-PCXAV-YZ)
- BA08h Digital 15" Color Monitor (FR-PCXBV-E*)
- DA08h Digital 17" Color Monitor (FR-PCXBV-F*)
- SeeAlso: #00136,#00143,#00145
- (Table 00145)
- Values for Dell monitor EDID:
- 139Ah Dell Ultrascan 14XE
- 139Bh Dell Ultrascan 14XE
- 139Ch Dell Ultrascan 14XE
- 139Dh Dell Ultrascan 14XE
- 2210h Dell Ultrascan V17X
- 2211h Dell Ultrascan V17X
- 2212h Dell Ultrascan V17X
- 2213h Dell Ultrascan V17X
- 2214h Dell Ultrascan 21TE
- 2215h Dell Ultrascan 21TE
- 2216h Dell Ultrascan 21TE
- 2217h Dell Ultrascan 21TE
- 3024h Dell VS17X
- 3025h Dell VS17X
- 3026h Dell VS17X
- 3027h Dell VS17X
- 4273h Dell VS15X
- SeeAlso: #00136,#00144,#00146
- (Table 00146)
- Values for Delta Electronics monitor EDID:
- 0456h Delta DA-456
- 1565h Delta DA-1565
- 1765h Delta DA-1765
- SeeAlso: #00136,#00145,#00147
- (Table 00147)
- Values for Daewoo monitor EDID:
- 1423h Daewoo CMC-1423B1
- 1427h Daewoo CMC-1427X1
- 1502h Daewoo CMC-1502B1
- 1505h Daewoo CMC-1505X
- 1507h Daewoo CMC-1507X1
- 1703h Daewoo CMC-1703B
- 5133h Daewoo CMC-1511B
- 7044h Daewoo CMC-1704C
- SeeAlso: #00136,#00146,#00148
- (Table 00148)
- Values for ELITEGROUP Computer Systems monitor EDID:
- 0001h ECS VERTOS 1401
- 0002h ECS VERTOS 1501
- 0003h ECS VERTOS 1502
- 0004h ECS VERTOS 1503
- 0005h ECS VERTOS 1700
- 0006h ECS VERTOS 1701
- 0007h ECS VERTOS 1700
- 0008h ECS VERTOS 2101
- 0009h ECS VERTOS 2102
- SeeAlso: #00136,#00147,#00149
- (Table 00149)
- Values for EIZO monitor EDID:
- 0200h EIZO FlexScan F351
- 0201h EIZO FlexScan F553
- 0202h EIZO FlexScan F563
- 0203h EIZO FlexScan F764
- 0204h EIZO FlexScan F784
- 0206h EIZO FlexScan 6600
- 0300h EIZO FlexScan 6500
- 0302h EIZO 9060S
- 0303h EIZO 9065S
- 0305h EIZO FlexScan T563
- 0306h EIZO 9070S
- 0307h EIZO 9080i
- 0308h EIZO 9400i
- 0309h EIZO 9500
- 030Ah EIZO FlexScan F340iW
- 030Ch EIZO FlexScan F552
- 030Dh EIZO FlexScan F560iW
- 030Fh EIZO FlexScan F760iW
- 0310h EIZO FlexScan F780iW
- 0311h EIZO FlexScan T560i
- 0312h EIZO FlexScan T660i
- 0313h EIZO FlexScan T562
- 0314h EIZO FlexScan T662
- 038Ch EIZO FlexScan F550iW
- SeeAlso: #00136,#00148,#00150
- (Table 00150)
- Values for Hyundai monitor EDID:
- 0B42h Hyundai Deluxscan 21
- 12F0h Hyundai Deluxscan 14S
- 16D8h Hyundai Deluxscan 15B
- 16E8h Hyundai Deluxscan 15G
- 16EEh Hyundai Delucscan 15G+
- 1E02h Hyundai Deluxscan 17 Pro
- 1EB8h Hyundai Deluxscan 17B
- 1EBEh Hyundai Deluxscan 17B+
- 5864h Hyundai DeluxScan 15 Pro
- B81Eh Hyundai DeluxScan 17
- SeeAlso: #00136,#00149,#00151
- (Table 00151)
- Values for Hitachi monitor EDID:
- 1717h Hitachi Accuvue GX17L
- 1727h Hitachi HM1764
- 1827h Hitachi HM1782
- 2147h Hitachi HM4721
- 2149h Hitachi HM4921
- 4020h Hitachi HM4020
- 4021h Hitachi HM4021
- 4711h Hitachi Accuvue UX4721
- 4810h Hitachi Accuvue GX20
- 4811h Hitachi Accuvue GX21
- 4820h Hitachi HM4820
- 4821h Hitachi HM4821
- 4830h Hitachi Accuvue GX20H
- 4911h Hitachi Accuvue UX4921
- 6421h Hitachi HM6421
- 6811h Hitachi Accuvue UX6821
- 6821h Hitachi HM6821
- SeeAlso: #00136,#00150,#00152
- (Table 00152)
- Values for Hansol Electronics monitor EDID:
- 0579 Hansol Electronics Mazellan14px
- 057A Hansol Electronics Mazellan400A
- 05DD Hansol Electronics Mazellan15ax
- A605 Hansol Electronics Mazellan17px
- SeeAlso: #00136,#00151,#00153
- (Table 00153)
- Values for Hitachi, Ltd. monitor EDID:
- AB6Fh CM-1711M
- ABC2h CM-2112M
- ABC7h CM-2111M
- ABCCh CM-2110M
- ABE0h Hitachi, Ltd CM802
- ABE2h Hitachi, Ltd CM801
- ABE3h Hitachi, Ltd CM800
- ABEAh Hitachi, Ltd CM803
- ABF4h Hitachi, Ltd CM701
- AFC8h Hitachi, Ltd CM500
- AFD2h Hitachi, Ltd CM600
- AFD7h Hitachi, Ltd CM611
- SeeAlso: #00136,#00152,#00154
- (Table 00154)
- Values for Hewlett-Packard monitor EDID:
- 0AF0h HP D2800A Ultra VGA 1600 21"
- 0AF6h HP D2806A Ergo Ultra VGA 15"
- 0AF8h HP D2808 1024 Low Emission
- 0AFFh HP D2815A 1024 Low Emission 14"
- 0F11h HP D3857A Multi Media 15"
- 0F12h HP D3858A Multi Media 14"
- SeeAlso: #00136,#00151,#00155
- (Table 00155)
- Values for IBM monitor EDID:
- 198Eh IBM G41
- 198Fh IBM G50
- 1990h IBM G70
- 1991h IBM G200
- 1999h IBM P50
- 199Ah IBM P70
- 199Bh IBM P200
- 1BB7h IBM 7095
- 1BB9h IBM 7097
- 2112h IBM 2112
- 2113h IBM 2113
- 2114h IBM 2114
- 2115h IBM 2115
- 2117h IBM 2117
- 2215h IBM 2215
- 2238h IBM 2238
- 2248h IBM 2248
- 2264h IBM 2264
- 2535h IBM 9525-0X1
- 26ACh IBM Aptiva 9900
- 27ADh IBM Aptiva 9901
- 6312h IBM 6312
- 6314h IBM 6314
- 6315h IBM 6315
- 6317h IBM 6317
- 6319h IBM 6319
- 6321h IBM 6321
- 6322h IBM 6322
- 6324h IBM 6324
- 6325h IBM 6325
- 6327h IBM 6327
- 8504h IBM 8504
- 8511h IBM 8511
- 8512h IBM 8512
- 8513h IBM 8513
- 8514h IBM 8514
- 8515h IBM 8515
- 8517h IBM 8517
- 8518h IBM 8518
- 9504h IBM 9504
- 9515h IBM 9515
- 9517h IBM 9517
- 9518h IBM 9518
- 9521h IBM 9521
- 9524h IBM 9524
- 9525h IBM 9525
- 9527h IBM 9527
- SeeAlso: #00136,#00154,#00156
- (Table 00156)
- Values for Fujitsu ICL monitor EDID:
- 0100h Fujitsu ICL ErgoPro 211v
- 0200h Fujitsu ICL ErgoPro 171p
- 0400h Fujitsu ICL ErgoPro 171v
- 0700h Fujitsu ICL ErgoPro 151p
- 0800h Fujitsu ICL ErgoPro 151p AutoBrite
- 0A00h Fujitsu ICL ErgoPro 151v
- 0B00h Fujitsu ICL ErgoPro 141v
- 0D00h Fujitsu ICL ErgoPro 141p
- 0F00h Fujitsu ICL ErgoPro 152v
- 1400h Fujitsu ICL ErgoPro 142v
- 1600h Fujitsu ICL ErgoPro e153
- 1900h Fujitsu ICL ErgoPro x173
- 1A00h Fujitsu ICL ErgoPro x173a
- 1C00h Fujitsu ICL ErgoPro x152
- 1D00h Fujitsu ICL ErgoPro e173
- 2200h FUJITSU ErgoPro e154
- 2400h FUJITSU ErgoPro x174
- SeeAlso: #00136,#00155,#00157
- (Table 00157)
- Values for Idek Iiyama North America monitor EDID:
- 1700h Iiyama Vision Master MF-8617
- SeeAlso: #00136,#00156,#00158
- (Table 00158)
- Values for LG Electronics monitor EDID:
- 36B4h LG StudioWorks 44m
- 36B9h LG StudioWorks 44i
- 3AA0h LG 1505s
- 3AA2h LG StudioWorks 56m
- 3AAFh LG StudioWorks 56T 15-inch
- 3AB0h LG StudioWorks 5D
- 3AB6h LG StudioWorks 5D
- 426Ch LG StudioWorks 78i
- 426Dh LG StudioWorks 78T
- 426Eh LG StudioWorks 76i
- 4273h LG StudioWorks 76m
- 4274h LG StudioWorks 78m
- 4277h LG StudioWorks 74m
- 4278h LG StudioWorks 74i
- 427Eh LG StudioWorks 7D
- 427Fh LG StudioWorks 78D
- 4280h LG StudioWorks 78DT
- 4281h LG StudioWorks 7DT
- 4284h LG StudioWorks 76T
- 42CFh LG 1725s
- 4E21h LG StudioWorks 20i
- SeeAlso: #00136,#00157,#00159
- (Table 00159)
- Values for MAG monitor EDID:
- 5620h DX1595
- 5624h DX15T
- 5626h DX1795
- SeeAlso: #00136,#00158,#00160
- (Table 00160)
- Values for Mitsubishi monitor EDID:
- 0040h Mitsubishi Diamond Pro 21TX (THN-9105)
- 2040h Mitsubishi Diamond Scan 20H (FR-8905)
- 2040h Mitsubishi Diamond Pro 20X (FR-8905B)
- 6140h Mitsubishi Diamond Scan 17HX (FFF8705)
- 8040h Mitsubishi Diamond Pro 15H (SD-57xxC)
- 4040h Mitsubishi Diamond Pro 17TX (TFG-8705)
- 408Fh Mitsubishi Diamond Scan 15VX (SD58xx)
- 40C0h Mitsubishi Diamond Pro 87TXM (TFM8705)
- SeeAlso: #00136,#00159,#00161
- (Table 00161)
- Values for Miro monitor EDID:
- 0721h PROOFSCREEN miroC21107
- 6815h miroD1568
- 6817h PROOFSCREEN miroC1768
- 6917h miroD1769
- 8217h PROOFSCREEN miroC1782
- 8520h PROOFSCREEN miroC2085 E
- 8521h PROOFSCREEN miroC2185
- 9321h PROOFSCREEN miroC2193
- SeeAlso: #00136,#00160,#00162
- (Table 00162)
- Values for Nanao monitor EDID:
- 0000h NANAO USA FlexScan T2-20
- 0400h NANAO USA F2-15
- 0401h NANAO USA F2-17
- 0402h NANAO USA F2-17EX
- 0403h NANAO USA F2-21
- 0404h NANAO USA FX2-21
- 0405h NANAO USA FlexScan T2-17TS
- 0406h NANAO FlexScan 6600
- 0502h NANAO 9060S
- 0503h NANAO 9065S
- 0506h NANAO 9070U
- 0507h NANAO 9080i
- 0508h NANAO 9400i
- 0509h NANAO 9500
- 050Ah NANAO FlexScan F340iW
- 050Bh NANAO FlexScan F550i
- 050Ch NANAO FlexScan F550iW
- 050Dh NANAO FlexScan F560iW
- 050Eh NANAO FlexScan F750i
- 050Fh NANAO FlexScan F760iW
- 0510h NANAO FlexScan F780iW
- 0511h NANAO FlexScan T560i
- 0512h NANAO FlexScan T660i
- 0513h NANAO USA FlexScan T2-17
- 0514h NANAO USA FlexScan T2-20
- 0580h NANAO USA FlexScan 6300
- 0800h NANAO FlexScan 33F
- 0802h NANAO FlexScan 88F
- 0805h NANAO FlexScan 54T
- 0882h NANAO FlexScan 52F
- 0900h NANAO FlexScan 6500
- 0902h NANAO 9060S
- 0906h NANAO 9070U
- 0907h NANAO 9080i
- 090Ah NANAO FlexScan F347
- 090Bh NANAO FlexScan F550i
- 090Ch NANAO FlexScan F557
- 090Fh NANAO FlexScan 77F
- 0910h NANAO FlexScan F780iJ
- 0911h NANAO FlexScan T560iJ
- 0912h NANAO FlexScan T660iJ
- 0913h NANAO FlexScan 56T
- 0914h NANAO FlexScan 68T
- 098Ah NANAO FlexScan F347II
- 098Ch NANAO FlexScan 55F
- 098Fh NANAO FlexScan 76F
- 0991h NANAO FlexScan T567
- 0993h NANAO FlexScan 53T
- SeeAlso: #00136,#00161,#00163
- (Table 00163)
- Values for NEC monitor EDID:
- 37FAh NEC MultiSync XV14
- 37FBh NEC MultiSync XV14
- 3A66h NEC MultiSync C400
- 3C00h NEC MultiSync XE15
- 3C0Ah NEC MultiSync XP15
- 3C14h NEC MultiSync XV15
- 3C1Eh NEC MultiSync XE15
- 3D5Eh NEC MultiSync XV15+
- 3D68h NEC MultiSync M500
- 3E4Eh NEC MultiSync C500
- 43A8h NEC MultiSync XE17
- 43B2h NEC MultiSync XE17
- 43BCh NEC MultiSync XV17
- 4416h NEC MultiSync XP17
- 533Eh NEC MultiSync XE21
- 53B6h NEC MultiSync XP21
- SeeAlso: #00136,#00162,#00164
- (Table 00164)
- Values for Nokia monitor EDID:
- 008Dh NOKIA 449M
- 0098h NOKIA 449X
- 00A3h NOKIA 447KC
- 00A9h NOKIA 447XI
- 00ABh NOKIA 447KA
- 00ADh NOKIA 447M
- 00B7h NOKIA 447W
- 00B8h NOKIA 447X
- 00BBh NOKIA 447XAV
- 00BCh NOKIA 447K
- 00D2h NOKIA 445R
- SeeAlso: #00136,#00163,#00165
- (Table 00165)
- Values for OptiQuest monitor EDID:
- 3138h OPTIQUEST VA656
- 3141h OPTIQUEST 14ES
- 3232h OPTIQUEST 1562A-2
- 3233h OPTIQUEST 1769DC
- 3234h OPTIQUEST 1000S-2
- 3332h OPTIQUEST V655
- 3333h OPTIQUEST V775
- 3432h OPTIQUEST V650
- 3832h OPTIQUEST V665
- 4637h OPTIQUEST 1769DC
- SeeAlso: #00136,#00164,#00166
- (Table 00166)
- Values for Princeton Graphics monitor EDID:
- 003Bh Princeton EO15
- 003Dh Princeton EO17
- SeeAlso: #00136,#00165,#00167
- (Table 00167)
- Values for Philips monitor EDID:
- 0200h Philips CM0200 (15C)
- 0500h Philips CM0500 (20C)
- 0700h Philips CM0700 (20T)
- 0800h Philips CM0800 (15B)
- 1200h Philips CM1200 (15A)
- 1800h Philips CM1800 (15A)
- 2000h Philips CM0200 (14B)
- 2600h Philips 17TCM26
- 2800h Philips 17BCM28
- 3800h Philips 17ACM38
- 5600h Philips CM5600 (20B)
- 700Bh Philips CM0700 (21B)
- 8000h Philips CM0800 (14A)
- SeeAlso: #00136,#00166,#00168
- (Table 00168)
- Values for Panasonic monitor EDID:
- 1604h Panasonic TX-D2151W-ES
- 1610h Panasonic TX-D2151NM
- SeeAlso: #00136,#00167,#00169
- (Table 00169)
- Values for Samsung monitor EDID:
- 0000h Samsung SyncMaster 3Ne
- 0100h Samsung SyncMaster 4S
- 1530h Samsung 15GLsi
- 4610h Samsung SyncMaster 21GLs
- 4690h Samsung SyncMaster 20GLsi
- 4D50h Samsung SyncMaster 15GLe
- 4D51h Samsung SyncMaster 15GLi
- 4D52h Samsung SyncMaster 15M
- 4D70h Samsung SyncMaster 17GLi
- 4D71h Samsung SyncMaster 17GLsi
- 4D72h Samsung SyncMaster 6Ne
- 4D73h Samsung 17GLi
- 4D74h Samsung 17GLsi
- 5450h Samsung SyncMaster 15Me
- 6D20h Samsung SyncMaster 15GLe
- SeeAlso: #00136,#00168,#00170
- (Table 00170)
- Values for Samtron monitor EDID:
- 1428h Samtron 428PT/PTL
- 1528h Samtron SC-528TXL
- 1529h Samtron SC-528UXL
- 1530h Samtron SC-528MXLJ
- 4690h Samtron SC-208DXL+
- 4D70h Samtron SC-728FXL
- 4D71h Samtron SC-726GXL
- 5451h Samtron SC-528MDL
- SeeAlso: #00136,#00169,#00171
- (Table 00171)
- Values for Tatung monitor EDID:
- 1F65h Intelliscan TM651x series 15"
- 1F67h Intelliscan TM671x series 17"
- 2F44h Intelliscan TM442x series 14"
- 2F45h Intelliscan TM452x series 15"
- 434Dh Tatung CM-17MC
- 4855h Tatung CM-14UH
- SeeAlso: #00136,#00170,#00172
- (Table 00172)
- Values for Royal Information Company monitor EDID:
- 061Ch TRL/RIC DL-1564
- 0622h TRL/RIC DH-1570
- SeeAlso: #00136,#00171,#00173
- (Table 00173)
- Values for ViewSonic monitor EDID:
- 0C00h ViewSonic 17GS
- 0C0Fh ViewSonic 17PS
- 0C1Fh ViewSonic 17GA
- 1600h ViewSonic 21PS-2
- 2601h ViewSonic 15GS
- 2600h ViewSonic 15GS-2
- 3141h ViewSonic 14ES
- 3142h ViewSonic 14ES
- 3143h ViewSonic 14ES
- 3145h ViewSonic 15GS-3
- 3252h ViewSonic 21PS-2
- 3253h ViewSonic 21PS-2
- 334Bh ViewSonic 17GS-2
- 334Ch ViewSonic 17GS-2
- 3351h ViewSonic PT810
- 344Bh ViewSonic 17PS-2
- 344Ch ViewSonic 17PS-2
- 3451h ViewSonic PT810-2
- 354Dh ViewSonic GT800
- 354Eh ViewSonic GT800
- 3550h ViewSonic GT800
- 3644h ViewSonic 15GA
- 3646h ViewSonic 15GA
- 3648h ViewSonic 15GA
- 364Ah ViewSonic PT770
- 364Bh ViewSonic PT770
- 364Ch ViewSonic PT770
- 3744h ViewSonic 15G-2
- 3746h ViewSonic 15G-2
- 3748h ViewSonic 15G-2
- 374Bh ViewSonic 17GA
- 374Ch ViewSonic 17GA
- 3844h ViewSonic 15ES-2
- 3846h ViewSonic 15ES-2
- 3848h ViewSonic 15ES-2
- 384Ah ViewSonic 17EA
- 384Bh ViewSonic 17EA
- 384Ch ViewSonic 17EA
- 3944h ViewSonic 15GS-2
- 3946h ViewSonic 15GS-2
- 3948h ViewSonic 15GS-2
- 394Ah ViewSonic 17GS-2
- 394Bh ViewSonic 17GS-2
- 394Ch ViewSonic 17GS-2
- 424Ah ViewSonic GT770
- 424Bh ViewSonic GT770
- 424Ch ViewSonic GT770
- 434Ah ViewSonic 17PS-2
- 434Bh ViewSonic 17PS-2
- 434Ch ViewSonic 17PS-2
- 4439h ViewSonic 15GS-2
- 444Ah ViewSonic 17GA-2
- 4637h ViewSonic 1769DC
- SeeAlso: #00136,#00172
- --------V-104F15BL02-------------------------
- INT 10 - VESA VBE/DC (Display Data Channel) - READ VDIF
- AX = 4F15h
- BL = 02h
- ???
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- ???
- 01h failed
- SeeAlso: AX=4F15h/BL=00h,AX=4F15h/BL=01h
- --------V-104F16-----------------------------
- INT 10 - VESA VBE/GC (Graphics System Configuration) - API
- AX = 4F16h
- BL = function
- 00h installation check / get capabilities
- other registers vary by function
- Return: varies by function
- --------V-104F17-----------------------------
- INT 10 - VESA VBE/AF (Accelerator Functions) - API
- AX = 4F17h
- BL = function
- 00h installation check / get capabilities
- other registers vary by function
- Return: AL = 4Fh if function supported
- AH = status
- 00h successful
- 01h failed
- 02h hardware does not support function
- 03h function not available in current video mode
- else reserved for future error codes
- other vary by function
- Notes: the accelerator function code should be given a 32-bit protected
- mode stack which has at least 1024 bytes available for use by the
- VBE/AF code
- when called, the I/O permission bitmap must allow access to any
- ports which VBE/AF may require for operation
- SeeAlso: AX=4F0Bh
- --------V-104F4D-----------------------------
- INT 10 - VESA - VIDEO CURSOR INTERFACE REQUEST
- AX = 4F4Dh
- BX = number of bytes available for VCI use
- DS:0000h -> buffer for VCI
- ES:DI -> VCI driver callback function
- Return: AL = 4Fh if supported
- AH = status
- 00h successful
- BX = number of bytes used by VCI
- ES:DI -> VCI request handler
- 01h failed
- Desc: allow the VESA BIOS Extensions to cooperate with a pointing-device
- (typically mouse) driver
- SeeAlso: AX=4F12h
- --------V-104F70-----------------------------
- INT 10 - Avance Logic - GET ADAPTER INFORMATION
- AX = 4F70h
- Return: AX = 004Fh if successful
- BL = board information (see #00174)
- BH = board type???
- 00h on ALG2101
- FFh otherwise
- SeeAlso: AX=4F00h
- Bitfields for Avance Logic board information:
- Bit(s) Description (Table 00174)
- 0-1 video RAM size
- 00 256K
- 01 512K
- 10 1M
- 11 2M
- 2 ???
- 3 slot size???
- =0 8-bit slot
- =1 16-bit slot
- 4 unused
- 5 set on ALG2228/AL2301
- 6-7 unused
- --------V-104FDD-----------------------------
- INT 10 - ATI M64VBE.COM - GET RESIDENT SEGMENT
- AX = 4FDDh
- Return: AX = CS of resident code
- Program: M64VBE is a VESA VBE 2.0 driver TSR for ATI's Mach64 video chip
- SeeAlso: AX=4FFFh/BX=364Dh"M64VBE",INT 60"M64VBE"
- --------V-104FFF-----------------------------
- INT 10 - VESA SuperVGA BIOS - Everex - TURN VESA ON/OFF
- AX = 4FFFh
- DL = new state (00h off, 01h on)
- Return: AX = 0000h if successful
- --------V-104FFF-----------------------------
- INT 10 - Diamond Stealth 24 - SET/RESET DUAL DISPLAY MODE
- AX = 4FFFh
- BX = dual display mode
- 00h reset
- 01h set dual display, 32KB VGA test
- 02h set dual display, 64KB VGA test
- Return: AX = 4F00h if successful
- BX = number of scanlines off screen for test mode
- --------V-104FFFBX364D-----------------------
- INT 10 - ATI M64VBE.COM - UNINSTALL
- AX = 4FFFh
- BX = 364Dh ('6M')
- CX = 5634h ('V4')
- Return: AX,DX,DS,ES destroyed
- Program: M64VBE is a VESA VBE 2.0 driver TSR for ATI's Mach64 video chip
- SeeAlso: AX=4FDDh"M64VBE",INT 60"M64VBE"
- --------U-1050-------------------------------
- INT 10 - SCROLOCK.COM - INSTALLATION CHECK
- AH = 50h
- Return: BX = 1954h if installed
- AL = 00h if inactive, nonzero if active
- Program: SCROLOCK is a utility supplied with System Enhancement Associates'
- ARC archiver
- SeeAlso: AH=51h
- --------J-105000-----------------------------
- INT 10 - VIDEO - AX PC - SET SCREEN COUNTRY CODE
- AX = 5000h
- BX = country code
- 0001h USA (English), 0051h Japan
- Return: AL = status
- 00h successful
- 01h bad country code
- 02h other error
- SeeAlso: AX=5001h,INT 16/AX=5000h
- --------J-105001-----------------------------
- INT 10 - VIDEO - AX PC - GET SCREEN COUNTRY CODE
- AX = 5001h
- Return: AL = status
- 00h successful
- BX = country code
- 02h error
- SeeAlso: AH=00h,AX=5000h,INT 16/AX=5001h,INT 21/AH=38h
- --------V-105049-----------------------------
- INT 10 - VIDEO - SCREENR v1.55+ - API
- AX = 5049h ('PI')
- BX = function
- 0000h installation check
- 0001h lock mode
- 0002h unlock mode
- 0003h lock palette
- 0004h unlock palette
- Return: AX = 0000h if installed
- BX = TSR version (BH=major,BL=minor)
- CL = mode locking status
- 00h mode not locked
- 01h mode locked: INT 10/AH=00h disabled
- CH = palette locking status
- 00h palette not locked
- 01h palette locked, the following functions are disabled:
- AX=1000h, AX=1001h, AX=1002h, AX=1010h, AX=1012h
- Program: SCREENR is a TSR supplied with Patrick Ibbetson's SCREEN display
- utility.
- Index: installation check;SCREENR
- --------U-1051-------------------------------
- INT 10 - SCROLOCK.COM - ENABLE/DISABLE
- AH = 51h
- AL = state
- 00h disable
- nonzero enable
- Return: nothing
- Program: SCROLOCK is a utility supplied with System Enhancement Associates'
- ARC file archiver
- SeeAlso: AH=50h"SCROLOCK"
- --------J-105100-----------------------------
- INT 10 - VIDEO - AX PC - REGISTER EXTERNAL CHARACTER
- AX = 5100h
- BH = character width in bits (10h)
- BL = character height (10h)
- DX = character code (DH = F0h-F3h, DL=40h-7Eh,80h-FCh)
- ES:BP -> character bitmap
- Return: AL = status (00h successful, 01h failed)
- SeeAlso: AX=5101h,INT 1F"SYSTEM DATA"
- --------J-105101-----------------------------
- INT 10 - VIDEO - AX PC - READ CHARACTER
- AX = 5101h
- BH = character width in bits
- BL = character height
- DX = character code (DH = 00h if 8-bit character)
- ES:BP -> buffer for character bitmap
- Return: AL = status (00h successful, 01h failed)
- SeeAlso: AH=09h,AX=5100h
- --------J-105200-----------------------------
- INT 10 - VIDEO - AX PC - SET VIRTUAL TEXT RAM BUFFER
- AX = 5200h
- BX = segment of buffer
- Return: nothing
- SeeAlso: AX=5201h
- --------J-105201-----------------------------
- INT 10 - VIDEO - AX PC - GET VIRTUAL TEXT RAM BUFFER
- AX = 5201h
- Return: BX = segment of buffer or 0000h if failed
- SeeAlso: AX=8300h,AH=FEh
- ----------1053-------------------------------
- INT 10 - Show Partner F/X v3.6 - START PRESENTATION
- AH = 53h
- DS:DX -> ASCIZ name of presentation file (no path, extension forced to
- .PR2)
- Return: ???
- SeeAlso: AH=55h
- ----------1055-------------------------------
- INT 10 - Show Partner F/X v3.6 - UNINSTALL
- AH = 55h
- Return: FXSHOW.EXE removed from memory
- SeeAlso: AH=53h
- --------V-105555-----------------------------
- INT 10 - VIDEO - ATI EGA/VGA Wonder Super Switch - INSTALLATION CHECK
- AX = 5555h
- Return: AX = AAAAh if installed
- BX:CX -> ??? routine in SMS.COM resident portion
- -> data area (see #00175) in VCONFIG
- Program: Super Switch (SMS.COM) is a video mode switch program supplied with
- ATI EGA Wonder. It also maps video mode 08h to 27h or 23h.
- SeeAlso: INT 10/AH=00h,INT 14/AX=AA01h,INT 2F/AX=6400h
- Index: screen saver;ATI Wonder SMS.COM
- Format of ATI Super Switch data area:
- Offset Size Description (Table 00175)
- 00h DWORD original INT 09 vector
- 04h DWORD original INT 10 vector
- 08h DWORD original INT 1C vector
- 0Ch WORD screen saver state, 0=off, 1=on
- 0Eh WORD blanking interval in clock ticks
- --------V-105F00-----------------------------
- INT 10 - Chips & Technologies Extended BIOS - RETURN CHIP INFORMATION
- AX = 5F00h
- Return: AL = 5Fh function supported
- BL = chip type (see #00176)
- BH = video memory size (see #00177)
- CX = miscellaneous information (see #00178)
- SeeAlso: AX=5F01h
- Bitfields for Chips&Technologies chip type:
- Bit(s) Description (Table 00176)
- 7-4 chip type
- 0000: 82c451
- 0001: 82c452 / 82c452A
- 0010: 82c455
- 0011: 82c453
- 0100: 82c450
- 0101: 82c456
- 0110: 82c457
- 0111: F65520
- 1000: F65530 / F65525
- 1001: F66510
- 1010: ???
- 1011: F64300 "Wingine DGX"
- 1100: F65535/F65545 ???
- 1101: F65540
- 1110: ???
- 1111: ???
- 3-0 revision number
- SeeAlso: #00177
- (Table 00177)
- Values for Chips&Technologies video memory size:
- 00h 256KB
- 01h 512KB
- 02h 1MB
- 03h 2MB
- SeeAlso: #00176
- Bitfields for Chips&Technologies miscellaneous information:
- Bit(s) Description (Table 00178)
- 0 DAC size (0=6-bit, 1=8-bit)
- 1 system type (0=PC/AT, 1=PS/2)
- 2 extended text modes supported by BIOS
- 3 reserved
- 4 extended graphics modes supported by BIOS
- 5 reserved
- 6 BIOS supports graphics cursor
- 7 BIOS supports anti-aliased font
- 8 BIOS supports pre-programmed emulation
- 9 BIOS supports auto emulation
- 10 BIOS supports variable mode set at cold boot
- 11 BIOS supports variable mode set on warm boot
- 12 BIOS supports emulation mode set at cold boot
- 13 BIOS supports emulation mode set on warm boot
- 14-15 reserved
- --------V-105F00-----------------------------
- INT 10 - VIDEO - Realtek RTVGA - RETURN CHIP VERSION
- AX = 5F00h
- Return: AH = 00h, if successful
- AL = chip version (the same value that VTEST.EXE reads)
- 00h RTG3103???
- 01h RTG31030/RTG3105
- 02h RTG3106???
- 3Fh non-Realtek chip
- BUG: in v3.C10, AX=5F00h on return due to improper stack restoration code
- SeeAlso: AX=5F01h"RTVGA"
- --------V-105F01-----------------------------
- INT 10 - Chips & Technologies Extended BIOS - SET PREPROGRAMMED EMULATION
- AX = 5F01h
- BL = emulation type (see #00179)
- Return: AL = 5Fh if function supported
- AH = status
- 00h unsuccessful
- 01h successful
- SeeAlso: AX=5F00h,AX=5F02h,AH=FFh"Oak"
- (Table 00179)
- Values for Chips&Technologies emulation type:
- 00h,01h reserved
- 02h CGA
- 03h MDA
- 04h Hercules
- 05h EGA
- 06h VGA (disable emulation)
- --------V-105F01-----------------------------
- INT 10 - VIDEO - Realtek RTVGA - WRITE RTVGA BIOS STRING TO DESTINATION
- AX = 5F01h
- ES:DI -> zero-filled buffer for BIOS ID string
- Return: AH = 00h if successful
- ES:DI -> ASCII signature "REALTEK VGA BIOS Version 3C.10"
- BUG: in v3.C10, AX=5F01h on return due to improper stack restoration code
- SeeAlso: AX=5F00h"RTVGA",AX=5F02h"RTVGA"
- --------V-105F02-----------------------------
- INT 10 - Chips & Technologies Extended BIOS - AUTO EMULATION CONTROL
- AX = 5F02h
- BL = new state of autmatic emulation (00h enabled, 01h disabled)
- Return: AL = 5Fh if function supported
- AH = status
- 00h unsuccessful
- 01h successful
- SeeAlso: AX=5F01h,AX=5F03h
- --------V-105F02-----------------------------
- INT 10 - Chips & Technologies '64300' BIOS - SET CLOCK
- AX = 5F02h
- BH = what to set
- 02h dot clock
- BL = speed in MHz (12-99)
- 03h memory clock
- BL = speed in MHz (12-99)
- FFh default dot and memory clocks
- Return: AL = 5Fh if function supported
- AH = status
- 00h unsuccessful
- 01h successful
- SeeAlso: AX=5F00h"Chips",AX=5F03h"64300",AX=5F02h"65530"
- --------V-105F02-----------------------------
- INT 10 - Chips & Technologies '65530' BIOS - SET CLOCK
- AX = 5F02h
- BH = what to set
- 02h dot clock
- BL = new clock speed (see #00180)
- 03h memory clock
- BL = new clock speed (see #00180)
- 04h set power-down register
- BL = new value for power-down register (bits 3-0 only)
- 06h (404 clock chip) set control register
- BL = new vlaue for control register (bits 5-0 only)
- 06h (404A/B/B-ES clock chips) set control register PWRDN1
- BL = new value for control register
- 07h (404A/B/B-ES clock chips) set control register PWRDN1
- BL = new value for control register
- FFh default dot and memory clocks
- Return: AL = 5Fh if function supported
- AH = status
- 00h unsuccessful
- 01h successful
- SeeAlso: AX=5F01h,AX=5F02h"64300",AX=5FA0h,#00184
- (Table 00180)
- Values for C&T '65530' BIOS clock speed:
- 00h 12 MHz
- 01h 14 MHz
- 02h 16 MHz
- 03h 18 MHz
- 04h 20 MHz
- 05h 25 MHz
- 06h 28 MHz
- 07h 32 MHz
- 08h 36 MHz
- 09h 40 MHz
- 0Ah 45 MHz
- 0Bh 50 MHz
- 0Ch 56 MHz
- 0Dh 60 MHz
- 0Eh 65 MHz
- 0Fh 66 MHz
- 15h 34 MHz
- --------V-105F02-----------------------------
- INT 10 - VIDEO - Realtek RTVGA - RETURN RTVGA ON-BOARD MEMORY SIZE
- AX = 5F02h
- Return: AH = 00h, if successful
- AL = on-board memory size
- (00h = 256K, 01h = 512K, 02h = 768K, 03h = 1024K)
- BUG: in v3.C10, AX=5F02h on return due to improper stack restoration code
- SeeAlso: AX=5F01h"RTVGA",AX=5F03h"RTVGA"
- --------V-105F03-----------------------------
- INT 10 - VIDEO - Realtek RTVGA - SET ???
- AX = 5F03h
- BL = 0-3 (???)
- Return: AH = 00h if successful
- BUG: in v3.C10, AX=5F03h on return due to improper stack restoration code
- SeeAlso: AX=5F02h"RTVGA"
- --------V-105F03BL00-------------------------
- INT 10 - Chips & Technologies Extended BIOS - SET POWER-ON DISPLAY MODE
- AX = 5F03h
- BL = 00h
- CL = display mode
- CH = mode (see #00181)
- Return: AL = 5Fh if function supported
- AH = status
- 00h unsuccessful
- 01h successful
- SeeAlso: AX=5F02h,AX=5F03h/BL=01h"Chips",AX=5F90h
- Bitfields for Chips&Technologies display mode:
- Bit(s) Description (Table 00181)
- 1-0 scanlines (00 = 200, 01 = 350, 10 = 400)
- 7 persistence (0 reset on next boot, 1 until changed)
- --------V-105F03BH00-------------------------
- INT 10 - Chips & Technologies '64300' BIOS - GET CLOCK SPEED
- AX = 5F03h
- BH = 00h (get default memory clock)
- Return: AL = 5Fh if function supported
- AH = status
- 00h unsuccessful
- 01h successful
- BL = clock speed in MHz
- SeeAlso: AX=5F02h"64300",AX=5F04h"64300"
- --------V-105F03BL01-------------------------
- INT 10 - Chips & Technologies Extended BIOS - SET POWER-ON EMULATION MODE
- AX = 5F03h
- BL = 01h
- CL = emulation mode (see #00181)
- CH = permanence
- bit 7 persistence (0 reset on next boot, 1 until changed)
- Return: AL = 5Fh if function supported
- AH = status
- 00h unsuccessful
- 01h successful
- SeeAlso: AX=5F02h,AX=5F03h/BL=00h"Chips",AX=5F90h
- --------V-105F04-----------------------------
- INT 10 - Chips & Technologies '64300' BIOS - GET REFRESH RATE
- AX = 5F04h
- BL = video mode number
- Return: AL = 5Fh if function supported
- AH = status
- 00h unsuccessful
- 01h successful
- BH = available refresh rates (see #00182)
- BL = currently-set refresh rate (see #00182)
- SeeAlso: AX=5F03h"64300",AX=5F05h"64300"
- Bitfields for C&T 64300 refresh rates:
- Bit(s) Description (Table 00182)
- 5 75 Hz
- 4 72 Hz
- 3 70 Hz
- 2 60 Hz
- 1 56 Hz
- 0 interlaced
- --------V-105F05-----------------------------
- INT 10 - Chips & Technologies '64300' BIOS - SET REFRESH RATE
- AX = 5F05h
- BL = video mode number
- BH = refresh rate to set (see #00182)
- bit 7: =0 program new clock and CRT parametes
- =1 keep current parameters
- Return: AL = 5Fh if function supported
- AH = status
- 00h unsuccessful
- 01h successful
- SeeAlso: AX=5F04h"64300"
- --------V-105F06-----------------------------
- INT 10 - Chips & Technologies '64300' BIOS - GET XRAM INFORMATION
- AX = 5F06h
- Return: AL = 5Fh if function supported
- AH = status
- 00h unsuccessful
- 01h successful
- BL = XRAM presence (00h no XRAM, 01h present)
- SeeAlso: AX=5F05h,AX=5F08h
- --------V-105F08-----------------------------
- INT 10 - Chips & Technologies '64300' BIOS - SET LINEAR MEMORY START ADDRESS
- AX = 5F08h
- BX = desired start address in megabytes
- Return: AL = 5Fh if function supported
- AH = status
- 00h unsuccessful
- 01h successful
- SeeAlso: AX=5F06h
- --------V-105F10-----------------------------
- INT 10 - Chips & Technologies '64300'/'65530' BIOS - GET LINEAR MEMORY INFO
- AX = 5F10h
- Return: AL = 5Fh if function supported
- AH = status
- 00h unsuccessful
- 01h successful
- BX:CX = linear memory base address
- DX = virtual screen width offset (bytes)
- SI;DI = linear memory size
- SeeAlso: AX=5F08h,AX=5FA0h
- --------V-105F50-----------------------------
- INT 10 - Chips & Technologies Extended BIOS - GET LAPTOP DISPLAY STATUS
- AX = 5F50h
- Return: DL = display status (see #00183)
- Note: this call can be used on Toshiba laptops since ~1995 instead of
- INT 42/AX=7503h which is no longer supported with the F655xx chips
- SeeAlso: INT 42/AX=7503h
- Bitfields for display status:
- Bit(s) Description (Table 00183)
- 7-4 always 0 ???
- 3 1: both displays active (bit 1 also set)
- 2 1: normal (monochrome display only), 0: inverse or color
- 1 1: internal display active, 0: external only
- 0 always set ???
- --------V-105F50-----------------------------
- INT 10 - Chips & Technologies '65530' BIOS - GET 655xx INFORMATION
- AX = 5F50h
- Return: AL = 5Fh if function supported
- AH = status
- 00h unsuccessful
- 01h successful
- BX = width of flat panel in pixels
- CX = height of flat panel in pixels
- DX = F65520/525/530 status (see #00184)
- SeeAlso: AX=5F51h,INT 15/AX=5F31h
- Bitfields for C&T F65520/525/530 status:
- Bit(s) Description (Table 00184)
- 15-0 reserved
- 6-5 type of clock chip
- 00 = 404
- 01 = 404A
- 10 = 404B ES
- 11 = 404B
- 4 accelerator enabled
- 3 both displays active
- 2 video polarity (1 = inverted)
- 1 output device
- 0 CRT
- 1 flat panel (LCD)
- 0 reserved
- --------V-105F51-----------------------------
- INT 10 - Chips & Technologies Extended BIOS - SWITCH DISPLAY DEVICE
- AX = 5F51h
- BL = new active display
- 00h CRT
- 01h flat panel (LCD)
- 02h both simultaneously
- BH = 01h to allow reprogramming the DAC
- Return: AL = 5Fh if function supported
- AH = status
- 00h unsuccessful
- 01h successful
- SeeAlso: AX=5F50h,AX=5F53h
- --------V-105F53-----------------------------
- INT 10 - Chips & Technologies Extended BIOS - EN/DISABLE ACCELERATOR SUPPORT
- AX = 5F53h
- BL = new support state
- 00h disable buffer/accelerator
- 01h enable buffer/acelerator
- Return: AL = 5Fh if function supported
- AH = status
- 00h unsuccessful
- 01h successful
- SeeAlso: AX=5F50h,AX=5F51h,AX=5F54h
- --------V-105F54-----------------------------
- INT 10 - Chips & Technologies Extended BIOS - TURN FLAT PANEL ON/OFF
- AX = 5F54h
- BL = new state
- 00h on
- 01h off
- Return: AL = 5Fh if function supported
- AH = status
- 00h unsuccessful
- 01h successful
- SeeAlso: AX=5F50h,AX=5F51h,AX=5F53h,AX=5F5Ah
- --------V-105F5A-----------------------------
- INT 10 - Chips & Technologies Extended BIOS - SET FLAT-PANEL VIDEO POLARITY
- AX = 5F5Ah
- BL = new video polarity
- 00h normal
- 01h inverted
- Return: AL = 5Fh if function supported
- AH = status
- 00h unsuccessful
- 01h successful
- SeeAlso: AX=5F50h,AX=5F54h
- --------V-105F5C-----------------------------
- INT 10 - Chips & Technologies Extended BIOS - SET VERTICAL COMPENSATION
- AX = 5F5Ch
- BL = type of vertical compensation to use
- 00h no compensation
- 01h automatic centering
- 02h set centering register
- DX = centering value (bits 9-0 only)
- 03h non-automatic centering
- 04h set vertical line insertion register
- DL = vertical line insertion (bits 3-0 only)
- 05h set alternate maximum scanline register
- DL = alternate maximum scanline (bits 4-0 only)
- 06h enable text stretching, type 0
- 07h enable text stretching, type 1
- 08h enable text stretching, type 2
- 09h enable text stretching, type 3
- 0Ah disable text stretching
- 0Bh set vertical line replication register
- DL = vertical line replication (bits 3-0 only)
- 0Ch enable graphics stretching, type 0
- 0Dh enable graphics stretching, type 1
- 0Eh disable vertical graphics stretching
- 0Fh disable all horizontal and vertical compensation
- 10h enable optimal compensation
- 11h disable optimal compensation
- Return: AL = 5Fh if function supported
- AH = status
- 00h unsuccessful
- 01h successful
- SeeAlso: AX=5F50h,AX=5F5Eh,AX=5F5Fh
- --------V-105F5E-----------------------------
- INT 10 - Chips & Technologies Extended BIOS - EN/DISABLE TALL FONT LOADING
- AX = 5F5Eh
- BL = new state of tall-font loading
- 00h enable loading of 8x19/30/32 fonts
- 01h disable loading of 8x19/30/32 fonts
- Return: AL = 5Fh if function supported
- AH = status
- 00h unsuccessful
- 01h successful
- Note: when tall fonts are enabled, the fonts are stretched by duplicating
- scan lines as appropriate to convert an 8x16 font to the proper
- height (scan lines 1/9/12 [8x19] or 2-15 [8x30] or all [8x32])
- SeeAlso: AX=5F5Ch,AX=5F5Fh
- --------V-105F5F-----------------------------
- INT 10 - Chips & Technologies Extended BIOS - HORIZONTAL COMPENSATION
- AX = 5F5Fh
- BL = horizontal compensation type
- 00h none
- 01h automatic centering
- 02h set centering register
- DL = centering value
- 03h non-automatic centering
- 04h enable text compression (force 8xN fonts)
- 05h disable text compression (allow 9xN fonts)
- 06h enable auto doubling
- 07h disable auto doubling
- 0Fh disable all horizontal and vertical compensation
- Return: AL = 5Fh if function supported
- AH = status
- 00h unsuccessful
- 01h successful
- SeeAlso: AX=5F50h,AX=5FA0h
- --------V-105F90-----------------------------
- INT 10 - Chips & Technologies Extended BIOS - GET SUPERVGA STATE BUFFER SIZE
- AX = 5F90h
- CX = state mask (see #00185)
- Return: AL = 5Fh if function supported
- BX = number of 64-byte blocks required
- SeeAlso: AH=1Ch,AX=5F03h,AX=5F91h,AX=5F92h,AX=5FA0h
- Bitfields for Chips&Technologies state mask:
- Bit(s) Description (Table 00185)
- 0 video hardware
- 1 BIOS data state
- 2 DAC state
- 15 type (0 all state info, 1 SuperVGA state only)
- --------V-105F91-----------------------------
- INT 10 - Chips & Technologies Extended BIOS - SAVE SUPERVGA STATE
- AX = 5F91h
- CX = state mask (see #00185)
- ES:BX -> save buffer
- Return: AL = 5Fh if function supported
- buffer at ES:BX filled
- SeeAlso: AH=1Ch,AX=5F03h,AX=5F90h,AX=5F92h,AX=5FA1h
- --------V-105F92-----------------------------
- INT 10 - Chips & Technologies Extended BIOS - RESTORE SUPERVGA STATE
- AX = 5F92h
- CX = state mask (see #00185)
- ES:BX -> previously-filled save buffer
- Return: AL = 5Fh if function supported
- SeeAlso: AH=1Ch,AX=5F03h,AX=5F90h,AX=5F92h,AX=5FA2h
- --------V-105FA0-----------------------------
- INT 10 - Chips & Technologies Wingine DGX - GET EXTENDED BIOS SAVE BUFFER SIZE
- AX = 5FA0h
- CX = state(s) to be saved (see #00186)
- Return: AL = 5Fh if function supported
- AH = status
- 00h unsuccessful
- 01h successful
- BX = number of 64-byte blocks required for state
- SeeAlso: AH=1Ch,AX=5FA1h,AX=5FA2h,AX=5F90h,AX=4F04h
- Bitfields for C&T BIOS save/restore state type:
- Bit(s) Description (Table 00186)
- 0 video hardware
- 1 BIOS data
- 2 DAC and color registers
- 14 (65530 BIOS with AL=A1h only) clear emulation state
- 15 extended registers
- SeeAlso: #00048,#00085
- --------V-105FA1-----------------------------
- INT 10 - Chips & Technologies Wingine DGX - SAVE VIDEO STATE
- AX = 5FA1h
- CX = state(s) to be saved (see #00186)
- ES:BX -> buffer for state information
- Return: AL = 5Fh if function supported
- AH = status
- 00h unsuccessful
- 01h successful
- ES:BX buffer filled
- SeeAlso: AH=1Ch,AX=5FA0h,AX=5FA2h,AX=5F91h
- --------V-105FA2-----------------------------
- INT 10 - Chips & Technologies Wingine DGX - RESTORE VIDEO STATE
- AX = 5FA2h
- CX = state(s) to be restored (see #00186)
- ES:BX -> buffer containing previously-saved state information
- Return: AL = 5Fh if function supported
- AH = status
- 00h unsuccessful
- 01h successful
- SeeAlso: AH=1Ch,AX=5FA0h,AX=5FA1h,AX=5F92h
- --------V-1060------------------------------------
- INT 10 - HUNTER 16 - SET GRAPHICS FONT
- AH = 60h
- AL = new font
- bit 7 output characters in reverse video
- bits 0-6 font number (see #00200 at AH=77h)
- Return: BH = cell width
- BL = cell height
- Desc: select the font to use for output in mode 6; this can be used to mix
- fonts on the screen
- Note: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family
- members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
- SeeAlso: AH=04h"HUNTER",AH=73h"HUNTER",AH=77h"HUNTER"
- --------V-1061------------------------------------
- INT 10 - HUNTER 16 - MOVE CURSOR TO GRAPHICS CO-ORDINATES
- AH = 61h
- CX = column
- DX = row
- Return: nothing
- Note: this function is only valid in graphics modes
- SeeAlso: AH=62h
- --------V-1062------------------------------------
- INT 10 - HUNTER 16 - GET CURSOR POSITION IN GRAPHICS CO-ORDINATES
- AH = 62h
- Return: CX = column
- DX = row
- Note: this function is only valid in graphics modes
- SeeAlso: AH=61h
- --------V-1063------------------------------------
- INT 10 - HUNTER 16 - SET CONTRAST
- AH = 63h
- AL = contrast (0..127)
- Return: nothing
- Desc: set the LCD screen contrast to improve visibility
- SeeAlso: AH=64h,AH=75h
- --------V-1064------------------------------------
- INT 10 - HUNTER 16 - SET BACKLIGHT LEVEL
- AH = 64h
- AL = level (0..15)
- Return: nothing
- Desc: set the LCD backlight level to improve visibility in bad lighting
- SeeAlso: AH=63h,AH=65h,AH=74h,AH=78h"HUNTER",INT 15/AH=74h
- --------V-106500----------------------------------
- INT 10 - HUNTER 16 - GET BACKLIGHT TIMEOUT
- AX = 6500h
- Return: BX = timeout in seconds (0-300)
- Desc: returns the time after which the backlight will turn off
- SeeAlso: AH=63h,AH=64h,AX=6501h,INT 15/AH=74h
- --------V-106501----------------------------------
- INT 10 - HUNTER 16 - SET BACKLIGHT TIMEOUT
- AX = 6501h
- BX = timeout in seconds (0-300)
- Return: nothing
- Desc: set the idle time after which the backlight will turn off
- SeeAlso: AH=64h,AX=6500h
- --------V-1066------------------------------------
- INT 10 - HUNTER 16 - SPLIT DISPLAY
- AH = 66h
- AL = control bits (see #00187)
- BH = top row of lower section of LCD (0..7)
- BL = top row of lower section of the virtual screen (0..24)
- Return: nothing
- Desc: split the LCD screen horizontally into two parts; each part may be
- individually scrollable or fixed.
- Note: the Hunter 16 has a 240x64 LCD display which serves as a window into
- a 640x200 virtual screen
- Bitfields for HUNTER 16 control bits:
- Bit(s) Description (Table 00187)
- 0-1 01: no split, 10: allow split
- 2 allow scrolling the upper part
- 3 allow scrolling the lower part
- --------V-106A00BX0000-----------------------
- INT 10 - Direct Graphics Interface Standard (DGIS) - INQUIRE AVAILABLE DEVICES
- AX = 6A00h
- BX = 0000h
- CX = 0000h
- DX = buffer length (may be 0)
- ES:DI -> buffer
- Return: BX = number of bytes stored in buffer
- CX = bytes required for all descriptions (0 if no DGIS)
- Note: buffer contains descriptions and addresses of DGIS-compatible
- display(s) and printer(s)
- SeeAlso: AX=6A02h
- --------V-106A01CX0000-----------------------
- INT 10 - Direct Graphics Interface Standard (DGIS) - REDIRECT CHARACTER OUTPUT
- AX = 6A01h
- CX = 0000h
- ES:DI = address of device to send INT 10 output to
- Return: CX = 0000h output could not be redirected
- else INT 10h output now routed to requested display
- SeeAlso: AX=6A02h
- --------V-106A02-----------------------------
- INT 10 - DGIS - INQUIRE INT 10 OUTPUT DEVICE
- AX = 6A02h
- ES:DI = 0000h:0000h
- Return: ES:DI = 0000h:0000h if current display is non-DGIS
- else address of the current DGIS INT 10 display
- SeeAlso: AX=6A00h,AX=6A01h
- --------V-106D74-----------------------------
- INT 10 - MTRFONTS - INSTALLATION CHECK
- AX = 6D74h ('mt')
- DS:0104h = signature "MtRfOnTs"
- Return: AX = 4D54h ('MT') if installed
- ES = PSP segment of resident code
- Program: MTRFONTS is a shareware TSR (part of the MTR package) by Mechon Mamre
- which provides Hebrew screen fonts
- SeeAlso: INT 16/AX=6D74h"MTRTSR"
- --------V-106E00-----------------------------
- INT 10 - Paradise VGA internal - GET ???
- AX = 6E00h
- Return: BX = 5744h ('WD') if supported
- DH:AH:AL = last three ASCII digits of ROM serial number
- CL = ???
- CH = ???
- SeeAlso: AX=6E04h,AX=6E05h
- --------V-106E04-----------------------------
- INT 10 - Paradise VGA internal - GET SCREEN SIZE AND ???
- AX = 6E04h
- Return: BX = screen width (columns)
- CX = screen height (lines)
- AH = ??? (05h or FFh)
- AL = ??? (04h or video mode)
- SeeAlso: AX=6E00h,AX=6E05h
- --------V-106E05-----------------------------
- INT 10 - Paradise VGA internal - SET MODE
- AX = 6E05h
- BL = mode
- Return: nothing
- Note: like AH=00h, AL=BL.
- SeeAlso: AH=00h,AX=6E00h,AX=6E04h,AX=6F05h
- --------V-106F00-----------------------------
- INT 10 - HP Vectra EX-BIOS - INSTALLATION CHECK
- AX = 6F00h
- BX <> 4850h (usually set to 0000h for simplicity)
- Return: BX = 4850h ('HP') indicates HP Extended BIOS video functions present
- AX destroyed
- SeeAlso: AX=6F00h"Video7",AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,AX=6F05h
- SeeAlso: INT 14/AX=6F00h,INT 16/AX=6F00h,INT 17/AX=6F00h,INT 33/AX=6F00h
- --------V-106F00BX0000-----------------------
- INT 10 - VIDEO - Video7 VGA,VEGA VGA - INSTALLATION CHECK
- AX = 6F00h
- BX = 0000h
- Return: BX = 5637h ('V7') indicates Video7 VGA/VEGA VGA extensions are present
- SeeAlso: AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,AX=6F05h
- --------V-106F01-----------------------------
- INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP EX-BIOS - GET MONITOR INFO
- AX = 6F01h
- Return: AL = monitor type code (HP,VEGA VGA only) (see #00188)
- AH = status register information (see #00189)
- CL = current value of Extended Control register (HP Ext BIOS, and only
- if AL=41h) (see #00190)
- Notes: bits 0-3 are the same as the EGA/VGA status register bits 0-3
- supported by original HP Vectra AT and by ES/QS/RS series Vectras
- (Table 00188)
- Values for monitor type code (HP Extended BIOS):
- 00h non-HP card with ROM and possibly its own INT 10h driver
- 41h MultiMode video display adapter
- 42h-44h reserved
- 45h industry standard monochrome display adapter
- 46h industry standard color display adapter
- 51h reserved
- Bitfields for status register information:
- Bit(s) Description (Table 00189)
- 0 display enable
- 0 = display enabled
- 1 = vertical or horizontal retrace in progress
- 1 light pen flip flop set
- 2 light pen switch activated
- 3 vertical sync
- 4 monitor resolution
- 0 = high resolution (>200 lines)
- 1 = low resolution (<=200 lines)
- 5 display type (0 = color, 1 = monochrome)
- 6,7 diagnostic bits
- Note: bits 0-3 are the same as the EGA/VGA status register bits 0-3
- --------V-106F02-----------------------------
- INT 10 - HP Vectra EX-BIOS - SET MONITOR INFO
- AX = 6F02h
- BL = new value for extended control register (see #00190)
- Return: AX,BL destroyed
- Notes: this function is only valid when an HP MultiMode Video Display Adapter
- is installed
- the Extended Control register is at I/O address 3DDh
- SeeAlso: AX=6F01h,AX=6F03h
- Bitfields for HP Vectra extended control register:
- Bit(s) Description (Table 00190)
- 0 screen resolution (0 = 200 lines, 1 = 400 lines)
- 1 underline enable (if set, 'blue' of fg color = underline)
- 2 font (0 = Standard-8, 1 = HP-Roman-8)
- 3 memory disabled for CPU access
- 4 allow access to full 32K memory instead of wrapping at 16K
- 5 select second 16K page instead of first
- 6,7 unused
- --------V-106F03-----------------------------
- INT 10 - HP Vectra EX-BIOS - MODIFY MONITOR INFO
- AX = 6F03h
- BH = exclude mask (set bits are not modified)
- BL = new values for bits indicated by BH (see #00190)
- Return: AX destroyed
- Notes: this function is only valid when an HP MultiMode Video Display Adapter
- is installed
- supported by original HP Vectra AT and by ES/QS/RS series Vectras
- SeeAlso: AX=6F01h,AX=6F02h
- --------V-106F04-----------------------------
- INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP Vectra - GET MODE AND SCREEN RESOLUTION
- AX = 6F04h
- Return: AL = current video mode (see #00191)
- BX = horizontal columns (text) or pixels (graphics)
- CX = vertical columns (text) or pixels (graphics)
- SeeAlso: AX=6F05h
- --------V-106F05-----------------------------
- INT 10 - VIDEO - Video7 VGA,VEGA EXTENDED EGA/VGA,HP Vectra - SET VIDEO MODE
- AX = 6F05h
- BL = mode (see #00191)
- Return: AX,BL destroyed
- Notes: also supported by the HP Vectra Extended BIOS on the original
- HP Vectra AT and by ES/QS/RS series Vectras
- on the HP Vectra, this function rather than AH=00h must be used to
- return to an IBM-standard mode after setting an HP-specified mode
- from 08h to 0Fh.
- SeeAlso: AH=00h,AX=0070h,AX=007Eh,AX=6F04h
- (Table 00191)
- Values for Video7/VEGA video mode:
- text/ text pixel pixel colors disply scrn system
- grph resol box resolution pages addr
- 00h-13h = standard IBM modes (see #00010 at AH=00h)
- 08h = T 80x27 . . mono . . HP MultiMode Video
- 09h = T 80x27 . . . . . HP MultiMode Video
- 0Ah = T 40x27 . . mono . . HP MultiMode Video
- 0Bh = T 40x27 . . . . . HP MultiMode Video
- 0Ch = reserved HP MultiMode Video
- 0Dh = G . . 640x400 . . . HP MultiMode Video
- 0Eh = G . . 320x400 . . . HP MultiMode Video
- 0Fh = G . . 320x400 . . . HP MultiMode Video
- 40h = T 80x43 8x8 . . . . Video7/VEGA VGA
- 41h = T 132x25 8x14 . . . . Video7/VEGA VGA
- 42h = T 132x43 8x8 . . . . Video7/VEGA VGA
- 43h = T 80x60 8x8 . . . . Video7/VEGA VGA
- 44h = T 100x60 8x8 . . . . Video7/VEGA VGA
- 45h = T 132x28 8x8 . . . . Video7/VEGA VGA
- 60h = G . . 752x410 16 . . Video7 VGA, VEGA VGA
- 61h = G . . 720x540 16 . . Video7 VGA, VEGA VGA
- = G . . 720x540 16 . . Northgate, Headland 1024i
- 62h = G . . 800x600 16 . . Video7 VGA, VEGA Ext EGA
- = G . . 800x600 16 . . Headland 1024i
- 63h = G . . 1024x768 2 . . Video7 VGA
- 64h = G . . 1024x768 4 . . Video7 VGA
- 65h = G . . 1024x768 16 . . Video7 VGA, VEGA Ext EGA
- = G . . 1024x768 16 . . Headland 1024i
- 66h = G . . 640x400 256 . . Video7 VGA, VEGA Ext VGA
- = G . . 640x400 256 . . Northgate, Headland 1024i
- 67h = G . . 640x480 256 . . Video7 VGA, VEGA Ext VGA
- = G . . 640x480 256 . . Headland 1024i
- 68h = G . . 720x540 256 . . Video7 VGA, VEGA Ext VGA
- = G . . 720x540 256 . . Headland 1024i
- 69h = G . . 800x600 256 . . Video7 VGA, VEGA Ext VGA
- = G . . 800x600 256 . . Headland 1024i
- 70h = G . . 752x410 16gray . . Video7 VGA, VEGA VGA
- 71h = G . . 720x540 16gray . . Video7 VGA, VEGA VGA
- 72h = G . . 800x600 16gray . . Video7 VGA
- 73h = G . . 1024x768 2gray . . Video7 VGA
- 74h = G . . 1024x768 4gray . . Video7 VGA
- 75h = G . . 1024x768 16gray . . Video7 VGA
- 76h = G . . 640x400 256gray . . Video7 VGA
- 77h = G . . 640x480 256gray . . Video7 VGA
- 78h = G . . 720x540 256gray . . Video7 VGA
- 79h = G . . 800x600 256gray . . (future)
- SeeAlso: AH=00h,#00010,AX=0070h,#00011,AX=007Eh,AX=6F04h,#00083
- Index: video modes;Video 7|video modes;VEGA|video modes;Headland
- --------V-106F06-----------------------------
- INT 10 - VIDEO - Video7 VGA,VEGA VGA - SELECT AUTOSWITCH MODE
- AX = 6F06h
- BL = Autoswitch mode select
- 00h select EGA/VGA-only modes
- 01h select Autoswitched VGA/EGA/CGA/MGA modes
- 02h select 'bootup' CGA/MGA modes
- BH = enable/disable (00h enable, 01h = disable selection)
- Return: nothing
- --------V-106F07-----------------------------
- INT 10 - VIDEO - Video7 VGA,VEGA VGA - GET VIDEO MEMORY CONFIGURATION
- AX = 6F07h
- Return: AL = 6Fh
- AH = memory configuration
- bits 0-6 = number of 256K blocks of video memory
- bit 7 = DRAM/VRAM (0: DRAM, 1: VRAM)
- BH = chip revision (SR8F) (S/C Chip in VEGA VGA)
- BL = chip revision (SR8E) (G/A Chip in VEGA VGA)
- CX = 0000h
- SeeAlso: AH=12h/BL=10h
- --------V-1070-------------------------------
- INT 10 - VIDEO - TANDY 2000 only - GET ADDRESS OF VIDEO RAM
- AH = 70h
- Return: AX:BX -> WORD containing green plane's offset
- AX:CX -> WORD containing green plane's segment
- AX:DX -> WORD containing segment of red (offset 0) and blue (offset
- 4000) planes
- SeeAlso: AH=71h
- --------V-1070------------------------------------
- INT 10 - HUNTER 16 - DRAW ELLIPSE/CIRCLE
- AH = 70h
- DS:BX -> control block (see #00192)
- Return: nothing
- Desc: Draws a circle or ellipse. Only valid in graphics modes.
- Note: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family
- members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
- SeeAlso: AH=71h"HUNTER"
- Format of HUNTER 16 control block:
- Offset Size Description (Table 00192)
- 00h WORD center X co-ordinate
- 02h BYTE center Y co-ordinate
- 03h WORD radius in pixels
- 05h BYTE color (00h white, 01h black, FFh invert)
- 06h BYTE aspect ratio x:x (1-127)
- 07h BYTE aspect ratio y:y (1-127)
- --------V-107000BX0000-----------------------
- INT 10 - Everex Extended Video BIOS - RETURN EMULATION STATUS
- AX = 7000h
- BX = 0000h
- Return: AL = 70h if Trident-based Everex card
- CL = monitor type (see #00193)
- CH = feature bits (see #00194)
- DX = video board info
- bits 4-15: board ID model (see #00195)
- bits 0-3: board ID revision
- DI = BCD BIOS version number
- SeeAlso: AX=5F01h,AH=FFh"Oak"
- (Table 00193)
- Values for Everex monitor type:
- 00h mono
- 01h CGA
- 02h EGA
- 03h digital multifrequency
- 04h IBM PS/2
- 05h IBM 8514
- 06h SuperVGA
- 07h analog multifrequency
- 08h super multifrequency
- Bitfields for Everex feature bits:
- Bit(s) Description (Table 00194)
- 7-6 memory size
- 00 = 256K
- 01 = 512K
- 10 = 1024K
- 11 = 2048K
- 5 special oscillator present
- 4 VGA protect enabled
- 0 6845 emulation
- (Table 00195)
- Values for board model for Trident-based Everex cards:
- 0236h Ultragraphics II
- 0620h Vision VGA
- 0673h EVGA
- 0678h Viewpoint
- --------V-107000BX0004-----------------------
- INT 10 - Everex Extended Video BIOS - GET PAGING FUNCTION POINTER FOR CURR MODE
- AX = 7000h
- BX = 0004h
- Return: ES:DI -> FAR paging function (call with DL = page to set)
- Note: the word preceding ES:DI is the length of the function in bytes, and
- the last byte of the function is a FAR return instruction.
- SeeAlso: AX=4F05h,AX=7000h/BX=0000h,AX=7000h/BX=0005h
- --------V-107000BX0005-----------------------
- INT 10 - Everex Extended Video BIOS - GET SUPPORTED MODE INFO
- AX = 7000h
- BX = 0005h
- CL = maximum number of modes to get info for
- CH = mode type to get info for (see #00196)
- DL = monitor type to get info for
- ES:DI -> buffer for mode info (see #00197)
- Return: CL = total number of modes fitting criteria
- CH = size of each info record
- SeeAlso: AX=7000h/BX=0000h,AX=7000h/BX=0004h
- (Table 00196)
- Values for Everex mode type:
- 00h all modes
- 01h monochrome text modes
- 02h color text modes
- 03h four-color CGA graphics modes
- 04h two-color CGA graphics modes
- 05h 16-color graphics modes
- 06h 256-color graphics modes
- Format of Everex mode information record:
- Offset Size Description (Table 00197)
- 00h BYTE mode number (bit 7 set if extended mode)
- 01h BYTE mode type (see #00196)
- 02h BYTE info bits (see #00198)
- 03h BYTE font height
- 04h BYTE text columns on screen
- 05h BYTE text rows on screen
- 06h WORD number of scan lines
- 08h BYTE color information
- bits 7-4 reserved
- 3-0 bits per pixel
- Bitfields for Everex info bits:
- Bit(s) Description (Table 00198)
- 7,6 reserved
- 5 monochrome mode
- 4 interlaced display
- 3 requires special oscillator
- 2,1 memory required (00 = 256K, 01 = 512K, 10 = 1024K, 11 = 2048K)
- 0 reserved
- --------V-1071-------------------------------
- INT 10 - VIDEO - TANDY 2000 only - GET ADDRESS OF INCRAM
- AH = 71h
- Return: AX:BX -> WORD containing segment address of INCRAM
- AX:CX -> WORD containing offset of INCRAM
- SeeAlso: AH=70h"TANDY"
- --------V-1071------------------------------------
- INT 10 - HUNTER 16 - DRAW LINE/BOX
- AH = 71h
- DS:BX -> control block (see #00199)
- Return: nothing
- Desc: Draws a line or box. Only valid in graphics modes.
- SeeAlso: AH=70h"HUNTER"
- Format of HUNTER 16 control block:
- Offset Size Description (Table 00199)
- 00h WORD left edge X co-ordinate
- 02h BYTE lower edge Y co-ordinate
- 03h WORD right edge X co-ordinate
- 05h BYTE upper edge Y co-ordinate
- 06h BYTE color (00h white, 01h black, FFh invert)
- 07h BYTE type (00h line, 01h box)
- 08h BYTE if non-zero (and type is BOX) fill with color
- --------V-1072-------------------------------
- INT 10 - VIDEO - TANDY 2000 only - SCROLL RIGHT PART OR ALL OF SCREEN
- AH = 72h
- AL = number of columns to shift scroll area, 00h to clear entire area
- BH = new attributes for blanked columns at left
- CH,CL = row, column of upper left corner of scroll area
- DH,DL = row, column of lower right corner of scroll area
- Return: nothing
- SeeAlso: AH=06h,AH=07h,AH=73h"TANDY",INT 15/AH=12h/BH=05h
- --------V-1072------------------------------------
- INT 10 - HUNTER 16 - SELECT TEXT-MODE INVERSE VIDEO MECHANISM
- AH = 72h
- AL = mechanism to use
- 00h do not use inverse video
- 01h emulate MDA. Display attribute 07h is normal video and 70h is
- inverse video.
- 02h use inverse video if background is non-black.
- 03h use inverse video for high intensity text.
- 04h use inverse video for text with background intensity greater
- than foreground intensity.
- 05h use inverse video for text with background color other than
- black or high intensity foreground.
- Return: nothing
- SeeAlso: AH=70h"HUNTER",AH=71h"HUNTER"
- --------V-1073-------------------------------
- INT 10 - VIDEO - TANDY 2000 only - SCROLL LEFT PART OR ALL OF SCREEN
- AH = 73h
- AL = number of columns to shift scroll area, 00h to clear entire area
- BH = new attributes for blanked columns at right
- CH,CL = row, column of upper left corner of scroll area
- DH,DL = row, column of lower right corner of scroll area
- Return: nothing
- SeeAlso: AH=06h,AH=07h,AH=72h"TANDY",INT 15/AH=12h/BH=05h
- --------V-1073------------------------------------
- INT 10 - HUNTER 16 - SELECT TEXT FONT
- AH = 73h
- AL = new font
- 00h 7x7 in a 8x8 cell
- 01h 5x7 in a 6x8 cell
- 06h 3x5 in a 4x6 cell
- Return: BH = cell width
- BL = cell height
- SeeAlso: AH=60h"HUNTER",AH=77h"HUNTER"
- --------V-1074------------------------------------
- INT 10 - HUNTER 16 - SET LCD WINDOWS POSITION
- AH = 74h
- DH = row (0..24)
- DL = column (0..79)
- Return: nothing
- Desc: set the position in the virtual screen being displayed in the LCD
- screen. If Split Screen (INT 10/AH=66h) is used, this call sets the
- position for the window which has the cursor.
- SeeAlso: AH=66h"HUNTER",AH=75h,AH=76h
- --------V-1075------------------------------------
- INT 10 - HUNTER 16 - SET ZOOM
- AH = 75h
- AL = new Zoom state (00h off, nonzero on)
- Return: nothing
- SeeAlso: AH=74h,AH=76h
- --------V-1076------------------------------------
- INT 10 - HUNTER 16 - LOOKING KEYS
- AH = 76h
- AL = action
- 00h home the window
- 01h move up one line
- 02h move down one line
- 03h move left one character
- 04h move right one character
- 05h flip window to other side of virtual screen
- Return: nothing
- Desc: moves the displayed screen around the virtual screen
- SeeAlso: AH=74h,AH=75h
- --------V-1077------------------------------------
- INT 10 - HUNTER 16 - GET GRAPHICS FONT
- AH = 77h
- Return: AL = font number (see #00200)
- SeeAlso: AH=60h"HUNTER",AH=73h"HUNTER"
- (Table 00200)
- Values for HUNTER 16 graphics font number:
- 00h 7x7 in a 8x8 cell
- 01h 5x7 in a 6x8 cell
- 02h 7x9 in a 8x10 cell
- 03h 14x9 in a 16x10 cell
- 04h 7x18 in a 8x20 cell
- 05h 14x18 in a 16x20 cell
- 06h 3x5 in a 4x6 cell
- Note: size is X * Y
- --------V-1078------------------------------------
- INT 10 - HUNTER 16 - TURN BACKLIGHT ON/OFF
- AH = 78h
- AL = new state of backlight (00h on, 01h off)
- Return: nothing
- SeeAlso: AH=64h,INT 15/AH=74h
- --------V-107F-------------------------------
- INT 10 - Paradise SVGA - WD90C24 INSTALLATION CHECK
- AH = 7Fh
- Return: AX = 1234h if WD90C24 chip installed
- --------V-107F00-----------------------------
- INT 10 - SOLLEX SuperVGA - GET EXTENSIONS INFO
- AX = 7F00h
- Return: AL <> 7Fh if not supported
- AL = 7Fh if supported
- AH = status
- 00h successful
- ES:DI -> info structure (see #00201)
- 01h failed
- Program: the SOLLEX (Smos videO controLLer EXtensions) SuperVGA functions are
- an extension to the VESA SuperVGA BIOS Extensions (see AX=4F00h) by
- Seiko Epson Corporation intended to provided a standardized interface
- to SuperVGA functionality not addressed by the VESA standard
- SeeAlso: AX=4F00h
- Format of SOLLEX SuperVGA info structure:
- Offset Size Description (Table 00201)
- 00h DWORD pointer to VESA function dispatch table
- 04h DWORD pointer to SOLLEX function dispatch table
- 08h DWORD pointer to VESA SuperVGA info (see #00077 at AX=4F00h)
- 0Ch DWORD pointer to mode info structure table, consisting of
- alternating ResInfo (see #00202) and VESA mode information
- (see #00079 at AX=4F01h) blocks, terminated with an FFFFh word
- 10h DWORD pointer to font info structure table (see #00203)
- 14h WORD high resolution crystal frequency in Hz (0000h = not present)
- 16h DWORD pointer to ASCIZ ID string
- 1Ah DWORD pointer to timeout reset table
- array of bytes, each a multiple of the minimum time increment
- 1Eh WORD minimum time increment in timer ticks
- 20h BYTE inverse options supported
- bit 0: inverse supported
- bits 1-7: reserved
- 21h BYTE normal color value
- 22h BYTE inverse color value
- 23h WORD port to be accessed for normal/inverse settings
- 25h WORD type of interface chip (currently undefined)
- 27h WORD program operational mode
- bits 1-0: 00 no preference
- 01 terse (minimum detail in program messages)
- 10 verbose
- 11 use menus if supported, verbose mode otherwise
- bits 7-2: reserved
- 29h WORD SOLLEX specification version
- 2Bh WORD version of VESA/SOLLEX implementation
- 2Dh DWORD offset to relocatable portion of SOLLEX extensions (for CONFIG)
- 2Eh DWORD offset to unused section of the extensions ROM
- 31h 16 BYTEs reserved
- Note: all DWORD pointers initially require segment fixups; if the segment
- is 0000h, it should be changed to the returned ES, otherwise it
- may be assumed to be correct
- Format of SOLLEX SuperVGA ResInfo:
- Offset Size Description (Table 00202)
- 00h WORD 16-bit mode number
- 02h WORD adapter type (00h VGA, 01h EGA, 02h CGA, 03h MDA)
- 04h WORD display info (see #00206)
- 06h DWORD pointer to video parameter table
- 0Ah BYTE replacement entry in master Video Parameter
- 0Bh BYTE mode requested for mode set by BIOS
- 0Ch DWORD pointer to LoadReg table
- 10h BYTE index into table of clock values (see #00204)
- SeeAlso: #00201
- Format of SOLLEX SuperVGA font info table [array] entry:
- Offset Size Description (Table 00203)
- 00h BYTE required font height
- 01h BYTE parameter to load text mode font
- 02h BYTE parameter to load graphics mode font
- SeeAlso: #00201
- (Table 00204)
- Values for SOLLEX SuperVGA clock value index:
- 00h 25 MHz
- 01h 28 MHz
- 02h PCLK
- 03h 31.5 MHz (VESA 640x480)
- 04h reserved
- 05h 16 MHz (EGA)
- 06h PCLK
- 07h 24 MHz (EGA)
- 08h 25 MHz
- 09h 28 MHz
- 0Ah 36 MHz
- 0Bh 45 MHz (for 1024x768)
- 0Ch 80 MHz
- 0Dh 40 MHz
- 0Eh 65 MHz
- 0Fh 1 MHz (for powerdown)
- SeeAlso: #00201
- --------V-107F00BX4000-----------------------
- INT 10 - Diamond Stealth 24 - GET S3 INFORMATION BLOCK
- AX = 7F00h
- BX = 4000h
- Return: AX = 007Fh if supported
- DX:BX -> DAC set mode routine
- SeeAlso: AX=7F00h/BX=4001h,AX=7F00h/BX=4002h,#00732 at INT 1A/AX=B102h
- --------V-107F00BX4001-----------------------
- INT 10 - Diamond Stealth 24 - GET LINEAR ADDRESS
- AX = 7F00h
- BX = 4001h
- Return: AX = 007Fh if supported
- CX = current linear address base (high word)
- SeeAlso: AX=7F00h/BX=4000h,AX=7F00h/BX=4002h
- --------V-107F00BX4002-----------------------
- INT 10 - Diamond Stealth 24 - SET LINEAR ADDRESS
- AX = 7F00h
- BX = 4002h
- CX = new linear address base (high word)
- Return: AX = 007Fh if supported
- SeeAlso: AX=7F00h/BX=4000h,AX=7F00h/BX=4001h
- --------V-107F01BL00-------------------------
- INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - SET ADAPTER
- AX = 7F01h
- BL = 00h
- CX = adapter request (see #00205)
- Return: AL <> 7Fh if not supported
- AL = 7Fh if supported
- AH = status
- 00h successful
- 01h failed
- Note: initializes video hardware to a particular standard
- SeeAlso: AX=7F00h"SOLLEX",AX=7F01h/BL=01h,AX=7F01h/BL=02h
- Bitfields for SOLLEX SuperVGA adapter request:
- Bit(s) Description (Table 00205)
- 1-0 adapter type (00 VGA, 01 EGA, 10 CGA, 11 MDA)
- 2 reserved
- 4-3 change displays (00 none, 01 analog 10 digital 11 panel)
- 6-5 desired monitor sense (01 color, 10 mono, 11=8514)
- 7 lock override
- 8 alternate adapter mode
- 15-9 reserved
- --------V-107F01BL01-------------------------
- INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - GET ADAPTER
- AX = 7F01h
- BL = 01h
- Return: AL <> 7Fh if not supported
- AL = 7Fh if supported
- AH = status
- 00h successful
- 01h failed
- BX = adapter type (see #00205)
- DX = display type (see #00206)
- SeeAlso: AX=7F00h"SOLLEX",AX=7F01h/BL=00h,AX=7F01h/BL=02h
- Bitfields for SOLLEX SuperVGA display type:
- Bit(s) Description (Table 00206)
- 15-9 reserved
- 8 alternate display active
- 7 Enhanced Color Display monitor active
- 6 multi-frequency digital monitor active
- 5 PS/2-type monitor active
- 4 plasma/electroluminescent panel active
- 3 LCD panel active
- 2 multi-frequency analog monitor active
- 1-0 monitor sense (00 none, 01 color, 10 mono, 11=8514)
- --------V-107F01BL02-------------------------
- INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - DETERMINE ADAPTER SUPPORT
- AX = 7F01h
- BL = 02h
- CX = adapter request (see #00205)
- Return: AL <> 7Fh if not supported
- AL = 7Fh if supported
- AH = status
- 00h requested setting can successfully be made
- 01h requested setting not available in this configuration
- SeeAlso: AX=7F00h"SOLLEX",AX=7F01h/BL=00h
- --------V-107F02BL00-------------------------
- INT 10 - SOLLEX SuperVGA - DISPLAY OUTPUT CONTROL - SET DISPLAY OUTPUT
- AX = 7F02h
- BL = 00h
- CX = display output setting (see #00207)
- Return: AL <> 7Fh if not supported
- AL = 7Fh if supported
- AH = status
- 00h successful
- 01h failed
- SeeAlso: AX=7F00h"SOLLEX",AX=7F02h/BL=00h
- Bitfields for SOLLEX SuperVGA display output setting:
- Bit(s) Description (Table 00207)
- 0 CRTC control in 2,1 valid
- 1 enable digital output
- 2 enable analog output
- 3 panel control in 5,4 valid
- 4 enable LCD output
- 5 enable plasma/EL output
- 6 inverse control in 7 valid
- 7 0=normal, 1=inverse
- 15-8 reserved
- --------V-107F02BL01-------------------------
- INT 10 - SOLLEX SuperVGA - DISPLAY OUTPUT CONTROL - GET DISPLAY OUTPUT
- AX = 7F02h
- BL = 01h
- Return: AL <> 7Fh if not supported
- AL = 7Fh if supported
- AH = status
- 00h successful
- BX = display output setting (see #00207)
- CX = displays attached (see #00208)
- 01h failed
- SeeAlso: AX=7F00h"SOLLEX",AX=7F02h/BL=00h
- Bitfields for SOLLEX SuperVGA displays attached:
- Bit(s) Description (Table 00208)
- 0 PS/2 display on analog output
- 1 multi-frequency monitor on analog output
- 2 LCD panel attached
- 3 plasma/electroluminescent panel attached
- 4 multi-frequency monitor on digital output
- 5 Enhanced Color Display attached to digital outpt
- 6 alternate display
- 15-7 reserved
- --------V-107F03BL00-------------------------
- INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - GET SUPPORT INFO
- AX = 7F03h
- BL = 00h
- CX = support type
- 0000h VGA, 0001h EGA, 0002h CGA, 0003h MDA, 0004h extensions,
- 0005h-0012h reserved for SOLLEX, 0013h Hercules,
- 0014h-001Fh reserved for SOLLEX, 0020h-00FFh reserved for OEM
- Return: AL <> 7Fh if not supported
- AL = 7Fh if supported
- AH = status
- 00h successful
- CX = size of video support code
- DX = segment of physical video support (0000h if no ROM)
- ES = segment of active video support
- ES:DI -> information block (DI = 0000h if none available)
- 01h failed
- SeeAlso: AX=7F03h/BL=01h
- --------V-107F03BL01-------------------------
- INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - INITIALIZE VIDEO SUPPORT
- AX = 7F03h
- BL = 01h
- CX = support request
- ES = segment of support code
- Return: AL <> 7Fh if not supported
- AL = 7Fh if supported
- AH = status
- 00h successful
- 01h failed
- Note: initializes the indicated video support by calling ES:0003h; this
- function may be used to switch the active video support back to
- ROM after AX=7F03h/BL=02h
- SeeAlso: AX=7F03h/BL=00h
- --------V-107F03BL02-------------------------
- INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - GO RAM RESIDENT
- AX = 7F03h
- BL = 02h
- CX = support request
- ES = destination segment
- Return: AL <> 7Fh if not supported
- AL = 7Fh if supported
- AH = status
- 00h successful
- 01h failed
- SeeAlso: AX=7F00h"SOLLEX",AX=7F03h/BL=01h
- --------V-107F04BL00-------------------------
- INT 10 - SOLLEX SuperVGA - POWER CONTROL - SET POWER STATE
- AX = 7F04h
- BL = 00h
- CX = new power state
- Return: AL <> 7Fh if not supported
- AL = 7Fh if supported
- AH = status
- 00h successful
- 01h failed
- Note: higher values progressively reduce the operations available on the
- video adapter while yielding increasing power savings
- SeeAlso: AX=7F00h"SOLLEX",AX=7F04h/BL=01h
- --------V-107F04BL01-------------------------
- INT 10 - SOLLEX SuperVGA - POWER CONTROL - GET POWER STATE
- AX = 7F04h
- BL = 01h
- Return: AL <> 7Fh if not supported
- AL = 7Fh if supported
- AH = status
- 00h successful
- CX = current power state
- DX = maximum state
- 01h failed
- SeeAlso: AX=7F00h"SOLLEX",AX=7F04h/BL=00h
- --------V-107F04BL02-------------------------
- INT 10 - SOLLEX SuperVGA - POWER CONTROL - SET TIMEOUT RESET
- AX = 7F04h
- BL = 02h
- CX = timeout reset
- Return: AL <> 7Fh if not supported
- AL = 7Fh if supported
- AH = status
- 00h successful
- 01h failed
- SeeAlso: AX=7F00h"SOLLEX",AX=7F04h/BL=03h
- --------V-107F04BL03-------------------------
- INT 10 - SOLLEX SuperVGA - POWER CONTROL - GET TIMEOUT RESET
- AX = 7F04h
- BL = 03h
- Return: AL <> 7Fh if not supported
- AL = 7Fh if supported
- AH = status
- 00h successful
- BX = time increment
- CX = current timeout reset
- DX = maximum timeout reset
- ES:DI -> timeout reset table (array of bytes)
- 01h failed
- Note: the timeout period is computed as (BYTE ES:[DI+CX]) * BX timer ticks
- SeeAlso: AX=7F00h"SOLLEX",AX=7F04h/BL=02h
- --------V-107F05-----------------------------
- INT 10 - SOLLEX SuperVGA - LOAD REGISTER
- AX = 7F05h
- ES:DI -> register value table (see #00209)
- Return: AL <> 7Fh if not supported
- AL = 7Fh if supported
- AH = status
- 00h successful
- 01h failed
- SeeAlso: AH=F1h,AH=F3h,AH=F5h
- Format of SOLLEX SuperVGA register value table:
- Offset Size Description (Table 00209)
- 00h WORD base I/O register (FFFFh = end of list)
- 02h 2N BYTEs pairs of values to be written to the base I/O register as an
- index value and the following register as a data byte
- 2N+2 WORD FFFFh (end of data list)
- ... (repeats until FFFFh base address)
- --------V-107F06-----------------------------
- INT 10 - SOLLEX SuperVGA - MULTIPLE FONT CONTROL
- AX = 7F06h
- BL = subfunction
- 00h set multiple font state
- CX = new state (00h off, 01h on)
- 01h get multiple font state
- Return: BL = current state (00h off, 01h on)
- Return: AL <> 7Fh if not supported
- AL = 7Fh if supported
- AH = status
- 00h successful
- 01h failed
- SeeAlso: AX=1100h,AX=1103h
- --------V-107F07-----------------------------
- INT 10 - SOLLEX SuperVGA - FILL VIDEO RAM
- AX = 7F07h
- BL = how much to fill
- 00h regen size
- 01h all video memory
- CX = pattern to write (normally 0720h for text modes and 0000h for gr)
- Return: AL <> 7Fh if not supported
- AL = 7Fh if supported
- AH = status
- 00h successful
- 01h failed
- SeeAlso: AH=06h
- --------A-1080-------------------------------
- INT 10 - CU Writer v1.4 - GET OPTION
- AH = 80h
- AL = desired option
- Return: ???
- Program: CU Writer is a public-domain Thai-English word processor from
- Chulalongkorn University, Bangkok
- SeeAlso: AH=81h"CU Writer"
- --------Q-1080--DX4456-----------------------
- INT 10 U - VIDEO - DESQview 2.0x only - internal - SET ??? HANDLER
- AH = 80h
- DX = 4456h ('DV')
- ES:DI -> FAR subroutine to be called on ???
- Return: DS = segment of DESQview data structure for video buffer
- Note: this function is probably meant for internal use only, due to the magic
- value required in DX
- the subroutine seems to be called when the DESQview menu is accessed;
- on entry, AL = 03h or 04h
- --------A-1081-------------------------------
- INT 10 - CU Writer v1.4 - SET OPTION
- AH = 81h
- ???
- Return: ???
- SeeAlso: AH=80h"CU Writer"
- --------Q-1081--DX4456-----------------------
- INT 10 U - VIDEO - DESQview 2.0x only - internal - GET ???
- AH = 81h
- DX = 4456h ('DV')
- Return: ES = segment of DESQview data structure for video buffer
- BYTE ES:[0] = current window number in DV 2.0x
- Note: this function is probably meant for internal use only, due to the magic
- value required in DX
- SeeAlso: AH=82h"DESQview"
- --------Q-1082--DX4456-----------------------
- INT 10 U - VIDEO - DESQview 2.0x only - internal - GET CURRENT WINDOW INFO
- AH = 82h
- DX = 4456h ('DV')
- Return: DS = segment in DESQview for data structure
- in DV 2.00,
- BYTE DS:[0] = window number
- WORD DS:[1] = segment of other data structure
- WORD DS:[3] = segment of window's object handle
- ES = segment of DESQview data structure for video buffer
- AL = current window number
- AH = ???
- BL = direct screen writes
- 00h program does not do direct writes
- 01h program does direct writes, so shadow buffer not usable
- BH = ???
- CL = current video mode
- CH = ???
- Note: this function is probably meant for internal use only, due to the magic
- value required in DX
- SeeAlso: AH=81h"DESQview"
- --------J-108200-----------------------------
- INT 10 - VIDEO - AX PC - GET/SET SCROLL MODE
- AX = 8200h
- BL = new scroll mode or FFh to get current mode
- 00h dynamic, 01h software
- Return: AL = scroll mode (current mode if BL=FFh, previous mode otherwise)
- SeeAlso: AH=06h,AH=07h
- --------J-108300-----------------------------
- INT 10 - VIDEO - AX PC - GET VIDEO RAM ADDRESS
- AX = 8300h
- Return: AX = offset of video RAM
- ES:BX -> virtual text RAM buffer
- SeeAlso: AX=5201h
- ----------1086-------------------------------
- INT 10 - ???
- AH = 86h
- Note: called by Diamond Stealth64 Video STLTH64.VXD
- SeeAlso: INT 2F/AX=4021h
- --------N-108B-------------------------------
- INT 10 - Alloy MW386 - FORCE WORKSTATION SCREEN UPDATE
- AH = 8Bh
- Return: nothing
- SeeAlso: AH=92h,AH=93h
- --------N-1090-------------------------------
- INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION DISPLAY MODE
- AH = 90h
- Return: AL = current video mode (see #00010 at AH=00h)
- SeeAlso: AH=91h
- --------N-1091-------------------------------
- INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION ADAPTER TYPE
- AH = 91h
- Return: AL = video adapter type (see #00210)
- Note: types less than 80h do not imply that the current user is on the host
- SeeAlso: AH=90h
- (Table 00210)
- Values for Alloy MW386 video adapter type:
- 00h monochrome
- 01h Hercules monochrome graphics
- 02h CGA
- 03h EGA
- 04h VGA
- 80h monochrome text terminal
- 81h Hercules graphics terminal
- 82h color graphics terminal
- --------N-1092-------------------------------
- INT 10 - Alloy MW386 - INHIBIT WORKSTATION SCREEN UPDATES
- AH = 92h
- Return: nothing
- Note: the terminal will be updated even when screen updates are inhibited if
- TTY output is used
- SeeAlso: AH=8Bh
- --------N-1093-------------------------------
- INT 10 - Alloy MW386 - REDRAW SCREEN
- AH = 93h
- Return: nothing
- SeeAlso: AH=8Bh,AH=FFh
- --------V-109508-----------------------------
- INT 10 - VHRBIOS.SYS - ???
- AX = 9508h
- Return: ???
- Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius"
- black&white A4/portrait monitor
- SeeAlso: AH=96h"VHRBIOS.SYS",AH=F0h"VHRBIOS.SYS"
- --------V-1096-------------------------------
- INT 10 - VHRBIOS.SYS - GET OTHER DISPLAY INFO
- AH = 96h
- Return: AL = display type (see AH=1Ah)
- AH = ??? (possibly related to Micro Channel support)
- Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius"
- black&white A4/portrait monitor
- Desc: returns info on any non-Genius video adapter in the system
- SeeAlso: AX=9508h"VHRBIOS.SYS",AH=F0h"VHRBIOS.SYS"
- --------A-10A0-------------------------------
- INT 10 - CU Writer v1.4 - SET PIXEL WRITE MODE
- AH = A0h
- ???
- Return: ???
- Program: CU Writer is a public-domain Thai-English word processor from
- Chulalongkorn University, Bangkok
- SeeAlso: AH=80h"CU Writer",AH=B0h
- --------p-10A000-----------------------------
- INT 10 - ATI Mach64 BIOS - ???
- AX = A000h
- CL = ??? (bits 2-0 may not be 000)
- CH = ??? (81h or ???)
- DX = segment of ??? (if CH=81h)
- ???
- Return: AX = ???
- SeeAlso: AX=4F10h/BL=00h,AX=A001h
- ----------10A001-----------------------------
- INT 10 - ATI Mach64 BIOS - ???
- AX = A001h
- CL = ??? flags
- ???
- Return: AH = status
- 00h successful
- 01h failed
- ???
- SeeAlso: AX=A000h,AX=A002h
- ----------10A002-----------------------------
- INT 10 - ATI Mach64 BIOS - ???
- AX = A002h
- CL = ??? (bits 2-0 may not be 000)
- CH = ??? (81h or ???)
- DX = segment of ??? (if CH=81h)
- ???
- Return: AH = status
- 00h successful
- 01h failed
- ???
- Note: executes AX=A000h, then AX=A001h if A000h was successful
- SeeAlso: AX=A000h,AX=A001h
- ----------10A003-----------------------------
- INT 10 - ATI Mach64 BIOS - ???
- AX = A003h
- BX = ???
- ???
- Return: AH = status (00h successful)
- ???
- SeeAlso: AX=A000h,AX=A002h
- --------V-10A004-----------------------------
- INT 10 - PhoenixVIEW/LC - VIDEO DISPLAY TYPE
- AX = A004h
- ???
- Return: ???
- Desc: configure display parameters
- SeeAlso: AX=A01Bh"PhoenixVIEW/LC"
- ----------10A004-----------------------------
- INT 10 - ATI Mach64 BIOS - ???
- AX = A004h
- BX = video mode??? (0000-00FFh)
- DX = ??? (sent to some port [66ECh???] one bit at a time, high to low)
- ???
- Return: AH = status
- 00h successful
- 01h failed
- ???
- SeeAlso: AX=A000h,AX=A002h
- ----------10A005-----------------------------
- INT 10 - ATI Mach64 BIOS - ???
- AX = A005h
- CL = ??? flags (bits 0,2, others?)
- ???
- Return: AH = status
- 00h successful
- 01h failed
- ???
- SeeAlso: AX=A000h,AX=A002h
- ----------10A006-----------------------------
- INT 10 - ATI Mach64 BIOS - ???
- AX = A006h
- ???
- Return: AH = status
- 00h successful
- 01h failed
- ???
- SeeAlso: AX=A000h,AX=A002h
- ----------10A007-----------------------------
- INT 10 - ATI Mach64 BIOS - GET ???
- AX = A007h
- Return: AH = 00h (successful)
- AL = ??? (00h)
- BX = ??? (15A0h in examined BIOS)
- DX = segment of BIOS
- SeeAlso: AX=A000h,AX=A002h
- ----------10A008-----------------------------
- INT 10 - ATI Mach64 BIOS - GET ??? SIZE
- AX = A008h
- CL = ??? flags
- ???
- Return: AH = 00h (successful)
- BX = size of ??? (0046h if CL bit 0 clear on entry)
- SeeAlso: AX=A000h,AX=A009h
- ----------10A009-----------------------------
- INT 10 - ATI Mach64 BIOS - GET ???
- AX = A009h
- DX:BX -> buffer for ???
- CL = ??? flags
- ???
- Return: AH = status
- 00h successful
- DX:BX buffer filled
- 01h failed
- ???
- SeeAlso: AX=A000h,AX=A008h
- ----------10A00A-----------------------------
- INT 10 - ATI Mach64 BIOS - GET ???
- AX = A00Ah
- Return: AH = 00h (successful)
- AL = ??? (01h)
- BX = ??? (5938h)
- CX = ??? (595Eh)
- DX = segment of BIOS
- SeeAlso: AX=A000h,AX=A002h
- ----------10A00B-----------------------------
- INT 10 - ATI Mach64 BIOS - ???
- AX = A00Bh
- BX = ???
- CL = ??? flags
- ???
- Return: AH = status
- 00h successful
- 01h failed
- ???
- SeeAlso: AX=A000h,AX=A002h
- --------p-10A00C-----------------------------
- INT 10 - ATI Mach64 BIOS - SET SLEEP MODE
- AX = A00Ch
- CL = new state
- 00h normal operation
- 01h standby
- 02h suspend
- 03h off
- Return: AH = status
- 00h successful
- 01h failed
- Note: CL bit 2 affects values written to video card's ports
- SeeAlso: AX=A000h,AX=A00Dh,AX=4F00h,AX=4F10h/BL=01h
- ----------10A00D-----------------------------
- INT 10 - ATI Mach64 BIOS - GET SLEEP MODE
- AX = A00Dh
- Return: AH = 00h (successful)
- CL = current power mode
- 00h normal operation
- 01h standby
- 02h suspend
- 03h off
- SeeAlso: AX=A00Ch,AX=4F10h/BL=02h
- ----------10A00E-----------------------------
- INT 10 - ATI Mach64 BIOS - SET ???
- AX = A00Eh
- CL = ??? (00h-03h)
- Return: AH = status
- 00h successful
- 01h failed
- Note: CL zero/nonzero are treated differently
- SeeAlso: AX=A000h,AX=A00Fh
- ----------10A00F-----------------------------
- INT 10 - ATI Mach64 BIOS - GET ???
- AX = A00Fh
- Return: AH = 00h (successful)
- CL = ??? (00h-03h, read from PORT 42ECh)
- SeeAlso: AX=A000h,AX=A00Eh
- ----------10A010-----------------------------
- INT 10 - ATI Mach64 BIOS - ???
- AX = A010h
- CL = ??? (80h/other)
- ???
- Return: AH = status
- 00h successful
- 01h failed
- ???
- SeeAlso: AX=A000h,AX=A002h
- ----------10A011-----------------------------
- INT 10 - ATI Mach64 BIOS - GET ???
- AX = A011h
- Return: AH = 00h (successful)
- BL = ??? (1Fh)
- BH = ??? (0Fh)
- CL = ??? (00h)
- CH = ??? (0Fh)
- DX = ??? (00FFh)
- SeeAlso: AX=A000h,AX=A010h
- ----------10A012-----------------------------
- INT 10 - ATI Mach64 BIOS - GET ???
- AX = A012h
- Return: AH = 00h (successful)
- AL = ??? (00h)
- BX = ??? (0000h)
- CX = ??? (0000h)
- DX = ??? (02ECh)
- SeeAlso: AX=A000h,AX=A002h
- ----------10A013-----------------------------
- INT 10 - ATI Mach64 BIOS - ???
- AX = A013h
- ???
- Return: AH = status
- 00h successful
- 01h failed
- ???
- Note: not implemented in examined BIOS, always returns AH=01h
- SeeAlso: AX=A000h,AX=A002h
- --------V-10A01B-----------------------------
- INT 10 - PhoenixVIEW/LC - CRT MONITOR DETECTION
- AX = A01Bh
- ???
- Return: ???
- Desc: determine whether an external display is currently attached
- SeeAlso: AX=A004h"PhoenixVIEW/LC"
- --------U-10AA-------------------------------
- INT 10 OU - Player's Tool 3.0 - UNINSTALL
- AH = AAh
- Return: ???
- Note: this call has been removed in PT 3.996b
- Program: Player's Tool is a game cheater by Dmitry Yakunin & Andy Robinson
- SeeAlso: AH=ABh,INT 2F/AH=AAh
- --------U-10AB-------------------------------
- INT 10 OU - Player's Tool 3.0 - INSTALLATION CHECK
- AH = ABh
- Return: BH = FFh
- ???
- Note: this call has been removed in PT 3.996b
- SeeAlso: AH=AAh,INT 2F/AH=ABh
- --------A-10B0-------------------------------
- INT 10 - CU Writer v1.4 - PUT PIXEL
- AH = B0h
- ???
- Return: ???
- SeeAlso: AH=A0h"CU Writer",AH=B1h,AH=B2h,AH=B3h,AH=B4h,AH=B5h,AH=D0h
- --------A-10B1-------------------------------
- INT 10 - CU Writer v1.4 - MOVE TO
- AH = B1h
- ???
- Return: ???
- SeeAlso: AH=B0h,AH=B2h,AH=C0h"CU Writer"
- --------A-10B2-------------------------------
- INT 10 - CU Writer v1.4 - DRAW LINE TO
- AH = B2h
- ???
- Return: ???
- SeeAlso: AH=B0h,AH=B1h,AH=B3h,AH=B4h,AH=B5h
- --------A-10B3-------------------------------
- INT 10 - CU Writer v1.4 - FLOOD FILL
- AH = B3h
- ???
- Return: ???
- SeeAlso: AH=B2h,AH=B5h
- --------A-10B4-------------------------------
- INT 10 - CU Writer v1.4 - DRAW RECTANGLE
- AH = B4h
- ???
- Return: ???
- SeeAlso: AH=B0h,AH=B2h,AH=B3h,AH=B5h
- --------A-10B5-------------------------------
- INT 10 - CU Writer v1.4 - DRAW FILLED RECTANGLE
- AH = B5h
- ???
- Return: ???
- SeeAlso: AH=B0h,AH=B2h,AH=B3h,AH=B4h
- --------V-10BB-------------------------------
- INT 10 U - Doorway - SET BIOS/DIRECT REDIRECTION
- AH = BBh
- AL = new redirection mode
- 00h BIOS (hook and redirect INT 10h,etc.)
- 01h DIRECT (scan video memory for changes)
- Return: ???
- SeeAlso: INT 16/AH=67h"Doorway"
- --------V-10BD44-----------------------------
- INT 10 U - Compaq QVision - ???
- AX = BD44h
- ???
- Return: ???
- Note: called by Compaq's MTX132.COM, which places the QVision in 132-column
- mode
- --------!---Section--------------------------
- Interrupt List, part 2 of 18
- Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
- --------V-10BF--CX0000-----------------------
- INT 10 - Athena Digital HGCIBM.COM - INSTALLATION CHECK
- AH = BFh
- CX = 0000h (???)
- Return: CX = 0202h
- DL = ??? (internal data, possibly version number)
- --------b-10BF00-----------------------------
- INT 10 - VIDEO - Compaq Extensions - SELECT EXTERNAL MONITOR
- AX = BF00h
- Return: nothing
- Desc: specify that the external monitor become the active monitor
- Note: all registers preserved and the internal monitor is blanked
- SeeAlso: AX=BF01h,AX=BF12h,AH=12h/BL=35h
- --------b-10BF01-----------------------------
- INT 10 - VIDEO - Compaq Extensions - SELECT INTERNAL MONITOR
- AX = BF01h
- Return: nothing
- Desc: specify that the internal monitor become the active monitor
- Note: all registers preserved and the external monitor is blanked
- SeeAlso: AX=BF00h,AX=BF12h,AH=12h/BL=35h
- --------b-10BF02-----------------------------
- INT 10 - VIDEO - Compaq Extensions - SET MASTER MODE OF CURRENT CONTROLLER
- AX = BF02h
- BH = master mode
- 04h CGA
- 05h EGA
- 07h MDA
- Return: nothing
- SeeAlso: AX=BF03h
- --------b-10BF03BX0000-----------------------
- INT 10 - VIDEO - Compaq Extensions - GET ENVIRONMENT
- AX = BF03h
- BX = 0000h
- Return: BH = active monitor
- (00h = external, 01h = internal, 03h both, 04h neither)
- BL = master mode (see #00211)
- CH = ASIC type and version
- 00h (reserved, very early Compaq VGCs)
- 31h if QVision VGA
- CL = switchable VDU modes supported (see #00212)
- DH = internal monitor type (see #00213)
- DL = external monitor type (see #00213)
- SeeAlso: AX=1A00h,AX=BF00h,AX=BF01h,AX=BF02h,AX=BF11h
- (Table 00211)
- Values for Compaq video master mode:
- 00h switchable VDU not present
- 04h CGA
- 05h EGA
- 07h MDA
- 08h switchable LCD controller present
- 09h plasma VGA
- 0Ah TFT (active-matrix) VGA
- Bitfields for Compaq switchable VDU modes support:
- Bit(s) Description (Table 00212)
- 0 CGA supported
- 1,2 reserved (1)
- 3 MDA supported
- 4 BitBLT engine available
- 5 132-column support availble
- 6 640x480x256 mode available
- 7 8-bit DAC mode available
- (Table 00213)
- Values for Compaq monitor type:
- 00h none
- 01h dual-mode monitor
- 02h 5153 RGB monitor (RGBI 16-color)
- 03h Compaq Color monitor
- 04h 640x400 flat panel (Plasma CGA)
- 05h VGC monochrome
- 06h VGC color
- 07h 8-level mono LCD VGA (internal)
- 1024x768 mono VGA (external)
- 08h 16-level mono plasma VGA (internal)
- 1024x768 color VGA (external)
- 09h 4-level mono LCD CGA
- 0Ah 16-level mono LCD VGA
- 0Bh active-matrix color VGA
- 0Ch active-matrix mono VGA
- 0Dh STN color VGA
- --------b-10BF04-----------------------------
- INT 10 - VIDEO - Compaq Extensions - SET MODE SWITCH DELAY
- AX = BF04h
- BH = new state of delay (00h enabled, 01h disabled)
- Return: nothing
- Note: the 04/08/93 sytem ROM appears to use BL instead of BH; a future
- version of the list will provide more definite information
- SeeAlso: AX=BF05h
- --------b-10BF05-----------------------------
- INT 10 - VIDEO - Compaq Extensions - ENABLE/DISABLE DISPLAY
- AX = BF05h
- BH = new state of video
- 00h off
- 01h on
- Return: nothing
- Note: the 04/08/93 sytem ROM appears to use BL instead of BH; a future
- version of the list will provide more definite information
- SeeAlso: AH=12h/BL=36h,AX=BF04h
- --------b-10BF06-----------------------------
- INT 10 - VIDEO - Compaq SLT/286 - READ GRAY SCALE TABLE
- AX = BF06h
- CL = address to be read from gray scale table
- Return: AL = bit 3-0 - Value read from gray scale table
- CL = address to be read from gray scale table
- SeeAlso: AH=12h/BL=33h,AX=BF07h
- --------b-10BF07-----------------------------
- INT 10 - VIDEO - Compaq SLT/286 - WRITE GRAY SCALE TABLE
- AX = BF07h
- CH = value to write to gray scale table
- CL = address to be written to gray scale table
- Return: nothing
- SeeAlso: AX=BF06h,AX=BF08h
- --------b-10BF08-----------------------------
- INT 10 - VIDEO - Compaq SLT/286 - WRITE COLOR MIX REGISTERS
- AX = BF08h
- CH = bits 7-4 green weight
- bits 3-0 blue weight
- CL = bits 7-4 unused
- bits 3-0 red weight
- Return: nothing
- SeeAlso: AH=12h/BL=33h,AX=BF07h
- --------b-10BF09-----------------------------
- INT 10 - VIDEO - Compaq Extensions - TURN ON REVERSE VIDEO
- AX = BF09h
- Return: CF clear
- Notes: sets bit 6 of port 03CEh index 81h; in some cases also sets index 84h
- to 6Fh and index 83h to 04h
- supported by at least the QVision board and the LTE Lite ROM BIOS
- SeeAlso: AX=BF0Ah,AX=BF0Bh
- --------b-10BF0A-----------------------------
- INT 10 - VIDEO - Compaq Extensions - TURN OFF REVERSE VIDEO
- AX = BF0Ah
- Return: CF clear
- Notes: clears bit 6 of port 03CEh index 81h; in some cases also sets index 84h
- to 80h and index 83h to FBh
- supported by at least the QVision board and the LTE Lite ROM BIOS
- SeeAlso: AX=BF09h,AX=BF0Bh
- --------b-10BF0B-----------------------------
- INT 10 - VIDEO - Compaq Extensions - CHECK WHETHER VIDEO REVERSED
- AX = BF0Bh
- Return: CF clear
- AX = state (0000h normal video, 0001h reverse video)
- Note: supported by at least the QVision board and the LTE Lite ROM BIOS
- SeeAlso: AX=BF09h,AX=BF0Ah
- --------b-10BF0C-----------------------------
- INT 10 - VIDEO - Compaq Extensions - SET DAC 6-BIT MODE
- AX = BF0Ch
- Return: CF clear
- Desc: specify that video DAC registers use only six bits of color info
- Note: supported by at least the QVision board and the SystemPro XL ROM BIOS
- SeeAlso: AX=BF0Dh,AX=BF0Eh
- --------b-10BF0D-----------------------------
- INT 10 - VIDEO - Compaq Extensions - SET DAC 8-BIT MODE
- AX = BF0Dh
- Return: CF clear
- Desc: specify that video DAC registers use all eight bits of color info
- Note: supported by at least the QVision board and the SystemPro XL ROM BIOS
- SeeAlso: AX=BF0Ch,AX=BF0Eh
- --------b-10BF0E-----------------------------
- INT 10 - VIDEO - Compaq Extensions - CHECK DAC 6-BIT/8-BIT mode
- AX = BF0Eh
- Return: CF clear
- AL = DAC mode
- 00h in 6-bit mode
- 01h in 8-bit mode
- Note: supported by at least the QVision board and the SystemPro XL ROM BIOS
- SeeAlso: AX=BF0Ch,AX=BF0Dh
- --------b-10BF0F-----------------------------
- INT 10 - VIDEO - Compaq Extensions - SET HIGH ADRESS MAP REGISTER
- AX = BF0Fh
- BX = high address map location in megabytes, or
- 0000h to disable high address map, or
- FFFFh to let ROM configure high address map
- Return: CF clear
- AX = previous value of high address map register
- Notes: supported by at least the QVision board and the SystemPro XL and LTE
- Lite ROM BIOSes
- SeeAlso: AX=BF10h
- --------b-10BF10-----------------------------
- INT 10 - VIDEO - Compaq Extensions - GET HIGH ADDRESS MAP REGISTER
- AX = BF10h
- Return: CF clear
- AX = current value of high address map register
- Notes: supported by at least the QVision board and the SystemPro XL and LTE
- Lite ROM BIOSes
- the Compaq QVision documentation (October 1993) says the value is
- returned in BX, but this appears to be one of many typos
- SeeAlso: AX=BF0Fh
- --------b-10BF11-----------------------------
- INT 10 - VIDEO - Compaq Extensions - GET EXTENDED ENVIRONMENT
- AX = BF11h
- Return: AL = BFh if supported
- CF clear
- ES:DI -> ASCII signature "COMPAQ"
- ES:SI -> advanced functionality table (see #00214)
- Note: supported by at least the QVision board and the LTE Lite and ProSignia
- ROM BIOSes
- SeeAlso: AX=1A00h,AX=BF03h
- Bitfields for Compaq advanced video functionality:
- Bit(s) Description (Table 00214)
- 31 future graphics extensions (reserved, set to 0)
- 30-16 reserved
- 15-12 available video memory in 256K blocks, less one (0000 = 256K, etc.)
- 11-8 reserved
- 7 QVision modes supported
- 6 Advanced VGA modes supported
- 5 Accelerated VGA modes supported
- 4 standard VGA modes supported
- 3-2 reserved
- 1 132-column modes supported
- 0 reserved
- --------b-10BF12-----------------------------
- INT 10 - VIDEO - Compaq Extensions - NEW ACTIVE MONITOR
- AX = BF12h
- BH reserved
- BL = function mask (see #00215)
- Return: CF clear
- Notes: this function is a NOP if the VGA subsystem is inactive or the current
- Display Combination Code is 10h or higher
- supported by at least the QVision board and the LTE Lite and ProSignia
- ROM BIOSes
- SeeAlso: AX=BF01h,AX=BF02h,#00733
- Bitfields for function mask:
- Bit(s) Description (Table 00215)
- 7 command mode
- if set, bits 1 and 0 make the monitor active when set
- if clear, bits 1 and 0 toggle the monitor's state when set
- 6-2 reserved
- 1 internal monitor
- 0 external monitor
- --------b-10BF13-----------------------------
- INT 10 - VIDEO - Compaq QVision - GAMMA CORRECTION
- AX = BF13h
- BL = subfunction
- 00h load gamma correction table for true-color mode
- DS = BIOS data segment
- 01h set palette RAM bypass
- BH = 00h
- Return: nothing
- Note: these functions must be called after a video mode set, and are in
- effect only for the current video mode
- SeeAlso: #00733
- --------V-10BFA0BXADAD-----------------------
- INT 10 - VIDEO - Compaq ADAPT.COM - INSTALLATION CHECK
- AX = BFA0h
- BX = ADADh
- Return: AX = BDBDh if newer ADAPT.COM installed
- BX = BCD version (BH = major, BL = minor)
- CL = ???
- CH = ???
- DL = ???
- AX = ADADh if older version of ADAPT.COM installed
- Program: ADAPT is Compaq's Advanced Display Attribute Programming Tool, an
- optionally-resident utility for setting display colors and cursor
- size; when resident, it also includes a screen blanker
- SeeAlso: AX=BFA1h,AX=BFA2h,AX=DFA5h
- Index: screen saver;ADAPT
- --------V-10BFA1-----------------------------
- INT 10 - VIDEO - Compaq ADAPT.COM - GET ???
- AX = BFA1h
- Return: AX = BDBEh if supported
- CH = current value of ???
- DL = current value of ???
- SeeAlso: AX=BFA0h,AX=BFA2h
- --------V-10BFA2-----------------------------
- INT 10 - VIDEO - Compaq ADAPT.COM - SET ???
- AX = BFA2h
- CH = new value for ???
- DL = new value for ???
- Return: AX = BDBEh if supported
- SeeAlso: AX=BFA0h,AX=BFA1h
- --------A-10C0-------------------------------
- INT 10 - CU Writer v1.4 - GO TO TEXT ROW AND COLUMN
- AH = C0h
- ???
- Return: ???
- SeeAlso: AH=B1h,AH=C1h,AH=C2h,AH=C3h,AH=C4h
- --------V-10C000-----------------------------
- INT 10 - S3 SpeedUp v3.00+ - INSTALLATION CHECK
- AX = C000h
- Return: AX = FFFFh if installed
- DX = version number (binary, DH=major, DL=minor)
- BX = resident code segment
- Program: S3SPDUP is a freeware TSR by Dietmar Meschede to improve the speed
- of chained video modes (both VESA and VGA Mode 13) on S3-chipset
- video cards
- SeeAlso: AX=C001h,AX=C002h,AX=C003h,AX=D000h"S3VBE"
- --------V-10C001-----------------------------
- INT 10 - S3 SpeedUp v3.00+ - GET ACTIVE OPTIONS
- AX = C001h
- Return: AX = FFFFh if function supported
- BX = currently active options (see #00216)
- SeeAlso: AX=C000h,AX=C002h,AX=C003h
- Bitfields for S3SpeedUp options:
- Bit(s) Description (Table 00216)
- 0 speed up banked VESA modes
- 1 speed up 320x200 VGA mode 13
- SeeAlso: #00222
- --------V-10C002-----------------------------
- INT 10 - S3 SpeedUp v3.00+ - SET ACTIVE OPTIONS
- AX = C002h
- BX = new value for active options (see #00216)
- Return: AX = FFFFh if function supported
- SeeAlso: AX=C000h,AX=C001h,AX=C003h,AX=D003h"S3VBE"
- --------V-10C003-----------------------------
- INT 10 - S3 SpeedUp v3.10+ - GET FLAGS
- AX = C003h
- Return: AX = FFFFh if function supported
- BX = flags
- bit 0: SpeedUp is active
- bit 1: Windows run after SpeedUp
- SeeAlso: AX=C000h,AX=C001h,AX=C002h,AX=D005h"S3VBE"
- --------V-10C004-----------------------------
- INT 10 - S3 SpeedUp v3.10+ - RESERVED FUNCTIONS
- AX = C004h-C0FFh
- Return: AX = 5555h
- SeeAlso: AX=C000h
- --------A-10C1-------------------------------
- INT 10 - CU Writer v1.4 - OUTPUT TEXT
- AH = C1h
- ???
- Return: ???
- SeeAlso: AH=C0h,AH=C2h,AH=C3h,AH=C4h
- --------A-10C2-------------------------------
- INT 10 - CU Writer v1.4 - REVERSE TEXT
- AH = C2h
- ???
- Return: ???
- SeeAlso: AH=C0h,AH=C1h,AH=C3h,AH=C4h
- --------A-10C3-------------------------------
- INT 10 - CU Writer v1.4 - TEXT BAR
- AH = C3h
- ???
- Return: ???
- SeeAlso: AH=C0h,AH=C1h,AH=C4h
- --------A-10C4-------------------------------
- INT 10 - CU Writer v1.4 - TEXT MENU
- AH = C4h
- ???
- Return: ???
- SeeAlso: AH=C0h,AH=C1h,AH=C3h,AH=D0h
- --------V-10CB00-----------------------------
- INT 10 - UNCHAIN - SAVE CURRENT VGA REGISTERS
- AX = CB00h
- Note: combined with AX=CB06h, this function permits the use of video mode
- 13h together with the VGA's unchained mode
- SeeAlso: AX=CB06h,AX=CBFFh
- --------V-10CB01-----------------------------
- INT 10 - UNCHAIN - UPDATE PAGE 1 OFFSET
- AX = CB01h
- BX = offset of page 1
- Return: nothing
- Desc: inform UNCHAIN of the location of video page 1 in video memory; the
- default is 0000h
- SeeAlso: AX=CB02h,AX=CB03h,AX=CB04h,AX=CBFFh
- --------V-10CB02-----------------------------
- INT 10 - UNCHAIN - UPDATE PAGE 2 OFFSET
- AX = CB02h
- BX = offset of page 2
- Return: nothing
- Desc: inform UNCHAIN of the location of video page 2 in video memory; the
- default is 3E80h (16000, for 320x200)
- SeeAlso: AX=CB00h,AX=CB01h,AX=CB03h,AX=CB04h
- --------V-10CB03-----------------------------
- INT 10 - UNCHAIN - UPDATE PAGE 3 OFFSET
- AX = CB03h
- BX = offset of page 3
- Return: nothing
- Desc: inform UNCHAIN of the location of video page 3 in video memory; the
- default is 7D00h (32000, for 320x200)
- SeeAlso: AX=CB01h,AX=CB02h,AX=CB04h
- --------V-10CB04-----------------------------
- INT 10 - UNCHAIN - UPDATE PAGE 4 OFFSET
- AX = CB04h
- BX = offset of page 4
- Return: nothing
- Desc: inform UNCHAIN of the location of video page 4 in video memory; the
- default is BB80h (48000, for 320x200)
- SeeAlso: AX=CB01h,AX=CB02h,AX=CB03h,AX=CB05h
- --------V-10CB05-----------------------------
- INT 10 - UNCHAIN - SAVE PALETTE
- AX = CB05h
- Return: nothing
- SeeAlso: AX=CB00h,AX=CB06h
- --------V-10CB06-----------------------------
- INT 10 - UNCHAIN - RESTORE VGA REGISTERS
- AX = CB06h
- Return: nothing
- SeeAlso: AX=CB00h,AX=CB05h,AX=CBFFh
- --------V-10CBFF-----------------------------
- INT 10 - UNCHAIN - INSTALLATION CHECK
- AX = CBFFh
- Return: AX = CCBBh if installed
- Program: UNCHAIN is a TSR by Colin Buckley which permits use of Borland
- development tools with Mode X video in the absence of a second
- monitor
- SeeAlso: AX=CB00h,AX=CB01h,AX=CB06h
- --------V-10CC00-----------------------------
- INT 10 - VIDEO - UltraVision - GET STATUS (INSTALLATION CHECK)
- AX = CC00h
- SI = magic value 0000h (if checking version)
- Return: CX = product signature
- ABCDh UltraVision
- 5546h ('UF') UltraFont
- AL = Ultravision extensions
- 00h enabled
- FFh disabled
- AH = card designator
- BX:00F0h -> palette values (for compatibility with NEWFONT)
- DX = support for high resolution modes
- 00h not active
- 01h active
- SI = UltraVision version number (v1.2+), high byte=major,low byte=minor
- unchanged for versions <1.2
- Note: UltraFont is a simplified version of UltraVision for Toshiba;
- only the signature in CX and the status in AL will be returned
- SeeAlso: AX=CC01h,AX=CC02h
- --------V-10CC01-----------------------------
- INT 10 - VIDEO - UltraVision - DISABLE EXTENSIONS
- AX = CC01h
- Return: nothing
- Notes: subsequent BIOS calls will be passed through to previous handler
- should be followed immediately by mode set to restore normal EGA/VGA
- state
- SeeAlso: AX=CC02h
- --------V-10CC02-----------------------------
- INT 10 - VIDEO - UltraVision - ENABLE EXTENSIONS
- AX = CC02h
- Return: nothing
- Note: should be followed immediately by mode set to restore previous
- UltraVision state
- SeeAlso: AX=CC01h
- --------U-10CCAB-----------------------------
- INT 10 - HiFont - INSTALLATION CHECK
- AX = CCABh
- Return: AX = ABCCh
- Program: HiFont is a 8x19 font driver for standard VGA by Solar Designer
- --------V-10CD00-----------------------------
- INT 10 - VIDEO - UltraVision - LOAD ULTRAVISION PALETTE (color EGA,VGA)
- AX = CD00h
- CL = palette table number (01h-07h for v1.x, 01h-0Fh for v2+)
- DS:DX -> 16-byte palette register list (colors for registers 00h-0Fh)
- Return: nothing
- Notes: if palette locking is in effect for the current mode, the new colors
- will be displayed immediately; otherwise, the system reverts to the
- default palette
- palette table 0 is reserved for the default palette and cannot be set
- UltraVision always sets the border color to black
- SeeAlso: AX=CD01h,AX=CD02h
- --------V-10CD01-----------------------------
- INT 10 - VIDEO - UltraVision - SET PALETTE LOCKING STATUS (color EGA,VGA)
- AX = CD01h
- CL = palette locking value
- 00h none
- 01h text modes only (02h,03h)
- FFh all modes (all standard color text and graphics modes)
- Return: nothing
- Notes: intended for video modes with 16 or fewer colors
- SeeAlso: AX=1000h,AX=1002h,AX=CD00h,AX=CD03h
- --------V-10CD02-----------------------------
- INT 10 - VIDEO - UltraVision - GET ULTRAVISION PALETTE (EGA,VGA)
- AX = CD02h
- Return: CL = palette table number
- DS:DX -> 17-byte palette register list (see #00217)
- DS:SI -> current font names table (see #00218,#00219)
- Note: only the font names are valid on monochrome EGA systems
- SeeAlso: AX=1009h,AX=CD00h
- Format of UltraVision palette register list:
- Offset Size Description (Table 00217)
- 00h 16 BYTEs colors for palette registers 00h through 0Fh
- 10h BYTE border color
- Format of UltraVision v2+ current font names table:
- Offset Size standard EGA HiRes EGA VGA (Table 00218)
- 00h 8 BYTEs N/A F19 font F20 font
- 08h 8 BYTEs F14 font F14 font F14 font
- 10h 8 BYTEs N/A F11 font F10 font
- 18h 8 BYTEs F8 font F8 font F8 font
- Format of UltraVision v1.x current font names table:
- Offset Size HiRes EGA (Table 00219)
- 00h 8 BYTEs F19/F14 font
- 08h 8 BYTEs F11/F8 font
- --------V-10CD03-----------------------------
- INT 10 - VIDEO - UltraVision - GET PALETTE LOCKING STATUS (color EGA,VGA)
- AX = CD03h
- Return: CL = palette locking value
- 00h none
- 01h text modes only
- FFh all modes
- SeeAlso: AX=CD01h
- --------V-10CD04-----------------------------
- INT 10 - VIDEO - UltraVision - GET UltraVision TEXT MODE (EGA,VGA)
- AX = CD04h
- Return: AL = mode number (see #00220)
- SeeAlso: AH=0Fh,AX=CC00h,AH=CDh
- (Table 00220)
- Values for UltraVision video mode number:
- 11h 80x25
- 12h 80x43, 80x50
- 13h 80x34, 80x36
- 14h 80x60, 80x63
- 19h 94x25
- 1Ah 94x43, 94x50
- 1Bh 94x36
- 1Ch 94x63
- 21h 108x25
- 22h 108x43, 108x50
- 23h 107x34, 108x36
- 24h 108x60, 108x63
- 31h 120x25
- 32h 120x43, 120x50
- 33h 132x25
- 34h 132x44, 132x50
- 39h 120x36
- 3Ah 120x63
- 3Bh 132x36
- 3Ch 132x60
- Index: video modes;UltraVision
- --------V-10CD05-----------------------------
- INT 10 - VIDEO - UltraVision - SET CURSOR TYPE (EGA,VGA)
- AX = CD05h
- CL = type
- 00h line cursor
- FFh box cursor
- Return: nothing
- Note: sets default cursor type for text-based programs
- SeeAlso: AH=01h,AX=CD06h
- --------V-10CD06-----------------------------
- INT 10 - VIDEO - UltraVision - GET CURSOR TYPE (EGA,VGA)
- AX = CD06h
- Return: CL = type
- 00h line cursor
- FFh box cursor
- SeeAlso: AH=03h,AX=CD05h
- --------V-10CD07-----------------------------
- INT 10 - VIDEO - UltraVision v1.2+ - SET UNDERLINE STATUS (EGA,VGA)
- AX = CD07h
- CL = hardware underline status (see #00221)
- BL = foreground color for normal text (FFh = current)
- BH = foreground color for bright text (FFh = current)
- Return: CL = hardware underline status
- BL = current foreground color for normal text
- BH = current foreground color for bright text
- Notes: when underline or strikeout is enabled in color text modes, the
- specified colors will be assigned temporarily to colors 01h and 09h,
- allowing affected text to match non-underlined text. The color
- remapping uses values from the current onscreen palette regardless
- of the palette locking status (see AX=CD01h)
- specify the standard colors (BL=01h,BH=09h) to enable underline or
- strikeout without color remapping
- SeeAlso: AX=CD08h
- (Table 00221)
- Values for hardware underline status:
- 00h off (color systems only)
- 01h underline below characters
- 02h strike through characters
- --------V-10CD08-----------------------------
- INT 10 - VIDEO - UltraVision v1.2+ - GET UNDERLINE STATUS (EGA,VGA)
- AX = CD08h
- Return: CL = hardware underline status (see #00221)
- BL = foreground color for normal text
- BH = foreground color for bright text
- Note: only CL is valid on monochrome EGA systems
- SeeAlso: AX=CD07h
- --------V-10CD10-----------------------------
- INT 10 - VIDEO - UltraVision - LOAD USER FONT (EGA,VGA)
- AX = CD10h
- BH = bytes per character (08h,0Ah,0Bh,0Eh,13h,14h)
- CX = ABCDh load 9xN alternate font (v2+)
- else number of characters to load
- DX = character offset into font table
- DS:SI -> 8-byte ASCII font name
- ES:BP -> font definitions
- Return: AX = FFFFh if invalid font parameters
- Notes: loads the designated characters into UltraVision's resident font area
- should be followed by a video mode set to reload character generator
- SeeAlso: AX=1100h,AX=1103h
- --------V-10CD-------------------------------
- INT 10 - VIDEO - UltraVision - SET ULTRAVISION TEXT MODE (EGA,VGA)
- AH = CDh
- AL = text mode number (see #00220)
- Return: AX = CDCDh if invalid mode
- SeeAlso: AX=CD04h
- --------A-10D0-------------------------------
- INT 10 - CU Writer v1.4 - LOAD PICTURE
- AH = D0h
- ???
- Return: ???
- SeeAlso: AH=B0h"CU Writer",AH=C4h
- --------V-10D0-------------------------------
- INT 10 U - VIDEO - HP 100LX/200LX - SET ZOOM MODE
- AH = D0h
- AL = zoom mode
- 02h 80x25 mono
- 03h 80x25 color
- 80h 64x18 mono
- 81h 64x18 color
- 82h 40x25 mono
- 83h 40x25 color
- 84h 40x16 mono
- 85h 40x16 color
- Return: nothing
- Note: zoom mode can only be changed within zoom modes of the same color
- scheme; if needed, set to mono/color with AH=00h,AL=02h/03h; with
- mono video modes AL=07h or AL=21h only 80x25 and 40x16 will work
- the current zoom mode is stored in the BIOS data area at 0040h:009Fh
- SeeAlso: AH=D1h,AH=D4h
- --------V-10D000-----------------------------
- INT 10 - S3VBE/Core2.0 v3.00+ - INSTALLATION CHECK
- AX = D000h
- Return: AX = FFFFh if installed
- BX = resident code segment
- DX = version (binary, DH = major, DL = minor)
- Program: S3VBE/Core2.0 is a freeware TSR by Dietmar Meschede to provide
- VESA 2.0 services on S3-based video cards with VESA 1.2 BIOS
- SeeAlso: AX=D001h"S3VBE",AX=D002h"S3VBE",AX=D003h"S3VBE",AX=D005h"S3VBE"
- --------V-10D001-----------------------------
- INT 10 - S3VBE/Core2.0 v3.00+ - GET ACTIVE OPTIONS
- AX = D001h
- Return: AX = FFFFh if supported
- BX = currently active options (see #00222)
- SeeAlso: AX=D000h"S3VBE",AX=D002h"S3VBE"
- Bitfields for S3VBE options:
- Bit(s) Description (Table 00222)
- 0 VESA VBE v2.0 extensions enabled
- 1 linear frame buffer enabled
- 2 low-resolution video mode support enabled
- 8 never clear video memory during VBE mode set (v3.10+)
- ---debug options---
- 12 report VBE version 1.2 (v3.10+)
- 13 always fail AX=4F0Ah (v3.10+)
- 14 don't copy video mode list (v3.12+)
- SeeAlso: #00216
- --------V-10D002-----------------------------
- INT 10 - S3VBE/Core2.0 v3.00+ - SET ACTIVE OPTIONS
- AX = D002h
- BX = new active options (see #00222)
- Return: AX = FFFFh if supported
- SeeAlso: AX=D000h"S3VBE",AX=D001h"S3VBE"
- --------V-10D003-----------------------------
- INT 10 U - S3VBE/Core2.0 v3.10+ - GET VBE/Core CAPABILITIES
- AX = D003h
- Return: AX = FFFFh if supported
- BX = capabilities
- bit 0: SpeedUp = activate/deactivate linear addressing at
- A0000h for VBE functions 04h/05h
- SeeAlso: AX=D000h"S3VBE",AX=D001h"S3VBE",AX=D004h"S3VBE",AX=D005h"S3VBE"
- --------V-10D004-----------------------------
- INT 10 U - S3VBE/Core2.0 v3.10+ - ACTIVATE SPEED-UP
- AX = D004h
- Return: AX = FFFFh if supported
- BX = status
- 0000h SpeedUp activated
- 0001h SpeedUp not possible (wrong memory organization for mode)
- 0002h SpeedUp not possible (linear frame buffer active)
- Note: called by S3 SpeedUp (see AX=C000h)
- SeeAlso: AX=C000h"SpeedUp",AX=D000h"S3VBE",AX=D003h"S3VBE",AX=D005h"S3VBE"
- --------V-10D005-----------------------------
- INT 10 U - S3VBE/Core2.0 v3.10+ - DEACTIVATE SPEED-UP
- AX = D005h
- Return: AX = FFFFh if supported
- BX = status
- 0000h SpeedUp deactivated
- 0001h SpeedUp not possible (wrong memory organization for mode)
- 0002h SpeedUp not possible (linear frame buffer active)
- Notes: called by S3 SpeedUp (see AX=C000h)
- functions 06h-FFh (e.g. AX=D006h-D0FFh) are considered reserved by
- v3.10+ and return AX=5555h
- SeeAlso: AX=C000h"SpeedUp",AX=D000h"S3VBE",AX=D003h"S3VBE",AX=D004h"S3VBE"
- --------V-10D1-------------------------------
- INT 10 U - VIDEO - HP 100LX/200LX - INTERNAL - ???
- AH = D1h
- AL = 01h
- Return: ???
- Note: called by AH=D0h
- SeeAlso: AH=D0h,AH=D4h
- --------V-10D4-------------------------------
- INT 10 U - VIDEO - HP 100LX/200LX - INTERNAL - ???
- AH = D4h
- AL = 29h
- Return: ???
- Note: called by AH=D0h
- SeeAlso: AH=D0h,AH=D1h
- --------V-10D5-------------------------------
- INT 10 - Netroom SCRNCLK - ???
- AH = D5h
- ???
- Return: ???
- Program: SCRNCLK is a "cloaked" screen accelerator included with Netroom
- --------t-10DAAD-----------------------------
- INT 10 - TSRUNIT v1.10 - INSTALLATION CHECK
- AX = DAADh
- BX = check signature (different for each TSR)
- CX = 0000h
- Return: CX = return signature (nonzero) if installed
- ES = program segment prefix
- Program: TSRUNIT is a Turbo Pascal unit for creating TSRs by Nir Sofer
- --------V-10DFA5-----------------------------
- INT 10 U - VIDEO - Compaq ADAPT.COM - GET ??? DATA AREA
- AX = DFA5h
- Return: AX = BDBFh if supported
- ES:DI -> ??? data area
- BX = ES
- SeeAlso: AX=BFA0h
- --------V-10EE-------------------------------
- INT 10 - VIDEO - IBM "Private" Function
- AH = EEh
- SeeAlso: INT 13/AH=FFh"IBM"
- --------V-10EF-------------------------------
- INT 10 - VIDEO - MSHERC.COM - GET VIDEO ADAPTER TYPE AND MODE
- AH = EFh
- Return: DL = video adapter type
- 00h original Hercules
- 01h Hercules Plus (port 03BAh reads x001xxxxx)
- 02h Hercules InColor (port 03BAh reads x101xxxxx)
- FFh not a Hercules-compatible card (port 03BAh bit 7 not pulsing)
- DH = memory mode byte
- 00h "half" mode
- 01h "full" mode
- FFh not a Hercules-compatible card
- Program: MSHERC.COM/QBHERC.COM is a support program for the Microsoft Quick
- languages which makes their graphics libraries compatible with a
- Hercules card by adding video modes 08h and 88h, and supporting
- text in the new graphics modes.
- Notes: while in mode 08h or 88h, INT 10 supports the Hercules card much like
- a CGA.
- MSHERC performs an installation check by setting DL=FFh and testing
- whether it has been changed on return, which causes it to reinstall
- itself when no HGC is present (or HGC emulation has temporarily been
- disabled); a better installation check would be to use DX=80FFh and
- check whether DX has been changed
- reportedly returns DH=00h on some not-entirely-Hercules-compatible
- cards
- Index: installation check;MSHERC
- --------V-10F0-------------------------------
- INT 10 - EGA Register Interface Library - READ ONE REGISTER
- AH = F0h
- BL = register number
- BH = 00h
- DX = group index (see #00223)
- Return: BL = data
- Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
- compatibility box, and others; it is used for software virtualization
- of write-only registers on an EGA video adapter, so that multiple
- programs may peacefully coexist without clobbering each other's
- display settings
- SeeAlso: AH=F1h"EGA",AH=F2h"EGA",AH=FAh"EGA",INT 2F/AX=BC00h
- (Table 00223)
- Values for group index:
- Pointer/data chips
- 00h CRT Controller (25 reg) 3B4h mono modes, 3D4h color modes
- 08h Sequencer (5 registers) 3C4h
- 10h Graphics Controller (9 registers) 3CEh
- 18h Attribute Controller (20 registers) 3C0h
- Single registers
- 20h Miscellaneous Output register 3C2h
- 28h Feature Control register (3BAh mono modes, 3DAh color modes)
- 30h Graphics 1 Position register 3CCh
- 38h Graphics 2 Position register 3CAh
- --------V-10F0-------------------------------
- INT 10 - VHRBIOS.SYS - INSTALLATION CHECK
- AH = F0h
- Return: BX = 4F4Bh ('OK')
- Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius"
- black&white A4/portrait monitor
- SeeAlso: AH=F1h"VHRBIOS.SYS",AH=F2h"VHRBIOS.SYS",AH=F4h"VHRBIOS.SYS"
- SeeAlso: AH=96h"VHRBIOS.SYS"
- --------V-10F1-------------------------------
- INT 10 - EGA Register Interface Library - WRITE ONE REGISTER
- AH = F1h
- DX = group index (see #00223)
- if single register:
- BL = value to write
- otherwise
- BL = register number
- BH = value to write
- Return: BL = data
- Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
- compatibility box, and others
- SeeAlso: AX=7F05h,AH=F0h"EGA",AH=F3h"EGA",AH=FAh"EGA"
- --------V-10F1-------------------------------
- INT 10 - VHRBIOS.SYS - SET REVERSE VIDEO
- AH = F1h
- AL = new video state
- (bit 5 set for black text on white, clear for white on black)
- Return: ???
- Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius"
- black&white A4/portrait monitor
- SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F3h"VHRBIOS.SYS"
- --------V-10F2-------------------------------
- INT 10 - EGA Register Interface Library - READ REGISTER RANGE
- AH = F2h
- CH = starting register number
- CL = number of registers (>1)
- DX = group index (00h,08h,10h,18h) (see #00223)
- ES:BX -> buffer, CL bytes
- Return: nothing
- Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
- compatibility box, and others
- SeeAlso: AH=F0h"EGA",AH=F3h"EGA",AH=FAh"EGA"
- --------V-10F2-------------------------------
- INT 10 - VHRBIOS.SYS - ???
- AH = F2h
- Return: ???
- Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius"
- black&white A4/portrait monitor
- SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F4h"VHRBIOS.SYS"
- --------V-10F3-------------------------------
- INT 10 - EGA Register Interface Library - WRITE REGISTER RANGE
- AH = F3h
- CH = starting register
- CL = number of registers (>1)
- DX = group index (00h,08h,10h,18h) (see #00223)
- ES:BX -> buffer, CL bytes
- Return: nothing
- Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
- compatibility box, and others
- SeeAlso: AX=7F05h,AH=F1h"EGA",AH=F2h"EGA",AH=F4h"EGA"
- --------V-10F3-------------------------------
- INT 10 - VHRBIOS.SYS - SWITCH BETWEEN DUAL MONITORS???
- AH = F3h
- Return: ???
- Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius"
- black&white A4/portrait monitor
- SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F4h"VHRBIOS.SYS",AH=F6h"VHRBIOS.SYS"
- --------V-10F4-------------------------------
- INT 10 - EGA Register Interface Library - READ REGISTER SET
- AH = F4h
- CX = number of registers to read (>1)
- ES:BX -> table of register records (see #00224)
- Return: register values in table filled in
- Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
- compatibility box, and others
- SeeAlso: AH=F0h"EGA",AH=F2h"EGA",AH=F5h"EGA"
- Format of EGA RIL entries in table of register records:
- Offset Size Description (Table 00224)
- 00h WORD group index
- Pointer/data chips
- 00h CRTC (3B4h mono modes, 3D4h color modes)
- 08h Sequencer 3C4h
- 10h Graphics Controller 3CEh
- 18h Attribute Controller 3C0h
- Single registers
- 20h Miscellaneous Output register 3C2h
- 28h Feature Control register (3BAh mono modes, 3DAh color)
- 30h Graphics 1 Position register 3CCh
- 38h Graphics 2 Position register 3CAh
- 02h BYTE register number (0 for single registers)
- 03h BYTE register value
- --------V-10F4-------------------------------
- INT 10 - VHRBIOS.SYS - GET VERSION
- AH = F4h
- Return: AX = driver version (AH = major, AL = minor)
- Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius"
- black&white A4/portrait monitor
- SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F5h"VHRBIOS.SYS"
- --------V-10F5-------------------------------
- INT 10 - EGA Register Interface Library - WRITE REGISTER SET
- AH = F5h
- CX = number of registers to write (>1)
- ES:BX -> table of records (see #00224)
- Return: nothing
- Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
- compatibility box, and others
- SeeAlso: AX=7F05h,AH=F1h"EGA",AH=F3h"EGA",AH=F4h"EGA"
- --------V-10F5-------------------------------
- INT 10 - VHRBIOS.SYS - GET VENDOR ID
- AH = F5h
- Return: AXBX = vendor ID (4D44h:5349h = 'MDSI' for Micro Display Systems Inc.)
- Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius"
- black&white A4/portrait monitor
- SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F4h"VHRBIOS.SYS",AH=F6h"VHRBIOS.SYS"
- --------V-10F6-------------------------------
- INT 10 - EGA Register Interface Library - REVERT TO DEFAULT REGISTERS
- AH = F6h
- Return: nothing
- Note: provided by the Microsoft Mouse driver, OS/2 compatibility box, and
- others
- SeeAlso: AH=F5h"EGA",AH=F7h"EGA"
- --------V-10F6-------------------------------
- INT 10 - VHRBIOS.SYS - GET INFO
- AH = F6h
- AL = what to get
- 00h device driver state
- Return: AX = device driver state
- 01h video mode info
- Return: AL = video mode
- DH = screen height in rows
- DL = screen width in columns
- Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius"
- black&white A4/portrait monitor
- SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F4h"VHRBIOS.SYS",AH=96h"VHRBIOS.SYS
- --------V-10F7-------------------------------
- INT 10 - EGA Register Interface Library - DEFINE DEFAULT REGISTER TABLE
- AH = F7h
- DX = port number
- Pointer/data chips
- 00h CRTC (3B4h mono modes, 3D4h color modes)
- 08h Sequencer 3C4h
- 10h Graphics Controller 3CEh
- 18h Attribute Controller 3C0h
- Single registers
- 20h Miscellaneous Output register 3C2h
- 28h Feature Control register (3BAh mono modes, 3DAh color modes)
- 30h Graphics 1 Position register 3CCh
- 38h Graphics 2 Position register 3CAh
- ES:BX -> table of one-byte entries, one byte to be written to each
- register
- Return: nothing
- Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
- compatibility box, and others
- SeeAlso: AH=F0h"EGA",AH=F6h"EGA"
- --------V-10FA--BX0000-----------------------
- INT 10 - EGA Register Interface Library - INTERROGATE DRIVER
- AH = FAh
- BX = 0000h
- Return: BX = 0000h if RIL driver not present
- ES:BX -> EGA Register Interface version number, if present:
- byte 0 = major release number
- byte 1 = minor release number
- Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
- compatibility box, and others
- SeeAlso: AH=F0h"EGA",AH=F6h"EGA",INT 2F/AX=BC00h
- --------K-10FA-------------------------------
- INT 10 - FASTBUFF.COM - INSTALLATION CHECK
- AH = FAh
- Return: AX = 00FAh if installed
- ES = segment of resident code
- Program: FASTBUFF.COM is a keyboard speedup/screen blanking utility by David
- Steiner
- Index: screen saver;FASTBUFF
- --------V-10FE-------------------------------
- INT 10 - TopView - GET SHADOW BUFFER
- AH = FEh
- ES:DI -> assumed video buffer
- B800h:0000h color text/CGA graphics, B000h:0000h mono text,
- or A000h:0000h EGA/VGA graphics (RSIS environments only)
- Return: ES:DI -> actual video buffer for calling process
- Desc: Determine the address of the virtual screen to which the program
- should write instead of the actual video memory; this permits
- programs to be multitasked without interfering with each other's
- output, and allows memory managers to move the video memory to
- permit larger programs to be loaded.
- Notes: if no multitasker or RSIS-compliant environment is installed, ES:DI is
- returned unchanged; RSIS is the Relocated Screen Interface
- Specification
- for display pages other than 0, use AH=05h and AH=0Fh to determine
- whether a particular page exists
- TopView requires a call to AH=FFh to notify it that the screen has
- changed; DESQview will check for changes itself until the first call
- to AH=FFh
- SeeAlso: AH=05h,AX=5201h,AH=FFh,INT 15/AX=1024h,INT 21/AH=2Bh"DESQview"
- SeeAlso: INT 21/AH=ECh"DoubleDOS"
- --------V-10FF-------------------------------
- INT 10 - TopView - UPDATE SCREEN FROM SHADOW BUFFER
- AH = FFh
- CX = number of consecutive changed characters
- ES:DI -> first changed character in shadow buffer
- Return: nothing
- Notes: avoid CX=0000h
- DESQview will discontinue the automatic screen updating initiated by
- AH=FEh after this call
- not supported (ignored) by DESQview/X 1.0x
- SeeAlso: AH=93h,AH=FEh
- --------E-10FF-------------------------------
- INT 10 - DJ GO32.EXE 80386+ DOS extender - VIDEO EXTENSIONS
- AH = FFh
- AL = video mode (see #00225)
- Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
- GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
- SeeAlso: AH=00h,INT 21/AH=FFh"GO32"
- (Table 00225)
- Values for GO32 video mode number:
- 00h 80x25 text
- 01h default text
- 02h CXxDX text
- 03h biggest text
- 04h 320x200 graphics
- 05h default graphics
- 06h CXxDX graphics
- 07h biggest non-interlaced graphics
- 08h biggest graphics
- Index: video modes;GO32
- --------V-10FF-------------------------------
- INT 10 - VIDEO - Oak VGA BIOS v1.02+ - SET EMULATION
- AH = FFh
- AL = emulation
- 43h ('C') CGA emulation
- 45h ('E') EGA emulation
- 4Dh ('M') Hercules emulation
- 56h ('V') VGA emulation
- ES:DI -> signature string "Calamity"
- Return: VGA switched to suggested mode
- SeeAlso: AH=00h,AX=007Fh/BH=00h,AX=007Fh/BH=02h,AX=5F01h
- --------R-10FF00-----------------------------
- INT 10 - CARBON COPY PLUS v5.0 - CHECK IF CC CONNECTED TO CCHELP
- AX = FF00h
- Return: BL = state
- 00h not connected
- 01h connected
- SeeAlso: AX=FF01h,AX=FF02h
- --------R-10FF01-----------------------------
- INT 10 - CARBON COPY PLUS v5.0 - DISCONNECT AND RESET LINE
- AX = FF01h
- Return: nothing
- SeeAlso: AX=FF00h,AX=FF02h
- --------R-10FF02-----------------------------
- INT 10 - CARBON COPY PLUS v5.0 - GET LAST PHONE NUMBER DIALED
- AX = FF02h
- Return: ES:DI -> ASCIZ phone number
- SeeAlso: AX=FF00h,AX=FF01h
- --------C-11---------------------------------
- INT 11 - CPU-generated (80486+) - ALIGNMENT CHECK
- Desc: automatically generated by the CPU when the AC flag is set, the current
- privilege level is 3, and a misaligned memory access (WORD not on an
- even address or DWORD not on a multiple of 4) is made
- Note: not all V86 monitors allow the AC flag to be set, such as Turbo
- Debugger 386
- SeeAlso: INT 12"CPU"
- --------B-11---------------------------------
- INT 11 - BIOS - GET EQUIPMENT LIST
- Return: (E)AX = BIOS equipment list word (see #00226,#03215 at INT 4B"Tandy")
- Note: since older BIOSes do not know of the existence of EAX, the high word
- of EAX should be cleared before this call if any of the high bits
- will be tested
- SeeAlso: INT 4B"Tandy 2000",MEM 0040h:0010h
- Bitfields for BIOS equipment list:
- Bit(s) Description (Table 00226)
- 0 floppy disk(s) installed (number specified by bits 7-6)
- 1 80x87 coprocessor installed
- 3-2 number of 16K banks of RAM on motherboard (PC only)
- number of 64K banks of RAM on motherboard (XT only)
- 2 pointing device installed (PS)
- 3 unused (PS)
- 5-4 initial video mode
- 00 EGA, VGA, or PGA
- 01 40x25 color
- 10 80x25 color
- 11 80x25 monochrome
- 7-6 number of floppies installed less 1 (if bit 0 set)
- 8 DMA support installed (PCjr, Tandy 1400LT)
- DMA support *not* installed (Tandy 1000's)
- 11-9 number of serial ports installed
- 12 game port installed
- 13 serial printer attached (PCjr)
- internal modem installed (PC/Convertible)
- 15-14 number of parallel ports installed
- ---Compaq, Dell, and many other 386/486 machines--
- 23 page tables set so that Weitek coprocessor addressable in real mode
- 24 Weitek math coprocessor present
- ---Compaq Systempro---
- 25 internal DMA parallel port available
- 26 IRQ for internal DMA parallel port (if bit 25 set)
- 0 = IRQ5
- 1 = IRQ7
- 28-27 parallel port DMA channel
- 00 DMA channel 0
- 01 DMA channel 0 ???
- 10 reserved
- 11 DMA channel 3
- BUG: Award BIOS v4.50G and v4.51PG erroneously set bit 0 even if there are
- no floppy drives installed; use two calls to INT 13/AH=15h to
- determine whether any floppies are actually installed
- SeeAlso: INT 12"BIOS",#03215 at INT 4B"Tandy 2000"
- --------d-11----SI6A6A-----------------------
- INT 11 - Columbia Data Products Standard Device Level Protocol (SDLP) 1.6
- SI = 6A6Ah
- AH = command (see #00227)
- AL = SCSI Addressing (see #00228)
- Return: CF clear if successful
- DI = 6A6Ah if AH=01h on entry (maybe for all functions???)
- AH = ??? for command 01h
- CF set on error
- AL = error code
- SeeAlso: INT 21/AX=4402h"ASPI"
- (Table 00227)
- Values for SDLP command:
- 00h SDLP initialization
- 01h SDLP System Identify
- 02h simple read sectors
- 03h simple write sectors
- 04h simple verify sectors/seek to sector
- 05h get device size/type
- 06h ready unit
- 07h format unit
- 08h diagnostics
- 09h rewind
- 0Ah erase
- 0Bh write filemarks
- 0Ch space
- 0Dh prevent/allow media removal
- 0Eh load/unload media
- 0Fh reserved - returns good status
- 10h set block size
- 11h write setmark
- 12h set error level
- 13h get address of Request Sense Buffer
- 14h get SDLP error via Request Sense
- F0h Vendor Unique Function (WD7000-FASST2 only)
- FDh reset current SCSI HAC
- FEh get/set current SCSI HAC
- FFh execute SCSI command
- Bitfields for SDLP SCSI addressing:
- Bit(s) Description (Table 00228)
- 7-6 Host Adapter
- 5-3 SCSI Target ID
- 2-0 SCSI Target LUN (logical unit number)
- --------V-110225BX6900-----------------------
- INT 11 - Blank-It Screen Blanker - INSTALLATION CHECK
- AX = 0225h
- BX = 6900h
- Return: BL = 23h
- ES:DI -> ASCIZ "BLNKIT"
- Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems,
- Inc.
- SeeAlso: AX=0225h/BX=6902h,AX=0225h/BX=6908h,AX=0225h/BX=6909h,INT 14/AX=AA01h
- Index: screen saver;Blank-It
- --------V-110225BX6901-----------------------
- INT 11 - Blank-It Screen Blanker - SET TIMEOUT FOR SCREEN BLANKING
- AX = 0225h
- BX = 6901h
- CX = timeout in timer ticks (18.2/second) or 0000h to disable timeout
- largest value is 59 minutes (FBACh or 64428)
- Return: CF clear if successful
- DI = 6A6Ah (possibly also 6A6Ah for all following functions)
- AH = ???
- CF set on error
- AL = error code
- SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6904h
- Index: screen saver;Blank-It
- --------V-110225BX6902-----------------------
- INT 11 - Blank-It Screen Blanker - ENABLE THE SOFTWARE
- AX = 0225h
- BX = 6902h
- Return: CF clear if successful
- CF set on error
- AL = error code
- SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6903h
- Index: screen saver;Blank-It
- --------V-110225BX6903-----------------------
- INT 11 - Blank-It Screen Blanker - DISABLE THE SOFTWARE
- AX = 0225h
- BX = 6903h
- Return: CF clear if successful
- CF set on error
- AL = error code
- SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6902h
- Index: screen saver;Blank-It
- --------V-110225BX6904-----------------------
- INT 11 - Blank-It Screen Blanker - GET BLANKING TIMEOUT
- AX = 0225h
- BX = 6904h
- Return: CF clear if successful
- BX = timeout (see AX=0225h/BX=6901h)
- CF set on error
- AL = error code
- SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6901h
- Index: screen saver;Blank-It
- --------V-110225BX6905-----------------------
- INT 11 - Blank-It Screen Blanker - ENABLE WINDOWS COMPATIBILITY MODE
- AX = 0225h
- BX = 6905h
- Return: CF clear if successful
- CF set on error
- AL = error code
- SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6906h
- Index: screen saver;Blank-It
- --------V-110225BX6906-----------------------
- INT 11 - Blank-It Screen Blanker - DISABLE WINDOWS COMPATIBILITY MODE
- AX = 0225h
- BX = 6906h
- Return: CF clear if successful
- CF set on error
- AL = error code
- Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems,
- Inc.
- SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6905h
- Index: screen saver;Blank-It
- --------V-110225BX6907-----------------------
- INT 11 - Blank-It Screen Blanker - UNBLANK THE SCREEN
- AX = 0225h
- BX = 6907h
- Return: CF clear if successful
- CF set on error
- AL = error code
- SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6908h
- Index: screen saver;Blank-It
- --------V-110225BX6908-----------------------
- INT 11 - Blank-It Screen Blanker - BLANK THE SCREEN
- AX = 0225h
- BX = 6908h
- Return: CF clear if successful
- CF set on error
- AL = error code
- SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6907h
- Index: screen saver;Blank-It
- --------V-110225BX6909-----------------------
- INT 11 - Blank-It Screen Blanker - SET HOTKEY FOR MANUAL BLANKING
- AX = 0225h
- BX = 6909h
- CL = key scan code (see #00229)
- Return: CF clear if successful
- CF set on error
- AL = error code
- Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems,
- Inc.
- SeeAlso: AX=0225h/BX=6900h
- Index: screen saver;Blank-It|hotkeys;Blank-It
- (Table 00229)
- Values for Blank-It hotkey scan code:
- 00h No hot key
- 1Dh Left CTRL
- 2Ah Left Shift
- 36h Right Shift
- 57h F11
- 58h F12
- SeeAlso: #00006
- --------G-1105D7-----------------------------
- INT 11 CU - Borland C++ IDE - INSTALLED CALLOUT
- AX = 05D7h
- BX = product ID (0088h)
- Note: called by the BC++ IDE when an application calls
- INT 12/AX=05D7h/BX=05D7h
- SeeAlso: INT 12/AX=05D7h/BX=05D7h
- Index: installation check;Borland C++ IDE
- --------F-1177-------------------------------
- INT 11 - RainbowFAX v1.3 - SFENGINE API - OPERATIONAL CONTROL
- AH = 77h
- AL = subfunction
- 01h request SFENGINE start
- Return: AX = 0001h
- 02h check if SFENGINE started
- Return: AX = 0000h or 0001h
- 03h request SFENGINE stop
- Return: AX = 0001h
- 04h check if SFENGINE stopped
- Return: AX = 0000h or 0001h
- 05h installation check
- Return: AX = 0001h
- 06h uninstall???
- BX:DX -> return address for successful uninstall???
- Return: (at caller's address)
- AX = 0000h
- else
- Return: AX = FFFFh (invalid subfunction)
- Return: ES:DX -> ASCIZ signature string "SFAX ENGINE V1.0"
- followed by internal data area???
- SeeAlso: AH=78h,AH=79h,AH=7Ah,AH=7Ch
- Index: installation check;RainbowFAX|installation check;SFENGINE
- Index: uninstall;RainbowFAX|uninstall;SFENGINE
- --------F-1178-------------------------------
- INT 11 - RainbowFAX v1.3 - SFENGINE API - ???
- AH = 78h
- AL = subfunction
- 01h set ???
- BX = new state for ???
- 0000h ???
- else ???
- Return: AX = 0001h
- 02h set ???
- BX = ???
- CX = ???
- Return: AX = 0001h
- 03h set ???
- BX = new state for ???
- 0000h ???
- else ???
- Return: AX = 0001h
- else
- Return: AX = FFFFh (invalid subfunction)
- SeeAlso: AH=77h,AH=79h,AH=7Ah,AH=7Ch
- --------F-1179-------------------------------
- INT 11 - RainbowFAX v1.3 - SFENGINE API - ???
- AH = 79h
- AL = subfunction
- 01h set ??? flag
- Return: AX = previous state (0000h already set, 0001h clear)
- 02h clear ??? flag (refer to subfunc 01h)
- Return: AX = 0001h
- 03h set ??? flag (different from subfn 02h or 04h)
- Return: AX = 0001h
- 04h clear ??? flag (different from subfn 02h or 03h)
- Return: AX = 0001h
- else
- Return: AX = FFFFh (invalid subfunction)
- SeeAlso: AH=77h,AH=78h,AH=7Ah,AH=7Ch
- --------F-117A-------------------------------
- INT 11 - RainbowFAX v1.3 - SFENGINE API - ???
- AH = 7Ah
- AL = subfunction
- 01h set ??? flag
- Return: AX = previous state (0000h already set, 0001h clear)
- 02h clear ??? flag
- Return: AX = 0001h
- 03h set ??? flag (different from subfn 02h)
- Return: AX = 0001h
- else
- Return: AX = FFFFh (invalid subfunction)
- SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ch
- --------F-117C01-----------------------------
- INT 11 - RainbowFAX v1.3 - SFENGINE API - SET ??? FLAG
- AX = 7C01h
- Return: AX = 0001h
- SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ah,AX=7C02h,AX=7C03h
- --------F-117C02-----------------------------
- INT 11 - RainbowFAX v1.3 - SFENGINE API - CLEAR ??? FLAG
- AX = 7C02h
- Return: AX = 0001h
- SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ah,AX=7C01h,AX=7C03h
- --------F-117C03-----------------------------
- INT 11 - RainbowFAX v1.3 - SFENGINE API - UNSUPPORTED FUNCTIONS
- AX = 7C03h-7CFFh
- Return: AX = FFFFh
- SeeAlso: AH=77h,AX=7C01h,AX=7C02h
- --------S-11BC--DX1954-----------------------
- INT 11 - BNU FOSSIL - INSTALLATION CHECK
- AH = BCh
- DX = 1954h
- Return: AX = 1954h
- ES:DX -> entry point of driver (instead of INT 14)
- SeeAlso: INT 14/AH=04h"FOSSIL"
- --------d-11FF--SI6A6A-----------------------
- INT 11 - WD7000 SDLP interface - EXECUTE GENERIC SCSI COMMAND
- AH = FFh
- SI = 6A6Ah
- AL = SCSI Addressing (see #00230)
- CX = bytes of data to be transmitted (max FFF0h)
- DH = 00h
- DL = length of SCSI Command Descriptor Block
- DS:DI -> SCSI Command Descriptor Block
- ES:BX -> data buffer
- Return: CF set on error
- AL = error code
- CF clear if successful
- Note: because of busmaster operations with WD7000FASST avoid accessing
- video memory directly; check 386 memory manager for VDS support.
- The WD7000XTAT works with programmed IO and does not have this
- limitation.
- SeeAlso: INT 21/AX=4402h"ASPI",INT 2F/AX=7F01h
- Bitfields for SDLP SCSI addressing:
- Bit(s) Description (Table 00230)
- 2-0 SCSI Target LUN (logical unit number)
- 5-3 SCSI Target ID
- 7 write flag, set for write operations, clear otherwise
- --------T-11FFFECXFFFE-----------------------
- INT 11 - BACK&FORTH (before v1.62) API
- AX = FFFEh
- CX = FFFEh
- BX = function
- 00h installation check
- Return: AX = installation state
- 0001h BNFHIGH and BNFLOW both loaded
- 0003h only BNFHIGH loaded
- else neither loaded
- 01h ???
- Return: DX:AX -> ???
- 02h ???
- 03h ???
- 04h ???
- 05h ??? switches current PSP segment and stack if BNFLOW has not
- yet announced itself installed
- 06h ???
- Return: AX = ???
- SeeAlso: INT 12/AX=FFFEh
- Index: installation check;BACK&FORTH
- --------B-12---------------------------------
- INT 12 - BIOS - GET MEMORY SIZE
- Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
- Note: this call returns the contents of the word at 0040h:0013h; in PC and
- XT, this value is set from the switches on the motherboard
- SeeAlso: INT 11"BIOS",INT 2F/AX=4A06h,INT 4C"Tandy 2000",MEM 0040h:0013h
- --------C-12---------------------------------
- INT 12 - CPU-generated (Pentium) - MACHINE CHECK EXCEPTION
- Notes: Intel documents this interrupt as CPU model-dependent; for current
- Pentium processors, the reason for the machine check exception may
- be read from model-specific registers 00h and 01h (described, for
- example, in Christian Ludloff's 4P package)
- this exception is enabled by bit 6 of CR4
- SeeAlso: INT 11"CPU",MSR 00000000h,MSR 00000001h
- --------K-12----CX1806-----------------------
- INT 12 - KEYBUI v2.0+ - INSTALLATION CHECK
- CX = 1806h
- Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
- CX = 1960h if installed
- Program: KEYBUI is a resident keyboard driver by Johan Zwiekhorst which allows
- accented characters and box drawing on standard QWERTY keyboards; it
- also provides break-to-DOS and screen blanking capabilities
- SeeAlso: INT 14/AX=AA01h
- Index: screen saver;KEYBUI
- --------d-12----CX1807-----------------------
- INT 12 - PARKER v2.0+ - INSTALLATION CHECK
- CX = 1807h
- Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
- CX = 1961h if installed
- Program: PARKER is an optionally-resident hard disk parking program by Johan
- Zwiekhorst
- --------G-1205D7BX05D7-----------------------
- INT 12 U - Borland C++ IDE - INSTALLATION CHECK
- AX = 05D7h (1495d)
- BX = 05D7h
- Note: the BC++ IDE will call INT 11/AX=05D7h/BX=0088h if it is loaded
- SeeAlso: INT 11/AX=05D7h
- --------v-124350BX4920-----------------------
- INT 12 C - CPI-standard virus - "FRIEND" CHECK
- AX = 4350h
- BX = 4920h
- CX = AB46h
- DX = 554Eh
- Return: if friendly (not to be infected)
- CX:DX -> ASCIZ identity code (changes yearly)
- SeeAlso: INT 13/AX=EC00h"VIRUS",INT 13/AX=5001h,INT 21/AX=0B56h
- --------T-12FFFECXFFFE-----------------------
- INT 12 - Back&Forth v1.62+ - API
- AX = FFFEh
- CX = FFFEh
- BX = function
- 00h installation check
- Return: AX = 0001h installed
- else not loaded
- 01h (reserved)
- 02h build program ID list (shareware Back&Forth)
- ES:DI -> buffer of at least 100 bytes, to be filled with words
- Return: AX = number of programs defined
- ES:DI buffer filled with AX words
- 02h get memory statistics (Back&Forth Professional)
- Return: AX = available swap memory, KBytes
- BX = maximum task size, KBytes
- DX = fixed overhead per task, excluding video/macro
- storage
- 03h switch to specified task (task need not be open yet)
- DX = two-letter program ID
- Return: AX = status
- 0000h if task undefined
- 0001h task switch will occur when safe
- 04h (reserved)
- 05h (reserved)
- 06h get version (documented only for Back&Forth Professional)
- Return: AX = version * 100 (v1.71 = 00ABh)
- 07h spawn program (Back&Forth Professional only???)
- ES:DI -> BF_SPAWN record (see #00232)
- Return: AX = status
- 0000h if no task handles free
- 0001h spawn will occur when safe
- 08h get open tasks (documented only for Back&Forth Professional)
- ES:DI -> task info buffer (see #00231,#00233)
- Return: AX = number of open tasks (max 20)
- Note: the supplied buffer must be large enough to hold 21
- task entries
- 09h (reserved)
- ---Back&Forth Professional---
- 0Ah get active clipboard filename
- Return: DX:AX -> ASCIZ clipboard filename
- 0Bh get active task number
- AX = active task number (00h-13h)
- BX = number of tasks allocated
- DX = maximum number of tasks
- 0Ch (reserved)
- 0Dh (reserved)
- 0Eh (reserved)
- 0Fh stuff string into keyboard buffer
- ES:DI -> ASCIZ string to be stuffed
- Return: nothing
- 10h check if in graphics mode
- Return: AX = state
- 0000h color text mode
- 0004h mono text mode
- FFFFh graphics mode
- 11h get Back&Forth Professional user number
- Return: AX = user number (0000h-00FFh)
- 12h switch task by task number
- DX = task number
- Return: AX = status
- 0000h attempted to switch to active task
- 0001h task switch will occur when safe
- FFFFh invalid task number
- 13h delete (kill) task
- DX = task number
- Return: AX = status
- 0000h attempted to delete the active task
- 0001h successfully deleted
- FFFFh invalid task number
- Note: the active task number will change if the deleted task
- was lower in the task list than the active task
- 14h get next available task handle
- Return: AX = next available task handle
- FFFFh if task table is full
- Program: Back & Forth is a task switcher by Progressive Solutions, Inc.
- SeeAlso: INT 11/AX=FFFEh
- Index: installation check;BACK&FORTH
- Format of Back&Forth task info buffer:
- Offset Size Description (Table 00231)
- 00h 21 BYTEs ASCIZ task name
- 15h BYTE hotkey shift state (as for INT 16/AH=02h)
- 16h WORD hotkey scan code (see also #00006)
- 18h WORD program ID
- Index: hotkeys;Back&Forth
- SeeAlso: #00232,#00233
- Format of Back&Forth Professional BF_SPAWN record:
- Offset Size Description (Table 00232)
- 00h 21 BYTEs task description
- 15h BYTE flag: disable hotkeys
- 16h WORD environment size in bytes
- 18h BYTE hotkey shift flags
- 19h WORD hotkey scancode
- 1Bh WORD maximum number of EMS pages
- 1Dh WORD required memory in KBytes
- 1Fh 3 BYTEs DESQview-style two-letter program ID
- 22h 13 BYTEs base name of program to be run (no path or extension)
- 2Fh 66 BYTEs directory from which to start program
- 71h 66 BYTEs initial current directory for program
- SeeAlso: #00231,#00233
- Format of Back&Forth Professional BF_TASK record:
- Offset Size Description (Table 00233)
- 00h DWORD Unix-style task start time (seconds since 1/1/1970)
- 04h 21 BYTEs task description
- 19h DWORD elapsed time in task (seconds)
- 1Dh WORD task ID
- 1Fh BYTE task hotkey keyboard flags
- 20h WORD task hotkey scan code (see also #00006)
- 22h DWORD time task was suspended/exited
- 26h WORD task handle
- SeeAlso: #00231,#00232
- --------B-1300-------------------------------
- INT 13 - DISK - RESET DISK SYSTEM
- AH = 00h
- DL = drive (if bit 7 is set both hard disks and floppy disks reset)
- Return: AH = status (see #00234)
- CF clear if successful (returned AH=00h)
- CF set on error
- Note: forces controller to recalibrate drive heads (seek to track 0)
- for PS/2 35SX, 35LS, 40SX and L40SX, as well as many other systems,
- both the master drive and the slave drive respond to the Reset
- function that is issued to either drive
- SeeAlso: AH=0Dh,AH=11h,INT 21/AH=0Dh,INT 4D/AH=00h"TI Professional"
- SeeAlso: INT 56"Tandy 2000",MEM 0040h:003Eh
- --------B-1301-------------------------------
- INT 13 - DISK - GET STATUS OF LAST OPERATION
- AH = 01h
- DL = drive (bit 7 set for hard disk)
- Return: CF clear if successful (returned status 00h)
- CF set on error
- AH = status of previous operation (see #00234)
- Note: some BIOSes return the status in AL; the PS/2 Model 30/286 returns the
- status in both AH and AL
- SeeAlso: AH=00h,INT 4D/AH=01h,MEM 0040h:0041h,MEM 0040h:0074h
- (Table 00234)
- Values for disk operation status:
- 00h successful completion
- 01h invalid function in AH or invalid parameter
- 02h address mark not found
- 03h disk write-protected
- 04h sector not found/read error
- 05h reset failed (hard disk)
- 05h data did not verify correctly (TI Professional PC)
- 06h disk changed (floppy)
- 07h drive parameter activity failed (hard disk)
- 08h DMA overrun
- 09h data boundary error (attempted DMA across 64K boundary or >80h sectors)
- 0Ah bad sector detected (hard disk)
- 0Bh bad track detected (hard disk)
- 0Ch unsupported track or invalid media
- 0Dh invalid number of sectors on format (PS/2 hard disk)
- 0Eh control data address mark detected (hard disk)
- 0Fh DMA arbitration level out of range (hard disk)
- 10h uncorrectable CRC or ECC error on read
- 11h data ECC corrected (hard disk)
- 20h controller failure
- 31h no media in drive (IBM/MS INT 13 extensions)
- 32h incorrect drive type stored in CMOS (Compaq)
- 40h seek failed
- 80h timeout (not ready)
- AAh drive not ready (hard disk)
- B0h volume not locked in drive (INT 13 extensions)
- B1h volume locked in drive (INT 13 extensions)
- B2h volume not removable (INT 13 extensions)
- B3h volume in use (INT 13 extensions)
- B4h lock count exceeded (INT 13 extensions)
- B5h valid eject request failed (INT 13 extensions)
- BBh undefined error (hard disk)
- CCh write fault (hard disk)
- E0h status register error (hard disk)
- FFh sense operation failed (hard disk)
- SeeAlso: #M0022
- --------B-1302-------------------------------
- INT 13 - DISK - READ SECTOR(S) INTO MEMORY
- AH = 02h
- AL = number of sectors to read (must be nonzero)
- CH = low eight bits of cylinder number
- CL = sector number 1-63 (bits 0-5)
- high two bits of cylinder (bits 6-7, hard disk only)
- DH = head number
- DL = drive number (bit 7 set for hard disk)
- ES:BX -> data buffer
- Return: CF set on error
- if AH = 11h (corrected ECC error), AL = burst length
- CF clear if successful
- AH = status (see #00234)
- AL = number of sectors transferred (only valid if CF set for some
- BIOSes)
- Notes: errors on a floppy may be due to the motor failing to spin up quickly
- enough; the read should be retried at least three times, resetting
- the disk with AH=00h between attempts
- most BIOSes support "multitrack" reads, where the value in AL
- exceeds the number of sectors remaining on the track, in which
- case any additional sectors are read beginning at sector 1 on
- the following head in the same cylinder; the MSDOS CONFIG.SYS command
- MULTITRACK (or the Novell DOS DEBLOCK=) can be used to force DOS to
- split disk accesses which would wrap across a track boundary into two
- separate calls
- the IBM AT BIOS and many other BIOSes use only the low four bits of
- DH (head number) since the WD-1003 controller which is the standard
- AT controller (and the controller that IDE emulates) only supports
- 16 heads
- AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
- than 1024 cylinders by placing bits 10 and 11 of the cylinder number
- into bits 6 and 7 of DH
- under Windows95, a volume must be locked (see INT 21/AX=440Dh/CX=084Bh)
- in order to perform direct accesses such as INT 13h reads and writes
- all versions of MS-DOS (including v7 [Win95]) have a bug which prevents
- booting on hard disks with 256 heads, so many modern BIOSes provide
- mappings with at most 255 heads
- SeeAlso: AH=03h,AH=0Ah,AH=06h"V10DISK.SYS",AH=21h"PS/1",AH=42h"IBM"
- SeeAlso: INT 21/AX=440Dh/CX=084Bh,INT 4D/AH=02h
- --------B-1303-------------------------------
- INT 13 - DISK - WRITE DISK SECTOR(S)
- AH = 03h
- AL = number of sectors to write (must be nonzero)
- CH = low eight bits of cylinder number
- CL = sector number 1-63 (bits 0-5)
- high two bits of cylinder (bits 6-7, hard disk only)
- DH = head number
- DL = drive number (bit 7 set for hard disk)
- ES:BX -> data buffer
- Return: CF set on error
- CF clear if successful
- AH = status (see #00234)
- AL = number of sectors transferred
- (only valid if CF set for some BIOSes)
- Notes: errors on a floppy may be due to the motor failing to spin up quickly
- enough; the write should be retried at least three times, resetting
- the disk with AH=00h between attempts
- most BIOSes support "multitrack" writes, where the value in AL
- exceeds the number of sectors remaining on the track, in which
- case any additional sectors are written beginning at sector 1 on
- the following head in the same cylinder; the CONFIG.SYS command
- MULTITRACK can be used to force DOS to split disk accesses which
- would wrap across a track boundary into two separate calls
- the IBM AT BIOS and many other BIOSes use only the low four bits of
- DH (head number) since the WD-1003 controller which is the standard
- AT controller (and the controller that IDE emulates) only supports
- 16 heads
- AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
- than 1024 cylinders by placing bits 10 and 11 of the cylinder number
- into bits 6 and 7 of DH
- under Windows95, an application must issue a physical volume lock on
- the drive via INT 21/AX=440Dh before it can successfully write to
- the disk with this function
- SeeAlso: AH=02h,AH=0Bh,AH=07h"V10DISK.SYS",AH=22h"PS/1",AH=43h"IBM"
- SeeAlso: INT 21/AX=440Dh"DOS 3.2+",INT 4D/AH=03h
- --------B-1304-------------------------------
- INT 13 - DISK - VERIFY DISK SECTOR(S)
- AH = 04h
- AL = number of sectors to verify (must be nonzero)
- CH = low eight bits of cylinder number
- CL = sector number 1-63 (bits 0-5)
- high two bits of cylinder (bits 6-7, hard disk only)
- DH = head number
- DL = drive number (bit 7 set for hard disk)
- ES:BX -> data buffer (PC,XT,AT with BIOS prior to 11/15/85)
- Return: CF set on error
- CF clear if successful
- AH = status (see #00234)
- AL = number of sectors verified
- Notes: errors on a floppy may be due to the motor failing to spin up quickly
- enough; the write should be retried at least three times, resetting
- the disk with AH=00h between attempts
- this function does not compare the disk with memory, it merely
- checks whether the sector's stored CRC matches the data's actual CRC
- the IBM AT BIOS and many other BIOSes use only the low four bits of
- DH (head number) since the WD-1003 controller which is the standard
- AT controller (and the controller that IDE emulates) only supports
- 16 heads
- AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
- than 1024 cylinders by placing bits 10 and 11 of the cylinder number
- into bits 6 and 7 of DH
- SeeAlso: AH=02h,AH=44h,INT 4D/AH=04h,INT 4D/AH=06h
- --------B-1305-------------------------------
- INT 13 - FLOPPY - FORMAT TRACK
- AH = 05h
- AL = number of sectors to format
- CH = track number
- DH = head number
- DL = drive number
- ES:BX -> address field buffer (see #00235)
- Return: CF set on error
- CF clear if successful
- AH = status (see #00234)
- Notes: on AT or higher, call AH=17h first
- the number of sectors per track is read from the diskette parameter
- table pointed at by INT 1E
- SeeAlso: AH=05h"FIXED",AH=17h,AH=18h,INT 1E
- Format of floppy format address field buffer entry (one per sector in track):
- Offset Size Description (Table 00235)
- 00h BYTE track number
- 01h BYTE head number (0-based)
- 02h BYTE sector number
- 03h BYTE sector size (00h=128 bytes, 01h=256 bytes, 02h=512, 03h=1024)
- --------B-1305-------------------------------
- INT 13 - FIXED DISK - FORMAT TRACK
- AH = 05h
- AL = interleave value (XT-type controllers only)
- ES:BX -> 512-byte format buffer
- the first 2*(sectors/track) bytes contain F,N for each sector
- F = sector type
- 00h for good sector
- 20h to unassign from alternate location
- 40h to assign to alternate location
- 80h for bad sector
- N = sector number
- CH = cylinder number (bits 8,9 in high bits of CL)
- CL = high bits of cylinder number (bits 7,6)
- DH = head
- DL = drive
- Return: CF set on error
- CF clear if successful
- AH = status code (see #00234)
- Notes: AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
- than 1024 cylinders by placing bits 10 and 11 of the cylinder number
- into bits 6 and 7 of DH
- for XT-type controllers on an AT or higher, AH=0Fh should be called
- first
- the IBM AT BIOS and many other BIOSes use only the low four bits of
- DH (head number) since the WD-1003 controller which is the standard
- AT controller (and the controller that IDE emulates) only supports
- 16 heads
- not all controller support sector types 20h and 40h
- under Windows95, an application must issue a physical volume lock on
- the drive via INT 21/AX=440Dh before it can successfully write to
- the disk with this function
- SeeAlso: AH=05h"FLOPPY",AH=06h"FIXED",AH=07h"FIXED",AH=0Fh,AH=18h,AH=1Ah
- --------d-1305-------------------------------
- INT 13 - Future Domain SCSI BIOS - SEND SCSI MODE SELECT COMMAND
- AH = 05h
- DL = hard drive ID
- ES:BX -> mode select data (see #00236)
- Return: CF set on error
- CF clear if successful
- AH = status code (see #00234)
- Notes: this function can be called before AH=07h"SCSI" or AH=06h"SCSI" to
- format a SCSI disk with the desired parameters
- the mode select data below is from the SCSI-1 specification
- the TMC-950 does not support any Future Domain BIOS calls; instead,
- it provides a full CAM implementation (see INT 4F/AX=8100h)
- SeeAlso: AH=06h"SCSI",AH=07h"SCSI",INT 4F/AX=8100h
- Format of Future Domain SCSI mode select data:
- Offset Size Description (Table 00236)
- 00h BYTE number of bytes of remaining data (12 + vendor unique length)
- 01h BYTE reserved (0)
- 02h BYTE medium type (0 for hard disk)
- 03h BYTE reserved (0)
- 04h BYTE block descriptor length (8)
- 05h BYTE density code (0 for hard disk)
- 06h 3 BYTEs (big-endian) number of blocks (000000h for entire disk)
- 09h BYTE reserved (0)
- 0Ah 3 BYTEs (big-endian) block length (512 standard, or 256)
- 0Dh ??? vendor-specific parameter bytes (optional)
- --------d-13057FSI324D-----------------------
- INT 13 - 2M - FORMAT TRACK
- AX = 057Fh
- SI = 324Dh ("2M")
- CH = track number
- DH = head number
- DL = drive number
- ES:BX -> boot sector of future 2M diskette
- Return: CF set on error
- CF clear if successful
- AH = status (see #00234)
- Program: 2M is a TSR developed by Ciriaco Garcia de Celis to support
- non standard diskettes with 820-902/1476-1558K (5.25 DD/HD)
- and 984-1066/1804-1886K/3608-3772K (3.5 DD/HD/ED)
- InstallCheck: must search for a "CiriSOFT:2M:1.3" or "CiriSOFT:2MX:3.0" or
- similar (recomended ":2M:", ":2MX:", or ":2MB:" substrings) in the
- CiriSOFT TSR interface
- Notes: it is not necessary to call AH=17h or AH=18h first (will be ignored)
- the diskette format must always begin on cylinder 0 head 0
- the boot sector can be obtained from an already-formatted 2M diskette
- (by calling AH=02h with head number 00h in 2M v1.x and with head
- number 80h for 2M v2+)
- since 2M v2.0, the BOOT sector is emulated using the first physical
- sector of FAT2; the second-sixth physical sectors of FAT2 in HD or ED
- diskettes store the SuperBOOT code. To skip the FAT2 emulation (using
- FAT1) of 2M, in order to read the SuperBOOT code, head number must be
- 80h-81h instead 0-1 (bit 7 active) in standard read/write functions.
- This lets diskcopy programs format 2M target diskettes copying
- SuperBOOT code. If the target diskette is already 2MF formatted
- (containing boot code) this trick it is not necessary.
- when using STV technology (offset 65 of boot sector equal to 1) it is
- necessary to write the full track before formatting (except track 0
- side 0) to complete the format and skip future CRC errors on read; in
- track 0 side 1 the head used must be 81h instead 1. Diskcopy programs
- may do a format-write-verify sequential phases to improve performance
- SeeAlso: AH=05h"FLOPPY",AH=18h/CX=5055h,INT 2F"CiriSOFT"
- --------B-1306-------------------------------
- INT 13 - FIXED DISK - FORMAT TRACK AND SET BAD SECTOR FLAGS (XT,PORT)
- AH = 06h
- AL = interleave value
- CH = cylinder number (bits 8,9 in high bits of CL)
- CL = sector number
- DH = head
- DL = drive
- Return: AH = status code (see #00234)
- Note: AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
- than 1024 cylinders by placing bits 10 and 11 of the cylinder number
- into bits 6 and 7 of DH
- SeeAlso: AH=05h"FIXED",AH=07h"FIXED"
- --------d-1306-------------------------------
- INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE WITH BAD SECTOR MAPPING
- AH = 06h
- AL = interleave
- (0 = default, 1 = consecutive sectors, 2 - 255 = vendor unique)
- DL = hard drive ID
- DH = defect list info (see #00237)
- ES:BX -> defect table A, B or C (see #00238,#00239,#00240)
- Return: CF set on error
- CF clear if successful
- AH = status code (see #00234)
- Notes: block addresses must be in ascending order (for table B, cylinder is
- most significant, byte from index least significant; for table C,
- cylinder is most significant, sector number least significant)
- table B defect bytes from index of FFFFFFFFh indicates that the entire
- track shall be reassigned
- table C defect sector number of FFFFFFFFh indicates that the entire
- track shall be reassigned
- the TMC-950 does not support any Future Domain BIOS calls; instead,
- it provides a full CAM implementation (see INT 4F/AX=8100h)
- SeeAlso: AH=05h"SCSI",AH=06h"FIXED",AH=07h"SCSI"
- Bitfields for Future Domain SCSI defect list info:
- Bit(s) Description (Table 00237)
- 7-5 drive LUN
- 4 defect list is available
- 3 defect list is complete (erase drive's defect list)
- 2-0 defect table format
- (000=use defect table A, 100=use defect table B,
- 101=use defect table C)
- Format of Future Domain SCSI defect table A:
- Offset Size Description (Table 00238)
- 00h WORD number of bytes remaining in table
- 02h BYTE reserved (0)
- 03h BYTE reserved (0)
- 04h WORD (big-endian) defect list length (4*number of defects)
- 06h 4 DWORDs (big-endian) defect block addresses
- Format of Future Domain SCSI defect table B:
- Offset Size Description (Table 00239)
- 00h WORD number of bytes remaining in table
- 02h BYTE reserved (0)
- 03h BYTE reserved (0)
- 04h WORD (big-endian) defect list length (8*number of defects)
- 06h 8N BYTEs defect list [array] (see #00241)
- Format of Future Domain SCSI defect table C:
- Offset Size Description (Table 00240)
- 00h WORD number of bytes remaining in table
- 02h BYTE reserved (0)
- 03h BYTE reserved (0)
- 04h WORD (big-endian) defect list length (8*number of defects)
- 06h 8N BYTEs defect list [array] (see #00241)
- Format of Future Domain SCSI defect list entry:
- Offset Size Description (Table 00241)
- 00h 3 BYTEs (big-endian) cylinder number of defect
- 03h BYTE head number of defect
- 04h DWORD (big-endian) defect bytes from index
- --------d-1306-------------------------------
- INT 13 - Adaptec AHA-154xA/Bustek BT-542 BIOS - IDENTIFY SCSI DEVICES
- AH = 06h
- Return: AH = status code (see #00234)
- CF clear if successful
- AL = first drive supported
- (80h nonconcurrent operation, 81h concurrent operation)
- CF set on error
- Desc: determine the number of the first supported SCSI drive
- Note: the return value is 80h when two SCSI drives are supported, 81h if
- only one SCSI drive is installed
- SeeAlso: AH=08h"PC",#00732 at INT 1A/AX=B102h
- --------d-1306-------------------------------
- INT 13 - V10DISK.SYS - READ DELETED SECTORS
- AH = 06h
- AL = number of sectors
- CH = cylinder number (bits 8,9 in high bits of CL)
- CL = sector number
- DH = head
- DL = drive
- ES:BX -> buffer
- Return: AH = status code (see #00234)
- Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies
- SeeAlso: AH=02h,AH=07h"V10DISK.SYS"
- --------B-1307-------------------------------
- INT 13 - FIXED DISK - FORMAT DRIVE STARTING AT GIVEN TRACK (XT,PORT)
- AH = 07h
- AL = interleave value (XT only)
- ES:BX = 512-byte format buffer (see AH=05h)
- CH = cylinder number (bits 8,9 in high bits of CL)
- CL = sector number
- DH = head
- DL = drive
- Return: AH = status code (see #00234)
- Note: AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
- than 1024 cylinders by placing bits 10 and 11 of the cylinder number
- into bits 6 and 7 of DH
- SeeAlso: AH=05h"FIXED",AH=06h"FIXED",AH=1Ah
- --------d-1307-------------------------------
- INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE
- AH = 07h
- AL = interleave (0 = default, 1 = consecutive sectors,
- 2 - 255 = vendor unique)
- DL = hard drive ID
- Return: CF set on error
- CF clear if successful
- AH = status code (see #00234)
- SeeAlso: AH=05h"SCSI",AH=06h"SCSI",AH=07h"FIXED"
- --------d-1307-------------------------------
- INT 13 - V10DISK.SYS - WRITE DELETED SECTORS
- AH = 07h
- AL = number of sectors
- CH = cylinder number (bits 8,9 in high bits of CL)
- CL = sector number
- DH = head
- DL = drive
- ES:BX -> buffer
- Return: AH = status code (see #00234)
- Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies
- SeeAlso: AH=03h,AH=06h"V10DISK.SYS"
- --------B-1308-------------------------------
- INT 13 - DISK - GET DRIVE PARAMETERS (PC,XT286,CONV,PS,ESDI,SCSI)
- AH = 08h
- DL = drive (bit 7 set for hard disk)
- Return: CF set on error
- AH = status (07h) (see #00234)
- CF clear if successful
- AH = 00h
- AL = 00h on at least some BIOSes
- BL = drive type (AT/PS2 floppies only) (see #00242)
- CH = low eight bits of maximum cylinder number
- CL = maximum sector number (bits 5-0)
- high two bits of maximum cylinder number (bits 7-6)
- DH = maximum head number
- DL = number of drives
- ES:DI -> drive parameter table (floppies only)
- Notes: may return successful even though specified drive is greater than the
- number of attached drives of that type (floppy/hard); check DL to
- ensure validity
- for systems predating the IBM AT, this call is only valid for hard
- disks, as it is implemented by the hard disk BIOS rather than the
- ROM BIOS
- Toshiba laptops with HardRAM return DL=02h when called with DL=80h,
- but fail on DL=81h. The BIOS data at 40h:75h correctly reports 01h.
- may indicate only two drives present even if more are attached; to
- ensure a correct count, one can use AH=15h to scan through possible
- drives
- for BIOSes which reserve the last cylinder for testing purposes, the
- cylinder count is automatically decremented
- on PS/1s with IBM ROM DOS 4, nonexistent drives return CF clear,
- BX=CX=0000h, and ES:DI = 0000h:0000h
- the PC-Tools PCFORMAT program requires that AL=00h before it will
- proceed with the formatting
- BUG: several different Compaq BIOSes incorrectly report high-numbered
- drives (such as 90h, B0h, D0h, and F0h) as present, giving them the
- same geometry as drive 80h; as a workaround, scan through disk
- numbers, stopping as soon as the number of valid drives encountered
- equals the value in 0040h:0075h
- SeeAlso: AH=06h"Adaptec",AH=13h"SyQuest",AH=48h,AH=15h,INT 1E
- SeeAlso: INT 41"HARD DISK 0"
- (Table 00242)
- Values for diskette drive type:
- 01h 360K
- 02h 1.2M
- 03h 720K
- 04h 1.44M
- 05h ??? (reportedly an obscure drive type shipped on some IBM machines)
- 2.88M on some machines (at least AMI 486 BIOS)
- 06h 2.88M
- 10h ATAPI Removable Media Device
- --------d-1308-------------------------------
- INT 13 - V10DISK.SYS - SET FORMAT
- AH = 08h
- AL = number of sectors
- CH = cylinder number (bits 8,9 in high bits of CL)
- CL = sector number
- DH = head
- DL = drive
- Return: AH = status code (see #00234)
- Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies
- Note: details not available
- SeeAlso: AH=03h,AH=06h"V10DISK.SYS"
- --------y-130800DLF0-------------------------
- INT 13 - SecureDrive - INSTALLATION CHECK
- AX = 08000h
- DL = F0h
- Return: AX = EDCBh for version 1.0-1.2
- AX = EDCCh for version 1.3
- CX = code segment
- DX = data address within code segment
- Program: SecureDrive by Mike Ingle <mikeingle@delphi.com> allows you to create
- an encrypted partition on your harddisk.
- --------B-1309-------------------------------
- INT 13 - HARD DISK - INITIALIZE CONTROLLER WITH DRIVE PARAMETERS (AT,PS)
- AH = 09h
- DL = drive (80h for first, 81h for second)
- Return: CF clear if successful
- CF set on error
- AH = status (see #00234)
- Notes: on the PC and XT, this function uses the parameter table pointed at by
- INT 41
- on the AT and later, this function uses the parameter table pointed at
- by INT 41 if DL=80h, and the parameter table pointed at by INT 46 if
- DL=81h
- SeeAlso: INT 41"HARD DISK 0",INT 46"HARD DISK 1"
- --------B-130A-------------------------------
- INT 13 - HARD DISK - READ LONG SECTOR(S) (AT and later)
- AH = 0Ah
- AL = number of sectors (01h may be only value supported)
- CH = low eight bits of cylinder number
- CL = sector number (bits 5-0)
- high two bits of cylinder number (bits 7-6)
- DH = head number
- DL = drive number (80h = first, 81h = second)
- ES:BX -> data buffer
- Return: CF clear if successful
- CF set on error
- AH = status (see #00234)
- AL = number of sectors transferred
- Notes: this function reads in four to seven bytes of error-correcting code
- along with each sector's worth of information
- data errors are not automatically corrected, and the read is aborted
- after the first sector with an ECC error
- used for diagnostics only on PS/2 systems; IBM officially classifies
- this function as optional
- SeeAlso: AH=02h,AH=0Bh,MEM 0040h:0074h
- --------B-130B-------------------------------
- INT 13 - HARD DISK - WRITE LONG SECTOR(S) (AT and later)
- AH = 0Bh
- AL = number of sectors (01h may be only value supported)
- CH = low eight bits of cylinder number
- CL = sector number (bits 5-0)
- high two bits of cylinder number (bits 7-6)
- DH = head number
- DL = drive number (80h = first, 81h = second)
- ES:BX -> data buffer
- Return: CF clear if successful
- CF set on error
- AH = status (see #00234)
- AL = number of sectors transferred
- Notes: each sector's worth of data must be followed by four to seven bytes of
- error-correction information
- used for diagnostics only on PS/2 systems; IBM officially classifies
- this function as optional
- SeeAlso: AH=03h,AH=0Ah,MEM 0040h:0074h
- --------B-130C-------------------------------
- INT 13 - HARD DISK - SEEK TO CYLINDER
- AH = 0Ch
- CH = low eight bits of cylinder number
- CL = sector number (bits 5-0)
- high two bits of cylinder number (bits 7-6)
- DH = head number
- DL = drive number (80h = first, 81h = second hard disk)
- Return: CF set on error
- CF clear if successful
- AH = status (see #00234)
- SeeAlso: AH=00h,AH=02h,AH=0Ah,AH=47h
- --------B-130D-------------------------------
- INT 13 - HARD DISK - RESET HARD DISKS
- AH = 0Dh
- DL = drive number (80h = first, 81h = second hard disk)
- Return: CF set on error
- CF clear if successful
- AH = status (see #00234)
- Notes: reinitializes the hard disk controller, resets the specified drive's
- parameters, and recalibrates the drive's heads (seek to track 0)
- for PS/2 35SX, 35LS, 40SX and L40SX, as well as many other systems,
- both the master drive and the slave drive respond to the Reset
- function that is issued to either drive
- not for PS/2 ESDI drives
- SeeAlso: AH=00h,INT 21/AH=0Dh
- --------B-130E-------------------------------
- INT 13 - HARD DISK - READ SECTOR BUFFER (XT only)
- AH = 0Eh
- DL = drive number (80h = first, 81h = second hard disk)
- ES:BX -> buffer
- Return: CF set on error
- CF clear if successful
- AH = status code (see #00234)
- Notes: transfers controller's sector buffer. No data is read from the drive
- used for diagnostics only on PS/2 systems
- SeeAlso: AH=0Ah
- --------B-130F-------------------------------
- INT 13 - HARD DISK - WRITE SECTOR BUFFER (XT only)
- AH = 0Fh
- DL = drive number (80h = first, 81h = second hard disk)
- ES:BX -> buffer
- Return: CF set on error
- CF clear if successful
- AH = status code (see #00234)
- Notes: does not write data to the drive
- should be called before formatting to initialize an XT-type
- controller's sector buffer
- used for diagnostics only on PS/2 systems
- SeeAlso: AH=0Bh
- --------B-1310-------------------------------
- INT 13 - HARD DISK - CHECK IF DRIVE READY
- AH = 10h
- DL = drive number (80h = first, 81h = second hard disk)
- Return: CF set on error
- CF clear if successful
- AH = status (see #00234 at AH=01h)
- SeeAlso: AH=11h
- --------B-1311-------------------------------
- INT 13 - HARD DISK - RECALIBRATE DRIVE
- AH = 11h
- DL = drive number (80h = first, 81h = second hard disk)
- Return: CF set on error
- CF clear if successful
- AH = status (see #00234 at AH=01h)
- Note: causes hard disk controller to seek the specified drive to cylinder 0
- SeeAlso: AH=00h,AH=0Ch,AH=10h,AH=19h"FIXED DISK",MEM 0040h:003Eh
- --------B-1312-------------------------------
- INT 13 - HARD DISK - CONTROLLER RAM DIAGNOSTIC (XT,PS)
- AH = 12h
- DL = drive number (80h = first, 81h = second hard disk)
- Return: CF set on error
- CF clear if successful
- AH = status code (see #00234 at AH=01h)
- AL = 00h
- SeeAlso: AH=13h,AH=14h
- --------d-1312-------------------------------
- INT 13 - Future Domain SCSI CONTROLLER - STOP SCSI DISK
- AH = 12h
- DL = hard drive ID
- Return: CF set on error
- CF clear if successful
- AH = status code (see #00234 at AH=01h)
- Notes: available at least on the TMC-870 8-bit SCSI controller BIOS v6.0A
- if the given drive is a SCSI device, the SCSI Stop Unit command is sent
- and either "Disk prepared for shipping" or "Disk Stop command failed"
- is displayed
- the TMC-950 does not support any Future Domain BIOS calls; instead,
- it provides a full CAM implementation (see INT 4F/AX=8100h)
- --------d-1312-------------------------------
- INT 13 - SyQuest - START/STOP SCSI DISK
- AH = 12h
- AL = subfunction
- 00h start disk
- 01h stop disk
- CX = wait flag
- 00h wait for ready
- 01h don't wait for ready
- DL = hard drive ID (bit 7 for hard disks must be set)
- Return: CF set on error
- CF clear if successful
- AH = status
- 00h successful
- 01h invalid function request
- 80h timeout
- SeeAlso: AH=12h"Future Domain",AH=13h"SyQuest"
- --------B-1313-------------------------------
- INT 13 - HARD DISK - DRIVE DIAGNOSTIC (XT,PS)
- AH = 13h
- DL = drive number (80h = first, 81h = second hard disk)
- Return: CF set on error
- CF clear if successful
- AH = status code (see #00234 at AH=01h)
- AL = 00h
- SeeAlso: AH=12h"HARD DISK",AH=14h"HARD DISK"
- --------d-1313-------------------------------
- INT 13 - SyQuest - READ DRIVE PARAMATERS (for DOS 5+)
- AH = 13h
- DL = drive ID (bit 7 set for hard disks)
- Return: CF set on error
- AH = status (07h) (see #00234 at AH=01h)
- CF clear if successful
- AH = 00h
- BL = drive type (AT/PS2 floppies only) (see #00242)
- CH = low eight bits of maximum cylinder number
- CL = maximum sector number (bits 5-0)
- high two bits of maximum cylinder number (bits 7-6)
- DH = maximum head number
- DL = number of drives
- ES:DI -> drive parameter table (floppies only)
- Notes: the return values are identical to the standard INT 13/AH=08h, but the
- number of drives is not limited to 2, so
- scanning all possible drive numbers with the Read DASD Type call
- (AH=15h) should generally be preferred to determine the number of
- drives attached to the system.
- SeeAlso: AH=08h"PC",AH=12h"SyQuest",AH=15h,AH=59h"SyQuest"
- --------B-1314-------------------------------
- INT 13 - HARD DISK - CONTROLLER INTERNAL DIAGNOSTIC
- AH = 14h
- Return: CF set on error
- CF clear if successful
- AH = status code (see #00234 at AH=01h)
- AL = 00h
- SeeAlso: AH=12h,AH=13h
- --------B-1315-------------------------------
- INT 13 - DISK - GET DISK TYPE (XT 1/10/86 or later,XT286,AT,PS)
- AH = 15h
- DL = drive number (bit 7 set for hard disk)
- Return: CF clear if successful
- AH = type code
- 00h no such drive
- 01h floppy without change-line support
- 02h floppy (or other removable drive) with change-line support
- 03h hard disk
- CX:DX = number of 512-byte sectors
- CF set on error
- AH = status (see #00234 at AH=01h)
- Note: SyQuest can report type 01h or 02h for 'hard disks', since its media
- is removable
- BUGS: many versions of the Award 486 BIOS do not return the sector count
- because the BIOS exit code restores CX and DX to their original
- values after the function had already set them to correct values
- several different Compaq BIOSes incorrectly report high-numbered
- drives (such as 90h, B0h, D0h, and F0h) as present, giving them the
- same geometry as drive 80h; as a workaround, scan through disk
- numbers, stopping as soon as the number of valid drives encountered
- equals the value in 0040h:0075h
- SeeAlso: AH=08h,AH=16h,AH=17h,AH=19h"SCSI",MEM 0040h:0075h
- --------B-1316-------------------------------
- INT 13 - FLOPPY DISK - DETECT DISK CHANGE (XT 1/10/86 or later,XT286,AT,PS)
- AH = 16h
- DL = drive number (00h-7Fh)
- Return: CF clear if change line inactive
- AH = 00h (disk not changed)
- CF set if change line active
- AH = status
- 01h invalid command (SyQuest)
- 06h change line active or not supported
- 80h drive not ready or not present
- Notes: call AH=15h first to determine whether the drive supports a change
- line
- this call also clears the media-change status, so that a disk change
- is only reported once
- BUG: some versions of Award 386 Modular BIOS and AMI BIOS fail to clear
- the media-change status
- SeeAlso: AH=15h,AH=49h
- --------B-1317-------------------------------
- INT 13 - FLOPPY DISK - SET DISK TYPE FOR FORMAT (AT,PS)
- AH = 17h
- AL = format type
- 01h = 320/360K disk in 360K drive
- 02h = 320/360K disk in 1.2M drive
- 03h = 1.2M disk in 1.2M drive
- 04h = 720K disk in 720K or 1.44M drive
- DL = drive number
- Return: CF set on error
- CF clear if successful
- AH = status (see #00234 at AH=01h)
- Note: this function does not handle 1.44M drives; use AH=18h instead
- SeeAlso: AH=15h,AH=18h
- --------d-131700-----------------------------
- INT 13 - Future Domain SCSI CONTROLLER - GET INQUIRY INFO FROM SCSI DEVICE
- AX = 1700h
- CL = length of buffer
- DL = hard drive ID
- ES:BX -> buffer for info (see #00243)
- Return: CF clear if successful
- CH = number of bytes returned in buffer???
- CF set on error
- AH = status code (see #00234 at AH=01h)
- Notes: this function is not available with 8-bit controller ROM versions < 7.0
- information block bytes 5-n are vendor-specific in older SCSI devices
- the TMC-950 does not support any Future Domain BIOS calls; instead,
- it provides a full CAM implementation (see INT 4F/AX=8100h)
- SeeAlso: AH=18h"SCSI",AH=1Bh"SCSI"
- Format of Future Domain SCSI inquiry information block:
- Offset Size Description (Table 00243)
- 00h BYTE device type
- bits 0-4: peripheral device type (see #00244)
- bits 5-7: peripheral qualifier (see #00245)
- 01h BYTE device type modifier
- bits 0-6: device type modifier
- bit 7: removable medium
- 02h BYTE SCSI version (see #00246)
- 03h BYTE data format/capabilities (see #00247)
- 04h BYTE additional data length (total remaining bytes)
- 05h 2 BYTEs reserved
- 07h BYTE device capabilities (see #00248)
- 08h 8 BYTEs vendor identification (space-padded ASCII)
- 10h 8 BYTEs product identification (space-padded ASCII)
- 20h 4 BYTEs product revision level (space-padded ASCII)
- 24h 20 BYTEs vendor specific
- 38h 40 BYTEs reserved
- 60h var vendor specific parameters
- (Table 00244)
- Values for Future Domain SCSI peripheral device type:
- 00h direct-access device (e.g., magnetic disk)
- 01h sequential-access device (e.g., magnetic tape)
- 02h printer device
- 03h processor device
- 04h write-once device (e.g., some optical disks)
- 05h CD-ROM device
- 06h scanner device
- 07h optical memory device (e.g., some optical disks)
- 08h medium changer device (e.g., jukeboxes)
- 09h communications device
- 0Ah (defined by ASC IT8)
- 0Bh (defined by ASC IT8)
- 0Ch-1Eh reserved
- 1Fh unknown or no device type
- (Table 00245)
- Values for Future Domain SCSI peripheral qualifier:
- 000b device is currently connected to this logical unit and available
- 001b target is capable of supporting the specified peripheral, but the
- physical device is not currently connected to this logical unit
- 010b reserved
- 011b target can't support a physical device on this logical unit
- 1xxb vendor specific
- Bitfields for Future Domain SCSI version:
- Bit(s) Description (Table 00246)
- 0-2 ANSI-approved version
- 000 device might or might not comply to ANSI standard
- 001 device complies to ANSI SCSI-1
- 010 device complies to ANSI SCSI-2
- other reserved
- 3-5 ECMA version
- 6-7 ISO version
- Bitfields for Future Domain SCSI data format/capabilities:
- Bit(s) Description (Table 00247)
- 0-2 response data format
- 000 information block is as specified in SCSI-1
- 001 information block is as specified in CCS
- 010 information block is as specified in SCSI-2
- other reserved
- 4-5 reserved
- 6 terminate I/O process supported
- 7 asynchronous event notification supported
- Bitfields for Future Domain SCSI device capabilities:
- Bit(s) Description (Table 00248)
- 0 device responds to RESET with a hard RESET
- 1 tagged command queuing supported
- 2 reserved
- 3 linked commands supported
- 4 synchronous data transfer supported
- 5 16-transfers supported
- 6 32-transfers supported
- 7 relative addressing supported
- --------B-1318-------------------------------
- INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model 3x9,XT2,XT286,PS)
- AH = 18h
- DL = drive number
- CH = lower 8 bits of highest cylinder number (number of cylinders - 1)
- CL = sectors per track (bits 0-5)
- top 2 bits of highest cylinder number (bits 6,7)
- Return: AH = status
- 00h requested combination supported
- 01h function not available
- 0Ch not supported or drive type unknown
- 80h there is no disk in the drive
- ES:DI -> 11-byte parameter table (see #01264 at INT 1E)
- Note: this function does not set the INT 1E vector to point at the returned
- parameter table; it is the caller's responsibility to do so
- SeeAlso: AH=05h,AH=07h,AH=17h,INT 1E
- --------d-1318-------------------------------
- INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION
- AH = 18h
- DL = hard drive ID
- Return: CF set on error
- AH = status code (see #00234 at AH=01h)
- CF clear if successful
- AX = 4321h (magic number)
- CX = controller family code (see #00249)
- ---if family code=0200h
- DH = number of exclusively ROM-controlled SCSI devices
- DL = canonical SCSI device number for specified drive
- ---if family code <> 0200h
- BH = number of exclusively ROM-controlled SCSI devices
- BL = canonical SCSI device number for specified drive
- Notes: also sets an internal flag (non-resettable) which prevents some
- controller messages from being displayed, allows writes to
- removable devices (use caution!), and enables the INT 13 interface
- for more than one drive (i.e. DL >= 81h) in at least some ROM
- versions
- the TMC-950 does not support any Future Domain BIOS calls; instead,
- it provides a full CAM implementation (see INT 4F/AX=8100h)
- SeeAlso: AH=05h"SCSI",AX=1700h"SCSI",AH=1Bh"SCSI",INT 4F/AX=8100h
- (Table 00249)
- Values for Future Domain SCSI controller family code:
- 0200h TMC-1680/? (ROM 3.0)
- 0203h TMC-1650/1660/1670/1680 (ROM 2.0)
- 040Ah TMC-820/830/840/850/860/870/875/880/885 (ROM <= 6.0A)
- 050Dh TMC-840/841/880/881 (ROM 5.2D)
- 0700h TMC-830/850/860/875/885 (ROM 7.0)
- --------d-1318--CX5055-----------------------
- INT 13 - PU_1700.COM - INSTALLATION CHECK
- AH = 18h
- CX = 5055h ('PU')
- DL = 00h
- Return: AX = 7570h ('up') if PU_1700 is installed
- Program: PU_1700 is a BIOS enhancer from PU Service Systems which permits
- formatting diskettes at higher capacity (1.78M instead of 1.44M)
- SeeAlso: AX=057Fh/SI=324Dh"2M"
- --------d-1318--CXD2C9-----------------------
- INT 13 - XDF.COM - API
- AH = 18h
- CX = D2C9h ("R"+80h, "I"+80h = Roger Ivey)
- DX = 0000h
- BX = function
- 0000h installation check
- Return: AH = 0Ch
- CX = 7269h ("ri" = Roger Ivey)
- ES = segment of driver
- CF set
- 2F64h ("/d") disable the driver
- Return: AH = 0Ch
- ES:BX = pointer to activation flag (it is set to 0:
- set it to 1 to enable the driver again)
- CX = 7269h
- CF set
- 2F75h ("/u") unload the driver (restore interrupts & free memory)
- Return: AH = 0Ch
- DL = 55h ("U") if successful
- = 00h if fails
- CX = 7269h
- ES = segment of driver
- CF set
- AL, BX, DH, and DI destroyed
- Program: XDF is a TSR provided with PC-DOS 7.0 to support XDF 1.84M disks,
- developed by Roger D. Ivey
- Note: After disabling or enabling the driver, a disk change must be performed
- or simulated to reset the driver.
- --------B-1319-------------------------------
- INT 13 - FIXED DISK - PARK HEADS ON ESDI DRIVE (XT286,PS)
- AH = 19h
- DL = drive
- Return: CF set on error
- CF clear if successful
- AH = status (see #00234 at AH=01h)
- SeeAlso: AH=11h
- --------d-1319-------------------------------
- INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE
- AH = 19h
- DL = hard drive ID
- Return: CF set on error
- AH = status code (see #00234 at AH=01h)
- CF clear if successful
- AH = disk type (03h = fixed disk)
- CX:DX = number of 512-byte sectors
- Notes: sends SCSI Read Capacity command to get number of logical blocks and
- adjusts the result for 512-byte sectors
- displays either "Error in Read Capacity Command" or "nnn Bytes per
- sector" (nnn=256 or 512, the only sizes supported in the translation
- code)
- should probably be called when a removable device has its media changed
- returns the same values as AH=15h
- the TMC-950 does not support any Future Domain BIOS calls; instead,
- it provides a full CAM implementation (see INT 4F/AX=8100h)
- SeeAlso: AH=15h,AH=1Ah,INT 4F/AX=8100h
- --------d-131A-------------------------------
- INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS)
- AH = 1Ah
- AL = defect table entry count
- CL = format modifiers (see #00250)
- DL = drive (80h,81h)
- ES:BX -> defect table (see #00251), ignored if AL=00h
- Return: CF set on error
- CF clear if successful
- AH = status (see #00234 at AH=01h)
- Note: if periodic interrupt selected, INT 15/AH=0Fh is called after each
- cylinder is formatted
- SeeAlso: AH=07h,INT 15/AH=0Fh
- Bitfields for ESDI format modifiers:
- Bit(s) Description (Table 00250)
- 4 generate periodic interrupt
- 3 perform surface analysis
- 2 update secondary defect map
- 1 ignore secondary defect map
- 0 ignore primary defect map
- Format of defect table entry [array]:
- Offset Size Description (Table 00251)
- 00h 3 BYTEs relative sector address (little-endian)
- 03h BYTE flags and defect count
- bit 7: last logical sector on track
- bit 6: first logical sector on track
- bit 5: last logical sector on cylinder
- bit 4: logical sectors are pushed onto next track
- bits 3-0: number of defects pushed from previous cylinder
- --------d-131A-------------------------------
- INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY
- AH = 1Ah
- CH = track (bits 8,9 in high bits of CL)
- CL = sector (01h to number of sectors/track for drive)
- DH = head
- DL = hard drive ID
- Return: CF set on error
- AH = status code (see #00234 at AH=01h)
- CX:DX = logical block number of last quickly-accessible block after
- given block
- Notes: sends SCSI Read Capacity command with the PMI bit set to obtain the
- logical block address of the last block after which a substantial
- delay in data transfer will be encountered (usually the last block
- on the current cylinder). No translation to 512 byte sectors is
- performed on the result if data is stored on the disk in other than
- 512 byte sectors.
- the TMC-950 does not support any Future Domain BIOS calls; instead,
- it provides a full CAM implementation (see INT 4F/AX=8100h)
- SeeAlso: AH=15h,AH=19h"SCSI"
- --------d-131B-------------------------------
- INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER
- AH = 1Bh
- AL = number of sectors to read
- DL = drive
- ES:BX -> buffer for manufacturing header (defect list)
- Return: CF set on error
- CF clear if successful
- AH = status
- Note: manufacturing header format (Defect Map Record format) can be found
- in IBM 70MB, 115MB Fixed Disk Drives Technical Reference
- the first sector read contains the manufacturing header with the number
- of defect entries and the beginning of the defect map; the remaining
- sectors contain the remainder of the defect map
- --------d-131B-------------------------------
- INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO SCSI DISK INFO BLOCK
- AH = 1Bh
- DL = hard drive ID
- Return: CF set on error
- AH = status code (see #00234 at AH=01h)
- CF clear if successful
- ES:BX -> SCSI disk information block (see #00252)
- Notes: also sets a non-resettable flag which prevents some controller messages
- from being displayed
- the TMC-950 does not support any Future Domain BIOS calls; instead,
- it provides a full CAM implementation (see INT 4F/AX=8100h)
- SeeAlso: AH=18h"SCSI",AH=1Ch"SCSI"
- Format of Future Domain SCSI disk information block:
- Offset Size Description (Table 00252)
- 00h BYTE drive physical information (see #00253)
- 01h WORD translated number of cylinders
- 03h BYTE translated number of heads
- 04h BYTE translated number of sectors per track (17, 34, or 63)
- 05h BYTE drive address
- bits 0-2: logical unit number
- bits 3-5: device number
- 06h BYTE 01h at initialization
- 07h BYTE sense code byte 00h, or extended sense code byte 0Ch
- 08h BYTE 00h
- 09h BYTE 00h or extended sense code byte 02h (sense key)
- 0Ah BYTE 00h
- 0Bh 10 BYTEs copy of Command Descriptor Block (CDB) (see #03236,#03237)
- 15h DWORD translated number of sectors on device
- Bitfields for Future Domain SCSI device physical information:
- Bit(s) Description (Table 00253)
- 0 ???
- 1 device uses parity
- 2 256 bytes per sector instead of 512
- 3 don't have capacity yet???
- 4 disk is removable
- 5 logical unit number is not present
- --------d-131C-------------------------------
- INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM
- AH = 1Ch
- DL = hard drive ID (any valid SCSI hard disk)
- Return: CF set on error
- AH = status code (see #00234 at AH=01h)
- CF clear if successful
- ES:BX -> first byte of free RAM on controller
- Notes: the Future Domain TMC-870 contains 1024 bytes of RAM at offsets 1800h
- to 1BFFh on-board the controller for storing drive information and
- controller status; ES:BX points to the first byte available for other
- uses
- ES contains the segment at which the controller resides; the
- controller's two memory-mapped I/O ports are at offsets 1C00h, 1E00h
- SeeAlso: AH=1Bh"SCSI"
- --------d-131C-------------------------------
- INT 13 U - ESDI FIXED DISK - ???
- AH = 1Ch
- AL = subfunction (01h-06h)
- DL = drive (80h,81h)
- ???
- Return: ???
- Note: these functions perform a controller command 0612h without DMA
- SeeAlso: AX=1C08h,PORT 3510h"ESDI"
- --------d-131C08-----------------------------
- INT 13 U - ESDI FIXED DISK - GET COMMAND COMPLETION STATUS
- AX = 1C08h
- DL = drive (80h,81h)
- ES:BX -> buffer for Command Complete Status Block (see #00254)
- Return: CF set on error
- CF clear if successful
- AH = status (see #00234 at AH=01h)
- SeeAlso: AX=1C09h,AX=1C0Ah,PORT 3510h"ESDI"
- Format of ESDI Command Complete Status Block:
- Offset Size Description (Table 00254)
- 00h BYTE 07h
- 01h BYTE size of block in words (07h)
- 02h BYTE command error code (see #00255)
- 03h BYTE command status code (see #00256)
- 04h BYTE device error code, group 1 (see #00257)
- 05h BYTE device error flags, group 2 (see #00258)
- 06h WORD number of unprocessed sectors due to abnormal termination
- 08h DWORD last Relative Sector Address processed by command
- 0Ch WORD number of sectors corrected by ECC codes
- (Table 00255)
- Values for ESDI command error code:
- 00h successful
- 01h parameter invalid
- 02h unknown function
- 03h unsupported command
- 04h command cancelled
- 05h unknown function
- 06h controller diagnostics failed
- 07h formatting failed
- 08h format error in primary map
- 09h format error in secondary map
- 0Ah diagnostic failure during formatting
- 0Bh warning: secondary map too large during formatting
- 0Ch warning: non-zero defect
- 0Dh system checksum error during formatting
- 0Eh warning: incompatible device
- 0Fh warning: push table overflowed
- 10h warning: more than 15 sectors pushed to next cylinder
- 11h internal hardware error
- 12h warning: errors found while verifying sectors
- 13h invalid device
- FFh device error
- (Table 00256)
- Values for ESDI command status code:
- 01h successful
- 03h successful after ECC
- 05h successful after retries
- 06h format partially completed
- 07h successful after ECC and retries
- 08h command completed with warning (see #00255)
- 09h abort complete
- 0Ah reset complete
- 0Bh data transfer ready (no status block)
- 0Ch command completed with failure (see #00257,#00258)
- 0Dh DMA error
- 0Eh command block error (see #00255)
- 0Fh bad attention code
- SeeAlso: #00257
- (Table 00257)
- Values for ESDI device error code, group 1:
- 00h successful
- 01h seek fault detected by device
- 02h interface fault
- 03h sector ID not found
- 04h disk not formatted
- 05h unrecoverable ECC error
- 06h ECC error in sector ID
- 07h invalid relative sector address
- 08h timeout
- 09h sector defective
- 0Ah disk changed (removable media)
- 0Bh selection error
- 0Ch write protected (removable media)
- 0Dh write fault
- 0Eh read fault
- 0Fh no index or sector pulse
- 10h device not ready
- 11h seek error detected by adapter
- 12h bad format
- 13h volume overflow
- 14h data address mark not found
- 15h sector ID not found
- 16h missing device configuration data
- 17h first/last relative sector flags missing
- 18h track empty
- 81h timeout while waiting for stop
- 82h timeout while waiting for end of data transfer
- 84h stopped awaiting data transfer during formatting
- 85h timeout while waiting for head switch
- 86h timeout while awaiting DMA completion
- SeeAlso: #00256,#00258
- Bitfields for ESDI device error flags, group 2:
- Bit(s) Description (Table 00258)
- 7-5 unused
- 4 ready
- 3 selected
- 2 write fault
- 1 on track 0
- 0 seek/command complete
- SeeAlso: #00257
- --------d-131C09-----------------------------
- INT 13 U - ESDI FIXED DISK - GET DEVICE STATUS
- AX = 1C09h
- DL = drive (80h,81h)
- ES:BX -> buffer for Device Status Block (see #00259)
- Return: CF set on error
- CF clear if successful
- AH = status (see #00234 at AH=01h)
- SeeAlso: AX=1C08h,AX=1C0Ah,PORT 3510h"ESDI"
- Format of ESDI Device Status Block:
- Offset Size Description (Table 00259)
- 00h BYTE 08h
- 01h BYTE number of words in block (09h)
- 02h BYTE error flags
- 03h BYTE unused
- 04h BYTE command error code (see #00255)
- 05h BYTE command status code (see #00256)
- 06h WORD ESDI standard status
- 08h 5 WORDs ESDI vendor-specific status codes
- --------d-131C0A-----------------------------
- INT 13 U - ESDI FIXED DISK - GET DEVICE CONFIGURATION
- AX = 1C0Ah
- DL = drive (80h,81h)
- ES:BX -> buffer for Drive Configuration Status Block (see #00260)
- Return: CF set on error
- CF clear if successful
- AH = status (see #00234 at AH=01h)
- Note: device configuration format can be found in IBM ESDI Fixed Disk Drive
- Adapter/A Technical Reference
- SeeAlso: AX=1C08h,AX=1C0Bh,AX=1C0Ch
- Format of ESDI Drive Configuration Status Block:
- Offset Size Description (Table 00260)
- 00h BYTE 09h
- 01h BYTE number of words in block (06h)
- 02h BYTE flags
- 03h BYTE number of spare sectors per cylinder
- 04h DWORD total number of usable sectors
- 08h WORD total number of cylinders
- 0Ah BYTE tracks per cylinder
- 0Bh BYTE sectors per track
- --------d-131C0B-----------------------------
- INT 13 U - ESDI FIXED DISK - GET ADAPTER CONFIGURATION
- AX = 1C0Bh
- ES:BX -> buffer for Controller Configuration Status Block (see #00261)
- Return: CF set on error
- CF clear if successful
- AH = status (see #00234 at AH=01h)
- SeeAlso: AX=1C0Ch
- Format of ESDI Controller Configuration Status Block:
- Offset Size Description (Table 00261)
- 00h BYTE E9h
- 01h BYTE number of words in block (06h)
- 02h WORD unused (0000h)
- 04h DWORD controller microcode revision level
- 08h 2 WORDs unused (0000h)
- --------d-131C0C-----------------------------
- INT 13 U - ESDI FIXED DISK - GET POS INFORMATION
- AX = 1C0Ch
- ES:BX -> buffer for POS Information Status Block (see #00262)
- Return: CF set on error
- CF clear if successful
- AH = status (see #00234 at AH=01h)
- SeeAlso: AX=1C0Bh
- Format of ESDI POS Information Status Block:
- Offset Size Description (Table 00262)
- 00h BYTE EAh
- 01h BYTE number of words in block (05h)
- 02h WORD magic value FFDDh
- 04h BYTE POS register 3
- 05h BYTE POS register 2
- 06h BYTE POS register 5 (unused, FFh)
- 07h BYTE POS register 4 (unused, FFh)
- 08h BYTE POS register 7 (unused, FFh)
- 09h BYTE POS register 6 (unused, FFh)
- --------d-131C0D-----------------------------
- INT 13 U - ESDI FIXED DISK - ???
- AX = 1C0Dh
- DL = drive (80h,81h)
- ???
- Return: ???
- Note: invokes controller command 0614h without DMA
- SeeAlso: AH=1Ch"ESDI",AX=1C0Fh,PORT 3510h"ESDI"
- --------d-131C0E-----------------------------
- INT 13 U - ESDI FIXED DISK - TRANSLATE RBA TO ABA
- AX = 1C0Eh
- CH = low 8 bits of cylinder number
- CL = sector number, high two bits of cylinder number in bits 6 and 7
- DH = head number
- DL = drive number (80h,81h)
- ES:BX -> ABA number
- Return: CF set on error
- CF clear if successful
- AH = status (see #00234 at AH=01h)
- Note: ABA (absolute block address) format can be found in IBM ESDI Adapter
- Technical Reference by using its Device Configuration Status Block
- SeeAlso: AX=1C08h,AX=1C0Fh,PORT 3510h"ESDI"
- --------d-131C0F-----------------------------
- INT 13 U - ESDI FIXED DISK - ???
- AX = 1C0Fh
- DL = drive (80h,81h)
- ???
- Return: ???
- Note: invokes controller command 0614h without DMA
- SeeAlso: AH=1Ch"ESDI",AX=1C0Dh,AX=1C12h,PORT 3510h"ESDI"
- --------d-131C12-----------------------------
- INT 13 U - ESDI FIXED DISK - ???
- AX = 1C12h
- DL = drive (80h,81h)
- ???
- Return: ???
- Note: invokes controller command 0612h without DMA
- SeeAlso: AH=1Ch"ESDI",AX=1C0Fh,PORT 3510h"ESDI"
- --------c-131D-------------------------------
- INT 13 - IBMCACHE.SYS - CACHE STATUS
- AH = 1Dh
- AL = subfunction
- 01h get status record
- DL = drive???
- Return: ES:BX -> status record (see #00263)
- CF set on error
- AH = error code
- 02h set cache status
- ES:BX -> status record (see #00263)
- DL = drive???
- Return: CF set on error
- Format of IBMCACHE.SYS status record:
- Offset Size Description (Table 00263)
- 00h DWORD total number of read requests
- 04h DWORD total number of hits
- 08h DWORD number of physical disk reads
- 0Ch DWORD total number of sectors requested by physical disk reads
- 10h 6 BYTEs ???
- 16h DWORD pointer to start of error list (see #00264)
- 1Ah DWORD pointer to end of error list
- 1Eh WORD ???
- 20h BYTE using extended memory if nonzero
- 21h BYTE ???
- 22h 4 BYTEs ASCII version number
- 26h WORD cache size in KB
- 28h WORD sectors per page
- Format of IBMCACHE.SYS error list:
- Offset Size Description (Table 00264)
- 00h DWORD relative block address of bad page
- 04h BYTE drive
- 05h BYTE sector bit-map
- 06h WORD next error
- --------d-131F-------------------------------
- INT 13 - SyQuest - DOOR LATCH/DOOR BUTTON DETECT
- AH = 1Fh
- AL = subfunction
- 00h allow media removal
- 01h prevent media removal (lock door)
- DL = drive ID (bit 7 set for hard disks)
- Return: CF clear if successful
- AH = 00h
- CF set on error
- AH = error code
- 00h successful
- 01h invalid function request
- 80h timeout
- DDh media change requested
- SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=59h"SyQuest"
- --------d-1320-------------------------------
- INT 13 - DISK - ??? (Western Digital "Super BIOS")
- AH = 20h
- ???
- Return: ???
- Notes: returns some kind of status related to whether the drive contains its
- default media type
- QEMM v6.00 calls INT 13/AX=2000h/DL=81h in some cases
- --------b-1320-------------------------------
- INT 13 U - Compaq, ATAPI Removable Media Device - GET CURRENT MEDIA FORMAT
- AH = 20h
- DL = drive number (00h,01h)
- Return: CF clear if successful
- AL = media type (see #00265)
- AH = 00h
- CF set on error
- AH = error code
- 01h invalid request
- 30h drive does not support media sense
- 31h no such drive / media not present
- 32h non-default media / drive does not supporte media type
- Notes: this function is supported by the 3/8/93 ROM BIOS, but only partially
- (AL is always 00h when successful) by the 8/3/93 version
- this function is also supported by some recent versions of the Phoenix
- 486 BIOS
- (Table 00265)
- Values for Compaq/ATAPI diskette media type:
- 03h 720K (1M unformatted)
- 04h 1.44M (2M unformatted)
- 06h 2.88M (4M unformatted)
- 0Ch 360K
- 0Dh 1.2M
- 0Eh Toshiba 3mode
- 0Fh NEC 3mode (1024-byte sectors)
- 10h ATAPI Removable Media Device
- --------c-1320-------------------------------
- INT 13 u - QUICKCACHE II v4.20 - DISMOUNT
- AH = 20h
- AL = drive (00h = A:, etc. or 7Fh for all removable drives???
- or FFh for all drives)
- Return: AX = status (0000h successful)
- Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
- Associates, Inc.
- Desc: flush any dirty buffers for the specified drive(s) and then discard
- those sector buffers
- SeeAlso: AH=21h"QUICKCACHE",AH=22h"QUICKCACHE",AH=28h
- --------d-1321-------------------------------
- INT 13 - HARD DISK - PS/1 and newer PS/2 - READ MULTIPLE DISK SECTORS
- AH = 21h
- AL = number of sectors to write
- CH = low byte of 12-bit cylinder number
- CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7)
- DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7)
- DL = drive number (80h,81h)
- ES:BX -> buffer for data to be read
- Return: CF clear if successful
- ES:BX buffer filled
- CF set on error
- AH = status (see #00234 at AH=01h)
- Desc: read from the disk using the Multiple Block mode available on newer
- IDE drives and some hard disk controllers, which generates an
- interrupt only after the end of transferring a group of sectors
- rather than after each sector
- Notes: must call AH=24h"PS/1" before using this function
- input values in CL and DH are not range-checked
- the byte at address 0040h:0074h is set to the status of the operation
- SeeAlso: AH=02h,AH=22h"PS/1",AH=23h"PS/1",AH=24h"PS/1"
- --------c-1321-------------------------------
- INT 13 u - QUICKCACHE II v4.20 - FLUSH CACHE
- AH = 21h
- Return: AX = status (0000h successful)
- Desc: immediately write all dirty sectors back to disk
- SeeAlso: AH=25h"QUICKCACHE",AH=2Eh,AH=2Fh
- --------d-1322-------------------------------
- INT 13 - HARD DISK - PS/1 and newer PS/2 - WRITE MULTIPLE DISK SECTORS
- AH = 22h
- AL = number of sectors to write
- CH = low byte of 12-bit cylinder number
- CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7)
- DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7)
- DL = drive number (80h,81h)
- ES:BX -> buffer containing data to be written
- Return: CF clear if successful
- CF set on error
- AH = status (see #00234 at AH=01h)
- Desc: write to the disk using the Multiple Block mode available on newer
- IDE drives and some hard disk controllers, which generates an
- interrupt only after the end of transferring a group of sectors
- rather than after each sector
- Notes: must call AH=24h"PS/1" before using this function
- input values in CL and DH are not range-checked
- the byte at address 0040h:0074h is set to the status of the operation
- SeeAlso: AH=03h,AH=21h"PS/1",AH=23h"PS/1",AH=24h"PS/1"
- --------c-1322-------------------------------
- INT 13 u - QUICKCACHE II v4.20 - ENABLE/DISABLE CACHE
- AH = 22h
- AL = new state (00h disabled, 01h enabled)
- Return: AX = status (0000h successful)
- Note: enables/disables caching of all drives
- SeeAlso: AH=2Ch,AH=2Dh,AH=32h,AH=33h,AH=A3h,AH=A4h
- --------d-1323-------------------------------
- INT 13 U - HARD DISK - PS/1 and newer PS/2 - SET CONTROLLER FEATURES REGISTER
- AH = 23h
- AL = feature number (see #00266)
- DL = drive number (80h,81h)
- ???
- Return: CF clear if successful
- CF set on error
- AH = status (see #00234 at AH=01h)
- SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=24h"PS/1",AH=25h"PS/1"
- (Table 00266)
- Values for PS/1 hard disk feature number:
- 01h select 8-bit data transfers instead of 16-bit
- 02h enable write cache
- 22h Write Same, user-specified area
- 33h disable retries
- 44h set number of ECC bytes for read long/write long (see AH=0Ah,AH=0Bh)
- 54h set cache segments
- 55h disable lookahead
- 66h disable reverting to power-on defaults
- 77h disable error correctioni
- 81h select 16-bit data transfers (default)
- 82h disable write cache
- 88h enable error correction (default)
- 99h enable retries (default)
- AAh enable lookahead
- BBh set ECC length for read long/write long to four bytes
- CCh enable reverting to power-on defaults
- DDh Write Same, entire disk
- SeeAlso: #P0535
- --------c-1323-------------------------------
- INT 13 U - QUICKCACHE II v4.20 - GET ??? ADDRESS
- AH = 23h
- Return: AX = status (0000h successful)
- ES = segment of ??? data
- --------d-1324-------------------------------
- INT 13 - HARD DISK - PS/1 and newer PS/2 - SET MULTIPLE MODE
- AH = 24h
- AL = number of sectors per block (2,4,8,16)
- DL = drive number (80h,81h)
- Return: CF clear if successful
- CF set onerror
- AH = status (see #00234 at AH=01h)
- Desc: specify how many sectors the controller should transfer as a group
- between operation-complete interrupts when using the Read Multiple
- and Write Multiple functions (AH=21h,AH=22h)
- Notes: set the number of sectors to 0 to disable multiple-transfer mode
- the maximum value for the block size depends on the fixed disk
- drive type. The value is stored in byte 15h of the fixed disk
- drive parameter table that is created by POST.
- the byte at address 0040h:0074h is set to status of operation.
- SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=23h"PS/1",AH=25h"PS/1"
- --------c-1324-------------------------------
- INT 13 u - QUICKCACHE II v4.20 - SET SECTORS
- AH = 24h
- BX = new number of sector buffers in cache
- Return: AX = status
- 0000h successful
- 0001h failed--size adjusted
- 8000h cache cannot be resized while enabled
- SeeAlso: AH=36h
- --------d-1325-------------------------------
- INT 13 - HARD DISK - PS/1 and newer PS/2 - IDENTIFY DRIVE
- AH = 25h
- DL = drive number (80h,81h)
- ES:BX-> 512 byte buffer for reply packet
- Return: CF clear if successful
- CF set on error
- AH = status (see #00234 at AH=01h)
- buffer filled with ATA/IDE-style drive information block (see #00267)
- Desc: retrieves the 256 words of drive data stored on an IDE hard disk
- Notes: the byte at address 0040h:0074h is set to the status of the operation
- IBM officially classifies this function as optional
- SeeAlso: AH=23h"PS/1"
- Format of drive information block:
- Offset Size Description (Table 00267)
- 00h WORD general drive configuration (see #00268)
- 02h WORD number of cylinders
- 04h WORD reserved
- 06h WORD number of heads
- 08h WORD number of unformatted bytes per track
- 0Ah WORD number of unformatted bytes per sector
- 0Ch WORD number of sectors per track
- 0Eh 6 BYTEs vendor unique
- 14h 20 BYTEs serial number in ASCII, 0000h=not specified)
- 28h WORD buffer type
- 2Ah WORD buffer size in 512 byte increments (0000h=not specified)
- 2Ch WORD number of ECC bytes passed on Read/Write Long cmds
- 0000h = not specified
- 2Eh 8 BYTEs firmware revision in ASCII, 0000h=not specified
- 36h 40 BYTEs model number in ASCII, 0000h=not specified
- 5Eh WORD bits 15-8 Vendor Unique
- bits 7-0 00h = Read/Write Multiple commands not implemented
- xxh = Maximum number of sectors that can be
- transferred per interrupt on Read and Write
- Multiple commands
- 60h WORD 0000h = cannot perform doubleword I/O
- 0001h = can perform doubleword I/O
- 62h WORD capabilities
- bit 15-9 0=reserved
- bit 8 1=DMA Supported
- bit 7-0 Vendor Unique
- 64h WORD reserved
- 66h WORD bits 15-8 PIO data transfer cycle timing mode
- bits 7-0 Vendor Unique
- 68h WORD bits 15-8 DMA data transfer cycle timing mode
- bits 7-0 Vendor Unique
- 6Ah WORD bits 15-1 reserved
- bit 0 1=the fields reported in tranlation mode are valid
- 0=the fields reported in translation mode may be valid
- 6Ch WORD number of current cylinders
- 6Eh WORD number of current heads
- 70h WORD number of current sectors per track
- 72h DWORD current capacity in sectors
- 76h WORD reserved
- 78h 136 BYTEs not defined by ATA spec 2.6
- 100h 64 BYTEs vendor unique
- 140h 96 BYTEs reserved
- Note: the above description is as in the ATA (AT Attachment) Specification.
- SeeAlso: #P0516
- Bitfields for general drive configuration:
- Bit(s) Description (Table 00268)
- 15 0 reserved for non-magnetic drives
- 14 format speed tolerance gap required
- 13 track offset option available
- 12 data strobe offset option available
- 11 rotational speed tolerance is > 0.5%
- 10 disk transfer rate > 10 Mbs
- 9 disk transfer rate > 5Mbs but <= 10Mbs
- 8 disk transfer rate <= 5Mbs
- 7 removable cartridge drive
- 6 fixed drive
- 5 spindle motor control option implemented
- 4 head switch time > 15 usec
- 3 not MFM encoded
- 2 soft sectored
- 1 hard sectored
- 0 reserved (0)
- --------c-1325-------------------------------
- INT 13 u - QUICKCACHE II v4.20 - SET FLUSH INTERVAL
- AH = 25h
- BX = interval
- Return: AX = status (0000h successful)
- Desc: specify how often the cache should write dirty buffers to disk when
- buffered writes are enabled
- SeeAlso: AH=21h"QUICKCACHE",AH=2Ch,AH=2Eh
- --------c-1326-------------------------------
- INT 13 U - QUICKCACHE II v4.20 - UNINSTALL
- AH = 26h
- Return: AX = status
- 0000h successful
- 0001h-00FFh interrupt vector which was hooked by another TSR
- SeeAlso: AH=27h
- --------c-1327--BX0000-----------------------
- INT 13 u - QUICKCACHE II v4.20 - INSTALLATION CHECK
- AH = 27h
- BX = 0000h
- Return: AX = 0000h if installed
- BX nonzero if installed
- BH = major version
- BL = binary minor version
- Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
- Associates, Inc.
- SeeAlso: AH=26h,AH=A0h,INT 16/AX=FFA5h/CX=1111h
- --------c-1328-------------------------------
- INT 13 U - QUICKCACHE II v4.20 - SET AUTOMATIC DISMOUNT
- AH = 28h
- AL = new state (00h disabled, 01h enabled)
- Return: AX = status (0000h successful)
- SeeAlso: AH=20h"QUICKCACHE"
- --------c-1329-------------------------------
- INT 13 U - QUICKCACHE II v4.20 - NOP
- AH = 29h
- Return: AX = 0000h
- --------c-132A-------------------------------
- INT 13 u - QUICKCACHE II v4.20 - SET BUFFER SIZE
- AH = 2Ah
- AL = buffer size (1-30)
- Return: AX = status (0000h successful)
- Desc: specify the number of cache sector buffers to dedicate to buffered read
- and write operations
- SeeAlso: AH=2Ch,AH=2Dh,AH=39h,AH=3Ah
- --------c-132B-------------------------------
- INT 13 U - QUICKCACHE II v4.20 - DRIVE ACCESS SOUNDS
- AH = 2Bh
- AL = new state (00h disabled, 01h enabled)
- Return: AX = status (0000h successful)
- --------c-132C-------------------------------
- INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED WRITES
- AH = 2Ch
- AL = new state (00h disabled, 01h enabled)
- Return: AX = status (0000h successful)
- Desc: specify whether the cache should delay disk writes
- Note: this function enables or disables delayed writes for all drives; use
- AH=38h to change a single drive
- SeeAlso: AH=25h"QUICKCACHE",AH=2Dh,AH=2Eh,AH=38h
- --------c-132D-------------------------------
- INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED READ
- AH = 2Dh
- AL = new state (00h disabled, 01h enabled)
- Return: AX = status (0000h successful)
- Desc: specify whether the cache should attempt to read ahead of actual
- requests
- Note: this function enables or disables read-ahead for all drives; use AH=37h
- to change a single drive
- SeeAlso: AH=2Ch,AH=37h
- --------c-132E-------------------------------
- INT 13 u - QUICKCACHE II v4.20 - SET FLUSH COUNT
- AH = 2Eh
- BX = flush count
- Return: AX = status (0000h successful)
- Desc: specify how many dirty sectors the cache should write after each flush
- interval (see AH=25h"QUICKCACHE") when buffered writes are enabled
- SeeAlso: AH=21h"QUICKCACHE",AH=25h"QUICKCACHE",AH=2Ch
- --------c-132F-------------------------------
- INT 13 - QUICKCACHE II v4.20 - FORCE IMMEDIATE INCREMENTAL FLUSH
- AH = 2Fh
- Return: AX = status (0000h successful)
- Desc: immediately flush up to "flushcount" dirty sectors to disk as if the
- flush interval had expired
- SeeAlso: AH=21h"QUICKCACHE"
- --------c-1330-------------------------------
- INT 13 u - QUICKCACHE II v4.20 - GET INFO
- AH = 30h
- AL = what to get
- 00h system info (see #00269)
- 01h drive info (see #00270)
- 02h access frequency (array of 30 words)
- 03h drive index
- (array of 32 bytes indicating BIOS drive for DOS drive)
- DS:DX -> buffer for info
- Return: AX = status (0000h successful, 8000h invalid info specifier)
- Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
- Associates, Inc.
- Format of QUICKCACHE II system info:
- Offset Size Description (Table 00269)
- 00h BYTE flag: cache enabled
- 01h BYTE flag: buffered writes enabled
- 02h BYTE flag: buffered reads enabled
- 03h BYTE flag: sounds enabled
- 04h BYTE flag: autodismount enabled
- 05h BYTE ???
- 06h BYTE flag: ???
- 07h BYTE flag: ???
- 08h BYTE flag: "em_assigned"
- 09h BYTE flag: emulated EMS
- 0Ah BYTE single sector bonus
- 0Bh BYTE "sticky_max"
- 0Ch BYTE write sector bonus
- 0Dh BYTE bonus threshold
- 0Eh WORD flush interval
- 10h WORD flush count
- 12h WORD reserve pool size
- 14h WORD remaining space in reserve pool
- 16h WORD required free memory
- 18h WORD total cache sectors
- 1Ah WORD dirty cache sectors
- 1Ch BYTE trace buffer size
- 1Dh BYTE reserved (padding)
- SeeAlso: #00270
- Format of QUICKCACHE II drive info [16-element array, one element]:
- Offset Size Description (Table 00270)
- 00h BYTE DOS drive number
- 01h BYTE BIOS drive number
- 02h BYTE maximum sector number
- 03h BYTE maximum head number
- 04h BYTE read buffer size
- 05h BYTE write buffer size
- 06h BYTE last status
- 07h BYTE flag: enabled
- 08h BYTE flag: buffered write enabled
- 09h BYTE flag: buffered read enabled
- 0Ah BYTE flag: in use (drive info is valid)
- 0Bh BYTE flag: cylinder flush
- 0Ch BYTE reserved (padding)
- 0Dh BYTE sectors per track
- 0Eh WORD sector size
- 10h WORD sectors assigned
- 12h WORD dirty sectors
- 14h WORD reserved sectors
- 16h WORD number of read errors
- 18h WORD number of write errors
- 1Ah DWORD "rio_count"
- 1Eh DWORD number of cache misses
- 22h DWORD "wio_count"
- 26h DWORD "dio_count"
- SeeAlso: #00269
- --------c-1331-------------------------------
- INT 13 U - QUICKCACHE II v4.20 - RESERVE MEMORY
- AH = 31h
- BX = number of paragraphs of conventional memory to reserve for apps
- Return: AX = status (0000h successful)
- --------c-1332-------------------------------
- INT 13 U - QUICKCACHE II v4.20 - ENABLE CACHING FOR SPECIFIC DRIVE
- AH = 32h
- AL = drive number (00h=A:)
- Return: AX = status (0000h successful)
- SeeAlso: AH=22h"QUICKCACHE",AH=33h
- --------c-1333-------------------------------
- INT 13 U - QUICKCACHE II v4.20 - DISABLE CACHING FOR SPECIFIC DRIVE
- AH = 33h
- AL = drive number (00h=A:)
- Return: AX = status (0000h successful)
- SeeAlso: AH=22h"QUICKCACHE",AH=32h
- --------c-1334-------------------------------
- INT 13 U - QUICKCACHE II v4.20 - SECTOR LOCKING
- AH = 34h
- AL = function
- 00h end sector locking/unlocking
- 01h lock all accessed sectors into cache
- 02h unlock all accessed sectors and discard from cache
- Return: AX = status (0000h successful)
- SeeAlso: AH=20h"QUICKCACHE",AH=35h
- --------c-1335-------------------------------
- INT 13 U - QUICKCACHE II v4.20 - SET LOCK POOL SIZE
- AH = 35h
- BX = number of sectors in lock pool
- Return: AX = status (0000h successful)
- Desc: specify the number of cache sector buffers which may be dedicated to
- data locked into the cache
- SeeAlso: AH=34h
- --------c-1336-------------------------------
- INT 13 U - QUICKCACHE II v4.20 - SET TRACE BUFFER SIZE
- AH = 36h
- AL = new size of trace buffer
- Return: AX = status (0000h successful)
- Note: called with AL=05h during an INT 13/AH=24h"QUICKCACHE" call
- SeeAlso: AH=24h"QUICKCACHE"
- --------c-1337-------------------------------
- INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED READS FOR SPECIFIC DRIVE
- AH = 37h
- AL = new state (00h disabled, else enabled)
- DL = drive number (00h = A:)
- Return: AX = status (0000h successful)
- SeeAlso: AH=2Dh,AH=38h
- --------c-1338-------------------------------
- INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED WRITES FOR SPECIFIC DRIVE
- AH = 38h
- AL = new state (00h disabled, else enabled)
- DL = drive number (00h = A:)
- Return: AX = status (0000h successful)
- SeeAlso: AH=2Ch,AH=37h
- --------c-1339-------------------------------
- INT 13 U - QUICKCACHE II v4.20 - SET READ BUFFER SIZE FOR SPECIFIC DRIVE
- AH = 39h
- AL = new size of read buffer
- DL = drive number (00h = A:)
- Return: AX = status (0000h successful)
- Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
- Associates, Inc.
- SeeAlso: AH=2Ah,AH=3Ah
- --------c-133A-------------------------------
- INT 13 U - QUICKCACHE II v4.20 - SET WRITE BUFFER SIZE FOR SPECIFIC DRIVE
- AH = 3Ah
- AL = new size of write buffer
- DL = drive number (00h = A:)
- Return: AX = status (0000h successful)
- SeeAlso: AH=2Ah,AH=39h
- --------c-133B-------------------------------
- INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
- AH = 3Bh
- AL = new state of ??? (01h enabled, else disabled)
- Return: AX = status (0000h successful)
- Note: is affected by the flag reported at offset 05h of the system info
- returned by AH=30h, and sets the flag at offset 06h
- SeeAlso: AH=3Ch
- --------c-133C-------------------------------
- INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
- AH = 3Ch
- AL = new state of ??? (01h enabled, else disabled)
- Return: AX = status (0000h successful)
- Note: is affected by the flag reported at offset 05h of the system info
- returned by AH=30h, and sets the flag at offset 07h
- SeeAlso: AH=3Bh
- --------c-133D-------------------------------
- INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE CYLINDER FLUSH FOR DRIVE
- AH = 3Dh
- AL = new state (01h enabled, else disabled)
- DL = drive number (00h = A:)
- Return: AX = status (0000h successful)
- --------c-133E-------------------------------
- INT 13 U - QUICKCACHE II v4.20 - SET SINGLE-SECTOR BONUS
- AH = 3Eh
- AL = new value for bonus
- Return: AX = status (0000h successful)
- Desc: specify the bonus score to give to single-sector transfers in order to
- keep those sectors in the cache longer
- --------c-133F-------------------------------
- INT 13 U - QUICKCACHE II v4.20 - SET BONUS THRESHOLD
- AH = 3Fh
- AL = new value for bonus threshold
- Return: AX = status (0000h successful)
- --------c-1340-------------------------------
- INT 13 U - QUICKCACHE II v4.20 - SET "sticky_max"
- AH = 40h
- AL = new value for "sticky_max"
- Return: AX = status (0000h successful)
- SeeAlso: AH=41h"QUICKCACHE"
- --------d-1341--BX55AA-----------------------
- INT 13 - IBM/MS INT 13 Extensions - INSTALLATION CHECK
- AH = 41h
- BX = 55AAh
- DL = drive (80h-FFh)
- Return: CF set on error (extensions not supported)
- AH = 01h (invalid function)
- CF clear if successful
- BX = AA55h if installed
- AH = major version of extensions
- 01h = 1.x
- 20h = 2.0 / EDD-1.0
- 21h = 2.1 / EDD-1.1
- 30h = EDD-3.0
- AL = internal use
- CX = API subset support bitmap (see #00271)
- DH = extension version (v2.0+ ??? -- not present in 1.x)
- Note: the Phoenix Enhanced Disk Drive Specification v1.0 uses version 2.0 of
- the INT 13 Extensions API
- SeeAlso: AH=42h"INT 13 Ext",AH=48h"INT 13 Ext"
- Bitfields for IBM/MS INT 13 Extensions API support bitmap:
- Bit(s) Description (Table 00271)
- 0 extended disk access functions (AH=42h-44h,47h,48h) supported
- 1 removable drive controller functions (AH=45h,46h,48h,49h,INT 15/AH=52h)
- supported
- 2 enhanced disk drive (EDD) functions (AH=48h,AH=4Eh) supported
- extended drive parameter table is valid (see #00273,#00278)
- 3-15 reserved (0)
- --------c-1341-------------------------------
- INT 13 U - QUICKCACHE II v4.20 - SAVE/RESTORE ???
- AH = 41h
- AL = direction
- 01h save to file
- else restore from file
- ES:DI -> 1024-byte buffer for ???
- Return: AX = status (0000h successful, 8000h failed)
- Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
- Associates, Inc.
- SeeAlso: AH=40h"QUICKCACHE"
- --------d-1342-------------------------------
- INT 13 - IBM/MS INT 13 Extensions - EXTENDED READ
- AH = 42h
- DL = drive number
- DS:SI -> disk address packet (see #00272)
- Return: CF clear if successful
- AH = 00h
- CF set on error
- AH = error code (see #00234)
- disk address packet's block count field set to number of blocks
- successfully transferred
- SeeAlso: AH=02h,AH=41h"INT 13 Ext",AH=43h"INT 13 Ext"
- Format of disk address packet:
- Offset Size Description (Table 00272)
- 00h BYTE 10h (size of packet)
- 01h BYTE reserved (0)
- 02h WORD number of blocks to transfer (max 007Fh for Phoenix EDD)
- 04h DWORD -> transfer buffer
- 08h QWORD starting absolute block number
- (for non-LBA devices, compute as
- (Cylinder*NumHeads + SelectedHead) * SectorPerTrack +
- SelectedSector - 1
- --------N-134257DX1234-----------------------
- INT 13 U - Beame&Whiteside BWLPD - INSTALLATION CHECK
- AX = 4257h ("BW")
- DX = 1234h
- Return: BX = 414Ch if installed
- Program: BWLPD is the printer daemon from the BW-NFS package
- SeeAlso: INT 62/AH=00h"ETHDEV"
- --------d-1343-------------------------------
- INT 13 - IBM/MS INT 13 Extensions - EXTENDED WRITE
- AH = 43h
- AL = write flags
- ---v1.0,2.0---
- bit 0: verify write
- bits 7-1 reserved (0)
- ---v2.1+ ---
- 00h,01h write without verify
- 02h write with verify
- DL = drive number
- DS:SI -> disk address packet (see #00272)
- Return: CF clear if successful
- AH = 00h
- CF set on error
- AH = error code (see #00234)
- disk address packet's block count field set to number of blocks
- successfully transferred
- Note: the BIOS returns CF set/AH=01h (invalid function) if verify is
- requested but not supported
- SeeAlso: AH=03h,AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=44h
- --------d-1344-------------------------------
- INT 13 - IBM/MS INT 13 Extensions - VERIFY SECTORS
- AH = 44h
- DL = drive number
- DS:SI -> disk address packet (see #00272)
- Return: CF clear if successful
- AH = 00h
- CF set on error
- AH = error code (see #00234)
- disk address packet's block count field set to number of blocks
- successfully verified
- SeeAlso: AH=04h,AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=47h
- --------d-1345-------------------------------
- INT 13 - IBM/MS INT 13 Extensions - LOCK/UNLOCK DRIVE
- AH = 45h
- AL = operation
- 00h lock media in drive
- 01h unlock media
- 02h check lock status
- DL = drive number
- Return: CF clear if successful
- AH = 00h
- AL = lock state (00h = unlocked)
- CF set on error
- AH = error code (see #00234)
- Notes: this function is required to be supported for any removable drives
- numbered 80h or higher
- up to 255 locks may be placed on a drive, and the media will not
- be physically unlocked until all locks have been removed
- SeeAlso: AH=41h"INT 13 Ext",AH=46h,AH=49h,INT 15/AH=52h"INT 13 Extensions"
- --------d-1346-------------------------------
- INT 13 - IBM/MS INT 13 Extensions - EJECT MEDIA
- AH = 46h
- AL = 00h (reserved)
- DL = drive number
- Return: CF clear if successful
- AH = 00h
- CF set on error
- AH = error code (see #00234)
- SeeAlso: AH=49h,INT 15/AH=52h"INT 13 Extensions"
- --------d-1347-------------------------------
- INT 13 - IBM/MS INT 13 Extensions - EXTENDED SEEK
- AH = 47h
- DL = drive number
- DS:SI -> disk address packet (see #00272)
- Return: CF clear if successful
- AH = 00h
- CF set on error
- AH = error code (see #00234)
- SeeAlso: AH=0Ch,AH=42h"INT 13 Ext"
- --------d-1348-------------------------------
- INT 13 - IBM/MS INT 13 Extensions - GET DRIVE PARAMETERS
- AH = 48h
- DL = drive (80h-FFh)
- DS:SI -> buffer for drive parameters (see #00273)
- Return: CF clear if successful
- AH = 00h
- DS:SI buffer filled
- CF set on error
- AH = error code (see #00234)
- BUG: several different Compaq BIOSes incorrectly report high-numbered
- drives (such as 90h, B0h, D0h, and F0h) as present, giving them the
- same geometry as drive 80h; as a workaround, scan through disk
- numbers, stopping as soon as the number of valid drives encountered
- equals the value in 0040h:0075h
- SeeAlso: AH=08h,AH=41h,AH=49h,MEM 0040h:0075h
- Format of IBM/MS INT 13 Extensions drive parameters:
- Offset Size Description (Table 00273)
- 00h WORD (call) size of buffer
- (001Ah for v1.x, 001Eh for v2.x, 42h for v3.0)
- (ret) size of returned data
- 02h WORD information flags (see #00274)
- 04h DWORD number of physical cylinders on drive
- 08h DWORD number of physical heads on drive
- 0Ch DWORD number of physical sectors per track
- 10h QWORD total number of sectors on drive
- 18h WORD bytes per sector
- ---v2.0+ ---
- 1Ah DWORD -> EDD configuration parameters (see #00278)
- FFFFh:FFFFh if not available
- ---v3.0 ---
- 1Eh WORD signature BEDDh to indicate presence of Device Path info
- 20h BYTE length of Device Path information, including signature and this
- byte (24h for v3.0)
- 21h 3 BYTEs reserved (0)
- 24h 4 BYTEs ASCIZ name of host bus ("ISA" or "PCI")
- 28h 8 BYTEs ASCIZ name of interface type
- "ATA"
- "ATAPI"
- "SCSI"
- "USB"
- "1394" IEEE 1394 (FireWire)
- "FIBRE" Fibre Channel
- 30h 8 BYTEs Interface Path (see #00275)
- 38h 8 BYTEs Device Path (see #00276)
- 40h BYTE reserved (0)
- 41h BYTE checksum of bytes 1Eh-40h (two's complement of sum, which makes
- the 8-bit sum of bytes 1Eh-41h equal 00h)
- Note: if the size is less than 30 on call, the final DWORD will not be
- returned by a v2.x implementation; similarly for the Device Path info
- SeeAlso: #00277,#03196
- Bitfields for IBM/MS INT 13 Extensions information flags:
- Bit(s) Description (Table 00274)
- 0 DMA boundary errors handled transparently
- 1 cylinder/head/sectors-per-track information is valid
- 2 removable drive
- 3 write with verify supported
- 4 drive has change-line support (required if drive >= 80h is removable)
- 5 drive can be locked (required if drive >= 80h is removable)
- 6 CHS information set to maximum supported values, not current media
- 15-7 reserved (0)
- SeeAlso: #00273
- Format of EDD v3.0 Interface Path:
- Offset Size Description (Table 00275)
- ---ISA---
- 00h WORD 16-bit base address
- 02h 6 BYTEs reserved (0)
- ---PCI---
- 00h BYTE PCI bus number
- 01h BYTE PCI device number
- 02h BYTE PCI function number
- 03h 5 BYTEs reserved (0)
- SeeAlso: #00273,#00276
- Format of EDD v3.0 Device Path:
- Offset Size Description (Table 00276)
- ---ATA---
- 00h BYTE flag: 00h = master, 01h = slave
- 01h 7 BYTEs reserved (0)
- ---ATAPI---
- 00h BYTE flag: 00h = master, 01h = slave
- 01h BYTE logical unit number
- 02h 6 BYTEs reserved (0)
- ---SCSI---
- 00h BYTE logical unit number
- 01h 7 BYTEs reserved (0)
- ---USB---
- 00h BYTE to be determined
- 01h 7 BYTEs reserved (0)
- ---IEEE1394---
- 00h QWORD 64-bit FireWire General Unique Identifier (GUID)
- ---FibreChannel---
- 00h QWORD Word Wide Number (WWN)
- SeeAlso: #00273,#00275
- Format of Phoenix Enhanced Disk Drive Spec translated drive parameter table:
- Offset Size Description (Table 00277)
- 00h WORD number of cylinders
- 02h BYTE number of heads
- 03h BYTE A0h (signature indicating translated table)
- 04h BYTE number of physical sectors per track
- 05h WORD starting write precompensation cylinder number
- 07h BYTE reserved
- 08h BYTE control byte (see #03198 at INT 41"DISK 0")
- 09h WORD number of physical cylinders
- 0Bh BYTE number of physical heads
- 0Ch WORD cylinder number of landing zone
- 0Eh BYTE number of logical sectors per track
- 0Fh BYTE checksum
- Program: the Phoenix Enhanced Disk Drive Specification is an addition to the
- IBM/MS INT 13 extensions
- SeeAlso: #00278,#03196
- Format of Phoenix Enhanced Disk Drive Spec Fixed Disk Parameter Table:
- Offset Size Description (Table 00278)
- 00h WORD physical I/O port base address
- 02h WORD disk-drive control port address
- 04h BYTE drive flags (see #00279)
- 05h BYTE proprietary information
- bits 7-4 reserved (0)
- bits 3-0: Phoenix proprietary (used by BIOS)
- 06h BYTE IRQ for drive (bits 3-0; bits 7-4 reserved and must be 0)
- 07h BYTE sector count for multi-sector transfers
- 08h BYTE DMA control
- bits 7-4: DMA type (0-2) as per ATA-2 specification
- bits 3-0: DMA channel
- 09h BYTE programmed I/O control
- bits 7-4: reserved (0)
- bits 3-0: PIO type (1-4) as per ATA-2 specification
- 0Ah WORD drive options (see #00280)
- 0Ch 2 BYTEs reserved (0)
- 0Eh BYTE extension revision level (high nybble=major, low nybble=minor)
- (currently 10h for v1.0 and 11h for v1.1-3.0)
- 0Fh BYTE 2's complement checksum of bytes 00h-0Eh
- 8-bit sum of all bytes 00h-0Fh should equal 00h
- SeeAlso: #00277
- Bitfields for Phoenix Enhanced Disk Drive Spec drive flags:
- Bit(s) Description (Table 00279)
- 7 reserved (1)
- 6 LBA enabled
- 5 reserved (1)
- 4 drive is slave
- 3-0 reserved (0)
- SeeAlso: #00278,#00280
- Bitfields for Phoenix Enhanced Disk Drive Spec drive options:
- Bit(s) Description (Table 00280)
- 0 fast PIO enabled
- 1 fast DMA access enabled
- 2 block PIO (multi-sector transfers) enabled
- 3 CHS translation enabled
- 4 LBA translation enabled
- 5 removable media
- 6 ATAPI device (CD-ROM)
- 7 32-bit transfer mode
- ---v1.1+ ---
- 8 ATAPI device uses DRQ to signal readiness for packet command
- (must be 0 if bit 6 is 0)
- 10-9 translation type (must be 00 if bit 3 is 0)
- 00 Phoenix bit-shifting translation
- 01 LBA-assisted translation
- 10 reserved
- 11 proprietary translation
- ---v3.0---
- 11 Ultra DMA access enabled
- 15-12 reserved
- SeeAlso: #00278,#00279
- --------d-1349-------------------------------
- INT 13 - IBM/MS INT 13 Extensions - EXTENDED MEDIA CHANGE
- AH = 49h
- DL = drive number
- Return: CF clear if media has not changed
- AH = 00h
- CF set if media may have changed
- AH = 06h (see #00234)
- Note: unlike AH=16h, any drive number may be specified
- SeeAlso: AH=16h,AH=41h"INT 13 Ext",AH=46h
- --------d-134A-------------------------------
- INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION
- AH = 4Ah
- AL = 00h
- DS:SI -> specification packet (see #00281)
- Return: CF clear if successful
- CF set on error (drive will not be in emulation mode)
- AX = return codes
- SeeAlso: AH=48h,AX=4B00h,AH=4Ch,AH=4Dh
- Format of Bootable CD-ROM Specification Packet:
- Offset Size Description (Table 00281)
- 00h BYTE size of packet in bytes (13h)
- 01h BYTE boot media type (see #00282)
- 02h BYTE drive number
- 00h floppy image
- 80h bootable hard disk
- 81h-FFh nonbootable or no emulation
- 03h BYTE CD-ROM controller number
- 04h DWORD Logical Block Address of disk image to emulate
- 08h WORD device specification (see also #00282)
- (IDE) bit 0: drive is slave instead of master
- (SCSI) bits 7-0: LUN and PUN
- bits 15-8: bus number
- 0Ah WORD segment of 3K buffer for caching CD-ROM reads
- 0Ch WORD load segment for initial boot image
- if 0000h, load at segment 07C0h
- 0Eh WORD number of 512-byte virtual sectors to load
- (only valid for AH=4Ch)
- 10h BYTE low byte of cylinder count (for INT 13/AH=08h)
- 11h BYTE sector count, high bits of cylinder count (for INT 13/AH=08h)
- 12h BYTE head count (for INT 13/AH=08h)
- SeeAlso: #00283,AH=08h
- Bitfields for Bootable CD-ROM boot media type:
- Bit(s) Description (Table 00282)
- 3-0 media type
- 0000 no emulation
- 0001 1.2M diskette
- 0010 1.44M diskette
- 0011 2.88M diskette
- 0100 hard disk (drive C:)
- other reserved
- 5-4 reserved (0)
- 6 image contains ATAPI driver
- 7 image contains SCSI driver(s)
- SeeAlso: #00281
- --------d-134B00-----------------------------
- INT 13 - Bootable CD-ROM - TERMINATE DISK EMULATION
- AX = 4B00h
- DL = drive number or 7Fh to terminate all emulations
- DS:SI -> empty specification packet (see #00281)
- Return: CF clear if successful
- CF set on error (drive will still be in emulation mode)
- AX = return codes
- DS:SI specification packet filled
- SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch,AH=4Dh
- --------d-134B01-----------------------------
- INT 13 - Bootable CD-ROM - GET STATUS
- AX = 4B01h
- DL = drive number
- DS:SI -> empty specification packet (see #00281)
- Return: CF clear if successful
- CF set on error
- AX = return codes
- DS:SI specification packet filled
- Note: same as AX=4B00h, but does not terminate emulation
- SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch,AH=4Dh
- --------d-134C-------------------------------
- INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION AND BOOT
- AH = 4Ch
- AL = 00h
- DS:SI -> specification packet (see #00281)
- Return: never, if successful
- CF set (error while attempting to boot)
- AX = error codes
- SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Dh
- --------d-134D00-----------------------------
- INT 13 - Bootable CD-ROM - RETURN BOOT CATALOG
- AX = 4D00h
- DS:SI -> command packet (see #00283)
- Return: CF clear if successful
- CF set on error
- AX = return codes
- SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch
- Format of Bootable CD-ROM "get boot catalog" command packet:
- Offset Size Description (Table 00283)
- 00h BYTE size of packet in bytes (08h)
- 01h BYTE number of sectors of boot catalog to read
- 02h DWORD -> buffer for boot catalog
- 06h WORD first sector in boot catalog to transfer
- SeeAlso: #00281
- --------d-134E-------------------------------
- INT 13 - IBM/MS INT 13 Extensions v2.1 - SET HARDWARE CONFIGURATION
- AH = 4Eh
- AL = function
- 00h enable prefetch
- 01h disable prefetch
- 02h set maximum PIO transfer mode
- 03h set PIO mode 0
- 04h set default PIO transfer mode
- 05h enable INT 13 DMA maximum mode
- 06h disable INT 13 DMA
- DL = drive number
- Return: CF clear if successful
- AH = 00h
- AL = status
- 00h command was safe (only affected specified drive)
- 01h other devices are affected
- CF set on error
- AH = error code (see #00234)
- Note: DMA and PIO modes are mutually exclusive, so selecting DMA disables
- PIO (for either the specified device or all devices on that
- controller), and selecting PIO disables DMA
- SeeAlso: AH=41h"INT 13 Extensions",AX=5001h"Enhanced Disk Drive"
- --------d-135001-----------------------------
- INT 13 - Enhanced Disk Drive Spec v3.0 - SEND PACKET COMMAND
- AX = 5001h
- DL = drive number
- ES:BX -> command packet (see #00284)
- Return: CF clear if successful
- AH = 00h
- CF set on error
- AH = error code
- Desc: send data to and from a serial packet-oriented device, such as IEEE1394
- and USB
- SeeAlso: AH=41h"INT 13 Extensions",AH=4Eh
- Format of Enhanced Disk Drive Spec v3.0 command packet:
- Offset Size Description (Table 00284)
- 00h WORD signature B055h
- 02h BYTE length of packet in bytes
- 03h BYTE reserved (0)
- 04h N BYTEs formatted packet data
- --------v-135001------------------------
- INT 13 - VIRUS - "Andropinis" - INSTALLATION CHECK
- AX = 5001h
- Return: AX = 0150h if resident
- SeeAlso: AX=FD50h"VIRUS",INT 21/AX=0B56h
- --------v-135342CX0001-----------------------
- INT 13 - ScanBoot - INSTALLATION CHECK
- AX = 5342h ("SB")
- CX = 0001h
- DX = 0000h
- Return: CF clear if ScanBoot installed
- AX = 0000h
- CX = serial number ("SW" if shareware release)
- DX = version
- BX,SI,ES destroyed
- Program: ScanBoot is a virus-detection TSR by PanSoft
- --------d-135501-----------------------------
- INT 13 - Seagate ST01/ST02 - Inquiry
- AX = 5501h
- DH = number of bytes to transfer
- DL = drive ID (80h, 81h, ...)
- ES:BX -> buffer for results
- Return: ES:BX buffer filled with the Inquiry results
- Notes: the ST01/ST02 BIOS does not return any success/failure indication,
- so all commands must be assumed to have been successful
- the ST01/ST02 BIOS always maps its drives after the previous BIOS
- drives without changing the BIOS drive count at 0040h:0075h
- this command is identical to the SCSI Inquiry command
- --------d-135502-----------------------------
- INT 13 - Seagate ST01/ST02 - RESERVED
- AX = 5502h
- --------d-135503-----------------------------
- INT 13 - Seagate ST01/ST01 - Set Device Type Qualifier (DTQ)
- AX = 5503h
- DH = DTQ byte (see #00285)
- DL = drive ID (80h, 81h, ...)
- Return: nothing
- Bitfields for DTQ byte:
- Bit(s) Description (Table 00285)
- 7 reserved
- 6 SCSI drive attached
- 5 reserved
- 4 selected drive is ST225N/NP (Paired)
- 3 selected drive is ST225N
- 2 Host Adapter checks parity on the selected drive
- 1 selected drive has been installed
- 0 Seagate installation software present
- --------d-135504-----------------------------
- INT 13 U - Seagate - ??? - RETURN IDENTIFICATION
- AX = 5504h
- DX = drive (bit 7 set for hard disk)
- Return: CF clear if successful
- AX = 4321h if ST01/ST02h
- AX = 4322h if ??? Seagate controller
- CF set on error
- SeeAlso: AX=5505h,AX=5514h
- --------d-135504-----------------------------
- INT 13 - Seagate ST01/ST02 - RETURN IDENTIFICATION
- AX = 5504h
- DL = drive ID (80h, 81h, ...)
- Return: AX = 4321h
- BL = selected drive number (00h, 01h)
- BH = number of drives attached to Host Adapter (max. 2)
- --------d-135505-----------------------------
- INT 13 - Seagate - ??? - PARK HEADS
- AX = 5505h
- DX = drive (bit 7 set for hard disk)
- Return: CF clear if successful
- CF set on error
- SeeAlso: AX=5504h,AX=5515h
- --------d-135505-----------------------------
- INT 13 - Seagate ST01/ST02 - PARK HEADS
- AX = 5505h
- DL = drive ID (80h, 81h, ...)
- DH = subfunction
- 00h park heads (SCSI Stop command)
- 01h un-park heads (SCSI Start command)
- Return: nothing
- --------d-135506-----------------------------
- INT 13 - Seagate ST01/ST02 - SCSI Bus Parity
- AX = 5506h
- DL = drive ID (80h, 81h, ...)
- DH = subfunction
- 00h disable parity check
- 01h enable parity check
- 02h return current parity setting
- Return: AL = status
- 00h parity checking disabled
- 01h parity checking enabled
- --------d-135507-----------------------------
- INT 13 - Seagate ST01/ST02 - RESERVED FUNCTIONS
- AX = 5507h to 550Dh
- Note: officially listed as "reserved"
- --------d-135514-----------------------------
- INT 13 U - Seagate - ???
- AX = 5514h
- DX = drive (bit 7 set for hard disk)
- Return: CF clear if successful
- CF set on error
- AX = return value (FEBEh,FEBFh,FEDAh,FEDBh)
- SeeAlso: AX=5504h,AX=5515h
- --------d-135515-----------------------------
- INT 13 U - Seagate - PARK HEADS???
- AX = 5515h
- DX = drive (bit 7 set for hard disk)
- Return: CF clear if successful
- CF set on error
- Note: appears to be identical to AX=5505h
- SeeAlso: AX=5504h,AX=5505h
- --------d-1359-------------------------------
- INT 13 - SyQuest - Generic SCSI pass through
- AH = 59h
- CX = HOST_ID, 0-based
- DX = 80h
- ES:BX pointer to SCSI structure (see #00286)
- Return: CF clear
- AH = 95h
- SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=1Fh"SyQuest"
- Format of SyQuest SCSI structure:
- Offset Size Description (Table 00286)
- 00h WORD opcode (see #00287)
- 02h BYTE target's SCSI ID
- 03h BYTE target's logical unit number
- 04h BYTE data direction (00h no data xfer, 01h data in, FFh data out)
- 05h BYTE host status
- 00h successful
- 01h selection time out
- 02h data over-run or under-run
- 06h BYTE target status at command completion
- 00h successful
- 02h check status
- 08h busy
- 07h BYTE command data block length
- 08h DWORD request data length
- 0Ch DWORD result data length (actual length of data transferred)
- 10h DWORD -> CDB (see #03236,#03237,#03238)
- 14h DWORD -> data buffer
- Note: The handler does not perform a 'Request Sense' command if there was an
- error
- (Table 00287)
- Values for SCSI opcode:
- 00h verify interface
- clears carry flag and returns if function is available
- 01h returns the ID of the INT 13h Handler in a NULL terminated string of
- length less than 40 byte including the terminator.
- The string is stored in the buffer pointed by p_buf.
- 02h device mapping info. The caller provides a one byte buffer.
- The handler stores the Int 13h Device ID (80h or above) in the buffer.
- It stores 0 if that target does not exists.
- 03h execute SCSI command
- 04h device reset
- 05h SCSI bus reset
- SeeAlso: #00286
- --------d-1370-------------------------------
- INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE???
- AH = 70h
- ???
- Return: ???
- Note: Priam's EDISK.EXE (FDISK replacement) and EFMT.EXE (low-level
- formatting program) make this call, presumably to EDVR.SYS (the
- partitioning driver)
- SeeAlso: AH=ADh
- ----------1375-------------------------------
- INT 13 - ???
- AH = 75h
- ???
- Return: AH = ???
- ???
- Note: intercepted by PC-Cache (v5.1 only)
- ----------1376-------------------------------
- INT 13 - ???
- AH = 76h
- ???
- Return: AH = ???
- ???
- Note: intercepted by PC-Cache (v5.1 only)
- --------c-137B00-----------------------------
- INT 13 - NOW! v3.05 - GET INFORMATION
- AX = 7B00h
- CX:DX -> 1F8h-byte buffer for information record (see #00288)
- Return: AX = 0000h
- BX = segment of main resident code
- ES = ???
- Program: NOW! is a disk cache by Vertisoft Systems, Inc.
- SeeAlso: AX=7B02h,AH=EFh
- Format of NOW! information record:
- Offset Size Description (Table 00288)
- 00h 80 BYTEs name of directory from which NOW! was started
- 50h 424 BYTEs ???
- 81h ? BYTEs array of bytes for ???
- F7h 250 BYTEs array of 25 entries, one per drive???
- Offset Size Description
- 00h 2 BYTEs ???
- 02h WORD ???
- 04h WORD ???
- 06h 4 BYTEs ???
- 1F1h 7 BYTEs ???
- --------c-137B01-----------------------------
- INT 13 - NOW! v3.05 - ???
- AX = 7B01h
- Return: DX = segment of ???
- SeeAlso: AX=7B00h
- --------c-137B02-----------------------------
- INT 13 - NOW! v3.05 - SET INFORMATION
- AX = 7B02h
- BX = segment of ??? (10h above a PSP)
- CX:DX -> 1F8h-byte information record (see #00288)
- Return: ???
- Program: NOW! is a disk cache by Vertisoft Systems, Inc.
- Note: NOW! grabs the INT 24h value from the PSP reached via the segment in
- BX
- SeeAlso: AX=7B00h
- --------c-137B03-----------------------------
- INT 13 - NOW! v3.05 - ???
- AX = 7B03h
- ???
- Return: ???
- SeeAlso: AX=7B00h,AX=7B04h
- --------c-137B04-----------------------------
- INT 13 - NOW! v3.05 - ???
- AX = 7B04h
- ???
- Return: ???
- SeeAlso: AX=7B03h
- --------c-137B05-----------------------------
- INT 13 - NOW! v3.05 - GET DISK ACCESSES???
- AX = 7B05h
- Return: BX:AX = number of physical accesses???
- DX:CX = total disk accesses???
- SeeAlso: AX=7B00h,AX=7B06h
- --------c-137B06-----------------------------
- INT 13 - NOW! v3.05 - GET ???
- AX = 7B06h
- BX = ???
- Return: AX = 0000h
- BX = ???
- SeeAlso: AX=7B05h,AX=7B07h
- --------c-137B07-----------------------------
- INT 13 - NOW! v3.05 - GET ???
- AX = 7B07h
- Return: AX = ???
- BX = ???
- CX = ???
- DX = ???
- SeeAlso: AX=7B06h
- --------c-137B08-----------------------------
- INT 13 - NOW! v3.05 - ???
- AX = 7B08h
- CX = ??? (default 00h)
- Return: ???
- SeeAlso: AX=7B00h
- --------c-1380--CX6572-----------------------
- INT 13 - FAST! v4.02+ - API
- AH = 80h
- CX = 6572h
- DX = 1970h
- ES:BX -> request packet (see #00290)
- AL = function number (see #00289)
- Return: AH = status (except function 06h)
- 00h if successful
- 01h invalid function
- 05h not supported by the installed variant
- CF clear if successful
- CF set on error
- AL may be destroyed
- Program: FAST! is a disk cache by Future Computing Systems and marketed by
- BLOC Publishing Corp.
- SeeAlso: AX=8001h,AX=8006h,AX=8007h
- Index: hotkeys;FAST!
- (Table 00289)
- Values for FAST! function:
- 01h get cache information (see AX=8001h)
- 04h disable cache
- 05h enable cache and reset statistics
- 06h installation check (see AX=8006h)
- 07h unhook interrupts (see AX=8007h)
- 09h flush cache
- 0Ah (v4.02+) enable staged writes
- 0Bh (v4.02+) disable staged writes
- 0Ch (v4.02+) enable beep on flush
- 0Dh (v4.02+) disable beep on flush
- 0Eh ???
- 0Fh ???
- 10h (v4.12+) enable hotkeys
- 11h (v4.12+) disable hotkeys
- 12h (v4.13+) set idle delay
- 13h (v4.13+) set flush dirty percentage
- 14h (v5.00+) enable mouse checks
- 15h (v5.00+) disable mouse checks
- 16h (v5.00d+) reduce cache size to minimum
- 17h (v5.00d+) increase cache size to maximum
- Format of FAST! request packet:
- Offset Size Description (Table 00290)
- 00h DWORD pointer to 19-byte signature string (see #00291)
- 04h DWORD pointer to buffer for data (if needed by function)
- (Table 00291)
- Values for FAST! v4.04-v5.03 signature string:
- 13h 07h 06h 08h 11h 18h 0Fh 0Eh 02h 18h 13h 08h 0Bh 08h 01h 00h 04h 08h 15h
- --------c-138001CX6572-----------------------
- INT 13 - FAST! v4.02+ - GET CACHE INFORMATION
- AX = 8001h
- CX = 6572h
- DX = 1970h
- ES:BX -> request packet (see #00292)
- Return: AH = 00h if successful
- SeeAlso: AH=80h,AX=8006h
- Format of FAST! request packet:
- Offset Size Description (Table 00292)
- 00h DWORD -> 19-byte signature string (see #00291)
- 04h DWORD -> buffer for cache information (see #00293)
- Format of FAST! cache information (v5.00-5.03):
- Offset Size Description (Table 00293)
- 00h WORD binary version number of FAST! (v5.00 = 01F4h)
- 02h BYTE revision letter (61h = X.XXa, 62h = X.XXb, etc.)
- 03h BYTE FAST! variant
- (01h = FASTE, 02h = FASTX BIOS, 04h = FASTC, 20h = FASTX XMS)
- 04h DWORD total number of read requests
- 08h DWORD number of physical disk reads
- 0Ch DWORD grabbed hash buckets
- 10h DWORD "st_386mem"
- 14h DWORD total number of writes (only counted when staging enabled)
- 18h DWORD number of physical disk writes (only when staging enabled)
- 1Ch DWORD number of write errors while flushing cache
- 20h WORD flags1 (see #00294)
- 22h WORD flags
- bit 0: ???
- bit 1: staged writes enabled
- 24h WORD ???
- 26h WORD maximum cache size in KB
- 28h WORD minimum cache size in KB
- 2Ah WORD segment of first cache buffer (FASTC)
- segment of EMS page frame (FASTE)
- XMS handle (FASTX XMS)
- 2Ch WORD number of hash buckets containing no entries
- 2Eh WORD number of hash buckets containing one entry
- 30h WORD number of hash buckets containing two entries
- 32h WORD number of hash buckets containing three entries
- 34h WORD number of hash buckets containing four entries
- 36h WORD number of hash buckets containing five entries
- 38h WORD maximum contiguous sectors
- 3Ah WORD hash factor
- 3Ch WORD number of paragraphs of memory used below 1M
- 3Eh WORD entries per hash bucket
- 40h WORD idle delay in seconds
- 42h 2 BYTEs ???
- 44h WORD staged write threshold percentage
- 46h 2 BYTEs ???
- 48h WORD number of dirty sectors
- 4Ah WORD number of staged write buffers
- 4Ch WORD current cache size in KB
- 4Eh WORD beep frequency in Hz
- 50h WORD ???
- 52h WORD ???
- Bitfields for FAST! flags1:
- Bit(s) Description (Table 00294)
- 0 beep on flush
- 3 hotkeys enabled
- 4 mouse idle check enabled
- 8 caching enabled
- 13 ???
- --------c-138006CX6572-----------------------
- INT 13 - FAST! v4.02+ - INSTALLATION CHECK
- AX = 8006h
- CX = 6572h
- DX = 1970h
- ES:BX -> request packet (see #00295)
- Return: AX = 1965h if installed
- SeeAlso: AH=80h,AX=8001h,AX=8007h
- Format of FAST! request packet:
- Offset Size Description (Table 00295)
- 00h DWORD -> 19-byte signature string (see #00291)
- --------c-138007CX6572-----------------------
- INT 13 - FAST! v4.02+ - UNHOOK INTERRUPTS
- AX = 8007h
- CX = 6572h
- DX = 1970h
- ES:BX -> request packet (see #00296)
- Return: AX = 1965h if installed
- SeeAlso: AH=80h,AX=8006h
- Index: uninstall;FAST!
- Format of FAST! request packet:
- Offset Size Description (Table 00296)
- 00h DWORD -> 19-byte signature string (see #00291)
- --------c-1381--SI4358-----------------------
- INT 13 - Super PC-Kwik v3.20+ - ???
- AH = 81h
- SI = 4358h
- ???
- Return: ???
- Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
- Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
- to PC-Kwik v3.20 and PC-Cache v5.5 to PC-Kwik v3.27)
- returns immediately in PC-Cache v5.x
- Index: PC-Cache|Qualitas Qcache
- --------c-1382--SI4358-----------------------
- INT 13 - Super PC-Kwik v3.20+ - ???
- AH = 82h
- SI = 4358h
- ???
- Return: AL = ???
- Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
- Super PC-Kwik, and thus support this call
- SeeAlso: AH=84h
- Index: PC-Cache|Qualitas Qcache
- --------c-1383--SI4358-----------------------
- INT 13 - Super PC-Kwik v3.20+ - ???
- AH = 83h
- SI = 4358h
- AL = ???
- ES:BX -> ???
- ???
- Return: ???
- Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
- Super PC-Kwik, and thus support this call
- SeeAlso: AH=85h
- Index: PC-Cache|Qualitas Qcache
- --------c-1384--SI4358-----------------------
- INT 13 - Super PC-Kwik v3.20+ - ???
- AH = 84h
- SI = 4358h
- AL = ???
- ???
- Return: AL = ???
- Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
- Super PC-Kwik, and thus support this call
- SeeAlso: AH=82h
- Index: PC-Cache|Qualitas Qcache
- --------c-1385--SI4358-----------------------
- INT 13 - Super PC-Kwik v3.20+ - ???
- AH = 85h
- SI = 4358h
- AL = ???
- DL = ???
- ???
- Return: ???
- Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
- Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
- to PC-Kwik v3.20)
- SeeAlso: AH=83h
- Index: PC-Cache|Qualitas Qcache
- --------c-1386--SI4358-----------------------
- INT 13 - Super PC-Kwik v4.00+ - ???
- AH = 86h
- SI = 4358h
- ???
- Return: ???
- Note: Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
- thus supports this call
- Index: Qualitas Qcache
- --------c-1387--SI4358-----------------------
- INT 13 - Super PC-Kwik v4.00+ - ???
- AH = 87h
- SI = 4358h
- ???
- Return: AH = status??? (00h)
- CX = ???
- DX = ??? (0000h)
- Note: Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
- thus supports this call
- Index: Qualitas Qcache
- --------c-1388--SI4358-----------------------
- INT 13 - Super PC-Kwik v4.00+ - ???
- AH = 88h
- SI = 4358h
- ???
- Return: AH = status??? (00h)
- CX = ???
- DX = ??? (0000h)
- Note: Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
- thus supports this call
- Index: Qualitas Qcache
- --------c-1389--SI4358-----------------------
- INT 13 - Super PC-Kwik v5.10+ - ???
- AH = 89h
- SI = 4358h
- ???
- Return: ???
- --------c-138A--SI4358-----------------------
- INT 13 - Super PC-Kwik v5.10+ - ???
- AH = 8Ah
- SI = 4358h
- ???
- Return: ???
- --------c-138EED-----------------------------
- INT 13 - HyperDisk v4.01+ - ???
- AX = 8EEDh
- ???
- Return: ???
- Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
- SeeAlso: AX=8EEEh,AX=8EEFh,AH=EEh,INT 2F/AX=DF00h
- --------c-138EEE-----------------------------
- INT 13 - HyperDisk v4.01+ - ???
- AX = 8EEEh
- Return: CF set
- AX = CS of HyperDisk resident code
- ???
- Note: identical to AX=8EEFh in HYPERDKX v4.21-4.30
- SeeAlso: AX=8EEDh,AX=8EEFh,AH=EEh
- --------c-138EEF-----------------------------
- INT 13 - HyperDisk v4.01+ - ???
- AX = 8EEFh
- Return: CF set
- AX = CS of HyperDisk resident code
- ???
- Note: identical to AX=8EEEh in HYPERDKX v4.21-4.30
- SeeAlso: AX=8EEDh,AX=8EEEh,AH=EEh
- --------c-1392--SI4358-----------------------
- INT 13 - Super PC-Kwik v5.10+ - ???
- AH = 92h
- SI = 4358h
- ???
- Return: AH = status??? (00h)
- DL = ???
- SeeAlso: AH=93h
- --------c-1393--SI4358-----------------------
- INT 13 - Super PC-Kwik v5.10+ - ???
- AH = 93h
- SI = 4358h
- ???
- Return: AH = status??? (00h)
- AL = ???
- SeeAlso: AH=92h
- --------c-1394--SI4358-----------------------
- INT 13 - Super PC-Kwik v5.10+ - ???
- AH = 94h
- SI = 4358h
- ???
- Return: ???
- --------c-1395--SI4358-----------------------
- INT 13 - Super PC-Kwik v5.10+ - ???
- AH = 95h
- SI = 4358h
- ???
- Return: AH = status??? (00h)
- DX = ???
- --------c-1396--SI4358-----------------------
- INT 13 - Super PC-Kwik v5.10+ - ???
- AH = 96h
- SI = 4358h
- AL = ??? (01h)
- BX = ??? (0790h)
- DL = ???
- Return: AH = status??? (00h)
- DX = ???
- --------c-1397--SI4358-----------------------
- INT 13 - Super PC-Kwik v5.10+ - ???
- AH = 97h
- SI = 4358h
- ???
- Return: ???
- --------c-1398--SI4358-----------------------
- INT 13 - Super PC-Kwik v5.10+ - ???
- AH = 98h
- SI = 4358h
- ???
- Return: ???
- --------c-1399--SI4358-----------------------
- INT 13 - Super PC-Kwik v5.10+ - ???
- AH = 99h
- SI = 4358h
- ???
- Return: ???
- --------c-139A--SI4358-----------------------
- INT 13 - Super PC-Kwik v5.10+ - ???
- AH = 9Ah
- SI = 4358h
- ???
- Return: ???
- --------c-139B--SI4358-----------------------
- INT 13 - Super PC-Kwik v5.10+ - ???
- AH = 9Bh
- SI = 4358h
- ???
- Return: ???
- --------c-139C--SI4358-----------------------
- INT 13 - Super PC-Kwik v5.10+ - ???
- AH = 9Ch
- SI = 4358h
- ???
- Return: ???
- Note: functions 9Ch and 9Dh are the only ones which are fully reentrant; all
- other PC-Kwik API calls (INT 13/81h-B0h) return AX=0200h and CF clear
- if a previous call is still in progress
- --------c-139D--SI4358-----------------------
- INT 13 - Super PC-Kwik v5.10+ - ???
- AH = 9Dh
- SI = 4358h
- ???
- Return: ???
- --------c-13A0--SI4358-----------------------
- INT 13 - Super PC-Kwik v3.20+ - GET RESIDENT CODE SEGMENT
- AH = A0h
- SI = 4358h
- Return: AX = segment of resident code
- Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
- Super PC-Kwik, and thus support this call (note that PC-Cache v5.5
- corresponds to PC-Kwik v3.27)
- SeeAlso: INT 16/AX=FFA5h/CX=1111h
- Index: PC-Cache|Qualitas Qcache
- --------c-13A1--SI4358-----------------------
- INT 13 - Super PC-Kwik v3.20+ - FLUSH CACHE
- AH = A1h
- SI = 4358h
- Return: CF clear
- AH = 00h (v5.10)
- Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
- Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
- corresponds to PC-Kwik v3.20)
- SeeAlso: INT 16/AX=FFA5h/CX=FFFFh
- Index: PC-Cache|Qualitas Qcache
- --------c-13A2--SI4358-----------------------
- INT 13 - Super PC-Kwik v3.20+ - ???
- AH = A2h
- SI = 4358h
- ???
- Return: ???
- Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
- Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
- corresponds to PC-Kwik v3.20)
- Index: PC-Cache|Qualitas Qcache
- --------c-13A3--SI4358-----------------------
- INT 13 U - Super PC-Kwik v5.10+ - DISABLE CACHE
- AH = A3h
- SI = 4358h
- Return: CF clear
- SeeAlso: AH=A4h
- --------c-13A4--SI4358-----------------------
- INT 13 U - Super PC-Kwik v5.10+ - ENABLE CACHE
- AH = A4h
- SI = 4358h
- Return: CF clear
- SeeAlso: AH=A3h
- --------c-13A5--SI4358-----------------------
- INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM TERMINATION NOTIFICATION
- AH = A5h
- SI = 4358h
- Return: AX = ???
- SI = ???
- Notes: called and used internally by Super PC-Kwik when a program terminates
- via INT 21/AH=00h, INT 21/AH=31h, or INT 21/AH=4Ch
- this call is not supported by Qualitas Qcache 4.00
- Index: PC-Cache
- SeeAlso: AH=A6h,AH=A9h,INT 21/AH=00h,INT 21/AH=31h,INT 21/AH=4Ch
- --------c-13A6--SI4358-----------------------
- INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM LOAD NOTIFICATION
- AH = A6h
- SI = 4358h
- DS:DX -> ASCIZ program name
- ES:BX -> EXEC data block (see #01590 at INT 21/AH=4Bh)
- Return: ???
- Note: called and used internally by Super PC-Kwik when a program is loaded
- with INT 21/AX=4B00h
- SeeAlso: AH=A5h,AH=A9h,INT 21/AH=4Bh
- --------c-13A7--SI4358-----------------------
- INT 13 CU - Super PC-Kwik 5.1 - ???
- AH = A7h
- SI = 4358h
- Return: ???
- Note: called and used internally by Super PC-Kwik on some INT 21 calls
- SeeAlso: AH=A5h,AH=A6h,AH=A8h
- --------v-13A759-----------------------------
- INT 13 U - Novell DOS 7 - SDRes v27.03 - ???
- AX = A759h
- Return: AX = 59A7h if installed
- DX:BX -> ??? data
- Program: SDRes is the resident portion of the Search&Destroy antiviral by
- Fifth Generation Systems, as bundled with Novell DOS 7
- SeeAlso: INT 21/AH=0Eh/DL=ADh
- --------c-13A8--SI4358-----------------------
- INT 13 CU - Super PC-Kwik 5.1 - ???
- AH = A8h
- SI = 4358h
- Return: ???
- Note: called and used internally by Super PC-Kwik on some INT 21 calls
- SeeAlso: AH=A5h,AH=A6h,AH=A7h
- --------c-13A9--SI4358-----------------------
- INT 13 CU - Super PC-Kwik 5.1 - EXITCODE RETRIEVAL NOTIFICATION
- AH = A9h
- SI = 4358h
- Return: ???
- Note: called and used internally by Super PC-Kwik when an application issues
- INT 21/AH=4Dh
- SeeAlso: AH=A5h,AH=A6h,INT 21/AH=4Dh
- --------c-13AA--SI4358-----------------------
- INT 13 - Super PC-Kwik v4+ - ???
- AH = AAh
- SI = 4358h
- ???
- Return: ???
- Note: Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
- this call
- --------c-13AB--SI4358-----------------------
- INT 13 - Super PC-Kwik v4+ - ???
- AH = ABh
- SI = 4358h
- ???
- Return: ???
- Note: Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
- this call
- --------c-13AC--SI4358-----------------------
- INT 13 - Super PC-Kwik v4+ - ???
- AH = ACh
- SI = 4358h
- ???
- Return: ???
- Note: Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
- this call
- --------d-13AD-------------------------------
- INT 13 - Priam HARD DISK CONTROLLER???
- AH = ADh
- ???
- Return: ???
- Note: this call is made from Priam's EFMT.EXE (low-level formatter), probably
- to check the ROM type on the controller for their hard disk kits
- SeeAlso: AH=70h
- --------c-13AD--SI4358-----------------------
- INT 13 - Super PC-Kwik v4+ - ???
- AH = ADh
- SI = 4358h
- ???
- Return: ???
- Note: Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
- this call
- --------c-13AE--SI4358-----------------------
- INT 13 - Super PC-Kwik v5.10+ - ???
- AH = AEh
- SI = 4358h
- ???
- Return: ???
- --------c-13B0--SI4358-----------------------
- INT 13 - Super PC-Kwik v3.20+ - ???
- AH = B0h
- SI = 4358h
- ???
- Return: ???
- Note: PC Tools PC-Cache 5.x is an OEM version of Super PC-Kwik, and thus
- supports this call; Qualitas Qcache does not support it
- Index: PC-Cache
- --------d-13E000-----------------------------
- INT 13 - XBIOS - COMMAND
- AX = E000h
- CX = 0
- DL = drive number (80h,81h,82h,83h)
- ES:BX = pointer to XBIOS Command Block (see #00297)
- Return: CF clear if successful
- CX = 1234h XBIOS Signature
- CF set on error
- Program: XBIOS is a driver in some versions of Disk Manager that is
- loaded from the disk MBR, replacing the ROM BIOS disk support
- e.g. adding LBA mode support, and read/write multiple.
- SeeAlso: AH=F9h"SWBIOS"
- Format of XBIOS Command Block:
- Offset Size Description (Table 00297)
- 00h BYTE function
- 0Eh Get XBIOS Configuration Information
- Return: buffer points to Ontrackr_Ref_Data structure
- (see #00298)
- 01h BYTE reserved (must be zero before function call)
- 02h DWORD buffer pointer - Input or output depending on opcode
- SeeAlso: #00298,#00299
- Format of Ontrackr_Ref_Data structure:
- Offset Size Description (Table 00298)
- 00h WORD Size of structure (33h)
- 02h BYTE VxD Chain mode
- 03h 12 BYTEs Drive 1: Ontrackr_VxD_Data structure (see #00299)
- 0Fh 12 BYTEs Drive 2: Ontrackr_VxD_Data structure
- 1Bh 12 BYTEs Drive 3: Ontrackr_VxD_Data structure
- 27h 12 BYTEs Drive 4: Ontrackr_VxD_Data structure (see #00299)
- SeeAlso: #00297,#00299
- Format of Ontrackr_VxD_Data structure:
- Offset Size Description (Table 00299)
- 00h BYTE INT13 drive number
- 01h DWORD Delta skew value
- 05h BYTE Physical heads (Word 3 of Identify Data)
- 06h BYTE Physical sectors per track (Word 6 of Identify Data)
- 07h BYTE Multiple Block Size (Blocking factor)
- 08h BYTE Read/Write Multiple disable flags
- 00001000b drive supports r/w multiple
- 00000100b do not use read multiple
- 00000010b do not use write multiple
- 09h WORD Base port address (1F0/170)
- 0Bh BYTE Hardware interrupt channel (14/15)
- SeeAlso: #00298
- --------v-13EC00-----------------------------
- INT 13 - VIRUS - "Tiso" - INSTALLATION CHECK
- AX = EC00h
- Return: CF clear if installed
- SeeAlso: AH=F2h,INT 12/AX=4350h/BX=4920h
- --------d-13EE-------------------------------
- INT 13 - SWBIOS - SET 1024-CYLINDER FLAG
- AH = EEh
- DL = drive number (80h, 81h)
- Return: CF clear
- AH = 00h
- Program: SWBIOS is a TSR by Ontrack Computer Systems
- Desc: the following INT 13 call will add 1024 to the specified cylinder
- number to get the actual cylinder number desired
- Notes: the flag is cleared by all INT 13 calls except AH=EEh and AH=EFh
- Disk Manager also supports these calls
- this function is also supported by HyperDisk v4.01+ and PC-Cache v5.5+,
- in order to allow caching of drives using SWBIOS to access more than
- 1024 cylinders
- for software which supports that call, this function is equivalent to
- calling AH=EFh with CX=0400h
- SeeAlso: AH=F9h,AH=FEh,INT 16/AX=FFA5h/CX=1111h,INT 2F/AX=DF00h
- Index: PC-Cache;huge disks|Disk Manager
- --------c-13EF-------------------------------
- INT 13 - Ontrack Drive Rocket - SET CYLINDER OFFSET
- AH = EFh
- CX = cylinder offset for next INT 13 call
- DL = drive number (80h, 81h)
- Return: CF clear
- AH = 00h
- Program: Drive Rocket is a drive accelerator by Ontrack Computer Systems for
- IDE drives supporting the read multiple and write multiple commands
- Desc: the following INT 13 call will add the number given by this call to
- the specified cylinder to get the actual cylinder number, then reset
- the offset to zero
- Note: this function is also supported by the NOW! disk cache, and presumably
- newer versions of SWBIOS and Disk Manager
- for software which supports this call, AH=EEh is equivalent to calling
- this function with CX=0400h
- the cylinder offset is reset to 0 by all INT 13 called except AH=EEh
- and AH=EFh
- SeeAlso: AX=7B00h
- --------v-13F2-------------------------------
- INT 13 - VIRUS - "Neuroquila" - INSTALLATION CHECK
- AH = F2h
- Return: CF ??? if installed
- SeeAlso: AX=EC00h,INT 12/AX=4350h/BX=4920h,INT 21/AX=0B56h
- --------d-13F9-------------------------------
- INT 13 - SWBIOS - INSTALLATION CHECK
- AH = F9h
- DL = drive number (80h,81h)
- Return: CF clear
- DX = configuration word
- bit 15 set if other SWBIOS extensions available
- CF set on error
- Program: SWBIOS is a TSR by Ontrack Computer Systems
- XBIOS is a driver in some versions of Disk Manager that is
- loaded from the disk MBR, replacing the ROM BIOS disk support
- eg adding LBA mode support, and read/write multiple.
- Note: Disk Manager also supports these calls
- SeeAlso: AH=EEh,AX=E000h"XBIOS",AH=FFh"EZ-Drive"
- Index: Disk Manager
- --------v-13FA--DX5945-----------------------
- INT 13 - PC Tools v8+ VSAFE, VWATCH - API
- AH = FAh
- DX = 5945h
- AL = function (00h-07h)
- Return: varies by function
- if not installed:
- CF set
- AH = 01h
- Note: this API is identical to the ones on INT 16/AH=FAh and INT 21/AH=FAh,
- so it is listed in its entirety under INT 16/AX=FA00h and following
- SeeAlso: INT 16/AX=FA00h
- --------v-13FD50------------------------
- INT 13 - VIRUS - "Predator" - INSTALLATION CHECK
- AX = FD50h
- Return: AX = 50FDh if resident
- SeeAlso: AX=5001h"VIRUS",INT 16/AH=DDh"VIRUS"
- --------d-13FE-------------------------------
- INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
- AH = FEh
- DL = drive number (80h, 81h)
- Return: CF clear
- DX = number of cylinders beyond 1024 on drive
- Program: SWBIOS is a TSR by Ontrack Computer Systems
- Notes: standard INT 13/AH=08h will return a cylinder count truncated to 1024
- BIOS without this extension would return count modulo 1024
- Disk Manager also supports these calls
- SeeAlso: AH=EEh
- ----------13FF-------------------------------
- INT 13 - EZ-Drive - INSTALLATION CHECK
- AH = FFh
- DL = drive number (80h)
- Return: CF clear
- AX = AA55h
- ES:BX -> string "AERMH13Vxx", where xx is the version number of
- the EZ-Drive driver
- CF set on error
- Program: EZ-Drive is a driver by Micro House that is loaded from the
- hard disk MBR, replacing the ROM BIOS disk support, eg adding
- LBA mode support, and read/write multiple.
- Note: this function is called by the Windows95 Master Boot Record
- SeeAlso: AX=E000h"XBIOS",AH=F9h"SWBIOS"
- --------B-13FF-------------------------------
- INT 13 - IBM SurePath BIOS - Officially "Private" Function
- AH = FFh
- --------U-13FFFFBHAA-------------------------
- INT 13 - UNIQUE UX Turbo Utility - SET TURBO MODE
- AX = FFFFh
- BH = AAh
- BL = subfunction
- 00h installation check
- Return: AX = 1234h if installed
- 01h turn on Turbo mode
- 02h turn off Turbo mode
- 03h set Turbo mode according to hardware switch
- 04h set disk access to Turbo mode
- 05h set disk access to Normal mode
- Return: nothing
- SeeAlso: INT 15/AH=DFh
- Index: installation check;UNIQUE UX Turbo Utility
- --------S-14---------------------------------
- INT 14 - SERIAL - Digiboard DigiCHANNEL PC/X* Extender INT 14 (XAPCM232.SYS)
- InstallCheck: determine whether the "~DOSXAM~" character device exists
- Index: installation check;Digiboard DigiCHANNEL
- --------S-1400-------------------------------
- INT 14 - SERIAL - INITIALIZE PORT
- AH = 00h
- AL = port parameters (see #00300)
- DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
- Return: AH = line status (see #00304)
- FFh if error on Digiboard XAPCM232.SYS
- AL = modem status (see #00305)
- Notes: default handler is at F000h:E739h in IBM PC and 100% compatible BIOSes
- since the PCjr supports a maximum of 4800 bps, attempting to set 9600
- bps will result in 4800 bps
- various network and serial-port drivers support the standard BIOS
- functions with interrupt-driven I/O instead of the BIOS's polled I/O
- the 04/08/93 Compaq system ROM uses only the low two bits of DX
- SeeAlso: AH=04h"SERIAL",AH=04h"MultiDOS",AH=05h"SERIAL",AH=57h
- SeeAlso: AX=8000h"ARTICOM",AH=81h"COMM-DRV",AH=82h"COURIERS",AH=8Ch
- SeeAlso: MEM 0040h:0000h,PORT 03F8h"Serial"
- Bitfields for serial port parameters:
- Bit(s) Description (Table 00300)
- 7-5 data rate (110,150,300,600,1200,2400,4800,9600 bps)
- 4-3 parity (00 or 10 = none, 01 = odd, 11 = even)
- 2 stop bits (set = 2, clear = 1)
- 1-0 data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
- SeeAlso: #00302,#00307,#00308,#00309
- --------S-1400-------------------------------
- INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE
- AH = 00h
- AL = initializing parameters
- 7 - 6 - 5 4 - 3 2 1 - 0
- -BAUD RATE- PARITY STOP WORD
- BITS LENGTH
- 000 19200 bd 00 none 0: 1 00: 5
- 001 38400 bd 01 odd 1: 2 01: 6
- 010 300 bd 11 even 10: 7
- 011 600 bd 11: 8
- 100 1200 bd
- 101 2400 bd
- 110 4800 bd
- 111 9600 bd (4800 on PCjr)
- DX = port number (0-3 or FFh if only performing non-I/O setup)
- Return: AH = RS-232 status code bits (see #00301)
- AL = modem status bits
- bit 3: always 1
- bit 7: DCD - carrier detect
- SeeAlso: #00300,AH=05h"FOSSIL",AH=81h"COMM-DRV",AH=82h"COURIERS"
- Bitfields for FOSSIL RS-232 status:
- Bit(s) Description (Table 00301)
- 0 RDA - input data is available in buffer
- 1 OVRN - data has been lost
- 5 THRE - room is available in output buffer
- 6 TSRE - output buffer empty
- --------S-1400-------------------------------
- INT 14 - Tandy 2000 - SERIAL - RESET COMM PORT
- AH = 00h
- AL = RS-232C parameters (see #00302)
- DL = port number
- DH = protocol
- bit 0: use XON/XOFF on received data
- bit 1: use XON/XOFF when transmitting
- Return: AH = line status (see #00304)
- AL = modem status (see #00305)
- Note: this interrupt is identical to INT 53 on the Tandy 2000
- SeeAlso: AH=04h"Tandy 2000",INT 53"Tandy 2000"
- --------S-1400-------------------------------
- INT 14 - MBBIOS - INITIALIZE PORT
- AH = 00h
- AL = port parameters (see #00302)
- DX = port number
- Return: AH = line status (see #00304)
- AL = modem status (see #00305)
- Note: MBBIOS was written by H. Roy Engehausen
- SeeAlso: AH=04h"MBBIOS",AH=05h"MBBIOS",AH=09h"MBBIOS"
- Bitfields for MBBIOS port parameters:
- Bit(s) Description (Table 00302)
- 7-5 data rate
- (normally 110,150,300,600,1200,2400,4800,9600 bps;
- 9600,14400,19200,28800,38400,57600,115200,330400 bps
- if the high-speed option is set)
- 4-3 parity (00 or 10 = none, 01 = odd, 11 = even)
- 2 stop bits (set = 2, clear = 1)
- 1-0 data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
- SeeAlso: #00300
- --------N-1400--DXFFFF-----------------------
- INT 14 - Connection Manager - MODIFY DEFAULT CONNECTION PARAMETERS
- AH = 00h
- DX = FFFFh
- ES:DI -> vector string specifying new parameters
- Return: AH = return code (00h,03h) (see #00303)
- Program: Connection Manager by Softwarehouse Corp. permits the sharing of
- serial ports over an IPX or NetBIOS-based network
- Note: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
- function, but redirects the port over the network; if DX is any other
- value, the call is chained
- SeeAlso: AH=04h/DX=FFFFh,AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
- (Table 00303)
- Values for Connection Manager return code:
- 00h successful
- 01h no such connection
- 02h invalid connection ID
- 03h invalid subvector found
- 04h communication error (check BH)
- 06h insufficient resources, retry later
- FFh no data available
- --------S-1401-------------------------------
- INT 14 - SERIAL - WRITE CHARACTER TO PORT
- AH = 01h
- AL = character to write
- DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
- Return: AH bit 7 clear if successful
- AH bit 7 set on error
- AH bits 6-0 = port status (see #00304)
- Notes: various network and serial-port drivers support the standard BIOS
- functions with interrupt-driven I/O instead of the BIOS's polled I/O
- the 04/08/93 Compaq system ROM uses only the low two bits of DX
- SeeAlso: AH=02h,AH=0Bh"FOSSIL",AX=8000h"ARTICOM",AH=89h,MEM 0040h:007Ch
- --------N-1401--DXFFFF-----------------------
- INT 14 - Connection Manager - SEND CHARACTER
- AH = 01h
- DX = FFFFh
- BH = character to send
- Return: AH = return code (00h-02h,06h) (see #00303)
- Notes: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
- function, but redirects the port over the network; if DX is any other
- value, the call is chained
- this function is provided primarily for compatibility; AH=06h/DX=FFFFh
- is the preferred function because it provides better performance
- SeeAlso: AH=02h/DX=FFFFh,AH=06h/DX=FFFFh,AH=09h/DX=FFFFh
- --------S-1402-------------------------------
- INT 14 - SERIAL - READ CHARACTER FROM PORT
- AH = 02h
- AL = 00h (ArtiCom)
- DX = port number (00h-03h (04h-43h for Digiboard XAPCM232.SYS))
- Return: AH = line status (see #00304)
- AL = received character if AH bit 7 clear
- Notes: will timeout if DSR is not asserted, even if function 03h returns
- data ready
- various network and serial-port drivers support the standard BIOS
- functions with interrupt-driven I/O instead of the BIOS's polled I/O
- the 04/08/93 Compaq system ROM uses only the low two bits of DX
- SeeAlso: AH=01h,AH=02h"FOSSIL",AH=84h,AH=FCh
- --------S-1402-------------------------------
- INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT
- AH = 02h
- DX = port number (0-3)
- Return: AL = character received
- AH = 00h
- SeeAlso: AH=01h,AH=02h"SERIAL"
- --------N-1402--DXFFFF-----------------------
- INT 14 - Connection Manager - RECEIVE CHARACTER
- AH = 02h
- DX = FFFFh
- BH = character to send
- Return: AH = return code (00h-02h,04h,FFh) (see #00303)
- BH = line status (see #00304)
- AL = received character (if any)
- Notes: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
- function, but redirects the port over the network; if DX is any other
- value, the call is chained
- this function is provided primarily for compatibility; AH=07h/DX=FFFFh
- is the preferred function because it provides better performance
- SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh,AH=06h/DX=FFFFh
- --------S-1403-------------------------------
- INT 14 - SERIAL - GET PORT STATUS
- AH = 03h
- AL = 00h (ArtiCom)
- DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
- Return: AH = line status (see #00304)
- AL = modem status (see #00305)
- AX = 9E00h if disconnected (ArtiCom)
- Note: the 04/08/93 Compaq system ROM uses only the low two bits of DX
- SeeAlso: AH=00h,AH=07h"MultiDOS",AX=8000h"ARTICOM",AH=81h"COURIERS",AX=FD02h
- Bitfields for serial line status:
- Bit(s) Description (Table 00304)
- 7 timeout
- 6 transmit shift register empty
- 5 transmit holding register empty
- 4 break detected
- 3 framing error
- 2 parity error
- 1 overrun error
- 0 receive data ready
- Note: for COMM-DRV, if bit 7 is set, an error occurred, and may be retrieved
- through a separate call (see AX=8000h"COMM-DRV")
- Bitfields for modem status:
- Bit(s) Description (Table 00305)
- 7 carrier detect
- 6 ring indicator
- 5 data set ready
- 4 clear to send
- 3 delta carrier detect
- 2 trailing edge of ring indicator
- 1 delta data set ready
- 0 delta clear to send
- --------N-1403--DXFFFF-----------------------
- INT 14 - Connection Manager - RETURN COMMUNICATION PORT STATUS
- AH = 03h
- DX = FFFFh
- AL = connection ID
- Return: AH = return code (00h-02h) (see #00303)
- BH = line status (see #00306)
- BL = modem status (see #00305) (only bits 4,5,7; all others zero)
- Notes: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
- function, but redirects the port over the network; if DX is any other
- value, the call is chained
- SeeAlso: AH=00h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Ah/DX=FFFFh
- Bitfields for Connection Manager line status:
- Bit(s) Description (Table 00306)
- 7 CTS changed
- 6 current CTS state
- 5 timeout
- 4 break
- 3 framing error
- 2 parity error
- 1 overrun
- 0 current carrier state (0 active, 1 no carrier)
- --------S-1404-------------------------------
- INT 14 - SERIAL - EXTENDED INITIALIZE (CONVERTIBLE,PS)
- AH = 04h
- AL = break status
- 00h if break
- 01h if no break
- BH = parity (see #00307)
- BL = number of stop bits
- 00h one stop bit
- 01h two stop bits (1.5 if 5 bit word length)
- CH = word length (see #00308)
- CL = bps rate (see #00309)
- DX = port number
- Return: AX = port status code (see #00304,#00305)
- SeeAlso: AH=00h,AH=1Eh,AX=8000h"ARTICOM"
- (Table 00307)
- Values for serial port parity:
- 00h no parity
- 01h odd parity
- 02h even parity
- 03h stick parity odd
- 04h stick parity even
- SeeAlso: #00300,#00308,#00309,#00310
- (Table 00308)
- Values for serial port word length:
- 00h 5 bits
- 01h 6 bits
- 02h 7 bits
- 03h 8 bits
- SeeAlso: #00300,#00307,#00309,#00345
- (Table 00309)
- Values for serial port bps rate:
- 00h 110 (19200 if ComShare installed)
- 01h 150 (38400 if ComShare installed)
- 02h 300
- 03h 600 (14400 if ComShare installed)
- 04h 1200
- 05h 2400
- 06h 4800 (28800 if ComShare installed)
- 07h 9600
- 08h 19200
- ---ComShare---
- 09h 38400
- 0Ah 57600
- 0Bh 115200
- SeeAlso: #00300,#00307,#00309,#00346,#00353,AH=36h,#00364,#00606,#02923
- --------S-1404-------------------------------
- INT 14 - Tandy 2000 - SERIAL - FLUSH COMM BUFFER
- AH = 04h
- DL = port number
- DH = protocol
- bit 0: use XON/XOFF on received data
- bit 1: use XON/XOFF when transmitting
- Return: nothing
- Desc: clears the serial interface buffer
- Note: this interrupt is identical to INT 53 on the Tandy 2000
- SeeAlso: AH=00h"Tandy 2000",INT 53"Tandy 2000"
- --------S-1404-------------------------------
- INT 14 - FOSSIL - INITIALIZE DRIVER
- AH = 04h
- DX = port number
- optionally BX=4F50h
- ES:CX -> byte to be set upon ^C
- Return: AX = 1954h (if successful)
- BL = maximum function number supported (excluding 7Eh and above)
- BH = revision of FOSSIL specification supported
- DTR is raised
- Note: the word at offset 6 in the interrupt handler contains 1954h, and the
- following byte contains the maximum function number supported; this
- can serve as an installation check
- SeeAlso: AH=05h"FOSSIL",AH=1Ch,INT 11/AH=BCh
- Index: installation check;FOSSIL
- --------S-1404-------------------------------
- INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT
- AH = 04h
- Return: port initialized; if Hayes-compatible modem, a connection has been
- established
- Note: the port number is stored at offset BEh in the Task Control Block
- (see #00456 at INT 15/AH=13h"MultiDOS")
- SeeAlso: AH=00h,AH=05h"MultiDOS",AH=20h"MultiDOS",INT 15/AH=13h"MultiDOS"
- --------S-1404-------------------------------
- INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE BAUD RATE
- AH = 04h
- AL = initializing parameters (see #00310)
- BX = baud rate
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: AH = status
- 00h successful
- FFh error
- SeeAlso: AH=05h"Digiboard"
- Bitfields for Digiboard initializing parameters:
- Bit(s) Description (Table 00310)
- 7-5 unused
- 4-3 parity (00 none, 01 odd, 11 even)
- 2 stop bits (0 = one, 1 = two)
- 1-0 data bits (00 = five, 01 = six, 10 = seven, 11 = eight)
- SeeAlso: #00307,#00308
- --------S-1404-------------------------------
- INT 14 - MBBIOS - INSTALLATION CHECK
- AH = 04h
- DX = port number
- Return: AX = AA55h if installed on specified port
- SeeAlso: AH=00h"MBBIOS",AH=09h"MBBIOS"
- --------N-1404--DXFFFF-----------------------
- INT 14 - Connection Manager - OPEN COMMUNICATION
- AH = 04h
- DX = FFFFh
- ES:DI -> Connection Request protocol vector (see #00311)
- Return: AH = return code
- 00h successful
- AL = connection ID
- BH = connection type
- 00h direct connection or no dialing
- 01h Connection Server dialed phone
- 01h no response from Connection Server
- 03h invalid request
- Program: Connection Manager by Softwarehouse Corp. permits the sharing of
- serial ports over an IPX or NetBIOS-based network
- Desc: initiate a connection to the Connection Server listed in the current
- Client parameter set
- Notes: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
- function, but redirects the port over the network; if DX is any other
- value, the call is chained
- all subvectors of the Connection Request vector are optional; if
- missing, default values are provided by the default connection
- parameter set
- SeeAlso: AH=00h/DX=FFFFh,AH=05h/DX=FFFFh,AH=06h/DX=FFFFh,AH=07h/DX=FFFFh
- SeeAlso: AH=0Ah/DX=FFFFh,AH=0Ch/DX=FFFFh
- Format of Connection Manager protocol command vector:
- Offset Size Description (Table 00311)
- 00h WORD (big-endian) total length of command (including this word)
- 02h WORD (big-endian) command code
- EF01h Connection Request
- EF06h Modify Connection Parameters
- 04h N BYTEs list of subvectors (see #00313)
- allowable subvector types are 01h-04h,17h,18h for command code
- EF01h; 03h,04h for command code EF06h (see #00312)
- (Table 00312)
- Values for Connection Manager subvector type code:
- 01h Connection ID
- 02h Destination ID
- 03h Asynchronous line parameters
- 04h Data transfer parameters
- 09h Line speed
- 0Ah Serial coding
- 0Bh Packet size
- 0Ch Timers
- 0Dh Special characters
- 0Eh Target ID
- 0Fh Telephone number
- 10h ASCII destination ID
- 11h Parity
- 12h Bits per character
- 13h Number of stop bits
- 14h Packet timer
- 15h Intercharacter timer
- 17h Flags
- 18h Parameter ranges
- 19h Flow control
- Format of Connection Manager subvector:
- Offset Size Description (Table 00313)
- 00h BYTE length of subvector
- 01h BYTE type code (see #00312)
- 02h N-2 BYTEs data, which may include subvectors
- SeeAlso: #00314,#00315,#00316,#00317,#00318,#00319,#00320,#00321,#00322,#00323,#00324
- SeeAlso: #00325,#00326,#00328,#00329,#00330,#00331,#00332,#00333,#00311
- Format of Connection ID subvector:
- Offset Size Description (Table 00314)
- 00h BYTE 03h (length)
- 01h BYTE 01h (subvector "Connection ID")
- 02h BYTE connection ID
- SeeAlso: #00313
- Format of Destination ID subvector:
- Offset Size Description (Table 00315)
- 00h BYTE length
- 01h BYTE 02h (subvector "Destination ID")
- 02h N BYTEs subvector(s) of type 0Eh, 0Fh, or 10h
- SeeAlso: #00313
- Format of Asynchronous line parameters subvector:
- Offset Size Description (Table 00316)
- 00h BYTE length
- 01h BYTE 03h (subvector "Asynchronous line parameters")
- 02h N BYTEs subvector(s) of type 09h, 0Ah, or 19h
- SeeAlso: #00313
- Format of Data transfer parameters subvector:
- Offset Size Description (Table 00317)
- 00h BYTE length
- 01h BYTE 04h (subvector "Data transfer parameters")
- 02h N BYTEs subvector(s) of type 0Bh, 0Ch, or 0Dh
- SeeAlso: #00313
- Format of Line speed subvector:
- Offset Size Description (Table 00318)
- 00h BYTE 04h (length)
- 01h BYTE 09h (subvector "Line speed")
- 02h WORD bit map, highest set bit selects speed
- bit 0: 2400
- bits 1-7: 1800, 1200, 600, 300, 115200, 150, 110 bps
- bits 8-15: 57600, 38400, 19200, 14400, 9600, 7200, 4800, 3600
- SeeAlso: #00313
- Format of Serial coding subvector:
- Offset Size Description (Table 00319)
- 00h BYTE length
- 01h BYTE 0Ah (subvector "Serial coding")
- 02h N BYTEs subvector(s) of type 11h, 12h, or 13h
- SeeAlso: #00313
- Format of Packet size subvector:
- Offset Size Description (Table 00320)
- 00h BYTE 04h (length)
- 01h BYTE 0Bh (subvector "Packet size")
- 02h WORD (big-endian) packet size, 1 to 1024
- SeeAlso: #00313
- Format of Timers subvector:
- Offset Size Description (Table 00321)
- 00h BYTE length
- 01h BYTE 0Ch (subvector "Timers")
- 02h 8 BYTEs subvector of type 14h or 15h
- SeeAlso: #00313
- Format of Special characters subvector:
- Offset Size Description (Table 00322)
- 00h BYTE length
- 01h BYTE 0Dh (subvector "Special characters")
- 02h N BYTEs list of ASCII characters to be used as EOM or EOB
- SeeAlso: #00313
- Format of Target ID:
- Offset Size Description (Table 00323)
- 00h BYTE length
- 01h BYTE 0Eh (subvector "Target ID")
- 02h N BYTEs target ID, 1-16 bytes
- SeeAlso: #00313
- Format of Telephone number subvector:
- Offset Size Description (Table 00324)
- 00h BYTE length
- 01h BYTE 0Fh (subvector "Telephone number")
- 02h N BYTEs telephone number
- SeeAlso: #00313
- Format of ASCII destination ID subvector:
- Offset Size Description (Table 00325)
- 00h BYTE length
- 01h BYTE 10h (subvector "ASCII destination ID")
- 02h N BYTEs destination ID
- SeeAlso: #00313
- Format of Parity subvector:
- Offset Size Description (Table 00326)
- 00h BYTE 03h (length)
- 01h BYTE 11h (subvector "Parity")
- 02h BYTE parity type (see #00327)
- SeeAlso: #00313
- Bitfields for Connection Manager parity type:
- Bit(s) Description (Table 00327)
- 7 odd
- 6 even
- 5 mark
- 4 space
- 3 none
- SeeAlso: #00326
- Format of Bits per character subvector:
- Offset Size Description (Table 00328)
- 00h BYTE 03h (length)
- 01h BYTE 12h (subvector "Bits per character")
- 02h BYTE bits per character
- bit 7: seven
- bit 6: eight
- SeeAlso: #00313
- Format of Number of stop bits subvector:
- Offset Size Description (Table 00329)
- 00h BYTE 03h (length)
- 01h BYTE 13h (subvector "Number of stop bits")
- 02h BYTE stop bits
- bit 7: one
- bit 6: 1.5
- bit 5: two
- SeeAlso: #00313
- Format of Packet timer and Intercharacter timer subvectors:
- Offset Size Description (Table 00330)
- 00h BYTE 04h (length)
- 01h BYTE subvector type
- 14h Packet timer
- 15h Intercharacter timer
- 02h WORD (big-endian) unit of value representing 20ms
- SeeAlso: #00313
- Format of Flags subvector:
- Offset Size Description (Table 00331)
- 00h BYTE 03h (length)
- 01h BYTE 17h (subvector "Flags")
- 02h BYTE flags
- bit 7: queueing requested
- SeeAlso: #00313
- Format of Parameter ranges subvector:
- Offset Size Description (Table 00332)
- 00h BYTE length
- 01h BYTE 18h (subvector "Parameter ranges")
- 02h N BYTEs subvector(s) of type 09h, 11h, 12h, or 13h
- SeeAlso: #00313
- Format of Flow control subvector:
- Offset Size Description (Table 00333)
- 00h BYTE length (02h-04h)
- 01h BYTE 19h (subvector "Flow control")
- 02h BYTE XOFF character
- 03h BYTE XON character
- Note: if length is 02h, flow control is disabled; if length is 03h, any
- character will be accepted as XON after an XOFF
- SeeAlso: #00313
- --------S-140400-----------------------------
- INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INSTALLATION CHECK
- AX = 0400h
- Return: AX = 0FF0h
- SeeAlso: AX=0401h,AX=0408h
- --------S-140401-----------------------------
- INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INITIALIZE MODE
- AX = 0401h
- CX = mode
- Return: nothing
- SeeAlso: AX=0400h,AX=0402h
- --------S-140402-----------------------------
- INT 14 - Microsoft Systems Journal TSRCOMM INT14 - EXTENDED INITIALIZE
- AX = 0402h
- CL = parameters
- Return: nothing
- SeeAlso: AX=0400h,AX=0401h
- --------S-140403-----------------------------
- INT 14 - Microsoft Systems Journal TSRCOMM INT14 - SET TIMEOUT
- AX = 0403h
- CX = timeout
- Return: nothing
- SeeAlso: AX=0400h
- --------S-140404-----------------------------
- INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE RECEIVE BUFFER
- AX = 0404h
- Return: nothing
- SeeAlso: AX=0400h,AX=0405h,AX=0406h
- --------S-140405-----------------------------
- INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET RECEIVE BUFFER COUNT
- AX = 0405h
- Return: AX = number of characters in buffer
- SeeAlso: AX=0400h,AX=0404h,AX=0407h
- --------S-140406-----------------------------
- INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE TRANSMIT BUFFER
- AX = 0406h
- Return: nothing
- SeeAlso: AX=0400h,AX=0404h,AX=0407h
- --------S-140407-----------------------------
- INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET TRANSMIT BUFFER COUNT
- AX = 0407h
- Return: AX = number of characters in the buffer
- SeeAlso: AX=0400h,AX=0405h,AX=0406h
- --------S-140408-----------------------------
- INT 14 - Microsoft Systems Journal TSRCOMM INT14 - UNINSTALL
- AX = 0408h
- Return: nothing
- SeeAlso: AX=0400h
- --------S-1405-------------------------------
- INT 14 - SERIAL - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS)
- AH = 05h
- AL = function
- 00h read modem control register
- Return: BL = modem control register (see #00334)
- AH = status
- 01h write modem control register
- BL = modem control register (see #00334)
- Return: AX = status
- DX = port number
- Note: also supported by ArtiCom
- SeeAlso: AH=00h,AH=1Fh,AX=8000h"ARTICOM",AH=FBh
- Bitfields for modem control register:
- Bit(s) Description (Table 00334)
- 0 data terminal ready
- 1 request to send
- 2 OUT1
- 3 OUT2
- 4 LOOP
- 5-7 reserved
- --------S-1405-------------------------------
- INT 14 - FOSSIL - DEINITIALIZE DRIVER
- AH = 05h
- DX = port number
- Return: none
- DTR is not affected
- SeeAlso: AH=00h,AH=04h"FOSSIL",AH=1Dh,AH=8Dh
- --------S-1405-------------------------------
- INT 14 - MultiDOS Plus IODRV - READ CHARACTER FROM PORT
- AH = 05h
- AL = timeout in seconds (00h = never)
- Return: AL = status
- 00h successful
- AH = character read
- 01h read error
- 02h timed out
- other modem status (CTS, DSR) changed
- Note: the port number is stored at offset BEh in the Task Control Block
- SeeAlso: AH=02h,AH=04h"MultiDOS",AH=06h"MultiDOS",AH=22h"MultiDOS"
- SeeAlso: INT 15/AH=13h"MultiDOS"
- --------S-1405-------------------------------
- INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE PROTOCOL
- AH = 05h
- AL = protocol (see #00335)
- BH = new XOFF character (00h = current)
- BL = new XON character (00h = current)
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: AH = status
- 00h successful
- FFh error
- SeeAlso: AH=04h"Digiboard"
- Bitfields for Digiboard protocol:
- Bit(s) Description (Table 00335)
- 7-4 unused
- 3 RTS/CTS
- 2 DSR
- 1,0 XON/XOFF
- --------S-1405-------------------------------
- INT 14 - MBBIOS - DROP DTR AND RTS
- AH = 05h
- DX = port number
- Return: none
- SeeAlso: AH=00h"MBBIOS",AH=06h"MBBIOS",AH=06h"FOSSIL"
- --------S-1405-------------------------------
- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHANGE PORT PROTOCOL
- AH = 05h
- AL = new port protocol (see #00336)
- BH = new XOFF character
- BL = new XON character
- DX = port number
- Return: AH = FFh if invalid protocol
- SeeAlso: AH=00h,AH=04h"SERIAL",AH=06h"PC-MOS"
- Bitfields for PC-MOS/386 serial port protocol:
- Bit(s) Description (Table 00336)
- 7 set to enable/disable CD monitoring, clear to set protocol
- ---bit 7 set---
- 4 CD monitoring enabled
- 5 automatic restart enabled
- ---bit 7 clear---
- 0 receive XON/XOFF
- 1 transmit XON/XOFF
- 2 DTR/DSR
- 3 RTS/CTS
- --------N-1405--DXFFFF-----------------------
- INT 14 - Connection Manager - CLOSE COMMUNICATION
- AH = 05h
- DX = FFFFh
- AL = connection ID
- Return: AH = return code
- 00h successful
- 01h no such connection
- 02h invalid connection ID
- AL = correct connection ID
- Desc: terminate existing connection to allow another one to be established
- Note: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
- function, but redirects the port over the network; if DX is any other
- value, the call is chained
- SeeAlso: AH=04h/DX=FFFFh,AH=0Dh/DX=FFFFh
- --------S-1406-------------------------------
- INT 14 - FOSSIL - RAISE/LOWER DTR
- AH = 06h
- DX = port
- AL = DTR state to be set
- 00h = lower
- 01h = raise
- Return: nothing
- SeeAlso: AH=05h"MBBIOS",AH=1Ah
- --------S-1406-------------------------------
- INT 14 - MultiDOS Plus IODRV - WRITE CHARACTER TO PORT
- AH = 06h
- AL = character
- Return: AL = status
- 00h successful
- Notes: the port number is stored at offset BEh in the Task Control Block
- if output queue is full, the calling task is blocked until the
- character can be stored
- SeeAlso: AH=01h,AH=04h"MultiDOS",AH=05h"MultiDOS",AH=21h"MultiDOS"
- SeeAlso: INT 15/AH=13h"MultiDOS"
- --------S-1406-------------------------------
- INT 14 - MBBIOS - RAISE DTR AND RTS
- AH = 06h
- DX = port number
- Return: none
- SeeAlso: AH=05h"MBBIOS",AH=07h"MBBIOS"
- --------S-1406-------------------------------
- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DRIVER 'ID' FUNCTION
- AH = 06h
- DX = port number
- Return: AH bit 7 set
- AL = number of highest function supported by driver
- Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
- operating system by The Software Link, Inc.
- SeeAlso: AH=18h"PC-MOS"
- --------N-1406-------------------------------
- INT 14 - TelAPI - WRITE BLOCK
- AH = 06h
- CX = number of characters to write
- DX = port number
- ES:DI -> buffer containing data
- Return: AX = number of characters actually sent (negative on error)
- CX = ???
- SeeAlso: AH=07h"TelAPI",AH=E0h"TelAPI",AH=E3h"TelAPI"
- --------N-1406--DXFFFF-----------------------
- INT 14 - Connection Manager - SEND CHARACTER BLOCK
- AH = 06h
- DX = FFFFh
- AL = connection ID
- CX = number of characters to send
- ES:DI -> buffer containing data to be sent
- Return: AH = return code (see #00303)
- Program: Connection Manager by Softwarehouse Corp. permits the sharing of
- serial ports over an IPX or NetBIOS-based network
- SeeAlso: AH=04h/DX=FFFFh,AH=07h/DX=FFFFh,AH=09h/DX=FFFFh
- --------S-1407-------------------------------
- INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS
- AH = 07h
- Return: AL = timer tick interrupt number
- AH = ticks per second on interrupt number in AL
- DX = approximate number of milliseconds per tick
- SeeAlso: AH=16h
- --------S-1407-------------------------------
- INT 14 - MultiDOS Plus IODRV - GET PORT STATUS
- AH = 07h
- Return: CL = modem status (see #00305)
- CH = character at head of input queue (if any)
- DX = number of characters in input queue
- Note: the port number is stored at offset BEh in the Task Control Block
- SeeAlso: AH=03h,AH=05h"MultiDOS",AH=08h"MultiDOS",AH=09h"MultiDOS"
- SeeAlso: AH=23h"MultiDOS",INT 15/AH=13h"MultiDOS"
- --------S-1407-------------------------------
- INT 14 - MBBIOS - SEND BREAK
- AH = 07h
- DX = port number
- Return: none
- SeeAlso: AH=06h"MBBIOS",AH=FAh"EBIOS"
- --------S-1407-------------------------------
- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SEND RS-232 BREAK
- AH = 07h
- BX = duration of break in clock ticks
- DX = port number
- Return: nothing
- --------N-1407-------------------------------
- INT 14 - TelAPI - READ BLOCK
- AH = 07h
- CX = length of buffer in bytes
- DX = port number
- ES:DI -> buffer for data
- Return: AX > 0000h number of characters actually read
- AX = 0000h host has closed connection
- AX < 0000h error code (see #00397)
- CX = ???
- Note: translates CRLF into local EOL if the connection is in ASCII mode,
- negotiates various Telnet options, and immediately executes several
- different Telnet action commands
- SeeAlso: AH=06h"TelAPI",AH=E0h"TelAPI",AH=E2h"TelAPI"
- --------N-1407--DXFFFF-----------------------
- INT 14 - Connection Manager - RECEIVE CHARACTER BLOCK
- AH = 07h
- DX = FFFFh
- AL = connection ID
- BL = flag
- 00h wait for data
- nonzero do not wait if no data avaiable
- CX = size of receive buffer
- ES:DI -> buffer for received characters
- Return: AH = return code (00h-02h,04h,FFh) (see #00303)
- BH = line status (see #00306)
- CX = number of characters received
- Program: Connection Manager by Softwarehouse Corp. permits the sharing of
- serial ports over an IPX or NetBIOS-based network
- SeeAlso: AH=01h/DX=FFFFh,AH=04h/DX=FFFFh,AH=06h/DX=FFFFh
- --------S-1408-------------------------------
- INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE
- AH = 08h
- DX = port number
- Return: nothing
- SeeAlso: AH=09h"FOSSIL"
- --------S-1408-------------------------------
- INT 14 - MultiDOS Plus 4.0 IODRV - GET AND RESET PORT LINE STATUS
- AH = 08h
- Return: AL = line status (see #00304)
- AH destroyed
- Notes: the port number is stored at offset BEh in the Task Control Block
- on every line status change, the line status is ORed with the line
- status accumulator; this function returns the accumulator and clears
- it
- SeeAlso: AH=03h,AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
- --------S-1408-------------------------------
- INT 14 - Digiboard DigiCHANNEL PC/X* - ALTERNATE STATUS CHECK
- AH = 08h
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: AH = RS232 status bits (see #00304 at AH=03h)
- ZF set if no characters queued
- ZF clear if character available
- AL = next character
- SeeAlso: AH=03h,AH=08h"PC-MOS",AH=09h"Digiboard",AH=14h"Digiboard"
- --------S-1408-------------------------------
- INT 14 - MBBIOS - NON-DESTRUCTIVE READ
- AH = 08h
- DX = port number
- Return: AL = character (if AH bit 0 set)
- AH = status (see #00304)
- SeeAlso: AH=0Bh"MBBIOS",AH=0Ch"FOSSIL"
- --------S-1408-------------------------------
- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STATUS CHECK
- AH = 08h
- DX = port number
- Return: CF set if carrier loss detected
- ZF set if input buffer empty
- ZF clear if characters available
- AL = next character dequeued
- --------N-1408--DXFFFF-----------------------
- INT 14 - Connection Manager - RETURN DEFAULT CONNECTION PARAMETERS
- AH = 08h
- DX = FFFFh
- CX = size of buffer for parameters or 0000h to get length
- ES:DI -> buffer for parameter vector (see #00311)
- Return: AH = return code
- 00h successful
- CX = number of bytes required (if CX=0000h on entry)
- CX = number of bytes omitted for lack of space (if CX nonzero)
- nonzero invalid request
- Program: Connection Manager by Softwarehouse Corp. permits the sharing of
- serial ports over an IPX or NetBIOS-based network
- SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
- --------S-1409-------------------------------
- INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT
- AH = 09h
- DX = port number
- Return: nothing
- SeeAlso: AH=08h"FOSSIL",AH=0Ah"FOSSIL",AH=88h
- --------S-1409-------------------------------
- INT 14 - MultiDOS Plus IODRV - RESET PORT STATUS
- AH = 09h
- Return: modem status byte cleared
- Note: the port number is stored at offset BEh in the Task Control Block
- SeeAlso: AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
- --------S-1409-------------------------------
- INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR BUFFERS
- AH = 09h
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: AH = status
- 00h successful
- FFh error
- SeeAlso: AH=08h"Digiboard",AH=0Ah"Digiboard",AH=10h"Digiboard"
- --------S-1409-------------------------------
- INT 14 - MBBIOS - GET/SET OPTIONS
- AH = 09h
- AL = option byte (see #00337)
- DX = port number???
- Return: AL = old option byte
- SeeAlso: AH=00h"MBBIOS",AH=04h"MBBIOS",AH=10h"FOSSIL"
- Bitfields for MBBIOS option byte:
- Bit(s) Description (Table 00337)
- 0 transmit buffering enabled
- 2 hardware handshaking enabled
- 5 high-speed option enabled (see AH=00h"MBBIOS",#00302)
- other reserved
- --------S-1409-------------------------------
- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RESET I/O BUFFER POINTERS
- AH = 09h
- DX = port number
- Return: nothing
- SeeAlso: AH=13h"PC-MOS"
- --------N-1409--DXFFFF-----------------------
- INT 14 - Connection Manager - SEND BREAK
- AH = 09h
- DX = FFFFh
- AL = connection ID
- Return: AH = return code (00h-02h) (see #00303 at AH=00h/DX=FFFFh)
- Program: Connection Manager by Softwarehouse Corp. permits the sharing of
- serial ports over an IPX or NetBIOS-based network
- SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh
- --------S-140A-------------------------------
- INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT
- AH = 0Ah
- DX = port number
- Return: nothing
- SeeAlso: AH=09h"FOSSIL",AH=85h
- --------S-140A-------------------------------
- INT 14 - Digiboard DigiCHANNEL PC/X* - INPUT QUEUE CHECK
- AH = 0Ah
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: AX = number of characters available in buffer
- Note: this function is also supported by the PC-MOS/386 v5.01 $serial.sys
- SeeAlso: AH=09h"Digiboard",AH=0Dh"Digiboard"
- --------S-140A-------------------------------
- INT 14 - MBBIOS - WRITE BUFFER
- AH = 0Ah
- CX = count
- ES:DI -> buffer (see #00338)
- Return: AX = status (see #00304,#00305)
- CX = unsent character count
- DI updated
- Note: the PACCOM version of MBBIOS does not use CX or ES:DI; instead, ES
- contains the segment of a buffer containing the packet to be sent,
- which by default will be freed once the packet has been sent. Use
- AH=0Ch"MBBIOS" to allocate the buffer.
- SeeAlso: AH=01h,AH=0Bh"MBBIOS",AH=0Ch"MBBIOS",AH=19h"FOSSIL"
- Format of MBBIOS PACCOM buffer:
- Offset Size Description (Table 00338)
- 00h 504 BYTEs data area
- 1F8h WORD length of data in data area
- 1FAh BYTE flags/status
- bit 7: don't discard buffer after transmitting data
- bit 6: buffer has been transmitted
- 1FBh BYTE reserved (0) for additional flags/status
- 1FCh WORD user data
- 1FEh WORD MBBIOS-internal pointer to next buffer
- --------N-140A--DXFFFF-----------------------
- INT 14 - Connection Manager - MODIFY ACTIVE CONNECTION PARAMETERS
- AH = 0Ah
- DX = FFFFh
- ES:DI -> vector string containing new parameters (see #00311)
- Return: AH = return code (00h-03h,06h) (see #00303)
- Program: Connection Manager by Softwarehouse Corp. permits the sharing of
- serial ports over an IPX or NetBIOS-based network
- Note: any subvectors valid for the Change Parameters command replace the
- existing values in the current set
- SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
- --------S-140B-------------------------------
- INT 14 - FOSSIL - TRANSMIT NO WAIT
- AH = 0Bh
- AL = character
- DX = port number
- Return: AX = result
- 0000h character not accepted
- 0001h character accepted
- SeeAlso: AH=01h
- --------S-140B-------------------------------
- INT 14 - MBBIOS - READ BUFFER
- AH = 0Bh
- CX = size of buffer
- ES:DI -> buffer
- Return: AH = composite line status (see #00304) formed by ORing all statuses
- on receive interrupts; bit 0 set if additional characters
- available
- AL = composite modem status (see #00305) formed by ORing all statuses
- CX = number of characters actually read
- DI updated
- Note: the PACCOM version of MBBIOS does not use CX or ES:DI on call,
- instead returning ES set to the segment of the buffer containing a
- received packet, or 0000h if no packets available; the buffer may
- be freed with AH=0Ch"MBBIOS"
- SeeAlso: AH=02h,AH=08h"MBBIOS",AH=0Ah"MBBIOS",AH=0Ch"MBBIOS",AH=18h"FOSSIL"
- --------N-140B--DXFFFF-----------------------
- INT 14 - Connection Manager - PREPARE FOR INBOUND CONNECTION
- AH = 0Bh
- DX = FFFFh
- AL = service name
- 00h use parameter file or default
- 01h use specified name
- ES:DI -> 16-byte blank-padded name
- BH = connection notification
- 00h program awaiting connection, don't notify user
- 01h notify user on connecting
- BL = connection type
- 00h connection will use Connection Manager API
- Return: AH = return code (00h-02h) (see #00303 at AH=00h/DX=FFFFh)
- AL = connection ID if AH=00h
- Program: Connection Manager by Softwarehouse Corp. permits the sharing of
- serial ports over an IPX or NetBIOS-based network
- SeeAlso: AH=04h/DX=FFFFh,AH=0Ch/DX=FFFFh,AH=10h/DX=FFFFh
- --------S-140C-------------------------------
- INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD
- AH = 0Ch
- DX = port number
- Return: AX = FFFFh character not available
- AX = 00xxh character xx available
- SeeAlso: AH=08h"MBBIOS",AH=20h"FOSSIL"
- --------S-140C-------------------------------
- INT 14 - MBBIOS PACCOM support - BUFFER MANAGEMENT
- AH = 0Ch
- ES = segment of buffer to free, or 0000h to allocate new buffer
- Return: ES = segment of allocated buffer (if ES=0000h on entry)
- Note: the PACCOM version of MBBIOS uses only ES as buffer address for
- AH=0Ah and AH=0Bh
- SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
- --------N-140C--DXFFFF-----------------------
- INT 14 - Connection Manager - TEST FOR INBOUND CONNECTION REQUEST
- AH = 0Ch
- DX = FFFFh
- AL = connection ID from AH=0Bh/DX=FFFFh
- Return: AH = return code (00h-03h) (see also #00303 at AH=00h/DX=FFFFh)
- 03h not prepared for inbound connection
- AL = connection ID (if AH=00h) or correct connection ID (if AH=02h)
- Program: Connection Manager by Softwarehouse Corp. permits the sharing of
- serial ports over an IPX or NetBIOS-based network
- SeeAlso: AH=03h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
- --------S-140D-------------------------------
- INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT
- AH = 0Dh
- Return: AX = result
- FFFFh character not available
- xxyyh standard IBM-style scan code
- SeeAlso: AH=0Eh
- --------S-140D-------------------------------
- INT 14 - Digiboard DigiCHANNEL PC/X* - GET POINTER TO CH_KEY_RDY FLAG
- AH = 0Dh
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: ES:BX -> CH_KEY_RDY flag (see #00339)
- SeeAlso: AH=0Ah"Digiboard"
- (Table 00339)
- Values for Digiboard CH_KEY_RDY flag:
- 00h receive buffer empty
- FFh characters available
- --------S-140D-------------------------------
- INT 14 - MBBIOS PACCOM support - SET TXD
- AH = 0Dh
- AL = new setting (FFh = 1.0)
- Return: nothing
- Desc: specify the time from RTS to start or packet
- SeeAlso: AX=0D00h,AH=0Eh"MBBIOS",AH=0Fh"MBBIOS"
- --------N-140D--DXFFFF-----------------------
- INT 14 - Connection Manager - TERMINATE CONNECTION CLIENT ACTIVITY
- AH = 0Dh
- DX = FFFFh
- Return: AH = return code
- 00h successful
- nonzero operation not terminated
- Program: Connection Manager by Softwarehouse Corp. permits the sharing of
- serial ports over an IPX or NetBIOS-based network
- Desc: end all Connection Client TSR activity to allow it to be removed from
- memory
- SeeAlso: AH=05h/DX=FFFFh,AH=6Fh/BX=FFFFh
- --------S-140D00-----------------------------
- INT 14 - MBBIOS - GET AVAILABLE BYTES
- AX = 0D00h
- Return: AX = bytes in transmit buffer
- CX = bytes in receive buffer
- SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
- --------S-140D01-----------------------------
- INT 14 - MBBIOS - LOWER ALL MODEM CONTROL SIGNALS
- AX = 0D01h
- Return: nothing
- Note: this function lowers DTR, RTS, etc.
- SeeAlso: AX=0D02h
- --------S-140D02-----------------------------
- INT 14 - MBBIOS - RAISE ALL MODEM CONTROL SIGNALS
- AX = 0D02h
- Return: nothing
- Note: this function raises DTR, RTS, etc.
- SeeAlso: AX=0D01h
- --------S-140D03-----------------------------
- INT 14 - MBBIOS - SET HANDSHAKE BYTE
- AX = 0D03h
- CL = new handshake byte
- Return: CL = previous handshake byte
- Note: this function lowers DTR, RTS, etc.
- --------S-140E-------------------------------
- INT 14 - FOSSIL - KEYBOARD READ WITH WAIT
- AH = 0Eh
- Return: AX = xxyyh standard IBM-style scan code
- SeeAlso: AH=0Dh"FOSSIL"
- --------S-140E-------------------------------
- INT 14 - Digiboard DigiCHANNEL PC/X* - WRITE STRING
- AH = 0Eh
- CX = number of characters to write
- ES:BX -> string
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: AX = number of characters actually written
- ZF clear if successful
- ZF set on error
- SeeAlso: AH=0Fh"Digiboard"
- --------S-140E-------------------------------
- INT 14 - MBBIOS PACCOM support - SET PERSISTENCE
- AH = 0Eh
- AL = new setting (FFh = 1.0)
- Return: nothing
- Desc: specify the time from end of DCD to RTS
- SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
- --------N-140E--DXFFFF-----------------------
- INT 14 - Connection Manager - SET HARDWARE FLOW STATE
- AH = 0Eh
- DX = FFFFh
- AL = connection ID from AH=04h/DX=FFFFh
- BL = RTS state (00h off, 01h on)
- Return: AH = return code (00h-03h) (see also #00303 at AH=00h/DX=FFFFh)
- 03h invalid request (BL not 00h or 01h)
- Program: Connection Manager by Softwarehouse Corp. permits the sharing of
- serial ports over an IPX or NetBIOS-based network
- SeeAlso: AH=03h/DX=FFFFh,AH=0Ah/DX=FFFFh
- --------S-140F-------------------------------
- INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL
- AH = 0Fh
- AL = bit mask describing requested flow control (see #00340)
- DX = port number
- Return: nothing
- SeeAlso: AH=09h"MBBIOS",AH=10h"FOSSIL"
- Bitfields for FOSSIL requested flow control:
- Bit(s) Description (Table 00340)
- 0 XON/XOFF on transmit (watch for XOFF while sending)
- 1 CTS/RTS (CTS on transmit/RTS on receive)
- 2 reserved
- 3 XON/XOFF on receive (send XOFF when buffer near full)
- 4-7 all 1
- --------S-140F-------------------------------
- INT 14 - Digiboard DigiCHANNEL PC/X* - READ STRING
- AH = 0Fh
- CX = number of characters to read
- ES:BX -> buffer
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: AX = number of characters read
- ZF clear if successful
- ZF set on error (line status or wrong number of characters)
- SeeAlso: AH=0Eh"Digiboard"
- --------S-140F-------------------------------
- INT 14 - MBBIOS PACCOM support - SET SLOT TIME
- AH = 0Fh
- AL = new setting in clock ticks
- Return: nothing
- Desc: specify the time from end of DCD to RTS
- SeeAlso: AH=0Dh"MBBIOS",AH=0Eh"MBBIOS",AH=10h"MBBIOS"
- --------N-140F--DXFFFF-----------------------
- INT 14 - Connection Manager - RETURN ACTIVE CONNECTION PARAMETERS
- AH = 0Fh
- DX = FFFFh
- AL = connection ID
- CX = size of buffer or 0000h to get length of returned vector
- ES:DI -> buffer for connection parameter vector (see #00311)
- Return: AH = return code (00h-02h,06h) (see #00303 at AH=00h/DX=FFFFh)
- CX = number of bytes which could not be returned because the given
- buffer was too small
- Program: Connection Manager by Softwarehouse Corp. permits the sharing of
- serial ports over an IPX or NetBIOS-based network
- SeeAlso: AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
- --------S-1410-------------------------------
- INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF
- AH = 10h
- AL = bit mask
- bit 0: enable/disable ^C/^K checking
- bit 1: enable/disable the transmitter
- DX = port number
- Return: nothing
- SeeAlso: AH=0Fh"FOSSIL"
- --------S-1410-------------------------------
- INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR RECEIVE BUFFER
- AH = 10h
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: AH = status
- 00h successful
- FFh error
- SeeAlso: AH=09h"Digiboard",AH=11h"Digiboard"
- --------S-1410-------------------------------
- INT 14 - MBBIOS PACCOM support - SET CRC WAIT
- AH = 10h
- AL = new setting in clock ticks (should be at least 5 character times)
- Return: nothing
- Desc: specify the time from start of last character to dropping RTS
- SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
- --------N-1410--DXFFFF-----------------------
- INT 14 - Connection Manager - QUERY SERVICE NAMES
- AH = 10h
- DX = FFFFh
- CL = subfunction
- 00h search first
- 01h search next
- ES:DI -> pattern buffer (see #00341)
- Return: AH = return code (00h,01h,03h,06h) (see also #00303 at AH=00h/DX=FFFFh)
- 01h no (more) matching names
- 03h invalid request
- ES:DI buffer filled with reply buffer (see #00341) containing matched
- name if AH=00h
- Program: Connection Manager by Softwarehouse Corp. permits the sharing of
- serial ports over an IPX or NetBIOS-based network
- Desc: obtain the names of groups and lines available for connection requests,
- and the names of active Connection Servers
- SeeAlso: AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
- Format of Connection Manager pattern/reply buffer:
- Offset Size Description (Table 00341)
- 00h WORD length of pattern (30h or 32h)
- 02h 16 BYTEs server pattern or name
- 12h 16 BYTEs group pattern or name
- 22h 16 BYTEs line pattern or name
- 23h BYTE (optional) ???
- 24h BYTE (optional, returned) current line status
- 00h available
- 01h out of service
- 02h currently allocated to a connection
- Note: pattern may include '?' wildcard to match any character
- --------S-1411-------------------------------
- INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION
- AH = 11h
- DH = row
- DL = column
- Return: nothing
- Note: this is the same as INT 10/AH=02h
- SeeAlso: AH=12h"FOSSIL"
- --------S-1411-------------------------------
- INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR TRANSMIT BUFFER
- AH = 11h
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: AH = status
- 00h successful
- FFh error
- SeeAlso: AH=09h"Digiboard",AH=10h"Digiboard"
- --------S-1411-------------------------------
- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DISABLE PORT
- AH = 11h
- DX = port number
- Return: AL = status
- 00h successful
- 01h IRQ for port is shared
- 02h IRQ was reserved
- SeeAlso: AH=04h"SERIAL",AH=05h"SERIAL",AH=12h"PC-MOS"
- --------S-1412-------------------------------
- INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION
- AH = 12h
- Return: DH = row
- DL = column
- Note: this is the same as INT 10/AH=03h
- SeeAlso: AH=11h"FOSSIL"
- --------S-1412-------------------------------
- INT 14 - Digiboard DigiCHANNEL PC/X* - GET TRANSMIT BUFFER FREE SPACE
- AH = 12h
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: AX = number of bytes free
- SeeAlso: AH=0Ah"Digiboard",AH=14h"Digiboard"
- --------S-1412-------------------------------
- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET CURRENT PORT PARAMETERS
- AH = 12h
- DX = port number
- Return: AH = status
- FFh port number invalid
- AL = line parameters (see #00304)
- AH = flow control configuration (see #00336 at AH=05h"PC-MOS")
- CX:BX = bps rate
- DL = XOFF character or 00h for none
- DH = XON character or 00h for none
- --------S-1413-------------------------------
- INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN
- AH = 13h
- AL = character
- Return: nothing
- Note: should not be called if it is unsafe to call DOS
- SeeAlso: AH=15h
- --------S-1413-------------------------------
- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - REGISTER A PORT WITH A TERMINAL
- AH = 13h
- DX = port number
- Return: AH = status
- FFh port number invalid
- else
- ES:BX -> BYTE flag (00h buffer empty, FFh buffer contains data)
- SeeAlso: AH=17h"PC-MOS"
- --------S-1414-------------------------------
- INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING
- AH = 14h
- AL = 01h enable watchdog
- 00h disable watchdog
- DX = port number
- Return: nothing
- SeeAlso: INT 21/AH=2Bh/CX=6269h"WDTSR"
- --------S-1414-------------------------------
- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT STRING
- AH = 14h
- CX = number of characters in string
- DX = port number
- ES:BX -> string to be sent
- SI = timeout in timer ticks or 0000h for default
- Return: AX = number of bytes actually sent
- ZF clear if successful
- ZF set on timeout
- SeeAlso: AH=01h,AH=15h"PC-MOS"
- --------S-1414-------------------------------
- INT 14 - Digiboard - GET NUMBER OF BOARDS INSTALLED
- AH = 14h
- Return: AX = number of boards installed
- SeeAlso: AH=08h"Digiboard",AH=15h"Digiboard"
- --------S-1415-------------------------------
- INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES
- AH = 15h
- AL = character
- Return: nothing
- SeeAlso: AH=13h"FOSSIL"
- --------S-1415-------------------------------
- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STRING
- AH = 15h
- CX = size of buffer
- DX = port number
- ES:BX -> buffer for received characters
- SI = timeout in clock ticks or 0000h for default
- Return: AX = number of characters actually read
- ZF set on timeout (no data available)
- SeeAlso: AH=02h,AH=14h"PC-MOS",AH=16h"PC-MOS"
- --------S-1415-------------------------------
- INT 14 - Digiboard - ENABLE/DISABLE MEMORY
- AH = 15h
- AL = new state (00h disabled, 01h enabled)
- Return: AH = status
- 00h successful
- 80h error
- FFh error
- SeeAlso: AH=14h"Digiboard",AH=16h"Digiboard"
- --------S-1416-------------------------------
- INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN
- AH = 16h
- AL = function
- 00h = delete
- 01h = add
- ES:DX -> routine to call
- Return: AX = status
- 0000h successful
- 0001h unsuccessful
- SeeAlso: AH=07h"FOSSIL"
- --------S-1416-------------------------------
- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - LINK TO ANOTHER SERIAL DRIVER
- AH = 16h
- ES:BX -> calling driver's INT 14 entry point
- Return: nothing
- Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
- operating system by The Software Link, Inc.
- --------S-1416-------------------------------
- INT 14 - Digiboard DigiCHANNEL PC/X* - CCB COMMAND
- AH = 16h
- AL = CCB command number (see #00342) (see also following entries)
- BL = byte 2
- BH = byte 3
- CL = byte 1 (for all channel functions except 4Eh and 4Fh)
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: AH = status
- 00h successful
- 80h error
- FFh error
- SeeAlso: AX=1646h,AH=18h"Digiboard"
- (Table 00342)
- Values for Digiboard CCB command number:
- 40h Set Receive Mid Water Mark
- 41h Set Receive High Water Mark
- 42h Flush Receive Buffer
- 43h Flush Transmit Buffer
- 44h Transmit Pause
- 45h Transmit Resume
- 46h Set Interrupt to Host Mask
- 47h Set Baud, Data, Stop and Parity
- 48h Send Break
- 49h Set Modem Lines
- 4Ah Set Break Count
- 4Bh Set Handshake
- 4Ch Set Xon/Xoff Characters
- 4Dh Set Transmit Mid Water Mark
- 4Eh IRQ Polling Timer to Host
- 4Fh Buffer Set All
- 50h Port On
- 51h Port Off
- 52h Receive Pause
- 53h Special Character Interrupt
- 54h RS-422 Enable
- --------S-141646-----------------------------
- INT 14 - Digiboard - CCB COMMAND - SET INTERRUPT TO HOST MASK
- AX = 1646h
- BL = bits to set
- BH = bits to clear
- CL = byte 1
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: AH = status
- 00h successful
- 80h error
- FFh error
- SeeAlso: AH=16h"Digiboard",AX=1647h
- --------S-141647-----------------------------
- INT 14 - Digiboard - CCB COMMAND - SET BAUD/DATABITS/STOPBITS/PARITY
- AX = 1647h
- BL = baud
- BH = datatype
- CL = byte 1
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: AH = status
- 00h successful
- 80h error
- FFh error
- SeeAlso: AH=16h"Digiboard",AX=1646h,AX=1649h
- --------S-141649-----------------------------
- INT 14 - Digiboard - CCB COMMAND - SET MODEM LINES
- AX = 1649h
- BL = bits to set
- BH = bits to clear
- CL = byte 1
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: AH = status
- 00h successful
- 80h error
- FFh error
- SeeAlso: AH=16h"Digiboard",AX=1647h
- --------S-14164A-----------------------------
- INT 14 - Digiboard - CCB COMMAND - SET BREAK COUNT
- AX = 164Ah
- BL = break count
- CL = byte 1
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: AH = status
- 00h successful
- 80h error
- FFh error
- SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Bh
- --------S-14164B-----------------------------
- INT 14 - Digiboard - CCB COMMAND - SET HANDSHAKE
- AX = 164Bh
- BL = bits to set
- BH = bits to clear
- CL = byte 1
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: AH = status
- 00h successful
- 80h error
- FFh error
- SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Ch
- --------S-14164C-----------------------------
- INT 14 - Digiboard - CCB COMMAND - SET XON/XOFF CHARACTERS
- AX = 164Ch
- BL = XON character
- BH = XOFF character
- CL = byte 1
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: AH = status
- 00h successful
- 80h error
- FFh error
- SeeAlso: AH=16h"Digiboard",AX=164Bh,AX=164Dh
- --------S-14164D-----------------------------
- INT 14 - Digiboard - CCB COMMAND - SET TRANSMIT MID-WATER MARK
- AX = 164Dh
- BX = new mid-water mark
- CL = byte 1
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: AH = status
- 00h successful
- 80h error
- FFh error
- SeeAlso: AH=16h"Digiboard",AX=164Ch,AX=164Eh,AX=164Fh
- --------S-14164E-----------------------------
- INT 14 - Digiboard - CCB COMMAND - IRQ POLLING TIMER TO HOST
- AX = 164Eh
- BL = ticks
- BH = ???
- CL = mode
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: AH = status
- 00h successful
- 80h error
- FFh error
- SeeAlso: AH=16h"Digiboard",AX=164Dh
- --------S-14164F-----------------------------
- INT 14 - Digiboard - CCB COMMAND - BUFFER SET ALL
- AX = 164Fh
- BL = size
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: AH = status
- 00h successful
- 80h error
- FFh error
- SeeAlso: AH=16h"Digiboard",AX=164Dh
- --------S-141653-----------------------------
- INT 14 - Digiboard - CCB COMMAND - SPECIAL CHARACTER INTERRUPT
- AX = 1653h
- BL = enable/disable
- BH = special character
- CL = byte 1
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: AH = status
- 00h successful
- 80h error
- FFh error
- SeeAlso: AH=16h"Digiboard",AX=1646h
- --------S-1417-------------------------------
- INT 14 - FOSSIL - REBOOT SYSTEM
- AH = 17h
- AL = method
- 00h = cold boot
- 01h = warm boot
- SeeAlso: INT 16/AX=E0FFh,INT 19,INT 60/DI=0606h
- --------S-1417-------------------------------
- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - WRITE MODEM CONTROL REGISTER
- AH = 17h
- AL = new value for UART's modem control register
- DX = port number
- Return: nothing
- --------S-1418-------------------------------
- INT 14 - FOSSIL - READ BLOCK
- AH = 18h
- CX = maximum number of characters to transfer
- DX = port number
- ES:DI -> user buffer
- Return: AX = number of characters transferred
- SeeAlso: AH=19h"FOSSIL",AH=83h"COURIERS",AX=FF02h,INT 6B/AX=0100h
- --------S-1418-------------------------------
- INT 14 - Digiboard DigiCHANNEL PC/X* - SEND BIOS COMMAND
- AH = 18h
- ES:BX -> 16-byte command string
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: AH = status
- 00h successful
- 80h timeout
- AL = mailbox status
- 00h no errors
- 8Xh BIOS error
- ES:BX buffer filled in with mailbox string
- ZF clear if no errors
- ZF set if either status byte contains an error code
- SeeAlso: AH=16h"Digiboard"
- --------S-1418-------------------------------
- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET DRIVER DESCRIPTION
- AH = 18h
- DX = port number
- Return: DS:BX -> 40-byte buffer containing a string identifying the serial
- driver
- SeeAlso: AH=06h"PC-MOS"
- --------S-1419-------------------------------
- INT 14 - FOSSIL - WRITE BLOCK
- AH = 19h
- CX = maximum number of characters to transfer
- DX = port number
- ES:DI -> user buffer
- Return: AX = number of characters transferred
- SeeAlso: AH=18h"FOSSIL",AH=86h,INT 6B/AX=0000h
- --------S-1419-------------------------------
- INT 14 - Digiboard DigiCHANNEL PC/X* - SPECIAL CHARACTER INTERRUPT
- AH = 19h
- BL = flag
- 00h disable special character interrupt
- FFh enable interrupt
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: AH = status
- 00h successful
- FFh failed
- SeeAlso: AH=1Ah"Digiboard"
- --------S-1419-------------------------------
- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SELECTIVE BUFFER FLUSH
- AH = 19h
- AL = what to flush
- bit 0: input buffer
- bit 1: output buffer
- DX = port number
- Return: nothing
- SeeAlso: AH=09h"PC-MOS"
- --------S-141A-------------------------------
- INT 14 - FOSSIL - BREAK BEGIN OR END
- AH = 1Ah
- AL = 00h stop sending 'break'
- 01h start sending 'break'
- DX = port number
- Return: nothing
- SeeAlso: AH=06h"FOSSIL",AH=8Ah,AH=FAh
- --------S-141A-------------------------------
- INT 14 - Digiboard DigiCHANNEL PC/X - SPECIAL CHARACTER FLAG/COUNTER
- AH = 1Ah
- BX = subfunction
- 00h return pointer to special character flag byte
- 01h return pointer to special character counter word
- DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
- Return: ES:BX -> special character flag or counter
- Notes: flag is FFh if one or more special characters are in the receive
- buffer; it is 00h and the counter is invalid if no special characters
- are in the receive buffer
- counter (if valid) contains the number of characters in the receive
- buffer up to and including the last-received special character
- --------S-141B-------------------------------
- INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER
- AH = 1Bh
- DX = port number
- CX = size of user buffer
- ES:DI -> user buffer for driver info (see #00343)
- Return: AX = number of characters transferred
- CX = 3058h ("0X") (X00 FOSSIL only)
- DX = 2030h (" 0") (X00 FOSSIL only)
- Format of FOSSIL driver info:
- Offset Size Description (Table 00343)
- 00h WORD size of structure in bytes
- 02h BYTE FOSSIL spec driver conforms to
- 03h BYTE revision level of this specific driver
- 04h DWORD pointer to ASCIZ identification string
- 08h WORD size of the input buffer
- 0Ah WORD number of bytes left in buffer
- 0Ch WORD size of the output buffer
- 0Eh WORD number of bytes left in buffer
- 10h BYTE width of screen
- 11h BYTE length of screen
- 12h BYTE actual baud rate, computer to modem
- --------S-141C-------------------------------
- INT 14 - X00 FOSSIL - ACTIVATE PORT
- AH = 1Ch
- DX = port number
- Return: AX = 1954h if successful
- BL = maximum function number supported (not including 7Eh and above)
- BH = revision of FOSSIL specification supported
- Note: this is a duplicate of AH=04h, so that AH=04h may be made compatible
- with the PS/2 BIOS in a future release
- SeeAlso: AH=04h"FOSSIL",AH=1Dh
- --------S-141D-------------------------------
- INT 14 - X00 FOSSIL - DEACTIVATE PORT
- AH = 1Dh
- DX = port number
- Return: none
- Notes: this is a duplicate of AH=05h, so that AH=05h may be made compatible
- with the PS/2 BIOS in a future release
- ignored if the port was never activated with AH=04h or AH=1Ch
- SeeAlso: AH=05h"FOSSIL",AH=1Ch
- --------S-141E-------------------------------
- INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION
- AH = 1Eh
- AL = break status
- 00h if break
- 01h if no break
- BH = parity (see #00344)
- BL = number of stop bits
- 00h one stop bit
- 01h two stop bits (1.5 if 5 bit word length)
- CH = word length (see #00345)
- CL = bps rate (see #00346)
- DX = port number
- Return: AX = port status code (see #00304,#00305)
- Notes: this function is intended to exactly emulate the PS/2 BIOS AH=04h call
- if the port was locked at X00 load time, the appropriate parameters are
- ignored
- SeeAlso: AH=00h,AH=04h"SERIAL"
- (Table 00344)
- Values for X00 FOSSIL parity:
- 00h no parity
- 01h odd parity
- 02h even parity
- 03h stick parity odd
- 04h stick parity even
- SeeAlso: #00307,#00345,#00346
- (Table 00345)
- Values for X00 FOSSIL word length:
- 00h 5 bits
- 01h 6 bits
- 02h 7 bits
- 03h 8 bits
- SeeAlso: #00308,#00344,#00346
- (Table 00346)
- Values for X00 FOSSIL bps rate:
- 00h 110
- 01h 150
- 02h 300
- 03h 600
- 04h 1200
- 05h 2400
- 06h 4800
- 07h 9600
- 08h 19200
- SeeAlso: #00309,#00344,#00345
- --------S-141E------------------------------------
- INT 14 - HUNTER 16 - READ COMMS PARAMETERS
- AH = 1Eh
- CX = channel number (00h COM1, 01h COM2, ...)
- DS:BX -> buffer for communications parameters (see #00347)
- Return: DS:BX buffer filled
- Note: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family
- members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
- SeeAlso: AH=20h"HUNTER"
- Format of HUNTER 16 communications parameters:
- Offset Size Description (Table 00347)
- 00h BYTE communications type (00h IBM, nonzero Husky)
- 01h BYTE port number (00h COM1, 01h COM2)
- 02h BYTE baud rate (00h 110 bps, 01h 150, 02h 300, 03h 600, 04h 1200,
- 05h 2400, 06h 4800, 07h 9600, 08h 19200, 09h 38400)
- 03h BYTE data bits (01h seven, 02h eight)
- 04h BYTE parity (00h none, 01h odd, 02h even)
- 05h BYTE stop bits (00h one, 01h two)
- 06h BYTE handshake (see #00348)
- 07h BYTE handshake protocol (00h none, 01h Xon/Xoff, 02h HWK3780)
- 08h BYTE Nulls after CR (0-20)
- 09h BYTE LF (00h off, 01h on)
- 0Ah BYTE Serig. 0..7Fh: Ignore this character
- 80h: Serig off
- 0Bh BYTE echo (00h off, 01h on)
- 0Ch BYTE transmit timeout in seconds (1-60) or 00h to disable
- 0Dh BYTE receive timeout in seconds (1-60) or 00h to disable
- 0Eh 5 BYTEs reserved
- Bitfields for HUNTER 16 handshake:
- Bit(s) Description (Table 00348)
- 0-1 0: RTS off, 1: RTS hold, 2: RTS true
- 2 DTR enabled
- 4 CTS enabled
- 5 DSR enabled
- 6 DCD enabled
- --------S-141F-------------------------------
- INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL
- AH = 1Fh
- DX = port number
- AL = direction
- 00h read modem control register
- Return: BL = modem control register (see #00349)
- AH = status
- 01h write modem control register
- BL = modem control register (see #00349)
- Return: AX = status
- Notes: this function is intended to exactly emulate the PS/2 BIOS AH=05h call
- X00 forces BL bit 3 set (interrupts cannot be disabled)
- SeeAlso: AH=00h,AH=05h"SERIAL"
- Bitfields for X00 FOSSIL modem control register:
- Bit(s) Description (Table 00349)
- 0 data terminal ready
- 1 request to send
- 2 OUT1
- 3 OUT2 (interrupts) enabled
- 4 LOOP
- 5-7 reserved
- --------S-1420-------------------------------
- INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT
- AH = 20h
- DX = port number
- Return: AH = 00h if character was available
- AL = next character (removed from receive buffer)
- AX = FFFFh if no character available
- SeeAlso: AH=0Ch,AH=21h"X00"
- --------S-1420-------------------------------
- INT 14 - Alloy MW386 - ATTACH LOGICAL COMMUNICATIONS PORT TO PHYSICAL PORT
- AH = 20h
- AL = logical port (01h COM1, 02h COM2)
- DX = physical port number
- Return: AX = status
- 0000h successful
- FFFFh failed
- SeeAlso: AH=21h"Alloy",AH=22h"Alloy",AH=23h"Alloy",INT 17/AH=8Bh"Alloy"
- --------S-1420-------------------------------
- INT 14 - MultiDOS Plus - INITIALIZE PORT
- AH = 20h
- AL = port parameters (see #00300 at AH=00h"SERIAL")
- DX = port number (0-3)
- Return: AH = status
- 00h successful
- 41h no such port
- 64h monitor mode already active
- SeeAlso: AH=00h"SERIAL",AH=04h"MultiDOS",AH=21h"MultiDOS",AH=23h"MultiDOS"
- --------S-1420-------------------------------
- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHECK OUTPUT QUEUE
- AH = 20h
- DX = port number
- Return: AX = number of bytes in output buffer
- SeeAlso: AH=0Ah"Digiboard"
- --------S-1420------------------------------------
- INT 14 - HUNTER 16 - SELECT COMMS PARAMETERS
- AH = 20h
- CX = channel number (00h COM1, 01h COM2, ...)
- DS:BX -> buffer with communications parameter (see #00347)
- Return: AX = status
- 0000h successful
- 0001h invalid parameter
- SeeAlso: AH=1Eh"HUNTER",AH=21h"HUNTER"
- --------S-1421-------------------------------
- INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER
- AH = 21h
- AL = character
- DX = port number
- Return: nothing
- Notes: the given character is inserted at the end of the receive buffer as if
- it had just arrived from the serial port; all normal receive
- processing (XON/XOFF, ^C/^K) is performed on the character
- fully re-entrant
- SeeAlso: AH=20h"X00"
- --------S-1421-------------------------------
- INT 14 - Alloy MW386 v1.x only - RELEASE PHYSICAL COMMUNICATIONS PORT
- AH = 21h
- DX = physical port number
- Return: AX = status
- 0000h successful
- FFFFh failed
- SeeAlso: AH=20h"Alloy",AH=22h"Alloy"
- --------S-1421-------------------------------
- INT 14 - MultiDOS Plus - TRANSMIT CHARACTER
- AH = 21h
- AL = character to send
- DX = port number
- Return: AH = status (see #00350)
- Note: monitor mode must have been turned on with AH=24h before calling
- SeeAlso: AH=20h"MultiDOS",AH=22h"MultiDOS",AH=24h"MultiDOS"
- (Table 00350)
- Values for MultiDOS Plus status:
- 00h successful
- 39h no DSR or CTS
- 3Ch no DSR
- 3Bh no CTS
- 41h no such port
- 42h monitor mode not active
- 97h timed out
- --------S-1421-------------------------------
- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT CHARACTER, WITH TIMEOUT
- AH = 21h
- AL = char to send
- DX = port number
- SI = timeout in timer ticks (0000h = default)
- Return: after character is sent or timeout expires
- Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
- operating system by The Software Link, Inc.
- SeeAlso: AH=01h,AH=0Eh"Digiboard",AH=22h"PC-MOS"
- --------S-1421------------------------------------
- INT 14 - HUNTER 16 - EXTENDED CONTROL
- AH = 21h
- AL = command
- 01h force transmission of buffer
- 02h clear transmit buffer
- 03h clear receive buffer
- DX = port (00h COM1, 01h COM2)
- Return: AH = extended status
- Desc: executes the command on the selected port
- SeeAlso: AH=1Eh"HUNTER",AH=20h"HUNTER",AH=22h"HUNTER",AH=24h"HUNTER"
- --------S-1422-------------------------------
- INT 14 - Alloy MW386 v2+ - RELEASE LOGICAL COMMUNICATIONS PORT
- AH = 22h
- AL = logical port (01h COM1, 02h COM2)
- Return: AX = status (0000h successful)
- SeeAlso: AH=20h"Alloy",AH=21h"Alloy"
- --------S-1422-------------------------------
- INT 14 - MultiDOS Plus - RECEIVE CHARACTER
- AH = 22h
- DX = port number
- Return: AH = status (see also AH=21h"MultiDOS")
- 00h successful
- AL = character
- 3Dh framing and parity error
- 3Eh overrun error
- 3Fh framing error
- 40h parity error
- 96h ring buffer overflow
- Note: if no character is available, this function waits until a character
- arrives or an implementation-dependent timeout elapses
- SeeAlso: AH=20h"MultiDOS",AH=21h"MultiDOS",AH=27h
- --------S-1422-------------------------------
- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RECEIVE CHARACTER, WITH TIMEOUT
- AH = 22h
- DX = port number
- SI = timeout in timer ticks (0000h = default)
- Return: AH = port status (see also #00304 at AH=03h)
- bit 7 = 1 indicates time-out
- AL = character received
- Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
- operating system by The Software Link, Inc.
- SeeAlso: AH=02h,AH=0Fh"Digiboard",AH=21h"PC-MOS"
- --------S-1422------------------------------------
- INT 14 - HUNTER 16 - EXTENDED STATUS
- AH = 22h
- DX = port (00h COM1, 01h COM2)
- Return: AH = extended status
- BX = number of characters in input buffer
- CX = number of characters in output buffer
- Desc: returns the most recent Extended Status code for the port
- SeeAlso: AH=21h"HUNTER"
- --------S-1423-------------------------------
- INT 14 - Alloy MW386 v2+ - GET PORT NUMBER FROM LOGICAL PORT ID
- AH = 23h
- AL = logical port (01h COM1, 02h COM2)
- DH = user ID
- DL = process ID (DH,DL both FFh for current task)
- Return: AL = MW386 port mode (see #00351)
- CX = MW386 port number
- DH = owner's user ID
- DL = owner's task ID
- SeeAlso: AH=20h"Alloy",INT 17/AH=8Bh"Alloy"
- Bitfields for MW386 port mode:
- Bit(s) Description (Table 00351)
- 0 port is shared (spooler only)
- 1 port is spooled instead of direct (spooler only)
- 2 port is assigned as logical COM device, not in spooler
- 3 port is free
- --------S-1423-------------------------------
- INT 14 - MultiDOS Plus - GET PORT STATUS
- AH = 23h
- DX = port number
- Return: AH = line status (see #00304 at AH=03h)
- AL = modem status (see #00305 at AH=03h)
- SeeAlso: AH=03h,AH=07h"MultiDOS",AH=20h"MultiDOS"
- --------S-1423-------------------------------
- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DECLARE PORT OWNERSHIP
- AH = 23h
- DX = port number
- BX = TCB segment/selector address of owner task
- Return: nothing
- SeeAlso: AH=0Dh"Digiboard",AH=21h"PC-MOS",AH=22h"PC-MOS"
- --------S-1423------------------------------------
- INT 14 - HUNTER 16 - CONTROL HANDSHAKE LINES
- AH = 23h
- BH = handshake line to set (00h RTS, 01h DTR)
- BL = new level (00h low, 01h high)
- Return: nothing
- Desc: sets the handshake lines of COM1 to the desired level
- SeeAlso: AH=21h"HUNTER",AH=24h"HUNTER"
- --------S-1424-------------------------------
- INT 14 - Alloy MW386 v2+ - CHANGE PHYSICAL PORT PARAMETERS
- AH = 24h
- CX = physical I/O port number
- DS:DX -> configuration table (see #00352)
- Return: AH = 00h
- Note: invalid port numbers are merely ignored
- SeeAlso: INT 17/AH=96h
- Format of Alloy MW386 configuration table:
- Offset Size Description (Table 00352)
- 00h BYTE baud rate (see #00353)
- 01h BYTE data bits (00h=5, 01h=6, 02h=7, 03h=8)
- 02h BYTE parity (00h none, 01h odd, 02h even)
- 03h BYTE stop bits (00h=1, 01h=2)
- 04h BYTE receive flow control
- 00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS
- 05h BYTE transmit flow control (as for receive)
- (Table 00353)
- Values for Alloy MW386 baud rate:
- 00h 38400
- 01h 19200
- 02h 9600
- 03h 7200
- 04h 4800
- 05h 3600
- 06h 2400
- 07h 2000
- 08h 1200
- 09h 600
- 0Ah 300
- 0Bh 150
- 0Ch 134.5
- SeeAlso: #00309
- --------S-1424-------------------------------
- INT 14 - MultiDOS Plus - SET MONITOR MODE
- AH = 24h
- AL = port status storage
- 00h single status for entire receive buffer
- 01h separate status kept for each byte in receive buffer
- DX = port number
- Return: AH = status
- 00h successful
- 3Ah invalid status storage specified
- 41h no such port
- 64h monitor mode already active
- Note: in monitor mode, MultiDOS redirects all BIOS video output to a serial
- port
- SeeAlso: AH=20h"MultiDOS",AH=25h
- --------S-1424-------------------------------
- INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - ???
- AH = 24h
- Return: ???
- Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
- operating system by The Software Link, Inc.
- --------S-1424------------------------------------
- INT 14 - HUNTER 16 - CONTROL CTS HANDSHAKING
- AH = 24h
- AL = new CTS handshake state for COM1 (00h disabled, 01h enabled)
- Return: nothing
- SeeAlso: AH=23h"HUNTER",AH=25h"HUNTER",AH=26h"HUNTER"
- --------S-1425-------------------------------
- INT 14 - MultiDOS Plus - CLEAR BUFFERS
- AH = 25h
- AL = function
- 00h only clear buffers
- 01h clear buffers and deactivate
- DX = port number
- Return: AH = status
- 00h successful
- 3Ah invalid function
- 41h no such port
- 42h monitor mode not active
- SeeAlso: AH=20h"MultiDOS",AH=24h"MultiDOS"
- --------S-1425------------------------------------
- INT 14 - HUNTER 16 - CONTROL RS232 DRIVERS
- AH = 25h
- AL = new state of RS232 drivers (00h off, 01h on)
- Return: nothing
- Note: this function can be used to save power by turning off the RS232
- drivers. It can also be used to turn on the RS232 drivers before
- connecting to a remote system to avoid "garbage" while the drivers
- turn on.
- SeeAlso: AH=23h"HUNTER",AH=24h"HUNTER",AH=26h"HUNTER"
- --------S-1426------------------------------------
- INT 14 - HUNTER 16 - CONTROL RI POWER UP
- AH = 26h
- AL = 00h enable RI power up
- else disable RI power up
- Return: nothing
- Desc: control whether the Ring Indicator handshake can power up the Hunter
- --------S-1427-------------------------------
- INT 14 - MultiDOS Plus - GET BUFFER CHARACTER COUNT
- AH = 27h
- DX = port number
- Return: AH = status
- 00h successful
- 41h no such port
- 42h monitor mode not active
- AL = number of characters in receive buffer
- --------S-1427------------------------------------
- INT 14 - HUNTER 16 - GET INSTALLED PROTOCOLS COUNT
- AH = 27h
- AL = number of extended protocols installed (since last call)
- Return: AL = total number installed, including new ones
- Desc: Returns the number of extended communication protocols installed
- SeeAlso: AH=25h"HUNTER",AH=28h"HUNTER"
- --------S-1428------------------------------------
- INT 14 - HUNTER 16 - GET PROTOCOL NAME
- AH = 28h
- AL = protocol handle
- DS:BX -> 8 character buffer for protocol name
- Return: AH = status
- 00h successful
- DS:BX buffer filled with the protocol name
- FFh failed
- SeeAlso: AH=27h"HUNTER",AH=29h"HUNTER"
- --------S-1429------------------------------------
- INT 14 - HUNTER 16 - GET PROTOCOL HANDLE
- AH = 29h
- DS:BX -> buffer containing the protocol name
- Return: AH = status
- 00h successful
- AL = handle
- FFh failed
- SeeAlso: AH=28h"HUNTER",AH=2Ah"HUNTER"
- --------S-142A------------------------------------
- INT 14 - HUNTER 16 - EXTENDED PROTOCOL MENU
- AH = 2Ah
- AL = protocol handle
- Return: AH = status
- 00h successful
- FFh failed
- AL = menu handle
- SeeAlso: AH=29h"HUNTER",AH=2Bh"HUNTER"
- --------S-142B------------------------------------
- INT 14 - HUNTER 16 - GET EXTENDED PROTOCOL PARAMETERS
- AH = 2Bh
- AL = protocol handle
- DS:BX -> buffer for extended protocol parameters
- Return: AH = status
- 00h successful
- DS:BX buffer filled with extended parameters
- FFh failed
- SeeAlso: AH=2Ah"HUNTER"
- --------S-142C00----------------------------------
- INT 14 - HUNTER 16 - GET DTR
- AX = 2C00h
- Return: AH = 00h
- BL = current state
- 00h normal DTR operation
- else DTR is forced high
- Desc: Indicates whether the DTR signal on COM1 is forced high
- Note: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family
- members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
- SeeAlso: AH=2Ch"SET DTR"
- --------S-142C------------------------------------
- INT 14 - HUNTER 16 - SET DTR
- AH = 2Ch
- AL nonzero
- BL = new state
- 00h normal operation
- else force DTR high
- Return: AH = 00h
- Desc: determine whether the DTR signal on COM1 should be forced high
- SeeAlso: AX=2C00h
- --------N-1436-------------------------------
- INT 14 - ComShare - INSTALLATION CHECK
- AH = 36h
- Return: AX = 4353h ('CS') if installed
- BX = bitmap of installed ports (bit 0: COM1 is gateway, etc.)
- CX reserved for future use
- WORD DX:[0100h] = ComShare version number
- Program: The ComShare System is a modem-sharing program for NetBIOS and
- NetWare-based networks by NashaKala Corporation
- Note: ComShare supports the standard BIOS INT 14h calls with a slight
- change in the interpretation of speed values
- (see #00309 at AH=04h"SERIAL")
- SeeAlso: AH=00h"SERIAL",AH=04h"SERIAL",AX=F4FFh
- --------t-144000-----------------------------
- INT 14 - I1541 - INSTALLATION CHECK
- AX = 4000h
- Return: AX = 1541h if installed
- BH = I1541 major version (BCD)
- BL = I1541 minor version (BCD)
- CX = 0000h
- --------t-144001-----------------------------
- INT 14 - I1541 - TEST IF 1541 CABLE CONNECTED
- AX = 4001h
- Return: CF clear if connected
- BL = LPT number where 1541 cable is connected (1..3)
- CF set if cable not connected
- Desc: scan all the LPT ports searching for the adapter cable
- SeeAlso: AX=4000h
- --------t-144002-----------------------------
- INT 14 - I1541 - SELECT LPT PORT FOR OUTPUT
- AX = 4002h
- BL = LPT number (1..3)
- Return: CF clear if successful
- CF set otherwise
- Desc: force the input output routines to work on the cable placed on LPT BL
- SeeAlso: AX=4001h
- --------t-144003-----------------------------
- INT 14 - I1541 - RESET ALL DEVICES
- AX = 4003h
- Return: nothing
- Desc: send a reset pulse of 100ms to all CBM devices
- Note: it is necessary to wait about 2 seconds after reset before executing
- other instructions
- SeeAlso: AX=4000h,AX=4004h
- --------t-144004-----------------------------
- INT 14 - I1541 - SEND LISTEN SIGNAL
- AX = 4004h
- BH = device number (0..15)
- Return: CF clear if successful
- CF set on error
- AL = error number (see #00354)
- SeeAlso: AX=4005h,AX=4006h
- (Table 00354)
- Values for I1541 error number:
- 00h device not present
- 01h listener not ready
- 02h missing EOI time-out
- 03h EOI not completed
- 04h data not released
- 05h frame error
- --------t-144005-----------------------------
- INT 14 - I1541 - SEND SECONDARY ADDRESS FOR LISTEN
- AX = 4005h
- BL = channel number and mode (see #00355)
- Return: CF clear if successful
- CF set on error
- AL = error number (see #00354)
- SeeAlso: AX=4004h,AX=4006h
- Bitfields for I1541 channel number and mode:
- Bit(s) Description (Table 00355)
- 7-4 mode
- 0110 read/write
- 1110 close channel
- 1111 open channel
- 3-0 channel number
- --------t-144006-----------------------------
- INT 14 - I1541 - SEND UNLISTEN SIGNAL
- AX = 4006h
- Return: CF clear if successful
- CF set on error
- AL = error number (see #00354)
- SeeAlso: AX=4004h,AX=4005h
- --------t-144007-----------------------------
- INT 14 - I1541 - SEND TALK SIGNAL
- AX = 4007h
- BH = device number (0-15)
- Return: CF clear if successful
- CF set on error
- AL = error number (see #00354)
- SeeAlso: AX=4008h,AX=4009h
- --------t-144008-----------------------------
- INT 14 - I1541 - SEND SECONDARY ADDRESS FOR TALK
- AX = 4008h
- BL = channel number and mode (see #00355)
- Return: CF clear if successful
- CF set on error
- AL = error number (see also #00354)
- 40h turn around time-out
- SeeAlso: AX=4007h,AX=4009h
- --------t-144009-----------------------------
- INT 14 - I1541 - SEND UNTALK SIGNAL
- AX = 4009h
- Return: CF clear if successful
- CF set on error
- AL = error number (see #00354)
- SeeAlso: AX=4007h,AX=4008h
- --------t-14400A-----------------------------
- INT 14 - I1541 - SEND A BYTE TO A DEVICE
- AX = 400Ah
- BL = byte to send
- CL = last-byte flag
- 00h more bytes follow
- 01h this is the last byte to be sent
- Return: CF clear if successful
- CF set on error
- AL = error number (see #00354)
- SeeAlso: AX=4000h,AX=400Bh
- --------t-14400B-----------------------------
- INT 14 - I1541 - RECEIVE A BYTE FROM A DEVICE
- AX = 400Bh
- Return: CF clear if successful
- AL = byte received
- CL = last-byte flag
- 00h more bytes to follow
- 01h received byte is the last
- CF set on error
- AL = error number
- 80h EOI response required
- 81h talker not ready
- 82h clock not set
- 83h clock not released
- CL = 00h
- SeeAlso: AX=4000h,AX=400Ah
- --------t-14400C-----------------------------
- INT 14 - I1541 - WAIT
- AX = 400Ch
- CX = number of 838ns microticks to wait (0000h means 65536, ~55ms)
- Return: after wait period elapses
- SeeAlso: AX=4000h,AX=400Dh
- --------t-14400D-----------------------------
- INT 14 - I1541 - LONGWAIT
- AX = 400Dh
- DX:CX = number of 838ns microticks to wait
- (0000h:0000h means 4294967296, about one hour)
- Example: To wait 1s you must set DX:CX=(1s/838ns)=1193180
- SeeAlso: AX=4000h,AX=400Ch
- --------t-14400E-----------------------------
- INT 14 - I1541 - GET INFO
- AX = 400Eh
- Return: AX = LPT port I/O address in use (0000h if no cable in use)
- BL = LPT number (1..3) in use (00h if no cable in use)
- CF set if the cable is auto-detectable
- CF clear if cable could not be auto-detected or is not present
- SeeAlso: AX=4000h
- --------S-1456-------------------------------
- INT 14 U - BWCOM14 - INSTALLATION CHECK
- AH = 56h
- Return: CX = 0001h if installed
- Program: BWCOM14 is a network serial port emulator (simulating a Hayes modem
- connected to the serial port) distributed as part of the
- Beame&Whiteside BW-NFS package
- SeeAlso: AH=57h,AH=58h,INT 2F/AX=DF00h/BX=5445h
- --------S-1457-------------------------------
- INT 14 U - BWCOM14 - INITIALIZE
- AH = 57h
- DL = port number
- Return: AL = initialization status (00h successful, 01h already initialized)
- CX = port status (0001h port redirected, 0002h and FFFFh failed)
- Note: after this call, all invocations of INT 14/AH=00h-03h for the specified
- port will be handled by BWCOM14 until AH=58h is called
- SeeAlso: AH=00h"SERIAL",AH=56h,AH=58h
- --------S-1458-------------------------------
- INT 14 U - BWCOM14 - SHUTDOWN
- AH = 58h
- Return: CX = status (0001h successful, 0002h not initialized)
- Note: after this call, BWCOM14 will no longer redirect the COM port
- SeeAlso: AH=56h,AH=57h
- --------N-146F--BXFFFE-----------------------
- INT 14 U - Connection Manager - ???
- AH = 6Fh
- BX = FFFEh
- ???
- Return: ???
- Program: Connection Manager by Softwarehouse Corp. permits the sharing of
- serial ports over an IPX or NetBIOS-based network
- --------N-146F--BXFFFF-----------------------
- INT 14 - Connection Manager - INSTALLATION CHECK
- AH = 6Fh
- BX = FFFFh
- Return: DX:BX -> Connection Manager Communication Table if installed
- BX = FFFFh if not installed
- SeeAlso: AH=0Dh/DX=FFFFh
- --------S-146F00-----------------------------
- INT 14 - HP Vectra EX-BIOS - "F14_INQUIRE" - INSTALLATION CHECK
- AX = 6F00h
- BX <> 4850h (usually set to 0000h for simplicity)
- Return: BX = 4850h ("HP") if HP Extended BIOS serial port extensions available
- AX destroyed
- Note: supported by original HP Vectra AT and by ES/QS/RS series Vectras
- SeeAlso: AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,INT 10/AX=6F00h,INT 14/AX=6F00h
- SeeAlso: INT 17/AX=6F00h,INT 33/AX=6F00h
- --------S-146F01-----------------------------
- INT 14 - HP Vectra EX-BIOS - "F14_EXINIT" - INITIALIZE SERIAL PORT
- AX = 6F01h
- BX = port attributes (see #00356)
- DX = port number (0-3)
- Return: AH = line status (see #00304)
- AL = modem status (see #00305)
- Note: supported by original HP Vectra AT and by ES/QS/RS series Vectras
- SeeAlso: AX=6F00h
- Bitfields for HP Vectra Extended BIOS serial port attributes:
- Bit(s) Description (Table 00356)
- 8-5 data rate (110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200)
- 4-3 parity
- 00 none
- 01 odd
- 10 none
- 11 even
- 2 stop bits (0 = one, 1 = two)
- 1-0 bits per character
- 10 seven-bit characters
- 11 eight-bit characters
- 0x undefined
- --------S-146F02-----------------------------
- INT 14 - HP Vectra EX-BIOS - "F14_PUT_BUFFER" - TRANSMIT BUFFER
- AX = 6F02h
- CX = number of characters in buffer
- DX = port number (0-3)
- ES:DI -> buffer containing characters
- Return: AH = line status (see #00304)
- AL = modem status (see #00305)
- CX = number of bytes actually sent
- ES:DI -> next byte to be transferred (unchanged if all bytes sent)
- Desc: send characters from the specified buffer until all characters have
- been sent or an error/timeout is encountered
- Note: supported by original HP Vectra AT and by ES/QS/RS series Vectras
- SeeAlso: AX=6F00h,AX=6F03h,AX=6F04h,INT 17/AX=6F02h
- --------S-146F03-----------------------------
- INT 14 - HP Vectra EX-BIOS - "F14_GET_BUFFER" - READ DATA INTO BUFFER
- AX = 6F03h
- CX = size of buffer
- DX = port number (0-3)
- ES:DI -> buffer for received characters
- Return: AH = line status (see #00304)
- ---on error (AH bit 7 set)---
- AL = 00h
- ES:DI -> next byte to be transferred
- ---if successful---
- AL = last byte read
- ES:DI unchanged
- CX = number of bytes read
- Desc: read characters into the specified buffer until the buffer is filled
- or a timeout occurs
- Notes: supported by original HP Vectra AT and by ES/QS/RS series Vectras
- polls the Data Set Ready modem status and Data Ready line status bits
- to determine when characters are available
- SeeAlso: AX=6F00h,AX=6F02h,AX=6F04h
- --------S-146F04-----------------------------
- INT 14 - HP Vectra EX-BIOS - "F14_TRM_BUFFER" - READ UNTIL TERMINATOR
- AX = 6F04h
- BL = lowest termination character
- BH = highest termination character
- CX = size of buffer
- DX = port number (0-3)
- ES:DI -> buffer for received characters
- Return: AH = line status (see #00304)
- ---on error (AH bit 7 set)---
- AL = 00h
- ES:DI -> next byte to be transferred
- ---if successful---
- AL = last byte read
- ES:DI unchanged
- CX = number of bytes read
- Desc: read characters into the specified buffer until the buffer is filled,
- a character in the specified range is received, or a timeout occurs
- Notes: supported by original HP Vectra AT and by ES/QS/RS series Vectras
- polls the Data Set Ready modem status and Data Ready line status bits
- to determine when characters are available
- SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h
- --------U-147000-----------------------------
- INT 14 - NEWCOM - INSTALLATION CHECK
- AX = 7000h
- Return: AX = 4E43h ('NC') if installed
- BX = 4F4Dh ('OM') if installed
- CH = major version number
- CL = minor version number
- DH = patch level
- DL = language (currently: 00h English, 01h French)
- Program: Newcom is a DOS commandline-enhancer by kilobug@kali.isicom.fr
- SeeAlso: INT 2F/AX=D44Dh
- --------S-147E-------------------------------
- INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION
- AH = 7Eh
- AL = code assigned to external application (80h-BFh)
- 80h reserved for communications FOSSIL
- 81h video FOSSIL
- 82h reserved for keyboard FOSSIL
- 83h reserved for system FOSSIL
- ES:DX -> entry point
- Return: AX = 1954h
- BL = code assigned to application (same as input AL)
- DH = status
- 00h failed
- 01h successful
- SeeAlso: AH=7Fh,AH=80h"FOSSIL",AX=8100h,AH=82h"FOSSIL",AH=83h"FOSSIL"
- --------S-147F-------------------------------
- INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION
- AH = 7Fh
- AL = code assigned to external application
- ES:DX -> entry point
- Return: AX = 1954h
- BL = code assigned to application (same as input AL)
- DH = status
- 00h failed
- 01h successful
- SeeAlso: AH=7Eh
- --------S-1480-------------------------------
- INT 14 - COMMUNICATIONS FOSSIL
- AH = 80h
- SeeAlso: AH=7Eh
- --------S-1480-------------------------------
- INT 14 - COURIERS.COM - INSTALLATION CHECK
- AH = 80h
- Return: AH = E8h if loaded
- Program: COURIERS is a TSR utility by PC Magazine
- --------S-148000-----------------------------
- INT 14 - ARTICOM - INSTALLATION CHECK
- AX = 8000h
- Return: AL = FFh if installed
- BH = major version
- BL = minor version
- Program: ArtiCom is an asynchronous communications driver by Artisoft which
- works on top of NetBIOS and allows modem/serial-port sharing by
- programs using INT 14 for serial I/O.
- Note: ArtiCom supports 32 simultaneous COM ports using multiport cards and
- drivers
- SeeAlso: AH=00h"SERIAL",AH=01h,AH=02h,AH=03h,AH=04h"SERIAL",AH=05h"SERIAL"
- SeeAlso: AX=8001h,AX=8002h
- --------S-148000-----------------------------
- INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET ERROR CODE AND BUFFER STATUS
- AX = 8000h
- DX = port number
- Return: AX = code for last error (see #00357)
- BX = number of characters in output buffer
- CX = nubmer of characters in input buffer
- DX = state flag (see #00358)
- Program: COMM-DRV is a universal serial communications driver by Willies'
- Computer Software Company, which supports standard INT 14 and
- FOSSIL calls as well as its own interfaces
- SeeAlso: AX=8001h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
- (Table 00357)
- Values for COMM-DRV error code:
- 00h no error
- 01h buffer not set or attempted to change buffer for active port
- 02h port not active
- 03h transmit buffer full
- 04h receive buffer full
- 05h syntax error
- 06h invalid buffer size
- 07h invalid port
- 08h handler changed
- 09h invalid baud rate
- 0Ah invalid parity setting
- 0Bh invalid data length
- 0Ch invalid number of stop bits
- 0Dh invalid protocol number
- 0Eh IRQ changed
- 0Fh port changged
- 10h invalid threshold setting
- 11h invalid IRQ number
- 12h interrupts not enabled
- 13h invalid break syntax
- 14h fatal error
- 15h CTS error
- 16h invalid RS232 I/O port address
- 17h environment variable not set
- 18h error on IOCTL call
- 19h error during atexit cleanup
- 1Ah error mapping for direct calls
- 1Bh error opening device
- 1Ch unable to allocate memory
- 1Dh error on external micro card
- 1Eh card changed error
- 1Fh card type error
- 20h not supported
- 21h parent port error
- 22h card command buffer full
- 23h no subdevice for this port
- 24h unknown error
- 25h external card busy
- 26h no more timers available
- 27h INT 14 vector changed
- 28h INT 08 vector changed
- 29h DPMI error
- 2Ah TSR buffer too small (or nonexistent)
- 2Bh out of asynchronous resources
- 2Ch out of timer resources
- 2Dh out of "other" timer resources
- 2Eh file I/O error
- 2Fh hardware memory > 64K
- Bitfields for state flag :
- Bit(s) Description (Table 00358)
- 0 port is active
- 1 output throttled (XOFF received, or DSR or CTS reset)
- 2 input throttled (XOFF sent, or DTR or RTS reset)
- --------S-148001-----------------------------
- INT 14 - ARTICOM - UNLOAD ASYNCHRONOUS REDIRECTOR FROM MEMORY
- AX = 8001h
- Return: AX = error code, if error (see #00360)
- SeeAlso: AX=8000h"ARTICOM",AX=8002h"ARTICOM",AX=8003h"ARTICOM"
- Index: uninstall;ARTICOM
- --------S-148001-----------------------------
- INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
- AX = 8001h
- DX = port number
- Return: BX:DI -> Port Control Block (see #00367)
- SeeAlso: AX=8000h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
- --------S-148002-----------------------------
- INT 14 - ARTICOM - GET ASYNCHRONOUS REDIRECTOR STATUS
- AX = 8002h
- ES:DI -> buffer for redirector status structure (see #00359)
- Return: AX = error code, if error (see #00360)
- SeeAlso: AX=8000h"ARTICOM",AX=8003h"ARTICOM"
- Format of ARTICOM redirector status:
- Offset Size Description (Table 00359)
- 00h WORD redirector major and minor version numbers
- 02h WORD redirectable ports found
- 04h WORD redirectable ports + local ports found
- 06h WORD redirector internal buffer size
- 08h WORD maximum servers maintained
- 0Ah WORD number of adapters found
- --------S-148002-----------------------------
- INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
- AX = 8002h
- DX = port number
- Return: AH bit 7 set on error
- AH bit 7 clear if successful
- BX:DI -> Port Control Block (see #00367) (modifyable portion only)
- SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8003h"COMM-DRV"
- --------S-148003-----------------------------
- INT 14 - ARTICOM - TRANSLATE ERROR CODE TO ERROR STRING
- AX = 8003h
- CX = error number to translate (see #00360)
- Return: ES:DI -> ASCIZ error text or 0000h:0000h if unable to translate
- SeeAlso: AX=8000h
- (Table 00360)
- Values for ARTICOM error codes:
- 00h "No error"
- 01h "An invalid port number was specified"
- 02h "Port is already redirected"
- 03h "Too many ports redirected"
- 04h "Cannot locate the server"
- 05h "Server is busy"
- 06h "Access denied"
- 07h "Resource in use"
- 08h "Resource in use - request queued"
- 09h "No such resource"
- 0Ah "Invalid username/password pair"
- 0Bh "Noncompatible version number"
- 0Ch "Can't remove from memory"
- 0Dh "Bad NETBIOS adapter number"
- 0Eh "No more entries in list"
- 0Fh "Resource is not available at this time"
- 10h "Invalid value to INT 14 call"
- --------S-148003-----------------------------
- INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET I/O BUFFER SIZES
- AX = 8003h
- DX = port number
- Return: AX = number of characters in input buffer
- BX = input buffer size
- CX = number of characters in output buffer
- DX = output buffer size
- SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8002h"COMM-DRV"
- --------S-148004-----------------------------
- INT 14 - ARTICOM - ATTACH ASYNCHRONOUS RESOURCE
- AX = 8004h
- DX = port to redirect (COM1=0, COM2=1, ...)
- CH = attach type
- CL = adapter to use for attach, 0FFh to search all
- ES:DI -> attachment structure (see #00361)
- Return: AX = error code, if error (see #00360)
- Note: The wildcard '*' is supported in the server and resource fields. If
- wild cards are used then the first matching available server is
- attached.
- SeeAlso: AX=8000h,AX=8003h,AX=8005h
- Format of ARTICOM attachment structure:
- Offset Size Description (Table 00361)
- 00h 16 BYTEs server to look for attach
- 10h 16 BYTEs attach to resource name
- 20h 16 BYTEs username for attach
- 30h 16 BYTEs password for username or resource
- 40h BYTE attach type
- 00h normal
- 01h queue if resource is in use (not yet supported in v1.00)
- --------S-148005-----------------------------
- INT 14 - ARTICOM - DETACH ASYNCHRONOUS RESOURCE
- AX = 8005h
- DX = port to detach (COM1=0, COM2=1, ...)
- Return: AX = error code, if error (see #00360)
- Note: only a previously attached resource can be detached
- SeeAlso: AX=8000h,AX=8003h,AX=8004h
- --------S-148006-----------------------------
- INT 14 - ARTICOM - GET RESOURCE INFORMATION
- AX = 8006h
- BX = remote port (COM1=0, COM2=1, ...)
- CL = adapter number, FFh to try all adapters
- ES:DI -> resource information structure (see #00362)
- DS:SI -> 16 byte server name. See note.
- Return: AX = error code, if error (see #00360)
- BX = next remote port, recall to get next resource info
- Note: Wild cards supported in both the resource field and server name
- string DS:SI. If wild cards used then first matching available
- resource information is searched. Set the resource field to FFh to
- return all resources.
- SeeAlso: AX=8000h,AX=8002h,AX=8003h,AX=8007h
- Format of ARTICOM resource information structure:
- Offset Size Description (Table 00362)
- 00h BYTE 00h = free, else used
- 01h 16 BYTEs resource name
- 11h 16 BYTEs username of resource user
- 21h WORD amount of time used
- 23h WORD amount of time remaining
- 53h 48 BYTEs description of resource
- 93h 64 BYTEs initialization string for modem
- B3h 32 BYTEs dial string for modem
- D3h 32 BYTEs hang-up string for modem
- --------S-148007-----------------------------
- INT 14 - ARTICOM - GET REDIRECTED PORT INFORMATION
- AX = 8007h
- DX = port index (COM1=0, COM2=1, ...)
- ES:DI -> buffer for port information structure (see #00363)
- Return: CF clear if redirection info returned and port is redirected
- CF set if not a redirected port
- AX = error code, if error (see #00360)
- SeeAlso: AX=8000h,AX=8003h,AX=8006h,AX=8008h
- Format of ARTICOM port information structure:
- Offset Size Description (Table 00363)
- 00h 16 BYTEs server name resource is on
- 10h BYTE adapter number server is on
- 11h 16 BYTEs resource name
- 21h WORD remote port index, use to get additional information
- 23h WORD buffer size
- 25h WORD baud rate (see #00364)
- 26h BYTE modem status register
- 27h BYTE modem control register
- 28h BYTE line status register
- 29h BYTE line control register
- 2Ah BYTE flow control in use: 0 - NONE, 1 - XON/XOFF, 2 - RTS/CTS
- 2Bh WORD send timeout in ticks
- 2Dh WORD receive timeout in ticks
- 2Fh WORD time used on remote port
- 31h WORD time left before timeout
- 33h BYTE if server changes allowed?
- 34h WORD FFFFh (-1) if connection ok, else old port index
- (Table 00364)
- Values for ARTICOM baud rate:
- 00h 110
- 01h 150
- 02h 300
- 03h 600
- 04h 1200
- 05h 2400
- 06h 4800
- 07h 9600
- 08h 19200
- 09h 38400
- 0Ah 57600
- 0Bh 115200
- 0Ch 134.5
- 0Dh 1800
- 0Eh 2000
- 0Fh 3600
- 10h 7200
- SeeAlso: #00309
- --------S-148008-----------------------------
- INT 14 - ARTICOM - GET AVAILABLE SERVER NAME
- AX = 8008h
- BX = server index (0,1,...)
- ES:DI -> server name structure (see #00365)
- Return: AX = error code, if error (see #00360)
- BX = next remote port, repeat call to get next available server
- Note: the wildcard '*' is supported in the server name field. Set the
- server name to FFh to search for all servers.
- SeeAlso: AX=8000h,AX=8003h,AX=8007h
- Format of ARTICOM server name structure:
- Offset Size Description (Table 00365)
- 00h 16 BYTEs (call) ASCIZ server name
- 10h BYTE (ret) the adapter server is found
- --------S-148009-----------------------------
- INT 14 - ARTICOM - SET SEND AND RECEIVE TIMEOUTS
- AX = 8009h
- BX = send timeout in ticks
- CX = receive timeout in ticks
- DX = port index (COM1=0, COM2=1, ...)
- Return: nothing
- SeeAlso: AX=8000h,AX=800Ah
- --------S-14800A-----------------------------
- INT 14 - ARTICOM - MODIFY FLOW CONTROL
- AX = 800Ah
- BL = flow control type (00h none, 01h XON/XOFF, 02h RTS/CTS)
- DX = port index (COM1=0, COM2=1, ...)
- Return: AX = error code, if error (see #00360)
- Note: for attached ports only!
- SeeAlso: AX=8000h,AX=8003h,AX=8009h
- --------S-148025-----------------------------
- INT 14 - ARTICOM - SET INTERNAL SEND/RECEIVE VECTOR
- AX = 8025h
- DS:DX -> address of trap function (see #00366) to call on read/write
- Return: nothing
- Note: setting the vector to a user function allows the redirector's activity
- to be monitored.
- SeeAlso: AX=8000h,AX=8035h,INT 21/AH=25h
- (Table 00366)
- Values ARTICOM trap function is called with:
- AH = operation
- 80h reading character
- 81h writing character
- AL = character
- Return: AX must be preserved
- far JUMP to old trap function (see AX=8035h)
- --------S-148035-----------------------------
- INT 14 - ARTICOM - GET INTERNAL SEND/RECEIVE VECTOR
- AX = 8035h
- Return: ES:BX -> address of current send/receive routine
- Note: this function returns the address of the routine which is called
- inside A-REDIR.EXE each time a character is received or sent on the
- active COM port.
- SeeAlso: AX=8000h,AX=8025h,INT 21/AH=35h
- --------S-1481-------------------------------
- INT 14 - COURIERS.COM - CHECK IF PORT BUSY
- AH = 81h
- AL = port number (1-4)
- Return: AH = status
- 00h port available
- 01h port exists but already in use
- 02h port nonexistent
- Program: COURIERS is a TSR utility by PC Magazine
- SeeAlso: AH=83h,AH=8Dh
- --------S-1481-------------------------------
- INT 14 - COMM-DRV - EXTENDED INITIALIZATION
- AH = 81h
- BX:DI -> port control block (see #00367)
- DX = port number
- Return: AH = line status register (see #00304)
- error if bit 7 set
- AL = modem status register (see #00305)
- Program: COMM-DRV is a universal serial communications driver by Willies'
- Computer Software Company, which supports standard INT 14 and
- FOSSIL calls as well as its own interfaces
- Note: AX=8001h should be called first to fill in the port control block
- SeeAlso: AH=00h,AX=8001h,AH=82h"COMM-DRV",AH=86h"COMM-DRV"
- Format of COMM-DRV port control block:
- Offset Type Description (Table 00367)
- 00h WORD port IO address
- 02h WORD port IRQ
- 04h WORD baud rate
- 06h WORD parity
- 08h WORD data bits
- 0Ah WORD stop bits
- 0Ch WORD break status (0000h off)
- 0Eh WORD flow control protocol
- 10h BYTE input block
- 11h BYTE output block
- 12h WORD low threshold
- 14h WORD high threshold
- 16h WORD segment of buffer
- 18h WORD offset of buffer
- 1Ah WORD input buffer length
- 1Ch WORD output buffer length
- 1Eh BYTE auxiliary address
- 1Fh BYTE spare
- 20h 4 WORDs spares
- --------V-148100-----------------------------
- INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION
- AX = 8100h
- ES:DI -> buffer for VFOSSIL information (see #00368)
- Return: AX = 1954h if installed
- SeeAlso: AH=7Eh,AX=8101h
- Format of VFOSSIL information:
- Offset Size Description (Table 00368)
- 00h WORD size of information in bytes, including this field
- 02h WORD VFOSSIL major version
- 04h WORD VFOSSIL revision level
- 06h WORD highest VFOSSIL application function supported
- --------V-148101-----------------------------
- INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
- AX = 8101h
- ES:DI -> buffer for application function table (see #00369)
- CX = length of buffer in bytes
- Return: AX = 1954h if installed
- BH = highest VFOSSIL application function supported
- Note: the number of initialized pointers in the application function table
- will never exceed CX/4; if the buffer is large enough, BH+1 pointers
- will be initialized
- SeeAlso: AX=8102h
- Format of VFOSSIL application function table:
- Offset Size Description (Table 00369)
- 00h DWORD -> function to query current video mode (VioGetMode)(see #00374)
- 04h DWORD -> function to set video mode (VioSetMode) (see #00375)
- 08h DWORD -> function to query hardware config (VioGetConfig) (see #00376)
- 0Ch DWORD -> function to write data in TTY mode (VioWrtTTY) (see #00377)
- 10h DWORD -> function to get current ANSI state (VioGetANSI) (see #00378)
- 14h DWORD -> function to set new ANSI state (VioSetANSI) (see #00379)
- 18h DWORD -> function to get curr cursor position (VioGetCurPos)
- (see #00380)
- 1Ch DWORD -> function to set cursor position (VioSetCurPos) (see #00381)
- 20h DWORD -> function to get cursor shape (VioGetCurType) (see #00382)
- 24h DWORD -> function to set cursor shape (VioSetCurType) (see #00383)
- 28h DWORD -> function to scroll screen up (VioScrollUp) (see #00384)
- 2Ch DWORD -> function to scroll screen down (VioScrollDn) (see #00385)
- 30h DWORD -> function to read cell string from screen (VioReadCellStr)
- (see #00386)
- 34h DWORD -> function to read char string from screen (VioReadCharStr)
- (see #00387)
- 38h DWORD -> function to write a cell string (VioWrtCellStr)
- (see #00388)
- 3Ch DWORD -> function to write char string, leaving attr (VioWrtCharStr)
- (see #00389)
- 40h DWORD -> function to write char string,const attr (VioWrtCharStrAttr)
- (see #00390)
- 44h DWORD -> function to replicate an attribute (VioWrtNAttr)
- (see #00391)
- 48h DWORD -> function to replicate a cell (VioWrtNCell)
- (see #00392)
- 4Ch DWORD -> function to replicate a character (VioWrtNChar)
- (see #00393)
- Format of VFOSSIL video mode data structure:
- Offset Size Description (Table 00370)
- 00h WORD length of structure including this field
- 02h BYTE mode characteristics
- bit 0: clear if MDA, set otherwise
- bit 1: graphics mode
- bit 2: color disabled (black-and-white)
- 03h BYTE number of colors supported (1=2 colors, 4=16 colors, etc)
- 04h WORD number of text columns
- 06h WORD number of text rows
- 08h WORD reserved
- 0Ah WORD reserved
- 0Ch DWORD reserved
- SeeAlso: #00374,#00375
- Format of VFOSSIL video configuration data:
- Offset Size Description (Table 00371)
- 00h WORD structure length including this field
- 02h WORD adapter type
- 00h monochrome/printer
- 01h CGA
- 02h EGA
- 03h VGA
- 07h 8514/A
- 04h WORD display type
- 00h monochrome
- 01h color
- 02h enhanced color
- 09h 8514
- 06h DWORD adapter memory size
- SeeAlso: #00376
- Format of VFOSSIL cursor type record:
- Offset Size Description (Table 00372)
- 00h WORD cursor start line
- 02h WORD cursor end line
- 04h WORD cursor width (always 01h)
- 06h WORD cursor attribute (FFFFh = hidden)
- (Table 00373)
- Values for VFOSSIL error code:
- 0000h successful
- 0074h internal VIO failure
- 0163h unsupported mode
- 0166h invalid row value
- 0167h invalid column value
- 017Eh buffer too small
- 01A5h invalid VIO parameter
- 01B4h invalid VIO handle
- (Table 00374)
- Call VioGetMode with:
- STACK: WORD VIO handle (must be 00h)
- DWORD pointer to video mode data structure (see #00370)
- Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #00373)
- SeeAlso: #00375
- (Table 00375)
- Call VioSetMode with:
- STACK: WORD VIO handle (must be 00h)
- DWORD pointer to video mode data structure (see #00370)
- Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see #00373)
- SeeAlso: #00374
- (Table 00376)
- Call VioGetConfig with:
- STACK: WORD VIO handle (must be 00h)
- DWORD pointer to video configuration data buffer (see #00371)
- Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #00373)
- (Table 00377)
- Call VioWrtTTY with:
- STACK: WORD VIO handle (must be 00h)
- WORD length of string
- DWORD pointer to character string to be written to screen
- Return: AX = error code (00h, 74h, 1B4h) (see #00373)
- Notes: write wraps at end of line and terminates if it reaches end of screen
- in ANSI mode, ANSI control sequences are interpreted, and this func is
- not required to be reentrant; in non-ANSI mode, the function is
- reentrant and may be called from within an MS-DOS function call
- (Table 00378)
- Call VioGetANSI with:
- STACK: WORD VIO handle (must be 00h)
- DWORD pointer to WORD which will be set to 00h if ANSI is off
- or 01h if ANSI is on
- Return: AX = error code (00h, 74h, 1B4h) (see #00373)
- SeeAlso: #00379
- (Table 00379)
- Call VioSetANSI with:
- STACK: WORD VIO handle (must be 00h)
- DWORD pointer to WORD indicating new state of ANSI
- 00h off, 01h on
- Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #00373)
- SeeAlso: #00378
- (Table 00380)
- Call VioGetCurPos with:
- STACK: WORD VIO handle (must be 00h)
- DWORD pointer to WORD to hold current cursor column (0-based)
- DWORD pointer to WORD to hold current cursor row (0-based)
- Return: AX = error code (00h, 74h, 1B4h) (see #00373)
- SeeAlso: #00381
- (Table 00381)
- Call VioSetCurPos with:
- STACK: WORD VIO handle (must be 00h)
- WORD cursor column
- WORD cursor row
- Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373)
- Note: if either coordinate is invalid, the cursor is not moved
- SeeAlso: #00380
- (Table 00382)
- Call VioGetCurType with:
- STACK: WORD VIO handle (must be 00h)
- DWORD pointer to cursor type record (see #00372)
- Return: AX = error code (00h, 74h, 1B4h) (see #00373)
- SeeAlso: #00383
- (Table 00383)
- Call VioSetCurType with:
- STACK: WORD VIO handle (must be 00h)
- DWORD pointer to cursor type record (see #00372)
- Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #00373)
- SeeAlso: #00384
- (Table 00384)
- Call VioScrollUp with:
- STACK: WORD VIO handle (must be 00h)
- DWORD pointer to char/attr cell for filling emptied rows
- WORD number or rows to scroll (FFFFh = clear area)
- WORD right column of scroll area
- WORD bottom row of scroll area
- WORD left column of scroll area
- WORD top row of scroll area
- Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373)
- SeeAlso: #00385,INT 10/AH=06h
- (Table 00385)
- Call VioScrollDn with:
- STACK: WORD VIO handle (must be 00h)
- DWORD pointer to char/attr cell for filling emptied rows
- WORD number or rows to scroll (FFFFh = clear area)
- WORD right column of scroll area
- WORD bottom row of scroll area
- WORD left column of scroll area
- WORD top row of scroll area
- Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373)
- SeeAlso: #00384,INT 10/AH=07h
- (Table 00386)
- Call VioReadCellStr with:
- STACK: WORD VIO handle (must be 00h)
- WORD column at which to start reading
- WORD row at which to start reading
- DWORD pointer to WORD containing length of buffer in bytes
- on return, WORD contains number of bytes actually read
- DWORD pointer to buffer for cell string
- Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #00373)
- (Table 00387)
- Call VioReadCharStr with:
- STACK: WORD VIO handle (must be 00h)
- WORD column at which to start reading
- WORD row at which to start reading
- DWORD pointer to WORD containing length of buffer in bytes
- on return, WORD contains number of bytes actually read
- DWORD pointer to buffer for character string
- Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #00373)
- (Table 00388)
- Call VioWrtCellStr with:
- STACK: WORD VIO handle (must be 00h)
- WORD column at which to start writing
- WORD row at which to start writing
- WORD length of cell string in bytes
- DWORD pointer to cell string to write
- Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373)
- Note: write wraps at end of line and terminates if it reaches end of screen
- (Table 00389)
- Call VioWrtCharStr with:
- STACK: WORD VIO handle (must be 00h)
- WORD column at which to start writing
- WORD row at which to start writing
- WORD length of character string
- DWORD pointer to character string to write
- Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373)
- Note: write wraps at end of line and terminates if it reaches end of screen
- (Table 00390)
- Call VioWrtCharStrAttr with:
- STACK: WORD VIO handle (must be 00h)
- DWORD pointer to attribute to be applied to each character
- WORD column at which to start writing
- WORD row at which to start writing
- WORD length of character string
- DWORD pointer to character string to write
- Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373)
- Note: write wraps at end of line and terminates if it reaches end of screen
- (Table 00391)
- Call VioWrtNAttr with:
- STACK: WORD VIO handle (must be 00h)
- WORD column at which to start writing
- WORD row at which to start writing
- WORD number of times to write attribute
- DWORD pointer to display attribute to replicate
- Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373)
- Note: write wraps at end of line and terminates if it reaches end of screen
- (Table 00392)
- Call VioWrtNCell with:
- STACK: WORD VIO handle (must be 00h)
- WORD column at which to start writing
- WORD row at which to start writing
- WORD number of times to write cell
- DWORD pointer to cell to replicate
- Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373)
- Note: write wraps at end of line and terminates if it reaches end of screen
- (Table 00393)
- Call VioWrtNChar with:
- STACK: WORD VIO handle (must be 00h)
- WORD column at which to start writing
- WORD row at which to start writing
- WORD number of times to write character
- DWORD pointer to character to replicate
- Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373)
- Note: write wraps at end of line and terminates if it reaches end of screen
- --------V-148102-----------------------------
- INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL
- AX = 8102h
- Return: AX = 1954h
- Note: terminates all operations; after this call, the video FOSSIL may either
- be removed from memory or reinitialized
- SeeAlso: AX=8101h,AX=8103h
- --------V-148103-----------------------------
- INT 14 - VIDEO FOSSIL - UNINSTALL
- AX = 8103h
- Return: AX = 1954h
- Note: this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM
- --------K-1482-------------------------------
- INT 14 - KEYBOARD FOSSIL
- AH = 82h
- SeeAlso: AH=7Eh
- --------S-1482-------------------------------
- INT 14 - COURIERS.COM - CONFIGURE PORT
- AH = 82h
- AL = port number (1-4)
- BX = speed (bps)
- CX = bit flags
- bit 0: enable input flow control
- bit 1: enable output flow control
- bit 2: use X.PC protocol (not yet implemented)
- Return: nothing
- SeeAlso: AH=00h,AH=8Ch,INT 7A"X.PC"
- --------S-1482-------------------------------
- INT 14 - COMM-DRV v14.0 - PORT CLEANUP
- AH = 82h
- DX = port number
- Return: AH bit 7 set on error
- AH bit 7 clear if successful
- Desc: reset the port to its state before the AH=81h initialization and unhook
- any interrupts used by the port
- SeeAlso: AH=81h"COMM-DRV",AH=83h"COMM-DRV"
- ----------1483-------------------------------
- INT 14 - SYSTEM FOSSIL
- AH = 83h
- SeeAlso: AH=7Eh
- --------S-1483-------------------------------
- INT 14 - COURIERS.COM - START INPUT
- AH = 83h
- ES:BX -> circular input buffer
- CX = length of buffer
- (should be at least 128 bytes if input flow control enabled)
- Return: nothing
- SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h"BAPI"
- --------S-1483-------------------------------
- INT 14 - COMM-DRV v14.0 - FLUSH COMMUNICATION BUFFERS
- AH = 83h
- DX = port number
- AL = subfunction
- 00h flush input buffer
- 01h flush output buffer
- 02h flush both buffers
- Return: AH bit 7 set on error
- AH bit 7 clear if successful
- SeeAlso: AH=81h"COMM-DRV",AH=84h"COMM-DRV"
- --------S-1484-------------------------------
- INT 14 - COURIERS.COM - READ CHARACTER
- AH = 84h
- Return: ZF set if no characters available
- ZF clear
- AL = character
- AH = modem status bits
- bit 7: set on input buffer overflow
- SeeAlso: AH=02h,AH=86h,AH=89h
- --------S-1484-------------------------------
- INT 14 - COMM-DRV v14.0 - SEND PACKET
- AH = 84h
- CX = packet length in bytes
- DX = port number
- ES:DI -> packet to be sent
- Return: AH = line status (see #00304)
- bit 7 set on error
- AL destroyed
- SeeAlso: AH=83h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
- --------S-1485-------------------------------
- INT 14 - COURIERS.COM - FLUSH PENDING INPUT
- AH = 85h
- Return: nothing
- SeeAlso: AH=0Ah,AH=88h"COURIERS"
- --------S-1485-------------------------------
- INT 14 - COMM-DRV v14.0 - RECEIVE PACKET
- AH = 85h
- CX = length of packet in bytes
- DX = port number
- ES:DI -> buffer for packet
- Return: AH = line status (see #00304)
- bit 7 set on error
- AL destroyed
- Note: this call requires that at least the requested number of bytes are
- already present in the input buffer, and will fail if there are
- fewer bytes available
- SeeAlso: AH=84h"COMM-DRV",AH=86h"COMM-DRV",AH=8Eh"COMM-DRV"
- --------S-1486-------------------------------
- INT 14 - COURIERS.COM - START OUTPUT
- AH = 86h
- ES:BX -> output buffer
- CX = length of output buffer
- Return: nothing
- SeeAlso: AH=19h,AH=83h"COURIERS",AH=A4h"BAPI"
- --------S-1486-------------------------------
- INT 14 - COMM-DRV v14.0 - SET INPUT/OUTPUT TIMEOUTS
- AH = 86h
- BL = maximum clock ticks to wait before signalling error on input func
- BH = maximum clock ticks to wait before signalling error on output
- DX = port number
- SI = input timeout in clock ticks if BL=FFh and BH=FFh
- DI = output timeout in clock ticks if BL=FFh and BH=FFh
- Return: AH bit 7 set on error
- AH bit 7 clear if successful
- Note: functions 02h, 85h, and 8Eh will wait for the input timeout before
- returning an error when no data is available; functions 01h and 84h
- will wait for the output timeout before returning an error if there
- is no space to output the data
- SeeAlso: AH=01h,AH=02h,AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=8Eh"COMM-DRV"
- --------S-1487-------------------------------
- INT 14 - COURIERS.COM - OUTPUT STATUS
- AH = 87h
- Return: AX = number of unsent characters
- SeeAlso: AH=88h"COURIERS"
- --------S-1487-------------------------------
- INT 14 - COMM-DRV v14.0 - TURN ON DTR
- AH = 87h
- DX = port number
- Return: AH bit 7 set on error
- AH bit 7 clear if successful
- SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
- --------S-1488-------------------------------
- INT 14 - COURIERS.COM - ABORT OUTPUT
- AH = 88h
- SeeAlso: AH=09h"FOSSIL",AH=85h"COURIERS"
- --------S-1488-------------------------------
- INT 14 - COMM-DRV v14.0 - TURN OFF DTR
- AH = 88h
- DX = port number
- Return: AH bit 7 set on error
- AH bit 7 clear if successful
- Program: COMM-DRV is a universal serial communications driver by Willies'
- Computer Software Company, which supports standard INT 14 and
- FOSSIL calls as well as its own interfaces
- SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
- --------S-1489-------------------------------
- INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
- AH = 89h
- CL = character to send
- Return: nothing
- SeeAlso: AH=01h,AH=84h"COURIERS"
- --------S-1489-------------------------------
- INT 14 - COMM-DRV v14.0 - TURN ON RTS
- AH = 89h
- DX = port number
- Return: AH bit 7 set on error
- AH bit 7 clear if successful
- SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
- --------S-148A-------------------------------
- INT 14 - COURIERS.COM - SEND BREAK
- AH = 8Ah
- Return: nothing
- SeeAlso: AH=89h"COURIERS",AH=FAh
- --------S-148A-------------------------------
- INT 14 - COMM-DRV v14.0 - TURN OFF RTS
- AH = 8Ah
- DX = port number
- Return: AH bit 7 set on error
- AH bit 7 clear if successful
- SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
- --------S-148B-------------------------------
- INT 14 - COMM-DRV v14.0 - SET USER INTERRUPT ROUTINE
- AH = 8Bh
- CX = bitmask of interrupt to process
- 00h = deinstall
- BX:DI -> DWORD containing address of function to be called
- Return: AH bit 7 clear if successful
- AH bit 7 set on error
- --------S-148C-------------------------------
- INT 14 - COURIERS.COM - SET SPEED
- AH = 8Ch
- BX = speed in bps
- Return: nothing
- SeeAlso: AH=00h,AH=82h"COURIERS"
- --------S-148C-------------------------------
- INT 14 - COMM-DRV v14.0 - READ UART REGISTER
- AH = 8Ch
- AL = register offset
- DX = port number
- Return: AH bit 7 set on error
- AH bit 7 clear if successful
- AL = contents of UART register
- SeeAlso: AH=8Dh"COMM-DRV"
- --------S-148D-------------------------------
- INT 14 - COURIERS.COM - DECONFIGURE PORT
- AH = 8Dh
- Return: nothing
- SeeAlso: AH=82h"COURIERS"
- --------S-148D-------------------------------
- INT 14 - COMM-DRV v14.0 - WRITE UART REGISTER
- AH = 8Dh
- AL = register offset
- BL = new value for UART register
- DX = port number
- Return: AH bit 7 set on error
- AH bit 7 clear if successful
- SeeAlso: AH=8Ch"COMM-DRV"
- --------S-148E-------------------------------
- INT 14 - COMM-DRV v14.0 - READ PACKET NONDESTRUCTIVELY
- AH = 8Eh
- CX = length of packet in bytes
- DX = port number
- ES:DI -> buffer for packet
- Return: AH = line status (see #00304)
- bit 7 set on error (see AX=8000h"COMM-DRV")
- AL destroyed
- Program: COMM-DRV is a universal serial communications driver by Willies'
- Computer Software Company, which supports standard INT 14 and
- FOSSIL calls as well as its own interfaces
- Desc: retrieve a packet from the input buffer without removing it from the
- buffer
- Note: this call requires that at least the requested number of bytes are
- already present in the input buffer, and will fail if there are
- fewer bytes available
- SeeAlso: AX=8000h"COMM-DRV",AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
- --------S-14A0-------------------------------
- INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT
- AH = A0h
- ES:BX -> ASCIZ internet host name
- CX = length of name
- Return: AH = return code (00h,04h-06h,08h,0Ah-0Ch) (see #00394)
- CL = session ID
- Program: the Bridge Application Program Interface is a set of functions which
- makes many of the details of LAN communications transparent
- Note: Novell TELAPI.EXE returns AH=09h (not supported) and CL=00h
- SeeAlso: AH=A1h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AX=AF00h
- (Table 00394)
- Values for 3com BAPI return code:
- 00h successful
- 01h no characters written
- 02h no characters read
- 03h no such session
- 04h clearinghouse name not found
- 05h no response from host
- 06h no more sessions available
- 07h session aborted
- 08h invalid clearinghouse name
- 09h not supported
- 0Ah internal (general) network error
- 0Bh out of memory
- 0Ch invalid IP address
- --------S-14A0--CXFFFF-----------------------
- INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT
- AH = A0h
- CX = FFFFh
- Return: CF clear if successful
- AX = 5445h ('TE')
- CX <> FFFFh
- DX = port number
- CF set on error
- Program: TES is a network serial port emulation program
- SeeAlso: AH=A1h"TES"
- --------S-14A1-------------------------------
- INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT
- AH = A1h
- DH = session ID (00h for external session managment)
- Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #00394)
- AL destroyed (Novell TELAPI.EXE)
- SeeAlso: AH=A0h"BAPI"
- --------S-14A1-------------------------------
- INT 14 - Interconnections Inc. TES - GET LIST OF SESSIONS WITH STATUS
- AH = A1h
- Return: CX = number of active sessions
- ES:SI -> status array (see #00395)
- SeeAlso: AH=A2h"TES",AH=A3h"TES"
- Format of Interconnections TES status array entry:
- Offset Size Description (Table 00395)
- 00h BYTE status
- 01h WORD offset of name
- --------S-14A2-------------------------------
- INT 14 - 3com BAPI SERIAL I/O - WRITE CHARACTER
- AH = A2h
- AL = character
- DH = session ID (00h for external session managment)
- Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #00394)
- SeeAlso: AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
- --------S-14A2-------------------------------
- INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES
- AH = A2h
- Return: CX = number of servers
- ES:SI -> array of offsets from ES for server names
- SeeAlso: AH=A1h"TES"
- --------S-14A3-------------------------------
- INT 14 - 3com BAPI SERIAL I/O - READ CHARACTER
- AH = A3h
- DH = session ID (00h for external session managment)
- Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #00394)
- AL = character read or 00h if none available
- SeeAlso: AH=A0h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AH=A7h"BAPI"
- --------S-14A3-------------------------------
- INT 14 - Interconnections Inc. TES - START A NEW SESSION
- AH = A3h
- ES:SI -> ???
- Return: CF clear if successful
- AX = 5445h ('TE')
- CX <> FFFFh
- DX = port number
- CF set on error
- SeeAlso: AH=A1h"TES",AH=A4h"TES",AH=A6h"TES"
- --------S-14A4-------------------------------
- INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK
- AH = A4h
- CX = length of buffer in bytes
- DH = session ID (00h for external session managment)
- ES:BX -> buffer containing data
- Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #00394)
- CX = number of bytes actually sent
- SeeAlso: AH=19h,AH=86h,AH=A0h"BAPI",AH=A5h"BAPI"
- --------S-14A4-------------------------------
- INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION
- AH = A4h
- ???
- Return: ???
- SeeAlso: AH=A3h"TES",AH=A5h"TES"
- --------S-14A5-------------------------------
- INT 14 - 3com BAPI SERIAL I/O - READ BLOCK
- AH = A5h
- CX = length of buffer
- DH = session ID (00h for external session managment)
- ES:BX -> buffer for data
- Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #00394)
- CX = number of bytes actually read
- SeeAlso: AH=18h,AH=83h"COURIERS",AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
- SeeAlso: AH=A7h"BAPI",AX=FF02h
- --------S-14A5-------------------------------
- INT 14 - Interconnections Inc. TES - RESUME A SESSION
- AH = A5h
- AL = session number
- Return: ???
- SeeAlso: AH=A4h"TES",AH=A6h"TES"
- --------S-14A6-------------------------------
- INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK
- AH = A6h
- DH = session ID (00h for external session managment)
- Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #00394)
- Desc: generate a short break signal; if data delivery was turned off by the
- break, wait for the host to turn it on again
- SeeAlso: AH=1Ah,AH=8Ah,AH=FAh,AH=A0h"BAPI"
- --------S-14A6-------------------------------
- INT 14 - Interconnections Inc. TES - DROP A SESSION
- AH = A6h
- AL = session number
- Return: AH = status
- 00h successful
- else error
- SeeAlso: AH=A3h"TES",AH=A5h"TES"
- --------S-14A7-------------------------------
- INT 14 - 3com BAPI SERIAL I/O - READ STATUS
- AH = A7h
- DH = session ID (00h for external session managment)
- Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #00394)
- CX = number of bytes available for reading
- Note: Novell TELAPI.EXE v4.01 always returns either 0 or 1 bytes available
- SeeAlso: AH=A5h"BAPI"
- --------S-14A7-------------------------------
- INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION
- AH = A7h
- ???
- Return: ???
- SeeAlso: AH=A3h"TES",AH=A5h"TES"
- --------S-14A8-------------------------------
- INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER
- AH = A8h
- AL = 00h no visible response
- ES:SI -> ASCIZ command
- Return: ???
- --------N-14A8-------------------------------
- INT 14 - Novell TelAPI v4.01 - CONNECTION INFORMATION???
- AH = A8h
- DH = session ID???
- CH = subfunction
- 02h ???
- 0Dh ???
- 0Fh ???
- 10h ???
- 11h ???
- 28h ???
- else
- Return: AH = 09h (not supported)
- Return: AH = return code (see #00394)
- 00h successful
- CL = ??? (0/1/8) (subfunctions 02h,0Dh,0Fh,10h)
- CL = ??? (7Fh/FFh) (subfunction 28h)
- CX = ??? (subfunction 11h)
- SeeAlso: AH=A9h"TelAPI"
- --------N-14A9-------------------------------
- INT 14 - Novell TelAPI v4.01 - CONNECTION CONTROL???
- AH = A9h
- DH = session ID???
- CH = subfunction
- 02h ???
- 0Dh ???
- 0Fh ???
- 10h ???
- 11h ???
- 28h ???
- else
- Return: AH = 09h (not supported)
- ???
- Return: AH = return code (see #00394)
- ???
- SeeAlso: AH=A8h"TelAPI",AH=E4h,INT 6B/AX=0600h
- --------V-14AA01-----------------------------
- INT 14 - DimVGA v2.0+ - INSTALLATION CHECK
- AX = AA01h
- Return: AX = FFFFh if installed, unchanged
- BX = version (v1.5+ only), BH = major, BL = minor (v1.5 = 0105h)
- CX = resident segment (v3.1+)
- Program: DimVGA is a public domain screen saver by Menno Pieters
- SeeAlso: AX=AA02h,AX=AA03h,AX=AA06h,INT 11/AX=0225h/BX=6900h,INT 12"KEYBUI"
- SeeAlso: INT 2D/AL=10h"Burnout Plus",INT 2F/AX=6400h,INT 2F/AH=93h
- SeeAlso: INT 2F/AX=C000h"VGAsave",INT 2F/AX=C000h"AD-DOS",INT 2F/AX=C050h
- SeeAlso: INT 2F/AX=E300h
- Index: screen saver;DimVGA
- --------V-14AA02-----------------------------
- INT 14 - DimVGA v2.0+ - SET TIME-OUT (DIMMING/BLANKING) PERIOD
- AX = AA02h
- BX = number of clock ticks
- Return: AX = FFFFh
- Note: on screen modes with 256 or less colors DimVGA will dim the screen,
- when more than 256 colors can be used DimVGA will blank the screen.
- SeeAlso: AX=AA01h,AX=AA03h,AX=AA04h,AX=AA06h
- Index: screen saver;DimVGA
- --------V-14AA03-----------------------------
- INT 14 - DimVGA v2.0+ - SET DIMMING FACTOR
- AX = AA03h
- BX = percentage remaining visible (1-99)
- Return: AX = FFFFh
- SeeAlso: AX=AA02h,AX=AA05h,AX=AA06h
- Index: screen saver;DimVGA
- --------V-14AA04-----------------------------
- INT 14 - DimVGA v2.0+ - GET TIME-OUT PERIOD
- AX = AA04h
- Return: AX = FFFFh
- BX = current time-out in clock ticks
- SeeAlso: AX=AA02h,AX=AA05h,AX=AA0Ah
- Index: screen saver;DimVGA
- --------V-14AA05-----------------------------
- INT 14 - DimVGA v2.0+ - GET DIMMING FACTOR
- AX = AA05h
- Return: AX = FFFFh
- BX = current dimming factor
- SeeAlso: AX=AA03h,AX=AA04h,AX=AA0Ah
- Index: screen saver;DimVGA
- --------V-14AA06-----------------------------
- INT 14 - DimVGA v2.0+ - DISABLE
- AX = AA06h
- Return: AX = FFFFh
- SeeAlso: AX=AA01h,AX=AA07h,AX=AA0Ah
- Index: screen saver;DimVGA
- --------V-14AA07-----------------------------
- INT 14 - DimVGA v2.0+ - ENABLE
- AX = AA07h
- Return: AX = FFFFh
- SeeAlso: AX=AA01h,AX=AA06h,AX=AA0Ah
- Index: screen saver;DimVGA
- --------V-14AA08-----------------------------
- INT 14 - DimVGA v2.0+ - DIM SCREEN 'MANUALLY'
- AX = AA08h
- Return: AX = FFFFh
- Note: this function will dim the screen immediately, even if DimVGA is
- currently disabled
- SeeAlso: AX=AA01h,AX=AA02h,AX=AA09h
- Index: screen saver;DimVGA
- --------V-14AA09-----------------------------
- INT 14 - DimVGA v2.0+ - UNDIM SCREEN 'MANUALLY'
- AX = AA09h
- Return: AX = FFFFh
- Note: this function will undim the screen immediately, even if DimVGA is
- currently disabled
- SeeAlso: AX=AA01h,AX=AA08h
- Index: screen saver;DimVGA
- --------V-14AA0A-----------------------------
- INT 14 - DimVGA v2.0+ - CHECK WHETHER ENABLED
- AX = AA0Ah
- Return: AX = FFFFh
- BX = current state (0000h disabled, 0001h enabled)
- SeeAlso: AX=AA01h,AX=AA06h,AX=AA07h
- Index: screen saver;DimVGA
- --------V-14AA0B-----------------------------
- INT 14 - DimVGA v2.1+ - SET HOTKEY
- AX = AA0Bh
- BH = shift state (see #00396)
- BL = keyboard scancode
- Return: AX = FFFFh
- SeeAlso: AX=AA01h,AX=AA0Ch
- Index: screen saver;DimVGA
- Bitfields for DimVGA hotkey shift state:
- Bit(s) Description (Table 00396)
- 7-4 unused
- 3 Alt key pressed
- 2 Ctrl key pressed
- 1 Left shift key pressed
- 0 Right shift key pressed
- --------V-14AA0C-----------------------------
- INT 14 - DimVGA v2.1+ - GET HOTKEY
- AX = AA0Ch
- Return: AX = FFFFh
- BH = shift state (see #00396)
- BL = keyboard scancode
- SeeAlso: AX=AA01h,AX=AA0Bh
- Index: screen saver;DimVGA
- --------V-14AA0D-----------------------------
- INT 14 - DimVGA v3.0+ - SET MOUSE CHECK STATUS
- AX = AA0Dh
- BX = new mouse check status
- 0000h mouse checking off
- 0001h mouse checking on
- Return: AX = FFFFh
- Note: before switching mouse checking on, a mouse driver should be
- found in memory. If no mouse driver is found, mouse checking
- should be switched off (resident DimVGA does not check by itself).
- SeeAlso: AX=AA01h,AX=AA0Eh
- Index: screen saver;DimVGA
- --------V-14AA0E-----------------------------
- INT 14 - DimVGA v3.0+ - GET MOUSE CHECK STATUS
- AX = AA0Eh
- Return: BX = mouse check status (0000h disabled, 0001h enabled)
- SeeAlso: AX=AA01h,AX=AA0Dh
- Index: screen saver;DimVGA
- --------V-14AA0F-----------------------------
- INT 14 - DimVGA v3.4 - SET LOCKING STATUS
- AX = AA0Fh
- BX = locking status
- 0000h disabled
- 0001h enabled
- Return: AX = FFFFh
- SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA10h
- Index: screen saver;DimVGA
- --------V-14AA10-----------------------------
- INT 14 - DimVGA v3.4 - GET MOUSE CHECK STATUS
- AX = AA10h
- Return: BX = locking status (0000h disabled, 0001h enabled)
- SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA0Fh
- Index: screen saver;DimVGA
- ----------14AD-------------------------------
- INT 14 - IBM SurePath BIOS - Officially "Private" Function
- AH = ADh
- SeeAlso: AH=AEh"IBM",AH=AFh"IBM"
- ----------14AE-------------------------------
- INT 14 - IBM SurePath BIOS - Officially "Private" Function
- AH = AEh
- SeeAlso: AH=ADh"IBM",AH=AFh"IBM"
- ----------14AF-------------------------------
- INT 14 - IBM SurePath BIOS - Officially "Private" Function
- AH = AFh
- SeeAlso: AH=ADh"IBM",AH=AEh"IBM"
- --------S-14AF00BXAAAA-----------------------
- INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK
- AX = AF00h
- BX = AAAAh
- Return: AX = AF01h if installed
- BH = protocol type (if BX=AAAAh on entry)
- 01h NetManage TCP/IP
- BL = version for protocol type (if BX=AAAAh on entry)
- Note: early versions of the BAPI and the ROM BIOS simply destroy AX; this
- behavior is used to determine whether the newer functions (AH=B0h,
- AH=B1h,etc) are available
- SeeAlso: AH=A0h"BAPI"
- --------S-14B0-------------------------------
- INT 14 - 3com BAPI SERIAL I/O - EN/DISABLE "ENTER COMMAND MODE" (ECM) CHARACTER
- AH = B0h
- AL = new state (00h disabled, 01h enabled)
- Return: AH = return code (00h,07h,0Ah) (see #00394)
- Note: disabling the ECM character allows applications to send data which
- includes the ECM character
- SeeAlso: AX=AF00h"BAPI",AH=B1h,AH=B2h
- --------S-14B1-------------------------------
- INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE
- AH = B1h
- Return: AH = return code (00h,07h,0Ah) (see #00394)
- Desc: provide a means for the application or terminal emulator to perform
- the same action normally caused by the ECM character
- SeeAlso: AH=B0h,AH=B2h
- --------S-14B2-------------------------------
- INT 14 - 3com BAPI SERIAL I/O - GET ECM WATCH STATE
- AH = B2h
- Return: AH = return code (00h,07h,0Ah) (see #00394)
- AL = watch flag (00h disabled, 01h enabled)
- Desc: determine whether the ECM character is enabled
- SeeAlso: AH=B0h,AH=B1h
- --------S-14B3-------------------------------
- INT 14 - 3com BAPI SERIAL I/O - GET/SET CONFIGURATION INFO
- AH = B3h
- AL = direction (00h get, 01h set)
- DH = session ID (00h for external session managment)
- DL = configuration item (00h = end-of-line mapping)
- CX = new configuration item value (if AL=01h)
- ---if DL=00h---
- CH = application EOL type (app to Telnet client)
- 01h application will send lone CR
- 02h application will send CR-? pair
- CL = driver EOL type (Telnet client to Telnet server)
- 01h driver should send CR-NUL pair
- 02h driver should send CR-LF pair
- Return: AH = return code (00h,03h,09h-0Bh) (see #00394)
- ---if AL=00h---
- CX = configuration item value (above)
- SeeAlso: AH=B2h
- --------N-14E0-------------------------------
- INT 14 - TelAPI - "telopen" - CREATE TELNET CONNECTION (BLOCKING)
- AH = E0h
- BX = port number to connect with (default 0017h used if <= 0)
- CX:DX = Internet address of remote host
- DS:DI -> 2-byte remote host (session) identifier
- ES:SI -> 1700-byte buffer for Telnet state record
- 0000h:0000h to use TelAPI internally-allocated space
- Return: AX = status (0000h-0009h,FED3h,FF37h,FFBDh,FFC0h,FFCDh) (see #00397)
- ES:SI buffer filled with state record
- ES:SI -> internally-allocated state record in some versions
- Note: the remote host identifier may be used to refer to this connection
- SeeAlso: AH=E1h,AH=ECh,AX=FF00h
- (Table 00397)
- Values for TelAPI status:
- 0000h-7FFFh successful (session number)
- FED3h (-301) no session allocated, or out of TelAPI data space
- FF37h (-201) all sessions in use
- FFBDh (-67) unknown hostname
- FFC0h (-64) host not functioning
- FFC3h (-61) connection attempt refused
- FFC4h (-60) connection attempt timed out
- FFC8h (-56) socket already connected
- FFCDh (-51) network is unreachable
- FFDDh (-35) operation would block
- --------S-14E000-----------------------------
- INT 14 - MX5 Extended FOSSIL - GET MNP STATUS BLOCK
- AX = E000h
- DX = port number (0-3)
- Return: ES:BX -> status block (see #00398)
- Program: MX5 is a FOSSIL driver by MagicSoft which emulates MNP Level 5, and
- ships with the METZ terminal program as MTEMNP.DRV (a TSR despite
- the .DRV extension)
- SeeAlso: AX=E006h
- Format of MX5 Extended FOSSIL status block:
- Offset Size Description (Table 00398)
- 00h BYTE flag: active (00h no, 01h yes)
- 01h BYTE MNP level (2,4,5)
- 02h BYTE series ID from remote MNP
- 03h DWORD total packets transmitted
- 07h DWORD duplicate packets transmitted
- 0Bh DWORD maximum speed
- 0Fh DWORD total packets received
- 13h DWORD duplicate packets received
- 17h DWORD maximum speed
- --------S-14E001-----------------------------
- INT 14 - MX5 Extended FOSSIL - GET/SET MNP LEVEL
- AX = E001h
- BH = function
- 00h get MNP level
- 01h set MNP level
- BL = new level (00h none, 02h/04h/05h MNP level N)
- DX = port number (0-3)
- Return: BL = MNP level
- SeeAlso: AX=E002h,AX=E003h,AX=E004h,AX=E006h
- --------S-14E002-----------------------------
- INT 14 - MX5 Extended FOSSIL - GET/SET MNP ANSWER/ORIGINATE MODE
- AX = E002h
- BH = function
- 00h get answer/originate mode
- 01h set mode
- BL = new mode (00h originate [default], 01h answer)
- DX = port number (0-3)
- Return: BL = answer/originate mode
- SeeAlso: AX=E001h,AX=E003h,AX=E006h
- --------S-14E003-----------------------------
- INT 14 - MX5 Extended FOSSIL - GET/SET MNP WAIT TICKS
- AX = E003h
- BH = function
- 00h get wait ticks
- 01h set wait ticks
- BL = MNP wait ticks (default 0Eh)
- DX = port number (0-3)
- Return: BL = wait ticks
- SeeAlso: AX=E001h,AX=E002h,AX=E006h
- --------S-14E004-----------------------------
- INT 14 - MX5 Extended FOSSIL - GET/SET MNP CONNECT SOUND LEVEL
- AX = E004h
- BH = function
- 00h get sound level
- 01h set sound level
- BL = new sound level (00h off, 01h on [default])
- DX = port number
- Return: BL = sound state
- Desc: specify whether MX5 should generate beeps after an MNP connection
- (three high beeps if successful, high then low on connection failure)
- SeeAlso: AX=E002h,AX=E006h
- --------S-14E005-----------------------------
- INT 14 - MX5 Extended FOSSIL - UNINSTALL
- AX = E005h
- Return: BX = segment of MX5's memory block or 0000h on failure
- Note: caller must free the returned memory block to complete the uninstall
- SeeAlso: AX=E006h
- --------S-14E006BX0000-----------------------
- INT 14 - MX5 Extended FOSSIL - INSTALLATION CHECK
- AX = E006h
- BX = 0000h
- Return: BX = 4D58h ('MX') if installed
- AH = major version
- AL = minor version
- SeeAlso: AX=E000h,AX=E001h,AX=E005h,AX=E007h
- --------S-14E007-----------------------------
- INT 14 - MX5 Extended FOSSIL - WAIT SPECIFIED NUMBER OF TICKS
- AX = E007h
- CX = number of ticks to wait
- Return: nothing
- SeeAlso: AX=E006h
- --------N-14E1-------------------------------
- INT 14 - TelAPI - "telclose" - TERMINATE TELNET CONNECTION
- AH = E1h
- BX = connection ID
- Return: AX = status (0000h,FFF7h,maybe others) (see #00397)
- Note: flushes and releases all buffers and data space used by the connection
- SeeAlso: AH=E0h,AH=E6h,AX=FF00h
- --------N-14E2-------------------------------
- INT 14 - TelAPI - "telread" - BUFFERED READ
- AH = E2h
- BX = connection ID (see AH=E0h"TelAPI")
- CX = length of buffer in bytes
- ES:SI -> buffer for data
- Return: AX > 0000h number of characters actually read
- AX = 0000h host has closed connection
- AX < 0000h error code (see #00397)
- Note: translates CRLF into local EOL if the connection is in ASCII mode,
- negotiates various Telnet options, and immediately executes several
- different Telnet action commands
- SeeAlso: AH=07h"TelAPI",AH=E3h,AH=E6h,AX=FF00h,INT 6B/AH=01h
- --------N-14E3-------------------------------
- INT 14 - TelAPI - "telwrite" - BUFFERED WRITE
- AH = E3h
- BX = connection ID
- CX = length of buffer in bytes
- ES:SI -> buffer containing data
- Return: AX > 0000h number of characters actually written
- AX < 0000h error code (see #00397)
- Note: translates local EOL into CRLF if the connection is in ASCII mode,
- sends the appropriate Telnet commands for the characters selected
- for IP, AYT, AO, EC, EL, and Break
- SeeAlso: AH=06h"TelAPI",AH=E2h,AH=E6h,AX=FF00h,INT 6B/AH=00h
- --------N-14E4-------------------------------
- INT 14 - TelAPI - "telioctl" - CONNECTION CONTROL
- AH = E4h
- BX = connection ID (see AH=E0h"TelAPI")
- CX = Telnet command/option identifier (see #00400)
- ES:SI -> buffer containing command/option argument (see #00399)
- Return: AX = status (0000h, etc.) (see #00397)
- Desc: start filter control, initiate Telnet option negotiation, or get filter
- control status
- SeeAlso: AH=A9h,AH=E6h,AX=FF00h,INT 6B/AX=0600h
- Format of TelAPI Telnet command/option argument:
- Offset Size Description (Table 00399)
- 00h 5 WORD numeric arguments
- 0Ah DWORD -> ASCIZ string
- SeeAlso: #00400
- (Table 00400)
- Values for TelAPI Telnet command/option identifier:
- 01h ASCII args: none
- 02h BINARY args: none
- 03h LOCALECHO args: none client echos data
- 04h REMOTEECHO args: none server echos data
- 05h SGA args: none Suppress Go-Ahead signal
- 07h CHARMODE args: none no line-buffering
- 08h LINEMODE args: -> erase-line ch perform line-buffering
- 09h RECVEOL args: EOL type
- 0Ah SENDEOL args: EOL type
- 0Bh EOR args: none enable end-of-record sequence
- 0Dh BREAK args: -> break char
- 0Eh VERBOSE args: verbosity display Telnet negotiations?
- 0Fh AYT args: -> AYT escape ch
- 10h AO args: -> AO escape char
- 11h IP args: -> IP escape char
- 12h EC args: -> escape char
- 13h EL args: -> escape char
- 14h STATUS args: type; returns data in structure
- 18h TERMTYPE args: -> terminal type
- 19h ATTACHPORT args: port number ; returns session number
- 1Bh TRANSMIT_EOR args: EOR enabled append EOR to every telwrite?
- SeeAlso: #00399
- --------N-14E5-------------------------------
- INT 14 - TelAPI - "telreset" - RESET ALL CONNECTIONS
- AH = E5h
- Return: AX = status (0000h,other) (see also #00397)
- FFFFh unable to reset
- Desc: close all sessions and reset TelAPI to defaults
- SeeAlso: AH=E1h,AH=E6h,AX=FF00h
- --------N-14E6-------------------------------
- INT 14 - TelAPI - "telunload" - UNINSTALL
- AH = E6h
- Return: AX = status
- 0000h successful
- FFFFh unable to uninstall
- Notes: TelAPI also supports the NASI/NACS and NCSI APIs on INT 6B
- this function invokes AH=E5h internally
- SeeAlso: AH=E5h,AX=FF00h,INT 6B/AH=00h,INT 6B/AH=10h
- --------N-14E7-------------------------------
- INT 14 - TelAPI - "tellist" - GET TELNET SESSION LIST
- AH = E7h
- ES:SI -> 10-word buffer for session list
- Return: AX = 0000h (successful)
- ES:SI buffer filled
- Desc: determine, for each of the ten allowable sessions, whether the session
- is currently available
- Note: each word in the buffer is filled with either 0000h to indicate that
- the corresponding sesion is unavailable, or 0001h if available
- SeeAlso: AH=E0h,AH=E5h,AX=FF00h
- --------N-14E8-------------------------------
- INT 14 - TelAPI - "telattach" - ATTACH COM PORT TO/FROM TELNET SESSION
- AH = E8h
- BX = connection ID (see AH=E0h"TelAPI")
- CX = serial port number (0000h-0003h = COM1-COM4)
- Return: AX = status
- 0000h successful
- FFFFh failed
- SeeAlso: AH=E0h,AH=E9h,AX=FF00h
- --------N-14E9-------------------------------
- INT 14 - TelAPI - "telportosn" - GET SESSION NUMBER FOR COM PORT
- AH = E9h
- DX = serial port number (0000h-0003h = COM1-COM4)
- Return: AX >= 0000h session number
- AX < 0000h error code (see #00397)
- SeeAlso: AH=E0h,AH=E8h,AH=EAh,AX=FF00h
- --------N-14EA-------------------------------
- INT 14 - TelAPI - "telstatus" - GET TELNET CONNECTION STATUS INFORMATION
- AH = EAh
- BX = connection ID (see AH=E0h"TelAPI")
- ES:SI -> buffer for status info (see #00401)
- Return: AX = status (0000h,FFFFh,etc.)
- SeeAlso: AH=E9h,AH=EBh,AX=FF00h
- Format of TelAPI Telnet connection status information:
- Offset Size Description (Table 00401)
- 00h 4 BYTEs remote host IP address
- 04h 20 BYTEs reserved
- 18h WORD local port number
- 1Ah BYTE connection mode (00h = ASCII, 01h = Binary)
- 1Bh BYTE echo flag (00h local, 01h remote)
- 1Ch BYTE SGA flag (00h will, 01h won't)
- 1Dh BYTE EOR negotation flag (00h do negotiate, 01h don't)
- 1Eh BYTE buffering (00h line mode, 01h character mode)
- 1Fh BYTE reserved
- 20h BYTE verbose flag (00h no, 01h verbose mode)
- 21h BYTE received EOL (00h no xlat, 01h CR, 02h LF, 03h CRLF)
- 22h BYTE sent EOL (00h no translation, 01h CR, 02h LF)
- 23h BYTE break character
- 24h BYTE IP escape character
- 25h BYTE AO escape character
- 26h BYTE AYT escape character
- 27h BYTE EC escape character
- 28h BYTE EL escape character
- 29h 41 BYTEs ASCIZ Telnet-negotiated terminal type
- 52h 9 BYTEs session ID
- SeeAlso: #00402
- --------N-14EB-------------------------------
- INT 14 - TelAPI - "telname" - GET AVAILABLE/INUSE STATUS FOR ALL SESSIONS
- AH = EBh
- ES:SI -> buffer for session statuses (see #00402)
- Return: ES:SI buffer filled
- SeeAlso: AH=E9h,AH=EAh,AX=FF00h
- Format of TelAPI session status information [array]:
- Offset Size Description (Table 00402)
- 00h BYTE session state (00h available, 01h connected)
- 01h 9 BYTEs session ID if connected
- 0Ah WORD attached COM port if connected, FFFFh if not
- SeeAlso: #00401
- --------N-14EC-------------------------------
- INT 14 - TelAPI - "telnblkopen" - CREATE TELNET CONNECTION (NON-BLOCKING)
- AH = ECh
- BX = port number to connect with (default 0017h used if <= 0)
- CX:DX = Internet address of remote host
- DS:DI -> 2-byte remote host (connection) identifier
- ES:SI -> 1700-byte buffer for Telnet state record
- 0000h:0000h to use TelAPI internally-allocated space
- Return: AX = status (0000h-0009h,FED3h,FF37h,FFBDh,FFC0h,FFCDh) (see #00397)
- ES:SI buffer filled with state record
- ES:SI -> internally-allocated state record in some versions
- Notes: the remote host identifier may be used to refer to this connection
- this function returns immediately; use AH=EDh to check whether the
- connection has been established yet
- this function is not supported by the Microdyne TelAPI v3.7
- SeeAlso: AH=E0h"TelAPI",AH=EDh,AX=FF00h
- --------N-14ED-------------------------------
- INT 14 - TelAPI - "telpoll" - POLL TELNET SESSION FOR CONNECTION COMPLETION
- AH = EDh
- BX = connection ID (see AH=ECh)
- Return: AX = status (0000h,0001h,FFFFh,etc.) (see also #00397)
- 0000h session now connected
- 0001h connection still in progress
- Note: this function is not supported by the Microdyne TelAPI v3.7
- SeeAlso: AH=EDh,AX=FF00h
- --------a-14F0F0-----------------------------
- INT 14 - ASAP v1.0 - ???
- AX = F0F0h
- DX = ???
- ???
- Return: ???
- Program: ASAP (Automatic Screen Access Program) is a shareware screen reader
- by MicroTalk
- SeeAlso: AX=F0F1h
- --------a-14F0F1DX0000-----------------------
- INT 14 - ASAP v1.0 - INSTALLATION CHECK
- AX = F0F1h
- DX = 0000h
- Return: DX = segment of resident code
- 0000h if not installed
- Program: ASAP (Automatic Screen Access Program) is a shareware screen reader
- by MicroTalk
- SeeAlso: AX=F0F0h,INT 10/AX=3800h
- --------S-14F4FF-----------------------------
- INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK
- AX = F4FFh
- DX = port (00h-03h)
- Return: CF clear if present
- AX = 0000h
- CF set if not present
- AX <> 0000h
- SeeAlso: AH=36h"ComShare",AH=F9h,AH=FCh
- --------S-14F9-------------------------------
- INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL
- AH = F9h
- DX = port (00h-03h)
- Return: nothing
- SeeAlso: AX=F4FFh
- --------S-14FA-------------------------------
- INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK
- AH = FAh
- DX = port (00h-03h)
- Return: nothing
- SeeAlso: AH=07h"MBBIOS",AH=1Ah,AH=8Ah
- --------S-14FB-------------------------------
- INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS
- AH = FBh
- AL = modem control register (see #00334 at AH=05h"SERIAL")
- DX = port (00h-03h)
- Return: nothing
- SeeAlso: AH=05h"SERIAL"
- --------S-14FC-------------------------------
- INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT
- AH = FCh
- DX = port (00h-03h)
- Return: AH = RS232 status bits (see #00304 at AH=03h)
- AL = character
- SeeAlso: AH=02h,AH=0Ch,AX=FF02h
- --------S-14FD02-----------------------------
- INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS
- AX = FD02h
- Return: CX = number of characters available
- --------N-14FF00-----------------------------
- INT 14 - TelAPI - "telcheck" - INSTALLATION CHECK
- AX = FF00h
- Return: AX = 00FFh if installed
- BX = version number * 100 (decimal)
- SeeAlso: AH=E6h,AX=F4FFh
- --------S-14FF01-----------------------------
- INT 14 - IBM/Yale EBIOS SERIAL I/O - SET SEND BUFFER
- AX = FF01h
- CX = length of buffer (0000h to cancel buffer assignment)
- DX = port (00h-03h)
- ES:BX -> send buffer
- Return: nothing
- SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF02h
- --------S-14FF02-----------------------------
- INT 14 - IBM/Yale EBIOS SERIAL I/O - SET RECEIVE BUFFER
- AX = FF02h
- CX = length of buffer (0000h to cancel buffer assignment)
- DX = port (00h-03h)
- ES:BX -> receive buffer
- Return: nothing
- SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF01h
- --------S-14FFF8-----------------------------
- INT 14 - COMM-DRV v14.0 - SET BAUD RATE DIVISOR
- AX = FFF8h
- BX = card type (sub-device number)
- CX = new baudrate divisor
- DX = index to baud rate
- Return: AH bit 7 set on error
- AH bit 7 clear if successful
- Program: COMM-DRV is a universal serial communications driver by Willies'
- Computer Software Company, which supports standard INT 14 and
- FOSSIL calls as well as its own interfaces
- SeeAlso: AX=8000h"COMM-DRV"
- --------S-14FFFB-----------------------------
- INT 14 - COMM-DRV v14.0 - GET HIGHEST ALLOWED PORT NUMBER
- AX = FFFBh
- DX = port number
- Return: AH bit 7 set on error
- AH bit 7 clear if successful
- BX = highest port number
- --------S-14FFFC-----------------------------
- INT 14 - COMM-DRV v14.0 - GET INT 14 FLAGS
- AX = FFFCh
- DX = port number
- Return: AH bit 7 set on error
- AH bit 7 clear if successful
- BX = flags (see #00403)
- SeeAlso: AX=FFFDh
- Bitfields for INT 14h flags:
- Bit(s) Description (Table 00403)
- 0 port active for INT 14h
- 1 interface behaving like a FOSSIL driver
- --------S-14FFFD-----------------------------
- INT 14 - COMM-DRV v14.0 - SET INT 14 FLAGS
- AX = FFFDh
- BX = flags (see #00403)
- DX = port number
- Return: AH bit 7 set on error
- AH bit 7 clear if successful
- SeeAlso: AX=FFFCh
- --------S-14FFFE-----------------------------
- INT 14 - COMM-DRV v14.0 - RESTORE INT 14 VECTOR TO ORIGINAL
- AX = FFFEh
- Return: AH bit 7 set on error
- AH bit 7 clear if successful
- --------S-14FFFF-----------------------------
- INT 14 - COMM-DRV v14.0 - GET INT 14 INFORMATION AREA
- AX = FFFFh
- BX:SI -> DWORD buffer for address of information area (see #00404)
- (initialized to zeros)
- Return: BX:SI buffer filled with nonzero value if installed
- Program: COMM-DRV is a universal serial communications driver by Willies'
- Computer Software Company, which supports standard INT 14 and
- FOSSIL calls as well as its own interfaces
- Index: installation check;COMM-DRV
- Format of COMM-DRV information area:
- Offset Size Description (Table 00404)
- 00h 8 BYTEs signature "COMM-DRV"
- 08h 2 BYTEs 00h,00h
- 0Ah DWORD -> direct address mapping table
- 0Eh DWORD previous INT 14 vector
- --------t-15---------------------------------
- INT 15 - Microsoft TSR Specification
- No additional information available at this time.
- --------B-1500-------------------------------
- INT 15 - CASSETTE - TURN ON TAPE DRIVE'S MOTOR (PC and PCjr only)
- AH = 00h
- Return: CF set on error
- AH = 86h no cassette present
- CF clear if successful
- SeeAlso: AH=01h"CASSETTE",MEM 0040h:0067h"PC"
- --------M-1500-------------------------------
- INT 15 - Amstrad PC1512 - GET AND RESET MOUSE COUNTS
- AH = 00h
- Return: CX = signed X count
- DX = signed Y count
- --------O-1500-------------------------------
- INT 15 - VMiX v2+ - INSTALLATION CHECK
- AH = 00h
- Return: DX = 0798h if installed
- AX = version (AH = major, AL = minor)
- --------T-1500-------------------------------
- INT 15 - MultiDOS Plus - GIVE UP TIME SLICE
- AH = 00h
- Return: nothing
- Note: if issued by the highest-priority task while MultiDOS is using
- priority-based rather than round-robin scheduling, control will be
- returned to the caller immediately
- SeeAlso: AH=03h"MultiDOS",AX=1000h
- --------B-1501-------------------------------
- INT 15 - CASSETTE - TURN OFF TAPE DRIVE'S MOTOR (PC and PCjr only)
- AH = 01h
- Return: CF set on error
- AH = 86h no cassette present
- CF clear if successful
- SeeAlso: AH=00h"CASSETTE"
- --------b-1501-------------------------------
- INT 15 - Amstrad PC1512 - WRITE DATA TO NON-VOLATILE RAM
- AH = 01h
- AL = NVRAM location (00h to 3Fh) (see #00405)
- BL = NVRAM data value
- Return: AH = return code
- 00h OK
- 01h address bad
- 02h write error
- SeeAlso: AH=02h"Amstrad"
- Format of Amstrad NVRAM:
- Offset Size Description (Table 00405)
- 00h BYTE time of day: seconds
- 01h BYTE alarm time: seconds
- 02h BYTE time of day: minutes
- 03h BYTE alarm time: minutes
- 04h BYTE time of day: hours
- 05h BYTE alarm time: hours
- 06h BYTE day of week, 1 = Sunday
- 07h BYTE day of month
- 08h BYTE month
- 09h BYTE year mod 100
- 0Ah BYTE RTC status register A (see #00406)
- 0Bh BYTE RTC status register B (see #00407)
- 0Ch BYTE RTC status register C (read-only) (see #00408)
- 0Dh BYTE RTC status register D
- bit 7: battery good
- 0Eh 6 BYTEs time and date machine last used
- 14h BYTE user RAM checksum
- 15h WORD Enter key scancode/ASCII code
- 17h WORD Forward delete key scancode/ASCII code
- 19h WORD Joystick fire button 1 scancode/ASCII code
- 1Bh WORD Joystick fire button 2 scancode/ASCII code
- 1Dh WORD mouse button 1 scancode/ASCII code
- 1Fh WORD mouse button 2 scancode/ASCII code
- 21h BYTE mouse X scaling factor
- 22h BYTE mouse Y scaling factor
- 23h BYTE initial VDU mode and drive count
- 24h BYTE initial VDU character attribute
- 25h BYTE size of RAM disk in 2K blocks
- 26h BYTE initial system UART setup byte
- 27h BYTE initial external UART setup byte
- 28h 24 BYTEs available for user application
- Note: bytes 00h-0Dh are the same on the IBM AT as they are used/updated by
- the clock chip
- Bitfields for RTC status register A:
- Bit(s) Description (Table 00406)
- 7 set if date/time being updated
- 6-4 time base speed, default 010 = 32768 Hz
- 3-0 interrupt rate selection, default 0110 = 1024 Hz
- SeeAlso: #00405
- Bitfields for RTC status register B:
- Bit(s) Description (Table 00407)
- 7 clear if normal update, set if abort update
- 6 periodic interrupt enable
- 5 alarm interrupt enable
- 4 update end interrupt enable
- 3 square wave enable
- 2 date mode (clear = BCD, set = binary)
- 1 24-hour format
- 0 daylight saving time enable
- SeeAlso: #00405
- Bitfields for RTC status register C:
- Bit(s) Description (Table 00408)
- 7 IRQF flag
- 6 PF flag
- 5 AF flag
- 4 UF flag
- SeeAlso: #00405
- --------O-1501-------------------------------
- INT 15 - VMiX - "sys_chanreq" - I/O CHANNEL OBJECT MANAGER
- AH = 01h
- STACK: WORD object ID of requestor
- DWORD pointer to ASCIZ name of requested method
- "assign" assign channel to object
- "deassign" deassign channel
- "cursor" set cursor on/off
- "init" initialize comm port
- "open" open I/O channel
- "position" set cursor position
- "receive" get buffered packet from comm port
- "send" send buffered packet to comm port
- "vio" set current virtual I/O to specified channel
- "window" make window at cursor position
- ---if "assign"---
- WORD object UID
- WORD caller UID/PID
- DWORD CSL with port
- ---if "deassign"---
- WORD channel ID
- ---if "cursor"---
- WORD channel ID (must be a SRCSINK)
- WORD new state (0000h off, 0001h on)
- ---if "init"---
- WORD channel ID (must be a SRCSINK)
- WORD comm port number (00h-03h)
- WORD UART init code
- ---if "open"---
- WORD channel ID
- ---if "position"---
- WORD channel ID (must be a SRCSINK)
- WORD position (high byte = row, low byte = column)
- ---if "receive"---
- DWORD pointer to buffer
- ---if "send"---
- WORD length of buffer
- DWORD pointer to buffer
- ---if "vio"---
- WORD channel ID (must be a SRCSINK)
- ---if "window"---
- WORD top left (high byte = row, low byte = column)
- WORD bottom right (high byte = row, low byte = column)
- Return: DX:AX -> IRP structure or 0000h:0000h
- SeeAlso: AH=00h"VMiX",AH=02h"VMiX"
- --------T-1501-------------------------------
- INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE
- AH = 01h
- AL = semaphore number (00h-3Fh)
- Return: AH = status
- 00h successful
- 02h invalid semaphore number
- Notes: if the semaphore is not owned, ownership is assigned to the calling
- task and the call returns immediately
- if the semaphore is already owned by another task, the calling task
- is placed on a queue for the semaphore and suspended until it can
- become owner of the semaphore
- semaphore 0 is used internally by MultiDOS to synchronize DOS access
- SeeAlso: AH=02h"MultiDOS",AH=10h"MultiDOS",AH=1Bh"MultiDOS"
- --------B-1502-------------------------------
- INT 15 - CASSETTE - READ DATA (PC and PCjr only)
- AH = 02h
- CX = number of bytes to read
- ES:BX -> buffer
- Return: CF clear if successful
- DX = number of bytes read
- ES:BX -> byte following last byte read
- CF set on error
- AH = status (see #00409)
- SeeAlso: AH=00h"CASSETTE",AH=03h"CASSETTE",MEM 0040h:0069h,MEM 0040h:006Bh"PC"
- (Table 00409)
- Values for Cassette status:
- 00h successful
- 01h CRC error
- 02h bad tape signals
- 04h no data
- 80h invalid command
- 86h no cassette present
- --------b-1502-------------------------------
- INT 15 - Amstrad PC1512 - READ DATA FROM NON-VOLATILE RAM
- AH = 02h
- AL = NVRAM location (00h to 3Fh)
- Return: AH = return code
- 00h OK
- 01h address bad
- 02h checksum error
- AL = NVRAM data value
- SeeAlso: AH=01h"Amstrad"
- --------O-1502-------------------------------
- INT 15 - VMiX - "sys_memreq" - MEMORY OBJECT MANAGER
- AH = 02h
- STACK: WORD object ID of requestor
- DWORD pointer to ASCIZ name of requested method
- "assign" allocate low memory block
- "assign extended" allocate extended memory pages
- "assign gdt" allocate GDT selector
- "paged" allocate low paged memory
- "paged extended" alllocate extended memory pages
- "deassign" free memory block
- "deassign gdt" free GDT selector
- "getvpage" get physical address for virtual page
- "setvpage" set physical address for virtual page
- "info" get VMiX memory usage info block
- "move" move contents of 32-bit memory
- "newmcb" make new DOS memory control block
- "owner" get process ID of MCB or PSP owner
- "umb" allocate upper memory block
- "video" toggle system use of video memory and get stat
- ---if "assign"---
- WORD number of objects
- WORD size in bytes (multiple of 512 bytes)
- ---if "assign extended"---
- WORD number of objects
- WORD size in bytes (multiple of 4K)
- ---if "assign gdt"---
- WORD access type (low byte)
- WORD segment size in paragraphs
- DWORD pointer to start of physical segment
- ---if "paged"---
- WORD number of 512-byte pages
- ---if "paged extended"
- WORD number of 4K pages
- ---if "deassign"---
- DWORD pointer returned by previous allocation call
- ---if "deassign gdt"---
- WORD GDT selector
- ---if "getvpage"---
- WORD owner's process ID
- DWORD pointer to buffer for page structure (struct VPGE)
- ---if "setvpage"---
- WORD owner's process ID
- DWORD pointer to new page structure (struct VPGE)
- ---if "info"---
- no additional arguments
- ---if "move"
- DWORD 32-bit source address
- DWORD 32-bit destination address
- WORD number of words to move
- ---if "newmcb"---
- DWORD pointer to new MCB's location
- WORD size of memory block
- DWORD pointer to ASCIZ name string (max 8 chars)
- ---if "owner"---
- WORD MCB or PSP segment
- ---if "umb"---
- WORD size in paragraphs
- ---if "video"---
- no additional arguments
- Return: DX:AX -> memory block or VPGE struct or 0000h:0000h
- SeeAlso: AH=00h"VMiX",AH=01h"VMiX"
- --------T-1502-------------------------------
- INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE
- AH = 02h
- AL = semaphore number (00h-3Fh)
- Return: AH = status
- 00h successful
- 01h not semaphore owner
- 02h invalid semaphore number
- Notes: if any tasks are waiting for the semaphore, the first task on the wait
- queue will become the new owner and be reawakened
- do not use within an interrupt handler
- SeeAlso: AH=01h"MultiDOS",AH=10h"MultiDOS",AH=1Ch"MultiDOS"
- --------B-1503-------------------------------
- INT 15 - CASSETTE - WRITE DATA (PC and PCjr only)
- AH = 03h
- CX = number of bytes to write
- ES:BX -> data buffer
- Return: CF clear if successful
- ES:BX -> byte following last byte written
- CF set on error
- AH = status (see #00409)
- CX = 0000h
- SeeAlso: AH=00h"CASSETTE",AH=02h"CASSETTE"
- --------V-1503-------------------------------
- INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE WRITE REGISTER
- AH = 03h
- AL = value (I,R,G,B bits)
- Return: nothing
- SeeAlso: AH=04h"Amstrad"
- --------O-1503-------------------------------
- INT 15 - VMiX - "sys_pinput" - PROMPTED CONSOLE INPUT
- AH = 03h
- STACK: DWORD pointer to ASCII prompt
- WORD field outline character
- WORD length of input field (max 7Fh)
- DWORD address of pointer to input buffer
- Return: AX = length of input (input buffer is padded with blanks)
- SeeAlso: AH=04h"VMiX"
- --------T-1503-------------------------------
- INT 15 - MultiDOS Plus - SUSPEND TASK FOR INTERVAL
- AH = 03h
- DX = number of time slices to remain suspended
- Return: after specified interval has elapsed
- Note: when priority-based scheduling is in use, high-priority tasks should
- use this function to yield the processor
- SeeAlso: AH=00h"MultiDOS",AH=0Ah"MultiDOS"
- --------B-1504-------------------------------
- INT 15 - SYSTEM - BUILD ABIOS SYSTEM PARAMETER TABLE (PS)
- AH = 04h
- ES:DI -> 32-byte results buffer for System Parameter Table (see #00410)
- DS = segment containing ABIOS RAM extensions (zero if none)
- Return: CF clear if successful
- AH = 00h success
- ES:DI buffer filled
- AL destroyed
- CF set on failure
- AX destroyed
- AH = 80h/86h if not supported
- SeeAlso: AH=05h"ABIOS",AH=C1h
- Format of ABIOS System Parameter Table:
- Offset Size Description (Table 00410)
- 00h DWORD FAR address of ABIOS Common Start Routine
- 04h DWORD FAR address of ABIOS Interrupt Routine
- 08h DWORD FAR address of ABIOS Time-out Routine
- 0Ch WORD number of bytes of stack required by this ABIOS implementation
- 0Eh 16 BYTEs reserved
- 1Eh WORD number of entries in initialization table
- --------V-1504-------------------------------
- INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE READ REGISTER
- AH = 04h
- AL = value (RDSEL1 and RDSEL0)
- Return: nothing
- SeeAlso: AH=03h"Amstrad",AH=05h"Amstrad"
- --------O-1504-------------------------------
- INT 15 - VMiX - "sys_vprintf" - FORMATTED OUTPUT TO STREAM
- AH = 04h
- STACK: DWORD control string
- DWORD array of arguments
- Return: nothing
- SeeAlso: AH=03h"VMiX"
- --------T-1504-------------------------------
- INT 15 - MultiDOS Plus - SEND MESSAGE TO ANOTHER TASK
- AH = 04h
- AL = mailbox number (00h-3Fh)
- CX = message length in bytes
- DS:SI -> message
- Return: AH = status
- 00h successful
- 01h out of message memory
- 02h invalid mailbox number
- Note: the message is copied into a system buffer; the caller may immediately
- reuse its buffer
- SeeAlso: AH=05h"MultiDOS"
- --------B-1505-------------------------------
- INT 15 - SYSTEM - BUILD ABIOS INITIALIZATION TABLE (PS)
- AH = 05h
- ES:DI -> results buffer of length 18h * Number_of_Entries (see #00411)
- DS = segment containing ABIOS RAM extensions (zero if none)
- Return: CF clear if successful
- AH = 00h success
- ES:DI buffer filled
- AL destroyed
- CF set on failure
- AX destroyed
- AH = 80h/86h if not supported
- SeeAlso: AH=04h"ABIOS",AH=C1h
- Format of one entry of ABIOS Initialization Table:
- Offset Size Description (Table 00411)
- 00h WORD device ID (see #00412)
- 02h WORD number of Logical IDs
- 04h WORD Device Block length (zero for ABIOS patch or extension)
- 06h DWORD -> init routine for Device Block and Function Transfer Table
- 0Ah WORD request block length
- 0Ch WORD Function Transfer Table length (zero for a patch)
- 0Eh WORD Data Pointers length (in Common Data Area)
- 10h BYTE secondary device ID (hardware level this ABIOS ver supports)
- 11h BYTE revision (device driver revision level this ABIOS supports)
- 12h 6 BYTEs reserved
- (Table 00412)
- Values for ABIOS device ID:
- 00h ABIOS internal calls
- 01h floppy disk
- 02h hard disk
- 03h video
- 04h keyboard
- 05h parallel port
- 06h serial port
- 07h system timer
- 08h real-time clock
- 09h system services
- 0Ah NMI
- 0Bh mouse
- 0Eh CMOS RAM
- 0Fh DMA
- 10h Programmable Option Select (POS)
- 16h keyboard password
- --------V-1505-------------------------------
- INT 15 - Amstrad PC1512 - WRITE VDU GRAPHICS BORDER REGISTER
- AH = 05h
- AL = value (I,R,G,B bits)
- Return: nothing
- SeeAlso: AH=04h"Amstrad"
- --------O-1505-------------------------------
- INT 15 - VMiX - "sys_getpid" - GET PROCESS ID OF CURRENT PROCESS
- AH = 05h
- Return: AX = process ID
- SeeAlso: AH=06h"VMiX",AH=0Bh"VMiX"
- --------T-1505-------------------------------
- INT 15 - MultiDOS Plus - CHECK MAILBOX
- AH = 05h
- AL = mailbox number (00h-3Fh)
- Return: AH = status
- 00h successful
- DX = length of first message in queue, 0000h if no message
- 02h invalid mailbox number
- SeeAlso: AH=04h"MultiDOS",AH=06h"MultiDOS"
- --------b-1506-------------------------------
- INT 15 - Amstrad PC1512 - GET ROS VERSION NUMBER
- AH = 06h
- Return: BX = version number
- --------O-1506-------------------------------
- INT 15 - VMiX - "sys_getpcb" - GET POINTER TO PROCESS CONTROL BLOCK
- AH = 06h
- STACK: WORD process ID
- Return: DX:AX -> process control block
- SeeAlso: AH=05h"VMiX",AH=07h"VMiX",AH=08h"VMiX"
- --------T-1506-------------------------------
- INT 15 - MultiDOS Plus - READ MAILBOX
- AH = 06h
- AL = mailbox number (00h-3Fh)
- CX = size of buffer in bytes
- ES:DI -> buffer for message
- Return: AH = status
- 00h successful
- CX = number of bytes copied
- DX = actual length of message
- 02h invalid mailbox number
- Note: if the caller's buffer is not large enough, the message is truncated
- and the remainder is lost
- SeeAlso: AH=04h"MultiDOS",AH=05h"MultiDOS"
- --------O-1507-------------------------------
- INT 15 - VMiX - "sys_getocb" - GET POINTER TO OBJECT CONTROL BLOCK
- AH = 07h
- STACK: WORD object type
- Return: DX:AX -> object control block
- SeeAlso: AH=06h"VMiX",AH=08h"VMiX"
- ----------1507-------------------------------
- INT 15 - IBM SurePath BIOS - Officially "Private" Function
- AH = 07h
- SeeAlso: AH=08h"IBM"
- --------T-1507-------------------------------
- INT 15 - MultiDOS Plus - SPAWN INTERNAL TASK (CREATE NEW THREAD)
- AH = 07h
- BX:CX = entry point of new task
- DX = stack size in paragraphs
- Return: AH = status
- 00h successful
- 01h no free task control blocks
- 02h no free memory for task's stack
- Note: execution returns immediately to calling task
- SeeAlso: AH=08h"MultiDOS",AH=09h"MultiDOS",AH=13h"MultiDOS"
- --------O-1508-------------------------------
- INT 15 - VMiX - "sys_getccb" - GET CHANNEL CONTROL BLOCK
- AH = 08h
- STACK: WORD channel ID
- Return: DX:AX -> channel control block
- SeeAlso: AH=06h"VMiX",AH=07h"VMiX"
- --------B-1508-------------------------------
- INT 15 - IBM SurePath BIOS - WAIT REQUESTED TIME PERIOD
- AH = 08h
- AL = function
- 00h wait in increments of 15.025 microseconds
- CX = number of time increments to wait (0000h = maximum)
- 80h wait in increments of 840 ns
- ECX = number of time increments to wait
- 81h I/O event wait
- BH = bitmask of bits to check
- BL = expected pattern
- DX = I/O port address
- ECX = number of 840 ns microticks to wait
- Return: ECX = 00000000h if expected pattern did not occur
- 82h memory event wait
- BH = bitmask of bits to check
- BL = expected pattern
- ES:SI -> BYTE to check
- ECX = number of 840 ns microticks to wait
- Return: ECX = 00000000h if expected pattern did not occur
- other reserved
- Return: CF clear if successful
- CF set on error
- AH = status
- 00h successful
- 01h used 15.025 microsecond interval, time rounded up
- 08h reserved subfunction
- 86h function not supported
- Notes: IBM classifies this function as optional
- if the POST determines that the timer is nonfunctional, this function
- uses the 15.025 microsecond refresh timer instead of the
- full-resolution timer
- SeeAlso: AH=07h"IBM",AH=09h"IBM",AH=86h
- --------T-1508-------------------------------
- INT 15 - MultiDOS Plus - TERMINATE INTERNAL TASK (KILL THREAD)
- AH = 08h
- Return: calling task terminated, so execution never returns to caller
- Notes: an internal task must be terminated with this function rather than a
- DOS termination function
- task's stack space is returned to parent task's memory pool
- SeeAlso: AH=07h"MultiDOS"
- --------O-1509-------------------------------
- INT 15 - VMiX - "sys_getqueue" - GET ID OF QUEUED ELEMENT
- AH = 09h
- STACK: WORD queue ID (0 = process queue, 1 = object, 3 = type)
- WORD subqueue ID
- Return: AX = queue ID
- SeeAlso: AH=0Ah"VMiX"
- ----------1509-------------------------------
- INT 15 - IBM BIOS - RESERVED FOR PCMCIA SYSTEM RESOURCE TABLE ACCESS
- AH = 09h
- no further details available
- SeeAlso: AH=08h"IBM"
- --------T-1509-------------------------------
- INT 15 - MultiDOS Plus - CHANGE TASK'S PRIORITY
- AH = 09h
- AL = new priority
- Return: nothing
- Note: the priority has different meanings depending on whether priority-
- based or round-robin scheduling is used
- SeeAlso: AH=07h"MultiDOS"
- --------O-150A-------------------------------
- INT 15 - VMiX - "sys_qetqnext" - GET ID OF NEXT QUEUED ELEMENT
- AH = 0Ah
- STACK: WORD queue ID (0 = process queue, 1 = object, 3 = type)
- WORD ID of current element in queue chain
- Return: AX = ID of next element
- SeeAlso: AH=09h"VMiX",AH=0Fh"VMiX"
- --------T-150A-------------------------------
- INT 15 - MultiDOS Plus - CHANGE TIME SLICE INTERVAL
- AH = 0Ah
- AL = new interval
- 00h = 55.0 ms (default)
- 80h = 27.5 ms
- 40h = 13.75 ms
- 20h = 6.88 ms
- 10h = 3.44 ms
- 08h = 1.72 ms
- SeeAlso: AH=03h"MultiDOS"
- --------O-150B-------------------------------
- INT 15 - VMiX - "sys_sysreq" - SYSTEM CONFIGURATION MANAGER
- AH = 0Bh
- STACK: WORD caller's UID
- DWORD pointer to ASCIZ name of requested method
- "abort" abort current send/receive on comm port
- "block" start/end critical section
- "close" terminate interrupt-drive comm I/O
- "open" prepare comm port for interrupt-driven I/O
- "delay" set delay timer and wait
- "hibernate" put process to sleep
- "ints" enable/disable interrupt-driven INT 14h
- "length" get current send/receive buffer offsets
- "kswitch" switch stacks
- "numproc" get number of active processes
- "protocol" set protocol function for comm interrupts
- "relocate" set/reset VMiX flag for relocating to himem
- "status" get current open comm port status
- "wake" awaken a process
- "xport" get comm port polled for logins
- ---if "abort"---
- no additional arguments
- ---if "block"---
- WORD 0000h end, 0001h start
- ---if "close"---
- no additional arguments
- ---if "open"---
- WORD comm port (00h-03h)
- WORD BIOS parameter byte (see #00300 at INT 14/AH=00h),
- except bits 7-5: 000 = 19200, 001 = 38400, 011 = 115200
- ---if "delay"---
- WORD time in seconds
- ---if "hibernate"---
- WORD process ID
- ---if "ints"---
- WORD 0000h if no, 0001h if yes
- ---if "length","numproc","relocate","status","xport"---
- no additional arguments
- ---if "kswitch"---
- DWORD pointer to new stack
- ---if "protocol"---
- DWORD pointer to function (must be in low "assign"ed memory
- when in 386 mode)
- ---if "wake"---
- WORD process ID
- Return: DX:AX -> result or 0000h:0000h
- ---if "length"---
- BYTE receive offset
- BYTE send offset
- ---if "kswitch"---
- DWORD old stack pointer
- ---if "numproc"---
- WORD number of active processes
- ---if "status"---
- current open comm port status
- ---if "xport"---
- current comm port being polled for logins
- Note: the "delay" command reportedly disables the keyboard until the delay
- completes
- SeeAlso: AH=05h"VMiX",AH=0Eh"VMiX"
- --------T-150B-------------------------------
- INT 15 - MultiDOS Plus - FORCE DISPLAY OUTPUT TO PHYSICAL SCREEN MEMORY
- AH = 0Bh
- Return: nothing
- Notes: sets calling task's screen pointer to actual screen memory; the pointer
- may be restored with AH=0Ch
- caller's video mode must be same as foreground task's video mode
- any text written while in the background will be saved to the
- foreground task's virtual screen when it switches to the background
- useful if a background task wants to display a message on the
- foreground screen
- SeeAlso: AH=0Ch"MultiDOS"
- --------O-150C-------------------------------
- INT 15 - VMiX - "sys_getstack" - GET POINTER TO PROCESS TSS STACK
- AH = 0Ch
- STACK: WORD process ID
- Return: DX:AX -> TSS stack store
- SeeAlso: AH=00h"VMiX"
- --------T-150C-------------------------------
- INT 15 - MultiDOS Plus - RESTORE OLD VIDEO DISPLAY MEMORY
- AH = 0Ch
- Return: nothing
- Note: restores task's screen pointer saved by AH=0Bh; must not be called
- unless AH=0Bh has been called first
- SeeAlso: AH=0Bh"MultiDOS"
- --------O-150D-------------------------------
- INT 15 - VMiX - "sys_spawn" - START A CHILD PROCESS JOB SHELL
- AH = 0Dh
- STACK: DWORD ASCIZ string starting with requested I/O channel and
- followed by standard VMiX shell command string
- Return: AX = process ID or error code "SYS_ERROR"
- Note: the maximum string length is 7Fh characters
- SeeAlso: AH=0Eh"VMIX",AH=11h"VMiX",INT 21/AH=4Bh
- --------T-150D-------------------------------
- INT 15 - MultiDOS Plus - DISABLE MULTITASKING
- AH = 0Dh
- Return: nothing
- Note: calling task receives all time slices until AH=0Eh is called; this
- allows time-critical events or nonreentrant code to be processed
- SeeAlso: AH=0Eh"MultiDOS",AH=10h"MultiDOS",AX=101Bh,AH=20h"MultiDOS"
- --------O-150E-------------------------------
- INT 15 - VMiX - "sys_kill" - HARD TERMINATE PROCESS
- AH = 0Eh
- STACK: WORD process ID
- Return: AX = status (SYS_OK or SYS_ERROR)
- SeeAlso: AH=0Bh"VMiX",AH=0Dh"VMIX"
- --------T-150E-------------------------------
- INT 15 - MultiDOS Plus - ENABLE MULTITASKING
- AH = 0Eh
- Return: nothing
- SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AH=20h"MultiDOS"
- --------d-150F-------------------------------
- INT 15 C - SYSTEM - FORMAT UNIT PERIODIC INTERRUPT (PS ESDI drives only)
- AH = 0Fh
- AL = phase code
- 00h reserved
- 01h surface analysis
- 02h formatting
- Return: CF clear if formatting should continue
- CF set if formatting should terminate
- Note: called during ESDI drive formatting after each cylinder is completed
- SeeAlso: INT 13/AH=1Ah
- --------O-150F-------------------------------
- INT 15 - VMiX - "sys_getqkey" - GET KEY FIELD OF QUEUED ELEMENT
- AH = 0Fh
- STACK: WORD queue ID (0 = process queue, 1 = object q, 3 = type q)
- WORD ID of element in queue chain
- Return: AX = key
- SeeAlso: AH=0Ah"VMiX"
- --------T-150F-------------------------------
- INT 15 - MultiDOS Plus - EXECUTE A MULTIDOS PLUS COMMAND
- AH = 0Fh
- DS:BX -> ASCIZ command
- Return: after command has been processed
- Notes: specified string is executed as if it had been typed at the MultiDOS
- command prompt
- the task is placed on a queue which MultiDOS examines periodically and
- is suspended until MultiDOS has processed the command
- all lowercase characters up to the first blank are converted to upper
- case within the given buffer
- --------!---Section--------------------------
- Interrupt List, part 3 of 18
- Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
- --------O-1510-------------------------------
- INT 15 - VMiX - "sys_virtual" - EXECUTE CONFORMING FUNCTION IN PROTECTED MODE
- AH = 10h
- STACK: DWORD pointer to function
- N WORDs function args
- Return: AX = function's return value??? (not specified in documentation)
- Note: while the function is executing, the following global descriptors are
- available:
- 20h stack segment
- 38h code segment of function
- 40h data alias for function's code segment
- additional GDT descriptors can be allocated using AH=02h with
- function "assign gdt"
- SeeAlso: AH=02h"VMiX",AH=51h"VMiX"
- --------T-1510-------------------------------
- INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE
- AH = 10h
- AL = semaphore number (00h-3Fh)
- Return: AH = status
- 00h semaphore not in use
- 01h semaphore owned by another task
- 02h invalid semaphore number
- 03h semaphore owned by caller
- SeeAlso: AH=02h"MultiDOS",AH=0Dh"MultiDOS",AH=1Dh"MultiDOS"
- --------Q-151000-----------------------------
- INT 15 - TopView - "PAUSE" - GIVE UP CPU TIME
- AX = 1000h
- Return: after other processes run
- Note: under DESQview, if the process issuing this call has hooked INT 08h,
- the current time-slice is set to expire at the next clock tick rather
- than immediately
- SeeAlso: AH=00h"MultiDOS",AX=5305h,INT 21/AH=89h,INT 21/AH=EEh"DoubleDOS"
- SeeAlso: INT 2F/AX=1680h,INT 60/DI=0106h,INT 62/AH=01h,INT 6F/AH=2Ah"F_YIELD"
- SeeAlso: INT 7A/BX=000Ah,INT 7F/AH=02h"MultiLink",INT 7F/AH=E8h
- --------Q-151001-----------------------------
- INT 15 - TopView - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
- AX = 1001h
- BX = number of bytes to allocate
- Return: ES:DI -> block of memory or 0000h:0000h (DV v2.26+)
- AX = status (DV v2.42)
- 0000h successful
- 0001h failed
- Note: use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
- common memory. Under DV v2.42, this call never generates a user
- prompt regardless of the SETERROR value; instead, it always returns
- AX=0001h and ES:DI=0000h:0000h if out of memory
- SeeAlso: AX=1002h,AX=102Eh,AX=DE0Ch,AX=DE15h
- --------Q-151002-----------------------------
- INT 15 - TopView - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
- AX = 1002h
- ES:DI -> previously allocated block
- Return: block freed
- SeeAlso: AX=1001h,AX=DE0Dh
- --------Q-151003-----------------------------
- INT 15 - TopView - "PRINTC" - DISPLAY CHARACTER/ATTRIBUTE ON SCREEN
- AX = 1003h
- BH = attribute
- BL = character
- DX = segment of object handle for window
- Return: nothing
- Note: BX=0000h does not display anything, it only positions the hardware
- cursor to the logical cursor's current position
- --------Q-1510-------------------------------
- INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
- AH = 10h
- AL = 04h thru 12h
- Return: pops up "Programming error" window in DV 2.x
- --------Q-151013-----------------------------
- INT 15 - TopView - "GETBIT" - DEFINE A 2ND-LEVEL INTERRUPT HANDLER
- AX = 1013h
- ES:DI -> FAR service routine
- Return: BX = bit mask indicating which bit was allocated
- 0000h if no more bits available
- SeeAlso: AX=1014h,AX=1015h
- Note: only a few TopView/DESQview API calls are allowed during a hardware
- interrupt; if other calls need to be made, the interrupt handler
- must schedule a 2nd-level interrupt with "SETBIT" (AX=1015h)
- --------Q-151014-----------------------------
- INT 15 - TopView - "FREEBIT" - UNDEFINE A 2ND-LEVEL INTERRUPT HANDLER
- AX = 1014h
- BX = bit mask from INT 15/AX=1013h
- Return: nothing
- SeeAlso: AX=1013h,AX=1015h
- --------Q-151015-----------------------------
- INT 15 - TopView - "SETBIT" - SCHEDULE ONE OR MORE 2ND-LEVEL INTERRUPTS
- AX = 1015h
- BX = bit mask for interrupts to post
- Return: indicated routines will be called: (DV 2.0x) at next task switch
- (DV 2.2x) immediately on return from
- hardware interrupt
- Notes: this is one of the few TopView calls which are allowed from a hardware
- interrupt handler
- the handler will be called with ES containing the segment of the handle
- of the next task to be executed; on return, ES must be the segment of
- a task handle
- SeeAlso: AX=1013h,AX=1014h
- --------Q-151016-----------------------------
- INT 15 - TopView - "ISOBJ" - VERIFY OBJECT HANDLE
- AX = 1016h
- ES:DI = possible object handle
- Return: BX = status
- FFFFh if ES:DI is a valid object handle (see #00414)
- 0000h if ES:DI is not
- Note: under DESQview versions prior to 2.50, an object handle is always a
- pointer to the object; for versions 2.50 and up, only task handles
- are always pointers--other handles may consist of a unique object
- number and offset into DESQview's common memory (see #00423)
- SeeAlso: AX=DE14h,AX=DE2Bh,AX=DE2Ch
- (Table 00413)
- Values for DESQview object type:
- 00h window/task
- 01h mailbox
- 02h keyboard
- 03h timer
- 04h pointer
- 05h panel
- 06h objectq
- Format of DESQview object:
- Offset Size Description (Table 00414)
- 00h WORD offset in common memory of previous object of same type
- 02h WORD offset in common memory of next object of same type
- 04h WORD signature FEDCh (DV 2.42-)
- signature FEDCh or object number (DV 2.50+)
- 06h WORD object type (see #00413)
- 08h DWORD object handle to return to caller
- 0Ch DWORD canonicalized object address (segment = common memory)
- 10h WORD offset in common memory of owning task
- (0000h for unowned OBJECTQs)
- 12h WORD mapping context
- offset in common memory of mapping context record (see #00416)
- remainder varies by object type and DESQview version
- ---v2.42 keyboard object---
- 14h WORD flag bits (see also AH=12h/BH=0Ah"OBJECT")
- bit 15: keyboard opened
- 16h 4 BYTEs ???
- 1Ah WORD priority in OBJECTQ???
- 1Ch ...
- 25h WORD offset in common memory of ??? task
- 27h 4 BYTEs ???
- ---v2.42 objectq object---
- 14h WORD flag bits (see also AH=12h/BH=0Ah"OBJECT")
- bit 15: OBJECTQ opened
- 16h 2 BYTEs ???
- 18h WORD offset in common memory of ??? task
- 1Ah 6 BYTEs ???
- ---v2.42 mailbox object---
- 14h WORD flag bits (see also AH=12h/BH=0Ah"OBJECT")
- bit 15: mailbox opened
- 1Ah WORD priority in OBJECTQ???
- 1Ch 6 BYTEs ???
- 22h WORD offset in common memory of mailbox name (counted string)
- 0000h if no name
- <= 5 BYTEs ???
- ---v2.22-2.42,2.52,2.60 window/task object---
- 14h BYTE 00h window, 01h task
- 15h BYTE internal (not Switch menu) window number???
- 16h BYTE internal (not Switch menu) window number???
- 17h WORD segment of internal window record (see #00417)
- 19h 2 BYTEs ???
- 1Bh BYTE cursor row
- 1Ch BYTE cursor column
- 1Dh BYTE visible window origin, row
- 1Eh BYTE visible window origin, column
- 1Fh BYTE window height (logical)
- 20h BYTE window width (logical)
- 21h BYTE window position, row
- 22h BYTE window position, column
- 23h BYTE window height (visible)
- 24h BYTE window width (visible)
- 25h BYTE row of top of frame (or window if unframed)
- 26h BYTE column of left of frame (or window if unframed)
- 27h BYTE window height (physical, including frame)
- 28h BYTE window width (physical, including frame)
- 29h BYTE unzoomed visible origin, row (00h before first zoom)
- 2Ah BYTE unzoomed visible origin, column (00h before first zoom)
- 2Bh BYTE unzoomed window position, row (00h before first zoom)
- 2Ch BYTE unzoomed window position, column (00h before first zoom)
- 2Dh BYTE unzoomed window height (00h before first zoom)
- 2Eh BYTE unzoomed window width (00h before first zoom)
- unzoomed parameters above are updated when window is zoomed
- to full screen
- 2Fh BYTE ??? initially logical window height
- 30h BYTE ??? initially logical window width
- 31h 2 BYTEs ???
- 33h BYTE minimum height of window
- 34h BYTE minimum width of window
- 35h BYTE maximum height of window
- 36h BYTE maximum width of window
- 37h 3 BYTEs ???
- 3Ah 8 BYTEs window frame characters: ul,ur,ll,lr,t,b,l,r
- 42h 24 BYTEs attributes???
- 5Ah 8 BYTEs window frame characters: ul,ur,ll,lr,t,b,l,r
- 62h 3 BYTEs ???
- 65h BYTE ??? bitflags
- 66h BYTE bit 0: window is zoomed
- 67h BYTE ???
- 68h WORD offset in common memory of window name or 0000h if untitled
- 6Ah WORD length of window name
- 6Ch 2 BYTEs ???
- 6Eh WORD offset of logical cursor in window (in character cells)
- 70h DWORD pointer to field table for window
- 74h BYTE ???
- 75h 2 BYTEs ???
- 77h BYTE number of last-visited field
- 78h DWORD pointer to field table entry for last-visited field
- 7Ch 3 BYTEs ???
- 7Fh BYTE select field marker character
- 80h BYTE ??? bit flags
- bit 0: allow ECh window stream opcode to change reverse logattr
- bit 1: alternate field processing mode selected
- 81h BYTE ???
- 82h DWORD notification function (manager stream opcode 8Ah)
- no notification if segment = 0000h
- 86h DWORD notification argument (manager stream opcode 8Bh)
- 8Ah WORD offset in common memory of ??? window object or 0000h
- 8Ch WORD offset in common memory of ??? window object or 0000h
- 8Eh WORD offset in common memory of ??? window object or 0000h
- 90h BYTE ??? bitflags
- 91h BYTE ???
- ---task object only
- 92h BYTE bit flags (bits 0-4)
- 93h BYTE character for ??? (default 20h)
- 94h BYTE ??? flag
- 95h WORD offset in common memory of ???
- 97h 2 BYTEs ???
- 99h WORD ???
- 9Bh BYTE ??? bit flags
- bit 3: ???
- bit 6: perform protected-attribute processing on select fields
- 9Ch BYTE ???
- 9Dh WORD offset in common memory of current register save record
- (see #00415). No register save record in use if < 01C0h
- 9Fh WORD offset in common memory of task's keyboard object
- A1h WORD offset in common memory of task's OBJECTQ object
- A3h WORD offset in common memory of task's mailbox object
- A5h WORD semaphore: FFFFh if on user stack, else on task's private stack
- A7h DWORD user's SS:SP
- ABh WORD task's private SP (SS read from offset 0Ah)
- ADh 6 BYTEs ???
- B3h BYTE ??? bit flags
- bit 0: run in foreground only
- B4h BYTE ???
- B5h BYTE ??? bitflags
- B6h BYTE task status (see #00555 at AX=DE2Ch)
- B7h 9 BYTEs ???
- C0h WORD head pointer for keyboard buffer (wraps back to 00h after 80h)
- C2h WORD tail pointer for keyboard buffer (wraps back to 00h after 80h)
- C4h 2 BYTEs ??? (0000h)
- C6h WORD segment of keyboard buffer for task
- C8h WORD offset in common memory of ??? keyboard object
- CAh BYTE ???
- ---v2.22-2.42
- CBh WORD offset in common memory of ??? object
- CEh BYTE ??? flag
- CFh WORD offset in common memory of default notify window for task
- or 0000h if none
- D1h 4 BYTEs ???
- D5h BYTE window number on Switch Window menu
- D6h 5 BYTEs ???
- DBh WORD offset in common memory of ??? object
- DDh 2 BYTEs ???
- DFh WORD API level for task
- E1h WORD offset in common memory of object task is waiting on if task
- status is 'waiting', else 0000h
- E7h WORD segment of ???
- E9h 4 BYTEs ???
- EDh WORD EMS handle of virtualization buffer, 0000h if no virtualization
- F1h 12 BYTEs ???
- FBh WORD ???
- FDh BYTE ???
- FFh 12 BYTEs ???
- 10Bh DWORD pointer to process record (see #00418,#00419)
- 10Dh 10 BYTEs ???
- 119h DWORD SS:SP for ???
- 11Dh 4 BYTEs ???
- 121h DWORD pointer to ???
- 125h 25 BYTEs ???
- 13Eh DWORD pointer to ??? in system memory
- ---v2.22
- 142h 3 BYTEs ???
- 145h task's default keyboard object
- ---v2.42
- 142h DWORD pointer to first task instance data record in system memory
- 148h DWORD pointer to last task instance data record in system memory
- (see #00420)
- 14Ah BYTE ???
- 14Dh 42 BYTEs task's default keyboard object
- 177h 32 BYTEs task's ObjectQ object
- 197h 41 BYTEs task's default mailbox object
- 1C0h 24 BYTEs first register save record
- 450h -- default top of private stack
- ---v2.52 (probably all DV/X)
- Same as v2.60 below except there is an extra 29 bytes inserted somewhere
- before offset 9Fh, but not yet known exactly where. Also, for the WAIT_ON
- field (v2.60 offset E3h), some X apps (probably waiting on a socket) have
- 0000h even when waiting.
- ---v2.60
- CBh WORD ??? (added in 2.50 - rest is same as 2.42)
- CDh WORD offset in common memory of ??? object
- D0h BYTE ??? flag
- D1h WORD offset in common memory of default notify window for task
- or 0000h if none
- D3h 4 BYTEs ???
- D7h BYTE window number on Switch Window menu
- D8h 5 BYTEs ???
- DDh WORD offset in common memory of ??? object
- DFh 2 BYTEs ???
- E1h WORD API level for task
- E3h WORD If status at B6h=waiting, offset in common memory of object
- that task is waiting on, else 0000h. (Task with CPU also
- has 0000h here)
- E9h WORD segment of ???
- EBh 4 BYTEs ???
- EFh WORD EMS handle of virtualization buffer, 0 if no virtualization
- F3h 12 BYTEs ???
- FDh WORD ???
- FFh BYTE ???
- 101h 8 BYTEs ???
- 109h DWORD pointer to process record in system memory
- 10Dh 14 BYTEs ???
- 11Bh DWORD SS:SP for ???
- 11Fh 4 BYTEs ???
- 123h DWORD pointer to ???
- 127h 25 BYTEs ???
- 140h DWORD pointer to ??? in system memory
- 144h DWORD pointer to first task instance data record in system memory
- 148h DWORD pointer to last task instance data record in system memory
- (from INT 15/AX=DE27h) (see #00420)
- 14Ch BYTE ???
- 14Eh 42 BYTEs task's default keyboard object
- 179h 32 BYTEs task's ObjectQ object
- 199h 41 BYTEs task's default mailbox object
- 1C2h 24 BYTEs first register save record
- 452h -- default top of private stack
- Format of DESQview Register Save Record:
- Offset Size Description (Table 00415)
- 00h WORD AX
- 02h WORD BX
- 04h WORD CX
- 06h WORD DX
- 08h WORD DI
- 0Ah WORD SI
- 0Eh WORD DS
- 10h WORD ES
- 12h DWORD return address
- 16h WORD original flags
- Format of DESQview mapping context record:
- Offset Size Description (Table 00416)
- 00h WORD lowest segment in process's memory
- (often start of system memory chain)
- 02h WORD size of process's memory in paragraphs
- 04h BYTE flag: 00h if process swapped out, 01h otherwise
- 05h BYTE flag: 00h if allocated in conventional memory, 01h if EMS
- 06h 2 BYTEs ???
- 08h WORD EMS handle if in EMS, else 0
- 0Ah 2 BYTEs ??? (nonzero if system memory resides in shared mem???)
- 0Ch WORD segment of system memory block that contains process record,
- referenced from segment of start of system memory chain
- 0Eh BYTE ???
- 0Fh WORD size of system memory block that contains process record
- and DOS memory in paragraphs
- 11h BYTE bit flags
- Bit 0: Swapped out???
- Bit 1: ???
- Bit 2: Swapped out???
- 12h BYTE ???
- 13h BYTE reference count
- ---v2.31
- 14h 10 BYTEs ???
- 1Eh WORD segment of process record
- 20h 2 BYTEs ???
- 22h WORD segment of ??? (in first free system memory block???)
- 24h WORD segment of end of system memory chain
- 26h WORD segment of start of system memory chain
- 28h 8 BYTEs ???
- 2Ah DWORD pointer to ??? (process record???)
- 2Dh 10 BYTEs ???
- 37h BYTE lowest interrupt vector to save on context switch
- 38h BYTE highest interrupt vector to save on context switch
- 39h WORD offset in common memory of main task with this context
- 3Ah 12 BYTEs ???
- 46h BYTE internal mapping context number
- 47h 12 BYTEs ???
- ---v2.5x-2.60
- 14h 6 BYTEs ???
- 1Ah WORD segment of process record
- 1Ch 2 BYTEs ???
- 1Eh WORD segment of first free system memory block
- 20h WORD segment of start of system memory chain
- 22h WORD segment of end of system memory chain
- 24h 8 BYTEs ???
- 2Ch DWORD pointer to ??? (1 segment into process record???)
- 30h 3 BYTEs ???
- 33h WORD Offset in common memory of main task with this context
- 35h 7 BYTEs ???
- 3Ch BYTE internal mapping context number
- 3Dh 14 BYTEs ???
- 4Bh WORD first DOS memory segment (first MCB segment+1)
- 4Dh BYTE ??? (flag???)
- ---v2.53 (2.5x???)
- 4Eh 12 BYTEs ???
- ---v2.60
- 4Eh WORD segment of script buffer (see #00421)
- 50h 6 BYTEs ???
- Format of DESQview Internal Window Record (v2.31-2.60):
- Offset Size Description (Table 00417)
- 00h BYTE internal window number???
- 01h BYTE display page???
- 02h BYTE video mode
- 03h 3 BYTEs ???
- 06h BYTE logical window height
- 07h BYTE logical window width
- 08h DWORD pointer to text video buffer
- 0Ch 116 BYTEs ???
- Format of DESQview process record (v2.31):
- Offset Size Description (Table 00418)
- -470h 13 BYTEs filename of ??? Script
- -463h 1117 BYTEs ??? (script buffer???)
- -6h 6 BYTEs ???
- 00h WORD segment of parent PSP in process
- 02h 5 BYTEs ???
- 07h WORD segment of current PSP in process
- 09h WORD segment of first MCB in process
- 0Bh 13 BYTEs ???
- 18h 1024 BYTEs process's interrupt vector table
- 418h 376 BYTEs ???
- 590h first MCB in process
- SeeAlso: #00419
- Format of DESQview process record (v2.52-v2.60) (probably also 2.5x):
- Offset Size Description (Table 00419)
- 00h 28 BYTEs EXE header of last EXE, ??? if last program run was COM
- 1Ch ??? BYTEs overwritten with ASCIZ filename of last program run (EXE/COM)
- 11Ch WORD segment of parent PSP in process
- 11Eh 4 BYTEs ???
- 122h WORD segment of current PSP
- 124h WORD segment of current PSP
- 126h WORD segment of first MCB in process
- 128h 4 BYTEs ???
- 12Ch DWORD pointer to first process instance data record in system memory
- 130h DWORD pointer to last process instance data record in system memory
- (from INT 15/AX=DE27h) (see #00420)
- 134h 8 BYTEs ???
- 13Ch WORD size of current environment
- 13Eh WORD segment of current environment
- 140h WORD segment of current PSP
- 142h DWORD entry point of current program
- 146h 10 BYTEs ???
- ---v2.52 (v2.5x???)
- 150h BYTE ???
- 151h WORD segment of parent PSP in process
- 153h WORD ???
- 155h WORD ???
- 157h WORD ???
- 159h 4 BYTEs ???
- 15Dh WORD segment of current environment
- 15Fh WORD segment of current PSP
- 161h WORD segment of ???
- 162h WORD ???
- 164h 3 BYTEs ???
- 168h 1024 BYTEs process's interrupt vector table
- 568h 120 BYTEs ???
- 5E0h first MCB in process
- ---v2.60
- 150h WORD segment of parent PSP in process
- 152h WORD ???
- 154h WORD ???
- 156h WORD ???
- 158h 4 BYTEs ???
- 15Ch WORD segment of current environment
- 15Eh WORD segment of current PSP
- 160h WORD segment of ???
- 162h WORD ???
- 164h 1024 BYTEs process's interrupt vector table
- 564h 108 BYTEs ???
- 5D0h first MCB in process
- SeeAlso: #00418
- Format of DESQview task or process instance data record (v2.5x???, v2.60):
- Offset Size Description (Table 00420)
- 00h DWORD pointer to next record of same type or 00000000
- 04h DWORD pointer to previous record of same type or 00000000
- 08h DWORD pointer to source area of memory during restore state
- 0Ch WORD number of bytes to save/restore
- 0Eh DWORD pointer to destination area of memory during restore state
- 12h WORD ??? (0)
- 14h N BYTEs source memory buffer during restore state
- Format of DESQview script buffer (v2.60):
- Offset Size Description (Table 00421)
- 00h 13 BYTEs ASCIZ Script filename
- 0Dh 80 BYTEs ???
- 5Eh N BYTEs script records (see #00422)
- Format of one DESQview script record (v2.60):
- Offset Size Description (Table 00422)
- 00h BYTE signature 12h
- 01h 18 BYTEs blank-padded script name
- 13h BYTE ASCII code of key attached to script or 0 if non-ASCII key
- 14h BYTE scan code of key attached to script if non-ASCII, else 0
- 15h BYTE ???
- 16h WORD size of script in bytes
- 18h N BYTEs script (ASCII code of each keystroke; if 0, next byte is
- scan code of non-ASCII key)
- SeeAlso: #00421
- Format of DESQview Common Memory Header (v2.31-2.60):
- Offset Size Description (Table 00423)
- 00h WORD offset of lowest used block
- 02h WORD bytes of commom memory, including header
- 04h WORD offset of first free block
- 06h N BYTEs size depends of DV version, ??? (DVP buffer???)
- Note: the above is located at the beginning of the commom memory segment
- SeeAlso: #00424,#00425,#00433
- Format of DESQview Free block header:
- Offset Size Description (Table 00424)
- 00h WORD size of block in bytes including header
- 02h WORD offset of next free block
- 04h N BYTEs free block
- SeeAlso: #00423,#00425
- Format of DESQview Used block header:
- Offset Size Description (Table 00425)
- 00h WORD size of block in bytes including header
- 02h N BYTEs used block
- SeeAlso: #00423,#00424
- --------Q-151017-----------------------------
- INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
- AX = 1017h
- Return: pops up "Programming error" window in DV 2.x
- --------Q-151018-----------------------------
- INT 15 - TopView - "LOCATE" - FIND WINDOW AT A GIVEN SCREEN LOCATION
- AX = 1018h
- BH = column
- BL = row
- ES = segment of object handle for window below which to search
- 0000h = start search with topmost window
- Return: ES = segment of object handle for window which is visible at the
- indicated position, or covered by indicated window
- 0000h if no window
- SeeAlso: AX=1023h,AX=1024h
- --------Q-151019-----------------------------
- INT 15 - TopView - "SOUND" - MAKE TONE
- AX = 1019h
- BX = frequency in Hertz (0000h = silence)
- CX = duration in clock ticks (18.2 ticks/sec)
- Return: immediately, tone continues to completion
- Notes: if another tone is already playing, the new tone does not start until
- completion of the previous one. Up to 32 tones may be queued before
- the process is blocked until a note completes.
- in DV 2.00, the lowest tone allowed is 20 Hz
- if CX = 0, the current note is cancelled; if BX = 0 as well, all queued
- notes are also cancelled
- SeeAlso: AH=82h"HUNTER",INT 16/AH=73h
- --------Q-15101A-----------------------------
- INT 15 - TopView - "OSTACK" - SWITCH TO TASK'S INTERNAL STACK
- AX = 101Ah
- Return: stack switched
- Notes: this call may not be nested; a second call must be preceded by a call
- to "USTACK" (AX=1025h)
- while TopView requires many API calls to be executed while on the
- task's internal stack, DESQview allows those calls to be executed
- regardless of the current stack
- SeeAlso: AX=1025h
- --------Q-15101B-----------------------------
- INT 15 - TopView - "BEGINC" - BEGIN CRITICAL REGION
- AX = 101Bh
- Return: task-switching temporarily disabled
- Notes: will not task-switch until "ENDC" (AX = 101Ch) called unless task
- voluntarily releases the CPU (upon regaining the CPU, task-switching
- will again be disabled)
- suspends the caller until DOS is free
- SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AX=DE13h,AX=DE1Ch,INT 2F/AX=1681h
- SeeAlso: INT 60/DI=0602h
- --------Q-15101C-----------------------------
- INT 15 - TopView - "ENDC" - END CRITICAL REGION
- AX = 101Ch
- Return: task-switching enabled
- Note: this API call may be made from within a hardware interrupt handler
- SeeAlso: AX=101Bh,AX=DE13h,AX=DE1Bh,INT 2F/AX=1682h,INT 60/DI=0603h
- --------Q-15101D-----------------------------
- INT 15 - TopView - "STOP" - STOP TASK
- AX = 101Dh
- ES = segment of object handle for task to be stopped
- (== handle of main window for that task)
- Return: indicated task will not get any CPU time until restarted with AX=101Eh
- Note: once a task has been stopped, additional "STOP"s are ignored
- BUG: in DV 2.00, this function is ignored unless the indicated task is the
- current task
- SeeAlso: AX=101Eh,AX=102Bh,AH=12h"VMiX",INT 21/AH=81h
- --------Q-15101E-----------------------------
- INT 15 - TopView - "START" - START TASK
- AX = 101Eh
- ES = segment of object handle for task to be started
- (== handle of main window for that task)
- Return: indicated task is started up again
- Note: once a task has been started, additional "START"s are ignored
- SeeAlso: AX=101Dh,AX=102Bh,INT 21/AH=82h
- --------Q-15101F-----------------------------
- INT 15 - TopView - "DISPEROR" - POP-UP ERROR WINDOW
- AX = 101Fh
- BX = bit fields
- bits 0-12: number of characters to display
- bits 13,14: which mouse button may be pressed to remove window
- 00 = either
- 01 = left
- 10 = right
- 11 = either
- bit 15: beep if 1
- ES:DI -> text of message
- CH = width of error window (0 = default)
- CL = height of error window (0 = default)
- DX = segment of object handle
- Return: BX = status: 1 = left button, 2 = right, 27 = ESC pressed
- Note: window remains on-screen until ESC or indicated mouse button is pressed
- --------Q-151020-----------------------------
- INT 15 - TopView - UNIMPLEMENTED IN DV v2.00+
- AX = 1020h
- Return: pops up "Programming error" window in DV v2.00+
- --------Q-151021-----------------------------
- INT 15 - TopView - "PGMINT" - INTERRUPT ANOTHER TASK
- AX = 1021h
- BX = segment of object handle for task to interrupt (not self)
- DX:CX -> FAR routine to jump to next time task is run
- Return: nothing
- Notes: the FAR routine is entered with the current ES, DS, SI, DI, and BP
- values, using the task's internal stack (see AX=101Ah); only SS:SP
- needs to be preserved
- multiple PGMINTs to a single task are processed last-in first-out
- if the other task is in a DOS or DV API call, the interruption will
- occur on return from that call
- --------Q-151022BX0000-----------------------
- INT 15 - TopView - "GETVER" - GET VERSION
- AX = 1022h
- BX = 0000h
- Return: BX nonzero, TopView or compatible loaded
- (BL = major version, BH = minor version)
- Notes: TaskView returns BX = 0001h, DESQview v2.00+ returns BX = 0A01h
- --------Q-151023-----------------------------
- INT 15 - TopView - "POSWIN" - POSITION WINDOW
- AX = 1023h
- BX = segment of object handle for parent window within which to
- position the window (0 = full screen)
- ES = segment of object handle for window to be positioned
- DL = general window position (see #00426)
- CH = number of columns to offset from position specified by DL
- CL = number of rows to offset from position specified by DL
- Return: nothing
- Bitfields for TopView general window position:
- Bit(s) Description (Table 00426)
- 0,1 horizontal position
- 00 = current, 01 = center, 10 = left, 11 = right
- 2,3 vertical position
- 00 = current, 01 = center, 10 = top, 11 = bottom
- 4 don't redraw screen if set
- 5-7 not used
- --------Q-151024-----------------------------
- INT 15 - TopView - "GETBUF" - GET VIRTUAL SCREEN INFO
- AX = 1024h
- BX = segment of object handle for window (0000h = use default)
- Return: ES:DI -> virtual screen
- CX = size of virtual screen in bytes
- DL = screen type
- 00h text screen
- 01h graphics screen
- SeeAlso: INT 10/AH=FEh,INT 21/AH=2Bh/CX=4445h
- --------Q-151025-----------------------------
- INT 15 - TopView - "USTACK" - SWITCH BACK TO USER'S STACK
- AX = 1025h
- Return: stack switched back
- Notes: call only after having switched to internal stack with AX=101Ah
- while TopView requires many API calls to be executed while on the
- task's private stack, DESQview allows those calls to be executed
- regardless of the current stack
- SeeAlso: AX=101Ah
- --------Q-1510-------------------------------
- INT 15 - DESQview (TopView???) - UNIMPLEMENTED IN DV 2.x
- AH = 10h
- AL = 26h thru 2Ah
- Return: pops up "Programming error" window in DV 2.x
- --------Q-15102B-----------------------------
- INT 15 - DESQview v2.00+ (TopView???) - "POSTTASK" - AWAKEN TASK
- AX = 102Bh
- BX = segment of object handle for task
- Return: nothing
- Note: forces a task which is waiting on its objectq to continue by placing
- the handle for the task on the objectq
- SeeAlso: AX=101Dh,AX=101Eh,INT 21/AH=82h
- --------Q-15102C-----------------------------
- INT 15 - DESQview v2.00+ - "NEWPROC" - START NEW APPLICATION IN NEW PROCESS
- AX = 102Ch
- ES:DI -> contents of .PIF/.DVP file (see #00427)
- BX = size of .PIF/.DVP info
- Return: BX = segment of object handle for new task
- 0000h on error
- SeeAlso: AX=DE24h,INT 21/AH=4Bh
- Format of .PIF/.DVP file:
- Offset Size Description (Table 00427)
- 00h BYTE reserved (0)
- 01h BYTE checksum of bytes 02h through 170h
- 02h 30 BYTEs blank-padded program title
- 20h WORD maximum memory to allocate to partition in KB
- 22h WORD minimum memory required in KB
- 24h 64 BYTEs ASCIZ program pathname
- 64h BYTE default drive letter ('A',...)
- 65h 64 BYTEs ASCIZ default directory name
- A5h 64 BYTEs ASCIZ program parameters
- E5h BYTE initial screen mode (0-7) (also see offset 189h)
- E6h BYTE number of text pages used
- E7h BYTE number of first interrupt to save
- E8h BYTE number of last interrupt to save
- E9h BYTE rows in virtual screen buffer
- EAh BYTE columns in virtual screen buffer
- EBh BYTE initial window position, row
- ECh BYTE initial window position, column
- EDh WORD system memory in KB
- EFh 64 BYTEs ASCIZ shared program name
- 12Fh 64 BYTEs ASCIZ shared program data file
- 16Fh BYTE program flags 1 (see #00428)
- 170h BYTE flags2
- bit 6: uses command-line parameters in field at A5h
- bit 5: swaps interrupt vectors
- ---information unique to .DVP files---
- 171h 2 BYTEs keys to use on open menu
- 173h WORD size of script buffer in bytes
- 175h WORD automatically give up CPU after this many tests for keyboard
- input in one clock tick (default 0 = never)
- 177h BYTE nonzero = "uses own colors"
- 178h BYTE nonzero if application swappable
- 179h 3 BYTEs reserved (0) according to Quarterdeck documentation
- in actual .DVP files, frequently 01h
- 17Ch BYTE nonzero to automatically close on exit (see also #00430)
- 17Dh BYTE nonzero if copy-protect floppy is required
- ---information unique to DESQview 2.0+---
- 17Eh BYTE .DVP version number
- 00h DESQview v1.2+
- 01h DESQview v2.0+
- 02h DESQview v2.2+
- 17Fh BYTE reserved (0)
- 180h BYTE initial number of rows in physical window
- 181h BYTE initial number of columns in physical window
- 182h WORD maximum expanded memory to allow, in KB
- 184h BYTE DVP program flags 3 (see #00429)
- 185h BYTE keyboard conflict level (0-4 for DV<2.26, 00h-0Fh for DV2.26+)
- (see #00431)
- 186h BYTE number of graphics pages used
- 187h WORD extra system memory size
- 189h BYTE initial screen mode (FFh = default) (overrides offset E5h)
- ---information unique to DESQview 2.2+---
- 18Ah BYTE serial port usage
- FFh uses all serial ports
- 00h no serial ports
- 01h only COM1
- 02h only COM2
- 18Bh BYTE DVP program flags 4 (see #00430)
- 18Ch BYTE protection level for 386 machines
- 18Dh 19 BYTEs reserved (0) for regular DESQview
- ---information unique to DESQview/X 1.0---
- 18Dh BYTE X flags
- bits 3-7: unused (0)
- bit 2: don't display wait message when opening window
- bit 1: don't display DOS window
- bit 0: (XNEWPROC) use DOS client layer (DOS-to-X)
- (NEWPROC) inherit DOS client layer usage
- 18Eh BYTE X keyboard behavior (0-3)
- 18Fh BYTE font scaling
- 00h fixed fonts
- 01h scalable fonts
- 190h 10 BYTEs reserved (0)
- 19Ah WORD length of data follownig XDVP signature
- 19Ch 4 BYTEs signature "XDVP"
- 1A0h N BYTEs list of variable length records (see #00432)
- Bitfields for .PIF/.DVP program flags 1:
- Bit(s) Description (Table 00428)
- 7 writes text directly to screen
- 6 runs in foreground only (see also #00427 offset 184h)
- 5 uses math coprocessor
- 4 accesses system keyboard buffer directly
- 3-1 reserved (0)
- 0 swappable
- SeeAlso: #00427,#00429,#00430
- Bitfields for .DVP program flags 3:
- Bit(s) Description (Table 00429)
- 7 automatically assign window position
- 5 maximum memory value has been specified
- 4 disallow "Close" command
- 3 foreground-only when doing graphics
- set by DV 2.3+ when "Runs in Background" = "D" (undoc)
- 2 don't virtualize (see also #00430)
- 1 foreground-only during DOS calls
- set by DV 2.3+ when "Runs in Background" = "D" (undoc)
- SeeAlso: #00427,#00428,#00430
- Bitfields for .DVP program flags 4:
- Bit(s) Description (Table 00430)
- 7 automatically close application on exit if .COM or .EXE specified
- (see also #00427 offset 17Ch)
- 6 swappable if not using serial ports
- 5 start program with window hidden (v2.26+)
- 4 start program in background (v2.26+)
- 3 virtualize text (see also #00429)
- 2 virtualize graphics (see also #00429)
- 1 share CPU when foreground
- 0 share EGA when foreground and zoomed
- SeeAlso: #00427,#00428,#00429
- Bitfields for DESQview keyboard conflict level:
- Bit(s) Description (Table 00431)
- 3 save/restore entire INT 09 handler state every taskswtch
- 2 take special precautions for programs which read the BIOS keyboard
- buffer directly from memory
- 1 never indicate keystroke available during scripts/xfers
- 0 only indicate keystroke available every sixth poll
- SeeAlso: #00427
- Format of DESQview/X variable length record:
- Offset Size Description (Table 00432)
- 00h WORD length of following record, 0000h if end of record list
- 02h BYTE record type
- 01h script filename, up to 64 characters
- 02h command-line parameters (allows >64 characters on cmdline)
- 03h environment inheritance
- 04h environment string
- 05h starting window position
- ---types 01h,02h,04h---
- 03h N BYTEs ASCII data
- ---type 03h---
- 03h BYTE inheritance
- 00h do not inherit
- 01h inherit environment
- ---type 05h---
- 03h N BYTEs ASCII copy of fields as typed into DVPMAN, separated by commas:
- starting row, starting column, starting height, starting width
- Note: if there are multiple occurrences of record types 01h, 02h, or 03h,
- only the last instance of each type is used; multiple occurrences of
- type 04h are concatenated
- SeeAlso: #00427
- --------Q-15102D-----------------------------
- INT 15 - DESQview v2.00+ - "KMOUSE" - KEYBOARD MOUSE CONTROL
- AX = 102Dh
- BL = subfunction
- 00h determine whether using keyboard mouse
- Return: BL = 00h using real mouse
- 01h using keyboard mouse
- 01h turn keyboard mouse on
- 02h turn keyboard mouse off
- SeeAlso: INT 33/AX=0024h
- --------Q-15102E-----------------------------
- INT 15 - DESQview v2.40+ - ALLOCATE SYSTEM MEMORY
- AX = 102Eh
- BX = number of bytes
- Return: AX = status
- 0000h successful
- ES:DI -> allocated system memory (see #00433)
- 0001h failed
- ES:DI = 0000h:0000h
- Note: under DV 2.42, this call is identical to AX=1001h
- SeeAlso: AX=1001h,AX=1002h,AX=DE0Ch
- Format of DESQview system memory block header:
- Offset Size Description (Table 00433)
- 00h WORD segment of next header or 0000h
- 02h WORD segment of previous header or 0000h
- 04h WORD size of block in paragraphs, including header
- 06h BYTE availability flag (00h in use, 01h free)
- Note: this header is located one paragraph before the memory block proper
- SeeAlso: #00423
- --------Q-1511-------------------------------
- INT 15 - TopView commands
- AH = 11h
- AL = various (except 17h)
- Return: varies by function
- Note: in DESQview 2.x, these function calls are identical to AH=DEh, so
- see those below
- SeeAlso: AX=DE00h,AX=DE22h,AX=DE30h
- --------T-1511-------------------------------
- INT 15 - VMiX - "sys_system" - EXECUTE SHELL SYSTEM COMMANDS
- AH = 11h
- STACK: DWORD pointer to ASCIZ string containing a VMiX shell
- request (max len = 127)
- Return: AX = status (SYS_OK or SYS_ERROR)
- SeeAlso: AH=0Ch"VMiX"
- --------T-1511-------------------------------
- INT 15 - MultiDOS Plus - TURN OFF AltZ TOGGLE
- AH = 11h
- Note: disables the Alt-Z MultiDOS command/program-selection hotkey
- SeeAlso: AH=12h"MultiDOS"
- Index: hotkeys;MultiDOS Plus
- --------Q-151117BX0000-----------------------
- INT 15 - DESQview v2.20+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
- AX = 1117h
- BX = 0000h get current mapping context without setting
- nonzero set new mapping context
- Return: BX = mapping context in effect before call
- interrupts enabled
- Notes: this function differs from AX = DE17h for DESQview v2.20 through 2.25
- mapping contexts determine conventional-memory addressability; setting
- a mapping context ensures that the associated program and data areas
- are in memory for access. Usable by drivers, TSRs and shared
- programs.
- caller need not be running under DESQview, but must ensure that the
- stack in use will not be mapped out by the call
- SeeAlso: AX=DE17h,INT 2F/AX=1685h
- --------m-1511DE-----------------------------
- INT 15 - DESQview - QEXT.SYS - INSTALLATION CHECK
- AX = 11DEh
- Return: CF clear if installed
- AX = segment at which QEXT.SYS is located
- Desc: QEXT.SYS is Quarterdeck's HMA manager for DESQview; more recent
- versions also implement the XMS standard
- Note: a private entry point (see #00434) may be found by searching the
- beginning of the returned segment for the signature string
- "QUARTERDECK EXTENDED MEMORY MANAGER 286"; the word immediately
- prior to the signature contains the QEXT version number in BCD,
- and the word prior to that contains the offset within the QEXT
- code segment of the private entry point
- SeeAlso: INT 2F/AX=4310h"XMS",INT 67/AH=3Fh
- (Table 00434)
- Call QEXT.SYS private entry point with:
- AH = 00h ???
- AH = nonzero ???
- --------T-1512-------------------------------
- INT 15 - VMiX - "sys_sleep" - PUT PROCESS TO SLEEP
- AH = 12h
- STACK: WORD process ID
- Return: AX = status (SYS_OK or SYS_ERROR)
- SeeAlso: AH=03h"MultiDOS",AX=101Dh,AH=13h"VMiX"
- --------T-1512-------------------------------
- INT 15 - MultiDOS Plus - TURN ON AltZ TOGGLE
- AH = 12h
- Note: enables the Alt-Z MultiDOS command/program-selection hotkey
- SeeAlso: AH=11h"MultiDOS"
- Index: hotkeys;MultiDOS Plus
- --------Q-1512--BH00-------------------------
- INT 15 - TopView - SEND MESSAGE - "HANDLE" - RETURN OBJECT HANDLE
- AH = 12h
- BH = 00h
- BL = which handle to return
- 00h handle in DWORD on top of stack
- 01h current task's window handle
- 02h given task's mailbox handle (task's handle on stack)
- 03h current task's mailbox handle
- 04h given task's keyboard handle (task's handle on stack)
- 05h current task's keyboard object handle
- 06h given task's OBJECTQ handle (task's handle on stack)
- 07h current task's OBJECTQ handle
- 08h \
- thru > return 0000:0000 under DV < 2.26
- 10h /
- 0Ch (2.26+) task owning object with handle in DWORD on top of stack
- 0Dh (2.26+) task handle of owner (parent) of current task
- Return: DWORD on top of stack is object handle
- Note: BL=0Ch,0Dh returns 00000000h if the object is not open (keyboard,
- mailbox, panel, pointer, and timer objects) or is an orphan (task,
- window)
- SeeAlso: AH=12h/BH=02h,AH=12h/BH=80h
- --------Q-1512--BH01-------------------------
- INT 15 - TopView - SEND MESSAGE - "NEW" - CREATE NEW OBJECT
- AH = 12h
- BH = 01h
- BL = object type to create (see #00435)
- STACK: (only if window object or WINDOW class)
- DWORD address to jump to (no new task if high word == 0)
- DWORD (reserved) 0 = non-task window, FFFFh = task window
- DWORD bytes for task's private stack (FFFFh == default of 0100h)
- DWORD bytes system memory for input buffer for READ/READN
- (0 == none, -1 == default--same as logical window size)
- DWORD window size, columns
- DWORD window size, rows
- DWORD length of window title
- DWORD address of window title
- Return: DWORD on top of stack is new object handle
- Notes: if a new task is created, it is started with
- AX = BX = SI = DI = BP = 0
- DX:CX = handle of parent task
- DS = ES = SS = segment of private stack (and new task's handle)
- new windows are orphans, inherit the colors/hidden status of the
- creating task's window, and are placed in the upper left hand corner
- of the screen but not automatically redrawn
- new keyboards are closed, and have all object bits cleared except for
- the hardware cursor bit
- SeeAlso: AH=12h/BH=02h,AH=12h/BH=81h
- (Table 00435)
- Values for TopView/DESQview object type (for creation):
- 00h (DV 2.0x only) handle is DWORD on top of stack
- 01h (DV 2.0x only) use task's window handle
- 02h (DV 2.0x only) given task's mailbox (task's handle on stack)
- 03h (DV 2.0x only) current task's mailbox
- 04h (DV 2.0x only) given task's keyboard (task's handle on stack)
- 05h (DV 2.0x only) current task's keyboard object
- 08h WINDOW class
- 09h MAILBOX class
- 0Ah KEYBOARD class
- 0Bh TIMER object (counts down 32-bit time in 10ms increments)
- 0Fh POINTER object
- 10h PANEL object
- --------Q-1512--BH02-------------------------
- INT 15 - TopView - SEND MESSAGE - "FREE" - FREE AN OBJECT
- AH = 12h
- BH = 02h
- BL = object
- 00h handle in DWORD on top of stack
- window: close window and free
- timer: free timer
- panel: free panel object
- pointer: free pointer
- 01h task's window handle - kills task, never returns
- 02h given task's mailbox (task's handle on top of stack)
- 03h current task's mailbox
- 04h given task's keyboard (task's handle on top of stack)
- 05h current task's keyboard object
- Return: STACK popped if handle passed on stack
- Notes: when a window is freed, its keyboard and pointer objects are freed;
- task windows also free any mailbox, objectq, and panel objects held
- by the task and any child tasks
- if the keyboard being freed is the default keyboard for a task, this
- call is equivalent to CLOSE
- panel and pointer objects are automatically closed if open
- SeeAlso: AH=12h/BH=01h,AH=12h/BH=0Dh,AH=12h/BH=82h
- --------Q-1512--BH03-------------------------
- INT 15 - TopView - SEND MESSAGE - "ADDR" - GET HANDLE OF MESSAGE SENDER
- AH = 12h
- BH = 03h
- BL = object
- 00h mailbox handle in DWORD on top of stack
- 02h sender of last msg read from mailbox (task's handle on stack)
- 03h sender of last msg read from current task's mailbox
- Return: DWORD on stack is task handle of message sender
- SeeAlso: AH=12h/BH=00h,AH=12h/BH=83h
- --------Q-1512--BH03-------------------------
- INT 15 - DESQview v2.26+ - "CONNECT" - CONNECT TWO WINDOWS
- AH = 12h
- BH = 03h
- BL = window to be connected
- 00h handle of window to be attached in DWORD on top of stack
- 01h attach current task's main window
- STACK: DWORD handle of window to attach to or 00000000h to detach
- Return: STACK popped
- Notes: when two windows are connected, both will move if the user moves either
- multiple windows may be attached to a single window, but each window
- may only be attached to one window at a time
- SeeAlso: AH=12h/BH=83h
- --------Q-1512--BX0300-----------------------
- INT 15 - TopView - SEND MESSAGE - "DIR" - GET PANEL FILE DIRECTORY
- AH = 12h
- BX = 0300h
- STACK: DWORD handle of panel object (see #00436)
- Return: STACK: DWORD length of directory (always multiple of 14 bytes)
- DWORD address of directory
- Note: a null string is returned if the object is not open
- SeeAlso: AH=12h/BX=0400h"APPLY",AH=12h/BH=83h
- Format of TopView panel file:
- Offset Size Description (Table 00436)
- 00h 2 BYTEs C0h C3h
- 02h BYTE number of panels in file
- 03h for each panel in file:
- 8 BYTEs blank-padded panel name
- DWORD panel offset in file
- WORD panel length
- data for panels (each consists of one or more window/query/manager
- streams); first byte of each panel must be 1Bh, fifth byte must be
- E5h
- --------Q-1512--BH04-------------------------
- INT 15 - TopView - SEND MESSAGE - "READ" - READ NEXT LOGICAL LINE OF WINDOW
- AH = 12h
- BH = 04h
- BL = window to read from
- 00h handle is DWORD on top of stack
- 01h use calling task's default window
- 0Ch (DV 2.26+) default window of task owning handle on top of stack
- 0Dh (DV 2.26+) default window of parent task of current task
- Return: STACK: DWORD number of bytes read
- DWORD address of buffer
- Notes: reading starts at the current logical cursor position; the cursor is
- updated to point at the character following the last one read
- any translucent blanks (FFh) which are visible on screen are changed
- to the character which is seen through them
- the string produced by the read is placed in an input buffer which may
- be reused by the next READ or READN of a window
- window stream opcodes D8h and D9h determine whether the read returns
- characters or attributes
- SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=12h,AH=12h/BH=84h
- --------Q-1512--BH04-------------------------
- INT 15 - TopView - SEND MESSAGE - "READ" - GET NEXT RECORD FROM OBJECT
- AH = 12h
- BH = 04h
- BL = object
- 00h handle is DWORD on top of stack
- mailbox: wait for and get next message
- keyboard: wait for and get pointer to next input buffer
- pointer: wait for and get next message
- 02h get next message from mailbox (task's handle on top of stack)
- 03h get next message from current task's mailbox
- 04h get the next input from keyboard (handle on top of stack)
- 05h get the next input from task's default keyboard
- 06h wait for input from any object in OBJECTQ (handle on stack)
- 07h wait for input from any object in task's default OBJECTQ
- Return: STACK: (if objectq) DWORD handle of object with input
- (otherwise) DWORD number of bytes
- DWORD address of pointer message (see #00437)
- Notes: for a keyboard in keystroke mode, the input buffer is a single byte
- containing the character code as returned by the BIOS; the BIOS scan
- code is available via the STATUS call if the character is zero
- for a keyboard in field mode, the input buffer format is determined
- by the field table header for the window the keyboard is attached to
- keyboard input buffers and mailbox message buffers may be invalidated
- by the next READ, ERASE, CLOSE, or FREE message to the same object
- SeeAlso: AH=12h/BH=05h"OBJECT",AH=12h/BH=84h
- Format of DESQview pointer message:
- Offset Size Description (Table 00437)
- 00h WORD row
- 02h WORD column
- 04h BYTE status (see #00438)
- 05h BYTE field number or zero (APILEVEL >= 2.00 only)
- Bitfields for DESQview pointer status:
- Bit(s) Description (Table 00438)
- 7-2 number of clicks-1 if multiple-click mode active
- 7 set when press/release mode active and button pressed
- 6 set when press/release mode active and button released
- 1-0 button pressed (00=none,01=button1,10=button2)
- SeeAlso: #00437
- --------Q-1512--BX0400-----------------------
- INT 15 - TopView - SEND MESSAGE - "READ" - WAIT FOR TIMER TO EXPIRE
- AH = 12h
- BX = 0400h
- STACK: DWORD timer's handle
- Return: after timer expires
- STACK: DWORD time in 1/100 sec after midnight when timer expired
- SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=84h
- --------Q-1512--BX0400-----------------------
- INT 15 - TopView - SEND MESSAGE - "APPLY" - WRITE PANEL TO WINDOW
- AH = 12h
- BX = 0400h
- STACK: DWORD handle of panel object
- DWORD window's handle (or 0 for current task's window)
- DWORD length of panel name
- DWORD pointer to panel name
- Return: STACK: DWORD handle of window which was used
- DWORD handle of keyboard or 0
- Notes: status of APPLY may be checked with STATUS message
- panel MUST have the following format
- first byte must be 1Bh (i.e. must start with a stream)
- first opcode in stream must be E5h
- single byte arg of opcode is interpreted thus:
- bits 7,6 11 means create new window
- 10 means create new field table for existing window
- 01 means use existing window and field table
- bit 5 if set, panel contains a field table
- (creates a new keyboard and puts it in field mode)
- bit 4 if set, panel contains input fields
- bit 3 if set, panel contains select fields but no input fields
- if the panel contains input or select fields, a keyboard handle is
- returned; either the window's current open keyboard or a
- newly-created keyboard object. The caller should read that keyboard
- to obtain input from the panel.
- SeeAlso: AH=12h/BH=84h
- --------Q-1512--BH05------------------------
- INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE TO OBJECT
- AH = 12h
- BH = 05h
- BL = object
- 00h handle is DWORD on top of stack
- timer: start timer to end at a specified time
- keyboard: add input buffer to queue
- pointer: move pointer icon to specified position
- 02h send message by value/status=0 to mbox (task's handle on stack)
- 03h send message by value/status=0 to current task's mailbox
- 04h add input buffer to KEYBOARD queue (handle on top of stack)
- 05h add input buffer to task's default KEYBOARD queue
- 06h add an object to OBJECTQ (handle on top of stack)
- 07h add an object to task's default OBJECTQ
- STACK: (if mailbox) DWORD length
- DWORD address
- (if keyboard) DWORD status (scan code in keystroke mode)
- DWORD length (should be 1 in keystroke mode)
- DWORD address
- (if objectq) DWORD handle of object to add
- (if timer) DWORD 1/100ths seconds since midnight (actually
- only accurate to 1/18 sec)
- (if pointer) DWORD column relative to origin of window
- DWORD row relative to origin of window
- Return: STACK popped
- Notes: under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
- the data and status written to a keyboard object must match the format
- returned by the keyboard object in the current mode
- the pointer position is scaled according to the current scaling factors
- SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
- --------Q-1512--BH05-------------------------
- INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE STRING TO WINDOW
- AH = 12h
- BH = 05h
- BL = window to write to
- 00h DWORD on top of stack is window handle
- 01h write string to task's default window
- 0Ch (DV 2.26+) default window of task owning handle on top of stack
- 0Dh (DV 2.26+) default window of parent of current task
- STACK: DWORD object handle if handle passed on stack
- DWORD total length of string (high word == 0)
- DWORD address of string to display (see #00439)
- Return: indicated actions performed
- a. non-control characters are displayed (opcodes DEh and DFh control
- whether the attributes are left or changed to the current attrib)
- b. CR/LF/BS/Tab cause the usual cursor movement
- c. ESC starts a data structure with additional commands if following
- byte is less than 20h; otherwise, it is written to the window
- STACK: DWORD handle of new window if window stream opcode E6h
- else nothing (arguments have been popped)
- SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
- Format of stream data structure:
- Offset Size Description (Table 00439)
- 00h BYTE 1Bh magic value identifying start of stream
- 01h BYTE stream type (00h, 01h, 10h, 14h-1Fh legal)
- (see #00440,#00446,#00447,#00448)
- 02h WORD length of remainder of stream in bytes
- var-length fields follow, each an OPCODE followed by
- zero or more args
- (Table 00440)
- Values for MODE 00h (set or display values) "WINDOW STREAM" opcodes:
- Opcodes:args
- 00h display 20h blanks with the default attribute
- 01h-1Fh display OPCODE blanks with the default attribute
- 20h display char with default attribute 20h times
- BYTE char to repeat
- 21h-3Fh display char with default attribute OPCODE-20h times
- BYTE char to repeat
- 40h display 20h blanks with specified attribute
- BYTE attribute of blanks
- 41h-5Fh display OPCODE-40h blanks with specified attribute
- BYTE attribute of blanks
- 60h display next 20h characters
- 20h BYTEs characters to display
- 61h-7Fh display next OPCODE-60h characters
- N BYTEs characters to display
- 80h-87h display N blanks with default attribute
- BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
- [000h means 800h]
- 88h-8Fh display N copies of the character
- BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
- [000h means 800h]
- BYTE character to repeat
- 90h-97h display N blanks with specified attribute
- BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
- [000h means 800h]
- BYTE attribute
- 98h-9Fh display string at logical cursor pos
- BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
- [000h means 800h]
- N BYTEs string to display
- A0h set logical cursor row
- BYTE row number (0 is top)
- A1h set logical cursor column
- BYTE column number (0 is leftmost)
- A2h set top edge of scrolling region
- BYTE row
- A3h set left edge of scrolling region
- BYTE column
- A4h set row of physical window position
- BYTE line
- A5h set column of physical window position
- BYTE column
- A6h set height of physical window
- BYTE number of rows
- A7h set width of physical window
- BYTE number of columns
- A8h set viewport row
- BYTE row
- A9h set viewport column
- BYTE column
- AAh set virtual screen height [contents of window unpredictable after]
- BYTE rows
- ABh set virtual screen width [contents of window unpredictable after]
- BYTE columns
- ACh-AEh unused
- AFh set compatible/preferred video modes
- BYTE compatibility/preference mask
- bit 7 compatible with monochrome
- bit 6 compatible with color text, EGA/VGA graphics
- bit 5 compatible with medium-resolution CGA graphics
- bit 4 compatible with high-resolution CGA graphics
- bit 3 prefer monochrome
- bit 2 prefer color text, EGA/VGA graphics
- bit 1 prefer medium-resolution CGA graphics
- bit 0 prefer high-resolution CGA graphics
- B0h move logical cursor down
- BYTE number of rows (signed, negative values move up)
- [if rows=0 and hardware cursor owner, update hardware cursor]
- B1h move logical cursor right
- BYTE number of columns (signed, negative values move left)
- [if cols=0 and hardware cursor owner, update hardware cursor]
- B2h shift top edge of scrolling region
- BYTE number of rows (signed)
- B3h shift left edge of scrolling region
- BYTE number of columns (signed)
- B4h shift physical window down
- BYTE number of lines (signed)
- B5h shift physical window right
- BYTE number of columns (signed)
- B6h expand physical window vertically
- BYTE number of lines (signed)
- B7h expand physical window horizontally
- BYTE number of columns (signed)
- B8h adjust viewport row
- BYTE number of rows (signed)
- B9h adjust viewport column
- BYTE number of columns (signed)
- BAh adjust virtual screen height [contents of window unpredict after]
- BYTE number of rows to increase (signed)
- BBh adjust virtual screen width [contents of window unpredictbl after]
- BYTE number of columns to increase (signed)
- BCh-BFh reserved (currently unused)
- C0h set logical cursor position
- BYTE row number (0 is top border)
- BYTE column number (0 is left border)
- C1h set top left corner of scrolling region
- BYTE row
- BYTE column
- C2h set physical window pos
- BYTE upper left row (no top border if 0)
- BYTE upper left column (no left border if 0)
- C3h set current window size
- BYTE number of rows
- BYTE number of columns
- C4h set upper left corner of viewport (portion of virtual screen displayed
- in window)
- BYTE row
- BYTE column
- C5h set size of virtual screen [contents unpredictable afterwards]
- BYTE number of rows
- BYTE number of columns
- C6h unused
- C7h unused
- C8h set logical cursor relative to current position
- BYTE number of rows to move down (signed)
- BYTE number of columns to move right (signed)
- [if rows=cols=0 and hardware cursor owner, update hardw cursor]
- C9h shift top left corner of scrolling region
- BYTE number of rows (signed)
- BYTE number of columns (signed)
- CAh set window pos relative to current position
- BYTE number of rows to shift down (signed)
- BYTE number of columns to shift right (signed)
- CBh set window size relative to current size
- BYTE number of rows to expand (signed)
- BYTE number of cols to expand (signed)
- CCh shift viewport relative to current position
- BYTE rows to shift (signed)
- BYTE cols to shift (signed)
- CDh resize virtual screen
- BYTE number of rows to expand (signed)
- BYTE number of columns to expand (signed)
- CEh scroll text when using E8h-EBh/F8h-FBh opcodes (default)
- CFh scroll attributes when using E8h-EBh/F8h-FBh opcodes
- D0h allow window frame to extend beyond screen
- D1h always display a complete frame, even if window extends beyond edge of
- screen
- D2h allow DV to change logical colors on video mode switch (default)
- D3h application changes logical attributes
- D4h window is visible [must redraw to actually make visible]
- D5h window is hidden [must redraw to actually remove]
- D6h window has frame (default)
- D7h window unframed [must redraw to actually remove frame]
- D8h READ/READN will read characters from window (default)
- D9h READ/READN will read attributes from window
- DAh use logical attributes, which may be remapped (see #00441)
- DBh use physical attributes for characters
- DCh enable special actions for control characters (default)
- DDh disable special control char handling, all chars displayable by BIOS TTY
- call
- DEh write both character and attribute (default)
- DFh write character only, leave attribute untouched
- E0h repeat following commands through E1h opcode
- BYTE number of times to repeat (00h means 256 times)
- E1h end of commands to repeat, start repeating them
- E2h set current output color
- BYTE color
- E3h clear virtual screen from scroll origin to end using current color
- E4h redraw window
- E5h select menu style
- BYTE style (normally 18h)
- bits 5,4 = 01 use two-letter menu entries for remainder of
- this stream
- E5h (panel file only)
- BYTE modifier
- bits 7,6 = 11 panel stream creates new window
- = 10 panel defines new field table for existing window
- = 01 panel stream uses existing window & field table
- bit 5 = 1 stream contains a field table (create kyboard object)
- bit 4 = 1 stream defines input fields (create keyboard object)
- bit 3 = 1 stream defines select fields but not input fields
- bit 2 = 1 stream defines exclusive input window (DV 2.2)
- bit 1 reserved
- bit 0 reserved
- E6h create new window and perform rest of manipulations in new window
- BYTE number of rows
- BYTE number of columns
- Return: DWORD object handle of new window returned on stack at end
- Note: the window is created with a physical size of 0x0 at the
- same position as the window to which this stream was sent
- E7h no operation
- E8h scroll area up (top left corner defined by opcode C1h)
- BYTE height
- BYTE width
- E9h scroll area down (top left corner defined by opcode C1h)
- BYTE height
- BYTE width
- EAh scroll area left (top left corner defined by opcode C1h)
- BYTE height
- BYTE width
- EBh scroll area right (top left corner defined by opcode C1h)
- BYTE height
- BYTE width
- ECh set logical attributes for window contents
- BYTE video modes command applies to
- bit 7 monochrome
- bit 6 color text, EGA/VGA graphics
- bit 5 medium-resolution CGA graphics
- bit 4 high-resolution CGA graphics
- BYTE which attributes to set
- bit 7 if set, copy single following byte to indicated attribs
- bits 4-6 number of first attribute to change - 1
- bits 0-3 number of consecutive attributes to change
- N BYTEs new attributes
- EDh set logical attributes for window frame
- BYTE video modes command applies to (also see opcode ECh)
- BYTE which attributes to set
- bit 7 if set, copy single following byte to indicated attrs
- bits 4-6 number of first attribute to change - 1
- bits 0-3 number of consecutive attributes to change
- N BYTEs new attributes
- attributes
- 1 = top left corner
- 2 = top right corner
- 3 = bottom left corner
- 4 = bottom right corner
- 5 = top edge
- 6 = bottom edge
- 7 = left edge
- 8 = right edge
- EEh set characters for window frame
- BYTE video modes command applies to (also see opcode ECh)
- BYTE which characters to set
- bit 7 if set, copy single following byte to indicated chars
- bits 4-6 number of first character to change - 1
- bits 0-3 number of consecutive characters to change
- N BYTEs new chars (same relative position as attributes above)
- EFh set window name
- BYTE length of name (should be in range 0 to logical screen width)
- N BYTEs name
- F0h clear input field to blanks
- BYTE field number
- F1h fill input field with character
- BYTE field number
- BYTE char
- F2h set color of input field
- BYTE field number (1-N)
- BYTE attribute
- F3h set initial contents of input field
- BYTE field number (1-N)
- N BYTEs enough chars to exactly fill field as defined by op FFh
- F4h position cursor to start of specific input field
- BYTE field number (1-N)
- F5h change field table entry
- BYTE field number
- 7-8 BYTEs field table entry (also see opcode FFh below)
- F6h set field type
- BYTE field number
- BYTE type
- 00h inactive
- 40h output field
- 80h input field
- C0h deselected field
- C2h selected field
- F7h "broadcast write" write data to fields with program output bit set in
- the field table entry, in field number order
- N BYTEs (total length of all program output fields)
- F8h scroll field up a line
- BYTE field number
- F9h scroll field down a line
- BYTE field number
- FAh scroll field left
- BYTE field number
- FBh scroll field right
- BYTE field number
- FCh set field table header
- 6 BYTEs field table header (see #00442)
- FDh reset modified bit for all fields
- FEh reset selected and modified bits for all fields
- FFh set up input fields
- 6 BYTEs table header (see #00442)
- 7/8N BYTEs the field table entries, one for each field (see #00444)
- Note: DESQview uses and updates the actual copy of the information
- which is contained in the stream. Thus this info must remain
- intact until after the data entry is complete.
- SeeAlso: #00439,#00446
- (Table 00441)
- Values for TopView logical attributes:
- 01h normal text
- 02h highlighted normal text
- 03h help text
- 04h highlighted help text
- 05h error message
- 06h highlighted error message
- 07h emphasized text
- 08h marked text
- 9-16 reverse video versions of 1-8
- SeeAlso: #00440
- Format of TopView field table header:
- Offset Size Description (Table 00442)
- 00h BYTE number of fields (must be <= existing number of fields)
- 01h BYTE screen behavior bits (see #00443)
- 02h BYTE current input field (updated by DESQview)
- 03h BYTE current select field (updated by DESQview)
- 04h BYTE attribute for select fields when they are pointed at
- 05h BYTE attribute for select fields which have been selected
- SeeAlso: #00440,#00444
- Bitfields for TopView screen behavior bits:
- Bit(s) Description (Table 00443)
- 7 reserved
- 6 menu items may be selected via keyboard
- 5 left mouse button in "status" mode (press anywhere in window
- immediately returns control to application)
- 4 right mouse button in "status" mode
- 3 select fields return contents or blanks rather than 'Y' or 'N'
- 2 modified bits reset on return to application
- 1-0 type of data returned
- 00 no data returned on read of keyboard
- 01 data returned as array of characters containing all fields packed
- together, with no field numbers
- 10 data returned as numbered variable-length records for all fields
- 11 data returned as numbered variable-length records for the fields
- which were modified
- SeeAlso: #00440
- Format of TopView field table entry:
- Offset Size Description (Table 00444)
- 00h BYTE start row \
- 01h BYTE start column \ if menu selection and start is to
- 02h BYTE end row / right or below end, select from kbd only
- 03h BYTE end column /
- 04h BYTE field type (see #00445)
- 05h BYTE modifier
- if type is fill-in, then bit flags to determine behavior
- bit 7 automatically enter CR when field full
- bit 6 move to next field when current field is full
- bit 5 enter text from right end (for numbers)
- bit 4 force input to uppercase
- bit 3 clear old contents on first keystroke
- bit 2 input returned when cursor moves out of
- modified field ("validate", API level 2.02+)
- bit 1 reserved
- bit 0 reserved
- if select field, first key to press to activate
- 00h if have to point-&-click or is an extended-ASCII
- keystroke (only if two-key menus enabled)
- 06h BYTE (select field only) normal color of field
- 07h BYTE second key for select field. This byte is present iff
- two-letter menu entries selected with opcode E5h, and in that
- case is present regardless of field type
- SeeAlso: #00442
- Bitfields for TopView field type:
- Bit(s) Description (Table 00445)
- 7,6 field class
- 00 inactive (non-entry) field
- 01 echos keystrokes input to make menu selection
- 10 fill-in field
- 11 select field
- 5 field can be filled by broadcast write (F7h opcode)
- 4 reserved
- 3 reserved
- 2 reserved
- 1 set if field selected
- 0 set if field modified
- SeeAlso: #00444
- (Table 00446)
- Values for MODE 01h "QUERY STREAM" opcodes:
- (valid only for those opcodes listed here)
- A0h return logical cursor row in next byte
- A1h return logical cursor column in next byte
- A2h return top row of scrolling region in next byte
- A3h return left column of scrolling region in next byte
- A4h return row of physical window origin in next byte
- A5h return column of physical window origin in next byte
- A6h return height of physcial window in next byte
- A7h return width of physical window in next byte
- A8h return row of viewport origin in next byte
- A9h return column of viewport origin in next byte
- AAh return height of virtual screen in next byte
- ABh return width of virtual screen in next byte
- AFh return current video mode in next byte
- C0h return current logical cursor position in next two bytes
- C1h return top left corner of scrolling region in next two bytes
- C2h return current window position in next two bytes
- C3h return current window size in next two bytes
- C4h return current viewport origin in next two bytes
- C5h return current virtual screen size in next two bytes
- D0h \ overwritten with D0h if frames may fall off screen edge
- D1h / D1h if frames always displayed entirely
- D2h \ overwritten with D2h if DESQview controls color palette
- D3h / D3h if application changes color palette
- D4h \ overwritten with D4h if window visible
- D5h / D5h if window hidden
- D6h \ overwritten with D6h if window has frame
- D7h / D7h if window unframed
- D8h \ overwritten with D8h if reading characters from window
- D9h / D9h if reading attributes from window
- DAh \ overwritten with DAh if using logical attributes
- DBh / DBh if using physical attributes
- DCh \ overwritten with DCh if TTY control char interpretation on
- DDh / DDh if TTY control char interpretation off
- DEh \ overwritten with DEh if writing both characters and attributes
- DFh / DFh if leaving attributes untouched
- E2h return current color in next byte
- ECh get logical attributes for window contents
- BYTE execute call if currently in specified video mode
- bit 7 monochrome
- bit 6 color text, EGA/VGA graphics
- bit 5 medium-resolution CGA graphics
- bit 4 high-resolution CGA graphics
- BYTE which attributes to get
- bit 7 unused???
- bits 4-6 first attribute to get - 1
- bits 0-3 number of consecutive attributes
- N BYTEs buffer to hold attributes
- EDh get logical attributes for window frame
- BYTE execute call if currently in video mode (also see opcode ECh)
- BYTE which attributes to get
- bit 7 unused???
- bits 4-6 first attribute to get - 1
- bits 0-3 number of consecutive attributes
- N BYTEs buffer to hold attributes
- EEh get characters for window frame
- BYTE execute call if currently in video mode (also see opcode ECh)
- BYTE which attributes to get
- bit 7 unused???
- bits 4-6 first char to get - 1
- bits 0-3 number of consecutive chars
- N BYTEs buffer to hold chars
- EFh return first N characters of current window name
- BYTE max length of returned name
- N BYTEs buffer to hold window name
- F3h return contents of specified field
- BYTE field number
- N BYTEs buffer to hold field contents (size equal to field size)
- F5h get field table entry
- BYTE field number
- 7-8 BYTEs buffer to hold field table entry (see #00444)
- Notes: DV < 2.26 always returns 7 bytes
- DV 2.26+ w/ APILEVEL < 2.26 returns 8 bytes iff field table
- is using 8-byte entries and eighth byte after F5h is E7h
- (NOP); otherwise, 7 bytes are returned
- DV 2.26+ w/ APILEVEL > 2.26 returns 7 or 8 bytes depending
- on the field table entry size
- F6h get type of a field
- BYTE field number
- BYTE type
- FCh get field table header
- 6 BYTEs buffer to store field table header (see #00442)
- SeeAlso: #00439,#00447
- (Table 00447)
- Values for MODE 10h "MANAGER STREAM" opcodes (valid only for those listed):
- 00h allow window to be moved horizontally
- 01h allow window to be moved vertically
- 02h allow window to change width
- 03h allow window to change height
- 04h allow window to be scrolled horizontally
- 05h allow window to be scrolled vertically
- 06h allow "Close Window" menu selection for application
- 07h allow "Hide Window" menu selection for application
- 08h allow application to be suspended ("Rearrange/Freeze")
- 0Eh allow "Scissors" menu
- 10h allow DESQview main menu to be popped up
- 11h allow "Switch Windows" menu
- 12h allow "Open Window" menu
- 13h allow "Quit" menu selection
- 20h-33h opposite of 00h-13h, disallow specified action
- 40h notify if horizontal position of window changes
- 41h notify if vertical position of window changes
- 42h notify if width of window changes
- 43h notify if height of window changes
- 44h notify if window scrolled horizontally
- 45h notify if window scrolled vertically
- 46h notify if window is closed--program has to clean up and exit itself
- 47h notify if window is hidden
- 48h notify if "?" on main menu selected
- 49h notify if pointer message sent to window
- 4Ah notify if window is placed in foreground
- 4Bh notify if window is placed in background
- 4Ch notify if video mode changes
- 4Dh notify if "Scissors" menu "Cut" option selected
- 4Eh notify if "Scissors" menu "Copy" option selected
- 4Fh notify if "Scissors" menu "Paste" option selected
- 50h notify if DESQview main menu about to pop up
- 51h notify if DESQview main menu popped down
- 60h-71h opposite of 40h-51h: don't notify on specified event
- 84h attach window to parent task's window (both move together)
- 85h detach window from parent task's window (may move independently)
- 86h disable background operation for application
- 87h enable running in background
- 88h set minimum size of physical window
- BYTE rows
- BYTE columns
- 89h set maximum size of physical window
- BYTE rows
- BYTE cols
- 8Ah set primary asynchronous notification routine (see #00449)
- DWORD address of routine, 0000h:0000h means none (see also below)
- 8Bh set async notification parameter
- DWORD 32-bit value passed to 8Ah async routine in DS:SI
- ACh (DV2.2+) perform regular select field attribute processing
- ADh (DV2.2+) protect attributes in selected field from being lost
- AEh make window default notify window for owning app (API level 2.00+)
- AFh set selected field marker character
- BYTE character to display at left edge of selected fields
- BCh set standard field processing mode
- BDh set alternate field processing mode (enables cursor pad for menus)
- BEh disables changing reverse logical attributes with ECh opcode
- BFh enables changing reverse logical attributes with ECh opcode
- C0h make current window topmost in system
- C1h force current process into foreground
- C2h make current window topmost in process
- C3h position mouse pointer relative to origin of current field
- BYTE rows below upper left corner of field
- BYTE columns to right of upper left corner of field
- C4h position mouse pointer relative to origin of given field
- BYTE field number
- BYTE rows below upper left corner of field
- BYTE columns to right of upper left corner of field
- C5h orphan current window (also hides it)
- Note: must be last in stream; all subsequent commands ignored
- C6h show all windows for this process
- C7h hide all windows for this process
- C8h suspend process and hide all its windows
- C9h force current process into background
- CAh make current window bottom-most in process
- CBh cancel current window manager operation, remove DV menu, give control
- to topmost application
- CCh orphan window and give it to the system for use as paste data
- CEh reorder windows
- DWORD pointer to null-terminated list of words; each word is segment
- of object handle for a window
- FFh no operation
- SeeAlso: #00439,#00446,#00448
- (Table 00448)
- Values for MODES 14h to 1Fh "USER STREAMS":
- normally NOPs, but may be defined by SETESC message to invoke FAR
- routines, one for each mode number
- on entry to handler,
- DS:SI -> first byte of actual stream (not header)
- CX = number of bytes in stream
- ES:DI = window's handle
- SeeAlso: #00446,#00447
- (Table 00449)
- Values asynchronous notification routine defined by man.stream 8Ah called with:
- ES:DI = handle of window
- DS:SI is 32-bit value set by 8Bh manager stream opcode
- mailbox contains message indicating event
- Opcode
- 40h horizontal movement
- DWORD object handle of window
- BYTE new row
- BYTE new col
- 41h vertical movement
- DWORD object handle of window
- BYTE new row
- BYTE new col
- 42h horizontal size change
- DWORD object handle of window
- BYTE new rows
- BYTE new cols
- 43h vertical size change
- DWORD object handle of window
- BYTE new rows
- BYTE new cols
- 44h scrolled horizontally
- DWORD object handle of window
- BYTE mouse row within window
- BYTE mouse column within window
- BYTE field mouse is on, 0 if none
- BYTE amount moved: >0 right, <0 left, 0 done
- 45h scrolled vertically
- DWORD object hande of window
- BYTE mouse row within window
- BYTE mouse column within window
- BYTE field mouse is on, 0 if none
- BYTE amount moved: >0 down, <0 up, 0 done
- 46h window close request
- DWORD object handle of window
- BYTE mouse pointer row
- BYTE mouse pointer column
- BYTE field mouse is on, 0 if none
- 47h application's windows hidden
- 48h Help for Program selected
- DWORD object handle of window
- BYTE mouse pointer row
- BYTE mouse pointer column
- BYTE field mouse is on, 0 if none
- 49h pointer message sent to window
- DWORD pointer handle which received message
- 4Ah switched to window from another ("raise")
- 4Bh switched away from the window ("lower")
- 4Ch video mode changed
- BYTE new BIOS video mode
- 4Dh Scissors/cUt selected
- DWORD object handle of window
- BYTE row of upper left corner
- BYTE column of upper left corner
- BYTE field number ul corner is in, 0=none
- DWORD handle of orphaned window created with
- copy of data from specified region
- BYTE height of region
- BYTE width of region
- 4Eh Scissors/Copy selected
- DWORD object handle of window
- BYTE row of upper left corner
- BYTE column of upper left corner
- BYTE field number ul corner is in, 0=none
- DWORD handle of orphaned window created with
- copy of data from specified region
- BYTE height of region
- BYTE width of region
- 4Fh Scissors/Paste selected
- DWORD object handle of window
- BYTE row of upper left corner
- BYTE column of upper left corner
- BYTE field number ul corner is in, 0=none
- DWORD handle of orphaned window with data
- BYTE height of region
- BYTE width of region
- Note: orphaned data window should be adopted or freed
- when done
- 50h main menu about to pop up
- 51h main menu popped down
- Return: all registers unchanged
- --------Q-1512--BH06-------------------------
- INT 15 - DESQview 2.20+ - SEND MESSAGE - "SETPRI" - SET PRIORITY WITHIN OBJECTQ
- AH = 12h
- BH = 06h
- BL = object
- 00h object handle in DWORD on top of stack
- mailbox, keyboard, pointer, or timer
- (DV 2.50+) window
- 01h (DV 2.50+) current task's window
- 04h given task's keyboard (task's handle on top of stack)
- 05h current task's default keyboard
- STACK: DWORD new priority of object in task's OBJECTQ
- (new priority of task if window handle)
- Return: STACK popped
- Notes: initially all objects have the same default value. Should only make
- relative adjustments to this default value.
- when changing priorities, all objects already on the objectq are
- reordered
- for window handles, only the non-blocked task(s) with the highest
- priority receive CPU time under DESQview 2.50-2.52; the default
- priority is 0Ah
- SeeAlso: AH=12h/BH=07h,AH=12h/BH=87h
- --------Q-1512--BH07-------------------------
- INT 15 - DESQview 2.20+ - SEND MESSAGE - "GETPRI" - GET PRIORITY WITHIN OBJECTQ
- AH = 12h
- BH = 07h
- BL = object
- 00h object handle in DWORD on top of stack
- mailbox, keyboard, pointer, or timer
- (DV 2.50+) window
- 01h (DV 2.50+) current task's window
- 04h given task's keyboard (task's handle on top of stack)
- 05h current task's default keyboard
- Return: STACK: DWORD object priority
- Note: initially all objects have the same default value. Should only make
- relative adjustments to this default value.
- SeeAlso: AH=12h/BH=06h
- --------Q-1512--BH08-------------------------
- INT 15 - TopView - SEND MESSAGE - "SIZEOF" - GET OBJECT SIZE
- AH = 12h
- BH = 08h
- BL = object
- 00h handle in DWORD on top of stack
- window: total character positions in window
- timer: elapsed time since timer started
- pointer: number of messages queued to pointer object
- panel: number of panels in panel file
- keyboard: number of input buffers queued
- 01h total chars in current task's default window
- 02h number of messages in task's mailbox (task's handle on stack)
- 03h number of messages in current task's mailbox
- 04h number of input buffers queued in task's kbd (handle on stack)
- 05h number of input buffers queued for current task's default kbd
- 06h number of objects queued in OBJECTQ (task's handle on stack)
- 07h number of objects queued in current task's OBJECTQ
- 0Ch (DV 2.26+) total chars in window owning handle on top of stack
- 0Dh (DV 2.26+) total chars in parent task's window
- Return: DWORD on top of stack is result (any handle on stack has been popped)
- Note: for panel objects, a count of zero is returned if no panel file is open
- for the object
- SeeAlso: AH=12h/BH=04h,AH=12h/BH=09h
- --------Q-1512--BH09-------------------------
- INT 15 - TopView - SEND MESSAGE - "LEN" - GET OBJECT LENGTH
- AH = 12h
- BH = 09h
- BL = object
- 00h handle in DWORD on top of stack
- window: get chars/line
- timer: get 1/100 seconds remaining before timer expires
- mailbox: (DV/X) get number of bytes queued to mailbox
- 01h get number of chars/line in current task's default window
- 0Ch (DV 2.26+) get chars/line in window owning handle on top of stk
- 0Dh (DV 2.26+) get chars/line in parent task's window
- Return: DWORD on top of stack is length (any handle on stack has been popped)
- SeeAlso: AH=12h/BH=08h
- --------Q-1512--BH0A-------------------------
- INT 15 - TopView - SEND MESSAGE - "ADDTO" - WRITE CHARS AND ATTRIBS TO WINDOW
- AH = 12h
- BH = 0Ah
- BL = window to write to
- 00h window handle is DWORD on top of stack
- 01h current task's default window
- 0Ch (DV 2.26+) default window of task owning handle on top of stack
- 0Dh (DV 2.26+) default window of parent of current task
- STACK: DWORD count of attributes
- DWORD address of attribute string
- DWORD count of characters
- DWORD address of character string
- Return: STACK popped
- Notes: if one string is longer than the other, the shorter one will be reused
- until the longer one is exhausted
- the cursor is left just after the last character written
- SeeAlso: AH=12h/BH=0Bh"WINDOW"
- --------Q-1512--BH0A-------------------------
- INT 15 - TopView - SEND MESSAGE - "ADDTO" - SEND MAILBOX MESSAGE/STAT BY VALUE
- AH = 12h
- BH = 0Ah
- BL = mailbox to write to
- 00h handle is DWORD on top of stack
- 02h default mailbox of task whose handle is on top of stack
- 03h current task's default mailbox
- STACK: DWORD status (low byte)
- DWORD length of message
- DWORD address of message
- Return: STACK popped
- Notes: the message is copied into either system or common memory
- insufficient memory normally causes the process to be aborted; under
- DESQview 2.2+, failed writes may return CF set instead (see AX=DE15h)
- SeeAlso: AH=12h/BH=0Bh"MAILBOX"
- --------Q-1512--BH0A-------------------------
- INT 15 - TopView - SEND MESSAGE - "ADDTO" - SET OBJECT BITS
- AH = 12h
- BH = 0Ah
- BL = object
- 00h handle is DWORD on top of stack
- timer: start timer for specified interval
- pointer: set control flags (see #00451)
- keyboard: set control flags (see #00450)
- 04h set control flags on KEYBOARD object (handle on top of stack)
- 05h set control flags on task's default KEYBOARD object
- STACK: (if timer) DWORD duration in 1/100 seconds
- (otherwise) DWORD bits to set
- Return: STACK popped
- SeeAlso: AH=12h/BH=0Bh"OBJECT"
- Bitfields for DESQview keyboard object bits:
- Bit(s) Description (Table 00450)
- 15 reserved, can't be set
- 14 unused
- 13 reserved, can't be set
- 12-6 unused
- 5 (DV 2.2+) exclusive input
- 4 filter all keys (used with handler established by SETESC)
- if 0, only keys that would normally be displayed are filtered
- 3 program continues executing while input in progress
- 2 insert mode active for field mode
- 1 hardware cursor displayed when task is hardware cursor owner
- must be set if keyboard in field mode and field table includes input
- fields
- 0 keyboard is in field mode rather than keystroke mode
- Bitfields for DESQview pointer object bits:
- Bit(s) Description (Table 00451)
- 15 reserved, can't be set
- 14-8 unused
- 7 mouse pointer is hidden while in window
- 6 get messages even if window not topmost
- 5 get messages even if window not foreground
- 4 multiple clicks separated by less than 1/3 second are counted and
- returned in a single message
- 3 pointer position is relative to screen origin, not window origin
- 2 send message on button release as well as button press
- 1 (DV 2.23+) send message with row=FFFFh and col=FFFFh whenever the
- pointer leaves the window
- 0 send message only on button activity, not movement
- DV-specific, and INT 15/AX=DE0Fh must have been called first
- --------Q-1512--BH0B-------------------------
- INT 15 - TopView - SEND MESSAGE - "SUBFROM" - WRITE ATTRIBUTES TO WINDOW
- AH = 12h
- BH = 0Bh
- BL = window to write attributes to
- 00h handle is DWORD on top of stack
- 01h current task's default window
- 0Ch (DV 2.26+) default window of task owning handle on top of stack
- 0Dh (DV 2.26+) default window of parent of current task
- STACK: DWORD number of attributes to write
- DWORD address of attributes
- Return: STACK popped
- Note: the attributes are written starting at the current cursor position; the
- cursor is left just after the last position written
- SeeAlso: AH=12h/BH=0Ah"WINDOW"
- --------Q-1512--BH0B-------------------------
- INT 15 - TopView - SEND MESSAGE - "SUBFROM" - SEND MAILBOX MESSAGE/STAT BY REF
- AH = 12h
- BH = 0Bh
- BL = mailbox to write to
- 00h handle is DWORD on top of stack
- 02h default mailbox of task whose handle is on top of stack
- 03h current task's default mailbox
- STACK: DWORD status (low byte)
- DWORD length of message
- DWORD address of message
- Return: STACK popped
- Notes: only a pointer to the message is stored, but the write may still fail
- due to insufficient memory
- under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
- SeeAlso: AH=12h/BH=0Ah"MAILBOX"
- --------Q-1512--BH0B-------------------------
- INT 15 - TopView - SEND MESSAGE - "SUBFROM" - REMOVE OBJECT FROM OBJECTQ
- AH = 12h
- BH = 0Bh
- BL = OBJECTQ from which to remove all copies of a particular object
- 06h OBJECTQ of task whose handle is on top of stack
- 07h task's default OBJECTQ
- STACK: DWORD handle of object to remove
- Return: STACK popped
- Note: should be sent whenever an object is erased or closed
- --------Q-1512--BH0B-------------------------
- INT 15 - TopView - SEND MESSAGE - "SUBFROM" - RESET OBJECT BITS
- AH = 12h
- BH = 0Bh
- BL = object
- 00h handle is DWORD on top of stack
- pointer: reset control flags
- keyboard: reset control flags
- 04h clear control flags on KEYBOARD object (handle on top of stack)
- 05h clear control flags on task's default KEYBOARD object
- STACK: DWORD which bits to clear (see #00450,#00451)
- Return: STACK popped
- SeeAlso: AH=12h/BH=0Ah"OBJECT"
- --------Q-1512--BH0C-------------------------
- INT 15 - TopView - SEND MESSAGE - "OPEN" - OPEN OBJECT
- AH = 12h
- BH = 0Ch
- BL = object
- 00h handle is DWORD on top of stack
- window: fill with given character from scroll origin to end
- keyboard: attach to a window
- timer: open
- pointer: start taking input for window
- panel: associate with a panel file
- 01h fill task's default window with given char from scrl org to end
- 02h open given task's mailbox for input (task's handle on stack)
- 03h open current task's mailbox
- 04h attach a KEYBOARD to a window (handle on top of stack)
- 05h attach task's default KEYBOARD to a window
- 06h open a task's OBJECTQ (task's handle on top of stack)
- 07h open current task's OBJECTQ
- 0Ch (DV 2.26+) fill def window of task owning handle on top of stck
- 0Dh (DV 2.26+) fill default window of parent of current task
- STACK: (if window) DWORD character to fill with
- (if keyboard) DWORD handle of window to attach to
- (if pointer) DWORD handle of window to attach to
- (if panel) DWORD length of filename or resident panel
- DWORD address of filename or resident panel
- (otherwise) nothing
- Return: STACK popped
- Notes: if first byte of panel file name is 1Bh, then the "name" IS a panel
- if first two bytes of panel file "name" are C0hC3h, then the "name" IS
- the panel file
- result code of open may be retrieved with STATUS message
- logical cursor is left at scroll origin after filling window
- the task opening a mailbox becomes its owner, and the only task allowed
- to read the mailbox
- messages are only sent to a pointer object when the mouse is positioned
- in the window to which the pointer has been attached
- there is no need to explicitly open a timer object, as ADDTO and WRITE
- messages automatically open the timer
- SeeAlso: AH=12h/BH=0Dh,AH=12h/BH=14h"LOCK"
- --------Q-1512--BH0D-------------------------
- INT 15 - TopView - SEND MESSAGE - "CLOSE" - CLOSE OBJECT
- AH = 12h
- BH = 0Dh
- BL = object
- 00h handle is DWORD on top of stack
- timer: close
- keyboard: detach from window and discard queued input
- pointer: stop taking input
- panel: close
- mailbox: close, unlock, and discard any pending messages
- 02h close given task's mailbox (task's handle on top of stack)
- 03h close task's default mailbox
- 04h close KEYBOARD object (handle on top of stack)
- 05h close task's default KEYBOARD
- 06h close given task's OBJECTQ (task's handle on top of stack)
- 07h close current task's OBJECTQ
- Return: STACK popped if handle passed on stack
- Notes: when an OBJECTQ is closed, each object in the OBJECTQ is sent an
- ERASE message (AH=12h/BH=0Eh)
- when a panel object is closed, the panel file and any panels currently
- in use are freed; window and keyboard objects created by APPLY are
- not affected, but field mode input ceases
- open but idle timer objects consume a small amount of CPU time
- SeeAlso: AH=12h/BH=0Ch,AH=12h/BH=0Eh,AH=12h/BH=14h"LOCK"
- --------Q-1512--BH0E-------------------------
- INT 15 - TopView - SEND MESSAGE - "ERASE" - ERASE OBJECT
- AH = 12h
- BH = 0Eh
- BL = object
- 00h handle is DWORD on top of stack
- window: clear from scroll origin to end of window
- keyboard: discard input
- timer: cancel current interval
- pointer: discard all pending messages
- mailbox: discard all pending messages
- 01h clear task's default window from scroll origin to end
- 02h discard all queued messages in mailbox (handle on top of stack)
- 03h discard all queued messages in current task's default mailbox
- 04h discard all input queued to KEYBOARD (handle on top of stack)
- 05h discard all input queued to task's default KEYBOARD
- 06h remove all objects from OBJECTQ (task's handle on top of stack)
- 07h remove all objects from current task's OBJECTQ
- 0Ch (DV 2.26+) clear window of task owning handle on top of stack
- 0Dh (DV 2.26+) clear default window of parent of current task
- Return: STACK popped if handle passed on stack
- Note: when an OBJECTQ is erased, each object in the OBJECTQ is also erased
- SeeAlso: AH=12h/BH=02h
- --------Q-1512--BH0F-------------------------
- INT 15 - TopView - SEND MESSAGE - "STATUS" - GET OBJECT STATUS
- AH = 12h
- BH = 0Fh
- BL = object
- 00h handle is DWORD on top of stack
- timer: is it running?
- pointer: return status of last message
- panel: verify success of last OPEN or APPLY
- 02h return status of last msg READ from mailbox (handle on stack)
- 03h return status of last msg READ from task's default mailbox
- 04h get stat of last msg from task's KEYBOARD (task handle on stk)
- 05h get status of last msg from task's default KEYBOARD
- 06h return whether OBJECTQ is open or not (handle on top of stack)
- 07h return whether task's default OBJECTQ is open or not
- Return: DWORD on top of stack is status (any handle passed on stack popped)
- Notes: if object is a panel object, the status indicates the error code:
- 00h successful
- 14h panel name not in panel directory
- 15h not enough memory to apply panel
- 16h invalid panel format
- 17h panel file already open
- 81h-92h DOS error codes+80h \ codes > 80h indicate
- 95h not enough memory to open panel file > that the panel was
- 98h null panel file name / not opened
- if object is a timer, the status is:
- 00000000h open but not running
- 40000000h open and running
- 80000000h closed
- if object is an OBJECTQ, the status is:
- 00000000h open
- 80000000h closed
- if object is a keyboard in keystroke mode, the status is the extended
- character code (scan code) of the last keystroke
- if object is a keyboard in field mode, the status indicates the reason
- for the last return from the field manager
- 00h Enter key pressed
- 01h Button 1 or keystroke selection
- 02h Button 2
- 03h validation
- 04h auto Enter on field
- 1Bh Escape pressed
- 46h ^Break pressed
- other: extended code for key terminating input
- the status of mailbox messages sent by the window manager is always 80h
- the status of a pointer message is the same as the status field in the
- message
- SeeAlso: AH=12h/BH=04h"READ"
- --------Q-1512--BH10-------------------------
- INT 15 - TopView - SEND MESSAGE - "EOF" - GET OBJECT EOF STATUS
- AH = 12h
- BH = 10h
- BL = object
- 00h handle is DWORD on top of stack
- window: return TRUE if logical cursor past end of window
- mailbox: ???
- 01h returns TRUE if logical cursor past end of task's def window
- 02h return ??? for task's mailbox (task's handle on top of stack)
- 03h return ??? for current task's mailbox
- 0Ch (DV 2.26+) check log crsr of window owning handle on top of stk
- 0Dh (DV 2.26+) check log cursor of window of parent task
- Return: DWORD on top of stack is status (any handle on stack has been popped)
- --------Q-1512--BH11-------------------------
- INT 15 - TopView - SEND MESSAGE - "AT" - POSITION OBJECT CURSOR
- AH = 12h
- BH = 11h
- BL = window for which to move cursor
- 00h window's handle is DWORD on top of stack
- 01h task's default window
- 0Ch (DV 2.26+) default window of task owning handle on top of stack
- 0Dh (DV 2.26+) default window of parent of current task
- STACK: DWORD column
- DWORD row
- Return: STACK popped
- --------Q-1512--BH11-------------------------
- INT 15 - TopView - SEND MESSAGE - "SETNAME" - ASSIGN NAME TO MAILBOX
- AH = 12h
- BH = 11h
- BL = mailbox to name
- 00h DWORD on top of stack is mailbox handle
- 02h use given task's mailbox (task's handle on top of stack)
- 03h use current task's default mailbox
- STACK: DWORD length of name
- DWORD address of name
- Return: STACK popped
- SeeAlso: AH=12h/BH=12h"GETNAME",AX=DE0Eh
- --------Q-1512--BX1100-----------------------
- INT 15 - TopView - SEND MESSAGE - "SETSCALE" - SET POINTER SCALE FACTOR
- AH = 12h
- BX = 1100h
- STACK: DWORD object handle for pointer object
- DWORD number of colums to scale pointer position to
- DWORD number of rows to scale pointer position to
- Return: STACK popped
- SeeAlso: AH=12h/BX=1200h
- --------Q-1512--BH12-------------------------
- INT 15 - TopView - SEND MESSAGE - "READN" - GET NEXT N OBJECT BYTES
- AH = 12h
- BH = 12h
- BL = window to read from
- 00h handle is DWORD on top of stack
- 01h read next N chars or attributes on task's default window
- 0Ch (DV 2.26+) read window of task owning handle on top of stack
- 0Dh (DV 2.26+) read default window of parent of current task
- STACK: DWORD count
- Return: STACK: DWORD number of bytes actually read
- DWORD address of buffer containing data
- Notes: reading starts at the current logical cursor position; the cursor is
- updated to point at the character following the last one read
- any translucent blanks (FFh) which are visible on screen are changed
- to the character which is seen through them
- the string produced by the read is placed in an input buffer which may
- be reused by the next READ or READN of a window
- window stream opcodes D8h and D9h determine whether the read returns
- characters or attributes
- SeeAlso: AH=12h/BH=04h"WINDOW",AH=12h/BH=05h"WINDOW"
- --------Q-1512--BH12-------------------------
- INT 15 - DESQview 2.50+ - SEND MESSAGE - "GETNAME" - GET NAME OF MAILBOX
- AH = 12h
- BH = 12h
- BL = mailbox for which to retrieve name
- 00h DWORD on top of stack is mailbox handle
- 02h use given task's mailbox (task's handle on top of stack)
- 03h use current task's default mailbox
- STACK: DWORD length of buffer for name
- DWORD pointer to buffer
- Return: STACK: DWORD length of returned name (or size of buffer, if less)
- Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
- Note: the returned name is not NUL-terminated
- SeeAlso: AH=12h/BH=11h"SETNAME",AX=DE0Eh
- --------Q-1512--BX1200-----------------------
- INT 15 - TopView - SEND MESSAGE - "GETSCALE" - GET POINTER SCALE FACTOR
- AH = 12h
- BX = 1200h
- STACK: DWORD object handle for pointer
- Return: STACK: DWORD pointer pos scaled as if window were this many colums wide
- DWORD pointer pos scaled as if window were this many rows high
- SeeAlso: AH=12h/BX=1100h
- --------Q-1512--BH13-------------------------
- INT 15 - TopView - SEND MESSAGE - "REDRAW" - REDRAW WINDOW
- AH = 12h
- BH = 13h
- BL = window object
- 00h DWORD on top of stack is handle for window to redraw
- 01h redraw task's default window
- 0Ch (DV 2.26+) redraw window of task owning handle on top of stack
- 0Dh (DV 2.26+) redraw default window of parent of current task
- Return: STACK popped if handle was passed on stack
- SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=0Eh
- --------Q-1512--BH13-------------------------
- INT 15 - DESQview 2.50+ - SEND MESSAGE - "READINTO" - GET NEXT MAIL MESSAGE
- AH = 12h
- BH = 13h
- BL = mailbox from which to read
- 00h DWORD on top of stack is mailbox handle
- 02h use given task's mailbox (task's handle on top of stack)
- 03h use current task's default mailbox
- STACK: DWORD size of buffer in bytes
- DWORD pointer to buffer
- Return: STACK: DWORD number of bytes read
- Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
- Notes: this call blocks if no input is available, but will return less than
- the requested number of bytes if some (but insufficient) data is
- available
- use this call instead of AH=12h/BH=04h if the mailbox has flag bits
- 4 or 5 set, as common memory may be exhausted by that call when
- attempting to read the next message
- SeeAlso: AH=12h/BH=04h"READ",AH=12h/BH=05h,AH=12h/BH=16h
- --------Q-1512--BX1300-----------------------
- INT 15 - TopView - SEND MESSAGE - "SETICON" - SPECIFY POINTER ICON
- AH = 12h
- BX = 1300h
- STACK: DWORD object handle for pointer
- DWORD character to use for pointer
- Return: STACK popped
- --------Q-1512--BH14-------------------------
- INT 15 - TopView - SEND MESSAGE - "SETESC" - SET ESCAPE ROUTINE ADDRESS
- AH = 12h
- BH = 14h
- BL = message modifier
- 00h handle is DWORD on top of stack
- 01h define user stream
- 04h intercept keystrokes from KEYBOARD to window (handle on stack)
- 05h intercept keystrokes from task's default KEYBOARD to a window
- STACK: (if window) DWORD user stream number (14h-1Fh)
- DWORD address of FAR user stream handler
- (if keyboard) DWORD address of FAR filter function (see #00452)
- Return: STACK popped
- (Table 00452)
- Values keyboard filter function is called with when keyboard is in field mode:
- AL = character
- AH = 00h or extended ASCII code if AL = 00h
- BL = field number
- CH = cursor column
- CL = cursor row
- DL = field type modifier (sixth item in field table entry)
- DH = seventh item in field table entry
- ES:SI = window's handle
- DS:DI -> field table entry for field containing the cursor
- Return: AH = action to take
- 00h use keystroke
- 01h ignore keystroke
- FFh beep and ignore keystroke
- Note: the filter function is not allowed to make INT 15, DOS, or BIOS calls
- --------Q-1512--BH14-------------------------
- INT 15 - TopView - SEND MESSAGE - "LOCK" - REQUEST EXCLUSIVE ACCESS TO RESOURCE
- AH = 12h
- BH = 14h
- BL = object
- 00h mailbox handle is DWORD on top of stack
- 02h use given task's mailbox (task's handle on top of stack)
- 03h use current task's default mailbox
- Return: STACK popped if BL=00h
- Note: release exclusive access by sending CLOSE message to mailbox
- access may be requested multiple times, and requires multiple CLOSEs
- SeeAlso: AH=12h/BH=0Dh
- --------Q-1512--BH15-------------------------
- INT 15 - DESQview v2.20+ - SEND MESSAGE - "SETFLAGS" - SET OBJECT FLAGS
- AH = 12h
- BH = 15h
- BL = object
- 00h DWORD on top of stack
- mailbox, keyboard, or pointer only
- 02h mailbox for task whose handle is on top of stack
- 03h mailbox for current task
- 04h keyboard for task whose handle is on top of stack
- 05h keyboard for current task
- STACK: DWORD flags (see #00453,#00454)
- Return: STACK popped
- Notes: only available if the API level has been set to at least 2.20
- equivalent to performing SUBFROM and ADDTO calls on the object
- if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
- "READ" (see AH=12h/BH=13h"READINTO") to retrieve messages
- SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=16h
- Bitfields for DESQview mailbox object flags:
- Bit(s) Description (Table 00453)
- 0 all mail messages in common memory
- 1 allow write even if closed
- 2 don't erase messages when mailbox closed
- 4 (DV/X) append messages with like status and sender (stream-oriented
- mail)
- 5 (DV/X) store mail in expanded memory (pool grows as needed)
- 6 (DV/X) make mailbox into non-owned mailbox
- Bitfields for DESQview keyboard object flags:
- Bit(s) Description (Table 00454)
- 5 exclusive input when keyboard in use for input
- --------Q-1512--BH16-------------------------
- INT 15 - DESQview v2.20+ - SEND MESSAGE - "GETFLAGS" - GET OBJECT FLAGS
- AH = 12h
- BH = 16h
- BL = object
- 00h DWORD on top of stack
- mailbox, keyboard, or pointer only
- 02h mailbox for task whose handle is on top of stack
- 03h mailbox for current task
- 04h keyboard for task whose handle is on top of stack
- 05h keyboard for current task
- Return: STACK: DWORD current control flags (see #00453,#00454)
- Notes: only available if the API level has been set to at least 2.20
- if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
- "READ" (see AH=12h/BH=13h"READINTO") to retrieve messages
- SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=13h"READINTO",AH=12h/BH=15h
- --------Q-1512--BH17-------------------------
- INT 15 - DESQview v2.42-2.52 - BUG
- AH = 12h
- BH = 17h
- BL = object
- 00h DWORD on top of stack
- mailbox, keyboard, or pointer only
- 02h mailbox for task whose handle is on top of stack
- 03h mailbox for current task
- 04h keyboard for task whose handle is on top of stack
- 05h keyboard for current task
- Return: STACK popped if handle passed on stack
- Notes: due to a fencepost error, message 17h is accepted for mailboxes,
- keyboards, and pointers, but causes a random branch
- DESQview v2.50-2.52 are distributed as part of DESQview/X v1.02
- --------Q-1512--BH80-------------------------
- INT 15 - DESQview v2.50+ - SEND MESSAGE 00h WITH ERROR RECOVERY
- AH = 12h
- BH = 80h
- Note: this function is identical to AH=12h/BH=00h, except that DESQview will
- not pop up a "Programming Error" window, instead returning an error
- code in AL (see #00455)
- SeeAlso: AH=12h/BH=00h
- (Table 00455)
- Values for DESQview error code:
- 00h no error
- 01h invalid values
- 02h alias invalid
- 03h handle valid but wrong type
- 04h invalid handle
- --------Q-1512--BH81-------------------------
- INT 15 - DESQview v2.50+ - SEND MESSAGE 01h WITH ERROR RECOVERY
- AH = 12h
- BH = 81h
- Note: this function is identical to AH=12h/BH=01h, except that DESQview will
- not pop up a "Programming Error" window, instead returning an error
- code in AL (see #00455)
- SeeAlso: AH=12h/BH=01h
- --------Q-1512--BH82-------------------------
- INT 15 - DESQview v2.50+ - SEND MESSAGE 02h WITH ERROR RECOVERY
- AH = 12h
- BH = 82h
- Note: this function is identical to AH=12h/BH=02h, except that DESQview will
- not pop up a "Programming Error" window, instead returning an error
- code in AL (see #00455)
- SeeAlso: AH=12h/BH=02h
- --------Q-1512--BH83-------------------------
- INT 15 - DESQview v2.50+ - SEND MESSAGE 03h WITH ERROR RECOVERY
- AH = 12h
- BH = 83h
- Note: this function is identical to AH=12h/BH=03h, except that DESQview will
- not pop up a "Programming Error" window, instead returning an error
- code in AL (see #00455)
- SeeAlso: AH=12h/BH=03h,AH=12h/BX=0300h
- --------Q-1512--BH84-------------------------
- INT 15 - DESQview v2.50+ - SEND MESSAGE 04h WITH ERROR RECOVERY
- AH = 12h
- BH = 84h
- Note: this function is identical to AH=12h/BH=04h, except that DESQview will
- not pop up a "Programming Error" window, instead returning an error
- code in AL (see #00455)
- SeeAlso: AH=12h/BH=04h,AH=12h/BX=0400h
- --------Q-1512--BH85-------------------------
- INT 15 - DESQview v2.50+ - SEND MESSAGE 05h WITH ERROR RECOVERY
- AH = 12h
- BH = 85h
- Note: this function is identical to AH=12h/BH=05h, except that DESQview will
- not pop up a "Programming Error" window, instead returning an error
- code in AL (see #00455)
- SeeAlso: AH=12h/BH=05h
- --------Q-1512--BH86-------------------------
- INT 15 - DESQview v2.50+ - SEND MESSAGE 06h WITH ERROR RECOVERY
- AH = 12h
- BH = 86h
- Note: this function is identical to AH=12h/BH=06h, except that DESQview will
- not pop up a "Programming Error" window, instead returning an error
- code in AL (see #00455)
- SeeAlso: AH=12h/BH=06h
- --------Q-1512--BH87-------------------------
- INT 15 - DESQview v2.50+ - SEND MESSAGE 07h WITH ERROR RECOVERY
- AH = 12h
- BH = 87h
- Note: this function is identical to AH=12h/BH=07h, except that DESQview will
- not pop up a "Programming Error" window, instead returning an error
- code in AL (see #00455)
- SeeAlso: AH=12h/BH=07h
- --------Q-1512--BH88-------------------------
- INT 15 - DESQview v2.50+ - SEND MESSAGE 08h WITH ERROR RECOVERY
- AH = 12h
- BH = 88h
- Note: this function is identical to AH=12h/BH=08h, except that DESQview will
- not pop up a "Programming Error" window, instead returning an error
- code in AL (see #00455)
- SeeAlso: AH=12h/BH=08h
- --------Q-1512--BH89-------------------------
- INT 15 - DESQview v2.50+ - SEND MESSAGE 09h WITH ERROR RECOVERY
- AH = 12h
- BH = 89h
- Note: this function is identical to AH=12h/BH=09h, except that DESQview will
- not pop up a "Programming Error" window, instead returning an error
- code in AL (see #00455)
- SeeAlso: AH=12h/BH=09h
- --------Q-1512--BH8A-------------------------
- INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ah WITH ERROR RECOVERY
- AH = 12h
- BH = 8Ah
- Note: this function is identical to AH=12h/BH=0Ah, except that DESQview will
- not pop up a "Programming Error" window, instead returning an error
- code in AL (see #00455)
- SeeAlso: AH=12h/BH=0Ah
- --------Q-1512--BH8B-------------------------
- INT 15 - DESQview v2.50+ - SEND MESSAGE 0Bh WITH ERROR RECOVERY
- AH = 12h
- BH = 8Bh
- Note: this function is identical to AH=12h/BH=0Bh, except that DESQview will
- not pop up a "Programming Error" window, instead returning an error
- code in AL (see #00455)
- SeeAlso: AH=12h/BH=0Bh
- --------Q-1512--BH8C-------------------------
- INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ch WITH ERROR RECOVERY
- AH = 12h
- BH = 8Ch
- Note: this function is identical to AH=12h/BH=0Ch, except that DESQview will
- not pop up a "Programming Error" window, instead returning an error
- code in AL (see #00455)
- SeeAlso: AH=12h/BH=0Ch
- --------Q-1512--BH8D-------------------------
- INT 15 - DESQview v2.50+ - SEND MESSAGE 0Dh WITH ERROR RECOVERY
- AH = 12h
- BH = 8Dh
- Note: this function is identical to AH=12h/BH=0Dh, except that DESQview will
- not pop up a "Programming Error" window, instead returning an error
- code in AL (see #00455)
- SeeAlso: AH=12h/BH=0Dh
- --------Q-1512--BH8E-------------------------
- INT 15 - DESQview v2.50+ - SEND MESSAGE 0Eh WITH ERROR RECOVERY
- AH = 12h
- BH = 8Eh
- Note: this function is identical to AH=12h/BH=0Eh, except that DESQview will
- not pop up a "Programming Error" window, instead returning an error
- code in AL (see #00455)
- SeeAlso: AH=12h/BH=0Eh
- --------Q-1512--BH8F-------------------------
- INT 15 - DESQview v2.50+ - SEND MESSAGE 0Fh WITH ERROR RECOVERY
- AH = 12h
- BH = 8Fh
- Note: this function is identical to AH=12h/BH=0Fh, except that DESQview will
- not pop up a "Programming Error" window, instead returning an error
- code in AL (see #00455)
- SeeAlso: AH=12h/BH=0Fh
- --------Q-1512--BH90-------------------------
- INT 15 - DESQview v2.50+ - SEND MESSAGE 10h WITH ERROR RECOVERY
- AH = 12h
- BH = 90h
- Note: this function is identical to AH=12h/BH=10h, except that DESQview will
- not pop up a "Programming Error" window, instead returning an error
- code in AL (see #00455)
- SeeAlso: AH=12h/BH=10h
- --------Q-1512--BH91-------------------------
- INT 15 - DESQview v2.50+ - SEND MESSAGE 11h WITH ERROR RECOVERY
- AH = 12h
- BH = 91h
- Note: this function is identical to AH=12h/BH=11h, except that DESQview will
- not pop up a "Programming Error" window, instead returning an error
- code in AL (see #00455)
- SeeAlso: AH=12h/BH=11h,AH=12h/BX=1100h
- --------Q-1512--BH92-------------------------
- INT 15 - DESQview v2.50+ - SEND MESSAGE 12h WITH ERROR RECOVERY
- AH = 12h
- BH = 92h
- Note: this function is identical to AH=12h/BH=12h, except that DESQview will
- not pop up a "Programming Error" window, instead returning an error
- code in AL (see #00455)
- SeeAlso: AH=12h/BH=12h,AH=12h/BX=1200h
- --------Q-1512--BH93-------------------------
- INT 15 - DESQview v2.50+ - SEND MESSAGE 13h WITH ERROR RECOVERY
- AH = 12h
- BH = 93h
- Note: this function is identical to AH=12h/BH=13h, except that DESQview will
- not pop up a "Programming Error" window, instead returning an error
- code in AL (see #00455)
- SeeAlso: AH=12h/BH=13h
- --------Q-1512--BH94-------------------------
- INT 15 - DESQview v2.50+ - SEND MESSAGE 14h WITH ERROR RECOVERY
- AH = 12h
- BH = 94h
- Note: this function is identical to AH=12h/BH=14h, except that DESQview will
- not pop up a "Programming Error" window, instead returning an error
- code in AL (see #00455)
- SeeAlso: AH=12h/BH=14h
- --------Q-1512--BH95-------------------------
- INT 15 - DESQview v2.50+ - SEND MESSAGE 15h WITH ERROR RECOVERY
- AH = 12h
- BH = 95h
- Note: this function is identical to AH=12h/BH=15h, except that DESQview will
- not pop up a "Programming Error" window, instead returning an error
- code in AL (see #00455)
- SeeAlso: AH=12h/BH=15h
- --------Q-1512--BH96-------------------------
- INT 15 - DESQview v2.50+ - SEND MESSAGE 16h WITH ERROR RECOVERY
- AH = 12h
- BH = 96h
- Note: this function is identical to AH=12h/BH=16h, except that DESQview will
- not pop up a "Programming Error" window, instead returning an error
- code in AL (see #00455)
- SeeAlso: AH=12h/BH=16h
- --------T-1513-------------------------------
- INT 15 - VMiX - "sys_wake" - WAKE SLEEPING PROCESS
- AH = 13h
- STACK: WORD process ID
- Return: AX = status (SYS_OK or SYS_ERROR)
- SeeAlso: AH=12h"VMiX"
- --------T-1513-------------------------------
- INT 15 - MultiDOS Plus - GET TASK CONTROL BLOCK
- AH = 13h
- Return: BX:AX -> task control block (see #00456)
- SeeAlso: AH=15h"MultiDOS"
- Format of MultiDOS Plus v4.0 task control block:
- Offset Size Description (Table 00456)
- 00h DWORD pointer to next TCB
- 04h 8 BYTEs ASCIZ task name
- 0Ch 2 BYTEs ???
- 0Eh WORD task PSP segment
- 10h WORD abort/suspend flags
- 12h WORD current screen segment (see AH=0Bh,AH=0Ch)
- 14h WORD priority level (0000h-FFFEh)
- 16h WORD time slice counter
- 18h 2 BYTEs ???
- 1Ah WORD suspend timer value
- 1Ch WORD stack segment
- 1Eh WORD stack pointer
- 20h WORD display type
- 22h WORD display memory
- 24h 2 BYTEs ???
- 26h WORD termination count
- 28h WORD equipment flag for BIO10 driver
- 2Ah BYTE background CRT mode
- 2Bh WORD screen width in columns
- 2Dh WORD screen size in bytes
- 2Fh WORD segment of physical screen memory
- 31h 16 BYTEs eight cursor positions
- 41h WORD current cursor shape
- 43h BYTE active display page
- 44h WORD CRT controller I/O port base
- 46h 2 BYTEs ???
- 48h WORD foreground task flag
- 4Ah 6 BYTEs ???
- 50h WORD saved video segment (see AH=0Bh,AH=0Ch)
- 52h DWORD old INT 22
- 56h DWORD old INT 23
- 5Ah DWORD old INT 24
- 5Eh WORD top of memory for task
- 60h 4 BYTEs ???
- 64h WORD DTA segment (see INT 21/AH=1Ah)
- 66h WORD DTA offset
- 68h 4 BYTEs ???
- 6Ch BYTE current ANSI.SYS attribute
- 6Dh BYTE current ANSI.SYS column
- 6Eh BYTE current ANSI.SYS row
- 6Fh BYTE current ANSI.SYS display state
- 70h BYTE maximum ANSI.SYS columns
- 71h BYTE current ANSI.SYS page
- 72h WORD saved ANSI.SYS cursor position
- 74h BYTE ANSI.SYS parameter buffer index
- 75h BYTE current ANSI.SYS screen mode
- 76h BYTE ANSI.SYS wrap flag
- 77h 6 BYTEs ANSI.SYS parameter buffer
- 7Dh BYTE ANSI.SYS keyboard DSR state
- 7Eh 7 BYTEs ANSI.SYS keyboard DSR buffer
- 85h 3 BYTEs ???
- 88h 16 BYTEs request header for DOS driver calls
- 98h 14 BYTEs ???
- A6h WORD segment of EMS map if EMS task
- A8h WORD flag: task makes EMS calls
- AAh WORD EMS handle for task
- ACh WORD keyboard shift state
- AEh 12 BYTEs ???
- BAh WORD TCB of parent if child task
- BCh WORD termination code
- BEh WORD COM port number
- C0h 4 BYTEs ???
- C4h WORD current IRQ number
- C6h 2 BYTEs ???
- C8h WORD miscellaneous flag word
- CAh 2 BYTEs ???
- CCh DWORD old INT 10
- D0h WORD EMS alternate map set number
- D2h 414 BYTEs DOS current disk and directory context (optional)
- --------T-1514-------------------------------
- INT 15 - VMiX - "sys_clrwindow" - CLEAR WINDOW
- AH = 14h
- STACK: WORD top left corner of window (high byte = row, low = col)
- WORD bottom right corner of window (high = row, low = col)
- Return: AX = status (SYS_OK)
- Note: clears window to color set with "sys_setcolors" (AH=18h)
- SeeAlso: AH=15h"VMiX",AH=16h"VMiX",AH=18h"VMiX",AH=1Fh"VMiX"
- --------T-1514-------------------------------
- INT 15 - MultiDOS Plus - CHECK IF MultiDOS FOREGROUND OR BACKGROUND
- AH = 14h
- Return: AX = current state
- 0000h MultiDOS Plus command prompt is background task
- 0001h command prompt is foreground task
- SeeAlso: AH=0Bh"MultiDOS"
- --------T-1515-------------------------------
- INT 15 - VMiX - "sys_setbwindow" - SET BANNER WINDOW MESSAGE
- AH = 15h
- STACK: DWORD pointer to ASCIZ banner message for top of screen
- Return: AX = status (SYS_OK)
- SeeAlso: AH=14h"VMiX",AH=16h"VMiX"
- --------T-1515-------------------------------
- INT 15 - MultiDOS Plus - GET SYSTEM BLOCK
- AH = 15h
- Return: BX:AX -> system block (see #00457)
- SeeAlso: AH=13h"MultiDOS"
- Format of MultiDOS Plus 4.0 system block:
- Offset Size Description (Table 00457)
- 00h WORD segment of system control block
- 02h WORD redirection flag set by /NOREDIRECT
- 04h WORD no-INT 10 flag set by /NO10
- 06h DWORD old INT 10
- 0Ah DWORD new INT 10
- 0Eh DWORD pointer to WORD with current TCB offset (see #00456)
- 12h DWORD pointer to WORD with idle task TCB offset
- 16h DWORD pointer to WORD with foreground TCB offset (see #00456)
- 1Ah DWORD pointer to WORD with MultiDOS TCB offset (see #00456)
- 1Eh WORD Task Control Block size
- 20h WORD number of TCBs
- 22h WORD flag: EMS present
- 24h WORD EMS page frame base segment
- 26h WORD 16K pages in EMS page frame
- 28h WORD base segment for conventional memory tasks
- 2Ah WORD conventional memory size in paragraphs
- 2Ch DWORD pointer to list of queue pointers
- --------T-1516-------------------------------
- INT 15 - VMiX - "sys_setwindow" - SET ROOT WINDOW SIZE AND HOME CURSOR
- AH = 16h
- STACK: DWORD pointer to I/O Request Packet
- WORD top left corner of window (high byte = row, low = col)
- WORD bottom right corner of window (high = row, low = col)
- Return: AX = status (SYS_OK or SYS_ERROR)
- SeeAlso: AH=14h"VMiX",AH=17h"VMiX"
- --------T-1516-------------------------------
- INT 15 - MultiDOS Plus - INITIALIZATION
- AH = 16h
- Note: used internally during initialization; any other calls will cause
- unpredictable results
- --------T-1517-------------------------------
- INT 15 - VMiX - "sys_getcolors" - GET CONSOLE WINDOW COLORS
- AH = 17h
- Return: AH = foreground color
- AL = background color
- SeeAlso: AH=16h"VMiX",AH=18h"VMiX"
- --------T-1517-------------------------------
- INT 15 - MultiDOS Plus - MAP IRQ
- AH = 17h
- AL = IRQ to map (01h-0Fh)
- BX = offset of task control block (see #00456) to associate with IRQ
- Return: AX = status
- 0000h successful
- other invalid IRQ
- Note: the EMS map of the specified TCB is associated with the given interrupt
- SeeAlso: AH=18h"MultiDOS",AH=19h"MultiDOS"
- --------T-1518-------------------------------
- INT 15 - VMiX - "sys_setcolors" - SET CONSOLE COLORS
- AH = 18h
- STACK: WORD new background/foreground colors
- bits 3-0: foreground
- bits 7-4: background
- bits 15-8: unused
- Return: AX = color
- SeeAlso: AH=14h"VMiX",AH=17h"VMiX",AH=19h"VMiX"
- --------T-1518-------------------------------
- INT 15 - MultiDOS Plus - UNMAP IRQ
- AH = 18h
- AL = IRQ to unmap (01h-0Fh)
- Return: AX = status
- 0000h successful
- 0001h invalid IRQ
- Note: results are unpredictable if the IRQ has not been mapped
- SeeAlso: AH=17h"MultiDOS",AH=19h"MultiDOS"
- --------T-1519-------------------------------
- INT 15 - VMiX v2+ - "sys_setconwn" - SET WINDOW COLORS
- AH = 19h
- STACK: WORD new background/foreground colors
- bits 3-0: foreground
- bits 7-4: background
- bits 15-8: unused
- Return: AX = color
- SeeAlso: AH=18h"VMiX"
- --------T-1519-------------------------------
- INT 15 - MultiDOS Plus - UNMAP ALL IRQs
- AH = 19h
- Return: AX destroyed
- Note: for MultiDOS internal use only
- SeeAlso: AH=17h"MultiDOS",AH=18h"MultiDOS"
- --------T-151A-------------------------------
- INT 15 - VMiX v2+ - "sys_sint" - INVOKE SOFTWARE INTERRUPT
- AH = 1Ah
- STACK: WORD interrupt number
- DWORD pointer to register structure
- Return: AX = returned flags
- --------T-151A-------------------------------
- INT 15 - MultiDOS Plus - MAP SEMAPHORE NAME TO NUMBER
- AH = 1Ah
- DS:SI -> 8-byte name
- Return: AL = status
- 00h successful
- AH = semaphore number (20h-3Fh)
- 04h out of string space
- Notes: all eight bytes of the name are significant
- if the name does not already exist, it is added to the name table and
- associated with a free semaphore number
- names cannot be destroyed
- SeeAlso: AH=1Bh"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
- --------T-151B-------------------------------
- INT 15 - VMiX v2+ - "sys_blkmov" - MOVE MEMORY BLOCK
- AH = 1Bh
- STACK: DWORD source address
- DWORD destination address
- WORD number of words to move
- Return: nothing
- --------T-151B-------------------------------
- INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE BY NAME
- AH = 1Bh
- DS:SI -> 8-byte name
- Return: AH = status
- 00h successful
- 02h invalid semaphore number
- 03h caller already owns semaphore
- 04h out of string space
- Notes: (see AH=01h"MultiDOS")
- equivalent to AH=1Ah followed by AH=01h
- SeeAlso: AH=01h"MultiDOS",AH=1Ah"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
- --------T-151C-------------------------------
- INT 15 - VMiX v2+ - "sys_bitblt" - PUT GRAPHICAL OBJECT AT CURSOR POSITION
- AH = 1Ch
- STACK: WORD AND/OR pixel with background (00h = OR, 01h = AND)
- DWORD pointer to object bitmap
- WORD object width in pixels
- WORD object height in pixels
- Return: nothing
- SeeAlso: AH=1Dh"VMiX"
- --------T-151C-------------------------------
- INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE BY NAME
- AH = 1Ch
- DS:SI -> 8-byte name
- Return: AH = status
- 00h successful
- 01h not semaphore owner
- 02h invalid semaphore number
- 04h out of string space
- Notes: (see AH=02h"MultiDOS")
- equivalent to AH=1Ah followed by AH=02h
- SeeAlso: AH=02h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Dh"MultiDOS"
- --------T-151D-------------------------------
- INT 15 - VMiX v2+ - "sys_getfont" - GET CURRENT CONSOLE GRAPHICS FONT
- AH = 1Dh
- Return: AX = current font number (00h-03h)
- SeeAlso: AH=1Ch"VMiX",AH=1Eh"VMiX"
- --------T-151D-------------------------------
- INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE BY NAME
- AH = 1Dh
- DS:SI -> 8-byte name
- Return: AH = status
- 00h semaphore not in use
- 01h semaphore owned by another task
- 02h invalid semaphore number
- 03h caller owns semaphore
- 04h out of string space
- Notes: (see AH=10h"MultiDOS")
- equivalent to AH=1Ah followed by AH=10h
- SeeAlso: AH=10h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Ch"MultiDOS"
- --------T-151E-------------------------------
- INT 15 - VMiX v2+ - "sys_setfont" - SET CONSOLE GRAPHICS FONT
- AH = 1Eh
- STACK: WORD new font number (00h-03h)
- Return: AX = current font number (00h-03h)
- SeeAlso: AH=1Dh"VMiX"
- --------T-151E00-----------------------------
- INT 15 - MultiDOS Plus - CLEAR EVENT COUNTER
- AX = 1E00h
- DX = event/trigger number (00h-3Fh)
- Return: AH = status
- 00h successful
- SeeAlso: AX=1E01h,AX=1E02h
- --------T-151E01-----------------------------
- INT 15 - MultiDOS Plus - TRIGGER EVENT
- AX = 1E01h
- DX = event/trigger number (00h-3Fh)
- Return: AH = status
- 00h successful
- 01h invalid event/trigger number
- Notes: schedules any task waiting for event; if no task is waiting, the event
- counter is incremented (and will roll over if it was 65535)
- may be invoked by interrupt handler
- SeeAlso: AX=1E00h,AX=1E02h
- --------T-151E02-----------------------------
- INT 15 - MultiDOS Plus - WAIT FOR EVENT
- AX = 1E02h
- DX = event/trigger number (00h-3Fh)
- Return: AH = status
- 00h successful
- 01h invalid event/trigger number
- Note: if the event counter is zero, the task is suspended until the event is
- triggered with AX=1E01h; else, the counter is decremented and the
- call returns immediately
- SeeAlso: AX=1E00h,AX=1E01h
- --------T-151E08-----------------------------
- INT 15 - MultiDOS Plus 4.01 - SET CONTEXT-SWITCH FUNCTIONS
- AX = 1E08h
- DX:BX -> context save handler (see #00458)
- DX:CX -> context restore handler (see #00458)
- Return: nothing
- Note: handlers may be removed by setting addresses to 0000h:0000h
- (Table 00458)
- Values MultiDOS Plus context-switch handlers are called with:
- ES:BX -> task's TCB
- Return: all registers preserved
- --------T-151F-------------------------------
- INT 15 - VMiX v2.???+ - "sys_scrollwin" - SCROLL WINDOW
- AH = 1Fh
- STACK: WORD top left corner of window (high byte = row, low = col)
- WORD bottom right corner of window
- Return: AX = status (SYS_OK)
- SeeAlso: AH=14h"VMiX",AH=18h"VMiX"
- --------T-151F-------------------------------
- INT 15 - MultiDOS Plus v4.01 - GET MEMORY PARAMETERS
- AH = 1Fh
- Return: BX = first segment of conventional memory
- DX = first segment of EMS swap frame into which MultiDOS will load
- programs
- --------T-1520-------------------------------
- INT 15 - MultiDOS Plus v4.01 - CHECK IF MULTITASKING ENABLED
- AH = 20h
- Return: AX = current state
- 0000h multitasking enabled
- other TCB of task that disabled multitasking
- SeeAlso: AH=0Dh"MultiDOS",AH=13h"MultiDOS"
- --------c-152000-----------------------------
- INT 15 U - DOS 3.0+ PRINT.COM - DISABLE CRITICAL REGION FLAG
- AX = 2000h
- Return: nothing
- Desc: stop setting user flag on entry to PRINT critical region
- Note: also supported by PC Network v1.00 RECEIVER.COM
- SeeAlso: AX=2001h
- --------c-152001-----------------------------
- INT 15 U - DOS 3.0+ PRINT.COM - SET CRITICAL REGION FLAG
- AX = 2001h
- ES:BX -> byte which is to be incremented while in a DOS call
- Return: nothing
- Desc: specify a user flag which PRINT should set to let an interested
- application know it is in a critical region
- Note: also supported by PC Network v1.00 RECEIVER.COM
- SeeAlso: AX=2000h
- --------O-152010-----------------------------
- INT 15 - OS HOOK - SETUP SYSREQ ROUTINE (AT,XT286,PS50+)
- AX = 2010h
- ???
- Return: ???
- SeeAlso: AX=2011h
- --------O-152011-----------------------------
- INT 15 - OS HOOK - COMPLETION OF SYSREQ FUNCTION (AT,XT286,PS50+)
- AX = 2011h
- ???
- Return: ???
- SeeAlso: AX=2010h
- --------B-1521-------------------------------
- INT 15 - SYSTEM - POWER-ON SELF-TEST ERROR LOG (PS50+)
- AH = 21h
- AL = subfunction
- 00h read POST log
- 01h write POST log
- BH = device ID
- BL = error code
- Return: CF clear if successful
- CF set on error
- AH = status
- 00h OK
- 01h list full
- 02h unsupported subfunction
- 80h invalid command
- 86h unsupported function
- if function 00h:
- BX = number of error codes stored
- ES:DI -> error log
- Notes: the log is a series of words, the first byte of which identifies the
- error code and the second the device.
- supported by AMI PCI BIOS
- IBM considers this a required BIOS function
- if the device ID is FFh, the "error code" is the actual device number
- minus 255 (thus these devices have no specific error codes)
- SeeAlso: AH=23h"SYSTEM",AH=24h"SYSTEM"
- --------B-1522-------------------------------
- INT 15 - SYSTEM - later PS/2s - LOCATE ROM BASIC
- AH = 22h
- Return: CF set on error
- AH = status (86h if function not supported)
- CF clear on success
- AH = 00h
- ES:BX -> ROM BASIC
- Notes: if this function is not supported, ROM BASIC is at F600h:0000h
- IBM classifies this function as optional
- SeeAlso: INT 86"BASIC",INT F0"BASIC"
- --------B-152300-----------------------------
- INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - GET ??? CMOS DATA
- AX = 2300h
- Return: CF clear if successful
- CL = value of CMOS location 2Dh
- CH = value of CMOS location 2Eh
- CF set on error
- AH = error code (80h,86h)
- Note: IBM classifies this function as optional
- SeeAlso: AX=2301h,AX=2304h,AX=2305h
- --------B-152301-----------------------------
- INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - SET ??? CMOS DATA
- AX = 2301h
- CL = new value for CMOS location 2Dh
- CH = new value for CMOS location 2Eh
- Return: CF clear if successful
- CF set on error
- AH = error code (80h,86h)
- Notes: sets the contents of CMOS locations 2Dh and 2Eh
- IBM classifies this function as optional
- SeeAlso: AX=2300h,AX=2304h,AX=2305h
- --------B-152302-----------------------------
- INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - GET ROM STARTUP VIDEO REG TABLES
- AX = 2302h
- BL = data index (00h-0Dh) (see #00459)
- Return: ES:BX -> table for register (see #00460,#00461)
- CX = size of table in bytes (may be 0000h)
- Note: IBM classifies this function as optional
- SeeAlso: AX=2300h,AX=2301h,AX=2303h
- (Table 00459)
- Values for PS/1 ROM startup video register tables:
- 00h DAC registers
- 01h ???
- 02h Palette registers
- 03h-0Dh ???
- Format of PS/1 ROM startup DAC register table:
- Offset Size Description (Table 00460)
- 00h WORD number of DAC registers in table
- 02h var array of 3-byte DAC register values, starting at register 00h
- SeeAlso: #00459
- Format of PS/1 ROM startup Palette register table:
- Offset Size Description (Table 00461)
- 00h 16 BYTEs colors for palette registers 00h through 0Fh
- 10h BYTE border color
- SeeAlso: #00459,#00018
- --------B-152303-----------------------------
- INT 15 U - IBM BIOS - SMART ENERGY SYSTEM - ???
- AX = 2303h
- BX = ??? ('x')
- DX = 'y' and 'z'
- bits 15-7 = 'y'
- bits 6-3 unused
- bits 2-0 = 'z'
- DI = ??? (0352h)
- Return: ???
- Notes: performs graphics functions, writes to segment A000h and VGA I/O ports
- IBM classifies this function as optional
- --------B-152304-----------------------------
- INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - SYSTEM SETUP
- AX = 2304h
- DX = segment of 32K buffer
- Return: CF clear if successful
- AX = 0003h (left over from setting video mode 3)
- BX,CX,DX,BP,DS,ES destroyed
- CF set on error
- AH = error code (80h,86h)
- Desc: run system setup utility, and optionally save any changed settings to
- CMOS RAM
- Note: IBM classifies this function as optional
- SeeAlso: AX=2301h,AX=2305h
- --------B-152305-----------------------------
- INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - GET PROCESSOR SPEED
- AX = 2305h
- Return: CF clear if successful
- AL = processor speed in MHz
- CF set on error
- AL = FFh (speed unknown or >80 MHz)
- AL = error code (80h,86h = unsupported function)
- Note: IBM classifies this function as optional
- SeeAlso: AX=2301h,AX=2304h,AH=BCh
- --------b-152400-----------------------------
- INT 15 - SYSTEM - later PS/2s - DISABLE A20 GATE
- AX = 2400h
- Return: CF clear if successful
- AH = 00h
- CF set on error
- AH = status
- 01h keyboard controller is in secure mode
- 86h function not supported
- Notes: also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
- IBM classifies this function as optional
- BUG: AMI BIOS v1.00.03.AV0M never reports an error on failure to disable
- the A20 gate; it simply writes 0 to PORT 0092h
- SeeAlso: AX=2401h,AX=2402h,AX=2403h,PORT 0092h
- --------b-152401-----------------------------
- INT 15 - SYSTEM - later PS/2s - ENABLE A20 GATE
- AX = 2401h
- Return: CF clear if successful
- AH = 00h
- CF set on error
- AH = status
- 01h keyboard controller is in secure mode
- 86h function not supported
- Notes: also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
- IBM classifies this function as optional
- SeeAlso: AX=2400h,AX=2402h,PORT 0092h
- --------b-152402-----------------------------
- INT 15 - SYSTEM - later PS/2s - GET A20 GATE STATUS
- AX = 2402h
- Return: CF clear if successful
- AH = 00h
- AL = current state (00h disabled, 01h enabled)
- CX = ??? (set to 0000h-000Bh or FFFFh by AMI BIOS v1.00.03.AV0M)
- FFFFh if keyboard controller does not become ready within C000h
- read attempts
- CF set on error
- AH = status
- 01h keyboard controller is in secure mode
- 86h function not supported
- Notes: also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
- IBM classifies this function as optional
- SeeAlso: AX=2400h,AX=2401h
- --------b-152403-----------------------------
- INT 15 - SYSTEM - later PS/2s - QUERY A20 GATE SUPPORT
- AX = 2403h
- Return: CF clear if successful
- AH = 00h
- BX = status of A20 gate support (see #00462)
- CF set on error
- AH = status
- 01h keyboard controller is in secure mode
- 86h function not supported
- Notes: also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
- IBM classifies this function as optional
- BUG: at one point early in processing INT 15/AH=24h, the AMI PCI BIOS
- version 1.00.05.AX1 compares whether AL==03h instead of AL>=03h,
- thus causing a random branch on any value of AL greater than 3.
- SeeAlso: AX=2402h
- Bitfields for A20 gate support status:
- Bit(s) Description (Table 00462)
- 0 supported on keyboard controller
- 1 supported with bit 1 of I/O port 92h
- 14-2 reserved
- 15 additional data is available (location not yet defined)
- --------T-153000-----------------------------
- INT 15 - Object Kernel for DOS - INSTALLATION CHECK
- AX = 3000h
- Return: AX:BX = 4F42h:4A21h ('OBJ!') if installed
- CX = resident segment
- Program: the Object Kernel is a program by M.W. Pieters which is currently
- under development
- Note: Central Point's CPBACKUP v9 calls INT 15/AX=3000h at startup, but it
- may be checking for a different program's presence
- SeeAlso: AX=3001h,AX=3008h
- --------T-153001-----------------------------
- INT 15 - Object Kernel for DOS - GET STATUS BLOCK
- AX = 3001h
- Return: AX = FFFFh
- ES:DI -> status block
- SeeAlso: AX=3000h,AX=3008h
- --------T-153002-----------------------------
- INT 15 - Object Kernel for DOS - KILL PROCESS
- AX = 3002h
- (not yet implemented)
- SeeAlso: AX=3000h
- --------T-153003-----------------------------
- INT 15 - Object Kernel for DOS - STOP PROCESS
- AX = 3003h
- (not yet implemented)
- SeeAlso: AX=3000h
- --------T-153004-----------------------------
- INT 15 - Object Kernel for DOS - START PROCESS
- AX = 3004h
- (not yet implemented)
- SeeAlso: AX=3000h
- --------T-153005-----------------------------
- INT 15 - Object Kernel for DOS - RESTART PROCESS
- AX = 3005h
- (not yet implemented)
- SeeAlso: AX=3000h
- --------T-153006-----------------------------
- INT 15 - Object Kernel for DOS - EXECUTE PROCESS
- AX = 3006h
- (not yet implemented)
- SeeAlso: AX=3000h
- --------T-153007-----------------------------
- INT 15 - Object Kernel for DOS - LIST PROCESSES
- AX = 3007h
- (not yet implemented)
- SeeAlso: AX=3000h
- --------T-153008-----------------------------
- INT 15 - Object Kernel for DOS - SWITCH ObjectKernel ON/OFF
- AX = 3008h
- BH = new state (00h disabled, 01h enabled)
- Return: AX = FFFFh
- SeeAlso: AX=3000h,AX=3009h
- --------T-153009-----------------------------
- INT 15 - Object Kernel for DOS - RESERVED FOR FUTURE USE
- AX = 3009h to 30FFh
- SeeAlso: AX=3000h
- Program: the Object Kernel is a program by M.W. Pieters which is currently
- under development
- ----------153D-------------------------------
- INT 15 - IBM SurePath BIOS - Officially "Private" Function
- AH = 3Dh
- SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
- ----------153E-------------------------------
- INT 15 - IBM SurePath BIOS - Officially "Private" Function
- AH = 3Eh
- SeeAlso: AH=3Dh"IBM",AH=3Fh"IBM"
- ----------153F-------------------------------
- INT 15 - IBM SurePath BIOS - Officially "Private" Function
- AH = 3Fh
- SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
- --------B-1540-------------------------------
- INT 15 - SYSTEM - READ/MODIFY PROFILES (CONVERTIBLE)
- AH = 40h
- AL = subfunction
- 00h get system profile in CX and BX
- 01h set system profile from CX and BX
- 02h get internal modem profile in BX
- 03h set internal modem profile from BX
- Return: CF clear if successful
- AH = 00h
- CF set on error
- AH = status (80h = profile execution failed)
- --------V-154000-----------------------------
- INT 15 - Compaq SLT/286 or Portable 386 - READ LCD/PLASMA TIMEOUT
- AX = 4000h
- Return: AX = 4000h
- CL = timeout in minutes, 00h if disabled
- SeeAlso: AX=4001h,AX=4600h
- --------V-154001-----------------------------
- INT 15 - Compaq SLT/286 or Portable 386 - SET LCD/PLASMA TIMEOUT
- AX = 4001h
- CL = timeout in minutes, 00h to disable
- Return: AL = status
- 00h timeout modified
- 01h timeout cannot be modified
- 40h timeout cannot be modified
- CL = timeout in minutes, 00h if disabled
- SeeAlso: AX=4000h,AX=4601h
- --------B-1541-------------------------------
- INT 15 - SYSTEM - WAIT ON EXTERNAL EVENT (CONVERTIBLE and some others)
- AH = 41h
- AL = condition type (see #00463)
- BH = condition compare or mask value
- BL = timeout value times 55 milliseconds
- 00h means no timeout
- DX = I/O port address if AL bit 4 set
- ES:DI -> user byte if AL bit 4 clear
- Return: after event or timeout occurs
- Note: call AH=C0h and examine bit 3 of feature byte 1 to determine whether
- this function is supported
- SeeAlso: AH=83h,AH=86h,AH=C0h
- Bitfields for external event wait condition type:
- Bit(s) Description (Table 00463)
- 0-2 condition to wait for
- 0 any external event
- 1 compare and return if equal
- 2 compare and return if not equal
- 3 test and return if not zero
- 4 test and return if zero
- 3 reserved
- 4 1=port address, 0=user byte
- 5-7 reserved
- --------B-1542-------------------------------
- INT 15 - SYSTEM - REQUEST POWER OFF (CONVERTIBLE,HP 95LX)
- AH = 42h
- AL = suspend type
- 00h to use system profile
- 01h to force suspend regardless of system profile
- Return: nothing
- Note: the HP 95LX apparently suspends regardless of the value in AL; on
- power-up, execution will resume following the instruction calling
- this function
- SeeAlso: AH=44h
- --------b-154280-----------------------------
- INT 15 - Compaq SLT/286 - ENTER STANDBY
- AX = 4280h
- Return: AH = 42h
- CF clear if successful
- CF set if unable to enter standby
- SeeAlso: AX=4600h,AX=5307h/CX=0001h"STAND-BY"
- --------B-1543-------------------------------
- INT 15 - SYSTEM - READ SYSTEM STATUS (CONVERTIBLE)
- AH = 43h
- Return: AL = status bits (see #00464)
- Bitfields for Convertible system status:
- Bit(s) Description (Table 00464)
- 7 power low
- 6 external power in use
- 5 standby power lost
- 4 power activated by alarm
- 3 internal modem powered on
- 2 RS232/parallel adapter powered on
- 1 reserved
- 0 LCD detached
- --------B-1544-------------------------------
- INT 15 - SYSTEM - (DE)ACTIVATE INTERNAL MODEM POWER (CONVERTIBLE)
- AH = 44h
- AL = new modem power state (00h power off, 01h power on)
- Return: nothing
- SeeAlso: AH=42h
- --------b-1544C0-----------------------------
- INT 15 - Olivetti Quaderno - INITIALIZE DIGITAL SIGNAL PROCESSING???
- AX = 44C0h
- ES:DI -> new DSP procedure (exchanged with CMOS[28h])
- ES:SI -> ??? buffer
- Return: ES:DI -> old DSP procedure
- ES:SI buffer filled with ten bytes from CMOS (addresses 14h-1Ch)
- followed by 00h (addresses 15h-1Ch copied only if less than 21h)
- Note: this function is also supported by XBIOS.COM
- SeeAlso: AX=44C9h
- --------b-1544C1-----------------------------
- INT 15 - Olivetti Quaderno - ???
- AX = 44C1h
- ???
- Return: ???
- Note: this function is also supported by XBIOS.COM
- SeeAlso: AX=44C9h
- --------b-1544C2-----------------------------
- INT 15 - Olivetti Quaderno - ???
- AX = 44C2h
- DL = byte to be written to I/O port 350h
- Note: this function is also supported by XBIOS.COM
- SeeAlso: AX=44C3h,AX=44C9h
- --------b-1544C3-----------------------------
- INT 15 - Olivetti Quaderno - GET ???
- AX = 44C3h
- Return: DH = bitfields (see #00465)
- DL = value read from I/O port 350h
- Note: this function is also supported by XBIOS.COM
- SeeAlso: AX=44C2h,AX=44C9h
- Bitfields for Olivetti Quaderno ???:
- Bit(s) Description (Table 00465)
- 5-7 5-7 read from I/O port 351h
- 2-4 zero
- 1-0 "tres complique"
- --------b-1544C4-----------------------------
- INT 15 - Olivetti Quaderno - ???
- AX = 44C4h and 44C5h
- ???
- Return: ???
- Note: this function is also supported by XBIOS.COM
- SeeAlso: AX=44C9h
- --------b-1544C6-----------------------------
- INT 15 - Olivetti Quaderno - READ LCD
- AX = 44C6h
- Return: DX = FFFFh clock is displayed on LCD display
- DX = other: hex number displayed in first four positions of display
- BH = left alphanumeric character on display (see #00466)
- BL = right alphanumeric character on display (see #00466)
- CL = colon flags (see #00467)
- Notes: the LCD display has the format HH:HH:AA, where H is a hex digit and A
- is an alphanumeric character
- this function is also supported by XBIOS.COM
- SeeAlso: AX=44C7h,AX=44C9h
- (Table 00466)
- Values for Olivetti Quaderno LCD alphanumeric characters:
- 00h-0Fh hex digit
- 2Bh "+"
- 2Dh "-"
- 30h-39h "0" to "9"
- 41h-5Ah "A" to "Z"
- 61h-6Ah "a" to "z"
- else blank
- Bitfields for Olivetti Quaderno LCD colon flags:
- Bit(s) Description (Table 00467)
- 0 left colon on
- 1 right colon on
- 2-7 unused
- --------b-1544C7-----------------------------
- INT 15 - Olivetti Quaderno - WRITE LCD
- AX = 44C7h
- DX = hex display
- FFFFh display clock and "HI", "Md", or "Lo"
- BH,BL,CL unused
- other: display specified hex number in first four positions
- BH = left alphanumeric character on display (see #00466)
- BL = right alphanumeric character on display (see #00466)
- CL = colon flags (see #00467)
- Return: nothing
- Note: this function is also supported by XBIOS.COM
- SeeAlso: AX=44C6h
- --------b-1544C8-----------------------------
- INT 15 - Olivetti Quaderno - ???
- AX = 44C8h
- CL = ??? (00h,02h,21h)
- CH = ???
- ???
- Return: ???
- Note: this function is also supported by XBIOS.COM
- SeeAlso: AX=44C9h
- --------b-1544C9-----------------------------
- INT 15 - Olivetti Quaderno - GET XBIOS VERSION
- AX = 44C9h
- Return: AL = major version
- AH = minor version
- Note: this function is also supported by XBIOS.COM
- --------B-1544F1-----------------------------
- INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK
- AX = 44F1h
- DS:DX -> byte with 00h ???
- Return: ???
- Note: used by Toshiba BIOS setup utility TSETUP.EXE to distinguish
- between USER and SUPERVISOR security level
- SeeAlso: AX=44F2h,AX=44F3h
- --------B-1544F2BX0604-----------------------
- INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK
- AX = 44F2h
- BX = 0604h ???
- Return: CF = ???
- AH = ???
- DX = ???
- Note: used by Toshiba BIOS setup utility TSETUP.EXE to distinguish
- between USER and SUPERVISOR security level
- SeeAlso: AX=44F1h,AX=44F3h
- --------B-1544F3-----------------------------
- INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK
- AX = 44F3h
- DS:DX -> byte with 00h or 01h ???
- Return: DS:DX -> changed ???
- Note: used by Toshiba BIOS setup utility TSETUP.EXE to distinguish
- between USER and SUPERVISOR security level
- SeeAlso: AX=44F1h,AX=44F2h
- --------b-1545-------------------------------
- INT 15 U - HP 100LX/200LX - SET DISPLAY CONTROL STATUS
- AH = 45h
- AL = new display control status
- bit 0: DISPCTL flag +C instead of -C
- bit 1: DISPCTL flag +K instead of -K
- SeeAlso: AH=46h"HP",AH=47h"HP"
- --------b-1546-------------------------------
- INT 15 U - HP 100LX/200LX - SET POWER OFF TIMEOUT
- AH = 46h
- BX = timeout value in ticks
- 0000h inhibit auto power off
- Note: the 200LX default timeout is 0CCDh = 3277 ticks = approx. 3 min.
- SeeAlso: AH=45h"HP",AH=47h"HP"
- --------b-154600-----------------------------
- INT 15 - Compaq SLT/286 - READ POWER CONSERVATION/MODEM CONFIGURATION
- AX = 4600h
- Return: AH = modem configuration information (see #00468)
- AL = power conservation status information (see #00469)
- BH = default system inactivity timeout (1-21 minutes)
- BL = current system inactivity timeout (1-21 minutes)
- CH = default video display inactivity timeout (1-63 minutes)
- CL = current video display inactivity timeout (1-63 minutes)
- DH = default fixed disk drive inactivity timeout (1-21 minutes)
- DL = current fixed disk drive inactivity timeout (1-21 minutes)
- SeeAlso: AX=4280h,AX=4601h,INT 77
- Bitfields for Compaq SLT/286 modem configuration information:
- Bit(s) Description (Table 00468)
- 0 powerup state (0 off, 1 on)
- 1 modem installed
- 2 IRQ line assignment (0 IRQ 4, 1 IRQ 3)
- 3 COM port assignment (0 = COM 2, 1 = COM 1)
- 4 modem state (0 not assigned, 1 assigned)
- 5 modem is on
- Bitfields for Compaq SLT/286 power conservation status:
- Bit(s) Description (Table 00469)
- 0 power source (0 internal, 1 external)
- 1-2 low battery state
- 00 no low battery condition
- 01 low battery 1
- 10 reserved
- 11 low battery 2
- 3-4 power conservation mode
- 00 automatic, 01 on, 10 off, 11 reserved
- --------b-154601-----------------------------
- INT 15 - Compaq SLT/286 - MODIFY POWER CONSERVATION/MODEM CONFIGURATION
- AX = 4601h
- BL = system inactivity timeout (1-21 minutes)
- FFh do not change
- CL = video display inactivity timeout (1-63 minutes)
- FFh do not change
- DL = current fixed disk drive inactivity timeout (1-21 minutes)
- FFh do not change
- DH = new modem state (00h turn off, 01h turn on, FFh don't change)
- Return: CF clear if successful
- AH = 00h
- BL = current system inactivity timeout (1-21 minutes)
- CL = current video display inactivity timeout (1-63 minutes)
- DL = current fixed disk drive inactivity timeout (1-21 minutes)
- DH = modem state (FFh unchanged, 00h turned off, 01h turned on)
- CF set on error
- AH = error code
- 01h input is out of range
- 02h no modem present
- SeeAlso: AX=4600h,INT 77
- --------b-154604-----------------------------
- INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - GET ???
- AX = 4604h
- Return: CF clear if successful
- AL = byte read from I/O port 03F8h
- CF set on error (not supported)
- AH = 86h (unsupported function)
- Note: also supported by 7/26/93 LTE Lite 386 ROM
- --------b-154605-----------------------------
- INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - ???
- AX = 4605h
- Return: CF clear if successful
- CF set on error (not supported)
- AH = 86h (unsupported function)
- Note: this function is a NOP (other than clearing CF) in the 08/05/93 version
- of the Contura 486/486c/486cx and "Aladdin" ROM, and the 7/26/93
- LTE Lite 386 ROM
- --------b-1547-------------------------------
- INT 15 U - HP 100LX/200LX - GET/SET DISPLAY CONTRAST
- AH = 47h
- AL = subfunction
- 00h set contrast
- BL = new contrast
- (00h-0Fh, 0Fh is darkest, 10h-FFh are same as 0Fh)
- other get current contrast
- Return: AL = contrast (00h-0Fh, 0Fh is darkest)
- Note: may be for backward compatibility with HP95LX, as INT 15/AH=62h does
- substantially the same thing as this function
- SeeAlso: AH=45h"HP",AH=48h"HP",AH=62h"HP"
- --------b-1548-------------------------------
- INT 15 U - HP 100LX/200LX - SET BUZZER VOLUME
- AH = 48h
- AL = volume (00h-03h; 03h is loudest, 04h-FFh are same as 03h)
- SeeAlso: AH=47h"HP"
- --------S-1549-------------------------------
- INT 15 U - HP 100LX/200LX - SERIAL INTERFACE SELECT
- AH = 49h
- AL = serial interface
- 00h wired (COM1)
- 01h infrared
- Note: interface should only be changed in deactivated state (see AH=4Ah)
- SeeAlso: AH=4Ah"HP"
- --------J-154900-----------------------------
- INT 15 - Far East MS-DOS - GET BIOS TYPE
- AX = 4900h
- Return: CF clear if successful
- AH = 00h
- BL = BIOS mode
- 00h DOS/V
- 01h standard DBCS DOS (hardware DBCS support)
- CF set on error
- AH = 86h (function not supported)
- Note: in practice, DOS/J returns AH=86h; AX DOS does not support this call
- SeeAlso: AH=50h,INT 21/AH=30h
- --------S-154A-------------------------------
- INT 15 U - HP 100LX/200LX - SERIAL INTERFACE CONTROL
- AH = 4Ah
- AL = control
- 00h deactivate
- 01h activate
- Note: interface selected with AH=49h will be (de)activated
- SeeAlso: AH=49h"HP",AH=4Bh"HP"
- --------b-154B-------------------------------
- INT 15 U - HP 100LX/200LX - ADJUST SYSTEM TIME
- AH = 4Bh
- Desc: adjust system time based on real-time clock
- SeeAlso: AH=4Ah"HP",INT 1A/AH=02h,INT 21/AH=2Ch
- --------b-154DD4-----------------------------
- INT 15 - HP 95LX/100LX/200LX - INSTALLATION CHECK
- AX = 4DD4h
- Return: BX = 4850h ("HP") if HP 95LX/100LX/200LX
- CX = model
- 0101h HP 95LX
- 0102h HP 100LX/200LX
- DH = ???
- 02h HP 200LX 2MB BIOS 1.01 A D german
- DL = ???
- 00h HP 95LX
- 01h HP 200LX 2MB BIOS 1.01 A D german
- SeeAlso: INT 0B"HP 95LX",INT 0F"HP 95LX",INT 5F/AH=00h,INT 60/DI=0100h
- SeeAlso: INT 61"HP 95LX"
- --------b-154E-------------------------------
- INT 15 - HP 95LX - ENABLE/DISABLE LIGHT SLEEP
- AH = 4Eh
- AL = light sleep
- 00h disabled
- 01h enabled
- Note: when light sleep is disabled, the system will continue running at full
- speed; when enabled, it may automatically slow to conserve batteries
- SeeAlso: INT 06"HP 95LX",INT 60/DI=0100h
- ----------154E-------------------------------
- INT 15 - IBM SurePath BIOS - Officially "Private" Function
- AH = 4Eh
- SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
- --------B-154F-------------------------------
- INT 15 C - KEYBOARD - KEYBOARD INTERCEPT (AT model 3x9,XT2,XT286,CONV,PS)
- AH = 4Fh
- AL = hardware scan code (see #00006)
- CF set
- Return: CF set to continue processing scan code
- AL = possibly-altered hardware scan code (see #00006)
- CF clear
- scan code should be ignored
- Notes: called by INT 09 handler to translate scan codes; the INT 09 code does
- not examine the scan code it reads from the keyboard until after
- this function returns. This permits software to rearrange the
- keyboard; for example, swapping the CapsLock and Control keys, or
- turning the right Shift key into Enter.
- DOS 6 KEYB.COM will not pass through this function if Ctrl-Alt-Del is
- pressed and a SmartDrive v4-compatible cache is installed which has
- dirty cache buffers; some other disk caches such as HyperDisk
- operate similarly in order to prevent loss of cached data which has
- not yet been written to disk
- IBM classifies this function as required
- SeeAlso: INT 09,INT 15/AH=C0h
- --------J-1550-------------------------------
- INT 15 - DOS/V - FONT SUBSYSTEM ACCESS
- AH = 50h
- AL = which function address to retrieve
- 00h "read font" function
- 01h "write font" function
- BL = 00h
- BH = character size (00h single-byte, 01h double-byte)
- DH = width of character cell
- DL = height of character cell
- BP = code page (see #00470)
- Return: CF clear if successful
- AH = 00h
- ES:BX -> requested function's address
- CF set on error
- AH = error code (see #00471)
- SeeAlso: AH=49h
- (Table 00470)
- Values for DOS/V code page:
- 0 default
- 437 US English
- 932 Japanese
- 934 Korea
- 936 China
- 938 Taiwan
- SeeAlso: #01757
- (Table 00471)
- Values for DOS/V error code:
- 01h invalid font type in BH
- 02h BL not zero
- 03h invalid font size
- 04h invalid code page
- 80h unsupported function (PC)
- 86h unsupported function (XT)
- SeeAlso: #01680
- --------T-1550-------------------------------
- INT 15 - VMIX v2.???+ - "sys_vm_page" - SET NEW VIRTUAL PAGE TABLE
- AH = 50h
- BX = segment of page directory table
- CX = page number of page table
- SeeAlso: AH=10h"VMiX",AH=51h"VMiX",AH=52h"VMiX"
- --------T-1551-------------------------------
- INT 15 - VMiX v2.???+ - "sys_vm_func" - EXECUTE FUNCTION IN PROTECTED MODE
- AH = 51h
- STACK: DWORD selector:offset of function
- Return: registers as returned by function
- Note: executes function with privilege level 0 (highest privilege)
- SeeAlso: AH=10h"VMiX",AH=52h"VMiX"
- --------B-155101-----------------------------
- INT 15 - SYSTEM - later PS/2s - EXPANSION UNIT, RETURN CONFIGURATION NUMBER
- AX = 5101h
- Return: CF set if successful
- AH = 00h
- AL = current configuration number
- 00h system unit only
- FFh configuration not recognized
- BX = status flag
- bits 0-14: reserved
- bit 15: additional data is available (location TBD)
- CF clear on error
- AH = status
- 01h expansion unit is not present
- 86h function not supported
- Note: CF convention is the reverse of the standard convention for this
- interrupt. (Perhaps a typo in the IBM BIOS Tech Ref?)
- --------T-1552-------------------------------
- INT 15 - VMiX v2.???+ - "sys_vm_init" - INITIALIZE PROTECTED-MODE ENVIRONMENT
- AH = 52h
- SeeAlso: AH=50h"VMiX",AH=51h"VMiX"
- --------d-1552-------------------------------
- INT 15 C - IBM/MS INT 13 Extensions - MEDIA EJECT INTERCEPT
- AH = 52h
- DL = drive number
- Return: CF clear if OK to eject media
- AH = 00h
- CF set if ejection disallowed
- AH = error code (B1h,B3h) (see #00234)
- Note: called by the IBM/MS INT 13 Extensions driver/BIOS when an ejection
- request is made
- SeeAlso: INT 13/AH=46h"INT 13 Extensions"
- --------p-155300-----------------------------
- INT 15 - Advanced Power Management v1.0+ - INSTALLATION CHECK
- AX = 5300h
- BX = device ID of system BIOS (0000h)
- Return: CF clear if successful
- AH = major version (BCD)
- AL = minor version (BCD)
- BX = 504Dh ("PM")
- CX = flags (see #00472)
- CF set on error
- AH = error code (06h,09h,86h) (see #00473)
- BUG: early versions of the Award Modular BIOS with built-in APM support
- reportedly do not set BX on return
- Bitfields for APM flags:
- Bit(s) Description (Table 00472)
- 0 16-bit protected mode interface supported
- 1 32-bit protected mode interface supported
- 2 CPU idle call reduces processor speed
- 3 BIOS power management disabled
- 4 BIOS power management disengaged (APM v1.1)
- 5-7 reserved
- (Table 00473)
- Values for APM error code:
- 01h power management functionality disabled
- 02h interface connection already in effect
- 03h interface not connected
- 04h real-mode interface not connected
- 05h 16-bit protected-mode interface already connected
- 06h 16-bit protected-mode interface not supported
- 07h 32-bit protected-mode interface already connected
- 08h 32-bit protected-mode interface not supported
- 09h unrecognized device ID
- 0Ah invalid parameter value in CX
- 0Bh (APM v1.1) interface not engaged
- 0Ch (APM v1.2) function not supported
- 0Dh (APM v1.2) Resume Timer disabled
- 0Eh-1Fh reserved for other interface and general errors
- 20h-3Fh reserved for CPU errors
- 40h-5Fh reserved for device errors
- 60h can't enter requested state
- 61h-7Fh reserved for other system errors
- 80h no power management events pending
- 81h-85h reserved for other power management event errors
- 86h APM not present
- 87h-9Fh reserved for other power management event errors
- A0h-FEh reserved
- FFh undefined
- --------p-155301-----------------------------
- INT 15 - Advanced Power Management v1.0+ - CONNECT REAL-MODE INTERFACE
- AX = 5301h
- BX = device ID of system BIOS (0000h)
- Return: CF clear if successful
- CF set on error
- AH = error code (02h,05h,07h,09h) (see #00473)
- Note: on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
- compatibility mode until it is informed that the user supports a
- newer version of APM (see AX=530Eh)
- SeeAlso: AX=5302h,AX=5303h,AX=5304h
- --------p-155302-----------------------------
- INT 15 R - Advanced Power Management v1.0+ - CONNECT 16-BIT PROTMODE INTERFACE
- AX = 5302h
- BX = device ID of system BIOS (0000h)
- Return: CF clear if successful
- AX = real-mode segment base address of protected-mode 16-bit code
- segment
- BX = offset of entry point
- CX = real-mode segment base address of protected-mode 16-bit data
- segment
- ---APM v1.1---
- SI = APM BIOS code segment length
- DI = APM BIOS data segment length
- CF set on error
- AH = error code (02h,05h,06h,07h,09h) (see #00473)
- Notes: the caller must initialize two consecutive descriptors with the
- returned segment base addresses; these descriptors must be valid
- whenever the protected-mode interface is called, and will have
- their limits arbitrarily set to 64K.
- the protected mode interface is invoked by making a far call with the
- same register values as for INT 15; it must be invoked while CPL=0,
- the code segment descriptor must have a DPL of 0, the stack must be
- in a 16-bit segment and have enough room for BIOS use and possible
- interrupts, and the current I/O permission bit map must allow access
- to the I/O ports used for power management.
- functions 00h-03h are not available from protected mode
- on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
- compatibility mode until it is informed that the user supports a
- newer version of APM (see AX=530Eh)
- SeeAlso: AX=5301h,AX=5303h,AX=5304h
- --------p-155303-----------------------------
- INT 15 - Advanced Power Management v1.0+ - CONNECT 32-BIT PROTMODE INTERFACE
- AX = 5303h
- BX = device ID of system BIOS (0000h)
- Return: CF clear if successful
- AX = real-mode segment base address of protected-mode 32-bit code
- segment
- EBX = offset of entry point
- CX = real-mode segment base address of protected-mode 16-bit code
- segment
- DX = real-mode segment base address of protected-mode 16-bit data
- segment
- ---APM v1.1---
- SI = APM BIOS code segment length
- DI = APM BIOS data segment length
- CF set on error
- AH = error code (02h,05h,07h,08h,09h) (see #00473)
- Notes: the caller must initialize three consecutive descriptors with the
- returned segment base addresses for 32-bit code, 16-bit code, and
- 16-bit data, respectively; these descriptors must be valid whenever
- the protected-mode interface is called, and will have their limits
- arbitrarily set to 64K.
- the protected mode interface is invoked by making a far call to the
- 32-bit code segment with the same register values as for INT 15; it
- must be invoked while CPL=0, the code segment descriptor must have a
- DPL of 0, the stack must be in a 32-bit segment and have enough room
- for BIOS use and possible interrupts, and the current I/O permission
- bit map must allow access to the I/O ports used for power management.
- functions 00h-03h are not available from protected mode
- on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
- compatibility mode until it is informed that the user supports a
- newer version of APM (see AX=530Eh)
- SeeAlso: AX=5301h,AX=5302h,AX=5304h
- --------p-155304-----------------------------
- INT 15 - Advanced Power Management v1.0+ - DISCONNECT INTERFACE
- AX = 5304h
- BX = device ID of system BIOS (0000h)
- Return: CF clear if successful
- CF set on error
- AH = error code (03h,09h) (see #00473)
- SeeAlso: AX=5301h,AX=5302h,AX=5303h
- --------p-155305-----------------------------
- INT 15 - Advanced Power Management v1.0+ - CPU IDLE
- AX = 5305h
- Return: CF clear if successful (after system leaves idle state)
- CF set on error
- AH = error code (03h,0Bh) (see #00473)
- Notes: call when the system is idle and should be suspended until the next
- system event or interrupt
- should not be called from within a hardware interrupt handler to avoid
- reentrance problems
- if an interrupt causes the system to resume normal processing, the
- interrupt may or may not have been handled when the BIOS returns
- from this call; thus, the caller should allow interrupts on return
- interrupt handlers may not retain control if the BIOS allows
- interrupts while in idle mode even if they are able to determine
- that they were called from idle mode
- the caller should issue this call continuously in a loop until it needs
- to perform some processing of its own
- SeeAlso: AX=1000h,AX=5306h,INT 2F/AX=1680h
- --------p-155306-----------------------------
- INT 15 - Advanced Power Management v1.0+ - CPU BUSY
- AX = 5306h
- Return: CF clear if successful
- CF set on error
- AH = error code (03h,0Bh) (see #00473)
- Notes: called to ensure that the system runs at full speed even on systems
- where the BIOS is unable to recognize increased activity (especially
- if interrupts are hooked by other programs and not chained to the
- BIOS)
- this call may be made even when the system is already running at full
- speed, but it will create unnecessary overhead
- should not be called from within a hardware interrupt handler to avoid
- reentrance problems
- SeeAlso: AX=5305h
- --------p-155307-----------------------------
- INT 15 - Advanced Power Management v1.0+ - SET POWER STATE
- AX = 5307h
- BX = device ID (see #00474)
- CX = system state ID (see #00475)
- Return: CF clear if successful
- CF set on error
- AH = error code (01h,03h,09h,0Ah,0Bh,60h) (see #00473)
- Note: should not be called from within a hardware interrupt handler to avoid
- reentrance problems
- SeeAlso: AX=530Ch
- (Table 00474)
- Values for APM device IDs:
- 0000h system BIOS
- 0001h all devices for which the system BIOS manages power
- 01xxh display (01FFh for all attached display devices)
- 02xxh secondary storage (02FFh for all attached secondary storage devices)
- 03xxh parallel ports (03FFh for all attached parallel ports)
- 04xxh serial ports (04FFh for all attached serial ports)
- ---APM v1.1+ ---
- 05xxh network adapters (05FFh for all attached network adapters)
- 06xxh PCMCIA sockets (06FFh for all)
- 0700h-7FFFh reserved
- 80xxh system battery devices (APM v1.2)
- 8100h-DFFFh reserved
- Exxxh OEM-defined power device IDs
- F000h-FFFFh reserved
- (Table 00475)
- Values for system state ID:
- 0000h ready (not supported for device ID 0001h)
- 0001h stand-by
- 0002h suspend
- 0003h off (not supported for device ID 0001h in APM v1.0)
- ---APM v1.1---
- 0004h last request processing notification (only for device ID 0001h)
- 0005h last request rejected (only for device ID 0001h)
- 0006h-001Fh reserved system states
- 0020h-003Fh OEM-defined system states
- 0040h-007Fh OEM-defined device states
- 0080h-FFFFh reserved device states
- --------p-155307CX0001-----------------------
- INT 15 - Advanced Power Management v1.0+ - SYSTEM STAND-BY
- AX = 5307h
- CX = 0001h
- BX = 0001h (device ID for all power-managed devices)
- Return: CF clear
- Notes: puts the entire system into stand-by mode; normally called in response
- to a System Stand-by Request notification after any necessary
- processing, but may also be invoked at the caller's discretion
- should not be called from within a hardware interrupt handler to avoid
- reentrance problems
- the stand-by state is typically exited on an interrupt
- SeeAlso: AX=4280h,AX=5307h/CX=0002h"SUSPEND",AX=5307h/CX=0003h,AX=530Bh
- --------p-155307CX0002-----------------------
- INT 15 - Advanced Power Management v1.0+ - SUSPEND SYSTEM
- AX = 5307h
- CX = 0002h
- BX = 0001h (device ID for all power-managed devices)
- Return: after system is resumed
- CF clear
- Notes: puts the entire system into a low-power suspended state; normally
- called in response to a Suspend System Request notification after
- any necessary processing, but may also be invoked at the caller's
- discretion
- should not be called from within a hardware interrupt handler to avoid
- reentrance problems
- the caller may need to update its date and time values because the
- system could have been suspended for a long period of time
- SeeAlso: AX=5307h/CX=0001h"STAND-BY",AX=530Bh
- --------p-155307CX0003-----------------------
- INT 15 - Advanced Power Management v1.2 - TURN OFF SYSTEM
- AX = 5307h
- CX = 0003h
- BX = 0001h (device ID for all power-managed devices)
- Return: after system is resumed
- CF clear
- Notes: if supported by the system's power supply, turns off the system power
- SeeAlso: AX=5307h/CX=0001h"STAND-BY",AX=530Bh
- --------p-155308-----------------------------
- INT 15 - Advanced Power Management v1.0+ - ENABLE/DISABLE POWER MANAGEMENT
- AX = 5308h
- BX = device ID for all devices power-managed by APM
- 0001h (APM v1.1+)
- FFFFh (APM v1.0)
- CX = new state
- 0000h disabled
- 0001h enabled
- Return: CF clear if successful
- CF set on error
- AH = error code (01h,03h,09h,0Ah,0Bh) (see #00473)
- Notes: when power management is disabled, the system BIOS will not
- automatically power down devices, enter stand-by or suspended mode,
- or perform any power-saving actions in response to AX=5305h calls
- should not be called from within a hardware interrupt handler to avoid
- reentrance problems
- the APM BIOS should never be both disabled and disengaged at the same
- time
- SeeAlso: AX=5309h,AX=530Dh,AX=530Fh
- --------p-155309-----------------------------
- INT 15 - Advanced Power Management v1.0+ - RESTORE POWER-ON DEFAULTS
- AX = 5309h
- BX = device ID for all devices power-managed by APM
- 0001h (APM v1.1)
- FFFFh (APM v1.0)
- Return: CF clear if successful
- CF set on error
- AH = error code (03h,09h,0Bh) (see #00473)
- Note: should not be called from within a hardware interrupt handler to avoid
- reentrance problems
- SeeAlso: AX=5308h
- --------p-15530A-----------------------------
- INT 15 - Advanced Power Management v1.0+ - GET POWER STATUS
- AX = 530Ah
- BX = device ID
- 0001h all devices power-managed by APM
- 80xxh specific battery unit number XXh (01h-FFh) (APM v1.2)
- Return: CF clear if successful
- BH = AC line status
- 00h off-line
- 01h on-line
- 02h on backup power (APM v1.1)
- FFh unknown
- other reserved
- BL = battery status (see #00476)
- CH = battery flag (APM v1.1+) (see #00477)
- CL = remaining battery life, percentage
- 00h-64h (0-100) percentage of full charge
- FFh unknown
- DX = remaining battery life, time (APM v1.1) (see #00478)
- ---if specific battery unit specified---
- SI = number of battery units currently installed
- CF set on error
- AH = error code (09h,0Ah) (see #00473)
- Notes: should not be called from within a hardware interrupt handler to avoid
- reentrance problems
- supported in real mode (INT 15) and both 16-bit and 32-bit protected
- mode
- (Table 00476)
- Values for APM v1.0+ battery status:
- 00h high
- 01h low
- 02h critical
- 03h charging
- FFh unknown
- other reserved
- SeeAlso: #00477,#00478
- Bitfields for APM v1.1+ battery flag:
- Bit(s) Description (Table 00477)
- 0 high
- 1 low
- 2 critical
- 3 charging
- 4 selected battery not present (APM v1.2)
- 5-6 reserved (0)
- 7 no system battery
- Note: all bits set (FFh) if unknown
- SeeAlso: #00476,#00478
- Bitfields for APM v1.1+ remaining battery life:
- Bit(s) Description (Table 00478)
- 15 time units: 0=seconds, 1=minutes
- 14-0 battery life in minutes or seconds
- Note: all bits set (FFFFh) if unknown
- SeeAlso: #00476,#00477
- --------p-15530B-----------------------------
- INT 15 - Advanced Power Management v1.0+ - GET POWER MANAGEMENT EVENT
- AX = 530Bh
- Return: CF clear if successful
- BX = event code (see #00479)
- CX = event information (APM v1.2) if BX=0003h or BX=0004h
- bit 0: PCMCIA socket was powered down in suspend state
- CF set on error
- AH = error code (03h,0Bh,80h) (see #00473)
- Notes: although power management events are often asynchronous, notification
- will not be made until polled via this call to permit software to
- only receive event notification when it is prepared to process
- power management events; since these events are not very time-
- critical, it should be sufficient to poll once or twice per second
- the critical resume notification is made after the system resumes
- from an emergency suspension; normally, the system BIOS only notifies
- its partner that it wishes to suspend and relies on the partner to
- actually request the suspension, but no notification is made on an
- emergency suspension
- should not be called from within a hardware interrupt handler to avoid
- reentrance problems
- SeeAlso: AX=5307h,AX=5307h/CX=0001h"STAND-BY",AX=5307h/CX=0002h"SUSPEND"
- (Table 00479)
- Values for APM event code:
- 0001h system stand-by request
- 0002h system suspend request
- 0003h normal resume system notification
- 0004h critical resume system notification
- 0005h battery low notification
- ---APM v1.1---
- 0006h power status change notification
- 0007h update time notification
- 0008h critical system suspend notification
- 0009h user system standby request notification
- 000Ah user system suspend request notification
- 000Bh system standby resume notification
- ---APM v1.2---
- 000Ch capabilities change notification (see AX=5310h)
- ------
- 000Dh-00FFh reserved system events
- 01xxh reserved device events
- 02xxh OEM-defined APM events
- 0300h-FFFFh reserved
- --------p-15530C-----------------------------
- INT 15 - Advanced Power Management v1.1+ - GET POWER STATE
- AX = 530Ch
- BX = device ID (see #00474)
- Return: CF clear if successful
- CX = system state ID (see #00475)
- CF set on error
- AH = error code (01h,09h) (see #00473)
- SeeAlso: AX=5307h
- --------p-15530D-----------------------------
- INT 15 - Advanced Power Management v1.1+ - EN/DISABLE DEVICE POWER MANAGEMENT
- AX = 530Dh
- BX = device ID (see #00474)
- CX = function
- 0000h disable power management
- 0001h enable power management
- Return: CF clear if successful
- CF set on error
- AH = error code (01h,03h,09h,0Ah,0Bh) (see #00473)
- Desc: specify whether automatic power management should be active for a
- given device
- SeeAlso: AX=5308h,AX=530Fh
- --------p-15530E-----------------------------
- INT 15 - Advanced Power Management v1.1+ - DRIVER VERSION
- AX = 530Eh
- BX = device ID of system BIOS (0000h)
- CH = APM driver major version (BCD)
- CL = APM driver minor version (BCD) (02h for APM v1.2)
- Return: CF clear if successful
- AH = APM connection major version (BCD)
- AL = APM connection minor version (BCD)
- CF set on error
- AH = error code (03h,09h,0Bh) (see #00473)
- SeeAlso: AX=5300h,AX=5303h
- --------p-15530F-----------------------------
- INT 15 - Advanced Power Management v1.1+ - ENGAGE/DISENGAGE POWER MANAGEMENT
- AX = 530Fh
- BX = device ID (see #00474)
- CX = function
- 0000h disengage power management
- 0001h engage power management
- Return: CF clear if successful
- CF set on error
- AH = error code (01h,09h) (see #00473)
- Notes: unlike AX=5308h, this call does not affect the functioning of the APM
- BIOS
- when cooperative power management is disengaged, the APM BIOS performs
- automatic power management of the system or device
- SeeAlso: AX=5308h,AX=530Dh
- --------p-155310-----------------------------
- INT 15 - Advanced Power Management v1.2 - GET CAPABILITIES
- AX = 5310h
- BX = device ID (see #00474)
- 0000h (APM BIOS)
- other reserved
- Return: CF clear if successful
- BL = number of battery units supported (00h if no system batteries)
- CX = capabilities flags (see #00480)
- CF set on error
- AH = error code (01h,09h,86h) (see #00473)
- Notes: this function is supported via the INT 15, 16-bit protected mode, and
- 32-bit protected mode interfaces; it does not require that a
- connection be established prior to use
- this function will return the capabilities currently in effect, not
- any new settings which have been made but do not take effect until
- a system restart
- SeeAlso: AX=5300h,AX=530Fh,AX=5311h,AX=5312h,AX=5313h
- Bitfields for APM v1.2 capabilities flags:
- Bit(s) Description (Table 00480)
- 15-8 reserved
- 7 PCMCIA Ring Indicator will wake up system from suspend mode
- 6 PCMCIA Ring Indicator will wake up system from standby mode
- 5 Resume on Ring Indicator will wake up system from suspend mode
- 4 Resume on Ring Indicator will wake up system from standby mode
- 3 resume timer will wake up system from suspend mode
- 2 resume timer will wake up system from standby mode
- 1 can enter global suspend state
- 0 can enter global standby state
- --------p-155311-----------------------------
- INT 15 - Advanced Power Management v1.2 - GET/SET/DISABLE RESUME TIMER
- AX = 5311h
- BX = device ID (see #00474)
- 0000h (APM BIOS)
- other reserved
- CL = function
- 00h disable Resume Timer
- 01h get Resume Timer
- 02h set Resume Timer
- CH = resume time, seconds (BCD)
- DL = resume time, minutes (BCD)
- DH = resume time, hours (BCD)
- SI = resume date (BCD), high byte = month, low byte = day
- DI = resume date, year (BCD)
- Return: CF clear if successful
- ---if getting timer---
- CH = resume time, seconds (BCD)
- DL = resume time, minutes (BCD)
- DH = resume time, hours (BCD)
- SI = resume date (BCD), high byte = month, low byte = day
- DI = resume date, year (BCD)
- CF set on error
- AH = error code (03h,09h,0Ah,0Bh,0Ch,0Dh,86h) (see #00473)
- Notes: this function is supported via the INT 15, 16-bit protected mode, and
- 32-bit protected mode interfaces
- SeeAlso: AX=5300h,AX=5310h,AX=5312h,AX=5313h
- --------p-155312-----------------------------
- INT 15 - Advanced Power Management v1.2 - ENABLE/DISABLE RESUME ON RING
- AX = 5312h
- BX = device ID (see #00474)
- 0000h (APM BIOS)
- other reserved
- CL = function
- 00h disable Resume on Ring Indicator
- 01h enable Resume on Ring Indicator
- 02h get Resume on Ring Indicator status
- Return: CF clear if successful
- CX = resume status (0000h disabled, 0001h enabled)
- CF set on error
- AH = error code (03h,09h,0Ah,0Bh,0Ch,86h) (see #00473)
- Notes: this function is supported via the INT 15, 16-bit protected mode, and
- 32-bit protected mode interfaces
- SeeAlso: AX=5300h,AX=5310h,AX=5311h,AX=5313h
- --------p-155313-----------------------------
- INT 15 - Advanced Power Management v1.2 - ENABLE/DISABLE TIMER-BASED REQUESTS
- AX = 5313h
- BX = device ID (see #00474)
- 0000h (APM BIOS)
- other reserved
- CL = function
- 00h disable timer-based requests
- 01h enable timer-based requests
- 02h get timer-based requests status
- Return: CF clear if successful
- CX = timer-based requests status (0000h disabled, 0001h enabled)
- CF set on error
- AH = error code (03h,09h,0Ah,0Bh,86h) (see #00473)
- Notes: this function is supported via the INT 15, 16-bit protected mode, and
- 32-bit protected mode interfaces
- some BIOSes set AH on return even when successful
- SeeAlso: AX=5300h,AX=5310h,AX=5311h,AX=5312h
- --------p-155380BH00-------------------------
- INT 15 - APM SL Enhanced v1.0 - GET SUSPEND/GLOBAL STANDBY MODE
- AX = 5380h
- BH = 00h
- Return: CF clear if successful
- AL = 82360SL Auto Power Off Timer High Count (APWR_TMRH)
- BL = sustdbymode (see #00481)
- SeeAlso: AX=5380h/BH=01h,AX=5380h/BH=02h,AX=5380h/BH=7Fh
- Bitfields for APM SL sustdbymode:
- Bit(s) Description (Table 00481)
- 2 ???
- 1 Auto Power Off Timer Enable (APWR_TMR_EN)
- 0 ???
- --------p-155380BH01-------------------------
- INT 15 - APM SL Enhanced v1.0 - SET SUSPEND/GLOBAL STANDBY MODE
- AX = 5380h
- BH = 01h
- BL = sustdbymode (see #00481)
- Return: CF clear if successful
- SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh
- --------p-155380BH02-------------------------
- INT 15 - APM SL Enhanced v1.0 - GET GLOBAL STANDBY TIMER
- AX = 5380h
- BH = 02h
- Return: CF clear if successful
- SI:DI = timer count in seconds (actually 1.024 seconds)
- Desc: reads the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers
- SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=03h,AX=5380h/BH=04h,AX=5380h/BH=7Fh
- --------p-155380BH03-------------------------
- INT 15 - APM SL Enhanced v1.0 - SET GLOBAL STANDBY TIMER
- AX = 5380h
- BH = 03h
- SI:DI = timer count in seconds (actually 1.024 seconds)
- Return: CF clear if successful
- Desc: sets the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers
- Note: the maximum timer count is 268431 seconds
- SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=7Fh
- --------p-155380BH04-------------------------
- INT 15 - APM SL Enhanced v1.0 - GET AUTO POWER OFF TIMER
- AX = 5380h
- BH = 04h
- Return: CF clear if successful
- SI:DI = timer count in seconds (actually 1.024 seconds)
- Desc: reads the value of 82360SL APWR_TMRH & APWR_TMRL registers
- SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=05h,AX=5380h/BH=06h,AX=5380h/BH=7Fh
- --------p-155380BH05-------------------------
- INT 15 - APM SL Enhanced v1.0 - SET AUTO POWER OFF TIMER
- AX = 5380h
- BH = 05h
- SI:DI = timer count in seconds (actually 1.024 seconds)
- Return: CF clear if successful
- Desc: sets the value of 82360SL APWR_TMRH & APWR_TMRL registers
- Note: the maximum timer count is 134213 seconds
- SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=7Fh
- --------p-155380BH06-------------------------
- INT 15 - APM SL Enhanced v1.0 - GET RESUME CONDITION
- AX = 5380h
- BH = 06h
- Return: CF clear if successful
- BL = resume condition (see #00482)
- Desc: reads the value of 82360SL RESUME_MASK register
- SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=07h,AX=5380h/BH=08h,AX=5380h/BH=7Fh
- Bitfields for APM SL resume condition:
- Bit(s) Description (Table 00482)
- 7-2 reserved (0)
- 1 alarm enabled (resume on CMOS alarm)
- 0 ring enabled
- --------p-155380BH07-------------------------
- INT 15 - APM SL Enhanced v1.0 - SET RESUME CONDITION
- AX = 5380h
- BH = 07h
- BL = resume condition (see #00482)
- Return: CF clear if successful
- Desc: sets the value of 82360SL RESUME_MASK register
- SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=7Fh
- --------p-155380BH08-------------------------
- INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT TIME
- AX = 5380h
- BH = 08h
- Return: CF clear if successful
- CH = hours
- CL = minutes
- SI = seconds
- CF set on error
- AH = error code (see #00483)
- Desc: gets calendar event time from CMOS ram
- SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=09h,AX=5380h/BH=0Ah,AX=5380h/BH=7Fh
- (Table 00483)
- Values for APM SL error code:
- 02h no alarm set
- 03h no battery
- --------p-155380BH09-------------------------
- INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT TIME
- AX = 5380h
- BH = 09h
- CH = hours
- CL = minutes
- SI = seconds
- Return: CF clear if successful
- CF set on error
- AH = error code (see #00483)
- Desc: sets calendar event time in CMOS ram, enables Alarm resume
- SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=7Fh
- --------p-155380BH0A-------------------------
- INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT DATE
- AX = 5380h
- BH = 0Ah
- Return: CF clear if successful
- SI = century
- DI = year
- CH = month
- CL = day
- CF set on error
- AH = error code (see #00483)
- Desc: reads calendar event date from Extended CMOS ram
- SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=0Bh,AX=5380h/BH=0Ch,AX=5380h/BH=7Fh
- --------p-155380BH0B-------------------------
- INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT DATE
- AX = 5380h
- BH = 0Bh
- SI = century
- DI = year
- CH = month
- CL = day
- Return: CF clear if successful
- CF set on error
- AH = error code (see #00483)
- Desc: sets calendar event date in Extended CMOS ram
- SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=7Fh
- --------p-155380BH0C-------------------------
- INT 15 - APM SL Enhanced v1.0 - GET CPU SPEED MODE
- AX = 5380h
- BH = 0Ch
- Return: CF clear if successful
- CL = CPU clock divider (1,2,4 or 8)
- BL = autocpumode ???
- Desc: reads bits 4-5 of CPUPWRMODE register
- SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=0Dh,AX=5380h/BH=7Fh
- --------p-155380BH0D-------------------------
- INT 15 - APM SL Enhanced v1.0 - SET CPU SPEED MODE
- AX = 5380h
- BH = 0Dh
- CL = CPU clock divider (1,2,4 or 8)
- BL = autocpumode ???
- Return: CF clear if successful
- Desc: writes bits 4-5 of CPUPWRMODE register
- SeeAlso: AX=5380h/BH=0Ch,AX=5380h/BH=7Eh,AX=5380h/BH=7Fh
- --------p-155380BH7E-------------------------
- INT 15 - APM SL Enhanced v1.0 - SL HW PARAMETER
- AX = 5380h
- BH = 7Eh
- Return: AL = ???
- 03h on A-Step 386SL BIOSes
- 12h on later steps
- BX = Control port (00B0h)
- SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh
- --------p-155380BH7F-------------------------
- INT 15 - Advanced Power Management v1.1 - OEM APM INSTALLATION CHECK
- AX = 5380h
- BH = 7Fh
- Return: CF clear if successful
- BX = OEM identifier
- all other registers OEM-defined
- ---Intel SL Enhanced Option BIOS---
- BX = 534Ch ('SL')
- CL = 4Fh ('O')
- AL = version (10h = 1.0)
- ---HP APM BIOS---
- BX = 4850h ('HP')
- CX = version (0001h)
- CF set on error
- AH = error code (03h) (see #00473)
- SeeAlso: AX=5380h/BH=00h
- --------p-155380-----------------------------
- INT 15 - Advanced Power Management v1.1 - OEM APM FUNCTIONS
- AX = 5380h
- BH <> 7Fh
- all other registers OEM-defined
- Return: OEM-defined
- SeeAlso: AX=5380h/BH=7Fh
- --------p-155380BX8000-----------------------
- INT 15 U - Phoenix BIOS 4.0 Rel 6.0 - ???
- AX = 5380h
- BX = 8000h
- CX = 0020h
- Return: ???
- Note: although a check for the indicated value is present in the examined
- copy of the BIOS, no code was associated with it (possibly an OEM
- option not included in that copy) and this function always returns
- CF set/AH=03h if CX=0020h and CF set/AH=86h for CX<>0020h
- SeeAlso: AX=5380h/BX=8001h
- --------p-155380BX8001-----------------------
- INT 15 U - Phoenix BIOS 4.0 Rel 6.0 - ???
- AX = 5380h
- BX = 8001h
- CX = 0020h
- Return: ???
- Note: although a check for the indicated value is present in the examined
- copy of the BIOS, no code was associated with it (possibly an OEM
- option not included in that copy)
- SeeAlso: AX=5380h/BX=8000h
- --------X-1553B0BH00-------------------------
- INT 15 - Intel System Management Bus - RESERVED
- AX = 53B0h
- BH = 00h
- Program: the SMBus is a variant of ACCESS.bus being used by Intel and Duracell
- for the Smart Battery proposal, but designed to be generic enough to
- handle other devices besides batteries
- --------X-1553B0BH01-------------------------
- INT 15 - Intel System Management Bus - INSTALLATION CHECK
- AX = 53B0h
- BH = 01h
- BL = 72h ('r')
- CX = 6164h ('ad')
- Return: CF clear if installed
- AH = SMBus BIOS Interface Specification major version (01h)
- AL = SMBus BIOS Interface Specification minor version (00h)
- BL = number of SMBus devices present
- CX = 6941h ('iA')
- DX = vendor-specified SMBus hardware code
- 0000h means undefined hardware type
- CF set if error
- AH = Error code 0Ah, 86h (see #00484)
- Note: this function is only supported in INT 15h mode
- SeeAlso: AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=04h,AX=53B0h/BH=06h
- SeeAlso: #01105 at INT 1A/AX=B10Ah/SF=8086h
- (Table 00484)
- Values for Intel System Management Bus error codes:
- 00h SMBus OK
- 01h SMBus connect failed
- 02h SMBus already connected (see also #00485)
- 03h SMBus disconnect failed
- 04h SMBus not connected
- 05h SMBus INT 15 interface disabled
- 06h SMBus device address request out of range
- 07h SMBus unknown failure
- 08h SMBus message list empty
- 09h SMBus message list overflow
- 0Ah SMBus invalid signature
- 10h SMBus device address not acknowledged
- 11h SMBus device error detected
- 12h SMBus device command access denied
- 13h SMBus unknown error
- 14h SMBus transaction pending
- 15h SMBus no transaction pending
- 16h SMBus request does not match pending transaction
- 17h SMBus device access denied
- 18h SMBus timeout
- 19h SMBus protocol not supported
- 1Ah SMBus busy
- 1Bh SMBus SMI detected
- 80h SMBus OK (previously unreported SMI occurred)
- 86h SMBus not supported
- (Table 00485)
- Values for Intel System Management Bus Already Connected sub-error codes:
- 01h real mode connect already established
- 02h 16-bit PMode connect already established
- 03h 32-bit PMode connect already established
- SeeAlso: #00484
- --------X-1553B0BH02-------------------------
- INT 15 - Intel System Management Bus - REAL MODE CONNECT
- AX = 53B0h
- BH = 02h
- CX = 6941h ('iA')
- Return: CF clear if successful
- AX = SMBus Real mode code segment
- BX = offset of entry point into SMBus BIOS Interface
- CX = SMBus Real mode data segment
- CF set if error
- AH = error code (01h,02h,0Ah,86h) (see #00484)
- AL = sub-error code if error code is 02h (see #00485)
- Desc: connect to SMBus interface; once connected, all SMBus calls are made
- to the supplied entry point instead of INT 15 (with registers
- identical to those described here for INT 15)
- Notes: Support for this function is optional
- this function is only supported in INT 15 mode when implemented
- SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=03h,AX=53B0h/BH=04h,AX=53B0h/BH=05h
- --------X-1553B0BH03-------------------------
- INT 15 - Intel System Management Bus - 16-BIT PROTECTED-MODE CONNECT
- AX = 53B0h
- BH = 03h
- CX = 6941h ('iA')
- Return: CF clear if successful
- AX = SMBus 16-bit code segment (real mode base address)
- BX = offset of entry point into SMBus BIOS Interface
- CX = SMBus 16-bit data segment (real mode base address)
- SI = code segment length in bytes
- DI = data segment length in bytes
- CF set if error
- AH = error code (01h,02h,0Ah,86h) (see #00484)
- AL = sub-error code if error code is 02h (see #00485)
- Desc: connect to SMBus interface; once connected, all SMBus calls are made
- to the supplied entry point instead of INT 15 (with registers
- identical to those described here for INT 15)
- Notes: before calling the entry point, two descriptors must be initialized
- in the GDT or LDT. They must be consecutive and be in the order of
- code, then data. At the time of the call, the descriptors must be
- valid and have CPL=0.
- the code descriptor must be ring-0 privilege
- this function is only supported in INT 15 mode
- SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=04h,AX=53B0h/BH=05h
- --------X-1553B0BH04-------------------------
- INT 15 - Intel System Management Bus - 32-BIT PROTECTED-MODE CONNECT
- AX = 53B0h
- BH = 04h
- CX = 6941h ('iA')
- Return: CF clear if successful
- AX = SMBus 32-bit code segment (real mode base address)
- EBX = offset of entry point into SMBus BIOS Interface
- CX = SMBus 16-bit code segment (real mode base address)
- DX = SMBus data segment (real mode base address)
- SI = code segment length in bytes
- DI = data segment length in bytes
- CF set if error
- AH = error code (01h,02h,0Ah,86h) (see #00484)
- AL = sub-error code if error code is 02h (see #00485)
- Desc: connect to SMBus interface; once connected, all SMBus calls are made
- to the supplied entry point instead of INT 15 (with registers
- identical to those described here for INT 15)
- Notes: before calling the entry point, two descriptors must be initialized in
- the GDT or LDT. They must be consecutive and be in the order of
- 32-bit code, 16-bit code, then data. At the time of the call, the
- descriptors must be valid and have CPL=0.
- the code descriptors must be ring-0 privilege
- this function is supported only in INT 15 mode
- SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=05h
- --------X-1553B0BH05-------------------------
- INT 15 - Intel System Management Bus - DISCONNECT
- AX = 53B0h
- BH = 05h
- CX = 6941h ('iA')
- Return: CF clear if successful
- AH = 00h (SMBus OK)
- CF set if error
- AH = error code (03h,04h,05h,0Ah,86h) (see #00484)
- Note: this function is supported in connected mode (far CALL entry point)
- only
- SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=04h
- --------X-1553B0BH06-------------------------
- INT 15 - Intel System Management Bus - GET DEVICE ADDRESSES
- AX = 53B0h
- BH = 06h
- BL = position in list to report
- CH = 6941h ('iA')
- Return: CF clear if successful
- AH = 00h (SMBus OK)
- BH = number of SMBus devices
- BL = SMBus Device Address of device at position BL in list
- (see #00486)
- CF set if error
- AH = error code (06h,0Ah,86h) (see #00484)
- Desc: retrieves already assigned SMBus device addresses
- Notes: this function is supported in INT 15h mode only
- bit 0 of the device address indicates read/write, so a device may
- be listed at both xxxxxxx0b and xxxxxxx1b
- SeeAlso: I2C A0h [and I2C.LST in general]
- (Table 00486)
- Values for System Management Bus predefined device addresses:
- 10h SMBus host
- 12h Smart Battery charger
- 14h Smart Battery selector
- 16h Smart Battery
- 18h SMBus Alert response
- 50h ACCESS.bus host
- 58h LCD contrast controller
- 5Ah CCFL backlight driver
- 6Eh ACCESS.bus default address
- 80h-86h PCMCIA socket controllers
- 88h VGA graphics controller
- 90h-96h unrestricted addresses
- 82h SMBus device default address
- --------X-1553B0BH07-------------------------
- INT 15 - Intel System Management Bus - RETRIEVE CRITICAL MESSAGES
- AX = 53B0h
- BH = 07h
- CX = 6941h ('iA')
- Return: CF clear if successful
- AH = 00h (SMBus OK)
- AL = device address
- BX = device message
- CF set if error
- AH = error code (05h,07h,08h,09h,0Ah,86h) (see #00484)
- Desc: retrieves oldest queued critical message from an SMBus device to the
- host
- Notes: up to five messages are queued; if the queue is full, messages will be
- lost and error 09h returned
- --------X-1553B0BH08-------------------------
- INT 15 - Intel System Management Bus - RESERVED
- AX = 53B0h
- BH = 08h-0Fh
- --------X-1553B0BH10-------------------------
- INT 15 - Intel System Management Bus - REQUEST
- AX = 53B0h
- BH = 10h
- BL = protocol (see #00487)
- CH = device address
- CL = device command (see #00488)
- DH = MSB Data or block length (for BlockWrite)
- DL = LSB Data or first byte of block (for BlockWrite)
- Return: CF clear if successful
- AH = 00h or 80h (SMBus OK)
- (80h indicates a previously unreported SMI took place)
- CF set if error
- AH = error code (05h,10h,11h,12h,13h,14h,17h,19h,1Ah,86h)
- (see #00484)
- Desc: request access to a device on the SMBus
- SeeAlso: AX=53B0h/BH=11h, AX=53B0h/BH=13h
- (Table 00487)
- Values for Intel System Management Bus protocol codes:
- 00h Quick Command
- 01h Send Byte
- 02h Receive Byte
- 03h Write Byte
- 04h Read Byte
- 05h Write Word
- 06h Read Word
- 07h Block Write
- 08h Block Read
- 09h Process Call
- 0Ah-FFh reserved
- SeeAlso: #00488
- (Table 00488)
- Values for Intel System Management Bus Smart Battery command codes:
- Cmd Protocol(s) Description
- 00h Rd/Wr Word "ManufacturerAccess" implementation-specific
- 01h Rd/Wr Word get/set Low Capacity Alarm threshold
- 02h Rd/Wr Word get/set Remaining Time Alarm value (in minutes)
- 03h Rd/Wr Word get/set battery characteristics (see #00489)
- 04h Rd/Wr Word "AtRate" indicate charge/discharge rate
- 05h Read Word "AtRateTimeToFull" time to completely charge (in min.)
- 06h Read Word "AtRateTimeToEmpty" time to entirely discharge (min.)
- 07h Read Word "AtRateOK" boolean: can battery supply another 10sec?
- 08h Read Word internal battery temperature (in 0.1 Kelvins)
- 09h Read Word current battery voltage in millivolts
- 0Ah Read Word current flowing through battery in milliamperes
- (positive if charging, negative if discharging)
- 0Bh Read Word average current over the past minute
- 0Ch Read Word expected error margin in capacity computations in %
- 0Dh Read Word predicted remaining charge as % of full charge
- 0Eh Read Word predicted remaining charge as % of design capacity
- 0Fh Read Word predicted remaining charge in mAh or 10mWh
- 10h Read Word predicted full charge capacity in mAh or 10mWh
- 11h Read Word predicted remaining battery life in minutes
- FFFFh = not discharging
- 12h Read Word rolling average of predicted life over past minute
- 13h Read Word rolling average of predicted charge time over past min.
- FFFFh = not charging
- 14h Read Word get battery's desired charging current in mA
- 14h Write Word set charging current in mA
- 15h Read Word get battery's desired charging current in mV
- 15h Write Word set desired charging voltage in mV
- 16h Read Word get current battery status (see #00490)
- 17h Read Word get number of charge/discharge cycles for battery
- 18h Read Word get design capacity in mAh or 10mWh
- 19h Read Word get design voltage
- 1Ah Read Word get specification information (see #00491)
- 1Bh Read Word get manufacture date (see #01665 at INT 21/AX=5700h)
- 1Ch Read Word get serial number
- 1Dh-1Fh reserved
- 20h Read Block get manufacturer's name
- 21h Read Block get device name
- 22h Read Block get device chemistry (see #00492)
- 23h Read Block get manufacturer data
- 24h-2Eh reserved
- 2Fh manufacturer-specific
- 30h-3Bh reserved
- 3Ch-3Fh manufacturer-specific
- Note: bits 7-6 are reserved for addressing multiple batteries in a future
- version of the specification
- SeeAlso: #00487
- Bitfields for Smart Battery battery characteristics:
- Bit(s) Description (Table 00489)
- 0 battery has internal charge controller (read-only)
- 1 primary/secondary battery support (read-only)
- 6-2 reserved
- 7 conditioning cycle requested
- 8 internal charge controller enabled
- 9 battery operating in primary mode
- 13-10 reserved
- 14 disable broadcast to charger
- 15 report capacity in units of 10mW / 10mWh instead of mA / mAh
- SeeAlso: #00488,#00490
- Bitfields for Smart Battery battery status:
- Bit(s) Description (Table 00490)
- 15 overcharged
- 14 terminate-charge alarm
- 13 reserved
- 12 over-temperature alarm
- 11 terminate-discharge alarm
- 10 reserved
- 9 remaining-capacity alarm
- 8 remaining-time alarm
- 7 initialized
- 6 charging
- 5 fully charged
- 4 fully discharged
- 3-0 error codes
- 0000 OK
- 0001 busy
- 0010 reserved command
- 0011 unsupported command
- 0100 access denied (tried to write to read-only value)
- 0101 overflow/underflow
- 0110 bad size
- 0111 unknown error
- SeeAlso: #00488,#00489,#00491
- Bitfields for Smart Battery specification information:
- Bit(s) Description (Table 00491)
- 3-0 SmartBattery specification minor revision number
- 7-4 SmartBattery specification version number
- 11-8 voltage scaling (0-3, multiply voltages by 10^scale)
- 15-12 current scaling (0-3, multiply currents by 10^scale)
- SeeAlso: #00488,#00490
- (Table 00492)
- Values for Smart Battery device chemistry (not case-sensitive):
- "LION" Lithium ion
- "NiMH" Nickel metal hydride
- "PbAc" lead-acid
- "NiCd" Nickel Cadmium
- "NiZn" Nickel Zinc
- "RAM" rechargeable Alkaline Manganese
- "ZnAr" Zinc-Air
- SeeAlso: #00488
- --------X-1553B0BH11-------------------------
- INT 15 - Intel System Management Bus - REQUEST CONTINUATION
- AX = 53B0h
- BH = 11h
- BL = protocol (see #00487)
- CH = device address
- CL = number of valid bytes in DX (1 or 2)
- DH = MSB Data (CL = 1 or 2)
- DL = LSB Data (CL = 2)
- Return: CF clear if successful
- AH = 00h (SMBus OK)
- CL = SMBus status
- 00h SMBus hardware not ready for more data
- 01h SMBus hardware ready for 2 more data bytes
- CF set if error
- AH = error code (05h,11h,13h,15h,16h,18h,1Bh,86h) (see #00484)
- Desc: continue WriteBlock protocol started with function 10h
- SeeAlso: AX=53B0h/BH=10h, AX=53B0h/BH=13h
- --------X-1553B0BH12-------------------------
- INT 15 - Intel System Management Bus - REQUEST ABORT
- AX = 53B0h
- BH = 12h
- BL = protocol (see #00487)
- CH = device address
- CL = device command
- Return: CF clear if successful
- AH = 00h (SMBus OK)
- CF set if error
- AH = error code (05h,13h,15h,16h,86h) (see #00484)
- Desc: stop the currently pending SMBus request; usually used to terminate
- a request after an SMI Detected error
- --------X-1553B0BH13-------------------------
- INT 15 - Intel System Management Bus - REQUEST DATA AND STATUS
- AX = 53B0h
- BH = 13h
- BL = protocol (see #00487)
- CH = device address
- CL = device command
- Return: CF clear if successful
- AH = 00h (SMBus OK)
- CH = status
- 00h no data pending, transaction complete
- 01h no data pending, transaction continues
- 02h data pending
- CL = number of valid bytes in DX (0-2)
- DH = MSB data
- DL = LSB data
- CF set if error
- AH = error code (05h,10h,11h,13h,15h,16h,18h,1Bh,86h) (see #00484)
- Desc: determine when a transaction is complete, gather data returned by read
- transactions
- Note: for Block Read protocol (08h), first call returns block length in DH
- and the first byte of the block in DL
- ----------1554-------------------------------
- INT 15 - IBM SurePath BIOS - Officially "Private" Function
- AH = 54h
- SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
- --------T-155400-----------------------------
- INT 15 C - Omniview Multitasker - INSTALLATION NOTIFICATION
- AX = 5400h
- ES:BX -> device information tables
- DI:DX -> dispatcher entry point
- Note: called by OmniView to notify programs loaded before OmniView of state
- changes inside OmniView
- SeeAlso: AX=5407h,INT 2F/AX=DE00h
- --------T-155401-----------------------------
- INT 15 C - Omniview Multitasker - PROCESS CREATION
- AX = 5401h
- ES:BX = process handle
- Note: called by OmniView to notify programs loaded before OmniView of state
- changes inside OmniView
- SeeAlso: AX=5402h,INT 2F/AX=DE04h
- --------T-155402-----------------------------
- INT 15 C - Omniview Multitasker - PROCESS DESTRUCTION
- AX = 5402h
- ES:DX = process handle
- Note: called by OmniView to notify programs loaded before OmniView of state
- changes inside OmniView
- SeeAlso: AX=5401h,INT 2F/AX=DE05h
- --------T-155403-----------------------------
- INT 15 C - Omniview Multitasker - SAVE
- AX = 5403h
- ES:DX = process swapping out
- Note: called by OmniView to notify programs loaded before OmniView of state
- changes inside OmniView
- SeeAlso: AX=5404h,INT 2F/AX=DE08h
- --------T-155404-----------------------------
- INT 15 C - Omniview Multitasker - RESTORE
- AX = 5404h
- ES:DX = process swapping in
- Note: called by OmniView to notify programs loaded before OmniView of state
- changes inside OmniView
- SeeAlso: AX=5403h,INT 2F/AX=DE09h
- --------T-155405-----------------------------
- INT 15 C - Omniview Multitasker - SWITCHING TO BACKGROUND
- AX = 5405h
- ES:DX = process swapping in
- Note: called by OmniView to notify programs loaded before OmniView of state
- changes inside OmniView
- SeeAlso: AX=5406h
- --------T-155406-----------------------------
- INT 15 C - Omniview Multitasker - SWITCHING TO FOREGROUND
- AX = 5406h
- ES:DX = process swapping in
- Note: called by OmniView to notify programs loaded before OmniView of state
- changes inside OmniView
- SeeAlso: AX=5405h
- --------T-155407-----------------------------
- INT 15 C - Omniview Multitasker - EXIT NOTIFICATION
- AX = 5407h
- Note: called by OmniView to notify programs loaded before OmniView of state
- changes inside OmniView
- SeeAlso: AX=5400h,INT 2F/AX=DE03h
- --------V-155F31-----------------------------
- INT 15 C - Chips & Technologies '65530' BIOS - POST INITIALIZATION NOTIFICATION
- AX = 5F31h
- Return: nothing
- Desc: this function is called after the video BIOS completes power-up
- initialization and just prior to displaying the sign-on message
- SeeAlso: AX=5F33h,AX=5F35h,INT 10/AX=5F50h
- --------V-155F33-----------------------------
- INT 15 C - Chips & Technologies '65530' BIOS - MODE SET HOOK
- AX = 5F33h
- BL = current width in characters
- BH = curent video mode
- CH = active display page
- Return: nothing
- Desc: this function is called at the end of a video mode set
- Note: the OEM has the option of enabling or disabling this callout, as well
- as specifying whether the callout occurs on INT 15h or INT 42h
- SeeAlso: AX=5F31h,AX=5F35h,INT 10/AX=5F50h,INT 42/AX=5F33h
- --------V-155F35-----------------------------
- INT 15 C - Chips & Technologies '65530' BIOS - MONITOR SENSING HOOK
- AX = 5F35h
- Return: DL = boot display
- 00h CRT
- 01h flat panel (LCD)
- 02h both simultaneously
- leave unchanged to boot according to BIOS settings
- SeeAlso: AX=5F31h,AX=5F33h,INT 10/AX=5F50h
- --------b-1560------------------------------------
- INT 15 - HUNTER 16 - SET SYSTEM CLOCK SPEED
- AH = 60h
- AL = new speed
- 00h normal (8 MHz)
- 01h Slow Mode 1 (4 MHz)
- 02h Slow Mode 2 (2 MHz)
- Note: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family
- members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
- SeeAlso: AX=6301h
- --------p-156000-----------------------------
- INT 15 U - HP 100LX/200LX - GET MAIN BATTERY LEVEL
- AX = 6000h
- Return: AX = battery level
- Note: multiply the returned value with 1Bh and add 622h to get millivolts
- SeeAlso: AX=6001h,AX=6002h,AX=6003h,AX=6004h
- --------p-156001-----------------------------
- INT 15 U - HP 100LX/200LX - GET BACKUP BATTERY LEVEL
- AX = 6001h
- Return: AX = battery level
- Note: multiply the returned value with 1Bh and add 622h to get millivolts
- SeeAlso: AX=6000h,AX=6002h
- --------p-156002-----------------------------
- INT 15 U - HP 100LX/200LX - GET POWER INFO
- AX = 6002h
- Return: AL = power settings (see #00493)
- SeeAlso: AX=6000h,AX=6003h,AX=6004h
- Bitfields for power settings:
- Bit(s) Description (Table 00493)
- 0-1 unused ???
- 2 card battery status low (OK if bit clear)
- 3 battery charging off (disabled if bits 3-5 clear)
- 4 battery charging slow
- 5 battery charging fast
- 6 power adaptor active
- 7 battery type NiCad (alkaline if bit clear)
- --------p-156003-----------------------------
- INT 15 U - HP 100LX/200LX - SET MAIN BATTERY TYPE
- AX = 6003h
- BL = battery type
- 00h alkaline
- 01h NiCad
- SeeAlso: AX=6000h,AX=6004h
- --------p-156004-----------------------------
- INT 15 U - HP 100LX/200LX - SET BATTERY CHARGING MODE
- AX = 6004h
- BL = charging
- 00h disabled
- 01h enabled
- SeeAlso: AX=6000h,AX=6003h
- --------b-1561------------------------------------
- INT 15 - HUNTER 16 - GET POWER LEVEL
- AH = 61h
- Return: AH = percentage of full power left (0..100)
- Desc: determine how much battery power is left
- SeeAlso: AH=62h,AH=66h,AH=73h"HUNTER"
- --------b-1561-------------------------------
- INT 15 U - HP 100LX/200LX - SET ANNOUNCIATORS POSITION
- AH = 61h
- AL = position (20h = left, 60h = right)
- Note: The announciators are the indicator symbols for the Shift and Fn keys
- in the bottom line
- SeeAlso: AH=62h"HP",INT 16/AH=02h
- --------b-1562------------------------------------
- INT 15 - HUNTER 16 - SET LOW POWER THRESHOLD
- AH = 62h
- AL = level (00h 5%, 01h 10%, ... 12h 95%)
- BX = interval between power low warnings in seconds (1..600)
- Return: AH = Status
- Desc: set the level (relative to full power) when power-low warnings begin
- and the interval between the warnings
- SeeAlso: AH=61h,AH=65h,AH=66h
- --------b-1562-------------------------------
- INT 15 U - HP 100LX/200LX - SET DISPLAY CONTRAST
- AH = 62h
- BL = contrast (00h-1Fh, 1Fh is the darkest)
- SeeAlso: AH=47h"HP",AH=61h"HP"
- --------b-156300----------------------------------
- INT 15 - HUNTER 16 - GET IDLE TIMEOUT
- AX = 6300h
- Return: AH = status
- BX = timeout in seconds (0-3600)
- Desc: get the idle timeout value, the interval without keyboard or
- communications activity before the system shuts down
- SeeAlso: AX=6301h
- --------b-156301----------------------------------
- INT 15 - HUNTER 16 - SET IDLE TIMEOUT
- AX = 6301h
- BX = timeout in seconds (0-3600)
- Desc: sets the idle timeout value, the interval without keyboard or
- communications activity before the system shuts down
- SeeAlso: AX=6300h
- --------b-1564------------------------------------
- INT 15 - HUNTER 16 - CONTROL RESUME MODE
- AH = 64h
- AL = new state
- 00h disable Resume mode
- 01h enable Resume mode
- Return: AH = status
- Desc: turn Resume mode on or off. In Resume mode the system starts in
- the application that was running when it shut down as if nothing
- had happened.
- SeeAlso: AH=67h,AH=68h,AH=69h
- --------b-1565------------------------------------
- INT 15 - HUNTER 16 - AUTHORISE CHARGING
- AH = 65h
- AL = charging level
- 01h charging not allowed
- 02h charging allowed until power down
- 03h charging allowed until batteries changed or fail.
- Ask user if charging is still allowed on next poweron
- 04h charging allowed indefinitely
- BX = 0203h
- CX = 0405h
- DX = 0607h
- Return: AH = status
- SeeAlso: AH=66h,AH=68h
- --------b-1566------------------------------------
- INT 15 - HUNTER 16 - SET BATTERY LEVEL
- AH = 66h
- AL = level in percent of maximum (0..100)
- Return: AH = status
- SeeAlso: AH=61h,AH=65h
- --------b-1567------------------------------------
- INT 15 - HUNTER 16 - CONTROL STOP MODE
- AH = 67h
- AL = mode when waiting for input
- 00h use STOP mode (allows communication)
- 01h use HALT mode (disallows communication)
- Return: AH = status
- Desc: select the power save mode to use when waiting for input
- SeeAlso: AH=69h
- --------b-1568------------------------------------
- INT 15 - HUNTER 16 - REQUEST POWER DOWN
- AH = 68h
- Desc: turns off the Hunter 16 if power down is allowed (see AH=69h)
- SeeAlso: AH=69h
- --------b-1569------------------------------------
- INT 15 - HUNTER 16 - CONTROL POWER DOWN AVAILABILITY
- AH = 69h
- AL = mode
- 00h inhibit power down
- 01h allow power down
- Return: AH = status
- SeeAlso: AH=67h,AH=68h,AH=6Ah
- --------b-156A------------------------------------
- INT 15 - HUNTER 16 - CONTROL SLOW MODE
- AH = 6Ah
- AL = mode
- 00h inhibit Slow mode
- 01h allow Slow mode
- Return: AH = status
- SeeAlso: AH=69h
- --------b-156B------------------------------------
- INT 15 - HUNTER 16 - GET ROM BIOS VERSION
- AH = 6Bh
- Return: BH = version number (ASCII)
- BL = release number (ASCII)
- CH = major??? release number (ASCII)
- CL = minor??? release number (ASCII)
- SeeAlso: AH=6Ch
- --------b-156C------------------------------------
- INT 15 - HUNTER 16 - GET SERIAL NUMBER
- AH = 6Ch
- Return: BL:CX = BCD serial number
- Note: when shipped, all Hunter 16s have the same Serial Number, but a
- different number can be stored (see AH=72h)
- SeeAlso: AH=6Bh,AH=72h
- --------b-156D------------------------------------
- INT 15 - HUNTER 16 - GET EVENT DETAIL
- AH = 6Dh
- Return: AH = 00h if successful
- CX:BX = event flags bit 0..31 (see #00494)
- Note: this function allows testing for events
- SeeAlso: AH=6Eh,AH=6Fh
- Bitfields for HUNTER 16 events:
- Bit(s) Description (Table 00494)
- 6 RI received
- 5 RTC Alarm
- 4 data received on COM2
- 3 data received on COM1
- 2 error on COM2
- 1 error on COM1
- 0 PWR button pressed
- --------b-156E------------------------------------
- INT 15 - HUNTER 16 - ENABLE/TRAP EVENT
- AH = 6Eh
- AL = Software Interrupt
- 00h do not trap event
- else trap as software interrupt number AL
- BH = event number (see AH=6Dh)
- BL = enable mask
- 00h disable event
- 01h enable event
- Return: AH = 00h if successful
- SeeAlso: AH=6Dh,AH=6Fh
- --------b-156F------------------------------------
- INT 15 - HUNTER 16 - ACKNOWLEDGE EVENT
- AH = 6Fh
- AL = event number (see AH=6Dh)
- Return: AH = 00h if successful
- Desc: Acknowledges the event, so the next similar event can be detected
- SeeAlso: AH=6Dh"HUNTER",AH=6Eh
- --------b-1570------------------------------------
- INT 15 - HUNTER 16 - CONTROL SOUND
- AH = 70h
- AL = new state
- 00h disable sound
- else enable sound
- Note: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family
- members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
- --------x-157000-----------------------------
- INT 15 - Tandy 1000SL/TL - READ FROM EEPROM
- AX = 7000h
- BL = number of word to read (00h-3Fh)
- Return: CF clear if function supported
- DX = contents of EEPROM word
- Note: newer Tandy 1000-series machines use EEPROM instead of CMOS RAM in
- the clock chip to store system configuration information
- SeeAlso: AX=7001h
- --------x-157001-----------------------------
- INT 15 - Tandy 1000SL/TL - WRITE TO EEPROM
- AX = 7001h
- BL = number of word to read (00h-3Fh)
- DX = new value for EEPROM word
- Return: CF clear if function supported
- Note: the EEPROMs are normally written only by the system setup program;
- changing the values can badly mess up a Tandy
- SeeAlso: AX=7000h
- ----------157002-----------------------------
- INT 15 U - Tandy 1000 Model ??? - GET ROM PAGE
- AX = 7002h
- Return: AL = ROM page mapped at 0E0000h (0-6 (13?))
- Note: some Tandy machines have DOS and DeskMate in a 512k paged ROM. The
- BIOS uses this call to determine what ROM page is mapped in the 64k
- segment at 0E0000h.
- the 1000TL has 8 64k ROM pages; page 7 is permanently mapped at
- 0F0000h. There may be 16 32k ROM pages on other systems.
- SeeAlso: AX=7003h,INT E0"DeskMate"
- ----------157003-----------------------------
- INT 15 U - Tandy 1000 Model ??? - SET ROM PAGE
- AX = 7003h
- DL = ROM page to be mapped at 0E0000h (0-6 (13?))
- Return: CF clear if valid ROM page specified
- Note: Some Tandy machines have DOS and DeskMate in a 512k paged ROM. The
- BIOS uses this call to map ROM pages in the 64k segment at 0E0000h.
- The 1000TL has 8 64k ROM pages; page 7 is permanently mapped at
- 0F0000h. There may be 16 32k ROM pages on other systems.
- SeeAlso: AX=7002h,INT E0"DeskMate"
- --------b-1571------------------------------------
- INT 15 - HUNTER 16 - SELECT POWER UP KEYS
- AH = 71h
- BL = column
- BH = row
- AL = column switch (00h disable, 01h enable)
- CL = row switch (00h disable, 01h enable)
- Return: AH = status
- SeeAlso: AH=7Bh,AH=88h
- --------b-157200----------------------------------
- INT 15 - HUNTER 16 - RESET SERIAL NUMBER
- AX = 7200h
- Return: AH = 00h if successful
- Desc: reset the serial number to the default serial number present when the
- Hunter 16 was shipped
- SeeAlso: AH=6Ch,AH=72h
- --------b-1572------------------------------------
- INT 15 - HUNTER 16 - REDIRECT SERIAL NUMBER
- AH = 72h
- AL nonzero
- DS:BX -> new serial number (6 ASCII digits)
- Return: AH = 00h if successful
- Desc: install a new serial number
- SeeAlso: AH=6Ch,AX=7200h
- --------b-1573------------------------------------
- INT 15 - HUNTER 16 - GET ORACLE GT POWER LEVEL
- AH = 73h
- AL = drive (0: A:, 1: B:)
- Return: AH = status
- 00h successful
- FFh Oracle GT drive not connected
- AL = power level in percent of maximum (0..100)
- Desc: get the power remaining in the Oracle GT batteries
- SeeAlso: AH=61h
- --------b-1574------------------------------------
- INT 15 - HUNTER 16 - SET BACKLIGHT POWER UP STATE
- AH = 74h
- AL = new level
- 01h off
- 02h unchanged
- 03h change level
- BL = desired level (00h-7Fh)
- Return: AH = status
- Desc: select the backlight level to use when the Hunter is next turned on
- SeeAlso: AH=64h,AH=75h,INT 10/AH=64h,INT 10/AH=78h
- --------b-1575------------------------------------
- INT 15 - HUNTER 16 - SET CONTRAST POWER UP STATE
- AH = 75h
- AL = new level
- 01h off
- 02h unchanged
- 03h change level
- BL = desired level (00h-7Fh)
- Return: AH = status
- Desc: select the LCD contrast level to use when the Hunter is next turned on
- SeeAlso: AH=63h,AH=74h
- --------b-1576------------------------------------
- INT 15 - HUNTER 16 - CONTROL POWER SAVE
- AH = 76h
- BX = power save control (see #00495)
- SeeAlso: AH=74h
- Bitfields for HUNTER 16 power save control:
- Bit(s) Description (Table 00495)
- 0 power save enabled
- 1 inhibit power save when waiting for COM1 data
- 2 inhibit power save when waiting for COM2 data
- 3 inhibit power save when waiting for data from barcode wand
- 4 inhibit power up on timer tick
- --------b-1579------------------------------------
- INT 15 - HUNTER 16 - REDIRECT LPT1
- AH = 79h
- AL = port to which to redirect (00h COM1, 01h COM2)
- --------b-157A------------------------------------
- INT 15 - HUNTER 16 - INVOKE HOT KEY
- AH = 7Ah
- Desc: this function has the same effect as pressing the HOT key
- SeeAlso: AH=7Bh
- --------b-157B------------------------------------
- INT 15 - HUNTER 16 - CONTROL HOT KEY
- AH = 7Bh
- AL = 00h prevent HOT key
- else allow HOT key
- Desc: Allow or prevent the HOT key function which is used to examine and
- change the Hunter setup
- SeeAlso: AH=71h,AH=7Ah,AH=7Ch
- --------b-157C------------------------------------
- INT 15 - HUNTER 16 - CONTROL HOT KEY POWER OPTION
- AH = 7Ch
- AL = 00h prevent HOT key power option
- else allow HOT key power option
- Desc: allow or prevent changing the power options
- SeeAlso: AH=7Bh,AH=7Dh
- --------b-157D------------------------------------
- INT 15 - HUNTER 16 - OVERRIDE LOW POWER TURN OFF
- AH = 7Dh
- AL = 00h turn off after 10 warnings
- else never turn off
- Desc: specify whether the Hunter 16 turns off after 10 low power warnings
- SeeAlso: AH=7Ch
- --------b-157E------------------------------------
- INT 15 - HUNTER 16 - CONTROL BATTERY CHANGE FACILITIES (APM)
- AH = 7Eh
- AL = 00h do not prompt
- else prompt
- Desc: select whether the user is prompted for the battery state if the
- battery cap has been off when the system is turned on
- SeeAlso: AH=7Fh
- --------b-157F------------------------------------
- INT 15 - HUNTER 16 - SET BATTERY TYPE (APM)
- AH = 7Fh
- AL = battery type
- 00h non-rechargeable
- else rechargeable
- SeeAlso: AH=7Eh
- --------B-1580-------------------------------
- INT 15 C - OS HOOK - DEVICE OPEN (AT,XT286,PS)
- AH = 80h
- BX = device ID
- CX = process ID
- CF clear
- Return: CF clear if successful
- AH = 00h
- CF set on error
- AH = status (see #00496)
- Note: this function should be hooked by a multitasker which wishes to keep
- track of device ownership; the default BIOS handler merely returns
- successfully
- SeeAlso: AH=81h,AH=82h
- (Table 00496)
- Values for status:
- 80h invalid command (PC,PCjr)
- 86h function not supported (XT)
- --------b-1580------------------------------------
- INT 15 - HUNTER 16 - GET/SET BATTERY CAPACITY (APM)
- AH = 80h
- AL = function
- 00h get
- Return: AL = capacity (500mA + AL * 50mA, max 40 = 2500mA)
- else set
- BL = battery capacity (same as AL above)
- SeeAlso: AH=61h"HUNTER",AH=81h"HUNTER"
- --------B-1581-------------------------------
- INT 15 C - OS HOOK - DEVICE CLOSE
- AH = 81h
- BX = device ID
- CX = process ID
- CF clear
- Return: CF clear if successful
- AH = 00h
- CF set on error
- AH = status (see #00496)
- Note: this function should be hooked by a multitasker which wishes to keep
- track of device ownership; the default BIOS handler merely returns
- successfully
- SeeAlso: AH=80h,AH=82h
- --------b-1581------------------------------------
- INT 15 - HUNTER 16 - CONTROL POWER OUTPUT
- AH = 81h
- AL = new state of power output (00h off, nonzero on)
- Desc: turn the +5V low power output on or off
- SeeAlso: AH=80h"HUNTER"
- --------B-1582-------------------------------
- INT 15 C - OS HOOK - PROGRAM TERMINATION
- AH = 82h
- BX = process ID
- CF clear
- Return: CF clear if successful
- AH = 00h
- CF set on error
- AH = status (see #00496)
- Notes: closes all devices opened by the given process ID with function 80h
- this function should be hooked by a multitasker which wishes to keep
- track of device ownership; the default BIOS handler merely returns
- successfully
- SeeAlso: AH=80h,AH=81h
- --------b-1582------------------------------------
- INT 15 - HUNTER 16 - SOUND OUTPUT
- AH = 82h
- DX = length (duration in seconds = DX * 666670 / frequency)
- BX = pitch (see #00497)
- Desc: Sound the tone specified in BX for the duration in DX
- SeeAlso: AX=1019h
- (Table 00497)
- Values for HUNTER 16 sound pitch:
- BX(dec) Note Frequency BX(dec) Note Frequency
- 425 G 1568.000 1515 A 440.000
- 451 F# 1479.503 1605 G# 415.307
- 477 F 1396.900 1701 G 392.000
- 506 E 1318.500 1802 F# 369.998
- 536 D# 1244.523 1909 F 349.230
- 568 D 1174.700 2022 E 329.630
- 601 C# 1108.749 2143 D# 311.127
- 637 C 1046.500 2270 D 293.660
- 675 B 958.770 2405 C# 277.183
- 715 A# 932.329 2548 MID C 261.630
- 758 A 880.000 2700 B 246.940
- 803 G# 830.609 2860 A# 233.081
- 850 G 783.990 3030 A 220.000
- 901 F# 739.990 3210 G# 207.654
- 954 F 698.460 3401 G 196.000
- 1011 E 659.260 3604 F# 184.996
- 1071 D# 622.257 3818 F 174.610
- 1135 D 587.330 4045 E 164.810
- 1203 C# 554.365 4286 D# 155.560
- 1274 C 523.250 4540 D 146.830
- 1350 B 493.880 4668 C# 142.827
- 1430 A# 466.162 4803 C 138.810
- --------B-1583-------------------------------
- INT 15 - BIOS - SET EVENT WAIT INTERVAL (AT,PS50+)
- AH = 83h
- AL = subfunction
- 00h set interval
- CX:DX = microseconds to delay
- ES:BX -> byte whose high bit is to be set at end of interval
- 01h cancel wait interval
- Return: CF set on error or function already busy
- AH = status
- 80h invalid command (PC,PCjr)
- 86h function not supported (XT and later)
- CF clear if successful
- Notes: the resolution of the wait period is 977 microseconds on many systems
- because many BIOSes use the 1/1024 second fast interrupt from the AT
- real-time clock chip which is available on INT 70
- IBM AT 1/10/84 BIOS ignores AL and always performs subfunction 00h
- SeeAlso: AH=41h,AH=86h,INT 70,MEM 0040h:0098h,MEM 0040h:009Ch
- --------b-1583------------------------------------
- INT 15 - HUNTER 16 - CONTROL SCREEN SYNCHRONISATION
- AH = 83h
- AL = state of LCD window (00h disabled, nonzero enabled)
- Desc: Enable/disable the facility where the displayed window tracks the
- cursor output to keep the focus visible
- --------B-1584-------------------------------
- INT 15 - BIOS - JOYSTICK SUPPORT (XT after 11/8/82,AT,XT286,PS)
- AH = 84h
- DX = subfunction
- 0000h read joystick switches
- Return: AL bits 7-4 = switch settings
- 0001h read positions of joysticks
- Return: AX = X position of joystick A
- BX = Y position of joystick A
- CX = X position of joystick B
- DX = Y position of joystick B
- Return: CF set on error
- AH = status (see #00496)
- CF clear if successful
- Notes: if no game port is installed, subfunction 0000h returns AL=00h (all
- switches open) and subfunction 0001h returns AX=BX=CX=DX=0000h
- a 250kOhm joystick typically returns 0000h-01A0h
- SeeAlso: AH=84h"V20-XT-BIOS"
- --------b-1584-------------------------------
- INT 15 - V20-XT-BIOS - JOYSTICK SUPPORT
- AH = 84h
- DX = subfunction
- 0000h read joystick switches
- Return: AL bits 7-4 = switch settings
- other: read positions of joysticks as indicated by bits 0-3
- Return: AX = X position of joystick A (if DX bit 0 set)
- BX = Y position of joystick A (if DX bit 1 set)
- CX = X position of joystick B (if DX bit 2 set)
- DX = Y position of joystick B (if DX bit 3 set)
- Return: CF set on error
- AH = status (see #00496)
- CF clear if successful
- Program: V20-XT-BIOS is a ROM BIOS replacement with extensions by Peter
- Koehlmann / c't magazine
- SeeAlso: AH=84h"PS",INT 10/AH=0Eh/CX=ABCDh
- --------b-158400----------------------------------
- INT 15 - HUNTER 16 - GET DISKETTE PORT
- AX = 8400h
- BH = Drive (0: A:, 1: B:)
- Return: AL = Port (0: COM1, >0: COM2)
- Desc: return the COM port used for the floppy drive
- SeeAlso: AX=8401h
- --------b-158401----------------------------------
- INT 15 - HUNTER 16 - SET DISKETTE PORT
- AX = 8401h
- BH = Drive (0: A:, 1: B:)
- BL = Port (0: COM1, >0: COM2)
- Desc: set the COM port used for the floppy drive
- SeeAlso: AX=8400h
- --------B-1585-------------------------------
- INT 15 C - OS HOOK - SysReq KEY ACTIVITY (AT,PS)
- AH = 85h
- AL = SysReq key action (00h pressed, 01h released)
- CF clear
- Return: CF clear if successful
- AH = 00h
- CF set on error
- AH = status (see #00496)
- Notes: called by keyboard decode routine
- the default handler simply returns successfully; programs which wish
- to monitor the SysReq key must hook this call
- the SysReq key is often labeled SysRq
- SeeAlso: INT 09
- --------b-158500----------------------------------
- INT 15 - HUNTER 16 - RESTORE POWER MENU (APM)
- AX = 8500h
- Desc: restore the standard power menu
- SeeAlso: AX=8501h"HUNTER"
- --------b-158501----------------------------------
- INT 15 - HUNTER 16 - SET POWER MENU (APM)
- AX = 8501h
- BL = user software interrupt number
- Desc: install an alternate power menu routine
- SeeAlso: AX=8500h"HUNTER"
- --------B-1586-------------------------------
- INT 15 - BIOS - WAIT (AT,PS)
- AH = 86h
- CX:DX = interval in microseconds
- Return: CF clear if successful (wait interval elapsed)
- CF set on error or AH=83h wait already in progress
- AH = status (see #00496)
- Note: the resolution of the wait period is 977 microseconds on many systems
- because many BIOSes use the 1/1024 second fast interrupt from the AT
- real-time clock chip which is available on INT 70; because newer
- BIOSes may have much more precise timers available, it is not
- possible to use this function accurately for very short delays unless
- the precise behavior of the BIOS is known (or found through testing)
- SeeAlso: AH=41h,AH=83h,INT 1A/AX=FF01h,INT 70
- --------b-1586------------------------------------
- INT 15 - HUNTER 16 - GET/SET SCREEN ATTRIBUTE TABLE
- AH = 86h
- AL = function (00h get, nonzero set)
- BX = 1234h
- DS:SI -> 256-byte Attribute buffer
- Note: In text modes each character has its attribute byte XOR'd with the
- corresponding byte in the attribute table. If the attribute is 15,
- 15 is XOR'd with Table[15]
- --------B-1587-------------------------------
- INT 15 - SYSTEM - COPY EXTENDED MEMORY
- AH = 87h
- CX = number of words to copy (max 8000h)
- ES:SI -> global descriptor table (see #00499)
- Return: CF set on error
- CF clear if successful
- AH = status (see #00498)
- Notes: copy is done in protected mode with interrupts disabled by the default
- BIOS handler; many 386 memory managers perform the copy with
- interrupts enabled
- this function is incompatible with the OS/2 compatibility box
- SeeAlso: AH=88h,AH=89h,INT 1F/AH=90h
- (Table 00498)
- Values for extended-memory copy status:
- 00h source copied into destination
- 01h parity error
- 02h interrupt error
- 03h address line 20 gating failed
- 80h invalid command (PC,PCjr)
- 86h unsupported function (XT,PS30)
- Format of global descriptor table:
- Offset Size Description (Table 00499)
- 00h 16 BYTEs zeros (used by BIOS)
- 10h WORD source segment length in bytes (2*CX-1 or greater)
- 12h 3 BYTEs 24-bit linear source address, low byte first
- 15h BYTE source segment access rights (93h)
- 16h WORD (286) zero
- (386+) extended access rights and high byte of source address
- 18h WORD destination segment length in bytes (2*CX-1 or greater)
- 1Ah 3 BYTEs 24-bit linear destination address, low byte first
- 1Dh BYTE destination segment access rights (93h)
- 1Eh WORD (286) zero
- (386+) extended access rights and high byte of destin. address
- 20h 16 BYTEs zeros (used by BIOS to build CS and SS descriptors)
- --------b-1587------------------------------------
- INT 15 - HUNTER 16 - SET INT 72h VECTOR
- AH = 87h
- DS:DX = new service routine
- Desc: set the INT 72h vector which is called in 2 cases:
- - when the machine is about to turn off or reboot, INT 72h is called
- with AH=0
- - when the machine is powering up INT 72h is called with AH=01h
- Note: the actual INT 72h vector must also be changed with INT 21/AH=25h
- --------B-1588-------------------------------
- INT 15 - SYSTEM - GET EXTENDED MEMORY SIZE (286+)
- AH = 88h
- Return: CF clear if successful
- AX = number of contiguous KB starting at absolute address 100000h
- CF set on error
- AH = status
- 80h invalid command (PC,PCjr)
- 86h unsupported function (XT,PS30)
- Notes: TSRs which wish to allocate extended memory to themselves often hook
- this call, and return a reduced memory size. They are then free to
- use the memory between the new and old sizes at will.
- the standard BIOS only returns memory between 1MB and 16MB; use AH=C7h
- for memory beyond 16MB
- not all BIOSes correctly return the carry flag, making this call
- unreliable unless one first checks whether it is supported through
- a mechanism other than calling the function and testing CF
- SeeAlso: AH=87h,AH=8Ah"Phoenix",AH=C7h,AX=DA88h,AX=E801h,AX=E820h
- --------b-1588------------------------------------
- INT 15 - HUNTER 16 - GET POWER UP KEYS
- AH = 88h
- Return: AH = 00h
- BX = column
- CL = row
- SeeAlso: AH=71h
- --------B-1589-------------------------------
- INT 15 - SYSTEM - SWITCH TO PROTECTED MODE
- AH = 89h
- BL = interrupt number of IRQ0 (IRQ1-7 use next 7 interrupts)
- BH = interrupt number of IRQ8 (IRQ9-F use next 7 interrupts)
- ES:SI -> GDT for protected mode (see #00500)
- Return: CF set on error
- AH = FFh error enabling address line 20
- CF clear if successful
- AH = 00h
- in protected mode at specified address
- BP may be destroyed; all segment registers change
- Notes: BL and BH must be multiples of 8
- the protected-mode CS must reference the same memory as the CS this
- function is called from because execution continues with the address
- following the interrupt call
- SeeAlso: AH=87h,AH=88h,INT 67/AX=DE0Ch
- Format of BIOS switch-to-protected-mode Global Descriptor Table:
- Offset Size Description (Table 00500)
- 00h 8 BYTEs null descriptor (initialize to zeros)
- 08h 8 BYTEs GDT descriptor (see #00501)
- 10h 8 BYTEs IDT descriptor
- 18h 8 BYTEs DS descriptor
- 20h 8 BYTEs ES
- 28h 8 BYTEs SS
- 30h 8 BYTEs CS
- 38h 8 BYTEs uninitialized, used to build descriptor for BIOS CS
- Format of segment descriptor table entry:
- Offset Size Description (Table 00501)
- 00h WORD segment limit, low word
- 02h 3 BYTEs segment base address, low 24 bits
- 05h BYTE access mode (see #00502)
- 06h BYTE 386+ extended access mode (see #00505)
- 07h BYTE 386+ segment base address, high 8 bits
- SeeAlso: #00500,INT 2C/AX=0002h,INT 31/AX=0009h
- Bitfields for segment descriptor table access mode field:
- Bit(s) Description (Table 00502)
- 3-0 segment type (see #00503,#00504)
- 4 descriptor type (1 = application, 0 = system)
- 6-5 descriptor privilege level
- 7 segment is present in RAM
- SeeAlso: #00501,#00505
- (Table 00503)
- Values for system segment descriptor type:
- 0 reserved
- 1 available 16-bit TSS
- 2 LDT
- 3 busy 16-bit TSS
- 4 16-bit call gate
- 5 task gate
- 6 16-bit interrupt gate
- 7 16-bit trap gate
- 8 reserved
- 9 available 32-bit TSS
- 10 reserved
- 11 busy 32-bit TSS
- 12 32-bit call gate
- 13 reserved
- 14 32-bit interrupt gate
- 15 32-bit trap gate
- SeeAlso: #00502,#00504
- Bitfields for application segment descriptor type:
- Bit(s) Description (Table 00504)
- 3 code/data
- 0 date
- 1 code
- ---data segments---
- 2 expand down
- 1 writeable
- ---code segments---
- 2 conforming
- 1 readable
- ------
- 0 accessed
- SeeAlso: #00502,#00503
- Bitfields for 386+ segment descriptor table extended access mode field:
- Bit(s) Description (Table 00505)
- 3-0 high 4 bits of segment limit
- 4 available
- 5 reserved (0)
- 6 default operation size (1 = 32 bits, 0 = 16 bits)
- 7 granularity (1 = 4K, 0 = byte)
- SeeAlso: #00501,#00502,#02557
- --------b-158900----------------------------------
- INT 15 - HUNTER 16 - GET POWER MODE
- AX = 8900h
- Return: AH = 00h
- BL = current power mode
- 00h Standard Power Mode (SPM)
- 01h Advanced Power Mode (APM)
- SeeAlso: AX=8901h
- --------b-158901----------------------------------
- INT 15 - HUNTER 16 - SET POWER MODE
- AX = 8901h
- BL = new mode
- 00h Standard Power Mode (SPM)
- 01h Advanced Power Mode (APM)
- Return: AH = 00h
- SeeAlso: AX=8900h
- --------b-158A------------------------------------
- INT 15 - HUNTER 16 - CONTROL POWER INPUT (SPM)
- AH = 8Ah
- AL = new state of Power Input (00h disabled, nonzero enabled)
- SI = 1234h
- DI = 5678h
- Return: AH = status
- 00h success
- FFh failure
- Desc: Enable or disable Power Input. When Power Input is disabled the AC
- adapter will neither charge the batteries nor supply power to the
- Hunter 16. Disable Power Input if using Alkaline batteries.
- --------b-158A-------------------------------
- INT 15 - Phoenix BIOS v4.0 - GET BIG MEMORY SIZE
- AH = 8Ah
- Return: DX:AX = extended memory size in K
- SeeAlso: AH=88h,AX=E801h,AX=E820h
- --------b-158B------------------------------------
- INT 15 - HUNTER 16 - GET/SET CHARGER TEMPERATURE OVERRIDE
- AH = 8Bh
- AL = function
- 00h get
- Return: BH = Maximum charging temperature
- Temp = -20 + (n * 0.63) degrees Centigrade
- BL = Minimum charging temperature
- else set
- BH = maximum charging temperature (as above)
- BL = minimum charging temperature (as above)
- Return: AH = status
- 00h success
- FFh failure
- Desc: get/set the temperature interval within which the charger should
- operate
- --------b-158C------------------------------------
- INT 15 - HUNTER 16 - GET/SET POWER SAVE ENTRY FLAG
- AH = 8Ch
- AL = function
- 00h get
- Return: BX = which operations disable power save (see #00506)
- else set
- BX = which operations should disable power save (see #00506)
- SeeAlso: AH=8Dh
- Bitfields for HUNTER 16 operations disabling power save:
- Bit(s) Description (Table 00506)
- 0 INT 10h prevents power save
- 1 INT 13h prevents power save
- 2 INT 14h prevents power save
- 3 INT 15h prevents power save
- 4 INT 1Ah prevents power save
- 5 INT 21h prevents power save
- 6 direct write to video RAM prevents power save
- 7 access to 8250 UART prevents power save
- 8 access to 8253 (Sound) prevents power save
- --------b-158D------------------------------------
- INT 15 - HUNTER 16 - GET/SET BOOST CHARGE (SPM)
- AH = 8Dh
- AL = function
- 00h get
- Return: AL = Fast Charge state (00h prevented, else allowed)
- nonzero set
- BH = Fast Charge state (00h prevent, nonzero allow)
- Return: AH = status
- 00h success
- FFh failure
- Desc: control whether Fast Charging (200ma rather than 70ma) is allowed
- SeeAlso: AH=8Ch
- --------B-1590-------------------------------
- INT 15 - OS HOOK - DEVICE BUSY (AT,PS)
- AH = 90h
- AL = device type (see #00507)
- ES:BX -> request block for type codes 80h through BFh
- CF clear
- Return: CF set if wait time satisfied
- CF clear if driver must perform wait
- AH = 00h
- Notes: type codes are allocated as follows:
- 00-7F non-reentrant devices; OS must arbitrate access
- 80-BF reentrant devices; ES:BX points to a unique control block
- C0-FF wait-only calls, no complementary INT 15/AH=91h call
- floppy and hard disk BIOS code uses this call to implement a timeout;
- for device types 00h and 01h, a return of CF set means that the
- timeout expired before the disk responded.
- this function should be hooked by a multitasker to allow other tasks
- to execute while the BIOS is waiting for I/O completion; the default
- handler merely returns with AH=00h and CF clear
- SeeAlso: AH=91h,INT 13/AH=00h,INT 17/AH=00h,INT 1A/AH=83h
- (Table 00507)
- Values for device type:
- 00h disk
- 01h diskette
- 02h keyboard
- 03h PS/2 pointing device
- 21h waiting for keyboard input (Phoenix BIOS)
- 80h network
- FBh digital sound (Tandy)
- FCh disk reset (PS)
- FDh diskette motor start
- FEh printer
- --------B-1591-------------------------------
- INT 15 - OS HOOK - DEVICE POST (AT,PS)
- AH = 91h
- AL = device type (see #00507)
- ES:BX -> request block for type codes 80h through BFh
- CF clear
- Return: AH = 00h
- Note: this function should be hooked by a multitasker to allow other tasks
- to execute while the BIOS is waiting for I/O completion; the default
- handler merely returns with AH=00h and CF clear
- SeeAlso: AH=90h
- --------B-1592-------------------------------
- INT 15 - IBM SurePath BIOS - Officially "Private" Function
- AH = 92h
- SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
- --------B-15A0-------------------------------
- INT 15 - IBM SurePath BIOS - ACCESS LOADABLE-ABIOS SIGNATURE
- AH = A0h
- AL = function
- 00h get loadable-ABIOS signature
- Return: BL = signature value
- 00h loadable-ABIOS prompting not required
- A1h loadable-ABIOS prompting is required
- 01h write loadable-ABIOS signature
- BL = new signature value
- 00h loadable-ABIOS prompting not required
- A1h loadable-ABIOS prompting is required
- Return: CF clear if successful
- CF set on error
- AH = status
- 00h successful
- 01h invalid subfunction
- 02h unable to read/write signature
- 86h function not supported
- Note: IBM classifies this function as optional
- SeeAlso: AH=08h"IBM"
- --------x-15A100-----------------------------
- INT 15 U - AMI PCI BIOS - SET ??? FLAG
- AX = A100h
- Return: AX = 0000h
- CF clear
- BX,CX,DI may be destroyed
- Desc: sets bit 7 of CMOS RAM location 37h and updates the CMOS checksum in
- locations 3Eh and 3Fh
- Notes: in the examined version of the BIOS, nonzero values in AL cause it to
- drop through to checking the next possible value of AH, i.e. only
- subfunction 00h is supported
- also supported by Dell XPS P90 and IBM PS/PV 6384, which also use
- AMI BIOSes
- --------B-15AB-------------------------------
- INT 15 - IBM SurePath BIOS - Officially "Private" Function
- AH = ABh
- SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
- ----------15B001CX5354-----------------------
- INT 15 - Stac ??? - INSTALLATION CHECK
- AX = B001h
- CX = 5354h ('ST')
- DX = 4143h ('AC')
- Return: AX = 4F4Bh ('OK') if installed
- Note: this function is called by Novell DOS 7 NWCACHE v1.01
- --------n-15BA10-----------------------------
- INT 15 - HP OmniShare - Pen Driver - REPORT PEN CONTROL AREA EVENT
- AX = BA10h
- BL = event
- 00h the pen left control areas
- 01h the pen entered the Brightness- area
- 02h the pen entered the Brightness+ area
- 03h the pen entered the Contrast- area
- 04h the pen entered the Contrast+ area
- Return: CF clear if successfully processed
- CF set on error (function not supported, ie. not an OmniShare BIOS)
- Note: The pen driver is responsible for detecting when the pen enters and
- leaves control areas of the OmniShare tablet, and notifying the BIOS.
- The BIOS manages the events, including the autorepetition, and sets
- the status LEDs.
- SeeAlso: AX=BA20h,AX=BA13h
- --------n-15BA11-----------------------------
- INT 15 - HP OmniShare - Pen Driver - SET THE COMMUNICATION LED STATE
- AX = BA11h
- BL = new LED state (00h steady, 01h flashing)
- Return: CF clear if successful
- CF set on error
- Note: this function is for use by communication software to give visual
- feedback of active communications even if the display is in standby
- mode.
- SeeAlso: AX=BA10h,AX=BA24h
- --------n-15BA12-----------------------------
- INT 15 - HP OmniShare - Pen Driver - STORE PEN BATTERY CHARGE
- AX = BA12h
- BL = new battery state (00h good, 01h low charge)
- Return: CF set on error
- CF clear if successfully stored in CMOS
- Note: The last report will be displayed by the Power-On Self Test the next
- time the OmniShare boots. This allows something meaningful to be
- reported even if the pen is not detected during the POST.
- SeeAlso: AX=BA13h
- --------n-15BA13-----------------------------
- INT 15 - HP OmniShare - Pen Driver - GET PEN BATTERY CHARGE
- AX = BA13h
- Return: CF clear if successful
- BL = pen battery state (00h good, 01h low charge)
- CF set on error
- Note: returns the last value set by AX=BA12h.
- SeeAlso: AX=BA12h
- --------p-15BA20-----------------------------
- INT 15 - HP OmniShare - STANDBY.COM - INSTALLATION CHECK
- AX = BA20h
- Return: CF clear if successful (installed)
- CF set on error (not installed)
- Notes: The display controller can enter a standby mode after a given timeout,
- to conserve power or (for the OmniShare) to increase the life of
- the backlight.
- A side effect of standby mode is that the communications LED turns on
- automatically when the display is in standby mode. This is done in
- hardware, and is intended to show that the unit is still on.
- SeeAlso: AX=BA10h,AX=BA20h,AX=BA22h,AX=BA24h,AX=BA26h
- --------p-15BA21-----------------------------
- INT 15 - HP OmniShare - STANDBY.COM - SET STANDBY DURATION
- AX = BA21h
- BL = new timeout before standby mode in minutes (01h-0Fh)
- 00h to disable automatic switch to standby mode
- Return: CF clear if successful
- CF set on error (function not supported)
- Note: The actual timeout with a GD6205 controller is ((N*64)-32) seconds,
- instead of (N*60) seconds as documented.
- SeeAlso: AX=BA20h,AX=BA22h
- --------p-15BA22-----------------------------
- INT 15 - HP OmniShare - STANDBY.COM - GET STANDBY DURATION
- AX = BA22h
- Return: CF clear if successful
- BL = standy duration in minutes (01h-0Fh), or 00h if disabled
- CF set on error (function not supported)
- Note: The actual timeout with a GD6205 controller is ((N*64)-32) seconds,
- instead of (N*60) seconds as documented.
- SeeAlso: AX=BA20h,AX=BA21h
- --------p-15BA23-----------------------------
- INT 15 - HP OmniShare - STANDBY.COM - TURN ON THE SCREEN IMMEDIATELY
- AX = BA23h
- Return: CF clear if successful
- CF set on error
- SeeAlso: AX=BA11h,AX=BA20h,AX=BA24h
- --------p-15BA24-----------------------------
- INT 15 - HP OmniShare - STANDBY.COM - TURN OFF THE SCREEN IMMEDIATELY
- AX = BA24h
- Return: CF clear if successful
- CF set on error
- Note: This function is not implemented yet. Reserved for future versions
- of the OmniShare.
- SeeAlso: AX=BA11h,AX=BA20h,AX=BA23h
- --------p-15BA25-----------------------------
- INT 15 - HP OmniShare - STANDBY.COM - PREPARE FOR UNINSTALL
- AX = BA25h
- Return: CF clear if successful
- AX = 25BAh
- BX = PSP of STANDBY.COM resident portion
- DX:CX -> previous INT 15 handler
- CF set on error
- Note: This function is used internally by the STANDBY.COM /u option, and
- should not be used by application programs.
- SeeAlso: AX=BA20h
- --------p-15BA26-----------------------------
- INT 15 - HP OmniShare - STANDBY.COM - IS THE DISPLAY IN STANDBY MODE?
- AX = BA26h
- Return: CF clear if successful
- AL = display state (00h active, 01h in standby mode)
- CF set on error (function not supported)
- SeeAlso: AX=BA20h,AX=BA23h
- --------p-15BA27-----------------------------
- INT 15 - HP OmniShare - STANDBY.COM - RESERVED FUNCTIONS
- AX = BA27h to BA2Fh
- Desc: reserved for future use
- --------b-15BC-------------------------------
- INT 15 - Phoenix 386 BIOS - DETERMINE CPU SPEED FOR DELAY LOOPS
- AH = BCh
- Return: CF clear
- (Phoenix 1.10 10a) BYTE 0040h:00B0h set to delay loop count
- (Dell 4xxDE BIOS A11) WORD 0040h:00ECh set to delay loop count
- Note: this function reads system timer channel 0 twice, then does
- calculations on the returned values to determine the delay loop
- counter needed by the BIOS for beeps and floppy timeouts
- SeeAlso: AX=2305h,MEM 0040h:00B0h
- --------E-15BF00-----------------------------
- INT 15 - Rational Systems DOS/16M - ???
- AX = BF00h
- ???
- Return: ???
- Note: under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
- SeeAlso: AX=BF02h
- --------E-15BF01-----------------------------
- INT 15 - Rational Systems DOS/16M - ???
- AX = BF01h
- ???
- Return: ???
- Notes: under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
- called by DOS/4GW
- SeeAlso: AX=BF00h,AX=BF02h
- --------E-15BF02DX0000-----------------------
- INT 15 - Rational Systems DOS/16M - INSTALLATION CHECK
- AX = BF02h
- DX = 0000h
- Return: DX = nonzero if installed
- DX:SI -> XBRK structure (see #00508)
- Note: this function is also supported by DOS/4G
- SeeAlso: AX=BF01h,AX=BFDCh,AX=BFDEh/BX=0000h
- SeeAlso: INT 21/AH=FFh/DH=0Eh,INT 2F/AH=A1h,INT 2F/AX=F100h,INT 2F/AX=FBA1h
- Format of DOS/16M XBRK structure:
- Offset Size Description (Table 00508)
- 00h DWORD linear address of first available byte
- 04h DWORD linear address of last available byte + 1 ???
- 08h DWORD real-mode address of XBRK structure???
- 0Ch DWORD ???
- 10h 2 BYTEs ???
- 12h WORD segment of ???
- 14h 8 BYTEs ???
- 1Ch 512 BYTEs protected-mode IDT
- 21Ch N BYTEs protected-mode GDT
- --------E-15BF03-----------------------------
- INT 15 - Rational Systems DOS/4GW - UNINSTALL???
- AX = BF03h
- BX = PSP segment of extender
- ???
- Return: ???
- Note: if BX is not the PSP segment of the extender, it passes the call down
- the INT 15 chain; this allows nested instances of the extender
- SeeAlso: AX=BF06h
- --------E-15BF04-----------------------------
- INT 15 - Rational Systems DOS/4GW - ???
- AX = BF04h
- BX = PSP segment of extender
- Return: nothing???
- Notes: if BX is not the PSP segment of the extender, it passes the call down
- the INT 15 chain; this allows nested instances of the extender
- grabs INT 2Fh and installs handlers for INT 2F/AX=1605h-1607h
- SeeAlso: INT 2F/AX=1607h/BX=22C0h
- --------E-15BF05-----------------------------
- INT 15 - Rational Systems DOS/4GW - INITIALIZE PROTECTED-MODE INTERFACE
- AX = BF05h
- BX = PSP segment of extender
- Return: nothing???
- Notes: if BX is not the PSP segment of the extender, it passes the call down
- the INT 15 chain; this allows nested instances of the extender
- calls INT 67/AX=DE01h if ???
- --------E-15BF06-----------------------------
- INT 15 - Rational Systems DOS/4GW - ???
- AX = BF06h
- BX = PSP segment of extender
- ???
- Return: ???
- Note: if BX is not the PSP segment of the extender, it passes the call down
- the INT 15 chain; this allows nested instances of the extender
- SeeAlso: AX=BF03h
- --------E-15BFDCDX0000-----------------------
- INT 15 - Rational Systems DOS/4GW - INSTALLATION CHECK
- AX = BFDCh
- DX = 0000h
- SI = 0000h
- Return: DX = nonzero if installed
- DX:SI -> XBRK structure (see #00508)
- SeeAlso: AX=BF02h
- --------E-15BFDEBX0000-----------------------
- INT 15 - DESQview/X - DVDOS4GX.DVR - INSTALLATION CHECK
- AX = BFDEh
- BX = 0000h
- Return: AX = ??? (0003h)
- BX = FFFFh
- SeeAlso: AX=BF02h
- --------E-15BFDEBX0001-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROCESS MANAGER NAME
- AX = BFDEh
- BX = 0001h
- Return: BX = 0000h (success)
- CX:DX -> name of process manager executable
- SeeAlso: AX=BFDEh/BX=0000h
- --------E-15BFDEBX0002-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
- AX = BFDEh
- BX = 0002h
- CX:DX -> ???
- Return: BX = 0000h (success)
- SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0003h
- --------E-15BFDEBX0003-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
- AX = BFDEh
- BX = 0003h
- Return: BX = 0000h (success)
- CX:DX -> ???
- SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0002h
- --------E-15BFDEBX0004-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
- AX = BFDEh
- BX = 0004h
- CL = ???
- Return: BX = 0000h (success)
- CX:DX -> XBRK structure (see #00508)
- SeeAlso: AX=BFDEh/BX=0000h
- --------E-15BFDEBX0005-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
- AX = BFDEh
- BX = 0005h
- CX = new value for ???
- Return: BX = 0000h (success)
- AX = old value of ???
- DS:SI -> ??? (if AX nonzero on return)
- ES:DI -> ??? (if AX zero on return)
- Note: called by DOS4GW.EXE
- SeeAlso: AX=BFDEh/BX=0000h
- --------E-15BFDEBX0006-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
- AX = BFDEh
- BX = 0006h
- Return: BX = 0000h (success)
- AH = interrupt number??? (BEh)
- CX:DX = ???
- SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0007h,INT BE"DESQview"
- --------E-15BFDEBX0007-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
- AX = BFDEh
- BX = 0007h
- CX:DX = ???
- Return: BX = 0000h (success)
- SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0006h
- --------E-15BFDEBX0008-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
- AX = BFDEh
- BX = 0008h
- CX = segment of ???
- DS = ???
- Return: BX = status
- 0000h successful
- AL = ??? (80h or C0h)
- DX = ??? (0603h) if AL=C0h
- 0001h failed
- AX = 0000h
- Note: called by DOS4GW.EXE
- SeeAlso: AX=BFDEh/BX=0000h
- --------E-15BFDEBX0009-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROTECTED MODE PROGRAM LOADER
- AX = BFDEh
- BX = 0009h
- Return: BX = 0000h (success)
- CX:DX -> full pathname to LOAD32.EXP
- SeeAlso: AX=BFDEh/BX=0000h
- --------E-15BFDEBX000A-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - DECREMENT ???
- AX = BFDEh
- BX = 000Ah
- Return: BX = 0000h (success)
- AX = new value of ??? counter
- Notes: also resets a variety of values if the counter goes negative
- called by DOS4GW.EXE
- SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Bh
- --------E-15BFDEBX000B-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - INCREMENT ???
- AX = BFDEh
- BX = 000Bh
- Return: AX = new value of ??? counter
- Note: called by DOS4GW.EXE
- SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Ah
- --------E-15BFDEBX000C-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
- AX = BFDEh
- BX = 000Ch
- CL = ???
- 00h
- nonzero
- Return: ???
- SeeAlso: AX=BFDEh/BX=0000h
- --------E-15BFDEBX000D-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
- AX = BFDEh
- BX = 000Dh
- ???
- Return: ???
- SeeAlso: AX=BFDEh/BX=0000h
- --------E-15BFDEBX000E-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
- AX = BFDEh
- BX = 000Eh
- DX:CX -> ???
- Return: AX = segment of handle for calling task
- BX = ??? (probably destroyed)
- DX:CX -> ???
- SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Fh,AX=BFDEh/BX=0013h
- --------E-15BFDEBX000F-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
- AX = BFDEh
- BX = 000Fh
- Return: AX = segment of handle for calling task
- BX = ??? (probably destroyed)
- DX:CX -> ???
- Note: identical to AX=BFDEh/BX=000Eh with CX:DX = 0000h:0000h
- SeeAlso: AX=BFDEh/BX=000Eh,AX=BFDEh/BX=0010h
- --------E-15BFDEBX0010-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET TASK HANDLE
- AX = BFDEh
- BX = 0010h
- Return: AX = segment of caller's task handle
- BX destroyed
- SeeAlso: AX=BFDEh/BX=000Fh
- --------E-15BFDEBX0011-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
- AX = BFDEh
- BX = 0011h
- Return: CX = code segment of DVDOS4GX.DVR
- BX = ??? (0004h)
- SeeAlso: AX=BFDEh/BX=0000h
- --------E-15BFDEBX0012-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
- AX = BFDEh
- BX = 0012h
- Return: DX = code segment of DVDOS4GX.DVR
- BX = ??? (012Ch)
- CX = ??? (0006h)
- SeeAlso: AX=BFDEh/BX=0000h
- --------E-15BFDEBX0013-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
- AX = BFDEh
- BX = 0013h
- Return: DX:CX -> ???
- SeeAlso: AX=BFDEh/BX=000Eh
- --------E-15BFDEBX0014-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - LOCK ??? MAILBOX
- AX = BFDEh
- BX = 0014h
- CX = index of ??? mailbox
- (0000h-0004h valid, but no range checking done)
- Return: AX,BX destroyed
- SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
- --------E-15BFDEBX0015-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - UNLOCK ??? MAILBOX
- AX = BFDEh
- BX = 0015h
- CX = index of ??? mailbox
- (0000h-0004h valid, but no range checking done)
- Return: AX,BX destroyed
- SeeAlso: AX=BFDEh/BX=0014h,AX=BFDEh/BX=0016h
- --------E-15BFDEBX0016-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - CHECK IF ??? MAILBOX OWNED
- AX = BFDEh
- BX = 0016h
- CX = index of ??? mailbox
- (0000h-0004h valid, but no range checking done)
- Return: AX = status
- 0000h no one owns mailbox
- 0001h mailbox has an owner
- BX destroyed
- SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
- --------E-15BFDEBX0017-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? MAILBOX OWNER
- AX = BFDEh
- BX = 0017h
- CX = index of ??? mailbox
- (0000h-0004h valid, but no range checking done)
- Return: AX = segment of mailbox owner's handle
- BX = segment of caller's task handle
- SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0016h
- --------E-15BFDEBXFFFD-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
- AX = BFDEh
- BX = FFFDh
- Return: CX:DX = ???
- SeeAlso: AX=BFDEh/BX=FFFEh
- --------E-15BFDEBXFFFE-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
- AX = BFDEh
- BX = FFFEh
- CX:DX = ???
- SeeAlso: AX=BFDEh/BX=FFFDh
- --------E-15BFDEBXFFFF-----------------------
- INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - NOP
- AX = BFDEh
- BX = FFFFh
- SeeAlso: AX=BFDEh/BX=0000h
- --------B-15C0-------------------------------
- INT 15 - SYSTEM - GET CONFIGURATION (XT after 1/10/86,AT mdl 3x9,CONV,XT286,PS)
- AH = C0h
- Return: CF set if BIOS doesn't support call
- CF clear on success
- ES:BX -> ROM table (see #00509)
- AH = status
- 00h successful
- 86h unsupported function
- Notes: the 1/10/86 XT BIOS returns an incorrect value for the feature byte
- the configuration table is at F000h:E6F5h in 100% compatible BIOSes
- Dell machines contain the signature "DELL" or "Dell" at absolute FE076h
- and a model byte at absolute address FE845h (see #00516)
- Hewlett-Packard machines contain the signature "HP" at F000h:00F8h and
- a product identifier at F000h:00FAh (see #00519)
- Compaq machines can be identified by the signature string "COMPAQ" at
- F000h:FFEAh, and is preceded by additional information (see #00517)
- Tandy 1000 machines contain 21h in the byte at F000h:C000h and FFh in
- the byte at FFFFh:000Eh; Tandy 1000SL/TL machines only provide the
- first three data bytes (model/submodel/revision) in the returned
- table
- Toshiba laptops contain the signature "TOSHIBA" at FE010h as part of
- a laptop information record at F000h:E000h (see #00520)
- some AST machines contain the string "COPYRIGHT AST RESEARCH" one byte
- past the end of the configuration table
- the Phoenix 386 BIOS contains a second version and date string
- (presumably the last modification for that OEM version) beginning at
- F000h:FFD8h, with each byte doubled (so that both ROM chips contain
- the complete information)
- SeeAlso: AH=C7h,AH=C9h,AX=D100h,AX=D103h
- Format of ROM configuration table:
- Offset Size Description (Table 00509)
- 00h WORD number of bytes following
- 02h BYTE model (see #00515)
- 03h BYTE submodel (see #00515)
- 04h BYTE BIOS revision: 0 for first release, 1 for 2nd, etc.
- 05h BYTE feature byte 1 (see #00510)
- 06h BYTE feature byte 2 (see #00511)
- 07h BYTE feature byte 3 (see #00512)
- 08h BYTE feature byte 4 (see #00513)
- 09h BYTE feature byte 5 (see #00514)
- ??? (08h) (Phoenix 386 v1.10)
- ??? (0Fh) (Phoenix 486 v1.03 PCI)
- ---AWARD BIOS---
- 0Ah N BYTEs AWARD copyright notice
- ---Phoenix BIOS---
- 0Ah BYTE ??? (00h)
- 0Bh BYTE major version
- 0Ch BYTE minor version (BCD)
- 0Dh 4 BYTEs ASCIZ string "PTL" (Phoenix Technologies Ltd)
- ---Quadram Quad386---
- 0Ah 17 BYTEs ASCII signature string "Quadram Quad386XT"
- Bitfields for feature byte 1:
- Bit(s) Description (Table 00510)
- 7 DMA channel 3 used by hard disk BIOS
- 6 2nd 8259 installed
- 5 Real-Time Clock installed
- 4 INT 15/AH=4Fh called upon INT 09h
- 3 wait for external event (INT 15/AH=41h) supported
- 2 extended BIOS area allocated (usually at top of RAM)
- 1 bus is Micro Channel instead of ISA
- 0 system has dual bus (Micro Channel + ISA)
- SeeAlso: #00509,#00511
- Bitfields for feature byte 2:
- Bit(s) Description (Table 00511)
- 7 32-bit DMA supported
- 6 INT 16/AH=09h (keyboard functionality) supported (see #00585)
- 5 INT 15/AH=C6h (get POS data) supported
- 4 INT 15/AH=C7h (return memory map info) supported
- 3 INT 15/AH=C8h (en/disable CPU functions) supported
- 2 non-8042 keyboard controller
- 1 data streaming supported
- 0 reserved
- SeeAlso: #00509,#00512,AH=C6h,AH=C7h,AH=C8h,INT 16/AH=09h
- Bitfields for feature byte 3:
- Bit(s) Description (Table 00512)
- 7 not used
- 6-5 reserved
- 4 POST supports ROM-to-RAM enable/disable
- 3 SCSI subsystem supported on system board
- 2 information panel installed
- 1 IML (Initial Machine Load) system (BIOS loaded from disk)
- 0 SCSI supported in IML
- SeeAlso: #00509,#00511,#00512
- Bitfields for feature byte 4:
- Bit(s) Description (Table 00513)
- 7 IBM "private" (set on N51SX, CL57SX)
- 6 system has EEPROM
- 5-3 ABIOS presence
- 001 not supported
- 010 supported in ROM
- 011 supported in RAM (must be loaded)
- 2 "private"
- 1 system supports memory split at/above 16M
- 0 POSTEXT directly supported by POST
- SeeAlso: #00509,#00512,#00514
- Bitfields for feature byte 5 (IBM):
- Bit(s) Description (Table 00514)
- 7-5 IBM "private"
- 4-2 reserved
- 1 system has enhanced mouse mode
- 0 flash EPROM
- SeeAlso: #00509,#00513
- (Table 00515)
- Values for model/submodel/revision:
- Model Submdl Rev BIOS date System
- FFh * * 04/24/81 PC (original)
- FFh * * 10/19/81 PC (some bugfixes)
- FFh * * 10/27/82 PC (HD, 640K, EGA support)
- FFh 00h rev ??? Tandy 1000SL
- FFh 01h rev ??? Tandy 1000TL
- FFh 46h *** ??? Olivetti M15
- FEh * * 08/16/82 PC XT
- FEh * * 11/08/82 PC XT and Portable
- FEh * * ../..x.. Toshiba laptops up to ~1987
- ("x"=product ID) (see #00521)
- FEh 43h *** ??? Olivetti M240
- FEh A6h ??? ??? Quadram Quad386
- FDh * * 06/01/83 PCjr
- FCh * * 01/10/84 AT models 068,099 6 MHz 20MB
- FCh * * 02/25/93 Linux DOSEMU (all versions)
- FCh 00h 00h ??? PC3270/AT
- FCh 00h 01h 06/10/85 AT model 239 6 MHz 30MB
- FCh 00h > 01h ??? 7531/2 Industrial AT
- FCh 01h 00h 11/15/85 AT models 319,339 8 MHz, Enh Keyb, 3.5"
- FCh 01h 00h 09/17/87 Tandy 3000
- FCh 01h 00h ../..x.. Toshiba laptops since ~1988
- ("x"=product ID) (see #00521)
- FCh 01h 00h 03/08/93 Compaq DESKPRO/i
- FCh 01h 00h various Compaq DESKPRO, SystemPro, ProSignia
- FCh 01h 00h 07/20/93 Zenith Z-Lite 425L
- FCh 01h 00h 04/09/90 AMI BIOS
- FCh 01h 20h 06/10/92 AST
- FCh 01h 30h ??? Tandy 3000NL
- FCh 01h ??? ??? Compaq 286/386
- FCh 02h 00h 04/21/86 PC XT-286
- FCh 02h 00h various Compaq LTE Lite
- FCh 02h 00h 08/05/93 Compaq Contura 486/486c/486cx
- FCh 02h 00h 08/11/88 SoftWindows 1.0.1 (Power Macintosh)
- FCh 04h 00h 02/13/87 ** PS/2 Model 50 (10 MHz/1 ws 286)
- FCh 04h 01h 05/09/87 PS/2 Model 50 (10 Mhz 286, LW-type 32)
- FCh 04h 02h ??? PS/2 Model 50
- FCh 04h 02h 01/28/88 PS/2 Model 50Z (10 Mhz 286, LW-type 33)
- FCh 04h 03h 04/18/88 PS/2 Model 50Z (10 MHz/0 ws 286)
- FCh 04h 04h ??? PS/2 Model 50Z
- FCh 05h 00h 02/13/87 ** PS/2 Model 60 (10 MHz 286)
- FCh 06h 00h ??? IBM 7552-140 "Gearbox"
- FCh 06h 01h ??? IBM 7552-540 "Gearbox"
- FCh 08h *** ??? Epson, unknown model
- FCh 08h 00h ??? PS/2 Model 25/286
- FCh 09h 00h ??? PS/2 Model 25 (10 MHz 286)
- FCh 09h 00h 08/25/88 PS/2 Model 30 286 (10 Mhz, LW-type 37)
- FCh 09h 02h 06/28/89 PS/2 Model 30-286
- FCh 09h 02h 06/28/89 PS/2 Model 25 286 (10 Mhz, LW-type 37)
- FCh 0Bh 00h 12/01/89 PS/1 (LW-Type 44)
- FCh 0Bh 00h 02/16/90 PS/1 Model 2011 (10 MHz 286)
- FCh 20h 00h 02/18/93 Compaq ProLinea
- FCh 25h 09h 12/07/91 PS/2 Model 56 SLC (20 MHz 386SLC)
- FCh 30h *** ??? Epson, unknown model
- FCh 31h *** ??? Epson, unknown model
- FCh 33h *** ??? Epson, unknown model
- FCh 42h *** ??? Olivetti M280
- FCh 45h *** ??? Olivetti M380 (XP 1, XP3, XP 5)
- FCh 48h *** ??? Olivetti M290
- FCh 4Fh *** ??? Olivetti M250
- FCh 50h *** ??? Olivetti M380 (XP 7)
- FCh 51h *** ??? Olivetti PCS286
- FCh 52h *** ??? Olivetti M300
- FCh 81h 00h 01/15/88 Phoenix 386 BIOS v1.10 10a
- FCh 81h 01h ??? "OEM machine"
- FCh 82h 01h ??? "OEM machine"
- FCh 94h 00h ??? Zenith 386
- FBh 00h 01h 01/10/86 PC XT-089, Enh Keyb, 3.5" support
- FBh 00h 01h 05/13/94 HP 200LX 2MB BIOS 1.01 A D german
- FBh 00h 02h 05/09/86 PC XT
- FBh 00h 04h 08/19/93 HP 100LX 1MB BIOS 1.04 A
- FBh 4Ch *** ??? Olivetti M200
- FAh 00h 00h 09/02/86 PS/2 Model 30 (8 MHz 8086)
- FAh 00h 01h 12/12/86 PS/2 Model 30
- FAh 00h 02h 02/05/87 PS/2 Model 30
- FAh 01h 00h 06/26/87 PS/2 Model 25/25L (8 MHz 8086)
- FAh 30h 00h ??? IBM Restaurant Terminal
- FAh 4Eh *** ??? Olivetti M111
- FAh FEh 00h ??? IBM PCradio 9075
- F9h 00h 00h 09/13/85 PC Convertible
- F9h FFh 00h ??? PC Convertible
- F8h 00h 00h 03/30/87 ** PS/2 Model 80 (16MHz 386)
- F8h 00h 00h ??? PS/2 Model 75 486 (33Mhz 486)
- F8h 01h 00h 10/07/87 PS/2 Model 80 (20MHz 386)
- F8h 02h 00h ??? PS/2 Model 55-5571
- F8h 04h 00h 01/29/88 PS/2 Model 70 (20 Mhz 386DX,LW-type 33)
- F8h 04h 02h 04/11/88 PS/2 Model 70 20MHz, type 2 system brd
- F8h 04h 03h 03/17/89 PS/2 Model 70 20MHz, type 2 system brd
- F8h 05h 00h ??? IBM PC 7568
- F8h 06h 00h ??? PS/2 Model 55-5571
- F8h 07h 00h ??? IBM PC 7561/2
- F8h 07h 01h ??? PS/2 Model 55-5551
- F8h 07h 02h ??? IBM PC 7561/2
- F8h 07h 03h ??? PS/2 Model 55-5551
- F8h 09h 00h 01/29/88 PS/2 Model 70 16MHz 386DX, type 1 sysbd
- F8h 09h 02h 04/11/88 PS/2 Model 70 some models
- F8h 09h 03h 03/17/89 PS/2 Model 70 some models
- F8h 09h 04h 12/15/89 PS/2 Model 70 (16 Mhz 386, LW-type 33)
- F8h 0Bh 00h 01/18/89 PS/2 Model P70 (8573-121) typ 2 sys brd
- F8h 0Bh 02h 12/16/89 PS/2 Model P70 ??
- F8h 0Ch 00h 11/02/88 PS/2 Model 55SX (16 MHz 386SX)
- F8h 0Dh 00h ??? PS/2 Model 70 25MHz, type 3 system brd
- F8h 0Dh 00h 06/08/88 PS/2 Model 70 386 25MHz, type 3 sys brd
- F8h 0Dh 01h 02/20/89 PS/2 Model 70 386 25MHz, type 3 sys brd
- F8h 0Dh ??? 12/01/89 PS/2 Model 70 486 25Mhz, type 3 sys brd
- F8h 0Eh 00h ??? PS/1 486SX
- F8h 0Fh 00h ??? PS/1 486DX
- F8h 10h 00h ??? PS/2 Model 55-5551
- F8h 11h 00h 10/01/90 PS/2 Model 90 XP (25 MHz 486)
- F8h 12h 00h ??? PS/2 Model 95 XP
- F8h 13h 00h 10/01/90 PS/2 Model 90 XP (33 MHz 486)
- F8h 14h 00h 10/01/90 PS/2 Model 90-AK9 (25 MHz 486), 95 XP
- F8h 15h 00h ??? PS/2 Model 90 XP
- F8h 16h 00h 10/01/90 PS/2 Model 90-AKD / 95XP486 (33MHz 486)
- F8h 17h 00h ??? PS/2 Model 90 XP
- F8h 19h 05h ??? PS/2 Model 35/35LS or 40 (20 MHz 386SX)
- F8h 19h 05h 03/15/91 PS/2 Model 35 SX / 40 SX (LW-type 37)
- F8h 19h 06h 04/04/91 PS/2 Model 35 SX / 40 SX (LW-type 37)
- F8h 1Ah 00h ??? PS/2 Model 95 XP
- F8h 1Bh 00h 09/29/89 PS/2 Model 70 486 (25 Mhz 386DX)
- F8h 1Bh 00h 10/02/89 PS/2 Model 70-486 (25 MHz 486)
- F8h 1Ch 00h 02/08/90 PS/2 Model 65-121 / 65 SX (16MHz 386SX)
- F8h 1Eh 00h 02/08/90 PS/2 Model 55LS (16 MHz 386SX)
- F8h 23h 00h ??? PS/2 Model L40 SX
- F8h 23h 01h ??? PS/2 Model L40 SX (20 MHz 386SX)
- F8h 23h 02h 02/27/91 PS/2 Model L40 SX (20Mhz386SX,LW-typ37)
- F8h 25h 00h ??? PS/2 Model 57 SLC
- F8h 25h 06h ??? PS/2 Model M57 (20 MHz 386SLC)
- F8h 26h 00h ??? PS/2 Model 57 SX
- F8h 26h 01h ??? PS/2 Model 57 (20 MHz 386SX)
- F8h 26h 02h 07/03/91 PS/2 Model 57 SX (20Mhz 386SX, SCSI)
- F8h 28h 00h ??? PS/2 Model 95 XP
- F8h 29h 00h ??? PS/2 Model 90 XP
- F8h 2Ah 00h ??? PS/2 Model 95 XP (50 MHz 486)
- F8h 2Bh 00h ??? PS/2 Model 90 / 90XP486 (50 MHz 486)
- F8h 2Ch 00h ??? PS/2 Model 95 XP
- F8h 2Ch 01h ??? PS/2 Model 95 (20 MHz 486SX)
- F8h 2Dh 00h ??? PS/2 Model 90 XP (20 MHz 486SX)
- F8h 2Eh 00h ??? PS/2 Model 95 XP
- F8h 2Eh 00h ??? PS/2 Model 95 XP486 (20 Mhz 486SX)
- F8h 2Eh 01h ??? PS/2 Model 95 (20 MHz 486SX + 487SX)
- F8h 2Fh 00h ??? PS/2 Model 90 XP (20 MHz 486SX + 487SX)
- F8h 30h 00h ??? PS/1 Model 2121 (16 MHz 386SX)
- F8h 33h 00h ??? PS/2 Model 30-386
- F8h 34h 00h ??? PS/2 Model 25-386
- F8h 36h 00h ??? PS/2 Model 95 XP
- F8h 37h 00h ??? PS/2 Model 90 XP
- F8h 38h 00h ??? PS/2 Model 57
- F8h 39h 00h ??? PS/2 Model 95 XP
- F8h 3Fh 00h ??? PS/2 Model 90 XP
- F8h 40h 00h ??? PS/2 Model 95 XP
- F8h 41h 00h ??? PS/2 Model 77
- F8h 45h 00h ??? PS/2 Model 90 XP (Pentium)
- F8h 46h 00h ??? PS/2 Model 95 XP (Pentium)
- F8h 47h 00h ??? PS/2 Model 90/95 E (Pentium)
- F8h 48h 00h ??? PS/2 Model 85
- F8h 49h 00h ??? PS/ValuePoint 325T
- F8h 4Ah 00h ??? PS/ValuePoint 425SX
- F8h 4Bh 00h ??? PS/ValuePoint 433DX
- F8h 4Eh 00h ??? PS/2 Model 295
- F8h 50h 00h ??? PS/2 Model P70 (8573) (16 MHz 386)
- F8h 50h 01h 12/16/89 PS/2 Model P70 (8570-031)
- F8h 52h 00h ??? PS/2 Model P75 (33 MHz 486)
- F8h 56h 00h ??? PS/2 Model CL57 SX
- F8h 57h 00h ??? PS/2 Model 90 XP
- F8h 58h 00h ??? PS/2 Model 95 XP
- F8h 59h 00h ??? PS/2 Model 90 XP
- F8h 5Ah 00h ??? PS/2 Model 95 XP
- F8h 5Bh 00h ??? PS/2 Model 90 XP
- F8h 5Ch 00h ??? PS/2 Model 95 XP
- F8h 5Dh 00h ??? PS/2 Model N51 SLC
- F8h 5Eh 00h ??? IBM ThinkPad 700
- F8h 61h *** ??? Olivetti P500
- F8h 62h *** ??? Olivetti P800
- F8h 80h 00h ??? PS/2 Model 80 (25 MHz 386)
- F8h 80h 01h 11/21/89 PS/2 Model 80-A21 (25 Mhz 386)
- F8h 81h 00h ??? PS/2 Model 55-5502
- F8h 87h 00h ??? PS/2 Model N33SX
- F8h 88h 00h ??? PS/2 Model 55-5530T
- F8h 97h 00h ??? PS/2 Model 55 Note N23SX
- F8h 99h 00h ??? PS/2 Model N51 SX
- F8h F2h 30h ??? Reply Model 32
- F8h F6h 30h ??? Memorex Telex
- F8h FDh 00h ??? IBM Processor Complex (with VPD)
- F8h ??? ??? ??? PS/2 Model 90 (25 MHz 486SX)
- F8h ??? ??? ??? PS/2 Model 95 (25 MHz 486SX)
- F8h ??? ??? ??? PS/2 Model 90 (25 MHz 486SX + 487SX)
- F8h ??? ??? ??? PS/2 Model 95 (25 MHz 486SX + 487SX)
- E4h ??? ??? ??? Triumph Adler PC/XT
- E1h ??? ??? ??? ??? (checked for by DOS4GW.EXE)
- E1h 00h 00h ??? PS/2 Model 55-5530 Laptop
- D9h ??? ??? ??? Peacock XT
- 9Ah * * ??? Compaq XT/Compaq Plus
- 30h ??? ??? ??? Sperry PC
- 2Dh * * ??? Compaq PC/Compaq Deskpro
- ??? 56h ??? ??? Olivetti, unknown model
- ??? 74h ??? ??? Olivetti, unknown model
- Notes: BIOS dates may vary without changes to the revision code, especially
- for non-IBM machines
- * This BIOS call is not implemented in these early versions or under
- Linux's DOSEMU. Read the Model byte at F000h:FFFEh and BIOS date at
- F000h:FFF5h instead.
- ** These BIOS versions require the DASDDRVR.SYS patches.
- *** These Olivetti and Epson machines store the submodel in the byte at
- F000h:FFFDh.
- SeeAlso: #00509,#00516
- (Table 00516)
- Values for Dell model byte:
- 02h Dell 200
- 03h Dell 300
- 05h Dell 220
- 06h Dell 310
- 07h Dell 325
- 09h Dell 310A
- 0Ah Dell 316
- 0Bh Dell 220E
- 0Ch Dell 210
- 0Dh Dell 316SX
- 0Eh Dell 316LT
- 0Fh Dell 320LX
- 11h Dell 425E
- SeeAlso: #00509,#00515
- Format of Compaq product information:
- Address Size Description (Table 00517)
- F000h:FFE4h BYTE product family code (first byte)
- F000h:FFE5h BYTE Point release number
- F000h:FFE6h BYTE ROM version code
- F000h:FFE7h BYTE product family code (second byte)
- F000h:FFE8h WORD BIOS type code
- SeeAlso: #00518,#00520
- Format of Hewlett-Packard ROM ID at F000h:00F8h:
- Offset Size Description (Table 00518)
- 00h 2 BYTEs signature "HP" (48h 50h)
- 02h 2 BYTEs 00h 00h
- 04h BYTE secondary code revision
- 05h BYTE primary code revision
- 06h BYTE date code, year-1960 (BCD)
- 07h BYTE date code, week of year (BCD)
- SeeAlso: #00517,#00519
- Bitfields for Hewlett-Packard product identifier:
- Bit(s) Description (Table 00519)
- 4-0 machine code
- 0 original Vectra
- 1 ES/12
- 2 RS/20
- 3 Portable/CS
- 4 ES
- 5 CS
- 6 RS/16
- other reserved
- 7-5 CPU type
- 0 = 80286
- 1 = 8088
- 2 = 8086
- 3 = 80386
- other reserved
- SeeAlso: #00518
- Format of Toshiba laptop information:
- Offset Size Description (Table 00520)
- 00h 8 BYTEs ASCII product number (e.g. "T2200SX ")
- 08h 8 BYTEs ASCII version number (e.g. "V1.20 ")
- 10h 8 BYTEs ASCII signature string "TOSHIBA "
- 18h 8 BYTEs always zero???
- 20h DWORD -> built-in BIOS setup program entry point or 0000h:0000h
- Note: this record is located at F000h:E000h
- SeeAlso: #00517,#00518
- (Table 00521)
- Values for Toshiba product ID:
- model prodID version date product number
- FEh 29h ../..).. Toshiba T1000LE
- FEh 2Ah ../..*.. Toshiba T1000XE
- FEh 2Bh ../..+.. Toshiba T1000SE
- FEh 2Ch ../..,.. Toshiba T1000
- FEh 2Dh ../..-.. Toshiba T1200F
- FEh 2Dh V4.00 12/26-87 Toshiba T1200H
- FEh 2Eh ../..... Toshiba T1100+
- FCh 22h ../..".. Toshiba T8500
- FCh 26h 01/15&88 Toshiba T5200
- FCh 27h ../..'.. Toshiba T5100
- FCh 28h ../..(.. Toshiba T2000
- FCh 2Ah 12/26*89 Toshiba T1200XE
- FCh 2Bh ../..+.. Toshiba T1600
- FCh 2Ch ../..,.. Toshiba T3100e
- FCh 2Dh ../..-.. Toshiba T3200
- FCh 2Fh ../../.. Toshiba T3100
- FCh 34h V1.50 02/04494 Toshiba T100X
- FCh 38h ../..8.. Toshiba T2000SXe
- FCh 39h V1.20 09/16991 Toshiba T2200SX
- FCh 39h V1.40 10/01992 Toshiba T2200SX
- FCh 3Ch V1.50 01/28<91 Toshiba T2000SX
- FCh 3Dh ../..=.. Toshiba T3200SXC
- FCh 3Eh ../..>.. Toshiba T3100SX
- FCh 3Fh ../..?.. Toshiba T3200SX
- FCh 40h ../..@.. Toshiba T4500C
- FCh 41h V1.20 04/05A92 Toshiba T4500 ("T4500SXC" ???)
- FCh 45h V3.20 04/14E92 Toshiba T4400SX ("C" or "SXC" on cover)
- FCh 45h 01/13E93 Toshiba T4400SXC
- FCh 46h * ../..F.. Toshiba T6400
- FCh 46h * ../..F.. Toshiba T6400C
- FCh 5Fh V1.40 01/18_94 Toshiba T3300SL
- FCh 69h ../..i.. Toshiba T1900C ("T1900CT" ???)
- FCh 6Ah V1.30 05/19j93 Toshiba T1900 ("T1900S" ???)
- FCh 6Dh V1.10 12/25m92 Toshiba T1850C
- FCh 6Eh V1.00 08/19n92 Toshiba T1850
- FCh 6Eh V1.10 12/25n92 Toshiba T1850
- FCh 6Fh V1.00 07/17o92 Toshiba T1800
- FCh 6Fh V1.10 12/25o92 Toshiba T1800
- FCh 7Eh V1.30 06/17~93 Toshiba T4600C
- FCh 7Fh V1.40 11/10x94 Toshiba T4600
- FCh 8Ah V1.30 10/22x93 Toshiba T6600C
- FCh 91h V1.20 07/15x94 Toshiba T2400CT
- FCh 91h V5.00 07/28x95 Toshiba T2400CS/CT
- FCh 92h V5.00 07/28x95 Toshiba T3600CT
- FCh 96h * V1.40 12/08x94 Toshiba T200
- FCh 96h * V1.50 12/08x94 Toshiba T200CS (T200)
- FCh 97h ../..x.. Toshiba T4800CT
- FCh 98h * V1.10 12/22x93 Toshiba T1910
- FCh 98h * V2.40 07/12x94 Toshiba T1910/CS (T19XX)
- FCh 99h ../..x.. Toshiba T4700CS
- FCh 9Bh V2.30 01/31x94 Toshiba T4700CT
- FCh 9Bh V2.50 03/22x94 Toshiba T4700CT
- FCh 9Bh V5.00 07/28x95 Toshiba T4700CT
- FCh 9Ch V1.30 01/11x94 Toshiba T1950CT
- FCh 9Ch V2.50 07/22x94 Toshiba T1950CT (T19XX)
- FCh 9Dh * V2.40 07/12x94 Toshiba T1950/CS (T19XX)
- FCh 9Eh * V1.20 12/25x93 Toshiba T3400
- FCh 9Eh * V1.30 03/22x94 Toshiba T3400/CT
- FCh B5h ** V5.10 08/25x95 Toshiba T2110/CS (T21XX)
- FCh B5h V5.10 08/25x95 Toshiba T2130CS/CT (T21XX)
- FCh BAh V1.30 02/16x95 Toshiba T2150CDS/CDT
- FCh BAh V5.00 07/27x95 Toshiba T2150CDS/CDT (T2150)
- FCh BBh ** V1.30 01/25x95 Toshiba T2100/CS/CT
- FCh BBh ** V5.00 07/27x95 Toshiba T2100/CS/CT
- FCh BCh V1.20 12/05x94 Toshiba T2450CT
- FCh BCh V5.00 07/28x95 Toshiba T2450CT
- FCh BEh V5.00 07/28x95 Toshiba T4850CT
- FCh C0h V5.20 05/30x96 Toshiba 420CDS/CDT
- FCh C1h V5.20 03/27x96 Toshiba 100CS
- FCh C3h V5.60 07/19x96 Toshiba 710CDT / 720CDT
- FCh C6h V5.30 11/30x95 Toshiba 410CS/CDT
- FCh CAh V5.10 08/18x95 Toshiba 400CS/CDT
- FCh CAh V5.40 12/18x95 Toshiba 400CS/CDT
- FCh CBh V5.10 09/01x95 Toshiba 610CT
- FCh CCh V5.50 06/13x96 Toshiba 700CS/CT
- FCh CFh V5.00 08/07x95 Toshiba T4900CT
- FCh DCh V5.10 06/17x96 Toshiba 650CT
- FCh DCh V5.10 05/10x96 Toshiba 110CS/CT
- FCh DDh V5.10 05/10x96 Toshiba 110CS/CT
- FCh DFh V5.20 05/27x96 Toshiba 500CS/CDT
- FCh ??? V5.??? ../..x.. Toshiba 620CT
- FCh ??? V5.??? ../..x.. Toshiba 660CDT
- FCh ??? V5.30 11/22/96 Toshiba 730CDT
- FCh ??? V6.00 09/20/96 Toshiba 200CDS/CDT
- FCh ??? V6.20 11/14/96 Toshiba 430CDS/CDT
- FCh ??? V6.40 12/05/96 Toshiba 510CS/CDT
- Notes: the 8-bit ASCII graphics character in the "date" column above
- has been substituted by "x" if larger than 80h
- BIOS version numbers and dates may vary, esp. due to harddisk and
- (flash) BIOS upgrades; all BIOS versions 5.xx are flash updates
- for Windows95, the product number may indicate the series only
- (T21XX) or does no longer contain the exact type suffix (CS/CT)
- the most recent versions of the BIOS have stopped including the
- product ID code in the BIOS date
- [*] These models have monochrome and color versions which can be
- distinguished with INT 42/AX=7503h (WD90C24 chipset)
- [**] These models have monochrome and color versions which can be
- distinguished with INT 10/AX=5F50h (CT655xx chipset)
- models not found here like T21x5 are variants differing only in
- bundled software
- SeeAlso: #00515
- --------B-15C1-------------------------------
- INT 15 - SYSTEM - RETURN EXTENDED-BIOS DATA-AREA SEGMENT ADDRESS (PS)
- AH = C1h
- Return: CF set on error
- CF clear if successful
- ES = segment of data area (see #M0001,#M0004,#M0005)
- SeeAlso: AH=04h"ABIOS",MEM 0040h:000Eh"DATA"
- --------M-15C200-----------------------------
- INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - ENABLE/DISABLE
- AX = C200h
- BH = new state
- 00h disabled
- 01h enabled
- Return: CF set on error
- AH = status (see #00522)
- Note: IBM classifies this function as required
- SeeAlso: AX=C201h,AX=C207h,AX=C208h
- (Table 00522)
- Values for pointing device function status:
- 00h successful
- 01h invalid function
- 02h invalid input
- 03h interface error
- 04h need to resend
- 05h no device handler installed
- --------M-15C201-----------------------------
- INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - RESET
- AX = C201h
- Return: CF set on error
- AH = status (see #00522)
- CF clear if successful
- BH = device ID
- BL = value returned by attached device after reset
- AAh if device is a mouse
- Notes: after successful completion of this call, the pointing device is set
- as follows: disabled, sample rate 100 Hz, resolution 4 counts/mm,
- scaling 1:1, unchanged data package size
- IBM classifies this function as required
- SeeAlso: INT 33/AX=0000h,AX=C200h,AX=C207h
- --------M-15C202-----------------------------
- INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET SAMPLING RATE
- AX = C202h
- BH = sampling rate
- 00h 10/second
- 01h 20/second
- 02h 40/second
- 03h 60/second
- 04h 80/second
- 05h 100/second
- 06h 200/second
- Return: CF set on error
- AH = status (see #00522)
- SeeAlso: INT 33/AX=001Ch
- --------M-15C203-----------------------------
- INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET RESOLUTION
- AX = C203h
- BH = resolution (see #00523)
- Return: CF set on error
- AH = status (see #00522)
- (Table 00523)
- Values for pointing device resolution:
- 00h one count per mm
- 01h two counts per mm
- 02h four counts per mm
- 03h eight counts per mm
- --------M-15C204-----------------------------
- INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - GET TYPE
- AX = C204h
- Return: CF set on error
- AH = status (see #00522)
- CF clear if successful
- BH = device ID
- --------M-15C205-----------------------------
- INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - INITIALIZE
- AX = C205h
- BH = data package size (1 - 8 bytes)
- Return: CF set on error
- AH = status (see #00522)
- Note: the pointing device is set as follows: disabled, 100 Hz sample rate,
- resolution 4 counts/mm, scaling 1:1
- SeeAlso: AX=C201h
- --------M-15C206-----------------------------
- INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - EXTENDED COMMANDS
- AX = C206h
- BH = subfunction
- 00h return device status
- Return: BL = pointing device status (see #00524)
- CL = resolution (see #00523)
- DL = sample rate, reports per second
- 01h set scaling at 1:1
- 02h set scaling at 2:1
- Return: CF set on error
- AH = status (see #00522)
- Bitfields for pointing device status:
- Bit(s) Description (Table 00524)
- 0 right button pressed
- 1 reserved
- 2 left button pressed
- 3 reserved
- 4 0 if 1:1 scaling, 1 if 2:1 scaling
- 5 device enabled
- 6 0 if stream mode, 1 if remote mode
- 7 reserved
- --------M-15C207-----------------------------
- INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET DEVICE HANDLER ADDR
- AX = C207h
- ES:BX -> FAR user device handler or 0000h:0000h to cancel
- Return: CF set on error
- AH = status (see #00522)
- Note: when the subroutine is called, it is passed the following values on
- the stack; the handler should return with a FAR return without
- popping the stack:
- WORD 1: status (see #00525)
- WORD 2: X data (high byte = 00h)
- WORD 3: Y data (high byte = 00h)
- WORD 4: 0000h
- SeeAlso: INT 33/AX=000Ch
- Bitfields for pointing device status:
- Bit(s) Description (Table 00525)
- 15-8 reserved (0)
- 7 Y data overflowed
- 6 X data overflowed
- 5 Y data is negative
- 4 X data is negative
- 3 reserved (1)
- 2 reserved (0)
- 1 right button pressed
- 0 left button pressed
- --------M-15C208-----------------------------
- INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE - WRITE TO POINTER PORT
- AX = C208h
- BL = byte to be sent to the pointing device
- Note: IBM classifies this function as optional
- SeeAlso: AX=C200h,AX=C209h
- --------M-15C209-----------------------------
- INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE - READ FROM POINTER PORT
- AX = C209h
- Return: BL = first byte read from pointing device
- CL = second byte read
- DL = third byte read
- Note: IBM classifies this function as optional
- SeeAlso: AX=C200h,AX=C208h
- --------M-15C2-------------------------------
- INT 15 - IBM SurePath BIOS - Officially "Private" Function
- AH = C2h
- AL = 10h-23h
- SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
- --------B-15C3------------------------------
- INT 15 - SYSTEM - ENABLE/DISABLE WATCHDOG TIMEOUT (PS50+)
- AH = C3h
- AL = function
- 00h disable PS/2 watchdog timer
- 01h enable PS/2 watchdog timer
- BX = timer counter (0001h-00FFh)
- 02h disable Gearbox system
- 03h enable Gearbox system
- Return: CF set on error
- CF clear if successful
- Note: the watchdog timer generates an NMI
- SeeAlso: INT 21/AH=2Bh/CX=6269h"WDTSR"
- --------B-15C4-------------------------------
- INT 15 - SYSTEM - PROGRAMMABLE OPTION SELECT (PS50+)
- AH = C4h
- AL = subfunction
- 00h return base POS register address
- 01h enable selected slot for setup
- BL = slot number (1 to 8)
- 02h disable setup for all slots (enable adapter)
- Return: CF set on error
- DX = base POS register address (if subfunction 00h)
- SeeAlso: AH=C6h
- --------B-15C5-------------------------------
- INT 15 UC - OS HOOK - ROM BIOS TRACING CALLOUT (PS30/286,PS50Z,PS95)
- AH = C5h
- AL = interrupt being invoked
- 01h INT 19
- 02h INT 14
- 03h INT 16
- 04h INT 40 (floppy INT 13)
- 05h INT 17
- 06h INT 10
- 07h INT 12
- 08h INT 11
- 09h INT 1A
- Return: all registers except AX must be preserved
- Notes: called as the very first action of the indicated ROM BIOS interrupt
- handlers on the PS/2 Models 30/286, 50Z, and 95
- default handler does nothing and returns CF clear for the above
- subfunctions, CF set and AH=86h for all other subfunctions
- value of AX passed to the original interrupt handler is pushed on
- stack immediately prior to call
- --------B-15C6-------------------------------
- INT 15 U - later PS/2 models - GET POS DATA
- AH = C6h
- ???
- Return: ???
- Notes: this function is referenced by name and number in some IBM BIOS manuals
- IBM reports that "there are a number of problems with this call" and
- does not recommend its use.
- SeeAlso: AH=C4h
- --------B-15C7-------------------------------
- INT 15 - SYSTEM - later PS/2s - RETURN MEMORY-MAP INFORMATION
- AH = C7h
- DS:SI -> user supplied memory map table (see #00526)
- Return: CF set on error
- CF clear if successful
- Notes: call AH=C0h and examine bit 4 of feature byte 2 to check if this
- function is supported
- IBM classifies this function as optional
- Windows95 OSR2 reportedly does not support this function even though
- INT 15/AH=C0h indicates that it is available (observed on several
- different systems)
- SeeAlso: AH=C0h,AH=C9h,AH=D1h,AX=E820h
- Format of memory-map table structure:
- Offset Size Description (Table 00526)
- 00h WORD length of table (excluding this word)
- 02h DWORD local memory between 1M and 16M, in 1K blocks
- 06h DWORD local memory between 16M and 4G, in 1K blocks
- 0Ah DWORD system memory between 1M and 16M, in 1K blocks
- 0Eh DWORD system memory between 16M and 4G, in 1K blocks
- 12h DWORD cacheable memory between 1M and 16M, in 1K blocks
- 16h DWORD cacheable memory between 16M and 4G, in 1K blocks
- 1Ah DWORD 1K blocks before start of non-system memory between 1M and 16M
- 1Eh DWORD 1K blocks before start of non-system memory between 16M and 4G
- 22h WORD start segment of largest free block from C0000h-DFFFFh
- 24h WORD size of largest free block
- 26h DWORD reserved
- --------B-15C8-------------------------------
- INT 15 - SYSTEM - ENABLE/DISABLE PROCESSOR FUNCTIONS
- AH = C8h
- AL = function
- 00h disable L1 cache
- 01h enable L1 cache
- ---models 90 and 95 only---
- 02h disable L2 cache
- 03h enable L2 cache
- 04h disable both caches
- 05h enable both caches
- 06h return status of both caches
- 07h-FFh Reserved
- Return: CF set on error
- CF clear if successful
- AH = status (see #00527)
- For subfunction 06h only:
- BL = status of L1 cache
- 00h enabled
- 01h disabled or not installed
- 02h disabled due to test error (can not be enabled)
- BH = status of L2 cache (same codes as BL)
- Notes: supported by at least PS/2 70, 70/486, 80-A21, 90, 95
- call AH=C0h and examine bit 3 of feature byte 2 to check if this
- function is supported.
- on a 486 system, any external caches must be disabled when the
- on-chip cache (L1) is disabled.
- SeeAlso: AH=C0h
- (Table 00527)
- Values for status:
- 00h operation successful
- 01h function choice (in AL) is invalid
- 02h NVRAM data is invalid
- 03h cache test error
- 04h (90 and 95 only) cannot perform operation requested due to state of
- other cache (also see note above)
- 05h no L2 cache is present
- 07h invalid input values
- 09h CPU in protected mode
- --------B-15C9-------------------------------
- INT 15 - newer PS/2; various BIOSes - GET CPU TYPE AND MASK REVISION
- AH = C9h
- AL = 10h (may be required on some non-PS BIOSes)
- Return: CF clear if successful
- AH = 00h
- CH = CPU type (see #00528)
- CL = mask revision (stepping level) (see #00529)
- CF set on error
- AH = status (80h,86h = function not supported)
- Notes: the BIOS must save DX at startup in order to be able to support this
- call; PS/2 Models 56, 57, 90, and 95 are known to support it
- the PS/2 BIOS merely reads CMOS locations 190h (type) and 191h (rev)
- IBM classifies this function as optional
- SeeAlso: AX=D100h,AX=DA92h,MEM 0040h:00BCh
- (Table 00528)
- Values for CPU type:
- 03h 80386DX or clone
- 04h 80486
- 05h Pentium
- 23h 80386SX or clone
- 33h Intel i376
- 43h 80386SL or clone
- A3h IBM 386SLC
- A4h IBM 486SLC
- (Table 00529)
- Values for stepping level:
- ---i376 (type code 33h)---
- 05h A0
- 08h B
- ---80386/80386DX (type code 03h)---
- 03h Intel B1 to B10, Am386DX/DXL step A
- 05h Intel D0
- 08h Intel D1/D2/E1, Am386DX/DXL step B
- ---80386SL (type code 43h)---
- 05h A
- 1xh B
- ---80386SX (type code 23h)---
- 04h Intel A0
- 05h Intel B, Am386SX/SXL step A1
- 08h Intel C/D1, Am386SX/SXL step B
- 09h Intel 386CX/386EX/386SXstatic step A
- ---80486DX (type code 04h)---
- 00h Intel A0/A1
- 01h Intel B2 to B6
- 02h Intel C0
- 03h Intel C1
- 04h Intel D0
- 10h Intel cA2/cA3, Cx486SLC step A
- 11h Intel cB0/cB1
- ---486DX2 (type code 04h)---
- 02h Am486DX2 (unknown stepping)
- 32h Intel DX2/Overdrive steps A0 to A2
- 33h Intel DX2/Overdrive step B1
- ---486SX (type code 04h)---
- 20h Intel A0
- 22h Intel B0
- 27h Intel cA0
- 28h Intel cB0
- ---486SL (type code 04h)---
- 40h Intel A
- ---IntelSX2 (type code 04h)---
- 5xh Intel A
- ---IntelDX4 (type code 04h)---
- 8xh Intel A
- ---487SX (type code 04h)---
- 20h Intel A0
- 21h Intel B0
- ---Pentium (type code 05h)---
- 0xh Intel P5 steps Ax (1993)
- 1xh Intel P5 steps Bx (1994)
- 2xh Intel P54C step A
- ---RapidCAD (type code 03h)---
- 40h A
- --------B-15CA-------------------------------
- INT 15 U - PS/2 Model 95 - READ/WRITE CMOS MEMORY
- AH = CAh
- AL = function
- 00h read CMOS
- Return: CL = value of CMOS location
- 01h write CMOS
- CL = new value for CMOS location
- BL = CMOS location (0Eh-3Fh)
- Return: CF clear if successful
- AH = 00h
- CF set on error
- AH = error code (see #00530)
- Note: writes do not update the CMOS checksum
- (Table 00530)
- Values for CMOS read/write error code:
- 01h CMOS lost power or has invalid checksum
- 03h specified location out of range (too high)
- 04h specified location out of range (too low)
- 80h unsupported function (PC)
- 86h unsupported function (XT)
- --------B-15CB-------------------------------
- INT 15 U - PS/2 Model 95 - RESERVED
- AH = CBh
- ???
- Return: ???
- --------B-15CC-------------------------------
- INT 15 U - PS/2 Model 95 - RESERVED
- AH = CCh
- ???
- Return: ???
- --------V-15CCCC-----------------------------
- INT 15 U - Toshiba laptops - VCHAD.EXE - INSTALLATION CHECK
- AX = CCCCh
- Return: AX = ABCDh if installed
- Note: supported by Toshiba VGA change display utility VCHAD.EXE ver 2.90+
- older versions have the string "VCHAD" 2 bytes after the address of
- the INT 15 handler which is hooked by all versions for the SysReq key
- SeeAlso: AH=85h
- --------B-15CD-------------------------------
- INT 15 U - PS/2 Model 95 - RESERVED
- AH = CDh
- ???
- Return: ???
- --------B-15CE--BL00-------------------------
- INT 15 - later PS/2s - ALLOCATE DMA ARBITRATION LEVEL
- AH = CEh
- BL = 00h-0Eh arbitration level to be allocated
- 0Fh-FFh reserved
- AL = option byte
- bit 7-1: reserved (0)
- bit 0: 0 = need DMA channel for arbitration level requested
- 1 = no channel required for arbitration level
- Return: CF set on error
- AH = status (80h,86h = function not supported)
- CF clear on success
- AL = channel number
- 00h-07h channel number allocated for the arbiration level
- 08h-FEh reserved
- FFh no channel requested for arbitration level
- AH = status (see #00531)
- Notes: arbitration level 00h has the highest priority, 0Eh the lowest
- to perform a DMA transfer operation, be sure to call this function
- first, and call AH=CFh afterward. Failure to use this function
- can cause unpredictable results.
- SeeAlso: AH=CFh
- (Table 00531)
- Values for DMA arbitration status:
- 00h success
- 01h arbitration level not available
- 02h channel not available
- 03h invalid arbitration level passed
- --------B-15CF-------------------------------
- INT 15 - later PS/2s - DEALLOCATE DMA ARBITRATION LEVEL
- AH = CFh
- BL = arbitration level to be deallocated (see AH=CEh)
- Return: CF set on error
- AH = status (80h,86h = function not supported)
- CF clear on success
- AH = status
- 00h success
- 04h arbitration level not allocated
- SeeAlso: AH=CEh
- --------B-15D0-------------------------------
- INT 15 - later PS/2s - RESERVED
- AH = D0h
- ???
- Return: ???
- ----------15D042BL00-------------------------
- INT 15 R - Intel Pentium Pro BIOS UPDATE - INSTALLATION CHECK
- AX = D042h
- BL = 00h
- Return: CF clear if successful
- CF set on error
- AH = status
- 00h successful
- EBX:ECX = signature "INTELPEP"
- EDX = BIOS update loader version
- SI = number of 2K update blocks which can be recorded in NVRAM
- 86h not implemented
- AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
- 00h successful
- Program: the Pentium Pro BIOS update allows the system BIOS or other software
- to install a microcode patch into the Pentium Pro processor
- Notes: this API must be called from actual real mode, not V86 mode
- at least 32K stack space must be available when this function is called
- SeeAlso: AX=D042h/BL=01h,AX=D042h/BL=02h,AX=D042h/BL=03h
- SeeAlso: @xxxxh:xxxxh"Intel BIOS Upgrade",MSR 00000079h
- ----------15D042BL01-------------------------
- INT 15 R - Intel Pentium Pro BIOS UPDATE - WRITE BIOS UPDATE AREA
- AX = D042h
- BL = 01h
- ES:DI -> microcode update block (see #00533)
- CX,DX,SI = segments of three 64K scratchpad areas for BIOS use
- Return: CF clear if successful
- CF set on error
- AH = status (see #00532)
- AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
- 00h successful
- Notes: a microcode update may also be initiated by a WRMSR instruction
- with ECX=0079h, EDX=00000000h, and EAX=linear address of update
- block (see #00533)
- at least 32K stack space must be available when this function is called
- SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=02h,AX=D042h/BL=03h,MSR 00000079h
- (Table 00532)
- Values for Pentium Pro BIOS update status:
- 00h successful
- 86h not implemented
- 90h unable to erase NVRAM device
- 91h unable to write to NVRAM device
- 92h unable to read storage
- 93h NVRAM is full
- 94h specified processor stepping is not present in system
- 95h invalid header or loader version
- 96h wrong checksum in header
- 97h processor rejected the update
- 98h the same or a more recent update is already stored
- 99h update block number was out of range
- Format of Pentium Pro microcode update block:
- Offset Size Description (Table 00533)
- 00h DWORD update header version number (currently 00000001h)
- FFFFFFFFh = unused block
- 04h DWORD revision number of this microcode update
- 08h DWORD update creation date, as BCD mmddyyyy (month,day,year)
- 0Ch DWORD family/model/stepping of processor to which update applied
- (same value as returned by CPUID instruction)
- 10h DWORD checksum (used to force sum of all 512 DWORDs of the update
- block to 00000000h)
- 14h DWORD revision number of loader needed to install update
- (currently 00000001h)
- 18h 24 BYTEs reserved for future expansion
- 30h 2000 BYTEs encrypted microcode data
- SeeAlso: MSR 00000079h,OPCODE "CPUID"
- ----------15D042BL02-------------------------
- INT 15 R - Intel Pentium Pro BIOS UPDATE - BIOS UPDATE CONTROL
- AX = D042h
- BL = 02h
- BH = function
- 01h enable update loading at initialization time
- 02h check whether update loading is enabled
- CX,DX,SI = segments of three 64K scratchpad areas for BIOS use
- Return: CF clear if successful
- CF set on error
- AH = status (see #00532)
- 00h successful
- BL = enabled/disabled flag
- 86h not implemented
- AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
- 00h successful
- Notes: this API must be called from actual real mode, not V86 mode
- at least 32K stack space must be available when this function is called
- there is no call to disable update loading due to security risks; the
- BIOS setup can disable loading
- SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=02h,AX=D042h/BL=03h
- ----------15D042BL03-------------------------
- INT 15 R - Intel Pentium Pro BIOS UPDATE - READ BIOS UPDATE AREA
- AX = D042h
- BL = 03h
- ES:DI -> buffer for microcode update block (see #00533)
- ECX = two real-mode 64K scratchpad segments (upper and lower words)
- DX = segment of 64K scratchpad area for BIOS use
- SI = zero-based index number of update block to retrieve
- Return: CF clear if successful
- CF set on error
- AH = status
- 00h successful
- ES:DI buffer filled with 2048-byte update block
- 86h not implemented
- AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
- 00h successful
- Program: the Pentium Pro BIOS update allows the system BIOS or other software
- to install a microcode patch into the Pentium Pro processor
- Notes: this API must be called from actual real mode, not V86 mode
- at least 32K stack space must be available when this function is called
- SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=01h,AX=D042h/BL=03h
- --------B-15D100DX0000-----------------------
- INT 15 - later PS/2s - GET NUMBER OF DEVICE DESCRIPTOR TABLE (DDT) ENTRIES
- AX = D100h
- DX = 0000h (reserved, must set to 0)
- Return: BL = size of one DDT entry, in bytes
- CX = number of DDT entries
- AH = return code (see #00534)
- CF set on error
- CF clear on success
- SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D101h,AX=D102h,AX=D103h,AX=D104h
- (Table 00534)
- Values for return code:
- 00h success
- 01h requested DDT entry not found
- 02h DDT data not valid
- 86h function not supported
- --------B-15D101-----------------------------
- INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY NUMBER
- AX = D101h
- BX = number of requested entry (starting with 1)
- DX = 0000h (reserved, must be set to 0)
- ES:DI -> buffer to contain DDT entry (see #00535)
- Return: AH = return code (see #00534)
- CF set on error
- CF clear on success
- ES:DI buffer filled with DDT entry
- SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D102h,AX=D104h
- Format of Device Descriptor Table (DDT):
- Offset Size Description (Table 00535)
- 00h BYTE bits 7-4: reserved (set to 0)
- bits 3-0: slot of device (0 = system board)
- 01h BYTE bits 7-4: second interrupt for this device (0 = none)
- bits 3-0: first interrupt for this device (0 = none)
- 02h BYTE bits 7-4: second arbitration level for this device
- bits 3-0: first arbitration level for this device
- 03h WORD DDT indicators (see #00536)
- 05h BYTE reserved (0)
- 06h WORD device ID (0 = none)
- 08h WORD starting address of first I/O block (0 = none)
- 0Ah WORD starting address of second I/O block (0 = none)
- OCh WORD starting address of third I/O block (0 = none)
- OEh DWORD start of first non-system memory block (0 = none)
- 12h WORD size of first non-system memory block (in kilobytes)
- 14h DWORD start of second non-system memory block (0 = none)
- 18h WORD size of second non-system memory block (in kilobytes)
- 1Ah BYTE implementation identifier of the device
- 1Bh BYTE implementation revision level of the device
- Note: I/O block addresses and non-system memory addresses are listed in
- ascending order in each DDT entry.
- Bitfields for DDT indicators:
- Bit(s) Description (Table 00536)
- 15 reserved (0)
- 14 second arbitration level exists
- 13 first arbitration level exists
- 12 serial interface is RS-422
- 11 not address limited
- 10 DMA channel used
- 9 second arbitration level can be shared
- 8 first arbitration level can be shared
- 7-0 reserved (0)
- --------B-15D102-----------------------------
- INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY I/O ADDRSS
- AX = D102h
- BX = entry number at which to start searching
- CX = requested I/O port address
- DX = 0000h (reserved, must be set to 0)
- ES:DI -> buffer to contain DDT entry (see #00535)
- Return: AH = return code (see #00534)
- BX = DDT entry number where I/O port was found, or total entries
- plus 1 if port was not found.
- CF set on error
- CF clear on success
- ES:DI buffer filled with DDT entry
- Desc: the DDT is searched from the specified entry for the I/O port in CX,
- and the first entry in which it is found is returned
- SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h,AX=D104h
- --------B-15D103DX0000-----------------------
- INT 15 - later PS/2s - RETURN ENTIRE DDT
- AX = D103h
- DX = 0000h (reserved, must be set to 0)
- ES:DI -> buffer to contain DDT entry (see #00535)
- Return: AH = return code (see #00534)
- CF set on error
- CF clear on success
- ES:DI buffer filled with DDT entry
- SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D104h
- --------B-15D104-----------------------------
- INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY DEVICE ID
- AX = D104h
- BX = entry number at which to start searching
- CX = requested device ID
- DX = 0000h (reserved, must be set to 0)
- ES:DI -> buffer to contain DDT entry (see #00535)
- Return: AH = return code (see #00534)
- BX = DDT entry number where device ID was found, or total entries
- plus 1 if port was not found.
- CF set on error
- CF clear on success
- ES:DI buffer filled with DDT entry
- Desc: the DDT is searched from the specified entry for the device ID in CX,
- and the first entry in which it is found is returned.
- SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h
- --------B-15D2-------------------------------
- INT 15 - later PS/2s - RESERVED
- AH = D2h
- ???
- Return: ???
- --------B-15D3-------------------------------
- INT 15 - later PS/2s - RESERVED
- AH = D3h
- ???
- Return: ???
- --------B-15D4-------------------------------
- INT 15 - later PS/2s - GET PHYSICAL FIXED DISK DRIVE NUMBER (SELECTABLE BOOT)
- AH = D4h
- DL = logical fixed disk drive number
- Return: AH = return code (see #00537)
- CF set on error
- CF clear on success
- AL = physical fixed disk drive number
- (Table 00537)
- Values for return code:
- 00h success
- 01h specified logical drive number is invalid
- 80h function not supported (on PCjr and PC)
- 86h function not supported
- --------B-15D5-------------------------------
- INT 15 - later PS/2s - RESERVED
- AH = D5h
- ???
- Return: ???
- --------B-15D600BL00-------------------------
- INT 15 - later PS/2s - READ BOOT DEVICE ID
- AX = D600h
- BL = 00h
- DX = device ID
- Return: CF clear if successful
- AH = 00h
- CF set on error
- AH = status (86h for function not supported)
- SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h,AX=D602h
- --------B-15D600BL01-------------------------
- INT 15 - later PS/2s - WRITE BOOT DEVICE ID
- AX = D600h
- BL = 01h
- DX = device ID
- Return: CF clear on success
- AH = 00h
- CF set on error
- AH = status (86h for function not supported)
- SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h
- --------B-15D601BL00-------------------------
- INT 15 - later PS/2s - READ BOOT DEVICE KEY
- AX = D601h
- BL = 00h
- DX = device ID
- Return: CF clear on success
- AH = 00h
- CF set on error
- AH = status (86h for function not supported)
- SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h,AX=D602h
- --------B-15D601BL01-------------------------
- INT 15 - later PS/2s - WRITE BOOT DEVICE KEY
- AX = D601h
- BL = 01h
- DX = device ID
- Return: CF clear on success
- AH = 00h
- CF set on error
- AH = status (86h for function not supported)
- SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h
- --------B-15D602-----------------------------
- INT 15 - later PS/2s - QUERY BOOT REFERENCE PARTITION
- AX = D602h
- Return: CF clear on success
- AH = 00h
- AL = status of reference-partition boot request
- 00h boot not requested
- 01h boot requested
- CF set on error
- AH = status (86h for function not supported)
- SeeAlso: AX=D601h/BL=00h
- --------X-15D800-----------------------------
- INT 15 - EISA SYSTEM ROM - READ SLOT CONFIGURATION INFORMATION
- AX = D800h
- CL = slot number (including embedded and virtual)
- Return: CF clear if successful
- AH = 00h
- CF set on error
- AH = error code (80h,82h,83h,86h,87h)(see #00539)
- AL = bit flags (see #00538)
- BH = major revision level of configuration utility
- BL = minor revision level of configuration utility
- CX = checksum of configuration file
- DH = number of device functions
- DL = combined function information byte (see #00540)
- SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
- Note: call with AL=80h if using 32-bit CS addressing mode instead of 16-bit
- SeeAlso: AX=D801h,AX=D804h
- Bitfields for EISA AL bit flags:
- Bit(s) Description (Table 00538)
- 7 set if duplicate IDs
- 6 set if product ID readable
- 4,5 slot type (00=expansion, 01=embedded, 10=virtual device)
- 0-3 duplicate ID number if bit 7 set
- SeeAlso: #00540
- (Table 00539)
- Values for EISA error code:
- 80h invalid slot number
- 81h invalid function number
- 82h EISA CMOS corrupt
- 83h empty slot
- 84h error clearing CMOS
- 85h EISA CMOS is full
- 86h invalid BIOS-FW function call
- 87h invalid system configuration
- 88h config utility version not supported
- Bitfields for EISA combined function information byte:
- Bit(s) Description (Table 00540)
- 7 reserved
- 6 slot has free-form data entries
- 5 slot has port initialization entries
- 4 slot has port-range entries
- 3 slot has DMA entries
- 2 slot has IRQ entries
- 1 slot has memory entries
- 0 slot has function type entries
- SeeAlso: #00538
- --------X-15D801-----------------------------
- INT 15 - EISA SYSTEM ROM - READ FUNCTION CONFIGURATION INFORMATION
- AX = D801h
- CH = function number to read
- CL = slot number (including embedded and virtual)
- DS:SI -> 320-byte buffer for standard configuration data block
- Return: CF clear if successful
- AH = 00h
- DS:SI buffer filled
- CF set on error
- AH = error code (80h-83h,86h,87h) (see #00539)
- BX destroyed
- Note: call with AL=81h if using 32-bit CS addressing mode instead of 16-bit
- --------X-15D802-----------------------------
- INT 15 - EISA SYSTEM ROM - CLEAR NONVOLATILE MEMORY (EISA CMOS)
- AX = D802h
- BH = EISA config utility major revision level
- BL = EISA config utility minor revision level
- Return: CF clear if successful
- AH = 00h
- CF set on error
- AH = error code (84h,86h,88h) (see #00539)
- Note: call with AL=82h if using 32-bit CS addressing mode instead of 16-bit
- SeeAlso: AX=D803h
- --------X-15D803-----------------------------
- INT 15 - EISA SYSTEM ROM - WRITE NONVOLATILE MEMORY
- AX = D803h
- CX = length of data structure (0000h = empty slot)
- includes two bytes for config file checksum
- DS:SI -> configuration data
- Return: CF clear if successful
- AH = 00h
- CF set on error
- AH = error code (84h-86h) (see #00539)
- Note: call with AL=83h if using 32-bit CS addressing mode instead of 16-bit
- SeeAlso: AX=D802h
- --------X-15D804-----------------------------
- INT 15 - EISA SYSTEM ROM - READ PHYSICAL SLOT
- AX = D804h
- CL = slot number (including embedded and virtual)
- Return: CF clear if successful
- AH = 00h
- CF set on error
- AH = error code (80h,83h,86h) (see #00539)
- SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
- Note: call with AL=84h if using 32-bit CS addressing mode instead of 16-bit
- SeeAlso: AX=D800h
- --------b-15D820-----------------------------
- INT 15 - Compaq LTE Lite - GET ???
- AX = D820h
- DS:SI -> 17-byte buffer for ???
- Return: DS:SI buffer filled (first byte is length of remaining data, unless
- it is greater than 10h, in which case the second byte is 00h and no
- other data is returned)
- Note: this function is also supported by Compaq's EISA System ROM, Contura
- 486/486c/486cx and recent DESKPRO/i ROMs
- SeeAlso: AX=D821h
- --------b-15D821-----------------------------
- INT 15 - Compaq LTE Lite - SET ???
- AX = D821h
- DS:SI -> counted string (should not be more than 16 bytes)
- Return: AH = 00h
- Note: this function is also supported by Compaq's EISA System ROM, Contura
- 486/486c/486cx and recent DESKPRO/i ROMs
- SeeAlso: AX=D820h
- --------b-15D822BL00-------------------------
- INT 15 - Compaq EISA System ROM 04/08/93 - GET ???
- AX = D822h
- BL = 00h
- CX = size of buffer or 0000h to retrieve required buffer size
- DS:SI -> buffer for ??? (if CX nonzero)
- Return: CF clear if successful
- AH = 00h
- DH = 08h
- CX = required buffer size to retrieve all data (if CX=0 on entry)
- DS:SI buffer filled (if CX nonzero on entry)
- CF set on error (BL nonzero)
- AH = 86h
- --------b-15D823-----------------------------
- INT 15 - Compaq EISA System ROM 04/08/93 - ???
- AX = D823h
- BL = subfunction??? (00h or 80h)
- BH = ???
- DS:SI -> buffer for ??? (see #00541)
- Return: CF clear if successful
- AH = 00h
- DH = 08h
- DL = ???
- CF set on error
- AH = error code
- 86h BL neither 00h nor 80h
- 87h ???
- Format of Compaq EISA buffer:
- Offset Size Description (Table 00541)
- 00h BYTE ???
- 01h WORD ???
- 03h BYTE ???
- 04h WORD ???
- 06h WORD ???
- ???
- ----------15D824-----------------------------
- INT 15 - Compaq EISA System ROM 04/08/93 - ???
- AX = D824h
- CX = ???
- DS:SI -> ASCIZ string containing ???
- Return: CF clear if successful
- AH = 00h
- CX = ???
- CF set on error
- AH = error code
- 87h ??? failed
- 88h ???
- Note: these functions are only available if ??? from keyboard controller
- command C0h
- ----------15D825-----------------------------
- INT 15 - Compaq EISA System ROM 04/08/93 - ???
- AX = D825h
- CX = ???
- SI = ???
- DI = ???
- ???
- Return: CF clear if successful
- AH = 00h
- CX = ???
- CF set on error
- AH = error code
- 87h ??? failed
- 88h ???
- CX = ???
- Note: these functions are only available if ??? from keyboard controller
- command C0h
- ----------15D826-----------------------------
- INT 15 - Compaq EISA System ROM 04/08/93 - ???
- AX = D826h
- BX = ???
- CX = size of buffer in bytes
- DS:SI -> buffer for ???
- ???
- Return: CF clear if successful
- AH = 00h
- CX = ???
- CF set on error
- AH = error code
- 87h ??? failed
- 88h ???
- Note: these functions are only available if ??? from keyboard controller
- command C0h
- --------X-15D8-------------------------------
- INT 15 - EISA SYSTEM ROM - 32-bit CS ADDRESSING MODE CALLS
- AH = D8h
- AL = 80h to 84h
- other registers as appropriate for AL=00h to 04h
- Return: as appropriate for AL=00h to 04h
- Note: these functions are identical to AX=D800h to D804h, except that they
- should be called when using 32-bit CS addressing mode (pointers use
- ESI rather than SI as offset) instead of 16-bit addressing mode
- SeeAlso: AX=D800h,AX=D801h,AX=D802h,AX=D803h,AX=D804h
- --------b-15D8-------------------------------
- INT 15 - Compaq EISA System ROM 04/08/93 - 32-bit CS ADDRESSING MODE CALLS
- AH = D8h
- AL = A0h to A6h
- other registers as appropriate for AL=20h to 26h
- Return: as appropriate for AL=20h to 26h
- Note: these functions are identical to AX=D820h to D826h, except that they
- should be called when using 32-bit CS addressing mode
- ----------15DA-------------------------------
- INT 15 U - AMI PCI BIOS v1.00.05.AX1 - ???
- AH = DAh
- AL = function (00h-08h,12h,14h,15h,19h,88h-8Eh,92h,99h)
- other registers vary by function
- Return: CF clear if successful
- varies by function
- CF set on error
- AH = error code (86h unsupported [sub]function)
- Note: functions not listed above always return CF set and AH=86h; in the
- examined BIOS, functions 02h-04h,06h-07h,89h-8Bh, and 8Dh also
- always return CF set and AH=86h
- SeeAlso: AX=DA00h,AX=DA01h,AX=DA88h,AX=DA99h,AX=DB00h
- --------b-15DA00-----------------------------
- INT 15 U - AMI PCI BIOS - ???
- AX = DA00h
- CL = subfunction
- 00h ???
- 01h ???
- 02h get ???
- ???
- Return: CF clear if successful
- ???
- CF set on error
- AH = error code (86h unsupported subfunction)
- Note: in the v1.00.05.AX1 BIOS, subfunctions 00h and 01h always return
- failure
- SeeAlso: AX=DA01h
- --------b-15DA01-----------------------------
- INT 15 U - AMI PCI BIOS - CPU SPEED CONTROL
- AX = DA01h
- CL = subfunction (00h-02h)
- 00h set low CPU speed
- 01h set high CPU speed
- 02h get current CPU speed
- Return: CF clear if successful
- AH = current/new CPU speed (00h low, 01h high)
- AL = ??? (00h)
- CF set on error
- AH = error code (86h unsupported subfunction)
- Notes: in the v1.00.05.AX1 BIOS, subfunctions 00h and 01h are NOPs in both
- protected and V86 modes due to a test of MSW bit 0
- setting the CPU speed also generates the same audible signals generated
- when manually switching speeds with Ctrl-Alt-Gray- and Ctrl-Alt-Gray+
- BUG: the BIOS apparently intends to return CF set if ???, but fails to use
- a different exit path in that case, resulting in CF clear
- ----------15DA05-----------------------------
- INT 15 U - AMI PCI BIOS - GET ??? AND BIOS REVISION STRINGS
- AX = DA05h
- ES:SI -> 8-byte buffer for ??? and BIOS revision strings
- Return: CF clear
- ES:SI buffer filled
- AL = 00h
- CX = ??? (0000h)
- Notes: for BIOS v1.00.05.AX1, the ??? string is "IDNO" and the BIOS revision
- string is "AX1 "
- SeeAlso: AX=DA15h,AX=DB04h
- ----------15DA08-----------------------------
- INT 15 U - AMI PCI BIOS - ???
- AX = DA08h
- ???
- Return: CF clear if successful
- ???
- CF set on error
- AH = error code (86h unsupported subfunction)
- Note: in the examined v1.00.05.AX1 BIOS, this call always returns failure
- ----------15DA12-----------------------------
- INT 15 U - AMI PCI BIOS - v1.00.05.AX1 - ???
- AX = DA12h
- CL = subfunction
- 00h ???
- 01h ???
- 02h get ???
- 03h ???
- 04h ???
- ???
- Return: CF clear if successful
- ???
- CF set on error
- AH = error code (86h unsupported subfunction)
- Desc: ??? performs various manipulations on system chipset registers
- Notes: subfunctions 00h and 01h are NOPs in protected and V86 modes due to
- a test of MSW bit 0
- subfunctions 00h-02h always return success
- ----------15DA14-----------------------------
- INT 15 U - AMI PCI BIOS - GET/SET ???
- AX = DA14h
- CL = subfunction
- 00h read
- 01h write
- DH = new value for ??? (00h-02h)
- DL = index of ??? (00h-03h, but not range-checked)
- ???
- Return: CF clear if successful
- DH = current value of ??? if reading
- CF set on error
- AH = error code (86h unsupported subfunction)
- Note: the values for indexes 00h and 01h are stored in CMOS RAM location 19h,
- and the values for 02h and 03h are stored in location 36h
- BUG: the v1.00.05.AX1 BIOS range-checks DH on subfunction 00h instead of
- subfunction 01h, even though DH is never used by subfunction 00h
- ----------15DA15-----------------------------
- INT 15 U - AMI PCI BIOS - GET ??? AND BIOS REVISION STRINGS
- AX = DA15h
- ES:DI -> 8-byte buffer for ??? and BIOS revision strings
- Return: CF clear
- ES:DI buffer filled
- AL = 00h
- Note: for BIOS v1.00.05.AX1, the ??? string is "IDNO" and the BIOS revision
- string is "AX1 "
- SeeAlso: AX=DA05h,AX=DB04h
- ----------15DA19-----------------------------
- INT 15 U - AMI PCI BIOS - GET/SET ???
- AX = DA19h
- CL = subfunction
- 00h get first ???
- 01h get second ???
- 02h set first ???
- BX = ???
- DX = ???
- 03h set second ???
- BX = ???
- DX = ???
- Return: CF clear if successful
- AX = 0000h
- BX,DX = ??? (subfunctions 00h and 01h only)
- CF set on error
- AH = error code (86h unsupported subfunction)
- Note: the first ??? is stored in CMOS RAM locations 1Bh-1Eh, the second in
- locations 1Fh-22h in the v1.00.05.AX1 BIOS
- --------b-15DA20-----------------------------
- INT 15 U - AMI PCI BIOS v1.00.12.AX1T - CMOS RAM BITFIELD MANIPULATION
- AX = DA20h
- BL = subfunction
- 00h set CMOS data field
- BH = CMOS data field number (00h-4Dh)
- CH = new value for bitfield (in lowest bits of register)
- 01h read CMOS data field
- BH = CMOS data field number (00h-4Dh)
- Return: CH = value of bitfield
- CL = mask of valid bits
- Note: both CL/CH shifted to move valid bits into lowest pos
- 02h set CMOS byte
- CL = CMOS RAM address (00h-7Fh)
- CH = new value for CMOS byte
- 03h get CMOS byte
- CL = CMOS RAM address (00h-7Fh)
- Return: CH = value of CMOS byte
- 04h update CMOS checksums
- Note: sets 2Eh/2Fh to checksum of 10h-2Dh and 7Eh/7Fh to
- checksum of 48h-7Dh
- 05h verify CMOS checksums
- Return: CF clear if checksums OK
- AH = 00h
- CF set if checksum mismatch
- AH = 01h
- Return: CF clear if successful
- AH = 00h
- CF set on error
- AH = error code (86h unsupported function/data field)
- Notes: this function was not supported by the v1.00.05.AX1 BIOS, but had been
- added by 1.00.12.AX1T
- after using subfunctions 00h or 02h, the application must call
- subfunction 04h to update the checksums to prevent an error the next
- time the system is booted
- (Table 00542)
- Values for AMI BIOS v1.00.12.AX1T CMOS bitfield identifier:
- ID address bit(s) contents
- 00h 1Ah 7-6
- 01h 1Dh 7-6
- 02h 6Eh 1
- 03h 77h 0
- 04h 77h 1
- 05h 77h 2
- 06h 77h 3
- 07h 77h 5
- 08h 77h 6
- 09h 77h 7
- 0Ah 78h 7 power management enabled???
- 0Bh 78h 6
- 0Ch 10h 7-4 first floppy drive type
- 0Dh 10h 3-0 second floppy drive type
- 0Eh 11h 7
- 0Fh 20h 4-0 selected language for error messages/setup utility
- 10h 11h 2-1
- 11h 11h 4
- 12h 11h 0
- 13h 11h 3
- 14h 13h 7
- 15h 13h 6-5
- 16h 13h 4-2
- 17h 19h 7
- 18h 19h 6
- 19h 19h 5
- 1Ah 19h 4
- 1Bh 1Eh 2-0
- 1Ch 1Bh 7-6
- 1Dh 1Ch 7
- 1Eh 1Ch 3
- 1Fh 1Ah 5-4
- 20h 1Dh 5-4
- 21h 1Bh 5-4
- 22h 1Ch 6
- 23h 1Ch 2
- 24h 1Ah 3-2
- 25h 1Dh 3-2
- 26h 1Bh 3-2
- 27h 1Ch 5
- 28h 1Ch 1
- 29h 1Ah 1-0
- 2Ah 1Dh 1-0
- 2Bh 1Bh 1-0
- 2Ch 1Ch 4
- 2Dh 1Ch 0
- 2Eh 50h 7-0
- 2Fh 51h 7-0
- 30h 52h 7-0
- 31h 53h 7-0
- 32h 60h 0
- 33h 60h 0
- 34h 60h 0
- 35h 60h 0
- 36h 60h 0
- 37h 60h 0
- 38h 60h 1
- 39h 61h 7
- 3Ah 60h 2
- 3Bh 61h 6-4
- 3Ch 61h 2-0
- 3Dh 60h 7-6
- 3Eh 60h 5-4
- 3Fh 78h 5-4
- 40h 6Eh 5
- 41h 1Eh 3
- 42h 6Eh 0
- 43h 6Eh 2
- 44h 6Fh 1-0
- 45h 6Fh 1-0
- 46h 28h 4-2
- 47h 28h 7-5
- 48h 6Eh 4
- 49h 6Eh 3
- 4Ah 76h 7-0
- 4Bh 77h 4
- 4Ch 11h 6
- 4Dh 1Fh 7-0
- ----------15DA88-----------------------------
- INT 15 U - AMI PCI BIOS - GET EXTENDED MEMORY SIZE
- AX = DA88h
- Return: CF clear (successful)
- AX = 0000h
- CL:BX = extended memory size in KBytes
- SeeAlso: AH=88h
- ----------15DA8C-----------------------------
- INT 15 U - AMI PCI BIOS - GET BIOS AND CHIPSET IDENTIFICATION
- AX = DA8Ch
- CL = subfunction
- 00h get BIOS version string
- ES:DI -> 12-byte buffer for version string
- 01h get chipset identification
- BL = what to retrieve
- (00h host/PCI bridge,01h motherboard chipset)
- ES:DI -> 12-byte buffer for chipset identification (see #00543)
- Return: CF clear if successful
- ES:DI buffer filled
- CF set on error
- AH = error code (86h unsupported subfunction)
- Notes: the v1.00.05.AX1 BIOS returns "1.00.05.AX1 " as its version string
- subfunction 01h returns the five bytes read from the PCI configuration
- registers 00h-05h (see #00878), padded to 12 bytes with NULs
- SeeAlso: AX=DB04h,PORT C000h"Neptune"
- Format of AMI PCI BIOS chipset identification:
- Offset Size Description (Table 00543)
- 00h WORD vendor ID (see #00732 at AX=B102h)
- 8086h = Intel
- 02h WORD device ID
- 0484h (BL=01h)
- 04A3h (BL=00h)
- 04h BYTE low byte of PCI Command Register
- 05h 7 BYTEs unused (00h)
- ----------15DA8E-----------------------------
- INT 15 U - AMI PCI BIOS - ???
- AX = DA8Eh
- ???
- Return: CF clear if successful
- ???
- CF set on error
- AH = error code (86h unsupported subfunction)
- Note: in the v1.00.05.AX1 BIOS, this call always returns failure
- ----------15DA92-----------------------------
- INT 15 U - AMI PCI BIOS - GET CPU TYPE AND SPEED
- AX = DA92h
- Return: CF clear (successful)
- AL = CPU stepping (see also #00529 at INT 15/AH=C9h)
- AH = CPU model
- BL = CPU family (05h = Pentium, etc.)
- CX = external clock speed in MHz (BCD)
- (0040h,0050h,0060h,0066h are possible return values on my
- Pentium with the Intel "Neptune" chipset)
- EAX high word destroyed
- Note: 90 MHz and faster Pentium CPUs can be configured to run at varying
- multiples of the external clock speed, i.e. a typical 90 MHz Pentium
- system will run the motherboard at 60 MHz (my 90 MHz Pentium returns
- 0060h in CX)
- SeeAlso: AH=C9h
- ----------15DA99-----------------------------
- INT 15 U - AMI PCI BIOS - GET/SET ??? FLAG
- AX = DA99h
- CL = subfunction
- 00h check if ???
- 01h set ??? flag
- 02h clear ??? flag
- Return: CF clear if successful
- AH = ??? (00h,01h)
- AL = 00h
- CF set on error
- AH = error code (86h unsupported subfunction)
- Note: the flag is stored in bit 0 of CMOS RAM location 2Ch for BIOS
- v1.00.05.AX1
- --------b-15DB00-----------------------------
- INT 15 U - AMI BIOS - Flash ROM - READ FLASH BIOS
- AX = DB00h
- DS:SI -> parameter block (see #00544)
- ES:DI -> buffer for copied information
- Return: CF clear if successful
- CF set on error
- AH = status (86h if not implemented)
- DS,ES destroyed, possibly other registers
- Note: used by FMUP.EXE, Intel's Flash Memory Update utility
- SeeAlso: AH=DAh,AX=DB01h,AX=DB04h
- Format of AMI BIOS Flash ROM parameter block:
- Offset Size Description (Table 00544)
- 00h 32 BYTEs ASCIZ description of the file's contents
- 20h BYTE Logical area type (see #00545)
- 21h DWORD logical area size (overall size of area)
- 25h BYTE flag: load from file (FF=yes, 00=no)
- 26h BYTE flag: reboot after update (FF=yes, 00=no)
- 27h BYTE flag: update entire image (FF=yes, 00=no)
- 28h 24 BYTEs ASCIZ logical area name (cooresponds to offset 20)
- "System BIOS"
- "Logo Data Area", etc.
- 40h 15 BYTEs ASCIZ time stamp string: MM/DD/YY-HH:MM
- 4Fh BYTE checksum for this header (sum of all bytes except this one)
- if checksum would be 00h,01h, or FFh, it is set to 2Ah
- 50h DWORD this file's starting address (offset in image)
- 54h DWORD size of image chunk in this file
- 58h BYTE logical area type - same as offset 20h
- 59h BYTE flag: last file in chain (FF=yes, 00=no)
- 5Ah 6 BYTEs ASCIZ signature "FLASH"
- 60h 16 BYTEs ASCIZ filename of next file in chain
- 70h 16 BYTEs ASCIZ BIOS reserved string (usually version #)
- Notes: this block is identical in format to the 128-byte header on an AMI
- BIOS Update file
- for AX=DB00h, the following fields must be specified: 50h,54h,58h;
- the fields at offset 20h and 5Ah should also be set if possible
- the fields at offsets 40h and 70h will be set on return, if available
- SeeAlso: #00546
- --------b-15DB01-----------------------------
- INT 15 U - AMI BIOS - Flash ROM - GET BIOS SUBSYSTEM INFORMATION
- AX = DB01h
- CL = BIOS subsystem information identifier (see #00545)
- Return: CF clear if successful
- AX = 0000h
- ES:DI -> 56-byte record describing subsystem (see #00546)
- CF set on error
- AH = status
- 01h nonexistent subsystem
- 86h function not supported
- AL = 00h
- Note: used by FMUP.EXE, Intel's Flash Memory Update utility
- SeeAlso: AX=DB00h,AX=DB02h
- (Table 00545)
- Values for AMI BIOS subsystem identifier:
- 00h recovery code
- 01h system BIOS
- 02h PCI configuration data
- 03h OEM logo data area (see #00547)
- 04h system BIOS/Language Set (one system)
- configuration utility (another system)
- SeeAlso: #00546
- Format of AMI BIOS subsystem information:
- Offset Size Description (Table 00546)
- 00h BYTE subsystem identifier/logical area type (see #00545)
- 01h DWORD subsystem (FlashROM page) size in bytes
- 05h BYTE flag: loadable from file (FFh=yes)
- 06h BYTE flag: reboot after update (FFh=yes)
- 07h BYTE flag: update entire image (FFh=yes)
- 08h 24 BYTEs subsystem/logical area name
- 20h BYTE subsystem identifier???
- 21h BYTE flag: reprogrammable if FFh
- 22h BYTE ??? (01h,02h seen)
- 23h 5 BYTEs ??? (apparently always 00h)
- 28h 16 BYTEs BIOS reserved string (usually version number)
- SeeAlso: #00544
- Format of AMI OEM Logo data area:
- Offset Size Description (Table 00547)
- 00h 8 BYTEs signature
- "TEXTLOGO" if text-mode OEM logo
- 8 DUP (FFh) if unused
- 08h WORD offset of logo font definition table
- 0Ah WORD offset of logo data
- 0Ch WORD size of logo font table in words
- 0Eh WORD offset of upper left corner of logo in video page
- 10h WORD width of logo
- 12h WORD height of logo
- 14h BYTE reserved???
- var var logo font definition (16 bytes per character)
- var var logo data as character/attribute pairs
- Note: the attribute for the logo characters specifies which font will be used
- for that character. If bit 3 is cleared, the normal system font is
- used; if bit 3 is set, the logo font is used, with screen colors
- adjusted to match the corresponding non-bright attribute for the
- system font
- SeeAlso: #00545,#00546
- --------b-15DB02-----------------------------
- INT 15 U - AMI BIOS - Flash ROM - GET SIZE OF FLASH ROM PROGRAMMING CODE
- AX = DB02h
- Return: CF clear
- AX = 0000h
- BX = size of ROM programming code in bytes
- Note: used by FMUP.EXE, Intel's Flash Memory Update utility
- SeeAlso: AX=DB00h,AX=DB03h
- --------b-15DB03-----------------------------
- INT 15 U - AMI BIOS - Flash ROM - GET FLASH ROM PROGRAMMING CODE
- AX = DB03h
- DS:SI -> ???
- ES:DI -> buffer for Flash ROM programming code
- BX = ???
- DX = ???
- Return: CF clear if successful
- AH = ???
- BX = ???
- DX = ???
- CF set on error
- AH = error code
- Notes: the entry point for the copied code (which is fully relocatable) is
- the very first byte (see #00548)
- used by FMUP.EXE, Intel's Flash Memory Update utility
- SeeAlso: AX=DB00h,AX=DB02h
- (Table 00548)
- Call AMI BIOS ??? code with:
- AL = function
- 00h erase Flash ROM block
- CX = ???
- bit 8: address line A16 inverted
- ???
- 01h program new data into Flash ROM
- ???
- 02h perform cold reboot
- DS:SI -> ??? (see #00549)
- ES:DI -> ???
- Return: AH = status
- 00h successful
- 01h invalid function
- 02h ???
- 03h ???
- 04h ???
- Note: DS:SI and ES:DI are ignored for function 02h
- Format of AMI BIOS Flash ROM programming parameters:
- Offset Size Description (Table 00549)
- 00h 32 BYTEs ???
- 20h BYTE BIOS section number
- 21h DWORD length of BIOS code/data in bytes
- 25h 43 BYTEs ???
- 50h DWORD ???
- 54h 44 BYTEs ???
- SeeAlso: #00548
- --------b-15DB04-----------------------------
- INT 15 U - AMI BIOS - Flash ROM - GET BIOS REVISION
- AX = DB04h
- Return: CF clear if supported
- BL:BH:DL:DH = BIOS revision string
- (e.g. 'AX1 ' for v1.00.05.AX1, 'AV0M' for v1.00.03.AV0M)
- CL = flag: DH valid?
- 00h ignore DH; ignore DL as well if 20h (space)
- 01h ignore DH if 20h (space)
- CH = BIOS status
- 00h normal mode
- 01h ROM recovery mode
- AL = ??? (02h)
- Note: used by FMUP.EXE, Intel's Flash Memory Update utility
- SeeAlso: AX=DA05h,AX=DA15h,AX=DA8Ch,AX=DB00h,AX=DB03h
- --------Q-15DE00-----------------------------
- INT 15 - DESQview - GET PROGRAM NAME
- AX = DE00h
- Return: AX = offset into DESQVIEW.DVO of program most recently selected from
- the "Switch Windows" menu (see #00550)
- Note: always returns AX=0000h under DESQview/X
- SeeAlso: AX=DE07h
- Format of program entry in DESQVIEW.DVO:
- Offset Size Description (Table 00550)
- 00h BYTE length of name (FFh if end of file)
- 01h N BYTEs name
- 2 BYTEs keys to invoke program (second = 00h if only one key used)
- BYTE program type
- 00h normal program
- 04h divider
- 80h Delete a Program
- 81h Change a Program
- WORD ??? apparently always 0000h
- --------Q-15DE01-----------------------------
- INT 15 - DESQview - UPDATE "OPEN WINDOW" MENU
- AX = DE01h
- Return: nothing
- Notes: reads DESQVIEW.DVO, disables Open menu if file not in current directory
- NOP for DESQview/X
- --------Q-15DE02-----------------------------
- INT 15 - DESQview 1.x only - SET ??? FLAG FOR CURRENT WINDOW
- AX = DE02h
- Return: nothing
- Note: this call is a NOP in DV 2.x
- SeeAlso: AX=DE03h
- --------Q-15DE03-----------------------------
- INT 15 - DESQview 1.x only - GET ??? FOR CURRENT WINDOW
- AX = DE03h
- Return: AX = ??? for current window
- BX = ??? for current window
- Note: this call is a NOP in DV 2.x
- SeeAlso: AX=DE02h
- --------Q-15DE04-----------------------------
- INT 15 - DESQview - GET AVAILABLE COMMON MEMORY
- AX = DE04h
- Return: BX = bytes of common memory available
- CX = largest block available
- DX = total common memory in bytes
- SeeAlso: AX=DE05h,AX=DE06h
- --------Q-15DE05-----------------------------
- INT 15 - DESQview - GET AVAILABLE CONVENTIONAL MEMORY
- AX = DE05h
- Return: BX = KB of memory available
- CX = largest block available
- DX = total conventional memory in KB
- SeeAlso: AX=DE04h,AX=DE06h
- --------Q-15DE06-----------------------------
- INT 15 - DESQview - GET AVAILABLE EXPANDED MEMORY
- AX = DE06h
- Return: BX = KB of expanded memory available
- CX = largest block available
- DX = total expanded memory in KB
- SeeAlso: AX=DE04h,AX=DE05h
- --------Q-15DE07-----------------------------
- INT 15 - DESQview - "APPNUM" - GET CURRENT PROGRAM'S NUMBER
- AX = DE07h
- Return: AX = number of program as it appears on the "Switch Windows" menu
- Note: this API call may be made from a hardware interrupt handler
- SeeAlso: AX=DE00h
- --------Q-15DE08-----------------------------
- INT 15 - DESQview - GET ???
- AX = DE08h
- Return: AX = 0000h if ??? is not set to the current task
- 0001h if ??? is set to the current task
- --------Q-15DE09-----------------------------
- INT 15 - DESQview - UNIMPLEMENTED
- AX = DE09h
- Return: nothing (NOP in DV 1.x and 2.x)
- --------Q-15DE0A-----------------------------
- INT 15 - DESQview v2.00+ - "DBGPOKE" - DISPLAY CHARACTER ON STATUS LINE
- AX = DE0Ah
- BL = character
- Return: character displayed, next call will display in next position (which
- wraps back to the start of the line if off the right edge of screen)
- Notes: displays character on bottom line of *physical* screen, regardless
- of current size of window (even entirely hidden)
- does not know about graphics display modes, just pokes the characters
- into display memory
- this API call may be made from a hardware interrupt handler
- SeeAlso: AX=1003h
- --------Q-15DE0B-----------------------------
- INT 15 - DESQview v2.00+ - "APILEVEL" - DEFINE MINIMUM API LEVEL REQUIRED
- AX = DE0Bh
- BL = API level minor version number
- BH = API level major version number
- Return: AX = maximum API level (AH = major, AL = minor)
- Notes: if the requested API level is greater than the version of DESQview, a
- "You need a newer version" error window is popped up
- the API level defaults to 1.00, and is inherited by child tasks
- --------Q-15DE0C-----------------------------
- INT 15 - DESQview v2.00+ - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
- AX = DE0Ch
- BX = number of bytes
- Return: ES:DI -> allocated block or 0000h:0000h (DV 2.26+)
- Note: use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
- system memory
- SeeAlso: AX=1001h,AX=102Eh,AX=DE0Dh,AX=DE15h,AX=DE19h
- --------Q-15DE0D-----------------------------
- INT 15 - DESQview v2.00+ - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
- AX = DE0Dh
- ES:DI -> previously allocated block
- Return: nothing
- SeeAlso: AX=1002h,AX=DE0Ch
- --------Q-15DE0E-----------------------------
- INT 15 - DESQview v2.00+ - "FINDMAIL" - FIND MAILBOX BY NAME
- AX = DE0Eh
- ES:DI -> name to find (see #00551)
- CX = length of name
- Return: BX = 0000h not found
- 0001h found
- DS:SI = object handle
- SeeAlso: AH=12h/BH=11h,AH=12h/BH=12h"GETNAME"
- (Table 00551)
- Values for special DESQview mailbox names:
- "COM1" ... "COM4" RBcomm using COM1 ... COM4
- "DESQview/X Help Engine"
- "DESQview/X Network Server" Network Manager
- "DESQview X Server0" X-Windows server
- "DESQview X Server7" X-Windows printing service
- "INBOX" DESQview/X LPD requests
- "OUTBOX" DESQview/X LPD responses
- "WAITBOX" semaphore to synchronize DESQview/X LPD communications
- "_DVNM_" DV/X v1.10 network manager
- --------Q-15DE0F-----------------------------
- INT 15 - DESQview v2.00+ - ENABLE DESQview EXTENSIONS
- AX = DE0Fh
- Return: AX and BX destroyed (seems to be bug, weren't saved&restored)
- Notes: sends a manager stream with opcodes AEh, BDh, and BFh to task's window
- enables an additional mouse mode
- --------Q-15DE10-----------------------------
- INT 15 - DESQview v2.00+ - "PUSHKEY" - PUT KEY INTO KEYBOARD INPUT STREAM
- AX = DE10h
- BH = scan code
- BL = character
- Return: nothing
- Notes: a later read will get the keystroke as if it had been typed by the user
- multiple pushes are read last-in first-out
- if a script exists for the pushed key in the current application, the
- script will be executed
- early copies of DV 2.00 destroy AX, BX, ES, and DI
- SeeAlso: INT 16/AH=05h
- --------Q-15DE11BL00-------------------------
- INT 15 - DESQview v2.00+ - "JUSTIFY" - EN/DISABLE AUTOM. WINDOW JUSTIFICATION
- AX = DE11h
- BL = 00h viewport will not move automatically
- nonzero viewport will move to keep cursor visible (default)
- Return: nothing
- --------Q-15DE12BX0000-----------------------
- INT 15 - DESQview v2.01+ - "CSTYLE" - SET "C"-COMPATIBLE CONTROL CHAR INTERPRET
- AX = DE12h
- BX = 0000h select normal style (linefeed only moves down)
- nonzero select C style (linefeed moves to start of next line)
- Return: nothing
- Note: set on a per-task basis, and inherited from the parent task
- --------Q-15DE13-----------------------------
- INT 15 - DESQview v2.20+ - "GETCRIT" - GET CRITICAL NESTING COUNT
- AX = DE13h
- Return: BX = number of calls to BEGINC or ENTERC
- (see INT 15/AX=101Bh,INT 15/AX=DE1Ch) without matching ENDC
- (see INT 15/AX=101Ch)
- Note: this API call may be made from within a hardware interrupt handler
- SeeAlso: AX=101Bh,AX=101Ch,AX=DE1Bh,AX=DE1Ch
- --------Q-15DE14-----------------------------
- INT 15 - DESQview v2.20+ - GET OBJECT TYPE
- AX = DE14h
- ES:DI -> object
- Return: BL = 00h not an object
- 08h window or task
- 09h mailbox
- 0Ah keyboard
- 0Bh timer
- 0Ch objectq
- 0Fh pointer
- 10h panel
- SeeAlso: AX=1016h
- --------Q-15DE15-----------------------------
- INT 15 - DESQview v2.20+ - SET ERROR HANDLING
- AX = DE15h
- BL = error handling mode
- 00h post system error on all error conditions
- 01h return carry flag set on calls to ADDTO, SUBFROM, and WRITE
- messages sent to mailboxes which fail due to lack of system
- or common memory
- 02h (v2.26+) same as 01h, but also return null pointer for GETMEM
- calls which fail due to lack of system memory
- Return: nothing
- SeeAlso: AX=DE0Ch,AX=DE16h
- --------Q-15DE16-----------------------------
- INT 15 - DESQview v2.20+ - GET ERROR HANDLING
- AX = DE16h
- Return: BL = current mode
- 00h always post system error
- 01h return carry flag set on failed mailbox writes
- 02h return CF set on failed mailbox writes and NULL on failed
- GETMEM calls
- SeeAlso: AX=DE15h
- --------Q-15DE17-----------------------------
- INT 15 - DESQview v2.20-2.25 - reserved
- AX = DE17h
- Return: pops up "Programming error" window
- Note: AX = 1117h is NOT identical to this call under DESQview 2.20 thru 2.25
- SeeAlso: AX=1117h
- --------Q-15DE17-----------------------------
- INT 15 - DESQview v2.26+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
- AX = DE17h
- BX = function
- 0000h get current mapping context without setting
- nonzero set new mapping context to BX
- Return: BX = mapping context in effect before call
- Notes: mapping contexts determine conventional-memory addressability; setting
- a mapping context ensures that the associated program and data areas
- are in memory for access. Usable by drivers, TSRs and shared
- programs.
- caller need not be running under DESQview
- this API call may be made from a hardware interrupt handler
- SeeAlso: AX=1016h,AX=1117h,AX=DE21h,INT 2F/AX=1685h
- --------Q-15DE18-----------------------------
- INT 15 - DESQview v2.20+ - internal - ???
- AX = DE18h
- BP = function number
- high byte must be 10h
- low byte is function
- 00h set ???
- BL = ??? (00h-10h, video mode???)
- BH = value to store
- 03h set ???
- BL = ??? (stored in driver)
- 0Ah get ???
- ES:DI -> 18-byte buffer to hold ???
- Note: calls video driver (NOP for Hercules driver,probably CGA and MCGA also)
- --------Q-15DE19-----------------------------
- INT 15 - DESQview v2.23+ - "GETCOMMON" - ALLOCATE "COMMON" MEMORY
- AX = DE19h
- BX = number of bytes to allocate
- Return: AX = 0000h successful
- ES:DI -> allocated block
- nonzero insufficient memory
- Note: this API call may be made from within a hardware interrupt handler
- SeeAlso: AX=DE0Ch,AX=DE15h,AX=DE1Ah
- --------Q-15DE1A-----------------------------
- INT 15 - DESQview v2.23+ - "PUTCOMMON" - DEALLOCATE "COMMON" MEMORY
- AX = DE1Ah
- ES:DI -> previously allocated block
- Return: AX = 0000h (successful)
- Note: this function may be called from within a hardware interrupt handler
- SeeAlso: AX=DE0Dh,AX=DE19h
- --------Q-15DE1B-----------------------------
- INT 15 - DESQview v2.23+ internal - DECREMENT CRITICAL NESTING COUNT
- AX = DE1Bh
- Return: nothing
- SeeAlso: AX=101Ch,AX=DE13h,AX=DE1Ch
- --------Q-15DE1C-----------------------------
- INT 15 - DESQview v2.23+ - "ENTERC" - INCREMENT CRITICAL NESTING COUNT
- AX = DE1Ch
- Return: nothing
- Notes: similar to AX=101Bh, but begins the critical region without ensuring
- that DOS is free
- the official documentation states that this call should be paired with
- "ENDC" (AX=101Ch); no mention is made of AX=DE1Bh
- this API call may be made from within a hardware interrupt handler
- SeeAlso: AX=101Bh,AX=101Ch,AX=DE13h,AX=DE1Bh
- --------Q-15DE1D-----------------------------
- INT 15 - DESQview v2.23+ - "PUTKEY" - FAKE USER KEYSTROKES
- AX = DE1Dh
- DX = segment of handle for task to receive keystroke
- BL = character
- BH = scan code
- Return: AX = 0000h if successful
- nonzero if receiver's keyboard buffer was full
- Notes: the key is treated as though the user had pressed it, ignoring any
- script which may be bound to the key, and using the current field
- table if the keyboard object is in field processing mode
- multiple PUTKEYs are seen in the order in which they are executed
- SeeAlso: AX=DE10h
- --------Q-15DE1E-----------------------------
- INT 15 - DESQview v2.23+ - "SCRNINFO" - GET TRUE VIDEO PARAMETERS
- AX = DE1Eh
- Return: CL = actual number of rows on screen
- CH = actual number of columns on screen
- BL = actual video mode (may differ from INT 10/AH=0Fh return) (v2.26+)
- Note: this API call may be made from a hardware interrupt handler
- SeeAlso: INT 10/AH=0Fh
- --------Q-15DE1F-----------------------------
- INT 15 - DESQview v2.23+ - "DOSUSER" - GET HANDLE OF TASK CURRENTLY USING DOS
- AX = DE1Fh
- Return: BX = segment of task handle or 0000h if no tasks are using DOS
- Note: this API call may be made from within a hardware interrupt handler
- SeeAlso: AX=DE13h,INT 21/AH=34h
- --------Q-15DE20-----------------------------
- INT 15 - DESQview v2.26+ - "DISPATCHINT" - INTERRUPT ANOTHER TASK
- AX = DE20h
- BX = segment of handle of task to interupt
- DX:CX -> FAR interrupt routine
- BP,SI,DI,DS,ES as required by interrupt routine
- Return: nothing
- Notes: unlike "PGMINT" (AX=1021h), DISPATCHINT may be applied to the task
- making the DISPATCHINT call
- multiple "DISPATCHINT" calls are processed in the order in which they
- were executed
- the FAR routine is entered with the current ES, DS, SI, DI, and BP
- values, using the task's internal stack (see AX=101Ah); only SS:SP
- needs to be preserved
- this API call may be made from within a hardware interrupt handler
- SeeAlso: AX=1021h,AX=DE2Ah
- --------Q-15DE21-----------------------------
- INT 15 - DESQview v2.26+ - "ASSERTVIR" - CONTROL 386 SCREEN VIRTUALIZATION
- AX = DE21h
- BX = new state
- 0000h turn off
- nonzero turn on
- Return: BX = old state of virtualization
- Notes: this API call may be made from within a hardware interrupt handler
- under DV 2.40 and 2.42, this call appears to have no effect and always
- returns a nonzero value in BX which appears to be the offset within
- the DV common memory segment of the caller's task object; it may
- only have an effect within a hardware interrupt handler
- SeeAlso: AX=1117h,AX=DE17h
- --------Q-15DE22-----------------------------
- INT 15 - DESQview v2.26+ - "PROCESSMEM" - GET TASK MEMORY STATUS
- AX = DE22h
- DX = segment of task handle
- Return: DX = total amount of memory in paragraphs
- BX = amount of system memory in paragraphs
- CX = largest block of system memory available in paragraphs
- AX = memory flags (see #00552)
- Notes: if the task handle is a child task, the returned values will be for the
- process containing the task, rather than the task itself
- if the process's system memory is swapped out, BX,CX,DX remain
- unchanged, because the memory usage cannot be determined
- SeeAlso: AX=DE04h,AX=DE05h,AX=DE06h
- Bitfields for DESQview process memory flags:
- Bit(s) Description (Table 00552)
- 0 system memory resides in shared memory
- 1 process's memory is swapped out
- 2 process's system memory is swapped out
- --------Q-15DE23-----------------------------
- INT 15 U - DESQview v2.31+ - ???
- AX = DE23h
- BX = ??? IRQ number on first PIC?
- CX = ??? IRQ number on second PIC?
- Return: ???
- Note: called by QEMM 6.00+
- --------Q-15DE24-----------------------------
- INT 15 - DESQview v2.40+ - "XNEWPROC" - START NEW APPLICATION
- AX = DE24h
- BX = length of .DVP data
- CX = length of ??? string
- DS:SI -> ??? string
- ES:DI -> .DVP data (see #00427 at AX=102Ch)
- Return: BX = segment of task handle??? or 0000h on error
- Note: this call is similar to AX=102Ch except that it can interpret the
- extended DVP data
- SeeAlso: AX=102Ch
- --------Q-15DE25-----------------------------
- INT 15 - DESQview v2.40+ - "GETDVPATH" - GET DESQview DIRECTORY
- AX = DE25h
- ES:DI -> 67-byte buffer for ASCIZ directory name
- Return: ES:DI buffer filled with directory from which DESQview was started
- BUG: DV 2.42 does not place a terminating NUL at the end of the directory
- name, so if the buffer is not cleared to zeros before the call,
- there is no way to tell where the directory name ends. This bug
- has been fixed in DV 2.52 (DV/X 1.02)
- SeeAlso: AX=DE2Eh,INT 21/AH=47h
- --------Q-15DE26-----------------------------
- INT 15 - DESQview v2.40+ - "GETFOREGROUND" - GET KEYBOARD FOCUS
- AX = DE26h
- Return: BX = segment of handle for task with keyboard focus
- Note: under DESQview/X, the X server always has the keyboard focus unless a
- "direct" window is active
- SeeAlso: AX=DE2Fh,INT 2F/AX=DE0Ah
- --------Q-15DE27-----------------------------
- INT 15 - DESQview v2.50+ - "ADDINSTANCEDATA" - ADD PER-TASK SAVE/RESTORE AREA
- AX = DE27h
- BX = type
- 0000h process
- 0001h task
- ES:DI -> list of Instance Item Structures (see #00553)
- Return: CF clear if successful
- AX = ???
- BX = ???
- CF set on error
- AX = error code???
- 0004h invalid BX value
- Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
- SeeAlso: INT 2F/AX=DE08h,INT 2F/AX=DE09h
- Format of DESQview Instance Item Structure [one element of list]:
- Offset Size Description (Table 00553)
- 00h WORD length of data area DESQview should save and restore on context
- switches (0000h = end of list)
- 02h DWORD pointer to area to be saved/restored
- --------Q-15DE28-----------------------------
- INT 15 U - DESQview v2.50+ - ???
- AX = DE28h
- BX = segment of ??? or 0000h for default
- ???
- Return: ???
- Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
- SeeAlso: AX=DE2Ah
- --------Q-15DE29BX0000-----------------------
- INT 15 U - DESQview/X - ???
- AX = DE29h
- BX = 0000h
- ???
- Return: CF clear if successful
- ???
- CF set on error
- Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
- under DESQview 2.60, this function and all other subfunctions of
- AX=DE29h always return CF set, as they are unique to DESQview/X
- --------Q-15DE29BX0001-----------------------
- INT 15 U - DESQview/X - ???
- AX = DE29h
- BX = 0001h
- DX = segment of window handle
- Return: CF clear if successful
- AX = ???
- DX = ???
- CF set on error
- Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
- --------Q-15DE29BX0002-----------------------
- INT 15 U - DESQview/X - ???
- AX = DE29h
- BX = 0002h
- DX = segment of window handle
- Return: CF clear if successful
- AX = ???
- DX = ???
- CF set on error
- Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
- --------Q-15DE29BX0003-----------------------
- INT 15 U - DESQview/X - ???
- AX = DE29h
- BX = 0003h
- DX = segment of window handle
- Return: CF clear if successful
- ???
- CF set on error
- Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
- --------Q-15DE29BX0004-----------------------
- INT 15 U - DESQview/X - GET DISPLAY NAME
- AX = DE29h
- BX = 0004h
- CX = size of buffer in bytes
- DX = segment of window handle
- ES:DI -> buffer for display name
- Return: CF clear if successful
- buffer filled with ASCIZ display name (truncated if necessary) or
- null string if no display
- CF set on error
- Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
- the name ":0" refers to the local display
- --------Q-15DE29BX0005-----------------------
- INT 15 U - DESQview/X - ???
- AX = DE29h
- BX = 0005h
- ???
- Return: CF clear if successful
- ???
- CF set on error
- Note: under DESQview 2.60, this function and all other subfunctions of
- AX=DE29h always return CF set, as they are unique to DESQview/X
- --------Q-15DE2A-----------------------------
- INT 15 - DESQview v2.50+ - "DISPATCHINTAFTERDOS" - INTERRUPT ANOTHER TASK
- AX = DE2Ah
- BX = segment of handle for task to interrupt or 0000h for caller
- DX:CX -> interrupt routine
- BP,SI,DI,DS,ES as required by interrupt routine
- Return: nothing
- Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
- this call is the same as AX=DE20h except that it will delay
- interrupting the specified task until after it has exited DOS
- SeeAlso: AX=1021h,AX=DE20h
- --------Q-15DE2B-----------------------------
- INT 15 - DESQview v2.50+ - "OBJNEXT" - TRAVERSE OBJECT LIST
- AX = DE2Bh
- ES:DI -> starting object
- 0000h:0000h for first object in list???
- Return: AX = status
- 0000h successful
- ES:DI -> next object of same type (window/non-window)
- 0001h failed (ES:DI was not a valid handle)
- Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
- there are two separate lists, one for window/task objects and one
- for all other objects
- SeeAlso: AX=1016h,AX=DE2Ah,AX=DE2Ch
- --------Q-15DE2C-----------------------------
- INT 15 - DESQview v2.50+ - "WININFO" - GET WINDOW INFORMATION
- AX = DE2Ch
- DX = window information format version (0100h for DESQview 2.5x)
- BX = segment of window handle or 0000h for default
- ES:DI -> buffer for window information (see #00554)
- Return: AX = status
- 0000h successful
- Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
- SeeAlso: AX=1000h,AX=1016h,AX=DE01h,AX=DE2Bh
- Format of DESQview window information:
- Offset Size Description (Table 00554)
- 00h BYTE task flag: 00h window, 01h task
- 01h BYTE process number if owner task
- 00h if non-owner task
- 02h WORD segment of owner's handle, 0000h if orphaned
- 04h WORD mapping context (see #00416 at AX=1016h)
- 06h BYTE task status (see #00555)
- 07h BYTE unused
- 08h WORD status bits (see #00556)
- 0Ah BYTE 01h if foreground-only window
- (Table 00555)
- Values for DESQview task status:
- 00h "Waiting" waiting for input
- 01h "Idle" keyboard poll limit reached
- 03h same as 01h
- 04h "Pausing" INT 15/AX=1000h pause called
- 04h DV/X direct: user did something to allow task switch
- 05h "ModeChg" video mode about to be changed
- 06h "ModeNtf" notify that video mode changed
- 07h "MoniCh" requested change to other monitor
- 08h "StartPgm" control relinquished to start new process
- 09h "MgrCan" made window manager CANCEL command
- 0Ah "Slicing" time slice expired
- 0Bh "Exit DOS" notify on DOS calls
- 0Ch "Enter DOS" process is re-entering DOS
- 0Dh "Terminate" INT 21/AH=4Ch or task freed
- 0Eh "BrkNxt" Control-Break pressed
- 0Fh "MgrCol" keyboard focus taken away
- 10h "PgmInt" interrupted by API call from another task
- 11h "BldOpen" call to INT 15/AX=DE01h
- Bitfields for DESQview task status bits:
- Bit(s) Description (Table 00556)
- 6 task is freeing another task
- 5 process is being created
- 4 user suspended process
- 3 process suspended itself
- 2 process is resized direct window (suspended)
- 1 process swapped out
- 0 DESQview process
- --------Q-15DE2D-----------------------------
- INT 15 U - DESQview v2.50+ - GET/SET SOCKET HANDLER
- AX = DE2Dh
- CX = direction
- FFFFh set socket handler
- DX:BX -> FAR function for socket interface
- must be of the format described under INT 63"DESQview"
- at #03515
- other get socket handler
- Return: DX:BX -> socket handler (see #03515)
- Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
- the "set" subfunction is normally called only by SOCKET.DVR
- SeeAlso: AX=DE2Eh,INT 63"DESQview",#03515
- --------Q-15DE2E-----------------------------
- INT 15 U - DESQview v2.50+ - SOCKET API
- AX = DE2Eh
- DX:BX -> socket record (see #00558)
- 0000h:0000h to create a new socket record
- Return: CX = size of socket record in bytes
- DX:BX -> socket record which was used
- Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
- socket records are allocated from common memory
- for Unix compatibility, each socket and connection on a socket is
- allocated a DOS file handle (referencing an SFT for NUL) which is
- used on various calls to specify which of possibly multiple
- connections is to be operated upon
- SeeAlso: AX=DE2Dh,INT 61/AX=0001h/SF=0001h"VINES",INT 63"DESQview"
- (Table 00557)
- Values for DESQview/X socket API function number:
- 0000h initialize socket???
- 0001h "gethostname"
- 0002h "ioctl" check for input
- 0003h "sleep" delay for specified period
- 0004h "htons" convert word to network (big-endian) byte order
- 0005h "select"
- 0006h "bsd_close"/"so_close" close socket
- 0007h NOP
- 0008h "connect" initiate connection on socket
- 0009h "recv"/"recvfrom" read from socket
- 000Ah "socket"
- 000Bh ???
- 000Ch "gethostbyname"
- 000Dh "send"/"sendto" write to socket
- 000Eh ??? (does something to all connections for process)
- 000Fh "getpid" get process identifier
- 0010h "gettimeofday"
- 0011h "bind" assign name to socket
- 0012h "listen" listen for connections on socket
- 0013h "accept" accept connection on socket
- 0014h connect to X server
- 0015h "gethostbyaddr" get host information for an address
- 0016h "getprotobyname"
- 0017h "getprotobynumber"
- 0018h "getservbyname"
- 0019h "getservbyport"
- 001Ah "getsockname" determine name bound to socket
- 001Bh "getpeername" get name of connected peer
- 001Ch "getsockopt"/"setsockopt"
- 001Dh "so_exit" close all sockets for calling process
- 001Eh "issock" determine whether file handle references socket
- 001Fh "so_attach" reattach previously detached socket
- 0020h "so_detach" temporarily detach socket
- 0021h "dvpath" get DESQview directory (see also AX=DE24h)
- 0022h "NewProc" start new application (see also AX=102Ch)
- 0023h "so_linkup"
- 0024h "CanonicalPath" canonicalize filename (see also INT 21/AH=60h)
- 0025h indirect INT 15h call
- 0026h Network Manager interface
- 0027h "so_unlink" close connection from "so_linkup"
- 0028h "raisepriority"
- 0029h "lowerpriority"
- 002Ah "so_private" ???
- FFFFh "NetExit" (appears to be a NOP)
- Format of DESQview/X socket record:
- Offset Size Description (Table 00558)
- 00h WORD signature F0ADh
- 02h WORD function number (see #00557)
- 04h WORD returned error code (see #00578)
- 06h WORD maximum message size??? (usually 0400h)
- 08h WORD PSP segment to use or 0000h if socket not valid
- 0Ah WORD scratch space (JFT size)
- 0Ch DWORD scratch space (JFT address)
- 10h DWORD mailbox handle (initialized by function 0000h)
- 14h DWORD timer object handle (initialized by function 0000h)
- ---function 0000h---
- 18h WORD (ret) ???
- ---function 0001h---
- 18h WORD (ret) status???
- 1Ah 128 BYTEs (ret) ASCIZ hostname (empty string if not on network)
- 9Ah WORD maximum length of hostname to return
- ---function 0002h---
- 18h WORD (ret) status
- 1Ah WORD socket's file handle
- 1Ch WORD IOCTL function
- 05h "FIONREAD" determine available input
- 06h "FIONBIO" set blocking state of socket
- 1Eh WORD (return, subfn 05h) number of bytes available for reading
- (call, subfn 06h) 0000h blocking, nonzero nonblocking
- ---function 0003h---
- 18h 2 BYTEs unused
- 1Ah WORD delay time in seconds
- ---function 0004h---
- 18h WORD (ret) result in network (big-endian) byte order
- 1Ah WORD value to convert to network byte order
- ---function 0005h---
- 18h WORD (ret) number of handles meeting the specified conditions???
- 1Ah WORD number of file handles in each bitset
- 1Ch DWORD bitset of socket handles to check for readability
- 20h DWORD bitset of socket handles to check for writability
- 24h DWORD bitset of socket handles to check for errors
- 28h WORD timeout in ??? or 0000h to block until some socket ready
- 2Ah DWORD ???
- 2Eh DWORD ???
- ---function 0006h---
- 18h WORD (ret) status: 0000h if successful, FFFFh on error
- 1Ah WORD socket's file handle
- ---function 0008h---
- 18h WORD (ret) status: 0000h if successful, FFFFh on error
- 1Ah WORD socket's file handle
- 1Ch WORD 0001h if socket name specified, 0000h if not
- 1Eh WORD length of socket name
- 20h N BYTEs name of socket to which to connect
- ---function 0009h---
- 18h WORD (ret) number of bytes actually read, 0000h if connection
- closed, or FFFFh on error
- 1Ah WORD socket's file handle
- 1Ch WORD number of bytes to read
- 1Eh WORD flags
- 20h WORD 0000h if no source address desired
- 0001h if source address is to be stored (datagram sockets)
- 22h WORD length of source address
- 24h 110 BYTEs source address
- 92h 1K BYTEs buffer for data to be read
- ---function 000Ah---
- 18h WORD (ret) socket's file handle or FFFFh on error
- 1Ah WORD address family (0001h,0002h)
- 1Ch WORD socket type
- 1Eh WORD protocol
- ---function 000Bh---
- 18h WORD (ret) 0001h if ??? or FFFFh on error
- 1Ah WORD socket's file handle
- 1Eh WORD (call) ???
- ---function 000Ch---
- 18h 128 BYTEs ASCIZ hostname (special case if empty string or "unix")
- 98h ??? (ret) packed 'hostent' structure
- A2h ??? (ret) ???
- ---function 000Dh---
- 18h WORD (ret) number of bytes actually written or FFFFh on error
- 1Ah WORD socket's file handle
- 1Ch WORD number of bytes to write
- 1Eh WORD number of bytes to follow in subsequent writes???
- 20h WORD flags
- 22h WORD 0000h if no destination specified, 0001h if destination present
- 24h WORD 0001h if broadcast message???, 0000h if not
- (ignored if no destination specified)
- 26h WORD length of destination address
- 28h 110 BYTEs destination address
- 96h 1K BYTEs buffer containing data to be written
- ---function 000Eh---
- no additional fields
- ---function 000Fh---
- 18h DWORD (ret) DESQview task handle of calling process
- ---function 0010h---
- 18h DWORD (ret) current time
- 1Ch DWORD (ret) ???
- ---function 0011h---
- 18h WORD (ret) status: 0000h if successful, FFFFh on error
- 1Ah WORD socket's file handle
- 1Ch WORD length of name
- 1Eh N BYTEs buffer for socket name
- ---function 0012h---
- 18h WORD (ret) status: 0000h if successful, FFFFh on error
- 1Ah WORD socket's file handle
- 1Ch WORD maximum backlog of pending connections allowed on socket
- ---function 0013h---
- 18h WORD (ret) file handle for new connection or FFFFh on error
- 1Ah WORD listen()ing socket's file handle
- 1Ch WORD (call) length of buffer for connecting entity's address
- (ret) actual length of address
- 1Eh N BYTEs buffer for connecting entity's address (110 bytes???)
- ---function 0014h---
- 18h WORD (ret) socket's file handle or FFFFh on error
- 1Ah 4 BYTEs (ret) ???
- 1Eh WORD (ret) ???
- 20h WORD (ret) ???
- 22h 256 BYTEs ASCIZ X display name
- 122h ???
- ---function 0015h---
- 18h WORD (call) type of address??? (test for 0001h seen)
- 1Ah WORD (call) length of buffer for host address
- 1Ch 110 BYTEs buffer containing ASCIZ host address
- 8Ah WORD (ret) offset of official host name
- 8Ch WORD (ret) offset of alias list???
- 8Eh WORD (ret) address type???
- 90h WORD (ret) length of an address in bytes???
- 92h WORD (ret) offset of address???
- 9Ah N BYTEs (ret) buffer for hostname, alias list, and host address
- ---function 0016h---
- 18h ??? buffer for ASCIZ protocol name
- 98h ???
- ---function 0017h---
- 18h WORD (call) protocol number
- 1Ah WORD (ret) ??? or 0001h
- ---function 0018h---
- 18h 128 BYTEs buffer containing ASCIZ ???
- 98h 128 BYTEs buffer containing ASCIZ ???
- 118h WORD (ret) ???
- ---function 0019h---
- 18h WORD port number
- 1Ah 128 BYTEs (call) ASCIZ host name
- (ret) packed servent strctures???
- 9Ah WORD (ret) ???
- ---function 001Ah---
- 18h WORD (ret) 0000h if successful, FFFFh on error
- 1Ah WORD socket's file handle
- 1Ch WORD (call) length of buffer for socket name
- (ret) actual length of socket name
- 1Eh N BYTEs buffer for socket name
- ---function 001Bh---
- 18h WORD (ret) status: 0000h if successful, FFFFh on error
- 1Ah WORD socket's file handle
- 1Ch WORD (call) size of buffer for name
- (ret) actual size of name
- 1Eh N BYTEs buffer for peer's name
- ---function 001Ch---
- 18h WORD (ret) status: 0000h if successful, FFFFh on error
- 1Ah WORD direction: 0000h to get, 0001h to set
- 1Ch WORD socket's file handle
- 1Eh WORD option level
- 20h WORD option name
- 22h WORD (call) length of buffer for option value
- (ret) actual length of option value
- 24h N BYTEs buffer for option value
- ---function 001Dh---
- no additional fields
- ---function 001Eh---
- 18h WORD (ret) status: 0000h ??? or 0001h ???
- 1Ah WORD file handle which may or may not be a socket
- ---function 001Fh---
- 18h WORD (ret) file handle or FFFFh on error
- 1Ah DWORD (call) pointer to Socket Context Record (see #00579) of a
- previously detached socket
- ---function 0020h---
- 18h WORD (ret) status: 0000h if successful or FFFFh on error
- 1Ah WORD socket's file handle
- 1Ch DWORD (ret) pointer to Socket Context Record (see #00579) for
- the file handle
- ---function 0021h---
- 18h 64 BYTEs buffer for DESQview startup directory (see AX=DE25h)
- ---function 0022h---
- 18h DWORD (ret) task handle of new application
- 1Ch WORD size of .DVP data
- 1Eh 129 BYTEs ASCIZ ???
- 9Fh N BYTEs .DVP data (see #00427 at AX=102Ch)
- ---function 0023h---
- 18h WORD (ret) ??? or FFFFh on error
- 1Ah WORD socket's file handle???
- ---function 0024h---
- 18h WORD (ret) DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- 0000h if successful
- 1Ah 129 BYTEs ASCIZ filename/pathname
- 11Bh 129 BYTEs ASCIZ canonicalized filename/pathname (see INT 21/AH=60h)
- ---function 0025h---
- 18h WORD value of AX
- 1Ah WORD value of BX
- 1Ch WORD (call) value of CX for call if AH value other than 12h
- (call) number of stack parameters if AH value is 12h
- (ret) returned CX for calls other than INT 15/AH=12h
- 1Eh WORD value of DX
- 20h WORD value of DI
- 22h WORD value of SI
- 24h WORD value of DS
- 26h WORD value of ES
- 28h WORD (ret) value of FLAGS after call
- 2Ah N DWORDs (call) stack parameters for INT 15/AH=12h call
- (ret) stack results from INT 15/AH=12h call
- ---function 0026h---
- 18h WORD (call) Network Manager subfunction (see #00559)
- (ret) status??? (0000h on error)
- 1Ah WORD (call) size of parameter data
- (ret) size of returned data
- 1Ch N BYTEs (call) parameter data required by call (see #00560,#00561,#00577)
- (ret) result data (see #00570,#00571,#00576)
- ---function 0027h---
- 18h WORD (ret) status: 0000h if successful, FFFFh on error
- 1Ah WORD socket's file handle
- ---functions 0028h,0029h---
- 18h WORD (call) file handle for which to set priority low/high
- FFFFh to change calling task's priority
- ---function 002Ah---
- no additional fields
- (Table 00559)
- Values for DESQview/X Network Manager subfunction:
- 0004h "so_exit"???
- 0005h "gethostbyname"
- 0006h "gethostname"
- 0009h "socket"
- 000Dh "gethostbyaddr"
- 000Fh "getprotobyname"
- 0010h get protocol name for protocol number
- 0011h "getservbyname"
- 0012h "getservbyport" (see #00563)
- 0013h "getsockname"??? (see #00564)
- 0016h "shutdown" (see #00565)
- 0017h kill Network Manager
- 0018h "getpeername"??? (see #00566)
- 0019h ??? (called by socket function 0000h) (see #00567)
- 001Ah ??? (see #00568)
- 001Bh "so_linkup" (see #00569)
- 001Dh "getnetstatus" get network services (see #00570)
- 001Fh "getpwuid"
- 0020h "getpwnam"
- 0021h "getpwvar"
- 0022h "crypt"
- 0023h "so_unlink"
- 0024h "getlogin" (see #00571)
- 0028h "sethostent"
- 0029h "gethostent"
- 002Ah "soaddhost"
- 002Bh "soupdatehost"
- 002Ch "sodeletehost"
- 002Dh "setservent"
- 002Eh "getservent"
- 002Fh "setpwent"
- 0030h "getpwent" (see #00572)
- 0031h "sethostpath" (see #00573)
- 0032h "endservent"
- 0033h "endhostent"
- 0034h "getnettype" get IP network number (see #00574)
- 0035h ??? (pops up Network Manager window)
- 0037h "getnettimeout" (see #00575)
- 0038h get machine name and IP address (see #00576)
- 0039h "getuid" (see #00577)
- ---DV/X v2.0+ ---
- 0041h "deletepwnam"
- 0045h "renamepw"
- Format of Function 0026h/Subfunction 000Fh data:
- Offset Size Description (Table 00560)
- 00h 8 BYTEs (ret) ???
- Format of Function 0026h/Subfunction 0010h data:
- Offset Size Description (Table 00561)
- 00h 2 BYTEs (ret) ???
- 02h WORD (ret) protocol number
- 04h WORD (call) protocol number for which to get name
- 06h WORD (ret) ???
- 08h var (ret) ASCIZ protocol name
- N var (ret) ASCIZ protocol name
- Format of Function 0026h/Subfunction 0011h data:
- Offset Size Description (Table 00562)
- 00h 8 BYTEs ???
- 08h var (ret) ASCIZ protocol name
- var (ret) ASCIZ ??? name
- var (ret) ASCIZ ??? name
- Format of Function 0026h/Subfunction 0012h data:
- Offset Size Description (Table 00563)
- 00h 8 BYTEs (ret) ???
- Format of Function 0026h/Subfunction 0013h data:
- Offset Size Description (Table 00564)
- 00h 116 BYTEs (ret) ???
- Format of Function 0026h/Subfunction 0016h ("shutdown") data:
- Offset Size Description (Table 00565)
- 00h WORD (ret) shutdown status (0000h successful, FFFFh error)
- 02h 4 BYTEs (ret) ???
- 04h WORD (call) socket handle
- 06*h WORD (call) what (0 = receives, 1 = sends, 2 = both)
- Format of Function 0026h/Subfunction 0018h data:
- Offset Size Description (Table 00566)
- 00h 116 BYTEs (ret) ???
- Format of Function 0026h/Subfunction 0019h data:
- Offset Size Description (Table 00567)
- 00h 4 BYTEs (ret) ???
- 04h DWORD (ret) task handle of ???
- Format of Function 0026h/Subfunction 001Ah data:
- Offset Size Description (Table 00568)
- 00h 38 BYTEs (ret) ???
- Format of Function 0026h/Subfunction 001Bh data:
- Offset Size Description (Table 00569)
- 00h 10 BYTEs (ret) ???
- Format of Function 0026h/Subfunction 001Dh return data [array]:
- Offset Size Description (Table 00570)
- 00h WORD ??? or FFFFh if end of array
- 02h 7 BYTEs ???
- 09h 27 BYTEs ASCIZ name of service
- Format of Function 0026h/Subfunction 0024h return data:
- Offset Size Description (Table 00571)
- 00h var ASCIZ username
- Format of Function 0026h/Subfunction 0030h data:
- Offset Size Description (Table 00572)
- 00h WORD (call) UID or 0000h for current user
- (ret) ???
- 02h WORD (ret) UID
- 04h 6 BYTEs (ret) ???
- 0Ah var (ret) ASCIZ username
- var (ret) ASCIZ encrypted password
- var (ret) ASCIZ initial ("home") directory
- Format of Function 0026h/Subfunction 0031h ("sethostpath") data:
- Offset Size Description (Table 00573)
- 00h 4 BYTEs ???
- 04h 144 BYTEs ASCIZ ???
- Format of Function 0026h/Subfunction 0034h data:
- Offset Size Description (Table 00574)
- 00h 1-3 BYTEs IP network number of caller's machine (low byte first)
- Format of Function 0026h/Subfunction 0037h ("getnettimeout") return data:
- Offset Size Description (Table 00575)
- 00h WORD (ret) timeout
- 02h 2 BYTEs (ret) ???
- Format of Function 0026h/Subfunction 0038h return data:
- Offset Size Description (Table 00576)
- 00h BYTE ???
- 01h 4 BYTEs IP address
- 05h var ASCIZ machine name
- ???
- Format of Function 0026h/Subfunction 0039h ("getuid") return data:
- Offset Size Description (Table 00577)
- 00h WORD user ID
- 02h 2 BYTEs ???
- SeeAlso: #00573,#00576
- (Table 00578)
- Values for DESQview/X socket error code:
- 0000h successful
- 0009h "BADF" bad file handle
- 000Ch "ENOMEM" out of memory
- 000Eh "EFAULT" bad address
- 0016h "EINVAL" invalid argument
- 0018h "EMFILE" too many open files
- 0020h "EPIPE" ??? broken pipe
- 0023h "EWOULDBLOCK" operation cannot be completed at this time
- 0024h "EINPROGRESS" operation now in progress
- 0026h "ENOTSOCK" socket invalid
- 0028h "EMSGSIZE" message too long to send atomically
- 002Ch "ESOCKTNOSUPPORT" socket type not supported
- 002Fh "EAFNOSUPPORT" address family not supp. by protocol fam.
- 0031h "EDOM" argument too large
- 0038h "EISCONN" socket is already connected
- 0039h "ENOTCONN" socket is not connected
- Format of DESQview/X Socket Context Record:
- Offset Size Description (Table 00579)
- 00h DWORD pointer to next Socket Context Record, 0000h:0000h if last
- 04h WORD SFT index for socket, 00FFh if not connected, FFFFh if detached
- 06h WORD PSP segment of owner or 0000h
- 08h WORD mapping context of owning window (see #00416 at AX=1016h)
- 0Ah 2 BYTEs ???
- 0Ch WORD address family
- 0Eh WORD socket type
- 10h WORD protocol
- 12h WORD socket state
- 0001h created
- 0002h bound
- 0003h listening???
- 0005h connected
- 14h DWORD timer object handle
- 18h DWORD object handle (mailbox???)
- 1Ch DWORD object handle of parent of above object or 0000h:0000h
- 20h DWORD pointer to ??? or 0000h
- 24h 6 BYTEs ???
- 2Ah WORD file handle for socket or FFFFh
- 2Ch 2 BYTEs ???
- 2Eh WORD nonzero if socket nonblocking
- ---network connections only---
- 30h 2 BYTEs ???
- 32h WORD ???
- 34h 4 BYTEs (big-endian) IP address of remote
- 38h 6 BYTEs ???
- --------Q-15DE2F-----------------------------
- INT 15 - DESQview v2.50+ - "VIDEONOTIFY" - HAS DIRECT WINDOW BEEN ACTIVE?
- AX = DE2Fh
- Return: BX = status
- 0001h keyboard focus has been given to a direct window since the
- last call
- 0000h if not
- Notes: DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10.
- Quarterdeck stated that this call would not be available under future
- versions of DESQview Classic, but it is still present in v2.60
- --------Q-15DE30-----------------------------
- INT 15 - DESQview v2.50+ - "GETDVXVERSION" - GET DESQview/X VERSION
- AX = DE30h
- Return: BX = version (BH=major, BL=minor) or 0000h if not DESQview/X
- Notes: DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10.
- you must first check the DESQview version to verify that it is 2.50 or
- greater
- SeeAlso: INT 21/AH=2Bh/CX=4445h
- --------Q-15DE31-----------------------------
- INT 15 - DESQview/X v1.10 - ???
- AX = DE31h
- CX = ???
- 0000h ???
- nonzero ???
- ???
- Return: ???
- --------b-15DF-------------------------------
- INT 15 - Juko UNIQUE UX BIOS - TURBO MODE CONTROL
- AH = DFh
- AL = function
- 00h turn on Turbo mode
- 01h turn off Turbo mode
- 02h set Turbo mode according to hardware switch
- SeeAlso: INT 13/AX=FFFFh
- --------b-15E00F-----------------------------
- INT 15 - Compaq Systempro - MULTIPROCESSOR DISPATCH
- AX = E00Fh
- ES:BX -> start of 2nd processor's execution
- Return: AL = status
- 0Fh successful
- 00h failure
- SeeAlso: AX=E10Eh,AX=E200h
- --------b-15E10E-----------------------------
- INT 15 - Compaq Systempro - MULTIPROCESSOR END-OF-DISPATCH
- AX = E10Eh
- ES:BX -> start of 2nd processor's execution
- Return: AL = status
- 0Fh successful (halted)
- 00h failure (not halted)
- SeeAlso: AX=E00Fh,AX=E200h
- --------b-15E200-----------------------------
- INT 15 - Compaq Systempro - MULTIPROCESSOR AVAILABLE
- AX = E200h
- Return: AX bit 15 set if 2nd processor available
- SeeAlso: AX=E00Fh,AX=E10Eh
- --------b-15E4-------------------------------
- INT 15 - Tandy??? - ???
- AH = E4h
- AL = subfunction
- 21h, 89h, 8Ah, 8Bh called by 386MAX v6.01
- DL = ???
- Return: DL = 00h if successful???
- Note: the section of code in 386MAX which calls these functions also checks
- whether the ROM BIOS has both Tandy and Phoenix Technologies
- signatures if these calls fail; the Tandy 1000SL/TL BIOS does not
- support this function, however, returning the usual CF set/AH=86h for
- "unsupported function".
- --------b-15E4-------------------------------
- INT 15 - Compaq ROM BIOS 03/08/93 and newer - ???
- AH = E4h
- AL = subfunction
- 00h get ???
- Return: CF clear
- AH = 00h
- CX = 0000h
- BX = ??? (read from [XBDA:0094h])
- 01h,02h unsupported by this ROM version
- Return: CF set, AH = 86h
- 80h,90h,A0h,B0h,C0h,D0h,E0h,F0h set ???
- Return: CF clear
- AH = 00h
- CX = 0000h
- BX = ???
- 81h,91h,A1h,B1h,C1h,D1h,E1h,F1h unsupported by 3/8/93&4/8/93 ROMs
- Return: CF set, AH = 86h
- Notes: functions 80h/90h/etc. are not supported by the 4/8/93 EISA System ROM
- these functions are not supported by the 7/26/93 LTE Lite 386 ROM
- --------!---Section--------------------------
- Interrupt List, part 4 of 18
- Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
- --------b-15E800-----------------------------
- INT 15 - Compaq Contura - GET ???
- AX = E800h
- Return: AX = 0000h
- BH = 00h
- BL = ??? (read from port 0C7Ch)
- CH = ???
- CL = ???
- DX = 0000h
- Note: also supported by 3/8/93 DESKPRO/i and 7/26/93 LTE Lite 386 ROM BIOS
- --------b-15E800-----------------------------
- INT 15 - Compaq Contura Aero, Contura 400 - GET SYSTEM MODEL CODE???
- AX = E800h
- BX = ??? (0000h)
- Return: CF clear if successful
- BH = 02h
- BL = submodel??? (0Ch,0Dh,34h,38h,40h,44h,48h,64h,68h)
- CF set on error
- others???
- Notes: used by Compaq's SOFTPAQ number 0937 EPPBIOS.SYS to determine whether
- the Enhanced Parallel Port expected by that driver is available
- used by Compaq's SOFTPAW number 0856 VOLCTRL.EXE to determine whether
- volume control hardware expected by that driver is available
- --------b-15E800-----------------------------
- INT 15 - Compaq Prolinea - GET ???
- AX = E800h
- BX = ??? (1369h)
- Return: BH = 01h
- BL = ???
- others???
- Note: used by Compaq's SOFTPAQ number 0718 INT10_04.SYS to determine whether
- the fix that driver applies is required (will not install if BX on
- return is other than 010Eh or 010Fh)
- SeeAlso: AX=E802h
- --------b-15E801-----------------------------
- INT 15 - Phoenix BIOS v4.0 - GET MEMORY SIZE FOR >64M CONFIGURATIONS
- AX = E801h
- Return: CF clear if successful
- AX = extended memory between 1M and 16M, in K (max 3C00h = 15MB)
- BX = extended memory above 16M, in 64K blocks
- CX = configured memory 1M to 16M, in K
- DX = configured memory above 16M, in 64K blocks
- CF set on error
- Notes: supported by the A03 level (6/14/94) and later XPS P90 BIOSes, as well
- as the Compaq Contura, 3/8/93 DESKPRO/i, and 7/26/93 LTE Lite 386 ROM
- BIOS
- supported by AMI BIOSes dated 8/23/94 or later
- on some systems, the BIOS returns AX=BX=0000h; in this case, use CX
- and DX instead of AX and BX
- this interface is used by Windows NT 3.1, OS/2 v2.11/2.20, and is
- used as a fall-back by newer versions if AX=E820h is not supported
- SeeAlso: AH=8Ah"Phoenix",AX=E802h,AX=E820h,AX=E881h"Phoenix"
- --------b-15E802-----------------------------
- INT 15 - Compaq Contura - GET ???
- AX = E802h
- Return: CF clear
- AX = 0000h
- BX = ???
- CX = 0000h
- Note: this function is also supported by the LTE Lite 25c, 25E, and 486; not
- supported by LTE Lite 20 and 25.
- SeeAlso: AX=E801h"Phoenix"
- --------b-15E820-----------------------------
- INT 15 - newer BIOSes - GET SYSTEM MEMORY MAP
- AX = E820h
- EAX = 0000E820h
- EDX = 534D4150h ('SMAP')
- EBX = continuation value or 00000000h to start at beginning of map
- ECX = size of buffer for result, in bytes (should be >= 20 bytes)
- ES:DI -> buffer for result (see #00581)
- Return: CF clear if successful
- EAX = 534D4150h ('SMAP')
- ES:DI buffer filled
- EBX = next offset from which to copy or 00000000h if all done
- ECX = actual length returned in bytes
- CF set on error
- AH = error code (86h) (see #00496 at INT 15/AH=80h)
- Notes: originally introduced with the Phoenix BIOS v4.0, this function is
- now supported by most newer BIOSes, since various versions of Windows
- call it to find out about the system memory
- a maximum of 20 bytes will be transferred at one time, even if ECX is
- higher; some BIOSes (e.g. Award Modular BIOS v4.50PG) ignore the
- value of ECX on entry, and always copy 20 bytes
- some BIOSes expect the high word of EAX to be clear on entry, i.e.
- EAX=0000E820h
- if this function is not supported, an application should fall back
- to AX=E802h, AX=E801h, and then AH=88h
- the BIOS is permitted to return a nonzero continuation value in EBX
- and indicate that the end of the list has already been reached by
- returning with CF set on the next iteration
- this function will return base memory and ISA/PCI memory contiguous
- with base memory as normal memory ranges; it will indicate
- chipset-defined address holes which are not in use and motherboard
- memory-mapped devices, and all occurrences of the system BIOS as
- reserved; standard PC address ranges will not be reported
- SeeAlso: AH=C7h,AX=E801h"Phoenix",AX=E881h,MEM xxxxh:xxx0h"ACPI"
- Format of Phoenix BIOS system memory map address range descriptor:
- Offset Size Description (Table 00580)
- 00h QWORD base address
- 08h QWORD length in bytes
- 10h DWORD type of address range (see #00581)
- (Table 00581)
- Values for System Memory Map address type:
- 01h memory, available to OS
- 02h reserved, not available (e.g. system ROM, memory-mapped device)
- 03h ACPI Reclaim Memory (usable by OS after reading ACPI tables)
- 04h ACPI NVS Memory (OS is required to save this memory between NVS
- sessions)
- other not defined yet -- treat as Reserved
- SeeAlso: #00580
- --------b-15E881-----------------------------
- INT 15 - Phoenix BIOS v4.0 - GET MEMORY SIZE FOR >64M CONFIGURATIONS (32-bit)
- AX = E881h
- Return: CF clear if successful
- EAX = extended memory between 1M and 16M, in K (max 3C00h = 15MB)
- EBX = extended memory above 16M, in 64K blocks
- ECX = configured memory 1M to 16M, in K
- EDX = configured memory above 16M, in 64K blocks
- CF set on error
- Notes: supported by AMI BIOSes dated 8/23/94 or later
- this interface is used by Windows NT 3.1, OS/2 v2.11/2.20, and is
- used as a fall-back by newer versions if AX=E820h is not supported
- SeeAlso: AX=E801h"Phoenix",AX=E820h"Phoenix"
- --------m-15F200CX454D-----------------------
- INT 15 - Tandon memory mapper - Tandon MAPPER HARDWARE INITIALIZATION CHECK ???
- AX = F200h
- CX = 454Dh
- Return: CF clear if hardware already initialised
- BX = upper RAM areas in use
- bit 0: C000-C3FF
- bit 1: C400-C7FF
- ...
- bit 11: EC00-EFFF
- CF set if hardware not initialised yet
- --------B-1600-------------------------------
- INT 16 - KEYBOARD - GET KEYSTROKE
- AH = 00h
- Return: AH = BIOS scan code
- AL = ASCII character
- Notes: on extended keyboards, this function discards any extended keystrokes,
- returning only when a non-extended keystroke is available
- the BIOS scan code is usually, but not always, the same as the hardware
- scan code processed by INT 09. It is the same for ASCII keystrokes
- and most unshifted special keys (F-keys, arrow keys, etc.), but
- differs for shifted special keys
- some (older) clone BIOSes do not discard extended keystrokes and manage
- function AH=00h and AH=10h the same
- the K3PLUS v6.00+ INT 16 BIOS replacement doesn't discard extended
- keystrokes (same as with functions 10h and 20h), but will always
- translate prefix E0h to 00h. This allows old programs to use extended
- keystrokes and should not cause compatibility problems
- SeeAlso: AH=01h,AH=05h,AH=10h,AH=20h,AX=AF4Dh"K3PLUS",INT 18/AH=00h
- SeeAlso: INT 09,INT 15/AH=4Fh
- --------B-1601-------------------------------
- INT 16 - KEYBOARD - CHECK FOR KEYSTROKE
- AH = 01h
- Return: ZF set if no keystroke available
- ZF clear if keystroke available
- AH = BIOS scan code
- AL = ASCII character
- Note: if a keystroke is present, it is not removed from the keyboard buffer;
- however, any extended keystrokes which are not compatible with 83/84-
- key keyboards are removed by IBM and most fully-compatible BIOSes in
- the process of checking whether a non-extended keystroke is available
- some (older) clone BIOSes do not discard extended keystrokes and manage
- function AH=00h and AH=10h the same
- the K3PLUS v6.00+ INT 16 BIOS replacement doesn't discard extended
- keystrokes (same as with functions 10h and 20h), but will always
- translate prefix E0h to 00h. This allows old programs to use extended
- keystrokes and should not cause compatibility problems
- SeeAlso: AH=00h,AH=11h,AH=21h,INT 18/AH=01h,INT 09,INT 15/AH=4Fh
- --------B-1602-------------------------------
- INT 16 - KEYBOARD - GET SHIFT FLAGS
- AH = 02h
- Return: AL = shift flags (see #00582)
- AH destroyed by many BIOSes
- SeeAlso: AH=12h,AH=22h,INT 17/AH=0Dh,INT 18/AH=02h,MEM 0040h:0017h
- Bitfields for keyboard shift flags:
- Bit(s) Description (Table 00582)
- 7 Insert active
- 6 CapsLock active
- 5 NumLock active
- 4 ScrollLock active
- 3 Alt key pressed (either Alt on 101/102-key keyboards)
- 2 Ctrl key pressed (either Ctrl on 101/102-key keyboards)
- 1 left shift key pressed
- 0 right shift key pressed
- SeeAlso: #00587,#03743,MEM 0040h:0017h,#M0010
- --------B-1603-------------------------------
- INT 16 - KEYBOARD - SET TYPEMATIC RATE AND DELAY
- AH = 03h
- AL = subfunction
- 00h set default delay and rate (PCjr and some PS/2)
- 01h increase delay before repeat (PCjr)
- 02h decrease repeat rate by factor of 2 (PCjr)
- 03h increase delay and decrease repeat rate (PCjr)
- 04h turn off typematic repeat (PCjr and some PS/2)
- 05h set repeat rate and delay (AT,PS)
- BH = delay value (00h = 250ms to 03h = 1000ms)
- BL = repeat rate (00h=30/sec to 0Ch=10/sec [def] to 1Fh=2/sec)
- 06h get current typematic rate and delay (newer PS/2s)
- Return: BL = repeat rate (above)
- BH = delay (above)
- Return: AH destroyed by many BIOSes
- Note: use INT 16/AH=09h to determine whether some of the subfunctions are
- supported
- SeeAlso: INT 16/AH=09h,AH=29h"HUNTER",AH=2Ah"HUNTER"
- --------B-1604-------------------------------
- INT 16 - KEYBOARD - SET KEYCLICK (PCjr only)
- AH = 04h
- AL = keyclick state
- 00h off
- 01h on
- Return: AH destroyed by many BIOSes
- SeeAlso: AH=03h,AH=04h"K3PLUS"
- --------b-1604-------------------------------
- INT 16 - Tandy 2000 - KEYBOARD - FLUSH KEYBOARD BUFFER
- AH = 04h
- Note: this interrupt is identical to INT 51 on the Tandy 2000
- SeeAlso: INT 16/AH=00h,INT 16/AH=02h,INT 16/AH=05h"Tandy 2000"
- SeeAlso: INT 51"Tandy 2000"
- --------K-1604-------------------------------
- INT 16 - K3PLUS v6.22+ - SET KEYCLICK
- AH = 04h
- AL = keyclick state
- 00h keyclick off, leave loudness setting unchanged
- 01h keyclick on, leave loudness setting unchanged
- else
- bit 0: keyclick enabled if set
- bits 7-1: new keyclick loudness (non-zero)
- Return: AH destroyed by many BIOSes
- Note: Applications which try to set a new loudness, but are unsure of the
- results of other INT 16/AH=04h implementations, should set the new
- loudness first, and then call this function again with AL=01h or
- AL=00h
- SeeAlso: AH=03h,AH=04h"KEYBOARD",AX=AF4Dh
- --------B-1605-------------------------------
- INT 16 - KEYBOARD - STORE KEYSTROKE IN KEYBOARD BUFFER (AT/PS w enh keybd only)
- AH = 05h
- CH = BIOS scan code
- CL = ASCII character
- Return: AL = status
- 00h if successful
- 01h if keyboard buffer full
- AH destroyed by many BIOSes
- Notes: under DESQview, a number of "keystrokes" invoke specific
- DESQview-related actions when they are read from the keyboard
- buffer (see #00583)
- similarly, some "keystrokes" invoke special functions on the HP 100LX
- and HP 200LX (see #00584)
- SeeAlso: AH=00h,AH=25h"K3",AH=71h,AX=AF4Dh,AH=FFh,INT 15/AX=DE10h
- SeeAlso: MEM 0040h:001Eh
- (Table 00583)
- Values for pseudo-keystrokes for DESQview:
- 38FBh or FB00h switch to next window (only if main menu already popped up)
- 38FCh or FC00h pop up DESQview main menu
- 38FEh or FE00h close the current window
- 38FFh or FF00h pop up DESQview learn menu
- (Table 00584)
- Values for pseudo-keystrokes for HP 100LX/200LX:
- EE00h pop up topcard display and set other system manager applications
- into sleep mode
- --------B-1605-------------------------------
- INT 16 - KEYBOARD - SELECT KEYBOARD LAYOUT (PCjr only)
- AH = 05h
- AL = function
- 01h set keyboard layout to French
- 02h set keyboard layout to German
- 03h set keyboard layout to Italian
- 04h set keyboard layout to Spanish
- 05h set keyboard layout to UK
- 80h check if function supported
- Return: AL <> 80h if supported
- Return: ???
- AH destroyed by many BIOSes
- Note: this function is called by the DOS 3.2 KEYBxx.COM
- SeeAlso: AH=92h,AH=A2h,AX=AF4Dh
- --------b-1605-------------------------------
- INT 16 - Tandy 2000 - KEYBOARD - RESET KEYBOARD
- AH = 05h
- Desc: reset the keyboard and flush the keyboard buffer
- Note: this interrupt is identical to INT 51 on the Tandy 2000
- SeeAlso: INT 16/AH=00h,INT 16/AH=02h,INT 16/AH=03h,INT 51"Tandy 2000"
- ----------160600-----------------------------
- INT 16 - AAKEYS - GET NEXT KEYBOARD EVENT
- AX = 0600h
- Return: CF clear if successful
- AL = next keyboard event in event buffer, FFh if buffer overflowed
- CF set on error
- AL = 00h buffer empty
- BX destroyed
- Program: AAKEYS is a TSR by Anthony Appleyard which records keyboard scan
- codes in a 256-byte buffer in addition to any normal processing which
- takes place
- Note: the installation check consists of calling INT 16/AX=06xxh (where 'xx'
- is any subfunction other than those listed here) and testing whether
- AX=BEEFh on return
- SeeAlso: AX=0601h,AX=0602h,AX=0603h,AX=0604h
- ----------160601-----------------------------
- INT 16 - AAKEYS - EMPTY KEY-EVENT BUFFER
- AX = 0601h
- Return: nothing
- SeeAlso: AX=0600h,AX=0602h,AX=0603h,AX=0604h
- ----------160602-----------------------------
- INT 16 - AAKEYS - DISABLE AAKEYS
- AX = 0602h
- Return: AX,DX destroyed
- Desc: restores INT 09 and INT 16 and clears the TSRs signature byte
- SeeAlso: AX=0600h,AX=0601h,AX=0603h,AX=0604h
- ----------160603-----------------------------
- INT 16 - AAKEYS - GET KEY-EVENT BUFFER
- AX = 0603h
- Return: ES:BX -> 256-byte circular key-event buffer
- ES:[AX] = offset of head of buffer
- ES:[AX+1] = offset of tail of buffer
- SeeAlso: AX=0600h,AX=0601h,AX=0602h,AX=0604h
- ----------160604-----------------------------
- INT 16 - AAKEYS - EMPTY BIOS KEYBOARD BUFFER
- AX = 0604h
- Return: AX destroyed
- SeeAlso: AX=0600h,AX=0601h,AX=0602h,AX=0603h
- --------B-1609-------------------------------
- INT 16 - KEYBOARD - GET KEYBOARD FUNCTIONALITY
- AH = 09h
- Return: AL = supported keyboard functions (see #00585)
- AH destroyed by many BIOSes
- Note: this function is only available if bit 6 of the second feature byte
- returned by INT 15/AH=C0h is set (see #00509)
- SeeAlso: AH=03h,AH=0Ah,AH=10h,AH=11h,AH=12h,AH=20h,AH=21h,AH=22h,INT 15/AH=C0h
- Bitfields for supported keyboard functions:
- Bit(s) Description (Table 00585)
- 7 reserved
- 6 INT 16/AH=20h-22h supported (122-key keyboard support)
- 5 INT 16/AH=10h-12h supported (enhanced keyboard support)
- 4 INT 16/AH=0Ah supported
- 3 INT 16/AX=0306h supported
- 2 INT 16/AX=0305h supported
- 1 INT 16/AX=0304h supported
- 0 INT 16/AX=0300h supported
- SeeAlso: #00511
- --------K-160A-------------------------------
- INT 16 - KEYBOARD - GET KEYBOARD ID
- AH = 0Ah
- Return: BX = keyboard ID (see #00586)
- AH destroyed by many BIOSes
- Notes: check return value from AH=09h to determine whether this function is
- supported
- this function is also supported by the K3PLUS v6.00+ INT 16 BIOS
- replacement
- SeeAlso: AH=09h,AX=AF4Dh,MEM 0040h:00C2h"AMI"
- (Table 00586)
- Values for keyboard ID:
- 0000h no keyboard attached
- 41ABh Japanese "G" keyboard (translate mode)
- MF2 Keyboard (usually in translate mode)
- 54ABh Japanese "P" keyboard (translate mode)
- 83ABh Japanese "G" keyboard (pass-through mode)
- MF2 Keyboard (pass-through mode)
- 84ABh Japanese "P" keyboard (pass-through mode)
- 90ABh old Japanese "G" keyboard
- 91ABh old Japanese "P" keyboard
- 92ABh old Japanese "A" keyboard
- --------B-1610-------------------------------
- INT 16 - KEYBOARD - GET ENHANCED KEYSTROKE (enhanced kbd support only)
- AH = 10h
- Return: AH = BIOS scan code
- AL = ASCII character
- Notes: if no keystroke is available, this function waits until one is placed
- in the keyboard buffer
- the BIOS scan code is usually, but not always, the same as the hardware
- scan code processed by INT 09. It is the same for ASCII keystrokes
- and most unshifted special keys (F-keys, arrow keys, etc.), but
- differs for shifted special keys.
- unlike AH=00h, this function does not discard extended keystrokes
- INT 16/AH=09h can be used to determine whether this function is
- supported, but only on later model PS/2s
- SeeAlso: AH=00h,AH=09h,AH=11h,AH=20h,MEM 0040h:0019h,MEM 0040h:001Eh
- --------B-1611-------------------------------
- INT 16 - KEYBOARD - CHECK FOR ENHANCED KEYSTROKE (enh kbd support only)
- AH = 11h
- Return: ZF set if no keystroke available
- ZF clear if keystroke available
- AH = BIOS scan code
- AL = ASCII character
- Notes: if a keystroke is available, it is not removed from the keyboard buffer
- unlike AH=01h, this function does not discard extended keystrokes
- some versions of the IBM BIOS Technical Reference erroneously report
- that CF is returned instead of ZF
- INT 16/AH=09h can be used to determine whether this function is
- supported, but only on later model PS/2s
- SeeAlso: AH=01h,AH=09h,AH=10h,AH=21h,INT 09,INT 15/AH=4Fh
- --------B-1612-------------------------------
- INT 16 - KEYBOARD - GET EXTENDED SHIFT STATES (enh kbd support only)
- AH = 12h
- Return: AL = shift flags 1 (same as returned by AH=02h) (see #00587)
- AH = shift flags 2 (see #00588)
- Notes: AL bit 3 set only for left Alt key on many machines
- AH bits 7 through 4 always clear on a Compaq SLT/286
- INT 16/AH=09h can be used to determine whether this function is
- supported, but only on later model PS/2s
- many BIOSes (including at least some versions of Phoenix and AMI) will
- destroy AH on return from functions higher than AH=12h, returning
- 12h less than was in AH on entry (due to a chain of DEC/JZ
- instructions)
- SeeAlso: AH=02h,AH=09h,AH=22h,AH=51h,INT 17/AH=0Dh,MEM 0040h:0017h
- Bitfields for keyboard shift flags 1:
- Bit(s) Description (Table 00587)
- 7 Insert active
- 6 CapsLock active
- 5 NumLock active
- 4 ScrollLock active
- 3 Alt key pressed (either Alt on 101/102-key keyboards)
- 2 Ctrl key pressed (either Ctrl on 101/102-key keyboards)
- 1 left shift key pressed
- 0 right shift key pressed
- SeeAlso: #00582,#00588,MEM 0040h:0017h,#M0010
- Bitfields for keyboard shift flags 2:
- Bit(s) Description (Table 00588)
- 7 SysReq key pressed (SysReq is often labeled SysRq)
- 6 CapsLock pressed
- 5 NumLock pressed
- 4 ScrollLock pressed
- 3 right Alt key pressed
- 2 right Ctrl key pressed
- 1 left Alt key pressed
- 0 left Ctrl key pressed
- SeeAlso: #00587,MEM 0040h:0018h,#M0011
- --------J-1613-------------------------------
- INT 16 - DOS/V - DOUBLE-BYTE CHARACTER SET SHIFT CONTROL
- AH = 13h
- AL = function
- 00h set shift status
- DX = shift status (see #00589), must preserve internal status
- bits
- 01h get shift status
- Return: DX = current shift status (see #00589)
- Note: these functions are supplied by the Japanese Front-End Processor
- SeeAlso: AH=14h,INT 21/AX=6301h
- Bitfields for DOS/V shift status:
- Bit(s) Description (Table 00589)
- 0 full-size rather than half-size
- 2-1 character input mode
- 00 alphanumeric, 01 Katakana, 10 Hiragana, 11 unused
- 5-3 internal status
- 6 Romaji enabled
- 7 Katakana to Kanji conversion enabled
- 15-8 internal status
- --------J-1614-------------------------------
- INT 16 - DOS/V - SHIFT STATUS DISPLAY CONTROL
- AH = 14h
- AL = function
- 00h enable display
- 01h disable display
- 02h get display state
- Return: AL = current state (00h enabled, 01h disabled)
- Desc: control the screen-bottom shift status row(s) for the Japanese
- Front-End Processor
- SeeAlso: AH=13h,INT 10/AH=19h,INT 10/AH=1Dh
- --------B-1620-------------------------------
- INT 16 - KEYBOARD - GET 122-KEY KEYSTROKE (122-key kbd support only)
- AH = 20h
- Return: AH = BIOS scan code (see AH=10h)
- AL = ASCII character
- Note: use AH=09h to determine whether this function is supported
- SeeAlso: AH=00h,AH=09h,AH=10h,AH=21h,AH=22h
- --------b-1620------------------------------------
- INT 16 - HUNTER 16 - SET TEMPORARY SHIFT
- AH = 20h
- AL = shift status (see #00590)
- Notes: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family
- members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
- the user can override the specified settings by pressing the keys
- Bitfields for HUNTER 16 shift status:
- Bit(s) Description (Table 00590)
- 4 Scroll Lock on
- 5 Num Lock on
- 6 Caps Lock on
- --------K-1620-------------------------------
- INT 16 O - K3 v1.5x, K3PLUS v5.xx - GET EXTENDED BUFFER STATE
- AH = 20h
- Return: AX = K3 version
- ES:BX -> extended keyboard buffer start
- ES:DX -> extended keyboard buffer end
- ES:SI -> next keystroke
- ES:DI -> last keystroke in buffer
- CX = number of keystrokes in buffer
- Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
- Frinke, originally based on the K3 extended German keyboard driver
- by Martin Gerdes published in c't magazine in 1988
- Note: this function was normally unsupported under K3PLUS v6.00-v6.22 and
- is no longer supported by v6.30+; use AX=AF20h instead
- SeeAlso: AH=25h"K3",AX=AF20h,INT 2F/AX=D44Fh/BX=0000h,INT 2F/AX=ED58h
- --------B-1621-------------------------------
- INT 16 - KEYBOARD - CHECK FOR 122-KEY KEYSTROKE (122-key kbd support only)
- AH = 21h
- Return: ZF set if no keystroke available
- ZF clear if keystroke available
- AH = BIOS scan code
- AL = ASCII character
- Notes: use AH=09h to determine whether this function is supported
- some versions of the IBM BIOS Technical Reference erroneously report
- that CF is returned instead of ZF
- K3PLUS v6.00+ supports this function as an alias of AH=11h
- SeeAlso: AH=01h,AH=09h,AH=11h,AH=20h,AH=21h
- --------b-1621------------------------------------
- INT 16 - HUNTER 16 - CONTROL SHIFT KEYS
- AH = 21h
- AL = shift keys to control (see #00582)
- BL = shift state for disabled keys
- Note: If a bit in AL is set the key is disabled and set to the state of the
- corresponding bit in BL
- SeeAlso: AH=20h"HUNTER",AH=22h"HUNTER"
- --------B-1622-------------------------------
- INT 16 - KEYBOARD - GET 122-KEY SHIFT STATUS (122-key kbd support only)
- AH = 22h
- Return: AL = shift flags 1 (see #00587)
- AH = shift flags 2 (see #00588)
- Notes: use AH=09h to determine whether this function is supported
- K3PLUS v6.00+ supports this function as an alias of AH=12h
- SeeAlso: AH=02h,AH=09h,AH=12h,AH=20h,AH=21h
- --------b-1622------------------------------------
- INT 16 - HUNTER 16 - CONTROL CTRL-ALT-DEL
- AH = 22h
- AL = new Ctrl-Alt-Del state (00h enabled, nonzero disabled)
- BX = 0708h
- CX = 0910h
- DX = 1112h
- Return: AL = 00h if successful
- SeeAlso: AH=21h"HUNTER",AH=23h"HUNTER",AH=2Ah
- --------b-1623------------------------------------
- INT 16 - HUNTER 16 - CONTROL EMERGENCY BREAKOUT
- AH = 23h
- AL = new state of breakout (00h enabled, nonzero disabled)
- BX = 0708h
- CX = 0910h
- DX = 1112h
- Return: AL = 00h if successful
- Desc: Enables or disables the emergency breakout feature, where the
- Hunter 16 at power on checks whether the X and P keys are pressed.
- If so the machine will boot rather than continue the running program
- SeeAlso: AH=22h"HUNTER"
- --------b-1624------------------------------------
- INT 16 - HUNTER 16 - REDEFINE KEY CODES
- AH = 24h
- AL = Matrix Code (see #00591)
- BL = new Key code
- Return: AL = status (00h successful, nonzero failed)
- SeeAlso: AH=2Bh,AH=2Ch
- (Table 00591)
- Values for HUNTER 16 Matrix Code:
- Code Key Code Key Code Key
- 00h Esc key 1Eh Space 3Bh L
- 01h 1 21h 0 3Ch ,
- 02h Q 22h - 3Eh Right shift
- 03h Tab 23h ' 42h 8
- 04h Num Lock 24h Keypad 4 43h 7
- 05h \ 25h Enter 44h U
- 08h LShift 26h Keypad 7 45h I
- 09h Ctrl 27h . 46h J
- 0Ah "Paw" key 28h Keypad 1 47h K
- 0Bh 2 29h Keypad 0 48h M
- 0Ch W 2Ch = 49h N
- 0Dh A 2Dh Backspace 4Ah /
- 0Eh S 2Eh Keypad 8 4Dh 6
- 0Fh Z 2Fh Keypad 9 4Eh 5
- 11h Alt 30h Keypad 5 4Fh T
- 16h 4 31h Keypad 6 50h Y
- 17h 3 32h Keypad 2 51h G
- 18h E 33h Keypad 3 52h H
- 19h R 34h Keypad . 53h B
- 1Ah D 37h 9 54h V
- 1Bh F 38h O 55h #
- 1Ch X 39h P 58h Pwr
- 1Dh C 3Ah ; 59h Shift Pwr
- --------b-1625------------------------------------
- INT 16 - HUNTER 16 - RESET KEYBOARD
- AH = 25h
- Return: AL = 00h
- Desc: restores the standard keyboard layout after any remapping
- SeeAlso: AH=24h,AH=2Bh,AH=2Ch
- --------K-1625-------------------------------
- INT 16 O - K3 v1.5x, K3PLUS v5.xx - COPY INTO EXTENDED BUFFER
- AH = 25h
- CX = number of keystrokes to copy
- ES:SI -> buffer containing keystrokes
- Return: CF clear if successful
- CF set on error (i.e. buffer full)
- CX = number of keystrokes NOT transferred
- ES:SI -> first keystroke not transferred
- Note: this function was normally unsupported under K3PLUS v6.00-v6.22 and
- is no longer supported by v6.30+; use AX=AF25h instead
- SeeAlso: AH=05h,AH=20h"K3",AX=AF25h,INT 2F/AX=D44Fh/BX=0001h
- --------b-1626------------------------------------
- INT 16 - HUNTER 16 - CONTROL KEYCLICK
- AH = 26h
- AL = new state of keyclicks (00h disabled, 01h enabled)
- Return: AL = 00h
- SeeAlso: AH=2Ah
- --------b-1627------------------------------------
- INT 16 - HUNTER 16 - CONTROL SCREEN DUMP AREA
- AH = 27h
- AL = what to dump
- 00h whole (virtual) window
- 01h LCD window only
- Return: AL = 00h
- Desc: control whether printscren dumps the whole 80x25 screen or only the
- part displayed in the LCD window
- Note: the Hunter 16 has a 240x64 LCD display which serves as a window into
- a 640x200 virtual screen
- --------b-1629------------------------------------
- INT 16 - HUNTER 16 - GET KEY REPEAT
- AH = 29h
- Return: BL = Typematic rate (characters per second) (see #00592)
- BH = delay (00h = 250ms, 01h = 500ms, 02h = 750ms, 03h = 1s)
- SeeAlso: AH=03h,AH=2Ah
- (Table 00592)
- Values for HUNTER 16 Typematic rate:
- 00h 30.0 08h 15.0 10h 7.5 18h 3.7
- 01h 26.7 09h 13.3 11h 6.7 19h 3.3
- 02h 24.0 0Ah 12.0 12h 6.0 1Ah 3.0
- 03h 21.8 0Bh 10.9 13h 5.5 1Bh 2.7
- 04h 20.0 0Ch 10.0 14h 5.0 1Ch 2.5
- 05h 18.5 0Dh 9.2 15h 4.6 1Dh 2.3
- 06h 17.1 0Eh 8.6 16h 4.3 1Eh 2.1
- 07h 16.0 0Fh 8.0 17h 4.0 1Fh 2.0
- SeeAlso: AH=2Ah
- --------b-162A------------------------------------
- INT 16 - HUNTER 16 - CONTROL KEY REPEAT
- AH = 2Ah
- AL = new state of keyboard autorepeat (00h disabled, 01h enabled)
- SeeAlso: AH=03h,AH=26h,AH=29h,AH=2Bh
- --------b-162B------------------------------------
- INT 16 - HUNTER 16 - REDEFINE KEY SCAN CODES
- AH = 2Bh
- AL = which key table to redefine
- 00h unshifted
- 01h shifted
- 02h Numlock
- BH = standard scan code of key (00h-80h)
- BL = new scan code
- Desc: redefine the generated scan code from BH to BL
- SeeAlso: AH=24h,AH=2Ah,AH=2Ch
- --------b-162C------------------------------------
- INT 16 - HUNTER 16 - REDEFINE RAW KEY CODES
- AH = 2Ch
- AL = Matrix code of key (see AH=29h)
- BL = new key code
- Return: AL = status (00h success, nonzero failed)
- Desc: redefine the key code generated by holding the PAW key down and
- pressing the key in AL
- SeeAlso: AH=24h,AH=2Bh
- --------b-162D------------------------------------
- INT 16 - HUNTER 16 - CONTROL BREAK KEYS
- AH = 2Dh
- AL = enabled break keys
- bit 0 Ctrl-C
- bit 1 Ctrl-Break
- BX = 0708h
- CX = 0910h
- DX = 1112h
- Return: AL = status (00h success, FFh failed)
- SeeAlso: AH=21h"HUNTER"
- --------U-163577-----------------------------
- INT 16 U - TextWare TWTSR - API
- AX = 3577h
- CX = function
- 00CBh ???
- Return: AX = 0000h
- BX = 0000h
- DX:CX -> ???
- 00CCh uninstall
- Return: AX = status
- 0000h successful
- FFFDh unable to unload because vectors taken
- 00CDh ???
- Return: AX = 0000h
- BX = 0000h
- DX:CX -> ???
- other
- Return: AX = 5345h ('SE')
- Program: TWTSR is a TSR which allows the TextWare hypertext browser to be
- popped up via hotkey
- SeeAlso: AX=D724h
- --------U-164252-----------------------------
- INT 16 - TEXTCAP 2.0 - INSTALLATION CHECK
- AX = 4252h
- Return: AX = 5242h if installed
- Program: TEXTCAP 2.0 is a heavily modified (by Gisbert W. Selke) version of
- the PC Magazine utility CAPTURE written by Tom Kihlken
- SeeAlso: AX=4253h,AX=4254h
- --------U-164253-----------------------------
- INT 16 - TEXTCAP 2.0 - UNINSTALL
- AX = 4253h
- Return: AX = segment of resident code
- Notes: the uninstall code does not check whether interrupt vectors have been
- chained by other programs
- the caller must free the main memory block (using the returned segment)
- SeeAlso: AX=4252h,AX=4254h
- --------U-164254-----------------------------
- INT 16 - TEXTCAP 2.0 - DUMP TEXT SCREEN TO FILE
- AX = 4254h
- Return: AX = status
- 4254h if screen dump will be written as soon as disk becomes idle
- 5442h if screen dump written
- SeeAlso: AX=4252h,AX=4253h
- --------e-164500-----------------------------
- INT 16 - Shamrock Software EMAIL - GET STATUS
- AX = 4500h
- DL = port number (01h = COM1)
- ES:BX -> 13-byte buffer for ASCIZ name
- Return: AX = 4D00h if EMAIL installed on specified port
- ES:BX -> "" if no connection
- -> "*" if connection but caller has not identified name
- -> name otherwise
- CX = version (CH = major, CL = minor)
- DL = privilege level of user (00h = guest)
- DH = chosen language (00h German, 01h English)
- SeeAlso: AX=4501h,AX=4502h
- --------e-164501-----------------------------
- INT 16 - Shamrock Software EMAIL - GET ELAPSED ONLINE TIME AND MAXIMUM TIME
- AX = 4501h
- DL = port number (01h = COM1)
- Return: AX = 4D00h if EMAIL installed on specified port
- BX = maximum connect time in clock ticks
- CX = maximum connect time for guests (without name) in clock ticks
- DX = elapsed connect time of current user in clock ticks
- SeeAlso: AX=4500h
- --------e-164502-----------------------------
- INT 16 - Shamrock Software EMAIL - GET CURRENT COMMUNICATIONS PARAMETERS
- AX = 4502h
- DL = port number (01h = COM1)
- Return: AX = 4D00h if EMAIL installed on specified port
- BL = current value of serial port's Line Control Register
- BH = flags (see #00593)
- CX = selected country code (33 = France, 49 = Germany, etc)
- DX = baudrate divisor (115200/DX = baudrate)
- SeeAlso: AX=4500h
- Bitfields for Shamrock Software EMAIL flags:
- Bit(s) Description (Table 00593)
- 0 ISO code
- 1 pause
- 2 linefeed
- 3 ANSI sequences
- --------e-164503-----------------------------
- INT 16 - Shamrock Software EMAIL - SPECIFY COMMAND-WORD FOR USER FUNCTION
- AX = 4503h
- DL = port number (01h = COM1)
- DH = maximum execution time in clock ticks (00h = 5 seconds)
- ES:BX -> ASCIZ string with new user command-word
- Return: AX = 4D00h if EMAIL installed on specified port
- Notes: a single user command (consisting of only uppercase letters and digits)
- may be defined, and remains valid until it is overwritten or the
- EMAIL program terminates; the user command must be activated by
- calling AX=4504h at least once.
- an existing command word may be redefined with this function
- SeeAlso: AX=4504h,AX=4505h
- --------e-164504-----------------------------
- INT 16 - Shamrock Software EMAIL - CHECK FOR USER FUNCTION COMMAND-WORD
- AX = 4504h
- DL = port number (01h = COM1)
- ES:BX -> 80-byte buffer for ASCIZ user input line
- Return: AX = 4D00h if EMAIL installed on specified port
- DL = flags
- bit 0: user function supported (always set)
- bit 1: user entered user-function command word
- if DL bit 1 set,
- ES:BX buffer contains line entered by user which begins with
- the defined command word and has been converted to all
- caps
- Note: caller must process the returned commandline and invoke AX=4505h
- within five seconds with the result of that processing
- SeeAlso: AX=4503h,AX=4505h
- --------e-164505-----------------------------
- INT 16 - Shamrock Software EMAIL - SEND RESULT OF USER FUNCTION
- AX = 4505h
- DL = port number (01h = COM1)
- DH = error flag
- bit 3: set on error
- ES:BX -> ASCIZ text to return to user, max 1024 bytes
- Return: AH = 4Dh if EMAIL installed on specified port
- AL = status
- 00h successful
- 02h unable to perform function (timeout, prev call not complete)
- other error
- Notes: if the error flag in DH is set, the string is not sent and an error
- message is generated instead; if this function is not called within
- five seconds of AX=4504h, EMAIL automatically generates an error
- message
- the string is copied into an internal buffer, allowing this function's
- caller to continue immediately
- SeeAlso: AX=4503h,AX=4504h,INT 17/AX=2400h
- --------e-164506-----------------------------
- INT 16 - Shamrock Software EMAIL - MONITOR XMODEM DOWNLOAD
- AX = 4506h
- DL = port number (01h = COM1)
- ES:BX -> 13-byte buffer for ASCIZ filename
- Return: AX = 4D00h if EMAIL installed on specified port
- DH = Xmodem status
- 00h no XGET command given
- 01h XGET in progress
- 02h XGET completed successfully
- ES:BX buffer filled with last filename given to XGET command
- (without path)
- Note: DH=02h will only be returned once per XGET; subsequent calls will
- return DH=00h
- SeeAlso: AX=4500h,INT 17/AX=2408h
- --------K-164B-------------------------------
- INT 16 - Frank Klemm Keyboard Driver v2.0 - API
- AH = 4Bh
- CX = code or action
- 0000h-FEFFh key code
- FF00h-FFFFh action (see #00594)
- BL = scan code (normal keys) or scan code + 60h (enhanced keys)
- BH = shift state (see #00595)
- Return: CX = previous code or action
- (Table 00594)
- Values for Frank Klemm Keyboard Driver action code:
- FF00h no action
- FF01h hardcopy
- FF02h left shift
- FF03h right shift
- FF04h left Ctrl
- FF05h right Ctrl
- FF06h left Alt
- FF07h right Alt / AltGr
- FF08h CapsLock
- FF09h NumLock
- FF0Ah ScrlLock
- FF0Bh Insert (returns code 5200h or 52E0h)
- FF0Ch Pause
- FF0Dh Ctrl-Break function
- FF0Eh warm boot via far jump to F000h:FFF0h
- FF0Fh terminate current program
- FF10h key for entering keys via Alt-numpad (read-only)
- FF11h clear keyboard buffer
- FF12h reset (warmboot on XT)
- FF13h mouse sensitivity (read-only)
- FF14h keyjobs (read-only)
- FF15h SysRq
- FF16h turn on CPU cache (486+)
- FF17h turn off CPU cache (486+)
- SeeAlso: #00595
- (Table 00595)
- Values for Frank Klemm Keyboard Driver shift state:
- 00h no shift keys
- 01h either Shift
- 02h either Ctrl
- 03h left Alt
- 04h Ctrl + Alt
- ---standard keyboard---
- 05h right Alt / AltGr
- ---Russian keyboard---
- 05h Russian + no shift keys
- 06h Russian + either Shift
- SeeAlso: #00594
- --------K-164D4F-----------------------------
- INT 16 - M16_KBD.COM v5.6 - INSTALLATION CHECK
- AX = 4D4Fh
- Return: AX = 6F6Dh if installed
- ES = segment of resident code
- Program: M16_KBD is a shareware Cyrillic keyboard driver by I.V. Morozov
- SeeAlso: INT 10/AX=1130h/BX=4D4Fh
- --------J-165000-----------------------------
- INT 16 - KEYBOARD - AX PC - SET KEYBOARD COUNTRY CODE
- AX = 5000h
- BX = country code
- 0001h USA (English), 0051h Japan
- Return: AL = status
- 00h successful
- 01h bad country code
- 02h other error
- Notes: the K3PLUS v6.00+ INT 16 BIOS replacement will switch between the
- supported country specific layout (e.g. BX=0031h Germany, BX=001Fh
- Netherlands, BX=0020h Belgium, BX=0022h Spain) (as with <Ctrl>+
- <Alt>+<F2>) and K3PLUS' transparent mode (as with <Ctrl>+<Alt>+<F1>).
- In transparent mode (BX=0001h), K3PLUS chains to the underlying
- driver (normally the BIOS driver with US-layout). K3PLUS beeps on
- mode changes
- SeeAlso: AX=5001h,AX=AF4Dh,INT 10/AX=5000h,INT 17/AX=5000h
- --------J-165001-----------------------------
- INT 16 - KEYBOARD - AX PC - GET KEYBOARD COUNTRY CODE
- AX = 5001h
- Return: AL = status
- 00h successful
- BX = country code
- 02h error
- Note: also supported by K3PLUS v6.00+
- SeeAlso: AX=5000h,INT 10/AX=5001h,INT 17/AX=5001h
- --------J-1651-------------------------------
- INT 16 - KEYBOARD - AX PC - READ SHIFT KEY STATUS
- AH = 51h
- Return: AL = standard shift key states (see #00582,#00587)
- AH = Kana lock (00h off, 01h on)
- Note: also supported by K3PLUS v6.00+, but K3PLUS always returns AH=00h
- SeeAlso: AH=02h,AH=12h,AH=22h
- --------t-165453BX5242-----------------------
- INT 16 - TSRBONES - INSTALLATION CHECK
- AX = 5453h ('TS')
- BX = 5242h ('RB')
- CX = 4F4Eh ('ON')
- DX = 4553h ('ES')
- Return: AX = 4553h if installed
- BX = 4F4Eh if installed
- CX = 5242h if installed
- DX = 5453h if installed
- Program: TSRBONES is a skeletal TSR framework by Robert Curtis Davis
- Note: these values are the default as the TSRBONES package is distributed,
- but will normally be changed when implementing an actual TSR with
- the TSRBONES skeleton
- SeeAlso: INT 2D/AL=00h"AMIS"
- --------K-165472BX4C54-----------------------
- INT 16 - TrLit - API
- AX = 5472h ('Tr')
- BX = 4C54h ('Lt')
- CL = function
- 00h installation check
- Return: DX = 1234h if installed
- AX = 100*version (binary, 00E9h = v2.33)
- CX = resident code segment
- 01h get original INT 09 vector
- Return: ES:BX -> previous handler
- 02h get original INT 16 vector
- Return: ES:BX -> previous handler
- else chained
- CH = 00h (for backward compatibility with versions before 2.30)
- Program: TrLit is a Russian keyboard transliterator by Rostislav Krasny
- Index: installation check;TrLit
- --------A-165500-----------------------------
- INT 16 C - Microsoft Word internal - MICROSOFT WORD COOPERATION WITH TSR
- AX = 5500h
- Return: AX = 4D53h ('MS') if keyboard TSR present
- Notes: during startup, Microsoft Word tries to communicate with any TSRs
- that are present through this call.
- if the return is not 4D53h, Word installs its own INT 09 and INT 16
- handlers; otherwise it assumes that the TSR will handle the keyboard
- SeeAlso: AX=55FFh,INT 1A/AX=3601h
- --------A-1655FE-----------------------------
- INT 16 CU - Microsoft QBASIC internal - MICROSOFT COOPERATION WITH TSR
- AX = 55FEh
- DX = function
- 0000h initialize
- ES:BX -> ??? function
- ES:CX -> ??? structure
- FFFFh shutdown/reset
- Return: AX = result
- 4D4Bh only the INT 1B handler will be installed.
- other: handlers for INT 08, INT 09, INT 16, INT 1B, and INT 1C
- are installed
- Notes: The pointer in ES:CX seems to point at a structure defining a callback
- function when new keyboard keys are pressed. If a TSR returns
- AX=4D4Bh, QBASIC will stop (with IRQ's and interrupts enabled).
- these calls are also made by MS-DOS 6.0's DOSSHELL at startup, exit,
- and before/after shelling out
- since EDIT.COM and HELP.COM merely invoke QBASIC, those two programs
- will also cause this interface to be invoked
- K3PLUS v6.07+ supports this function, but will never invoke the
- callback function
- SeeAlso: AX=5500h,AX=AF4Dh,INT 1A/AX=3601h
- --------U-1655FF-----------------------------
- INT 16 C - Microsoft Word - TSR COOPERATION???
- AX = 55FFh
- BX >= 0004h (version of Microsoft Word [BL = major] ???)
- CX = function
- 0000h set ??? flag
- other clear ??? flag
- Notes: hooks intercepting this call are present in SWAPSH and SWAPDT v1.77j,
- distributed with PC Tools v7, as well as the Trusted Access
- SCRNBLNK.COM; this may be part of the standard TesSeRact library
- known to be called by the German edition of Microsoft Word 5.0
- SeeAlso: AX=5500h,INT 2F/AX=5453h
- --------c-165758BX4858-----------------------
- INT 16 U - Netroom CACHECLK - INSTALLATION CHECK
- AX = 5758h
- BX = 4858h ('HX')
- DX = 4443h ('DC')
- CX <> 5758h
- Return: BX = 6878h if installed
- CX = 6463h if installed
- AX = code segment of TSR
- CX = internal version??? (v3.00 returns 0100h)
- Program: CACHECLK is a "cloaked" disk cache included with Netroom
- Notes: if CX=5758h on entry, CACHECLK returns with all registers unchanged
- the cache statistics are located early in the segment pointed at by
- AX on return
- SeeAlso: INT 2F/AX=5758h
- --------m-165758BX5754-----------------------
- INT 16 U - Netroom ??? - ???
- AX = 5758h
- BX = 5754h
- ???
- Return: ???
- --------m-165758BX5755-----------------------
- INT 16 U - Netroom ??? - ???
- AX = 5758h
- BX = 5755h
- DS:SI -> ???
- Return: ???
- --------m-165758BX5756-----------------------
- INT 16 U - Netroom ??? - INSTALLATION CHECK
- AX = 5758h
- BX = 5756h
- Return: BX <> 5756h if installed
- --------m-165758BX5858-----------------------
- INT 16 U - Netroom PRENET - GET OLD INTERRUPT VECTORS
- AX = 5758h
- BX = 5858h
- Return: CF clear
- DX:BX -> saved copy of interrupt vector table
- InstallCheck: call this function and compare BX against 5858h on return; if
- it has changed, PRENET is installed
- SeeAlso: AX=5758h/BX=5859h
- Index: installation check;Netroom PRENET
- --------m-165758BX5859-----------------------
- INT 16 U - Netroom POSTNET - GET OLD INTERRUPT VECTORS
- AX = 5758h
- BX = 5859h
- Return: CF clear
- DX:BX -> saved copy of interrupt vector table
- InstallCheck: call this function and compare BX against 5859h on return; if
- it has changed, POSTNET is installed
- SeeAlso: AX=5758h/BX=5858h
- Index: installation check;Netroom POSTNET
- ----------1667-------------------------------
- INT 16 - Doorway v2.x+ - INSTALLATION CHECK / REDIRECTION CONTROLa
- AH = 67h
- AL = Doorway mode
- 00h turn off DOS redirection
- 01h turn on DOS redirection
- Return: AH = 80h if Doorway is actively redirecting output
- AL = 80h if Doorway was already in requested mode
- Program: Doorway is a program by Marshall Dudley which allows most DOS programs
- to run as a BBS door without modification
- Note: to perform an installation check without changing the redirection
- state, if is necessary to restore the original mode if AL was not
- 80h on return
- SeeAlso: INT 10/AH=BBh"Doorway"
- --------U-166969BX6968-----------------------
- INT 16 - PC Tools v5.1+ BACKTALK - UNHOOK
- AX = 6969h
- BX = 6968h
- Return: resident code unhooked, but not removed from memory
- Index: uninstall;BACKTALK
- --------U-166969BX6969-----------------------
- INT 16 - PC Tools v5.1+ BACKTALK - INSTALLATION CHECK
- AX = 6969h
- BX = 6969h
- DX = 0000h
- Return: DX nonzero if installed
- BX = CS of resident code
- DX = PSP segment of resident code
- DS:SI -> ASCIZ identification string "CPoint Talk"
- --------i-166A6B-----------------------------
- INT 16 U - FastJuice - DISABLE/UNLOAD???
- AX = 6A6Bh
- Return: ???
- Program: FastJuice is a resident battery-power monitor by SeaSide Software
- SeeAlso: AX=7463h
- Index: uninstall;FastJuice
- --------G-166C63-----------------------------
- INT 16 U - TMED v1.6a - INSTALLATION CHECK
- AX = 6C63h ('lc')
- Return: AX = 4C43h ('LC') if installed
- Program: TMED is a freeware resident memory editor by Liang Chen
- --------U-166D74-----------------------------
- INT 16 - MTRTSR - INSTALLATION CHECK
- AX = 6D74h ('mt')
- Return: AX = 4D54h ('MT') if installed
- Program: MTRTSR is a part of the shareware MTR package by Mechon Mamre which
- permits searching the large corpus of classical Hebrew texts in the
- package
- SeeAlso: INT 10/AX=6D74h"MTRFONTS"
- --------b-166F00-----------------------------
- INT 16 - HP Vectra EX-BIOS - "F16_INQUIRE" - Extended BIOS INSTALLATION CHECK
- AX = 6F00h
- BX <> 4850h (usually set to 0000h for simplicity)
- Return: BX = 4850h ("HP") if present
- Notes: called by recent MS Mouse drivers looking for an HP-HIL mouse
- supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
- SeeAlso: AX=6F01h,AX=6F04h,AX=6F07h,AX=6F09h,AX=6F0Dh,AX=6F11h,AX=6F12h
- SeeAlso: INT 14/AX=6F00h,INT 17/AX=6F00h,INT 33/AX=6F00h
- SeeAlso: INT 6F/AH=00h"HP Vectra"
- --------b-166F01-----------------------------
- INT 16 - HP Vectra EX-BIOS - "F16_DEF_ATTR" - GET DEFAULT TYPEMATIC VALUES
- AX = 6F01h
- Return: AH = 00h (successful)
- CX = 0004h (size of returned buffer)
- ES:SI -> buffer for typematic info (see #00596)
- Note: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
- SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h
- Format of HP Vectra EX-BIOS typematic info:
- Offset Size Description (Table 00596)
- 00h BYTE delay before repeat for all non-Cursor Control Pad keys
- (see #00597)
- 01h BYTE typematic rate for all non-Cursor Control Pad keys (see #00598)
- 02h BYTE delay before repeat for Cursor Control Pad keys (see #00599)
- 03h BYTE typematic rate for Cursor Control Pad keys (see #00598)
- (Table 00597)
- Values for HP Vectra EX-BIOS non-CCP delay time:
- 00h 17 ms
- 01h 150 ms
- 02h 283 ms
- 03h 417 ms
- 04h 550 ms
- 05h 683 ms
- 06h 817 ms
- 07h 950 ms
- 08h 1083 ms
- 09h 1217 ms
- 0Ah 1350 ms
- 0Bh 1483 ms
- 0Ch 1617 ms
- 0Dh 1750 ms
- 0Eh 1883 ms
- 0Fh 2017 ms
- Note: the above values assume that the key repeat rate has been set to 60 Hz;
- double the times if set to 30 Hz
- SeeAlso: #00596,#00598,#00599
- (Table 00598)
- Values for HP Vectra EX-BIOS typematic rate:
- 00h 60 / sec
- 01h 30 / sec
- 02h 20
- 03h 15
- 04h 12
- 05h 10
- 06h 8.57
- 07h 7.5
- 08h 6.66
- 09h 6 / sec
- 0Ah 5.45
- 0Bh 5
- 0Ch 4.62
- 0Dh 4.28
- 0Eh 4 / sec
- 0Fh typematic disabled
- Note: the above values assume that the key repeat rate has been set to 60 Hz;
- halve the rates if set to 30 Hz
- SeeAlso: #00597,#00599
- (Table 00599)
- Values for HP Vectra EX-BIOS CCP delay time:
- 00h 17 ms
- 01h 83 ms
- 02h 150 ms
- 03h 217 ms
- 04h 283 ms
- 05h 350 ms
- 06h 417 ms
- 07h 483 ms
- 08h 550 ms
- 09h 617 ms
- 0Ah 683 ms
- 0Bh 750 ms
- 0Ch 817 ms
- 0Dh 883 ms
- 0Eh 950 ms
- 0Fh 1017 ms
- Note: the above values assume that the key repeat rate has been set to 60 Hz;
- double the times if set to 30 Hz
- SeeAlso: #00597,#00598
- --------b-166F02-----------------------------
- INT 16 - HP Vectra EX-BIOS - "F16_GET_ATTR" - GET CURRENT TYPEMATIC VALUES
- AX = 6F02h
- Return: AH = 00h (successful)
- CX = 0004h (size of returned buffer)
- ES:SI -> buffer for typematic info (see #00596)
- Note: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
- SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h
- SeeAlso: AX=6F00h,AX=6F01h,AX=6F03h
- --------b-166F03-----------------------------
- INT 16 - HP Vectra EX-BIOS - "F16_SET_ATTR" - SET TYPEMATIC VALUES
- AX = 6F03h
- ES:SI -> buffer containing typematic info (see #00596)
- Return: AH = 00h (successful)
- Note: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
- SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h
- SeeAlso: AX=6F00h,AX=6F01h,AX=6F02h
- --------b-166F04-----------------------------
- INT 16 - HP Vectra EX-BIOS - "F16_DEF_MAPPING" - GET DEFAULT KEY MAPPINGS
- AX = 6F04h
- ES:SI -> mapping buffer (see #00600)
- Return: AH = 00h (successful)
- CX = 001Eh (number of bytes in buffer)
- ES:SI buffer filled
- Notes: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
- the HIL input system translates the HIL keyboard events to simulate
- an IBM-compatible keyboard; the translation can be altered
- dynamically by applications
- SeeAlso: AX=6F00h,AX=6F05h,AX=6F06h
- Format of HP Vectra EX-BIOS keyboard mapping info:
- Offset Size Description (Table 00600)
- 00h 3 WORDs entry for V_QWERTY driver (IP, CS, DS)
- 06h 3 WORDs entry for V_SOFTKEY driver (IP, CS, DS)
- 0Ch 3 WORDs entry for V_FUNCTION driver
- 12h 3 WORDs entry for V_NUMPAD driver
- 18h 3 WORDs entry for V_CCP driver
- --------b-166F05-----------------------------
- INT 16 - HP Vectra EX-BIOS - "F16_GET_MAPPING" - GET CURRENT KEY MAPPINGS
- AX = 6F05h
- ES:SI -> mapping buffer (see #00600)
- Return: AH = 00h (successful)
- CX = 001Eh (number of bytes in buffer)
- ES:SI buffer filled
- Note: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
- SeeAlso: AX=6F04h,AX=6F06h
- --------b-166F06-----------------------------
- INT 16 - HP Vectra EX-BIOS - "F16_SET_MAPPING" - SET KEY MAPPINGS
- AX = 6F06h
- CX = number of bytes in buffer (001Eh)
- ES:SI -> mapping buffer (see #00600)
- Return: AH = 00h (successful)
- Notes: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
- any application which modifies the key mappings should restore them
- before terminating
- drivers installed with this function are assured of 32 bytes of stack
- space when they are invoked
- SeeAlso: AX=6F04h,AX=6F05h,AX=6F07h
- --------b-166F07-----------------------------
- INT 16 - HP Vectra EX-BIOS - "F16_SET_XLATORS" - SET CCP AND SOFTKEY PADS
- AX = 6F07h
- BL = translation to set (see #00601)
- Return: AH = 00h (successful)
- Notes: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
- this function may no longer work properly if the application has
- modified the key mappings with AX=6F06h
- SeeAlso: AX=6F06h,AX=6F09h
- (Table 00601)
- Values for HP Vectra keyboard translation specifier:
- 00h map V_CCP to V_CCPCUR, forcing the cursor pad to return cursor keys
- 01h map V_CCP to V_CCPNUM, forcing the cursor pad to always return numbers
- 02h map V_CCP to V_OFF, disabling the cursor pad
- 03h map V_CCP to V_CCPGID, converting cursor pad keys to GID data
- 04h map V_CCP to V_RAW, passing cursor pad data untranslated to INT 09
- 05h map V_SOFTKEY to V_SKEY2KFEY, translating into standard function keys
- 06h map V_SOFTKEY to V_RAW, passing Softkey scancodes direct to INT 09
- 07h map V_SOFTKEY to V_OFF, disabling HP Softkeys
- SeeAlso: #00602
- (Table 00602)
- Values for HP Vectra scancodes and BIOS keycodes for V_RAW translator:
- INT 09 INT 16 keycode
- Key scan code Default Shifted Ctrl Alt
- * (NumPd) 37h 2Ah (Prt Sc) 00/72h 00/37H
- Sysreq 54h -- -- -- --
- CCP-Up 60h 00/D9h 00/BFh 00/A5h 00/8BH
- CCP-Left 61h 00/DAh 00/C0h 00/A6h 00/8CH
- CCP-Down 62h 00/DBh 00/C1h 00/A7h 00/8DH
- CCP-Right 63h 00/DCh 00/C2h 00/A8h 00/8EH
- CCP-Home 64h 00/DDh 00/C3h 00/A9h 00/8FH
- CCP-PgUp 65h 00/DEh 00/C4h 00/AAh 00/90H
- CCP-End 66h 00/DFh 00/C5h 00/ABh 00/91H
- CCP-PgDn 67h 00/E0h 00/C6h 00/ACh 00/92H
- CCP-Ins 68h 00/E1h 00/C7h 00/ADh 00/93H
- CCP-Del 69h 00/E2h 00/C8h 00/AEh 00/94H
- CCP-CNTR 6Ah 00/E3h 00/C9h 00/AFh 00/95H
- f1 70h 00/E9h 00/CFh 00/B5h 00/9BH
- f2 71h 00/EAh 00/D0h 00/B6h 00/9CH
- f3 72h 00/EBh 00/D1h 00/B7h 00/9DH
- f4 73h 00/ECh 00/D2h 00/B8h 00/9EH
- f5 74h 00/EDh 00/D3h 00/B9h 00/9FH
- f6 75h 00/EEh 00/D4h 00/BAh 00/A0H
- f7 76h 00/EFh 00/D5h 00/BBh 00/A1H
- f8 77h 00/F0h 00/D6h 00/BCh 00/A2H
- Note: only HP-specific codes are listed in this table; see INT 09 for a full
- list of standard scan codes
- SeeAlso: #00006,#00601
- --------b-166F08-----------------------------
- INT 16 - HP Vectra EX-BIOS - "F16_KBD" - GET KEYBOARD INFORMATION
- AX = 6F08h
- Return: AH = status
- 00h successful
- 02h unsupported (non-HIL, i.e. standard, keyboard)
- BH = HP-HIL address (HP Vectra AT only???)
- BL = HP-HIL ID (HP Vectra AT only???)
- BL = keyboard language (ES/QS/RS only???) (see #00603)
- Notes: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
- the driver's address in the HP_VECTOR_TABLE (see INT 6F/AH=00h) may
- be computed as (BH-1)*6 + N, where N is the address of the first
- HP-HIL device driver (see INT 6F/AH=0Ah"F_INQUIRE_FIRST")
- SeeAlso: AX=6F05h,AX=6F09h,INT 6F/AH=0Ah"F_INQUIRE_FIRST"
- (Table 00603)
- Values for HP HIL keyboard language code:
- 00h reserved
- 01h Arabic-French
- 02h Kanji
- 03h Swiss-French
- 04h Portugese
- 05h Arabic
- 06h Hebrew
- 07h Canadian-English
- 08h Turkish
- 09h Greek
- 0Ah Thai
- 0Bh Italian
- 0Ch Hangul (Korean)
- 0Dh Dutch
- 0Eh Swedish
- 0Fh German
- 10h Chinese (PRC)
- 11h Chinese (Taiwan)
- 12h Swiss (French ii)
- 13h Spanish
- 14h Swiss (German ii)
- 15h Belgian (Flemish)
- 16h Finnish
- 17h United Kingdom
- 18h French-Canadian
- 19h French-German
- 1Ah Norwegian
- 1Bh French
- 1Ch Danish
- 1Dh Katakana
- 1Eh Latin American Spanish
- 1Fh United States-American
- 20h-FEh reserved
- FFh non-HP keyboard (IBM AT keyboard and IBM Enhanced keyboard)
- --------b-166F09-----------------------------
- INT 16 - HP Vectra EX-BIOS - "F16_KBD_RESET" - RESET KEYBOARD TO DEFAULTS
- AX = 6F09h
- Return: AH = 00h (successful)
- Desc: reset all keyboard mappings to their default translators, and reset
- typematic values to their defaults
- Note: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
- SeeAlso: AX=6F04h,AX=6F07h,AX=6F08h
- --------b-166F0A-----------------------------
- INT 16 - HP Vectra ES/QS/RS EX-BIOS - READ PROCESSOR SPEED
- AX = 6F0Ah
- Return: AH = 00h (successful)
- BX = speed code
- 0Bh for low speed (see #00604)
- 12h for medium speed (see #00604)
- 0Ch for high speed (see #00604)
- Note: supported by ES, QS, and RS series of HP Vectras
- SeeAlso: AX=6F00h
- (Table 00604)
- Values for HP Vetra CPU speed:
- Vectra Low Medium High
- ES 8 MHz - 8 MHz
- ES/12 8 MHz - 12 MHz
- QS/16, RS/16 8 MHz - 16 MHz
- QS/16S 8 MHz - 16 MHz
- QS/20, RS/20 8 MHz - 20 MHz
- RS/20C 5 MHz 10 MHz 20 MHz
- RS/25C 5 MHz 12.5 MHz 25 MHz
- --------b-166F0B-----------------------------
- INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET PROCESSOR SPEED TO LOW
- AX = 6F0Bh
- Return: AH = 00h (successful)
- Notes: see AX=6F0Ah for speed definitions
- supported by ES, QS, and RS series of HP Vectras
- SeeAlso: AX=6F00h,AX=6F0Ah
- --------b-166F0C-----------------------------
- INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET PROCESSOR SPEED TO HIGH
- AX = 6F0Ch
- Return: AH = 00h (successful)
- Notes: see AX=6F0Ah for speed definitions
- supported by ES, QS, and RS series of HP Vectras
- SeeAlso: AX=6F00h,AX=6F0Ah
- --------b-166F0D-----------------------------
- INT 16 - HP Vectra ES/QS/RS EX-BIOS - GET HIL Extended BIOS INTERRUPT NUMBER
- AX = 6F0Dh
- Return: AH = interrupt number (default 6Fh, 02h means 6Fh as well)
- Notes: supported by ES, QS, and RS series of HP Vectras
- called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL
- input system
- SeeAlso: AX=6F00h,AX=6F0Eh,INT 6F/AH=00h"HP Vectra",INT 6F/AH=0Ah"HP"
- --------b-166F0E-----------------------------
- INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET HIL Extended BIOS INTERRUPT NUMBER
- AX = 6F0Eh
- BL = new interrupt number (60h-6Fh,78h-7Fh)
- Return: AH = status (00h = successful)
- Desc: allows the HIL Extended BIOS software to use a non-default interrupt
- number in case of an interrupt conflict with another application
- Notes: supported by ES, QS, and RS series of HP Vectras
- called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL
- input system
- SeeAlso: AX=6F00h,AX=6F0Dh,INT 6F/AH=00h"HP",INT 6F/AH=0Ah"HP"
- --------b-166F0F-----------------------------
- INT 16 - HP Vectras RS/20C and RS/25C - ENABLE MEMORY CACHING
- AX = 6F0Fh
- Return: AH = status
- 00h successful
- FEh cache subsystem is bad
- SeeAlso: AX=6F00h,AX=6F10h,AX=6F11h
- --------b-166F10-----------------------------
- INT 16 - HP Vectras RS/20C and RS/25C - DISABLE MEMORY CACHING
- AX = 6F10h
- Return: AH = 00h (successful)
- SeeAlso: AX=6F00h,AX=6F0Fh,AX=6F11h
- --------b-166F11-----------------------------
- INT 16 - HP Vectras RS/20C and RS/25C - GET MEMORY CACHING STATE
- AX = 6F11h
- Return: AH = 00h (successful)
- AL bit 0 = cache state
- 0 cache disabled
- 1 cache enabled
- SeeAlso: AX=6F00h,AX=6F0Fh,AX=6F10h
- --------b-166F12-----------------------------
- INT 16 - HP Vectras RS/20C and RS/25C - SET PROCESSOR SPEED TO MEDIUM
- AX = 6F12h
- Return: AH = 00h (successful)
- Note: see AX=6F0Ah for speed definitions
- SeeAlso: AX=6F00h,AX=6F0Ah
- --------K-1670-------------------------------
- INT 16 - FAKEY.COM - INSTALLATION CHECK
- AH = 70h
- Return: AX = 1954h if installed
- Program: FAKEY is a keystroke faking utility by System Enhancement Associates
- --------K-1671-------------------------------
- INT 16 - FAKEY.COM - PUSH KEYSTROKES
- AH = 71h
- CX = number of keystrokes
- DS:SI -> array of words containing keystrokes to be returned by AH=00h
- Program: FAKEY is a keystroke faking utility by System Enhancement Associates
- SeeAlso: AH=05h,AH=72h
- --------K-1672-------------------------------
- INT 16 - FAKEY.COM - CLEAR FAKED KEYSTROKES
- AH = 72h
- Program: FAKEY is a keystroke faking utility by System Enhancement Associates
- SeeAlso: AH=71h
- --------K-1673-------------------------------
- INT 16 - FAKEY.COM - PLAY TONES
- AH = 73h
- CX = number of tones to play
- DS:SI -> array of tones (see #00605)
- Program: FAKEY is a keystroke faking utility by System Enhancement Associates
- SeeAlso: INT 15/AX=1019h
- Format of FAKEY.COM tone array entries:
- Offset Size Description (Table 00605)
- 00h WORD divisor for timer channel 2
- 02h WORD duration in clock ticks
- --------i-167463-----------------------------
- INT 16 U - FastJuice - INSTALLATION CHECK
- AX = 7463h ("tc")
- Return: AX = 5443h ("TC") if installed
- Program: FastJuice is a resident battery-power monitor by SeaSide Software
- SeeAlso: AX=6A6Bh
- --------R-1675-------------------------------
- INT 16 - pcANYWHERE III - SET TICK COUNT FOR SCANNING
- AH = 75h
- AL = number of ticks between checks for new screen changes
- --------R-1676-------------------------------
- INT 16 - pcANYWHERE III - SET ERROR CHECKING TYPE
- AH = 76h
- AL = error checking type
- 00h none
- 01h fast
- 02h slow
- --------R-1677-------------------------------
- INT 16 - pcANYWHERE III - LOG OFF
- AH = 77h
- AL = mode
- 00h wait for another call
- 01h leave in Memory Resident Mode
- 02h leave in Automatic Mode
- FFh leave in current operating mode
- --------U-167761-----------------------------
- INT 16 - WATCH.COM v2.x-v3.0 - INSTALLATION CHECK
- AX = 7761h ('wa')
- Return: AX = 5741h ('WA') if installed
- Note: WATCH.COM is part of the "TSR" package by Kim Kokkonen
- SeeAlso: INT 21/AX=7761h
- --------U-167788BX7789-----------------------
- INT 16 - PC Magazine PUSHDIR.COM - INSTALLATION CHECK
- AX = 7788h
- BX = 7789h
- DS:SI -> signature "PUSHDIR VERSION 1.0"
- Return: AX = 7789h if installed and signature correct
- BX = 7788h
- SI destroyed
- --------R-1679-------------------------------
- INT 16 - pcANYWHERE III - CHECK STATUS
- AH = 79h
- Return: AX = status
- FFFFh if resident and active
- FFFEh if resident but not active
- FFFDh if in Memory Resident mode
- FFFCh if in Automatic mode
- other value if not resident
- SeeAlso: AX=7B00h,INT 21/AX=2B44h
- --------R-167A-------------------------------
- INT 16 - pcANYWHERE III - CANCEL SESSION
- AH = 7Ah
- --------R-167B00-----------------------------
- INT 16 - pcANYWHERE III - SUSPEND
- AX = 7B00h
- SeeAlso: AH=79h,AX=7B01h
- --------R-167B01-----------------------------
- INT 16 - pcANYWHERE III - RESUME
- AX = 7B01h
- SeeAlso: AH=79h,AX=7B00h
- --------R-167C-------------------------------
- INT 16 - pcANYWHERE III - GET PORT CONFIGURATION
- AH = 7Ch
- Return: AH = port number
- AL = baud rate (see #00606)
- SeeAlso: AX=7B00h,AH=7Eh
- (Table 00606)
- Values for pcANYWHERE III baud rate:
- 00h 50 baud
- 01h 75 baud
- 02h 110 baud
- 03h 134.5 baud
- 04h 150 baud
- 05h 300 baud
- 06h 600 baud
- 07h 1200 baud
- 08h 1800 baud
- 09h 2000 baud
- 0Ah 2400 baud
- 0Bh 4800 baud
- 0Ch 7200 baud
- 0Dh 9600 baud
- 0Eh 19200 baud
- SeeAlso: #00309
- --------R-167D-------------------------------
- INT 16 - pcANYWHERE III - GET/SET TERMINAL PARAMETERS
- AH = 7Dh
- AL = subfunction
- 00h set terminal parameters
- 01h get terminal parameters
- 02h get configuration header and terminal parameters
- DS:CX -> terminal parameter block
- SeeAlso: AH=7Ch,AH=7Eh
- --------R-167E-------------------------------
- INT 16 - pcANYWHERE III - COMMUNICATIONS I/O THROUGH PORT
- AH = 7Eh
- AL = subfunction
- 01h port input status
- Return AX = 0 if no characer ready,
- AX = 1 if character ready
- 02h port input character
- Return AL = received character
- 03h port output character in CX
- 11h hang up phone
- SeeAlso: AH=7Ch
- --------R-167F-------------------------------
- INT 16 - pcANYWHERE III - SET KEYBOARD/SCREEN MODE
- AH = 7Fh
- AL = subfunction
- 00h enable remote keyboard only
- 01h enable host keyboard only
- 02h enable both keyboards
- 08h display top 24 lines
- 09h display bottom 24 lines
- 10h Hayes modem
- 11h other modem
- 12h direct connect
- --------U-1680-------------------------------
- INT 16 - MAKEY.COM - INSTALLATION CHECK
- AH = 80h
- Return: AX = 1954h if installed
- Program: MAKEY is a utility by System Enhancement Associates
- --------K-1687-------------------------------
- INT 16 - DK.COM v1.03 - INSTALLATION CHECK
- AH = 87h
- Return: AX = 4A57h ('JW') if installed
- Program: DK.COM is the resident part of a small keyboard macro utility
- by Digital Mechanics.
- --------U-168765BX4321-----------------------
- INT 16 - AT.COM version 8/26/87 - API
- AX = 8765h
- BX = 4321h
- CX = ??? or FFFFh
- if CX = FFFFh
- DX = number of event to remove or FFFFh
- Return: ES:BX -> event record array (see #00607)
- Program: AT.COM is a resident scheduler by Bill Frolik
- Format of AT.COM event record:
- Offset Size Description (Table 00607)
- 00h BYTE in-use flag (00h free, 01h in use, FFh end of array)
- 01h BYTE day of date on which to trigger
- 02h BYTE month of date on which to trigger
- 03h BYTE trigger time, minute
- 04h BYTE trigger time, hour
- 05h WORD offset of command to be executed
- --------K-1692-------------------------------
- INT 16 - KEYB.COM KEYBOARD CAPABILITIES CHECK (not an actual function!)
- AH = 92h
- Return: AH <= 80h if enhanced keyboard functions (AH=10h-12h) supported
- Desc: this function is called by the DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM
- to determine the highest supported keyboard function
- Note: many BIOSes (including at least some versions of Phoenix and AMI) will
- destroy AH on return from functions higher than AH=12h, returning
- 12h less than was in AH on entry (due to a chain of DEC/JZ
- instructions)
- SeeAlso: AH=05h"PCjr",AH=A2h,INT 2F/AX=AD80h
- --------U-1699-------------------------------
- INT 16 - SCOUT v5.4 - GET ???
- AH = 99h
- Return: AX = ABCDh
- BX:CX -> ??? (appears to be start of PSP for resident portion)
- Program: Scout is a memory-resident file manager by New-Ware
- SeeAlso: AH=9Eh
- --------U-169E-------------------------------
- INT 16 - SCOUT v5.4 - INSTALLATION CHECK
- AH = 9Eh
- Return: AX = ABCDh if installed
- Program: Scout is a memory-resident file manager by New-Ware
- SeeAlso: AH=99h
- --------K-16A2-------------------------------
- INT 16 - KEYB.COM KEYBOARD CAPABILITIES CHECK (not an actual function!)
- AH = A2h
- Return: AH <= 80h if 122-key keyboard functions (AH=20h-22h) supported
- Desc: this function is called by the DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM
- to determine the highest supported keyboard function
- Note: many BIOSes (including at least some versions of Phoenix and AMI) will
- destroy AH on return from functions higher than AH=12h, returning
- 12h less than was in AH on entry (due to a chain of DEC/JZ
- instructions)
- SeeAlso: AH=05h"PCjr",AH=92h,INT 2F/AX=AD80h
- --------V-16AA-------------------------------
- INT 16 - PTxxx.COM - (xxx=CGA,EGA,VGA,HER...) CALL GATE FOR GRAPHICS
- AH = AAh
- Various registers set up by high level language.
- Return: Graphics performed
- Note: PT stands for Paint Tools which is a graphics library for Turbo Pascal,
- Modula 2 and others from DataBiten in Sweden. The library is
- installed as a memory resident driver.
- --------U-16AABBBXEEFF-----------------------
- INT 16 U - JORJ v4.3 - INSTALLATION CHECK
- AX = AABBh
- BX = EEFFh
- Return: AX = EEFFh if installed
- BX = AABBh if installed
- CL = hotkey name (default 6Ah 'j' for Alt-J)
- Program: JORJ is a shareware dictionary with phonetic lookup by Jorj Software
- Co.
- Index: hotkeys;JORJ
- --------K-16AF20BX4B33-----------------------
- INT 16 - K3PLUS v6.00+ (API v2.0+) - GET EXTENDED BUFFER STATE
- AX = AF20h
- BX = 4B33h ('K3')
- Return: AX = K3 version (same as returned in BX by AX=AF4Dh)
- ES:BX -> extended keyboard buffer start
- ES:DX -> extended keyboard buffer end
- ES:SI -> next keystroke
- ES:DI -> last keystroke in buffer
- CX = number of keystrokes in buffer
- Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
- Frinke, originally based on the K3 extended German keyboard driver
- by Martin Gerdes published in c't magazine in 1988
- Note: this function replaces the identical function AH=20h"K3"
- SeeAlso: AH=20h"K3",AX=AF25h,AX=AF4Dh,AX=AF50h,INT 2F/AX=ED58h
- --------K-16AF25BX4B33-----------------------
- INT 16 - K3PLUS v6.00+ (API v2.0+) - COPY INTO EXTENDED BUFFER
- AX = AF25h
- BX = 4B33h ('K3')
- CX = number of keystrokes to copy
- ES:SI -> buffer containing keystrokes
- Return: CF clear if successful
- CF set on error (i.e. buffer full)
- CX = number of keystrokes NOT transferred
- ES:SI -> first keystroke not transferred
- Note: this function replaces the identical function AH=25h"K3"
- SeeAlso: AH=25h"K3",AX=AF20h,AX=AF4Dh,AX=AF50h,INT 2F/AX=D44Fh/BX=0001h
- --------K-16AF4DBX4B33-----------------------
- INT 16 - K3PLUS v6.00+ (API v2.0+) - GET VERSION INFORMATION
- AX = AF4Dh
- BX = 4B33h ('K3')
- Return: AL = 50h if installed
- BX = K3 version
- DX = API version
- ES:CX -> K3 structure (version-dependent) (see #00608)
- Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
- Frinke, originally based on the K3 extended German keyboard driver
- by Martin Gerdes published in c't magazine in 1988
- SeeAlso: AX=AF20h,AX=AF50h,AX=AF80h,AX=AF82h/BX=4B33h,INT 2F/AX=D44Fh/BX=0000h
- SeeAlso: INT 2F/AX=ED58h
- Index: installation check;K3PLUS
- Format of internal K3 structure:
- Offset Size Description (Table 00608)
- 00h 3 BYTEs signature "K3$"
- 03h BYTE length of structure, including this byte and signature
- 04h WORD compiler switch option flags A (see #00609)
- 06h WORD compiler switch option flags B (see #00610)
- 08h BYTE internal flags A (see #00611)
- 09h BYTE internal flags B (see #00612)
- 0Ah WORD DOS version recorded at startup
- 0Ch WORD "ActTypeSpeed"
- 0Eh WORD last Keyboard-ID sent
- 41ABh translated, 83ABh native (pass-through)
- 10h WORD offset of K3TAB Special
- 12h WORD offset of K3TAB German
- 14h WORD offset of K3TAB Alt
- 16h WORD offset of K3TAB AltGr
- 18h WORD offset of K3TAB Ctrl
- 1Ah WORD offset of K3TAB NPad
- 1Ch WORD offset of K3TAB CtrlNPad
- 1Eh WORD offset of K3TAB AltNPad
- 20h WORD offset of K3TAB ApoTbl or 0000h
- 22h WORD offset of K3TAB UmlautTbl or 0000h
- 24h WORD offset of K3TAB UmlautTblExp or 0000h
- 26h WORD length of video mode table
- 28h WORD offset of VidMdTbl or 0000h
- 2Ah BYTE '$' end marker
- Bitfields for K3PLUS compiler switch option flags A:
- Bit(s) Description (Table 00609)
- 15 GuINT16Fct2 (general use of INT 16 function 2)
- 14 Int15df (INT 15 has to be predefined)
- 13 GuAltNP (general use of Alt Numpad)
- 12 SupAT (ATs+ supported)
- 11 GuINT16Fct3 (general use of INT 16 function 3)
- 10 GuINT16Ret (general use of INT16 bad function return)
- 9-8 Layout (0-2, 3 reserved; 0=PC, 1=AT, 2=MF)
- 7 ForceMF (force MF decode without read-ID)
- 6 KXlate (translate keys for special keyboard)
- 5 UmlautX (umlaut translation capability included)
- 4 ApoX (translate apostrophe)
- 3 DoINT16 (INT 16 handler included)
- 2 UseCC (CopyCursor included)
- 1-0 UseEB
- 0=no extended keystroke buffer, 1=reserve mem, 2=use PSP, 3=reserved
- Bitfields for K3 compiler switch option flags B:
- Bit(s) Description (Table 00610)
- 15-11 reserved (0)
- 10 CtrlSeq (Ctrl macro capability included)
- 9-8 SupINT16fct55FE
- 6 DoInstallCheck (check for double installation)
- 5 SupINT16fct5PcJr (INT 16/AH=05h"PCjr" supported)
- 4 SendOut (sound and message output supported)
- 3 SupInt16fct5500 (INT 16/AX=5500h supported)
- 2 GuINT15Fct4F (calls to INT 15/AH=4Fh supported)
- 1-0 UseBufferStart (0=use standard area, 1=set standard area,
- 2=use internal indexes, 3=reserved)
- Bitfields for K3 internal flags A:
- Bit(s) Description (Table 00611)
- 7 DoingUmlautExp
- 6 CallINT15fct4F
- 5 Beep1 (requires SendOut set in option flags B)
- 4 ATflag (set for AT, 386, PS/2 Models 50-80)
- 3 XTflag (set for PC, PC/XT, Micromint PC, Pencock PC, PS/2 Model 30)
- 2 KeyClick
- 1 UmlautExp
- 0 UmlautTrans
- Bitfields for K3 internal flags B:
- Bit(s) Description (Table 00612)
- 7-5 reserved
- 4 TranslateE0 enabled
- 3 Boot enabled
- 2 PrintScreen enabled
- 1 Break enabled
- 0 ApoPendingBeep
- --------K-16AF50BX4B33-----------------------
- INT 16 - K3PLUS v6.00+ (API v2.0+) - CHECK IF FUNCTION SUPPORTED
- AX = AF50h
- BX = 4B33h ('K3')
- CH = function
- 00h get function flags
- CL = 00h
- Return: CX = supported function flags (see #00613)
- nonzero reserved for extensions
- SeeAlso: AX=AF20h,AX=AF4Dh,AX=AF51h,AX=AF80h
- Bitfields for K3PLUS supported function list:
- Bit(s) Description (Table 00613)
- 0 function 4Dh supported
- 1 function 50h supported
- 2-3 reserved (0)
- 4 function 20h supported
- 5 function 25h supported
- 6 function 51h supported
- 7 reserved (0)
- 8 function 80h supported
- 9 function 81h supported
- 10 function 82h supported
- 11-15 reserved (0)
- --------K-16AF51BX4B33-----------------------
- INT 16 - K3PLUS v6.00+ (API v2.00+) - SET OPTIONS
- AX = AF51h
- BX = 4B33h ('K3')
- CX = switches
- Return: AL = status
- 00h done
- CX = previous switch settings
- 01h switch not supported
- FFh other error
- SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h
- --------K-16AF80BX4B33-----------------------
- INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 09h VECTOR
- AX = AF80h
- BX = 4B33h ('K3')
- Return: AL = status
- 00h not supported
- 81h if successful
- ES:CX -> original INT 09 handler
- SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF81h,AX=AF82h
- --------K-16AF81BX4B33-----------------------
- INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 16h HANDLER
- AX = AF81h
- BX = 4B33h ('K3')
- Return: AL = status
- 00h not supported
- 82h if successful
- ES:CX -> original INT 16 handler
- SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h,AX=AF82h
- --------K-16AF82BX4B33-----------------------
- INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 10h HANDLER
- AX = AF82h
- BX = 4B33h ('K3')
- Return: AL = status
- 00h not supported
- 83h if successful
- ES:CX -> original INT 10 handler
- Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
- Frinke, originally based on the K3 extended German keyboard driver
- by Martin Gerdes published in c't magazine in 1988
- SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h,AX=AF81h,INT 2F/AX=ED58h
- --------m-16B0B1-----------------------------
- INT 16 - VGARAM v1.00 - INSTALLATION CHECK
- AX = B0B1h
- ES:DI -> 6 byte signature "VGARAM"
- Return: AX = B1B0h if installed,
- DS:BX -> VGARAM Status byte: 0 = OFF, 1 = ON
- Program: VGARAM is a utility by Brett Warthen which makes VGA memory which is
- not used in text modes available for DOS
- --------K-16CA--BX736B-----------------------
- INT 16 - CtrlAlt Associates STACKEY.COM v3.00 - API
- AH = CAh
- BX = 736Bh ("sk")
- CX = 736Bh
- AL = function
- 00h installation check
- Return: DX = words available in keyboard buffer
- 01h place keystroke in buffer
- DX = keystroke (DH = scan code, DL = ASCII character)
- Return: DX = words available in keyboard buffer
- FFFFh on error
- 02h flush STACKEY and BIOS keyboard buffers
- Return: AX = CAFFh if installed
- BX = segment of resident code
- CX = STACKEY version (CH = major, CL = minor)
- Program: STACKEY is a shareware keyboard-input faking TSR
- Index: installation check;STACKEY
- --------V-16CA00BX6570-----------------------
- INT 16 - CtrlAlt Associates EGAPAL.COM v1.00 - INSTALLATION CHECK
- AX = CA00h
- BX = 6570h ("ep")
- CX = 6570h
- Return: AX = CAFFh if installed
- BX = segment of resident code
- CX = ??? (0090h)
- Program: EGAPAL is a TSR supplied with STACKEY which makes EGA palette
- settings permanent across mode switches
- SeeAlso: AX=CA00h/BX=7670h
- --------V-16CA00BX7670-----------------------
- INT 16 - CtrlAlt Associates VGAPAL.COM v1.00 - INSTALLATION CHECK
- AX = CA00h
- BX = 7670h ("vp")
- CX = 7670h
- Return: AX = CAFFh if installed
- BX = segment of resident code
- CX = ??? (0090h)
- Program: VGAPAL is a TSR supplied with STACKEY which makes VGA palette
- settings permanent across mode switches
- SeeAlso: AX=CA00h/BX=6570h
- --------U-16CB00-----------------------------
- INT 16 - PUPClip v1.12+ - INSTALLATION CHECK
- AX = CB00h
- Return: BX = 4342h if installed
- AX = version (AH = major version, AL = BCD minor version)
- Program: PUPClip is the freeware PopUP Clipboard for DOS and Windows DOS
- sessions by SkullC0DEr
- SeeAlso: AX=CB01h,AX=CB02h,AX=CB03h,AX=CB04h,AX=CB05h,AX=CB06h,AX=CB08h
- SeeAlso: INT 2F/AX=1701h
- --------U-16CB01-----------------------------
- INT 16 - PUPClip v1.12+ - GET CLIPBOARD CURSOR POSITION
- AX = CB01h
- Return: BL = column (0-79)
- BH = row (0-49)
- SeeAlso: AX=CB00h,AX=CB02h,AX=CB03h
- --------U-16CB02-----------------------------
- INT 16 - PUPClip v1.12+ - SET CLIPBOARD CURSOR POSITION
- AX = CB02h
- BL = column (0-79)
- BH = row (0-49)
- Return: CF clear if successful
- CF set on error (invalid position)
- SeeAlso: AX=CB00h,AX=CB01h,AX=CB04h
- --------U-16CB03-----------------------------
- INT 16 - PUPClip v1.12+ - GET CHARACTER FROM CURRENT CLIPBOARD CURSOR POSITION
- AX = CB03h
- Return: BL = ASCII character at current position
- SeeAlso: AX=CB00h,AX=CB02h,AX=CB04h,INT 2F/AX=1705h
- --------U-16CB04-----------------------------
- INT 16 - PUPClip v1.12+ - WRITE CHARACTER TO CURRENT CLIPBOARD CURSOR POSITION
- AX = CB04h
- BL = ASCII character to store
- SeeAlso: AX=CB00h,AX=CB02h,AX=CB03h,AX=CB05h,INT 2F/AX=1703h
- --------U-16CB05-----------------------------
- INT 16 - PUPClip v1.12+ - CLEAR CLIPBOARD CONTENTS
- AX = CB05h
- Return: nothing
- SeeAlso: AX=CB00h,AX=CB04h,AX=CB06h,AX=CB07h,INT 2F/AX=1702h
- --------U-16CB06-----------------------------
- INT 16 - PUPClip v1.12+ - SCROLL UP CLIPBOARD CONTENTS
- AX = CB06h
- Return: nothing
- SeeAlso: AX=CB00h,AX=CB05h,AX=CB07h
- --------U-16CB07-----------------------------
- INT 16 - PUPClip v1.12+ - SCROLL DOWN CLIPBOARD CONTENTS
- AX = CB07h
- Return: nothing
- SeeAlso: AX=CB00h,AX=CB05h,AX=CB06h
- --------U-16CB08-----------------------------
- INT 16 - PUPClip v1.12+ - POP UP
- AX = CB08h
- Return: CF clear if successful
- CF set on error (unsupported video mode)
- SeeAlso: AX=CB00h
- --------U-16D724CX00CB-----------------------
- INT 16 U - APCAL v3.20 - GET ???
- AX = D724h
- CX = 00CBh
- Return: AX = 0000h
- BX = 0000h
- DX:CX -> ??? or 0000h:0000h
- Program: APCAL is an optionally-resident shareware appointment calendar by
- Gamma Software
- SeeAlso: AX=3577h,AX=D724h/CX=00CCh,AX=D724h/CX=00CDh
- --------U-16D724CX00CC-----------------------
- INT 16 U - APCAL v3.20 - GET ???
- AX = D724h
- CX = 00CCh
- Return: AX = 0000h
- BX = 0000h
- DX:CX -> ??? (apparently an internal data area)
- SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CDh
- --------U-16D724CX00CD-----------------------
- INT 16 U - APCAL v3.20 - GET ???
- AX = D724h
- CX = 00CDh
- Return: AX = ??? (5345h seen)
- SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CCh
- --------v-16DD--------------------------
- INT 16 - VIRUS - "Frumble" - INSTALLATION CHECK
- AH = DDh
- Return: AL = DDh if resident
- SeeAlso: INT 13/AX=FD50h,INT 21/AX=010Fh,INT 21/AX=0B56h
- --------s-16DFDF-----------------------------
- INT 16 U - Corel PowerSCSI - FDAUDIO.COM - INSTALLATION CHECK
- AX = DFDFh
- Return: ES:DI -> ASCII signature "FDAUDIO/CD" followed by ASCII date, i.e.
- "06/18/93" if installed
- --------b-16E000-----------------------------
- INT 16 - AMI BIOS - BIOS-FLASH Interface - GET VERSION NUMBER
- AX = E000h
- Return: CF clear if successful
- AL = FAh
- BX = version number (BCD) (0200h = v2.00)
- CF set on error (not implemented)
- Notes: this interface is available on AMI BIOSes built from AMI core version
- 8/8/93 (HiFlex BIOS) or 11/15/93 (WinBIOS) or later
- the "Meningitis" virus uses this API when attacking a system equipped
- with an AMI BIOS; it is supposedly able to write itself into the
- Flash ROM and thus make itself part of the BIOS
- SeeAlso: AX=E001h,AX=E004h,AX=E006h,AX=E008h,AX=E00Ah,AX=E00Bh,AX=E0FFh
- --------b-16E001-----------------------------
- INT 16 - AMI BIOS - BIOS-FLASH Interface - GET CHIPSET SAVE/RESTORE SIZE
- AX = E001h
- Return: CF clear if successful
- AL = FAh
- BX = number of bytes required to save chipset configuration
- CF set on error
- SeeAlso: AX=E000h,AX=E002h,AX=E003h
- --------b-16E002-----------------------------
- INT 16 - AMI BIOS - BIOS-FLASH Interface - SAVE CHIPSET STATUS & PREPARE CHPSET
- AX = E002h
- ES:DI -> buffer for storing chipset status
- Return: CF clear if successful
- AL = FAh
- CF set on error
- SeeAlso: AX=E000h,AX=E001h,AX=E003h
- --------b-16E003-----------------------------
- INT 16 - AMI BIOS - BIOS-FLASH Interface - RESTORE CHIPSET STATUS
- AX = E003h
- ES:DI -> buffer in which chipset status was previously stored
- Return: CF clear if successful
- AL = FAh
- CF set on error
- SeeAlso: AX=E000h,AX=E001h,AX=E002h
- --------b-16E004-----------------------------
- INT 16 - AMI BIOS - BIOS-FLASH Interface - LOWER PROGRAMMING VOLTAGE Vpp
- AX = E004h
- Return: CF clear if successful
- AL = FAh
- CF set on error
- Note: this function does not return until the voltage level stabilizes
- SeeAlso: AX=E000h,AX=E005h,AX=E006h
- --------b-16E005-----------------------------
- INT 16 - AMI BIOS - BIOS-FLASH Interface - RAISE PROGRAMMING VOLTAGE Vpp
- AX = E005h
- Return: CF clear if successful
- AL = FAh
- CF set on error
- Note: this function does not return until the voltage level stabilizes
- SeeAlso: AX=E000h,AX=E004h,AX=E007h
- --------b-16E006-----------------------------
- INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH WRITE PROTECT
- AX = E006h
- Return: CF clear if successful
- AL = FAh
- CF set on error
- Note: this function performs any delay required to allow the Flash ROM to
- stabilize in the write-protected state
- SeeAlso: AX=E000h,AX=E004h,AX=E007h
- --------b-16E007-----------------------------
- INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH WRITE ENABLE
- AX = E007h
- Return: CF clear if successful
- AL = FAh
- CF set on error
- Note: this function performs any delay required to allow the Flash ROM to
- stabilize in the write-enabled state
- SeeAlso: AX=E000h,AX=E005h,AX=E006h,AX=E008h
- --------b-16E008-----------------------------
- INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH SELECT
- AX = E008h
- Return: CF clear if successful
- AL = FAh
- CF set on error
- Desc: select the Flash ROM if the system contains both EPROM and Flash ROM
- Note: this function performs any delay required to allow the Flash ROM to
- stabilize in the selected state; if no EPROM is present, this
- function always returns successfully
- SeeAlso: AX=E000h,AX=E007h,AX=E009h
- --------b-16E009-----------------------------
- INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH DE-SELECT
- AX = E009h
- Return: CF clear if successful
- AL = FAh
- CF set on error
- Desc: select the EPROM if the system contains both EPROM and Flash ROM
- Note: this function performs any delay required to allow the Flash ROM to
- stabilize in the de-selected state; if no EPROM is present, this
- function always returns successfully
- SeeAlso: AX=E000h,AX=E006h,AX=E008h
- --------b-16E00A-----------------------------
- INT 16 - AMI BIOS - BIOS-FLASH Interface - VERIFY ALLOCATED MEMORY
- AX = E00Ah
- BX = number of paragraphs
- ES = starting segment of memory
- Return: CF clear if successful
- AL = FAh
- CF set on error
- Desc: determine whether the specified memory may be used for flash
- programming
- Note: always returns error if BX is zero on entry
- SeeAlso: AX=E000h,AX=E00Bh
- --------b-16E00B-----------------------------
- INT 16 - AMI BIOS - BIOS-FLASH Interface - SAVE INTERNAL CACHE STATUS
- AX = E00Bh
- ES:DI -> buffer for internal cache status (minimum 4Kbytes)
- Return: CF clear if successful
- AL = FAh
- CF set on error
- Note: always returns error if the hardware does not contain internal
- cache or this call is made in protected mode
- SeeAlso: AX=E000h,AX=E00Ah,AX=E00Ch
- --------b-16E00C-----------------------------
- INT 16 - AMI BIOS - BIOS-FLASH Interface - RESTORE INTERNAL CACHE STATUS
- AX = E00Ch
- ES:DI -> buffer containing internal cache status (minimum 4Kbytes)
- Return: CF clear if successful
- AL = FAh
- CF set on error
- Note: always returns error if the hardware does not contain internal
- cache or this call is made in protected mode
- SeeAlso: AX=E000h,AX=E00Bh
- --------t-16E0E0-----------------------------
- INT 16 - TurboPower TSRs - ALTERNATE INSTALLATION CHECK
- AX = E0E0h
- Return: AX = 1F1Fh if installed
- DWORD 0040h:00F0h -> last data block in TSR list (see #00615)
- Note: the returned TSR list provides support for communication among TSRs
- built with TurboPower's Turbo Professional and Object Professional
- libraries for Turbo Pascal
- SeeAlso: AX=F0F0h
- --------b-16E0FF-----------------------------
- INT 16 - AMI BIOS - BIOS-FLASH Interface - GENERATE CPU RESET
- AX = E0FFh
- Return: never
- SeeAlso: AX=E000h,INT 14/AH=17h"FOSSIL"
- --------U-16ED--BHED-------------------------
- INT 16 - BORLAND TURBO LIGHTNING - API
- AH = EDh
- BH = EDh
- BL = function
- 00h installation check
- Return: AX = 5205h
- CH = major version
- CL = minor version
- 01h identical to function 00h???
- 02h get resident data segment
- Return: AX = data segment of resident portion
- 03h get resident ???
- Return: AX = offset of some buffer in resident code seg
- 04h redefine auxiliary dictionary
- DS:SI -> counted filename string
- Return: AL = result code
- 05h select active environment
- AL = environment (00h to 0Ch)
- Return: AX = status
- 0000h if OK
- 0001h if out of range
- 06h toggle AutoProof???
- AL = state (00h off, 01h on)
- 07h ???
- 08h ???
- AL = char???
- CX = ???
- DX = ???
- Return: AX = 0, 1 or 2
- 09h ???
- 0Ah ???
- CX = ???
- DX = ???
- Return: AX = ???
- 0Bh check dictionary integrity???
- DS:SI -> counted dictionary filename string
- Return: AX = 0, 40h, 80h
- 0Ch spellcheck string (disk dictionary, possibly RAM dict as well)
- DS:SI -> counted string to check
- Return: AH = 0
- AL = result code
- 00h string found in dictionary
- 20h string begins more than one word
- 40h string not found
- 0Dh set ???
- (sets an internal flag)
- 0Eh spellcheck string (RAM dictionary only)
- DS:SI -> counted string to check
- Return: AH = 00h
- AL = result code
- 00h string found in dictionary
- 01h string not found
- 02h ???
- 0Fh ???
- 10h ???
- Notes: AX in general returns an error code from most functions.
- Index: installation check;Turbo Lightning
- --------U-16EF-------------------------------
- INT 16 - CALCULATOR - INSTALLATION CHECK
- AH = EFh
- Return: AX = 0088h if installed
- Program: CALCULATOR is a shareware popup calculator by Andrzej Brzezinski and
- Marek Kosznik
- --------b-16F0-------------------------------
- INT 16 - Compaq 386 and newer - SET CPU SPEED
- AH = F0h
- AL = speed code (see #00614)
- if AL=09h,
- CX = speed value, 1 (slowest) to 50 (full), 3 ~= 8088
- Note: also supported by some versions of AMI BIOS dated June 1992 or later;
- speed codes 0 or 1 are used for Low Speed, 2 for High Speed
- SeeAlso: AH=F1h,AH=F3h
- (Table 00614)
- Values for speed code:
- 00h equivalent to 6 MHz 80286 (COMMON)
- 01h equivalent to 8 MHz 80286 (FAST)
- 02h full 16 MHz (HIGH)
- 03h toggles between 8 MHz-equivalent and speed set by system board switch
- (AUTO or HIGH)
- 08h full 16 MHz except 8 MHz-equivalent during floppy disk access
- 09h specify speed directly
- --------t-16F0F0-----------------------------
- INT 16 - TurboPower TSRs - INSTALLATION CHECK
- AX = F0F0h
- Return: AX = 0F0Fh if installed
- ES:DI -> last data block in TSR list (see #00615)
- Note: the returned TSR list provides support for communication among TSRs
- built with TurboPower's Turbo Professional and Object Professional
- libraries for Turbo Pascal
- SeeAlso: AX=E0E0h
- Format of TurboPower TSR data block:
- Offset Size Description (Table 00615)
- 00h DWORD pointer to program tag (counted ASCII string)
- 04h WORD interface version number (0400h)
- 06h DWORD pointer to command entry point
- 0Ah DWORD pointer to previous data block (0000h:0000h if none)
- 0Eh DWORD pointer to next data block (0000h:0000h if none)
- ---swappable TSRs only---
- 12h DWORD pointer to swapping data
- 16h DWORD pointer to user data
- more???
- --------b-16F1-------------------------------
- INT 16 - Compaq 386 and newer - READ CURRENT CPU SPEED
- AH = F1h
- Return: AL = speed code (see #00614)
- if AL = 09h, CX = speed code
- Note: also supported by some versions of AMI BIOS dated June 1992 or later
- SeeAlso: AH=F0h,AH=F3h
- --------b-16F2-------------------------------
- INT 16 - Compaq 386 and newer - DETERMINE ATTACHED KEYBOARD TYPE
- AH = F2h
- Return: AL = type
- 00h if 11-bit AT keyboard is in use
- 01h if 9-bit PC keyboard is in use
- AH = 00h (04/08/93 system ROM)
- SeeAlso: MEM 0040h:00C2h
- --------b-16F3-------------------------------
- INT 16 - Compaq 80286s - SET CPU SPEED LIMIT (OVERRIDE JUMPER)
- AH = F3h
- AL = new limit
- 00h limit is 6 Mhz
- 01h limit is 8 Mhz/6 Mhz
- SeeAlso: AH=F0h,AH=F1h
- --------U-16F398-----------------------------
- INT 16 U - NORTON GUIDES - INSTALLATION CHECK
- AX = F398h
- Return: AX = 6A73h ("js")
- BH = BIOS scan code of current hot key
- BL = ASCII code of current hot key
- Note: NG.EXE was written by John Socha
- --------b-16F400-----------------------------
- INT 16 - Compaq Systempro and higher - CACHE CONTROLLER STATUS
- AX = F400h
- Return: AH = E2h (*)
- AL = status
- 00h not present
- 01h enabled
- 02h disabled
- CX = cache memory size
- bit 15: cache size information is NOT valid
- bits 14-0: cache memory size in kilobytes
- DH = cache write technology
- bit 7: cache write information is NOT valid
- bits 6-1: reserved (0)
- bit 0: 0 = Write-through caching
- 1 = Write-back caching
- DL = cache type
- bit 7: cache type information is NOT valid
- bits 6-1: reserved (0)
- bit 0: 0 = Direct mapped
- 1 = Two-way set-associative
- Notes: also supported by some versions of AMI BIOS dated June 1992 or later
- many (most) BIOSes return a modified AH when called for an unsupported
- or non-keyboard function (typically, the highest supported keyboard
- function [normally 12h] is subtracted from the original AH)
- SeeAlso: AX=F401h,AX=F402h
- --------b-16F401-----------------------------
- INT 16 - Compaq Systempro and higher - ENABLE CACHE CONTROLLER
- AX = F401h
- Return: AX = E201h
- Notes: also supported by some versions of AMI BIOS dated June 1992 or later
- many (most) BIOSes return a modified AH when called for an unsupported
- or non-keyboard function (typically, the highest supported keyboard
- function [normally 12h] is subtracted from the original AH)
- SeeAlso: AX=F400h,AX=F402h
- --------b-16F402-----------------------------
- INT 16 - Compaq Systempro and higher - DISABLE CACHE CONTROLLER
- AX = F402h
- Return: AX = E202h
- Notes: also supported by some versions of AMI BIOS dated June 1992 or later
- many (most) BIOSes return a modified AH when called for an unsupported
- or non-keyboard function (typically, the highest supported keyboard
- function [normally 12h] is subtracted from the original AH)
- SeeAlso: AX=F400h,AX=F401h
- --------v-16FA00DX5945-----------------------
- INT 16 U - PC Tools v8+ VSAFE, VWATCH - INSTALLATION CHECK
- AX = FA00h
- DX = 5945h
- Return: CF clear
- DI = 4559h
- BX = BIOS hotkey scancode (default 2F00h) (VSAFE only)
- FFFFh if disabled
- Note: MS-DOS 6.0 bundles VSAFE and VWATCH as part of its virus protection
- SeeAlso: AX=FA05h,INT 13/AH=FAh,INT 21/AH=FAh"VDEFEND",INT 2F/AX=6282h
- --------v-16FA01DX5945-----------------------
- INT 16 U - PC Tools v8+ VSAFE, VWATCH - UNINSTALL
- AX = FA01h
- DX = 5945h
- Return: CF clear if successful
- DI = 4559h
- SeeAlso: AX=FA00h
- --------v-16FA02DX5945-----------------------
- INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET/SET OPTIONS
- AX = FA02h
- DX = 5945h
- BL = new parameter flags (see #00616)
- Return: CF clear
- DI = 4559h
- CL = old value of parameter flags
- Bitfields for VSAFE/VWATCH parameter flags:
- Bit(s) Description (Table 00616)
- 7 Protect executable files
- 6 Protect FD boot sector
- 5 Protect HD boot sector
- 4 Boot sector viruses
- 3 Check executable files
- 2 General write protect
- 1 Resident
- 0 HD Low level format
- --------v-16FA03DX5945-----------------------
- INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET ???
- AX = FA03h
- DX = 5945h
- Return: CF clear
- DI = 4559h
- AX = 0002h
- --------v-16FA04DX5945-----------------------
- INT 16 U - PC Tools v8+ VSAFE - GET HOTKEY DISABLE FLAG
- AX = FA04h
- DX = 5945h
- Return: CF clear
- DI = 4559h
- BL = hotkey disable flag (nonzero if hotkey disabled)
- Note: this function is a NOP under VWATCH, merely returning CF clear/DI=4559h
- SeeAlso: AX=FA00h,AX=FA05h
- --------v-16FA05DX5945-----------------------
- INT 16 U - PC Tools v8+ VSAFE - SET HOTKEY DISABLE FLAG
- AX = FA05h
- DX = 5945h
- BL = new value of hotkey disable flag (nonzero to disable hotkey)
- Return: CF clear
- DI = 4559h
- Note: this function is a NOP under VWATCH, merely returning CF clear/DI=4559h
- SeeAlso: AX=FA00h,AX=FA04h
- --------v-16FA06DX5945-----------------------
- INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET NETWORK DRIVES TEST FLAG
- AX = FA06h
- DX = 5945h
- Return: CF clear
- DI = 4559h
- BL = test status
- 00h don't monitor network drives (default for VWATCH v2.1)
- FFh monitor network drives (default for VSAFE v2.0)
- CL = ??? (only VSAFE 2.0)
- SeeAlso: AX=FA07h
- --------v-16FA07DX5945-----------------------
- INT 16 U - PC Tools v8+ VSAFE, VWATCH - SET NETWORK DRIVES TEST FLAG
- AX = FA07h
- DX = 5945h
- BL = new state
- 00h don't monitor
- 01h monitor network drives
- Return: CF clear
- DI = 4559h
- Note: VWATCH v2.1 (from PC Tools 9.0) returns CF set instead
- SeeAlso: AX=FA00h,AX=FA06h
- --------v-16FA08DX5945-----------------------
- INT 16 U - PC Tools v9+ VWATCH v2.1 - ???
- AX = FA08h
- DX = 5945h
- Return: CF clear
- DI = 4559h
- AX = ??? (0002h)
- BX = version (BH=major, BL=two-digit minor)
- Note: this function is not supported by the PC Tools 9.0 VSAFE v2.0
- SeeAlso: AX=FA00h,AX=FA06h
- --------U-16FE55-----------------------------
- INT 16 U - PC Tools v8+ programs - GET ???
- AX = FE55h
- CX = segment of resident program or 0000h for last loaded
- DX = 0000h
- Return: DX = resident code segment (unchanged if CX=0000h on entry)
- AX = ??? or 0000h
- Note: this call is supported by CPSCHED, CPTASK, DATAMON, DPROTECT, DRIVEMAP,
- and DSKLIGHT beginning in PC Tools v8.0; programs other than CPTASK
- seem to hook it merely to return the same AX as the CPTASK loaded
- prior to them returned
- --------U-16FEA4-----------------------------
- INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - RESET ???
- AX = FEA4h
- Return: nothing
- Note: this function is identical to AX=FFA4h, and is implemented by the same
- code in DESKTOP
- SeeAlso: AX=FFA4h
- --------U-16FEC6-----------------------------
- INT 16 U - PC Tools v7+ CPSCHED - ENABLE/DISABLE CPSCHED API
- AX = FEC6h
- BL = new state (00h enabled, nonzero disabled)
- Return: nothing
- Desc: specify whether CPSCHED API calls other than this one and AX=FE55h will
- be honored
- --------U-16FED3-----------------------------
- INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - ???
- AX = FED3h
- DS:SI -> 92-byte data record for ???
- Return: ???
- Note: this function is identical to AX=FFD3h, and is implemented by the same
- code in DESKTOP
- SeeAlso: AX=FFD3h
- --------U-16FEDC-----------------------------
- INT 16 U - PC Tools v7+ CPSCHED - UNHOOK INTERRUPTS
- AX = FEDCh
- Return: AX,DX destroyed
- Index: uninstall;CPSCHED
- --------U-16FEEFCX0000-----------------------
- INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - INSTALLATION CHECK
- AX = FEEFh
- CX = 0000h
- Return: CX = ABCDh if PC Tools scheduler (CPSCHED or DESKTOP) installed
- BX = segment of resident portion
- DX = (CPSCHED v8.0) resident CS
- Note: this function is identical to AX=FFD3h, and is implemented by the same
- code in DESKTOP
- SeeAlso: AX=FFEFh
- --------U-16FEF1-----------------------------
- INT 16 U - PC Tools v7 only CPSCHED/DESKTOP - ALTERNATE INSTALLATION CHECK
- AX = FEF1h
- BX = ???
- Return: CX = 5555h if PC Tools scheduler (CPSCHED or DESKTOP) installed
- DX = 5555h
- Note: this function is identical to AX=FFD3h, and is implemented by the same
- code in DESKTOP
- SeeAlso: AX=FFF1h
- --------K-16FF-------------------------------
- INT 16 - KEYBOARD - KBUF extensions - ADD KEY TO TAIL OF KEYBOARD BUFFER
- AH = FFh
- DX = scan code
- Return: AL = status
- 00h success
- 01h failure
- Program: KBUF is a keyboard buffer expander by Mark Adler
- SeeAlso: AH=05h
- --------V-16FF-------------------------------
- INT 16 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - QUERY ZOOM INTERRUPT
- AH = FFh
- Return: AL = interrupt number to which BIOS keyboard handler has been relocated
- AL+1 = Zoom interrupt number
- BX = hotkey
- Notes: the default interrupts are 60h for keyboard and 61h for Zoom interrupt;
- the default hot key is F10
- not all vendors include the Tseng TSR which supports these functions
- SeeAlso: INT 61/AX=0000h"OPTIMA",INT 61/AX=0005h"OPTIMA"
- Index: hotkeys;OPTIMA 1024 VGA
- ----------16FF--BH00-------------------------
- INT 16 - FREEZE.COM - INSTALLATION CHECK
- AH = FFh
- BH = 00h
- Return: BH = FFh if installed
- Program: FREEZE is a PC Magazine utility
- --------d-16FF70BX0000-----------------------
- INT 16 U - PC Tools v8+ DRIVEMAP - INSTALLATION CHECK
- AX = FF70h
- BX = 0000h
- CX = 4C69h ('Li')
- DX = 6E6Bh ('nk')
- Return: AX = 0000h
- CX = 4350h ('CP')
- DH = major version
- DL = minor version
- Program: DRIVEMAP is a redirector which allows drives on computers connected
- over the parallel or serial ports to appear as local drives
- SeeAlso: AX=FF70h/BX=0001h,AX=FF70h/BX=0002h
- --------d-16FF70BX0001-----------------------
- INT 16 U - PC Tools v8+ DRIVEMAP - ???
- AX = FF70h
- BX = 0001h
- DL = ???
- Return: AX = ???
- DH = ???
- SeeAlso: AX=FF70h/BX=0000h,AX=FF70h/BX=0002h
- --------d-16FF70BX0002-----------------------
- INT 16 U - PC Tools v8+ DRIVEMAP - ???
- AX = FF70h
- BX = 0002h
- CX = ???
- DX = ???
- Return: AX = ??? or FFFEh/FFFFh on error
- DL = ???
- BUG: DRIVEMAP will branch to random locations for BX values other than
- those listed above for v8.0-9.0 because a) the incorrect register is
- range-tested, resulting in BX=0003h-5CD6h being accepted as valid
- function numbers, and b) the conditional which branches on invalid
- function numbers jumps to the following instruction, becoming a NOP
- SeeAlso: INT 2F/AX=9203h"DRIVEMAP"
- Index: installation check;DRIVEMAP
- --------T-16FF80BX0000-----------------------
- INT 16 U - PC Tools v8+ CPTASK - INSTALLATION CHECK
- AX = FF80h
- BX = 0000h
- CX = 0000h
- DX = 0000h
- Return: CX = 5555h if installed
- Program: CPTASK is a task switcher by Central Point Software
- --------T-16FF80BX0001-----------------------
- INT 16 U - PC Tools v8+ CPTASK - GET ???
- AX = FF80h
- BX = 0001h
- ???
- Return: DX:SI -> task list??? (ten entries of 70h bytes in v9.0)
- BX = ??? (PSP segment of resident code???)
- --------T-16FF80BX0002-----------------------
- INT 16 U - PC Tools v8+ CPTASK - GET ???
- AX = FF80h
- BX = 0002h
- Return: DX:SI -> ???
- --------T-16FF80BX0003-----------------------
- INT 16 U - PC Tools v8+ CPTASK - GET ??? FLAGS
- AX = FF80h
- BX = 0003h
- Return: AX = flags (see #00617)
- SeeAlso: AX=FF80h/BX=0004h,AX=FF80h/BX=0006h
- Bitfields for CPTASK flags:
- Bit(s) Description (Table 00617)
- 10 ???
- 13 ???
- 14 ???
- 15 ???
- --------T-16FF80BX0004-----------------------
- INT 16 U - PC Tools v8+ CPTASK - SET ???
- AX = FF80h
- BX = 0004h
- CX = new value of ???
- Return: ???
- Note: this function also sets bit 14 of the flags word returned by
- AX=FF80h/BX=0003h
- --------T-16FF80BX0005-----------------------
- INT 16 U - PC Tools v8+ CPTASK - GET NUMBER OF ACTIVE TASKS???
- AX = FF80h
- BX = 0005h
- Return: AX = number of active tasks???
- --------T-16FF80BX0006-----------------------
- INT 16 U - PC Tools v8+ CPTASK - GET AND CLEAR ??? FLAG
- AX = FF80h
- BX = 0006h
- Return: AX = old state (0000h clear, 0001h set)
- Note: the tested flag is bit 13 of the flags returned by AX=FF80h/BX=0003h
- --------T-16FF80BX0007-----------------------
- INT 16 U - PC Tools v8+ CPTASK - ???
- AX = FF80h
- BX = 0007h
- ES:DI -> ???
- ???
- Return: ???
- --------T-16FF80BX0008-----------------------
- INT 16 U - PC Tools v8+ CPTASK - ???
- AX = FF80h
- BX = 0008h
- ???
- Return: ???
- --------T-16FF80BX0009-----------------------
- INT 16 U - PC Tools v8+ CPTASK - GET ???
- AX = FF80h
- BX = 0009h
- Return: CL = ???
- CH = ??? (01h or 02h)
- --------T-16FF80BX000A-----------------------
- INT 16 U - PC Tools v9+ CPTASK - SET ???
- AX = FF80h
- BX = 000Ah
- DS:SI -> 128-byte buffer containing ???
- --------T-16FF80BX000B-----------------------
- INT 16 U - PC Tools v9+ CPTASK - SET ???
- AX = FF80h
- BX = 000Bh
- DX = index of ??? task (1-10)
- --------T-16FF80BX000C-----------------------
- INT 16 U - PC Tools v9+ CPTASK - SET IDLE??? DELAY
- AX = FF80h
- BX = 000Ch
- CX = new delay time in minutes
- --------T-16FF80BX4350-----------------------
- INT 16 U - PC Tools v8+ CPTASK - UNINSTALL
- AX = FF80h
- BX = 4350h ('CP')
- CX = 5354h ('ST')
- Return: never returns; terminates all tasks and exits to program originally
- calling CPTASK
- --------U-16FF90-----------------------------
- INT 16 U - PC Tools v8+ DESKTOP - ???
- AX = FF90h
- ???
- Return: ???
- Note: available only when popped up
- --------U-16FF91-----------------------------
- INT 16 U - PC Tools v7+ DESKTOP - ???
- AX = FF91h
- ???
- Return: AX = 0000h
- Note: calls AX=FFFDh after ???
- SeeAlso: AX=FF92h,AX=FFFDh
- --------U-16FF92-----------------------------
- INT 16 U - PC Tools v7+ DESKTOP - ???
- AX = FF92h
- ???
- Return: AX = 0000h
- Note: like AX=FF91h, but temporarily sets ??? to 3
- SeeAlso: AX=FF91h,AX=FFFDh
- --------U-16FF93-----------------------------
- INT 16 U - PC Tools v7+ DESKTOP - SET ??? FLAG
- AX = FF93h
- --------U-16FF94-----------------------------
- INT 16 U - PC Tools v7+ DESKTOP - SET ???
- AX = FF94h
- CX = ??? (default 0017h)
- --------U-16FF95-----------------------------
- INT 16 U - PC Tools v7+ DESKTOP - SET ???
- AX = FF95h
- BX = ???
- --------U-16FF96-----------------------------
- INT 16 U - PC Tools v7+ DESKTOP - ???
- AX = FF96h
- CL = ???
- Return: AX = ???
- --------U-16FF97-----------------------------
- INT 16 U - PC Tools v7+ DESKTOP - ???
- AX = FF97h
- DS:DX -> buffer for ??? (see #00618)
- Return: ???
- Format of PC Tools DESKTOP buffer:
- Offset Size Description (Table 00618)
- 00h 48 BYTEs ???
- 30h 128 BYTEs ???
- --------U-16FF98-----------------------------
- INT 16 U - PC Tools v7+ DESKTOP - OPEN \DESK.OVL FILE AND SEEK TO OVERLAY
- AX = FF98h
- DX = byte offset in file of overlay header (see #00619)
- Return: BX = file handle for DESK.OVL file
- Desc: open the DESK.OVL file, seek to the specified offset, read in the
- overlay header, and seek to the offset specified by the header
- Format of PC Tools DESKTOP overlay header:
- Offset Size Description (Table 00619)
- 00h 12 BYTEs NUL-padded ASCII overlay filename
- 0Ch DWORD offset within DESK.OVL file of actual overlay
- --------U-16FF99-----------------------------
- INT 16 U - PC Tools v7+ DESKTOP - ???
- AX = FF99h
- ???
- Return: ???
- --------U-16FF9A-----------------------------
- INT 16 U - PC Tools v7+ DESKTOP - GET NAME OF COLOR SCHEME
- AX = FF9Ah
- Return: ES:BX -> name of current color scheme
- Note: available even if not popped up
- --------U-16FF9B-----------------------------
- INT 16 U - PC Tools v7+ DESKTOP - UNUSED
- AX = FF9Bh
- Return: ???
- Note: sounds triple-length beep
- --------T-16FF9C-----------------------------
- INT 16 U - PC Tools v8+ CPTASK - SET/CLEAR ??? POINTER
- AX = FF9Ch
- BL = function
- 00h set ??? pointer
- DS:SI -> ???
- 01h clear pointer to 0000h:0000h
- ----------16FF9D-----------------------------
- INT 16 U - PC Tools v8+ CPTASK, VSAFE - ???
- AX = FF9Dh
- ES:BX -> ??? word
- Return: ???
- Note: if ES is non-zero, the word pointed at by ES:BX determines whether the
- ??? flag is cleared (word = 0000h) or set (word is nonzero). The
- flag is always cleared if ES=0000h.
- --------U-16FF9E-----------------------------
- INT 16 U - PC Tools v7+ DESKTOP - ???
- AX = FF9Eh
- DL = ???
- bit 7: ???
- bits 6-0: function number??? (00h,01h,other)
- ???
- Return: ???
- --------U-16FFA1-----------------------------
- INT 16 U - PC Tools v7+ DESKTOP - ???
- AX = FFA1h
- ???
- Return: ???
- Note: same as AX=FFA2h, except ??? set to FFh
- SeeAlso: AX=FFA2h
- --------U-16FFA2-----------------------------
- INT 16 U - PC Tools v7+ DESKTOP - ???
- AX = FFA2h
- ???
- Return: ???
- Note: calls AX=FFC7h (remove window) and AX=FFFDh
- SeeAlso: AX=FFA1h,AX=FFC7h,AX=FFFDh
- --------y-16FFA3BX0000-----------------------
- INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - INSTALLATION CHECK
- AX = FFA3h
- BX = 0000h
- CX = 0000h
- Return: AX = segment of resident code
- BX = 5555h
- CX = 5555h
- Note: also supported by DOS 6 UNDELETE which is licensed from PC Tools
- SeeAlso: INT 21/AH=3Fh"NB.SYS",INT 21/AX=4101h,INT 2F/AX=6284h
- --------y-16FFA3BX0001-----------------------
- INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
- AX = FFA3h
- BX = 0001h
- CX = 0001h
- Return: AX:BX -> ???
- CX = BX
- --------y-16FFA3BX0002-----------------------
- INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
- AX = FFA3h
- BX = 0002h
- CX = 0002h
- Return: AX = ??? (0 or 1)
- CX = BX = AX
- --------y-16FFA3BX0003-----------------------
- INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
- AX = FFA3h
- BX = 0003h
- CX = 0003h
- Return: AX = ??? (0 or 1)
- CX = BX = AX
- --------y-16FFA3BX0004-----------------------
- INT 16 U - PC Tools v7+ DATAMON - SET ??? FLAG
- AX = FFA3h
- BX = 0004h
- CX = 0004h
- SeeAlso: AX=FFA3h/BX=0005h
- --------y-16FFA3BX0005-----------------------
- INT 16 U - PC Tools v7+ DATAMON - CLEAR ??? FLAG
- AX = FFA3h
- BX = 0005h
- CX = 0005h
- SeeAlso: AX=FFA3h/BX=0004h
- --------y-16FFA3BX0006-----------------------
- INT 16 U - PC Tools v7+ DATAMON - SET PSP SEGMENT ???
- AX = FFA3h
- BX = 0006h
- CX = 0006h
- DX = current PSP segment as known to DOS??? or 0000h
- --------d-16FFA3BXFFA3-----------------------
- INT 16 U - PC Tools v9 DSKLIGHT - INSTALLATION CHECK
- AX = FFA3h
- BX = FFA3h
- CX = FFA3h
- Return: BX = CX = 5555h if installed
- AX = resident code segment
- Program: DSKLIGHT is a TSR included with PC Tools v9+ which displays a disk-
- access indicator on the screen; in v7 and v8, this function was
- provided by DATAMON
- Note: DSKLIGHT chains to the previous handler if BX or CX is not FFA3h
- --------U-16FFA4-----------------------------
- INT 16 U - PC Tools v7-8 DESKTOP - ???
- AX = FFA4h
- Return: ???
- Notes: available even when not popped up
- sets unknown flag if ??? conditions met
- SeeAlso: AX=FEA4h
- --------c-16FFA5CX1111-----------------------
- INT 16 - PC-Cache v6+ - INSTALLATION CHECK
- AX = FFA5h
- CX = 1111h
- Return: CH = 00h if installed
- ES:DI -> internal data (see #00620)
- CL = cache state
- 01h enabled
- 02h disabled
- SeeAlso: INT 13/AH=27h,INT 13/AH=A0h,INT 21/AH=2Bh/CX=4358h
- Format of PC-Cache internal data:
- Offset Size Description (Table 00620)
- -1Ch 20 BYTEs cached drive list, one byte per drive A: to T:
- each byte is either blank (20h) or drive letter (41h-54h)
- -8 BYTE ???
- -7 WORD number of physical transfers (scaled down to 0000h-7FFFh)
- -5 WORD number of saved transfers (scaled down to 0000h-7FFFh)
- -3 3 BYTEs ???
- --------c-16FFA5CXAAAA-----------------------
- INT 16 - PC-Cache v6+ - ENABLE DELAYED WRITES
- AX = FFA5h
- CX = AAAAh
- Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
- SeeAlso: AX=FFA5h/CX=CCCCh
- --------c-16FFA5CXCCCC-----------------------
- INT 16 - PC-Cache v6+ - FLUSH CACHE AND DISABLE DELAYED WRITES
- AX = FFA5h
- CX = CCCCh
- Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
- Note: delayed writes are automatically disabled on EXECing
- (see INT 21/AH=4Bh) a program named either WIN.CO? or DV.E??;
- however, delayed writes are not automatically reenabled upon the
- program's termination in v6.
- SeeAlso: AX=FFA5h/CX=AAAAh,AX=FFA5h/CX=FFFFh
- --------c-16FFA5CXDDDD-----------------------
- INT 16 - PC-Cache v6+ - FLUSH AND DISABLE CACHE
- AX = FFA5h
- CX = DDDDh
- SeeAlso: AX=FFA5h/CX=EEEEh,AX=FFA5h/CX=FFFFh
- --------c-16FFA5CXEEEE-----------------------
- INT 16 - PC-Cache v6+ - ENABLE CACHE
- AX = FFA5h
- CX = EEEEh
- SeeAlso: AX=FFA5h/CX=DDDDh
- --------c-16FFA5CXFFFF-----------------------
- INT 16 - PC-Cache v6+ - FLUSH CACHE
- AX = FFA5h
- CX = FFFFh
- SeeAlso: AX=FFA5h/CX=CCCCh,AX=FFA5h/CX=DDDDh,INT 13/AH=A1h
- --------U-16FFA6-----------------------------
- INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ???
- AX = FFA6h
- Return: DS:SI -> ???
- Note: available only when popped up
- --------U-16FFA7-----------------------------
- INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ??? PATH
- AX = FFA7h
- Return: DS:SI -> ASCIZ path (directory from which PCTools was run???)
- --------U-16FFA8-----------------------------
- INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
- AX = FFA8h
- DS:SI -> three consecutive ASCIZ strings for ??? (max 256 bytes total)
- ???
- Return: ???
- Notes: available only when popped up
- strings copied into internal buffer, among other actions
- --------U-16FFA9-----------------------------
- INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET VERSION STRING
- AX = FFA9h
- Return: DS:SI -> version string
- --------U-16FFAA-----------------------------
- INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
- AX = FFAAh
- ???
- Return: ???
- Note: available only when popped up
- --------U-16FFAB-----------------------------
- INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET EDITOR SETTINGS???
- AX = FFABh
- Return: DS:SI -> editor setting strings???
- --------U-16FFAC-----------------------------
- INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
- AX = FFACh
- DL = ???
- Note: available only when popped up
- --------U-16FFAD-----------------------------
- INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
- AX = FFADh
- DL = ???
- --------U-16FFAE-----------------------------
- INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ???
- AX = FFAEh
- Return: AL = ???
- --------U-16FFAF-----------------------------
- INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
- AX = FFAFh
- DL = ???
- --------U-16FFB0-----------------------------
- INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
- AX = FFB0h
- BL = ???
- --------U-16FFB1-----------------------------
- INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
- AX = FFB1h
- ???
- Return: ???
- --------U-16FFB2-----------------------------
- INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET ???
- AX = FFB2h
- Return: DS:SI -> ???
- --------U-16FFB3-----------------------------
- INT 16 U - PC Tools v5.5-8.0 DESKTOP - ???
- AX = FFB3h
- ???
- Return: ???
- Note: available only when popped up
- --------U-16FFB4-----------------------------
- INT 16 U - PC Tools v5.5-8.0 DESKTOP - SET ??? FLAG
- AX = FFB4h
- Note: available only when popped up
- SeeAlso: AX=FFBBh
- --------U-16FFB5-----------------------------
- INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET/SET WINDOW PARAMETERS
- AX = FFB5h
- BX = window specifier (000Fh to 0019h) (see #00621)
- DX = 0000h get, nonzero = set
- ES:DI -> window parameter buffer (see #00622)
- SeeAlso: AX=FFCBh
- (Table 00621)
- Values for PC Tools DESKTOP window specifier:
- 000Fh comm/FAX
- 0014h hotkey selection
- 0015h ASCII table
- 0016h system colors menu
- Format of PC Tools DESKTOP window parameters:
- Offset Size Description (Table 00622)
- 00h BYTE rows in window, not counting frame
- 01h BYTE columns in window, not counting frame
- 02h BYTE row number of top of window
- 03h BYTE 2*column number of left of window
- 04h BYTE character attribute for ???
- 05h BYTE character attribute for background/border
- 06h BYTE character attribute for ???
- 07h DWORD pointer to ??? on screen
- 0Bh 4 BYTEs ???
- 0Fh BYTE nonzero if window may be resized
- Note: if running in monochrome mode, character attributes at offsets 04h to
- 06h are stored unchanged, but attributes other than 07h, 0Fh, or 70h
- are changed to 07h on reading
- --------U-16FFB6-----------------------------
- INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET ???
- AX = FFB6h
- Return: AH = ???
- AL = ???
- --------U-16FFB7-----------------------------
- INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET/SET ???
- AX = FFB7h
- BX = direction
- 0000h copy to buffer
- else copy from buffer
- DS:SI -> 70-byte buffer with ???
- Return: data copied
- Note: available only when popped up under v6.0+
- --------U-16FFB8-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET/SET???
- AX = FFB8h
- BH = subfunction
- 00h get
- Return: BL = old value of ???
- CL = old value of ??? (v6.0+)
- CH = old value of ??? (v6.0+)
- nonzero set
- BL = new value for ???
- CL = new value for ??? (v6.0+)
- CH = new value for ??? (v6.0+)
- DH = ???
- Return: AL = old value replaced by CL (v6.0+)
- AH = old value replaced by CH (v6.0+)
- --------U-16FFB9-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
- AX = FFB9h
- ???
- Return: AX = ???
- CX = ???
- DS:SI -> ???
- ES:DI -> ???
- --------U-16FFBA-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
- AX = FFBAh
- ???
- Return: AX = ???
- Note: available only when popped up
- --------U-16FFBB-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - CLEAR ??? FLAG
- AX = FFBBh
- Note: available only when popped up
- SeeAlso: AX=FFB4h
- --------U-16FFBC-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - RESTORE ORIGINAL SCREEN???
- AX = FFBCh
- --------U-16FFBD-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? DATABASE INDEXING MESSAGES
- AX = FFBDh
- ???
- Return: ???
- --------U-16FFBE-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
- AX = FFBEh
- ???
- Return: ???
- Note: available only when popped up
- --------U-16FFBF-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
- AX = FFBFh
- BX = DOS file handle to write on
- ???
- Return: ???
- Note: available only when popped up
- --------U-16FFC0-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
- AX = FFC0h
- ???
- Return: AX = 0000h if successful
- AX = FFFFh on error
- Note: available only when popped up
- --------U-16FFC1-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
- AX = FFC1h
- BL = ???
- ES:DI -> data structure (see #00623)
- ???
- Return: AX = ???
- Note: available only when popped up
- SeeAlso: AX=FFC2h,AX=FFC3h
- Format of PC Tools DESKTOP data structure:
- Offset Size Description (Table 00623)
- 00h WORD ???
- 02h WORD ???
- 04h WORD ???
- 06h WORD ???
- 08h WORD ???
- 0Ah BYTE ???
- 0Bh BYTE ??? (zero/nonzero)
- ---v7.1---
- 0Ch WORD ???
- 0Eh BYTE ???
- 0Fh WORD ???
- 11h WORD ???
- ???
- --------U-16FFC2-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
- AX = FFC2h
- BL = ???
- ES:DI -> data structure (see #00623)
- ???
- Return: AH = ???
- CX = ???
- DH = ???
- DL = ???
- Note: available only when popped up
- SeeAlso: AX=FFC1h,AX=FFC3h
- --------U-16FFC3-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
- AX = FFC3h
- BL = ???
- ES:DI -> data structure (see #00623)
- ???
- Return: AH = ???
- CX = ???
- DH = ???
- DL = ???
- Note: available only when popped up
- SeeAlso: AX=FFC1h,AX=FFC2h
- --------U-16FFC4-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
- AX = FFC4h
- Return: AL = ???
- BX = segment of scratch space???
- CX = segment of stored screen data (section covered by window???)
- DX = segment of window parameters for ???
- ES:BP -> ???
- Note: available only when popped up in versions prior to 6.0
- --------U-16FFC5-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - CHECK WHETHER DESKTOP LOADED RESIDENT
- AX = FFC5h
- Return: BL = Desktop state
- 00h if nonresident
- nonzero if loaded resident
- Note: available only when popped up; should call AX=FFEFh first to ensure
- that DESKTOP is active
- SeeAlso: AX=FFEFh,AX=FFF3h
- --------U-16FFC6-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
- AX = FFC6h
- BL = new value for ???
- --------U-16FFC7-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - REMOVE WINDOW
- AX = FFC7h
- ???
- Return: ???
- --------U-16FFC8-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
- AX = FFC8h
- Return: DS:SI -> ???
- Note: valid only while popped up
- --------U-16FFC9-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - COPY DATA TO CLIPBOARD
- AX = FFC9h
- DS:SI -> characters to store in clipboard
- CX = size in bytes
- Return: CF set on error
- Notes: available only when popped up
- while copying, bytes of 00h and 0Ah are skipped
- --------U-16FFCA-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
- AX = FFCAh
- DX = ???
- Return: AX destroyed
- Note: available only when popped up
- --------U-16FFCB-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - SELECT WINDOW PARAMETERS???
- AX = FFCBh
- DX = window specifier???
- Return: AX destroyed
- Note: available only when popped up
- SeeAlso: AX=FFB5h
- --------U-16FFCC-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY ASCIZ STRING CENTERED IN WINDOW
- AX = FFCCh
- DS:SI -> ASCIZ string
- Return: AX = ???
- CX = ???
- ES:DI -> address past last character displayed (v5.1/5.5)
- -> ??? on menu bar (v6.0)
- --------U-16FFCD-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
- AX = FFCDh
- DS:DX -> ???
- Return: ???
- Note: available only when popped up
- --------U-16FFCE-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ??? DELAYS
- AX = FFCEh
- CX = ???
- Return: nothing???
- --------U-16FFCF-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - CLOSE PRINTER/PRINT FILE
- AX = FFCFh
- Note: available only when popped up
- --------U-16FFD0-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - PREPARE TO PRINT???
- AX = FFD0h
- ???
- Return: ???
- Note: available only when popped up
- --------U-16FFD1-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY PRINT OPTIONS MENU
- AX = FFD1h
- Return: BX = number of copies
- DX = destination
- 00h cancel
- 01h LPT1
- 02h LPT2
- 03h LPT3
- 04h COM1
- 05h COM2
- 06h disk file
- Note: available only when popped up
- --------U-16FFD2-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
- AX = FFD2h
- BX = ???
- Return: BL = ???
- Note: available only when popped up
- --------U-16FFD3-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
- AX = FFD3h
- DS:SI -> 92-byte data record for ???
- Return: ???
- SeeAlso: AX=FED3h
- --------U-16FFD4BH3C-------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - CREATE/OPEN/DELETE FILE
- AX = FFD4h
- BH = 3Ch create file (with no attributes)
- 3Dh open file
- 41h delete file
- BL = access mode
- 00h read only
- 01h write only
- 02h read/write
- DS:SI -> ASCIZ filename
- Return: BX = file handle
- 0000h on error
- Note: operation is attempted in (in order) the directory from which the
- desktop was started/run???, the directory specified with the
- filename, X:\PCTOOLS\, and X:\
- --------U-16FFD5-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
- AX = FFD5h
- ???
- Return: ???
- Note: available only when popped up
- --------U-16FFD6-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
- AX = FFD6h
- BX = ???
- CX = ???
- DX = offset in ???
- ???
- Return: ???
- Note: available only when popped up
- --------U-16FFD7-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
- AX = FFD7h
- ???
- Return: BL = ???
- Note: available only when popped up
- --------U-16FFD8-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - SAFE CREATE FILE
- AX = FFD8h
- DS:BX -> ASCIZ filename
- Return: BX = file handle
- 0000h on error
- Note: pops up confirmation menu if file already exists
- only available when popped up???
- --------U-16FFD9-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
- AX = FFD9h
- Return: AX = ???
- Note: available only when popped up
- --------U-16FFDA-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET NAME OF LAST FILE OPENED
- AX = FFDAh
- DS:SI -> ??? (v5.1/5.5 only)
- Return: DS:SI -> filename
- --------U-16FFDB-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
- AX = FFDBh
- BL = ???
- Note: available only when popped up
- --------U-16FFDC-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - UNHOOK
- AX = FFDCh
- Return: interrupt vectors 09h, 10h (v6.0+), 16h, 1Ch, and 21h restored to
- original values
- Index: uninstall;PC Tools DESKTOP
- --------U-16FFDDBX0000-----------------------
- INT 16 U - PC Tools v5.1+ PCShell API - INSTALLATION CHECK
- AX = FFDDh
- BX = 0000h
- Return: CX = 5555h
- DX = 5555h if PCShell installed in resident mode
- --------U-16FFDDBX0001-----------------------
- INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
- AX = FFDDh
- BX = 0001h
- Return: CF clear if request successful (PCShell will pop up)
- CF set on error
- SeeAlso: AX=FFDDh/BX=0003h
- --------U-16FFDDBX0002-----------------------
- INT 16 U - PC Tools v5.1-5.5 PCShell API - GET ???
- AX = FFDDh
- BX = 0002h
- Return: AL =
- 00h ???
- 01h ???
- Note: PCShell v6.0+ displays the error message "Incorrect PCRUN version",
- awaits a keystroke, and aborts the current process
- --------U-16FFDDBX0003-----------------------
- INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
- AX = FFDDh
- BX = 0003h
- SeeAlso: AX=FFDDh/BX=0001h
- --------U-16FFDDBX0004-----------------------
- INT 16 U - PC Tools v5.1+ PCShell API - GET ???
- AX = FFDDh
- BX = 0004h
- Return: CF clear if successful
- DS:SI -> ???
- --------U-16FFDDBX0005-----------------------
- INT 16 U - PC Tools v5.1+ PCShell API - ???
- AX = FFDDh
- BX = 0005h
- ???
- Return: ???
- Note: resets various variables if certain conditions are met
- --------U-16FFDDBX0006-----------------------
- INT 16 U - PC Tools v5.1+ PCShell API - ???
- AX = FFDDh
- BX = 0006h
- ???
- Return: ???
- Note: resets various variables if certain conditions are met
- --------U-16FFDDBX0007-----------------------
- INT 16 U - PC Tools v5.1+ PCShell API - SET ??? FLAG
- AX = FFDDh
- BX = 0007h
- Return: CF clear if successful
- SeeAlso: AX=FFDDh/BX=0008h
- --------U-16FFDDBX0008-----------------------
- INT 16 U - PC Tools v5.1+ PCShell API - CLEAR ??? FLAG
- AX = FFDDh
- BX = 0008h
- Return: CF undefined
- SeeAlso: AX=FFDDh/BX=0007h
- --------U-16FFDDBX0009-----------------------
- INT 16 U - PC Tools v6.0+ PCShell API - GET PCRUN PARAMETERS
- AX = FFDDh
- BX = 0009h
- Return: CF clear if successful
- DS:SI -> list of pointers (see #00624)
- Format of PC Tools PCShell returned pointer list:
- Offset Size Description (Table 00624)
- 00h WORD offset of WORD containing ???
- 02h WORD offset of name of program to execute
- 04h WORD offset of 80-byte buffer for ???
- 06h WORD offset of buffer for ??? (length in WORD preceding buffer)
- 08h WORD offset of buffer for ??? (length in WORD preceding buffer)
- --------U-16FFDDBX000A-----------------------
- INT 16 U - PC Tools v6.0+ PCRUN API - INSTALLATION CHECK
- AX = FFDDh
- BX = 000Ah
- Return: CX = 5555h if running
- DX = 5555h
- Note: also sets a flag
- --------U-16FFDDBX000B-----------------------
- INT 16 U - PC Tools v6.0+ PCRUN API - ???
- AX = FFDDh
- BX = 000Bh
- ???
- Return: CX = 5555h if PCRUN active
- DX = 5555h
- Note: also clears flag set by AX=FFDDh/BX=000Ah
- --------U-16FFDE-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY POPUP MENU
- AX = FFDEh
- DS:DX -> menu description (must be on a paragraph boundary)
- Return: AX = ???
- AL seems to be the number of the selected button
- Note: available only when popped up
- SeeAlso: AX=FFEEh
- --------U-16FFDF-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
- AX = FFDFh
- ???
- Return: ???
- --------U-16FFE0-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
- AX = FFE0h
- CX = ???
- DX = ???
- Note: available only when popped up
- --------U-16FFE1-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - BEEP
- AX = FFE1h
- --------U-16FFE2-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
- AX = FFE2h
- DX = ???
- Return: ???
- Note: available only when popped up
- --------U-16FFE3-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - PRINT CHARACTER
- AX = FFE3h
- BL = character to print to currently open printer or print file
- Return: CF set on error
- Note: available only when popped up
- SeeAlso: INT 17/AH=00h
- --------U-16FFE4-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
- AX = FFE4h
- DX = segment of ???
- Return: ???
- Note: available only when popped up
- --------U-16FFE5-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - POP UP FILE SELECTION MENU
- AX = FFE5h
- DS:SI -> ASCIZ wildcard filespec followed by ASCIZ menu title
- DX = segment of window parameters???
- Return: AX = DOS file handle for file
- DS:DX -> filename???
- FFFFh if function cancelled by user
- Note: available only when popped up
- SeeAlso: AX=FFDAh
- --------U-16FFE6-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - CHECK FOR AND GET KEYSTROKE
- AX = FFE6h
- Return: AX = 0000h if no key available
- else BIOS keycode
- Notes: available only when popped up
- invokes INT 28 idle interrupt before checking for key
- --------U-16FFE7-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
- AX = FFE7h
- BX = segment of ???
- Return: ???
- Note: available only when popped up
- --------U-16FFE8-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY NUMBER
- AX = FFE8h
- CX = number
- DH = attribute
- DS:SI -> destination for ASCII number
- Return: DS:SI buffer filled in with alternating characters and attributes
- --------U-16FFE9-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET FILE LIST???
- AX = FFE9h
- Return: BX = segment of file/directory list (14 bytes per file, NUL-padded)
- Note: available only when popped up
- --------U-16FFEA-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY COUNTED STRING
- AX = FFEAh
- DS:SI -> counted string (count byte followed by string)
- Return: ???
- Note: available only when popped up
- --------U-16FFEB-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
- AX = FFEBh
- ???
- Return: ???
- --------U-16FFEC-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET KEY
- AX = FFECh
- DS:SI -> FAR routine to ???
- BX = ???
- ???
- Return: AX = keystroke
- FFFFh if F10 pressed to go to menu
- Notes: available only when popped up
- invokes INT 28 while waiting for keystroke
- F10 is hotkey to Desktop menu
- Index: hotkeys;PC Tools DESKTOP
- --------U-16FFED-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
- AX = FFEDh
- Return: AX = ???
- Note: available only when popped up
- --------U-16FFEE-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE PULLDOWN MENUS
- AX = FFEEh
- DS:SI -> pulldown menu system description (see #00625)
- Return: AX destroyed
- Notes: available only when popped up
- if the accessory does not need any menu items of its own, it should
- call AX=FFFAh instead
- SeeAlso: AX=FFF7h,AX=FFFAh
- Format of PC Tools DESKTOP pulldown menu system description:
- Offset Size Description (Table 00625)
- 00h WORD offset of menu bar contents (counted string)
- 02h WORD number of items on menu bar
- 04h 10 BYTEs scan codes for hotkeying to each of up to ten menu items
- 0Eh 10 BYTEs which character to highlight in each menu item (01h=first)
- 18h WORD offset of first menu definition (see #00626)
- 1Ah WORD offset of second menu definition
- ...
- Format of PC Tools DESKTOP menu definition:
- Offset Size Description (Table 00626)
- 00h WORD offset of menu contents (see #00627)
- 02h WORD number of entries in menu
- 04h for each entry:
- Offset Size Description
- 00h BYTE scancode of Alt-key to invoke entry
- 01h BYTE character to highlight (01h=first, etc)
- 02h WORD offset of FAR routine to handle selection
- Format of PC Tools DESKTOP menu contents:
- Offset Size Description (Table 00627)
- 00h BYTE number of lines in menu
- 01h BYTE width of menu
- 02h N BYTEs counted strings, one for each line in menu
- --------U-16FFEFCX0000-----------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - INSTALLATION CHECK
- AX = FFEFh
- CX = 0000h
- Return: CX = ABCDh if PC Tools DESKTOP.EXE installed
- BX = segment of resident portion
- AX = ??? (v5.1/5.5 only)
- SeeAlso: AX=FEEFh,AX=FFC5h,AX=FFF3h
- --------U-16FFF0-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
- AX = FFF0h
- DX = ???
- Return: AX destroyed
- Note: available only when popped up
- --------U-16FFF1BX0000-----------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ALTERNATE INSTALLATION CHECK
- AX = FFF1h
- BX = 0000h leave ??? flag as is
- nonzero set ??? flag
- Return: CX = 5555h if installed
- DX = 5555h
- --------U-16FFF2-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY HELP LINE
- AX = FFF2h
- DS:SI -> ASCIZ function key label string (each label preceded by '[')
- or help text
- Return: AX destroyed
- Notes: available only when popped up
- if the specified string does not start with '[', it is displayed
- centered on the bottom line, else the function key labels are shown
- --------U-16FFF3-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - PREPARE TO UNLOAD RESIDENT DESKTOP
- AX = FFF3h
- Note: releases any EMS being used; restores video mode, page, and cursor
- shape; and restores interrupt vectors
- SeeAlso: AX=FFC5h,AX=FFEFh
- Index: uninstall;PC Tools DESKTOP
- --------U-16FFF4-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
- AX = FFF4h
- ???
- Return: ???
- Note: available only when popped up
- SeeAlso: AX=FFF6h
- --------U-16FFF5-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET SCREEN ATTRIBUTE ARRAY
- AX = FFF5h
- Return: ES:BX -> screen attributes data structure (see #00628)
- AL = ??? (v6.0+)
- Format of PC Tools DESKTOP attribute data structure:
- Offset Size Description (Table 00628)
- -1 BYTE attribute for desktop background
- 00h BYTE attribute for normal characters on desktop menu
- 01h BYTE attribute for highlighted characters on desktop menu
- 02h 5 BYTEs ???
- 07h BYTE attribute for dialog boxes
- 08h 15 BYTEs ???
- 17h BYTE attribute for message boxes
- --------U-16FFF6-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - INVOKE NOTEPAD EDITOR
- AX = FFF6h
- DS = segment of editor buffer structure (see #00629)
- BX = ???
- DX = segment of window parameters structure (see #00622)
- Return: ???
- Note: available only when popped up
- SeeAlso: AX=FFF4h
- Format of PC Tools DESKTOP editor buffer structure:
- Offset Size Description (Table 00629)
- 00h WORD offset of current cursor position in buffer segment
- 02h 2 BYTEs ???
- 04h WORD offset of beginning of file data in buffer segment
- 06h 10 BYTEs ???
- 10h N BYTEs ASCIZ name of file being edited
- --------U-16FFF7-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - PROCESS MENU BAR ENTRY???
- AX = FFF7h
- DS:SI -> ???
- ???
- Return: ???
- Notes: available only when popped up
- performs input processing on the menu bar set up with AX=FFEEh
- SeeAlso: AX=FFEEh,AX=FFFBh
- --------U-16FFF8-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - DRAW EMPTY WINDOW
- AX = FFF8h
- DS:0000h -> window parameters structure (see #00622)
- DS:BX -> DWORD to store address of ??? on screen
- Return: ???
- --------U-16FFF9-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE SCREEN REFRESH ROUTINE
- AX = FFF9h
- ES:BX -> FAR routine to redisplay the utility's window
- Note: available only when popped up
- --------U-16FFFA-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE STANDARD PULLDOWN MENUS
- AX = FFFAh
- Notes: available only when popped up
- adds the "Window" option to the "Desktop" option which is the only one
- available when no accessories are active. Unlike AX=FFEEh, no
- additional menu items are added between "Desktop" and "Window"
- SeeAlso: AX=FFEEh,AX=FFFBh
- --------U-16FFFB-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - PROCESS STANDARD MENU BAR
- AX = FFFBh
- Return: ???
- Notes: available only when popped up
- performs input processing on the standard menu bar set up with AX=FFFAh
- SeeAlso: AX=FFF7h
- --------U-16FFFC-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET HOTKEYS AND KEYBOARD VECTOR
- AX = FFFCh
- Return: ES:BX -> hotkey table (see #00630)
- DS:DX = original INT 09 vector
- Format of PC Tools DESKTOP hotkey table:
- Offset Size Description (Table 00630)
- 00h 2 BYTEs scancode/shift state for desktop hotkey
- 02h 2 BYTEs scancode/shift state for clipboard paste key
- 04h 2 BYTEs scancode/shift state for clipboard copy key
- 06h 2 BYTEs scancode/shift state for screen autodial key
- --------U-16FFFD-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - COPY ???
- AX = FFFDh
- Return: AX destroyed
- Note: copies 4000 bytes from ??? to ??? under certain circumstances
- SeeAlso: AX=FF91h,AX=FF92h
- --------M-16FFFE-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - SHOW MOUSE CURSOR
- AX = FFFEh
- SeeAlso: AX=FFFFh,INT 33/AX=0001h
- --------M-16FFFF-----------------------------
- INT 16 U - PC Tools v5.1-8.0 DESKTOP - HIDE MOUSE CURSOR
- AX = FFFFh
- SeeAlso: AX=FFFEh,INT 33/AX=0002h
- --------P-17----DX0ABC-----------------------
- INT 17 - PRINTER - LPTx v5.x INSTALLATION CHECK
- DX = 0ABCh
- Return: AX = AAAAh
- DX = BAAAh
- ES = code segment of resident portion
- --------P-17----DX0B90-----------------------
- INT 17 - PRINTER - LPTx v6.x INSTALLATION CHECK
- DX = 0B90h
- Return: DX = ABBBh
- ES = code segment of resident portion
- --------P-17----DX0B91-----------------------
- INT 17 - PRINTER - LPTx v7.x INSTALLATION CHECK
- DX = 0B91h
- Return: DX = ABCBh
- ES = code segment of resident portion
- --------P-17----DX0F5F-----------------------
- INT 17 - PRINTER - LPTx v4.x INSTALLATION CHECK
- DX = 0F5Fh
- Return: AX = AAAAh
- DX = F555h
- ES = code segment of resident portion
- --------B-1700-------------------------------
- INT 17 - PRINTER - WRITE CHARACTER
- AH = 00h
- AL = character to write
- DX = printer number (00h-02h)
- Return: AH = printer status (see #00631)
- SeeAlso: AH=02h,AH=84h"AX",AX=6F02h,AH=F1h,INT 16/AX=FFE3h,INT 1A/AH=11h"NEC"
- SeeAlso: INT 4B/AH=00h,PORT 0278h"PRINTER",MEM 0040h:0008h,MEM 0040h:0078h
- Bitfields for printer status:
- Bit(s) Description (Table 00631)
- 7 not busy
- 6 acknowledge
- 5 out of paper
- 4 selected
- 3 I/O error
- 2-1 unused
- 0 timeout
- Note: for Tandy 2000, bit 7 indicates printer-busy when set rather than clear
- --------B-1701-------------------------------
- INT 17 - PRINTER - INITIALIZE PORT
- AH = 01h
- DX = printer number (00h-02h)
- Return: AH = printer status (see #00631)
- Note: some printers report that they are ready immediately after
- initialization when they actually are not; a more reliable result may
- be obtained by calling AH=02h after a brief delay
- SeeAlso: AH=02h,AH=FFh"PC-MOS",INT 1A/AH=10h"NEC",INT 4B/AH=01h
- --------B-1702-------------------------------
- INT 17 - PRINTER - GET STATUS
- AH = 02h
- DX = printer number (00h-02h)
- Return: AH = printer status (see #00631)
- Note: PRINTFIX from MS-DOS 5.0 hooks this function and always returns AH=90h
- SeeAlso: AH=01h,AH=F2h,INT 1A/AH=12h"NEC",INT 4B/AH=02h
- --------P-1702--DX0000-----------------------
- INT 17 - INSET - INSTALLATION CHECK
- AH = 02h
- DX = 0000h
- CX = 07C3h (1987d)
- Return: CX = 07C2h (1986d) if installed
- Program: INSET is a text/graphics integration program
- --------b-170200BX5050-----------------------
- INT 17 - Enhanced Parallel Port (EPP) BIOS - INSTALLATION CHECK
- AX = 0200h
- BX = 5050h ('PP')
- CH = 45h ('E')
- DX = printer port number (00h-02h)
- Return: AH = status
- 00h if installed and port is an enhanced parallel port
- CX:AL = installed BIOS type
- 5050h:45h ('PPE') if EPP v3.0+ BIOS installed
- 4550h:50h ('EPP') if EPP v1.0 BIOS installed
- ---EPP 1.0, 3.0---
- DX:BX -> far entry point to Advanced BIOS (see #00632)
- ---EPP Revision 7---
- DX = EPP I/O base address
- ES:BX -> far entry point to EPP BIOS (see #00632,#00633)
- 03h if installed but specified port not supported
- CF set
- Program: The Enhanced Parallel Port BIOS provides support for parallel
- port peripherals using the enhanced modes of the IEEE 1284.
- SeeAlso: AH=E0h,MEM 0040h:0008h,MEM 0040h:00DCh
- (Table 00632)
- Call EPP BIOS entry point with:
- DL = port number (v1.0,v3.0)
- DX = (Revision 7) EPP port I/O base address
- AH = function
- 00h Query Configuration
- Return: AH = 00h if successful
- AL = IRQ number used by port or FFh if no IRQ
- BH = EPP BIOS revision (major in high nybble,
- minor in low nybble)
- BL = I/O capabilities (see #00635)
- ES:DI -> ASCIZ driver information/version text
- ---v1.0,v3.0---
- CX = I/O port base address for parallel port
- ---Revision 7---
- CL = EPP chipset code (see #00636)
- CH = hardware manufacturer's product code
- 01h Set Mode
- AL = mode bits (see #00637)
- Return: AX,BX destroyed
- 02h Get Mode
- Return: AL = mode bits (see also #00637)
- bit 7: EPP port interrupts enabled
- AH = 00h
- CF clear
- BX destroyed
- 03h Interrupt Control
- AL = subfunction
- 00h enable parallel port interrupts
- 01h disable parallel port interrupts
- Return: AH = status (00h,05h,06h) (see also #00634)
- 04h EPP Reset
- Return: AH = 00h if successful
- AL destroyed
- 05h perform Address-Write/Device-Select I/O cycle
- AL = device address
- Return: AH = status
- AL destroyed
- 06h perform Address-Read I/O cycle
- Return: AL = returned address/device data
- AH = status
- 07h write byte
- AL = data byte to write
- Return: AH = status
- 08h output block of data
- DS:SI -> block of data to be sent to parallel port
- CX = number of bytes to output
- Return: AH = status (see #00634)
- CX = number of unsent bytes
- 09h read byte of data
- Return: AH = status (see #00634)
- AL = byte read from parallel port
- 0Ah read block of data
- ES:DI -> buffer for received data
- CX = number of bytes to read from paralle port
- Return: AH = status (see #00634)
- ES:DI buffer filled if successful
- CX = number of bytes not transferred
- 0Bh Address/Byte-Read
- AL = device address
- Return: AH = status (see #00634)
- AL = byte read if successful
- 0Ch Address/Byte-Write
- AL = device address
- DH = data byte (v1.0,v3.0)
- CL = data byte (Revision 7)
- Return: AH = status (see #00634)
- 0Dh Address/Block-Read
- AL = device address
- ES:DI -> buffer for received data
- CX = number of bytes to read
- Return: AH = status (see #00634)
- CX = number of bytes NOT transferred
- 0Eh Address/Block-Write
- AL = device address
- ES:DI -> data to be sent (v1.0,v3.0)
- DS:SI -> data to be send (Revision 7)
- CX = number of bytes to write
- Return: AH = status (see #00634)
- CX = number of bytes NOT transferred
- 0Fh Lock Port
- AL = multiplexor port number
- bits 7-4: daisy chain port number (1-8)
- bits 3-0: mux device port number (1-8, 0 if no mux)
- Return: AH = status (00h,03h,05h) (see #00634)
- 10h Unlock Port
- AL = multiplexor port number
- bits 7-4: daisy chain port number (1-8)
- bits 3-0: mux device port number (1-8, 0 if no mux)
- Return: AH = status (00h,03h,05h) (see #00634)
- 11h Device Interrupt
- BL = multiplexor port number
- 00h if no multiplexor, else mux device port (01h-08h)
- AL = subfunction
- 00h disable device interrupts
- 01h enable device interrupt
- ES:DI -> interrupt event handler
- Return: AH = status (00h,03h,05h,06h) (see #00634)
- Note: AMI BIOS v1.00.12.AX1T ignores the multiplexor port
- number; it also always sets INT 0F to the address
- specified in ES:DI
- 12h Real-Time Mode
- AL = subfunction
- 00h check whether any real-time devices present
- 01h add (advertise) real-time device
- 02h remove real-time device
- Return: AH = status (00h,05h,06h,07h) (see #00634)
- AL = real-time devices present? (00h no, 01h yes)
- Note: unlike all other functions, this one does not use DL/DX
- Return: AH = status (see #00634)
- CF clear if successful
- CF set on error
- BX destroyed
- SeeAlso: #00633
- (Table 00633)
- Call EPP BIOS (Revision 7) entry point multiplexor functions with:
- DX = EPP port base I/O address
- AH = function
- 40h Query Mux
- Return: AH = status (see #00634)
- AL = currently-selected port
- CH = status flags
- bit 0: channel locked
- bit 1: interrupt pending
- BH destroyed
- Note: the PhoenixBIOS v4.0 documentation lists BL as the
- currently-selected port and AL as the status flags
- 41h Query Device Port
- AL = EPP multiplex device port (1-8)
- Return: AH = status (see #00634)
- CH = status flags (see #00638)
- BX = EPP product/device ID (0000h if undefined)
- Note: the PhoenixBIOS v4.0 documentation lists AL as the
- status flags and CX as the device ID
- 42h Set Product ID
- AL = EPP multiplex device port (1-8)
- CX = EPP product ID
- Return: AH = status (see #00634)
- BX destroyed
- 50h Query Daisy Chain
- AL = EPP multiplexor device port (1-8)
- Return: AH = status (see #00634)
- CH = status flags
- bit 0: channel locked
- bit 1: interrupt pending
- BL = currently-selected device
- BH = EPP daisy chain revision (high nybble = major)
- CL = daisy-chain depth (00h if no daisy chain)
- ES:DI -> ASCIZ driver vendor identification string
- Note: the PhoenixBIOS v4.0 documentation lists AH=51h as
- "Query Daisy Chain" and BL as the multiplexor port;
- it also lists AL as status flags on return
- 51h Rescan Daisy Chain (dynamically reassign port numbers)
- AL = EPP multiplexor device port (1-8)
- Return: AH = status (see #00634)
- BX destroyed
- Note: the PhoenixBIOS v4.0 documentation lists AH=50h as
- "Rescan Daisy Chain" and BL as the multiplexor port
- Notes: these functions are only valid if a port multiplexor or daisy chain
- is present
- PhoenixBIOS 4.0 documents function 50h as "Rescan" and 51h as
- "Query Daisy Chain"
- SeeAlso: #00632,INT 2D/AL=DCh
- (Table 00634)
- Values for EPP BIOS function status:
- 00h successful
- 02h unsupported command/feature
- 03h unsupported parallel port
- 05h unsupported in current mode
- 06h invalid subfunction
- 07h already ???
- 20h multiplexor not present (AMI)
- 40h multiplexor not present
- 41h multiplexor currently locked
- 80h I/O timeout
- FFh invalid/unsupported function
- SeeAlso: #00632,#00633
- Bitfields for EPP (v3.0, Revision 7) I/O capabilities:
- Bit(s) Description (Table 00635)
- 0 multiplexor present
- 1 PS/2 bi-directional capable
- 2 daisy chain present
- 3 ECP capable
- 4 EPP software emulation supported
- 5 EPP capable
- 6 fast Centronics supported
- 7 standard EPP I/O map
- SeeAlso: #00632
- (Table 00636)
- Values for EPP (Revision 7) chipset code:
- 00h Intel SL
- 01h FarPoint Communications
- 02h SMC
- 03h Chips&Technologies
- 04h Western Digital
- 05h National Semiconductor
- SeeAlso: #00632
- Bitfields for EPP BIOS mode bits:
- Bit(s) Description (Table 00637)
- 0 set compatibility mode
- 1 set bi-directional mode
- 2 set EPP mode
- ---Revision 7,v3.0---
- 3 set ECP mode
- 4 set EPP software emulation
- 5 set fast Centronics mode
- 6-7 reserved (0)
- SeeAlso: #00632,#M0053
- Bitfields for EPP BIOS multiplex status flags:
- Bit(s) Description (Table 00638)
- 0 port is selected
- 1 port is locked
- 2 interrupts are enabled
- 3 interrupt pending
- SeeAlso: #00633
- --------P-1703-------------------------------
- INT 17 U - Emulaser ELTSR - INSTALL INTERRUPT HANDLERS
- AH = 03h
- Return: BX = ???
- CX = ???
- Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
- Vertisoft Systems, Inc.
- SeeAlso: AH=04h"Emulaser",AH=0Eh,INT 1A/AH=E5h
- ----------1703-------------------------------
- INT 17 - IBM SurePath BIOS - Officially "Private" Function
- AH = 03h
- SeeAlso: AH=04h"IBM",AH=05h"IBM"
- --------c-1703-------------------------------
- INT 17 - PC-MOS/386 v5.01 - PRINT SPOOLER - PRINT STRING
- AH = 03h
- DX = printer port number
- CX = number of characters to print
- DS:SI -> string
- Return: AH = printer status (see #00631)
- CX = number of characters actually printed
- Desc: send an entire string of chars to the print spooler with a single call
- Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
- operating system by The Software Link, Inc.
- SeeAlso: AH=00h,AH=01h,AH=02h,AH=FFh"PC-MOS"
- --------c-1703--BX5A00-----------------------
- INT 17 - DMP Print Spooler v2.03 - INSTALLATION CHECK
- AH = 03h
- BX = 5A00h
- Return: AX = 5ACBh
- DI = 0000h
- ES = DMP code segment (also data segment)
- Program: DMP is a Printer driver/spooler, by DMP (USA), available on the
- PCTODAY disk, volume 10, March 1991
- --------N-170300-----------------------------
- INT 17 - DOSISODE to WATTCP TSR Interface - "socket"
- AX = 0300h
- CX = type of socket from socket( domain, type, protocol )
- DX = local identifier of socket (0 - 31)
- Return: AX = 0000h success
- CX = segment of 4500 byte transfer buffer
- DX = offset of 4500 byte transfer buffer
- = FFFFH failure
- CX = error code
- ENFILE 23
- Program: DOSISODE is the ISO developers environment which has been ported to
- DOS and will run with the Waterloo TCP turned into a resident TSR.
- Currently it allows a maximum of 6 open sockets.
- Note: this function will initialize the interface the first time it is
- called
- SeeAlso: AX=0400h"DOSISODE",AX=0600h"DOSISODE",AX=0800h"DOSISODE"
- SeeAlso: AX=0A00h"DOSISODE",AX=0C00h"DOSISODE",AX=0E00h"DOSISODE"
- --------P-1704-------------------------------
- INT 17 U - Emulaser ELTSR - BEGIN CAPTURING OUTPUT
- AH = 04h
- Note: has no effect unless ELTSR is deactivated (see AX=0503h)
- SeeAlso: AH=03h"Emulaser",AX=0503h,INT 1A/AH=E5h
- ----------1704-------------------------------
- INT 17 - IBM SurePath BIOS - Officially "Private" Function
- AH = 04h
- SeeAlso: AH=03h"IBM",AH=05h"IBM"
- --------N-170400-----------------------------
- INT 17 - DOSISODE to WATTCP TSR Interface - "bind"
- AX = 0400h
- Note: this function just returns
- SeeAlso: AX=0300h"DOSISODE",AX=0500h"DOSISODE",AX=0C00h"DOSISODE"
- ----------1705-------------------------------
- INT 17 - IBM SurePath BIOS - Officially "Private" Function
- AH = 05h
- SeeAlso: AH=03h"IBM",AH=04h"IBM"
- --------P-170500-----------------------------
- INT 17 U - Emulaser ELTSR - ???
- AX = 0500h
- ???
- Return: AX = unload status (0001h safe to unload, 0002h not safe)
- BX = ???
- CX = PSP segment of ELTSR
- DX = activity flag (0000h disabled, 0001h capturing, 0002h ???printing)
- SI = ???
- DI = ???
- SeeAlso: AH=04h,INT 1A/AH=E5h
- --------N-170500-----------------------------
- INT 17 - DOSISODE to WATTCP TSR Interface - "connect"
- AX = 0500h
- SeeAlso: AX=0400h"DOSISODE",AX=0700h"DOSISODE",AX=0C00h"DOSISODE"
- --------P-170501-----------------------------
- INT 17 U - Emulaser ELTSR - UNHOOK INTERRUPTS
- AX = 0501h
- Return: (see AX=0500h)
- Note: restores interrupt vectors without checking whether they have been
- hooked by later programs; should only be called if ELTSR reports
- that it is safe to unload
- SeeAlso: AH=04h,AX=0500h,AX=0503h,INT 1A/AH=E5h
- Index: uninstall;Emulaser ELTSR
- --------P-170502-----------------------------
- INT 17 U - Emulaser ELTSR - SET ???
- AX = 0502h
- BL = Emulaser port (31h = LPT1, 32h = LPT2, 33h = LPT3)
- CL = ???
- DL = ???
- Return: (see AX=0500h)
- SeeAlso: AH=04h,AX=0500h,INT 1A/AH=E5h
- --------P-170503-----------------------------
- INT 17 U - Emulaser ELTSR - DEACTIVATE???
- AX = 0503h
- Return: (see AX=0500h)
- SeeAlso: AH=04h,AX=0500h,AX=0501h,INT 1A/AH=E5h
- --------P-1706-------------------------------
- INT 17 U - Emulaser ELTSR - ???
- AH = 06h
- ???
- Return: ???
- SeeAlso: AX=0500h,AX=0503h,AH=07h"ELTSR",INT 1A/AH=E5h
- --------N-170600-----------------------------
- INT 17 - DOSISODE to WATTCP TSR Interface - "listen"
- AX = 0600h
- Note: this function just returns
- SeeAlso: AX=0300h"DOSISODE",AX=0700h"DOSISODE",AX=0C00h"DOSISODE"
- SeeAlso: AX=0E00h"DOSISODE"
- --------P-1707-------------------------------
- INT 17 U - Emulaser ELTSR - OPEN CAPTURE FILE
- AH = 07h
- ES:DX -> ASCIZ filename to be opened
- Return: ???
- Note: new output will be appended to the specified file
- SeeAlso: AH=08h,INT 1A/AH=E5h
- --------N-170700-----------------------------
- INT 17 - DOSISODE to WATTCP TSR Interface - "accept"
- AX = 0700h
- Note: this function just returns
- SeeAlso: AX=0600h"DOSISODE",AX=0800h"DOSISODE",AX=0C00h"DOSISODE"
- --------P-1708-------------------------------
- INT 17 U - Emulaser ELTSR - CLOSE CAPTURE FILE
- AH = 08h
- ???
- Return: ???
- Desc: close the file previously opened by function 07h
- SeeAlso: AH=07h,INT 1A/AH=E5h
- --------N-170800-----------------------------
- INT 17 - DOSISODE to WATTCP TSR Interface - "recvfrom"
- AX = 0800h
- SeeAlso: AX=0500h"DOSISODE",AX=0900h"DOSISODE",AX=0A00h"DOSISODE"
- --------P-1709-------------------------------
- INT 17 U - Emulaser ELTSR - PRINT CAPTURE FILE???
- AH = 09h
- BX = ???
- CX = ???
- DX = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
- Return: AX = status
- 00h successful
- FFh failed
- Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
- Vertisoft Systems, Inc.
- Note: this function calls through to INT 1A/AX=E401h, and thus requires
- that either ELSPL or Disk Spool II be installed
- SeeAlso: AH=0Ah,INT 1A/AX=E401h,INT 1A/AH=E5h
- --------N-170900-----------------------------
- INT 17 - DOSISODE to WATTCP TSR Interface - "sendto"
- AX = 0900h
- SeeAlso: AX=0700h"DOSISODE",AX=0800h"DOSISODE",AX=0A00h"DOSISODE"
- --------P-170A-------------------------------
- INT 17 U - Emulaser ELTSR - SET ??? FILENAME
- AH = 0Ah
- ES:BX -> ??? buffer
- CX = length of ??? buffer
- Return: ???
- Note: copies the specified name into the buffer passed to ELSPL as the
- filename by AH=09h
- SeeAlso: AH=09h,INT 1A/AH=E5h
- --------N-170A00-----------------------------
- INT 17 - DOSISODE to WATTCP TSR Interface - "select"
- AX = 0A00h
- SeeAlso: AX=0800h"DOSISODE",AX=0B00h"DOSISODE",AX=0E00h"DOSISODE"
- --------P-170B-------------------------------
- INT 17 U - Emulaser ELTSR - GET ???
- AH = 0Bh
- Return: AX:BX -> ???
- SeeAlso: AH=0Ah,INT 1A/AH=E5h
- ----------170B-------------------------------
- INT 17 - IBM SurePath BIOS - Officially "Private" Function
- AH = 0Bh
- SeeAlso: AH=03h"IBM",AH=0Ch"IBM"
- --------N-170B00-----------------------------
- INT 17 - DOSISODE to WATTCP TSR Interface - "ioctl"
- AX = 0B00h
- DX = local identifier of socket (0 - 31)
- Note: this function sets the socket into non_block mode
- SeeAlso: AX=0A00h"DOSISODE",AX=0C00h"DOSISODE",AX=0E00h"DOSISODE"
- --------P-170C-------------------------------
- INT 17 U - Emulaser ELTSR - SET ??? FLAG
- AH = 0Ch
- ???
- Return: ???
- SeeAlso: AH=0Bh,INT 1A/AH=E5h
- ----------170C-------------------------------
- INT 17 - IBM SurePath BIOS - Officially "Private" Function
- AH = 0Ch
- SeeAlso: AH=0Bh"IBM",AH=0Dh"IBM"
- --------N-170C00-----------------------------
- INT 17 - DOSISODE to WATTCP TSR Interface - "close"
- AX = 0C00h
- SeeAlso: AX=0300h"DOSISODE",AX=0500h"DOSISODE",AX=0D00h"DOSISODE"
- --------P-170D-------------------------------
- INT 17 U - Emulaser ELTSR - GET TRUE ScrlLk STATE
- AH = 0Dh
- Return: AX = state (0000h off, 0010h on)
- Desc: determine the actual state of ScrlLk even when Emulaser is controlling
- the ScrlLk light as its activity indicator
- SeeAlso: AH=0Ch,INT 16/AH=02h,INT 1A/AH=E5h
- ----------170D-------------------------------
- INT 17 - IBM SurePath BIOS - Officially "Private" Function
- AH = 0Dh
- SeeAlso: AH=0Ch"IBM",AH=0Eh"IBM"
- --------N-170D00-----------------------------
- INT 17 - DOSISODE to WATTCP TSR Interface - "shutdown" - SHUTDOWN INTERFACE
- AX = 0D00h
- Note: this function is used to shutdown the interface
- SeeAlso: AX=0C00h"DOSISODE",AX=0E00h"DOSISODE"
- --------P-170E-------------------------------
- INT 17 U - Emulaser ELTSR - BACKGROUND PROCESSING
- AH = 0Eh
- Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
- Vertisoft Systems, Inc.
- Note: this function is called by ELTSR on every INT 08 to allow data to be
- processed in the background, but may also be called by applications
- to give Emulaser additional CPU time
- SeeAlso: AH=0Dh,INT 1A/AH=E5h
- ----------170E-------------------------------
- INT 17 - IBM SurePath BIOS - Officially "Private" Function
- AH = 0Eh
- SeeAlso: AH=03h"IBM",AH=0Dh"IBM",AH=80h"IBM"
- --------N-170E00-----------------------------
- INT 17 - DOSISODE to WATTCP TSR Interface - INSTALLATION CHECK
- AX = 0E00h
- Return: CX = 1234h if installed
- Program: DOSISODE is the ISO developers environment which has been ported to
- DOS and will run with the Waterloo TCP turned into a resident TSR.
- Currently it allows a maximum of 6 open sockets.
- Note: this function is used to check if the interface is loaded
- SeeAlso: AX=0300h"DOSISODE",AX=0A00h"DOSISODE"
- --------P-172000-----------------------------
- INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - INSTALLATION CHECK
- AX = 2000h
- BL = printer number???
- Return: AX = status (see #00639)
- BX = driver version number (BH=major,BL=minor)
- CH = ??? (00h)
- CL = ???
- DX = ??? (0100h)
- Note: also enables the remaining printer driver functions (2001h-2007h)
- SeeAlso: AX=2001h,AX=2002h,AX=2003h,AX=2004h,AX=2005h,AX=2006h,AX=2007h
- (Table 00639)
- Values for PC Paint function status:
- 0000h successful
- 0001h invalid printer???
- 0002h ???
- 0003h invalid subfunction
- 0005h driver disabled, must call function 00h first
- 0009h unknown printer error
- 000Bh printer not selected
- 000Ch printer out of paper
- 000Eh error while writing to serial printer
- 000Fh ???
- 0010h invalid function number
- 0011h value out of range
- --------P-172001-----------------------------
- INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - SET ??? FLAG
- AX = 2001h
- BL = printer number???
- Return: AX = status (see #00639)
- --------P-172002-----------------------------
- INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - GET INFORMATION
- AX = 2002h
- BL = printer number???
- CL = desired information
- 00h printer type
- Return: ES:DI -> ASCIZ printer name
- 01h paper size
- DX = size index
- Return: ES:DI -> ASCIZ paper size description
- 02h ???
- Return: BX = ???
- 03h printer information???
- DX = ???
- ES:BX -> buffer for ??? (min 134 bytes)
- Return: AX = status (see #00639)
- SeeAlso: AX=2000h,AX=2004h
- --------P-172003-----------------------------
- INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ???
- AX = 2003h
- ES:BX -> ???
- Return: AX = status (see #00639)
- SeeAlso: AX=2000h,AX=2004h
- --------P-172004-----------------------------
- INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - GET ???
- AX = 2004h
- BL = printer number???
- Return: AX = status (see #00639)
- ES:DI -> ???
- SeeAlso: AX=2000h,AX=2003h
- --------P-172005-----------------------------
- INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ADVANCE PRINTER TO NEXT PAGE
- AX = 2005h
- BL = printer number???
- Return: AX = status (see #00639)
- Note: this function also clears the flag set by AX=2001h
- SeeAlso: AX=2000h,AX=2001h,AX=2006h
- --------P-172006-----------------------------
- INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ADVANCE TO NEXT PAGE & SHUT DOWN
- AX = 2006h
- BL = printer number???
- Return: AX = status (see #00639)
- Note: this function also clears the flag set by AX=2001h and disables
- functions other than AX=2000h
- SeeAlso: AX=2000h,AX=2001h,AX=2005h
- --------P-172007-----------------------------
- INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - UNIMPLEMENTED
- AX = 2007h
- Return: AX unchanged
- SeeAlso: AX=2000h
- --------N-172400-----------------------------
- INT 17 - Shamrock Software NET.24 v3.11+ - ENABLE/DISABLE API FUNCTIONS
- AX = 2400h
- DL = new state
- 00h disabled
- 01h enabled
- Return: DL = 24h if installed
- DH = minor version number
- CX = network address of this machine
- AL = status (see #00640)
- SeeAlso: AX=2403h,INT 16/AX=4500h
- (Table 00640)
- Values for NET.24 function status:
- 00h successful
- 01h timeout
- 02h header error
- 03h data error
- 04h busy
- 05h invalid parameters
- --------N-172401-----------------------------
- INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, NO HANDSHAKE
- AX = 2401h
- BL = timeout in clock ticks
- Return: AL = status (see #00640)
- DX:BX -> receive buffer
- SeeAlso: AX=2402h,AX=2404h,AX=2408h
- --------N-172402-----------------------------
- INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT BLOCK, NO HANDSHAKE
- AX = 2402h
- transmit buffer filled (see AX=2403h)
- Return: AL = status (see #00640)
- SeeAlso: AX=2401h,AX=2403h,AX=2404h,AX=2409h
- --------N-172403-----------------------------
- INT 17 - Shamrock Software NET.24 v3.11+ - GET STATUS AND TRANSMISSION BUFFER
- AX = 2403h
- Return: AL = status (see #00640)
- CX = number of characters in receive ring buffer
- DX:BX -> transmit buffer
- SeeAlso: AX=2400h,AX=2402h
- --------N-172404-----------------------------
- INT 17 - Shamrock Software NET.24 v3.11+ - SEND ACK BLOCK
- AX = 2404h
- BX = target address
- Return: AL = status (see #00640)
- SeeAlso: AX=2402h,AX=2405h
- --------N-172405-----------------------------
- INT 17 - Shamrock Software NET.24 v3.11+ - SEND NAK BLOCK
- AX = 2405h
- BX = target address
- Return: AL = status (see #00640)
- SeeAlso: AX=2402h,AX=2404h
- --------N-172406-----------------------------
- INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED RECEIVE
- AX = 2406h
- Return: AL = status (see #00640)
- SeeAlso: AX=2407h,AX=240Ah
- --------N-172407-----------------------------
- INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE CHARACTER FROM REMOTE
- AX = 2407h
- Return: AL = status (see also #00640)
- 06h end of data
- DL = received character
- SeeAlso: AX=2406h
- --------N-172408-----------------------------
- INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, WITH HANDSHAKE
- AX = 2408h
- Return: AL = status (see also #00640)
- 06h end of data
- CX = number of bytes in receive buffer
- DX:SI -> receive buffer
- SeeAlso: AX=2401h,AX=2405h,AX=2409h
- --------N-172409-----------------------------
- INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT COMMAND, WITH HANDSHAKE
- AX = 2409h
- BX = target address
- CX = number of data bytes
- DL = command code to send
- DS:SI -> data bytes for command
- Return: AL = status (see also #00640)
- 03h no response
- 06h remote currently unable to perform command
- SeeAlso: AX=2405h,AX=2408h
- --------N-17240A-----------------------------
- INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED TRANSMIT
- AX = 240Ah
- Return: AL = status (see #00640)
- SeeAlso: AX=2406h,AX=240Bh,AX=240Ch
- --------N-17240B-----------------------------
- INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT SINGLE CHARACTER TO REMOTE
- AX = 240Bh
- DL = character to send
- Return: AL = status (see also AX=2400h)
- 03h transmission error
- 06h write error
- SeeAlso: AX=2407h,AX=240Ah,AX=240Ch
- --------N-17240C-----------------------------
- INT 17 - Shamrock Software NET.24 v3.11+ - END CHARACTER-ORIENTED TRANSMIT
- AX = 240Ch
- Return: AL = status (see also AX=2400h)
- 03h transmission error
- 06h remote breaks connection
- SeeAlso: AX=240Ah,AX=240Bh
- --------p-174B00-----------------------------
- INT 17 - Brother P-Touch - INSTALLATION CHECK
- AX = 4B00h
- Return: AX = 4249h ('BI' = Brother International) if installed
- BX = program ID
- 4550h ('EP') for "Epson FX-80 Emulator"
- 5047h ('PG') for "Printer to Disk Utility"
- CX = numbero of parallel port being emulated or intercepted
- SeeAlso: AX=4B01h
- --------p-174B01-----------------------------
- INT 17 - Brother P-Touch - UNINSTALL
- AX = 4B01h
- Return: AX = segment of resident program or 0000h if unable to uninstall
- Note: the calling program must manually free both the indicated segment
- and the environment segment for the TSR with INT 21/AH=49h
- (the environment is pointed at by the WORD at AX:002Ch)
- SeeAlso: AX=4B00h,INT 21/AH=49h
- --------J-175000-----------------------------
- INT 17 - AX (Japanese AT) PRINTER - SET PRINTER COUNTRY CODE
- AX = 5000h
- BX = country code
- 0001h USA (English), 0051h Japan
- Return: AL = status
- 00h successful
- 01h bad country code
- 02h other error
- SeeAlso: AX=5001h,AH=51h,INT 10/AX=5000h,INT 16/AX=5000h
- --------J-175001-----------------------------
- INT 17 - AX (Japanese AT) PRINTER - GET PRINTER COUNTRY CODE
- AX = 5001h
- Return: AL = status
- 00h successful
- BX = country code
- 02h error
- SeeAlso: AX=5000h,AH=51h,INT 10/AX=5001h,INT 16/AX=5001h
- --------J-1751-------------------------------
- INT 17 - AX (Japanese AT) PRINTER - JIS to Shift-JIS CONVERSION
- AH = 51h
- DX = 2-byte JIS code
- Return: DX = shift-JIS value or 0000h on error
- Note: one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
- characters to Shift-JIS characters, and the other performs the
- opposite conversion
- SeeAlso: AX=5000h,AH=52h
- --------J-1752-------------------------------
- INT 17 - AX (Japanese AT) PRINTER - Shift-JIS to JIS CONVERSION
- AH = 52h
- DX = 2-byte shift-JIS code
- Return: DX = JIS code or 0000h on error
- Note: one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
- characters to Shift-JIS characters, and the other performs the
- opposite conversion
- SeeAlso: AH=51h
- --------V-1760-------------------------------
- INT 17 - FLASHUP.COM - INSTALLATION CHECK
- AH = 60h
- Return: AL = 60h
- DX = CS of resident code
- Notes: FLASHUP.COM is part of Flash-Up Windows by The Software Bottling Co.
- FLASHUP also hooks INT 10 and receives commands via INT 10/AH=09h,0Ah
- consisting of an 80h followed by the actual command
- SeeAlso: INT 10/AH=09h,INT 10/AH=0Ah
- --------V-1761-------------------------------
- INT 17 - SPEEDSCR.COM - INSTALLATION CHECK
- AH = 61h
- Return: AL = 61h
- DX = CS of resident code
- Note: SPEEDSCR.COM is by The Software Bottling Co.
- --------P-1762-------------------------------
- INT 17 U - T2PS v1.0 - UNINSTALL
- AH = 62h
- Return: nothing
- SeeAlso: AH=63h,AH=64h,INT 05/AX=554Eh
- --------P-1763-------------------------------
- INT 17 U - T2PS v1.0 - SET PARAMETERS
- AH = 63h
- ES:SI -> settings (see #00641)
- Program: T2PS is a shareware ASCII-to-PostScript converter by A.N.D.
- Technologies
- SeeAlso: AH=62h,AH=64h,INT 05/AX=4E57h
- Format of T2PS settings:
- Offset Size Description (Table 00641)
- 00h WORD LPT port number (0=LPT1, etc.)
- 02h WORD page heigh in points
- 04h WORD page width in points
- 06h WORD top margin in points
- 08h WORD bottom margin in points
- 0Ah WORD left margin in points
- 0Ch WORD right margin in points
- 0Eh WORD font size in points
- 10h WORD tab size
- 12h WORD timeout in clock ticks
- --------P-1764-------------------------------
- INT 17 U - T2PS v1.0 - GET PARAMETERS
- AH = 64h
- ES:SI -> buffer for settings (see #00641)
- Return: ES:SI buffer filled
- SeeAlso: AH=62h,AH=63h,INT 05/AX=5053h
- --------b-176F00BX0000-----------------------
- INT 17 - HP Vectra - EXTENDED BIOS - "F17_INQUIRE" - INSTALLATION CHECK
- AX = 6F00h
- BX = 0000h
- Return: BX = 4850h ("HP") if HP Extended BIOS printer extensions available
- SeeAlso: AX=6F02h,INT 14/AX=6F00h,INT 10/AX=6F00h,INT 14/AX=6F00h
- SeeAlso: INT 33/AX=6F00h,INT 6F/AH=00h"HP Vectra"
- --------b-176F02-----------------------------
- INT 17 - HP Vectra - EXTENDED BIOS - "F17_PUT_BUFFER" - PRINT BUFFER
- AX = 6F02h
- CX = size of buffer in bytes
- DX = port number (0-3)
- ES:DI -> buffer containing characters to be printed
- Return: AH = printer status (see #00631)
- CX = number of bytes successfully printed
- ---on error (AH bit 0 set)---
- ES:DI -> next byte to be sent
- ---if successful---
- ES:DI unchanged
- SeeAlso: AH=00h,AX=6F00h,INT 14/AX=6F02h
- ----------1780-------------------------------
- INT 17 - IBM SurePath BIOS - Officially "Private" Function
- AH = 80h
- SeeAlso: AH=03h"IBM",AH=0Bh"IBM"
- --------N-1781-------------------------------
- INT 17 - Alloy NTNX, MW386 - CANCEL JOBS FOR CURRENT USER
- AH = 81h
- AL = 00h (NTNX compatibility mode)
- CL = number of jobs to cancel
- Return: AL = status (see #00642)
- Note: this function cancels the last CL printouts for the current task
- SeeAlso: AH=82h
- (Table 00642)
- Values for Alloy status:
- 00h success
- 01h-7Fh warning
- 80h general failure
- 81h host overloaded (NTNX only)
- 82h module busy (NTNX only)
- 83h host busy (NTNX only)
- 84h re-entry flag set
- 85h invalid request
- 86h invalid printer
- 87h invalid process ID
- 89h access denied
- 8Ah option not available for given port type
- 8Bh option not available for given task type
- 91h printer busy
- C2h file not found
- C3h path not found
- C4h file access failure
- --------N-1782-------------------------------
- INT 17 - Alloy NTNX, MW386 - CANCEL ALL JOBS FOR CURRENT USER
- AH = 82h
- AL = 00h (NTNX compatibility mode)
- Return: AL = status (see #00642)
- SeeAlso: AH=81h
- --------N-1783-------------------------------
- INT 17 - Alloy NTNX, MW386 - SET NUMBER OF COPIES
- AH = 83h
- AL = mode
- 00h NTNX compatibility
- CL = number of copies (max 99, default 1)
- 02h MW386 v2+
- BX = logical device number
- 00h-03h = LPT1-LPT4
- 04h-07h = COM1-COM4
- CX = number of copies
- Return: AL = status (see #00642)
- Note: in NTNX compatibility mode, this function only affects LPT1
- --------N-1784-------------------------------
- INT 17 - Alloy NTNX, MW386 - GENERATE PRINT BREAK
- AH = 84h
- AL = mode
- 00h NTNX compatibility
- 02h MW386 v2+
- BX = logical device number
- 00h-03h = LPT1-LPT4
- 04h-07h = COM1-COM4
- Note: closes spool file and tells spooler to queue the print job (LPT1 only
- under MW386 in NTNX compatibility mode)
- --------J-1784-------------------------------
- INT 17 - AX (Japanese AT) PRINTER - OUTPUT CHARACTER WITHOUT CONVERSION
- AH = 84h
- AL = character
- DX = printer number
- Return: AH = printer status (see #00631)
- SeeAlso: AH=00h,AH=85h
- --------J-1785-------------------------------
- INT 17 - AX (Japanese AT) PRINTER - ENABLE/DISABLE CHARACTER CONVERSION
- AH = 85h
- AL = new state (00h enabled, 01h disabled)
- SeeAlso: AH=84h"AX"
- --------N-1787-------------------------------
- INT 17 - Alloy NTNX - SET INDOS POINTER
- AH = 87h
- AL = 00h
- CX:BX -> buffer for user-written printer drivers
- Return: BX,CX destroyed
- Note: must be executed before the printer is enabled
- SeeAlso: AH=8Ah
- --------N-1788-------------------------------
- INT 17 - Alloy NTNX, MW386 - REMOVE PRINTER FROM SPOOLER
- AH = 88h
- AL = mode
- 00h NTNX compatibility
- DX = NTNX printer number (see #00643)
- 01h MW386
- DX = MW386 printer number
- Return: AH = status (see #00642)
- Note: removes specified printer from the spooler's list of printers
- SeeAlso: AH=89h,AH=8Bh
- (Table 00643)
- Values for Alloy NTNX printer number:
- 00h host LPT1
- 01h host LPT2
- 02h host LPT3
- 03h host LPT4
- 04h host COM1
- 05h host COM2
- 06h user's logical COM2
- 07h user's terminal AUX port
- 08h user's logical COM1 (MW386 only)
- --------N-1789-------------------------------
- INT 17 - Alloy NTNX, MW386 - ADD PRINTER TO SPOOLER
- AH = 89h
- AL = mode
- 00h NTNX compatibility
- DX = NTNX printer number (see #00643)
- 01h MW386
- DX = MW386 printer number
- Return: AL = status (see #00642)
- Note: the specified printer is added to the spooler's list of available
- printers
- SeeAlso: AH=88h,AH=8Bh
- --------N-178A-------------------------------
- INT 17 - Alloy NTNX - ACTIVATE USER-WRITTEN PRINTER DRIVER
- AH = 8Ah
- ???
- SeeAlso: AH=92h
- --------N-178B-------------------------------
- INT 17 - Alloy MW386 - GET PHYSICAL DEVICE NUMBER FROM NAME
- AH = 8Bh
- DS:DX -> ASCIZ printer name
- Return: AL = status (see also AH=81h)
- 00h successful
- DX = physical device number
- SeeAlso: AH=89h,AH=8Ch,INT 14/AH=20h"Alloy"
- --------N-178C-------------------------------
- INT 17 - Alloy MW386 - GET DEVICE NAME FROM PHYSICAL DEVICE NUMBER
- AH = 8Ch
- DX = physical device number
- ES:DI -> 17-byte buffer for ASCIZ device name
- Return: AL = status (see also AH=81h)
- 00h successful
- ES:DI buffer filled
- SeeAlso: AH=88h,AH=8Bh
- --------N-178D-------------------------------
- INT 17 - Alloy NTNX,MW386 - RESET SPOOLER
- AH = 8Dh
- AL = 00h
- Return: AL = status (see #00642)
- Notes: clears all buffers and resets spooler to boot-up values
- MW386 supports this function for compatibility only; it is a NOP
- --------N-178E-------------------------------
- INT 17 - Alloy NTNX - GET INT 28 ENTRY POINT
- AH = 8Eh
- AL = 00h
- Return: CX:BX -> INT 28 entry point
- SeeAlso: AH=8Fh
- --------N-178F-------------------------------
- INT 17 - Alloy NTNX - GET DOS INTERCEPT ENTRY POINT
- AH = 8Fh
- AL = 00h
- Return: CX:BX -> DOS intercept routine
- SeeAlso: AH=8Eh
- --------N-1790-------------------------------
- INT 17 - Alloy NTNX, MW386 - SPOOL FILE BY NAME
- AH = 90h
- AL = mode
- 00h NTNX compatibility
- DL = printer code (FFh=current) (NTNX, MW386 v1.x only)
- DH = number of copies (FFh=current) (NTNX, MW386 v1.x only)
- 02h MW386 v2+
- BX = logical device number
- 00h-03h = LPT1-LPT4
- 04h-07h = COM1-COM4
- CX:SI -> ASCIZ pathname
- Return: AL = status (see #00642)
- Note: in mode 00h, the file is always sent to logical LPT1
- SeeAlso: AH=A0h
- --------N-1791-------------------------------
- INT 17 - Alloy NTNX, MW386 - GET USER NUMBER AND CURRENT PRINTER
- AH = 91h
- AL = mode
- 00h NTNX compatibility
- Return: CX = user number (00h = host)
- DX = currently selected printer number (00h-08h)
- 01h MW386
- Return: CX = user number
- DX = physical dev number of currently selected printer
- 02h MW386 v2+
- BX = logical device number
- 00h-03h = LPT1-LPT4
- 04h-07h = COM1-COM4
- Return: CX = user number
- DX = physical device number
- Return: AL = status (see #00642)
- SeeAlso: AH=8Ch
- --------N-1792-------------------------------
- INT 17 - Alloy NTNX - CHECK PRINTER DRIVER
- AH = 92h
- AL = 00h
- CL = 00h
- Return: CL = driver state
- 01h initialized
- 80h not initialized
- AX = status (see #00642)
- SeeAlso: AH=8Ah
- --------N-1794-------------------------------
- INT 17 - Alloy NTNX, MW386 - SELECT PRINTER
- AH = 94h
- AL = mode
- 00h NTNX compatibility
- DX = NTNX printer number (see #00643)
- 01h MW386
- DX = MW386 printer number
- 02h MW386 v2+
- BX = logical printer number
- DX = MW386 printer number
- Return: AL = status (see #00642)
- Note: modes 00h and 01h affect only logical LPT1
- SeeAlso: AH=8Bh,AH=95h
- --------N-1795-------------------------------
- INT 17 - Alloy NTNX, MW386 - GET CURRENT PRINTER
- AH = 95h
- AL = mode
- 00h NTNX compatibility
- Return: DX = NTNX printer number (see #00643)
- (FFFFh if current printer not compatible with NTNX)
- 01h MW386
- Return: DX = MW386 printer number
- 02h MW386 v2+
- BX = logical device number
- 00h-03h = LPT1-LPT4
- 04h-07h = COM1-COM4
- Return: DX = MW386 printer number (FFFFh = none)
- Return: AL = status (see #00642)
- Note: modes 00h and 01h return the printer number of logical LPT1 only
- SeeAlso: AH=94h
- --------N-1796-------------------------------
- INT 17 - Alloy NTNX - SET SERIAL PORT PARAMETERS
- AH = 96h
- AL = 00h
- Note: documentation states that this is a NOP, doing only XOR AX,AX before
- returning
- SeeAlso: INT 14/AH=24h
- --------N-1797-------------------------------
- INT 17 - Alloy NTNX, MW386 - SET DATA DRIVEN PRINT BREAK
- AH = 97h
- AL = mode
- 00h NTNX compatibility
- 02h MW386 v2+
- BX = logical device number
- 00h-03h = LPT1-LPT4
- 04h-07h = COM1-COM4
- CH,CL,DH = three character break sequence
- DL = subfunction
- 00h set break string
- else reset break
- Return: AL = status (see #00642)
- Notes: mode 00h affects only logical LPT1
- when the break string is encountered, the spool file will be closed and
- queued for printing automatically
- the break string is not permanently saved, and will be reset each time
- MW386 or the user is rebooted
- SeeAlso: AH=9Bh
- --------N-1798-------------------------------
- INT 17 - Alloy NTNX,MW386 - RESTART PRINTER
- AH = 98h
- AL = 00h
- DL = printer number (FFh=current)
- Return: AL = status
- 00h successful
- 01h incorrect printer
- 02h task not found
- Note: MW386 supports this function for compatibility only; it is a NOP
- --------N-1799-------------------------------
- INT 17 - Alloy NTNX, MW386 - GET/SET PRINTER MODE
- AH = 99h
- AL = mode
- 00h NTNX compatibility
- DL = NTNX printer number (see #00643)
- (FFh = task's current logical LPT1)
- DH = mode (see #00644)
- 01h MW386
- DX = MW386 printer number
- CL = mode (as for DH above)
- Return: AL = status (see #00642)
- DH = mode (bits 1 and 2 set as above)
- DL = printer owner's user number if not spooled
- Bitfields for Alloy printer mode:
- 0 get mode if 1, set mode if 0 (Table 00644)
- 1 private ("attached")
- 2 direct instead of spooled
- 3-7 reserved (0)
- --------N-179A-------------------------------
- INT 17 - Alloy NTNX,MW386 - SET TAB EXPANSION
- AH = 9Ah
- AL = mode
- 00h NTNX compatibility
- DX = NTNX printer number (see #00643)
- (FFFFh = current logical LPT1)
- 01h MW386
- DX = MW386 printer number
- CL = tab length (00h = no expansion, 01h-63h = spaces per tab)
- Return: AL = status (see #00642)
- Note: beginning with MW386 v2.0, tab expansion is set on a per-printer basis
- rather than a per-user basis; NTNX and MW386 v1.x ignore DX
- SeeAlso: AH=A4h
- --------N-179B-------------------------------
- INT 17 - Alloy NTNX,MW386 - SET PRINT BREAK TIMEOUT
- AH = 9Bh
- AL = mode
- 00h NTNX compatibility
- CX = timeout value in clock ticks (1/18 sec) (00h = never)
- 01h MW386
- CX = timeout value in seconds (00h = never)
- 02h MW386 v2+
- BX = logical device number
- 00h-03h = LPT1-LPT4
- 04h-07h = COM1-COM4
- CX = timeout value in seconds (00h = never)
- Return: AL = status (see #00642)
- Notes: modes 00h and 01h affect only the current logical LPT1
- if no data is sent to a printer for the specified amount of time, the
- spool file will be closed and queued for printing automatically
- SeeAlso: AH=97h
- --------N-17A0-------------------------------
- INT 17 - Alloy MW386 - SPOOL COPY OF FILE
- AH = A0h
- AL = mode
- 00h NTNX compatibility
- DX = ??? (NTNX, MW386 v1.x only)
- 02h MW386 v2+
- BX = logical device number
- 00h-03h = LPT1-LPT4
- 04h-07h = COM1-COM4
- CX:SI -> ASCIZ pathname
- Return: AL = status (see #00642)
- Notes: makes a copy of the specified file in the spooler's directory, allowing
- the original file to be modified or deleted while the copy is printed
- in mode 00h, the file is printed on logical LPT1
- SeeAlso: AH=90h
- --------N-17A4-------------------------------
- INT 17 - Alloy MW386 - ENABLE/DISABLE FORM FEED
- AH = A4h
- AL = new state
- 00h form feed after end of print job disabled
- 01h form feed enabled
- Return: AL = status (see #00642)
- Note: only affects the current logical LPT1
- SeeAlso: AH=9Ah,AH=A6h,INT 7F/AH=05h"NTNX (Host)"
- --------N-17A6-------------------------------
- INT 17 - Alloy MW386 - ENABLE/DISABLE BANNER PAGE
- AH = A6h
- AL = new state
- 00h banner page before print job disabled
- 01h banner page enabled
- Return: AL = status (see #00642)
- Note: only affects the current logical LPT1
- SeeAlso: AH=A4h
- --------N-17A7-------------------------------
- INT 17 - Alloy MW386 v2+ - GET/SET SPOOL FLAGS
- AH = A7h
- AL = spool flags (see #00645)
- BX = logical device number
- 00h-03h = LPT1-LPT4
- 04h-07h = COM1-COM4
- Return: AL = status (see #00642)
- Note: the documentation does not state which register contains the result of
- a GET
- SeeAlso: AH=A4h,AH=A6h
- Bitfields for Alloy spool flags:
- Bit(s) Description (Table 00645)
- 0 banner page enabled (see AH=A6h)
- 1 form feed enabled (see AH=A4h)
- 2-6 reserved (0)
- 7 set flags if 1, get flags if 0
- --------N-17A8-------------------------------
- INT 17 - Alloy MW386 - DEFINE TEMPORARY FILENAME
- AH = A8h
- CX:SI -> ASCIZ filename without extension (max 8 chars)
- Return: AL = status (see #00642)
- Note: allows application to specify banner page filename for spool files
- collected from the application's printer output
- SeeAlso: AH=A9h
- --------N-17A9-------------------------------
- INT 17 - Alloy MW386 - CHANGE TEMPORARY SPOOL DRIVE
- AH = A9h
- AL = new spool drive (2=C:,3=D:,etc)
- Return: AL = status (see #00642)
- Note: does not remove previous spooling directory since jobs may be pending
- SeeAlso: AH=A8h
- --------N-17AA-------------------------------
- INT 17 - Alloy MW386 v2+ - GET REAL-TIME PRINTER STATUS
- AH = AAh
- AL = mode
- 00h NTNX
- DX = NTNX printer number (see #00643)
- 01h MW386
- DX = MW386 printer number
- Return: AH = instantaneous printer status
- 00h printer ready
- 01h not ready
- 12h off line
- 13h out of paper
- 14h general device failure
- 15h device timeout
- 16h bad device number
- --------N-17AF-------------------------------
- INT 17 - Alloy MW386 - CHECK SPOOLER
- AH = AFh
- Return: AX = 55AAh if spooler available
- --------c-17C0-------------------------------
- INT 17 - PC Magazine PCSpool - GET CONTROL BLOCK ADDRESS
- AH = C0h
- DX = printer port (0-3)
- Return: ES:BX -> control block (see #00646)
- SeeAlso: AH=C1h
- Format of PCSpool control block:
- Offset Size Description (Table 00646)
- 00h WORD printer number
- 02h WORD address of printer status port
- 04h WORD number of first record in queue
- 06h WORD number of last record in queue
- 08h DWORD characters already printed
- 0Ch DWORD number of characters remaining
- 10h DWORD pointer to dequeue buffer
- 14h DWORD previous count of characters printed
- 18h DWORD number of clock ticks taken to print them
- 1Ch WORD offset of next character to output
- 1Eh WORD offset of next character to print
- 20h WORD pointer to spooling queue record
- 22h BYTE current spooling status
- 23h BYTE current printer status:
- 00h OK
- 01h not ready
- 02h paused with message
- 03h paused
- 04h initializing
- FEh non-existent port
- FFh not spooled
- 24h BYTE current control record type
- 25h WORD observed printer speed
- 27h WORD characters to print per service
- 29h BYTE 01h if disk write needed
- 2Ah BYTE 01h if queued data should be flushed
- 2Bh BYTE 01h to update cps status
- --------c-17C1--------------------------------
- INT 17 - PC Magazine PCSpool - BUILD PAUSE CONTROL RECORD
- AH = C1h
- DX = printer port (0-3)
- DS:SI -> ASCIZ string to save for display
- Note: flushes pending writes
- SeeAlso: AH=C0h,AH=C2h
- --------c-17C2-------------------------------
- INT 17 - PC Magazine PCSpool - FLUSH PENDING WRITES
- AH = C2h
- DX = printer port (0-3)
- SeeAlso: AH=C3h
- --------c-17C3-------------------------------
- INT 17 - PC Magazine PCSpool - CANCEL PRINTER QUEUE (FLUSH ALL QUEUED OUTPUT)
- AH = C3h
- DX = printer port (0-3)
- SeeAlso: AH=C2h,AH=C7h
- --------c-17C4-------------------------------
- INT 17 - PC Magazine PCSpool - QUERY SPOOLER ACTIVE
- AH = C4h
- Return: DI = B0BFh
- SI = segment
- --------c-17C5-------------------------------
- INT 17 - PC Magazine PCSpool - JOB SKIP PRINTER QUEUE
- AH = C5h
- DX = printer port (0-3)
- Note: cancels up to the pause record
- --------c-17C6-------------------------------
- INT 17 - PC Magazine PCSpool - CHECK PRINTER QUEUE STATUS
- AH = C6h
- DX = printer port (0-3)
- Return: AX = queue status
- 0000h printer not active or at pause
- 0001h printer busy
- --------c-17C7-------------------------------
- INT 17 - PC Magazine PCSpool - CLOSE QUEUE
- AH = C7h
- DX = printer port (0-3)
- SeeAlso: AH=C3h
- --------P-17CD00-----------------------------
- INT 17 - INSET - EXECUTE COMMAND STRING
- AX = CD00h
- DS:DX -> ASCIZ command string (max 80 bytes)
- Return: CX = 07C2h (1986d)
- Note: user interface menus pop up after last command, unless that command
- exits INSET
- --------P-17CD01-----------------------------
- INT 17 - INSET - GET IMAGE SIZE
- AX = CD01h
- DS:DX -> ASCIZ name of image file
- Return: AX = height in 1/720th inch
- BX = width in 1/720th inch
- CX = 07C2h (1986d)
- --------P-17CD02-----------------------------
- INT 17 - INSET - INITIALIZE
- AX = CD02h
- Return: CX = 07C2h (1986d)
- Note: all open files are closed and the printer is reset
- SeeAlso: AX=CD04h
- --------P-17CD03-----------------------------
- INT 17 - INSET - EXECUTE INSET MENU WITHIN OVERRIDE MODE
- AX = CD03h
- Return: CX = 07C2h (1986d)
- --------P-17CD04-----------------------------
- INT 17 - INSET - INITIALIZE LINKED MODE
- AX = CD04h
- ES:SI -> FAR routine for linked mode (see #00647)
- Return: CX = 07C2h
- SeeAlso: AX=CD02h,AX=CD08h
- (Table 00647)
- Values INSET linked-mode routine is called with:
- AL = function
- 00h send character to printer
- BL = character to send
- 01h send string to printer
- CX = number of bytes to send
- DS:DX -> buffer containing data
- 02h move print head to horizontal starting position of image
- Return: AX = status
- 0000h success
- 0001h failure
- --------P-17CD05-----------------------------
- INT 17 - INSET - START MERGING IMAGE INTO TEXT
- AX = CD05h
- DS:DX -> ASCIZ name of PIX file
- CX = left margin of text in 1/720th inch
- Return: AH = printer type
- 00h page-oriented (multiple images may be placed side-by-side)
- 01h line-oriented (use AX=CD06h for vertical paper movement)
- CX = 07C2h (1986d)
- SeeAlso: AX=CD07h
- --------P-17CD06-----------------------------
- INT 17 - INSET - GRAPHICS LINE FEED
- AX = CD06h
- Return: AH = completion status
- 00h image complete
- 01h image incomplete
- CX = 07C2h (1986d)
- SeeAlso: AX=CD09h
- --------P-17CD07-----------------------------
- INT 17 - INSET - FLUSH GRAPHICS FROM MERGE BUFFER
- AX = CD07h
- Return: CX = 07C2h
- SeeAlso: AX=CD05h
- --------P-17CD08-----------------------------
- INT 17 - INSET - CANCEL LINK MODE
- AX = CD08h
- Return: CX = 07C2h
- SeeAlso: AX=CD04h
- --------P-17CD09-----------------------------
- INT 17 - INSET - ALTER TEXT LINE SPACING
- AX = CD09h
- CX = line spacing in 1/720th inch
- Return: CX = 07C2h
- Note: not yet implemented, line spacing is currently fixed at 1/6 inch
- SeeAlso: AX=CD06h
- --------P-17CD0A-----------------------------
- INT 17 - INSET - GET SETUP
- AX = CD0Ah
- DS:DX -> buffer for IN.SET data
- Return: CX = 07C2h
- --------P-17CD0B-----------------------------
- INT 17 - INSET - START GETTING SCALED IMAGE
- AX = CD0Bh
- DS:SI -> ASCIZ pathname of .PIX file
- BX = number of bitplanes
- CX = number of rows in output bitmap
- DX = number of columns in output bitmap
- Return: AX = status
- 0000h OK
- FFFFh error
- Note: image is returned in strips by repeated calls to AX=CD0Ch
- --------P-17CD0C-----------------------------
- INT 17 - INSET - GET NEXT IMAGE STRIP
- AX = CD0Ch
- Return: AX = status
- 0000h OK but not complete
- 0001h OK and image complete
- FFFFh error
- DS:SI -> buffer (max 4K) for bit map strip
- CX = start row
- DX = number of rows
- BX = offset in bytes between bit planes
- Note: buffer may be overwritten by subsequent calls
- SeeAlso: AX=CD0Bh
- --------P-17E0-------------------------------
- INT 17 - EPP BIOS - INSTALLATION CHECK
- AH = E0h
- Return: ??? (AH <> E0h if installed ???)
- SeeAlso: AX=0200h"EPP",AH=E1h,AH=E2h
- --------P-17E1-------------------------------
- INT 17 - EPP BIOS - DISABLE EPP
- AH = E1h
- ???
- Return: ???
- SeeAlso: AX=0200h"EPP",AH=E0h,AH=E2h
- --------P-17E2-------------------------------
- INT 17 - EPP BIOS - ENABLE EPP
- AH = E2h
- ???
- Return: ???
- SeeAlso: AX=0200h"EPP",AH=E0h,AH=E1h
- --------P-17F0-------------------------------
- INT 17 - NorthNet Jetstream API - INSTALLATION CHECK
- AH = F0h
- DX = printer port (0-3)
- Return: AX = 0001h Jetstream present
- else non-Jetstream port
- Note: NorthNet Jetstream is a high-performance DMA-driven parallel card able
- to drive printers at up to 80000 characters per second
- --------P-17F1-------------------------------
- INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER
- AH = F1h
- CX = data buffer length
- DX = printer port (0-3)
- DS:SI -> data buffer
- Return: AX = status
- 0000h printer not ready (see also AH=02h)
- other printing started
- SeeAlso: AH=00h,AH=F2h,AH=F3h,AH=F5h
- --------P-17F2-------------------------------
- INT 17 - NorthNet Jetstream API - GET PRINT PROGRESS STATUS
- AH = F2h
- DX = printer port (0-3)
- Return: AX = status
- 0000h prior print request finished
- other number of characters left to print
- SeeAlso: AH=02h,AH=F1h,AH=F3h
- --------P-17F3-------------------------------
- INT 17 - NorthNet Jetstream API - ABORT PRINT OPERATION
- AH = F3h
- DX = printer port (0-3)
- Return: AX = number of unprinted characters due to abort
- SeeAlso: AH=F1h,AH=F4h
- --------P-17F4-------------------------------
- INT 17 - NorthNet Jetstream API - SET COMPLETION (POST) ADDRESS
- AH = F4h
- DX = printer port (0-3)
- DS:DS -> FAR post address (called with interrupts on)
- SeeAlso: AH=F1h,AH=F3h
- --------P-17F5-------------------------------
- INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER FROM EXTENDED MEMORY
- AH = F5h
- CX = data buffer length
- DX = printer port (0-3)
- DS:SI -> data buffer (32-bit physical address)
- Return: AX = status
- 0000h printer not ready (see also AH=02h)
- other printing started
- SeeAlso: AH=F1h
- --------c-17FF--BX0000-----------------------
- INT 17 U - PC-MOS/386 v5.01 - PRINT SPOOLER - CLOSE SPOOL FILE
- AH = FFh
- BX = 0000h
- CX = 0000h
- DX = printer port number
- Return: AH = printer status (see #00631 at AH=00h)
- Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
- operating system by The Software Link, Inc.
- Desc: close the spool file immediately instead of waiting for the close time
- to elapse
- SeeAlso: AH=01h,AH=03h"PC-MOS"
- --------B-18---------------------------------
- INT 18 - DISKLESS BOOT HOOK (START CASSETTE BASIC)
- Desc: called when there is no bootable disk available to the system
- Notes: only PCs produced by IBM contain BASIC in ROM, so the action is
- unpredictable on compatibles; this interrupt often reboots the
- system, and often has no effect at all
- network cards with their own BIOS can hook this interrupt to allow
- a diskless boot off the network (even when a hard disk is present
- if none of the partitions is marked as the boot partition)
- SeeAlso: INT 2F/AX=4A06h,INT 86"NetBIOS"
- --------J-1800-------------------------------
- INT 18 - NEC PC-9800 series - KEYBOARD - GET KEYSTROKE
- AH = 00h
- Return: AX = keystroke
- SeeAlso: AH=01h,AH=02h,INT 16/AH=00h
- --------J-1801-------------------------------
- INT 18 - NEC PC-9800 series - KEYBOARD - CHECK FOR KEYSTROKE
- AH = 01h
- Return: BH = status
- 00h no keystrokes available
- 01h keystroke available
- AX = keystroke
- SeeAlso: AH=00h,AH=02h,INT 16/AH=01h
- --------J-1802-------------------------------
- INT 18 - NEC PC-9800 series - KEYBOARD - GET SHIFT STATUS
- AH = 02h
- Return: AL = shift flags
- SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,INT 16/AH=02h
- --------J-1803-------------------------------
- INT 18 - NEC PC-9800 series - KEYBOARD - INITIALIZE
- AH = 03h
- ???
- Return: ???
- SeeAlso: AH=00h,AH=04h
- --------J-1804-------------------------------
- INT 18 - NEC PC-9800 series - KEYBOARD - KEY PRESSED
- AH = 04h
- ???
- Return: ???
- Note: details are not available at this time
- SeeAlso: AH=00h,AH=02h,INT 16/AH=00h,INT 16/AH=01h,INT 16/AH=02h
- --------J-18---------------------------------
- INT 18 - NEC PC-9800 series - VIDEO
- AH = function
- 0Ah set video mode
- 0Bh get video mode
- 0Ch start text screen display
- 0Dh end text screen display
- 0Eh set single display area
- 0Fh set multiple display area
- 10h set cursor shape
- 11h display cursor
- 12h terminate cursor
- 13h set cursor position
- 14h read font patter
- 16h initialize text video RAM
- 1Ah define user character
- others
- ???
- Return: ???
- Notes: details are not available at this time
- text video RAM is located at segments A000h (characters) and A200h
- (attributes), graphics video RAM at segment C000h
- Bitfields for NEC PC-9800 series video attributes:
- Bit(s) Description (Table 00648)
- 0 disable drawing character
- 1 blinking
- 2 reverse video
- 3 underline
- 4 vertical line
- 7-5 color
- (0=black, 1=blue, 2=red, 3=purple, 4=green, 5=cyan, 6=yellow, 7=white)
- --------J-180E-------------------------------
- INT 18 - NEC PC-9800 series - SET SINGLE DISPLAY AREA
- AH = 0Eh
- DX = offset of first byte to display???
- Return: ???
- SeeAlso: AH=1Bh,MEM 0050h:0001h
- --------J-181B-------------------------------
- INT 18 - NEC PC-9800 series - SET DISPLAY MODE
- AH = 1Bh
- AL = ??? (00h for text mode)
- Return: ???
- --------r-185350BX4849-----------------------
- INT 18 - SPHINX C-- - WB.COM - API
- AX = 5350h ('SP')
- BX = 4849h ('HI')
- CX = 4E58h ('NX')
- DH = function
- 01h set ???
- DL = ???
- 02h get ???
- Return: DL = ???
- 03h get ???
- Return: ES:DI -> ??? data buffer
- 06h ???
- Return: AX = 7370h ('sp') if installed
- BX = 6869h ('hi') if installed
- CX = 6E78h ('nx') if installed
- Program: SPHINX C-- is a shareware compiler by Peter Cellik for a language
- which is a cross between C and assembler; WB.COM is the driver which
- launches the WorkBench
- --------s-186900-----------------------------
- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET STATUS
- AX = 6900h
- Return: AX = amount of DRAM on card or 0000h if GUS not available
- Program: YEA_GUS is a driver for the Graphics Ultra Sound which hooks INT 18h
- and then shells out the the program requiring its services
- SeeAlso: AX=6901h,AX=690Ah,AX=690Bh
- --------s-186901-----------------------------
- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RESET
- AX = 6901h
- BX = number of active voices (14-32)
- Return: nothing
- SeeAlso: AX=6900h
- --------s-186902-----------------------------
- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET VOLUME FOR SPECIFIC VOICE
- AX = 6902h
- BX = voice number (00h-1Fh)
- CX = linear volume (0000h-01FFh)
- Return: nothing
- SeeAlso: AX=6900h,AX=6903h,AX=6904h,AX=6909h,AX=690Ah
- --------s-186903-----------------------------
- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET FREQUENCY FOR VOICE
- AX = 6903h
- BX = voice number (00h-1Fh)
- CX = frequency in Hz (0-44100)
- Return: nothing
- SeeAlso: AX=6902h,AX=6904h
- --------s-186904-----------------------------
- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET LEFT/RIGHT BALANCE
- AX = 6904h
- BX = voice number (00h-1Fh)
- CX = balance (0 = left, 7 = even, 15 = right)
- Return: nothing
- SeeAlso: AX=6902h,AX=6903h
- --------s-186905-----------------------------
- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - PLAY MUSIC
- AX = 6905h
- BL = voice number
- BH = sample type (0 = 8-bit, 1 = 16-bit)
- CL = looping type (0 = none, 1 = forward, 2 = back and forth)
- CH:DI = 20-bit starting address for voice data
- DL:SI = 20-bit address for loop start
- DH:BP = 20-bit address for loop end
- SeeAlso: AX=6903h,AX=6906h,AX=690Bh
- --------s-186906-----------------------------
- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - LOAD SOUND DATA
- AX = 6906h
- BL = data format (1 = twos-complement, 0 = not)
- BH = sample type (0 = 8-bit, 1 = 16-bit)
- CX = number of bytes to send
- ES:SI -> buffer containing data
- DL:DI = 20-bit address of GUS DRAM at which to load sound data
- SeeAlso: AX=6900h,AX=6905h,AX=690Ch
- --------s-186907-----------------------------
- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - STOP VOICE
- AX = 6907h
- BX = voice number (00h-1Fh)
- Return: nothing
- SeeAlso: AX=6908h,AX=690Dh
- --------s-186908-----------------------------
- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET VOICE END
- AX = 6908h
- BX = voice number (00h-1Fh)
- CL:DX = 20-bit ending address
- Return: nothing
- SeeAlso: AX=690Bh
- --------s-186909-----------------------------
- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RAMP VOLUME
- AX = 6909h
- BL = voice number (00h-1Fh)
- BH = looping type (0 = none, 1 = forward, 2 = back and forth)
- CX = starting volume
- DX = ending volume
- DI:SI = time
- Return: nothing
- SeeAlso: AX=6902h,AX=690Ah
- --------s-18690A-----------------------------
- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET VOLUME
- AX = 690Ah
- BX = voice number (00h-1Fh)
- Return: AX = current non-linear volume for voice
- SeeAlso: AX=6902h,AX=6909h
- --------s-18690B-----------------------------
- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET POSITION
- AX = 690Bh
- BX = voice number
- Return: BX:AX = 20-bit address at which voice is playing
- SeeAlso: AX=6900h,AX=6905h,AX=6908h
- --------s-18690C-----------------------------
- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SAVE SOUND DATA
- AX = 690Ch
- BL = data format (1 = twos-complement, 0 = not)
- BH = sample type (0 = 8-bit, 1 = 16-bit)
- CX = number of bytes to get
- ES:SI -> buffer for retrieved data
- DL:DI = 20-bit address in GUS DRAM from which to read voice data
- Return: nothing
- SeeAlso: AX=6906h
- --------s-18690D-----------------------------
- INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RESTART VOICE
- AX = 690Dh
- BX = voice
- CX = sample type (0 = 8-bit, 1 = 16-bit)
- DX = looping type (0 = none, 1 = forward, 2 = back and forth)
- Return: CX = balance value
- SeeAlso: AX=6907h,AX=6908h
- --------s-188000-----------------------------
- INT 18 - Gravis Ultra Sound EURO_MOD.EXE - INITIALIZE
- AX = 8000h
- Program: EURO_MOD is a .MOD file player for the Gravis Ultra Sound which hooks
- INT 18h and then shells out to the program requiring its services
- SeeAlso: AX=8001h,AX=8004h
- --------s-188001-----------------------------
- INT 18 - Gravis Ultra Sound EURO_MOD.EXE - LOAD .MOD FILE
- AX = 8001h
- BX:CX -> ASCIZ filename
- SeeAlso: AX=8000h,AX=8002h
- --------s-188002-----------------------------
- INT 18 - Gravis Ultra Sound EURO_MOD.EXE - PLAY .MOD FILE
- AX = 8002h
- SeeAlso: AX=8002h,AX=8003h
- --------s-188003-----------------------------
- INT 18 - Gravis Ultra Sound EURO_MOD.EXE - STOP PLAYING
- AX = 8003h
- --------s-188004-----------------------------
- INT 18 - Gravis Ultra Sound EURO_MOD.EXE - SHUTDOWN
- AX = 8004h
- SeeAlso: AX=8000h,AX=8003h
- --------B-19---------------------------------
- INT 19 - SYSTEM - BOOTSTRAP LOADER
- Desc: This interrupt reboots the system without clearing memory or restoring
- interrupt vectors. Because interrupt vectors are preserved, this
- interrupt usually causes a system hang if any TSRs have hooked
- vectors from 00h through 1Ch, particularly INT 08.
- Notes: Usually, the BIOS will try to read sector 1, head 0, track 0 from drive
- A: to 0000h:7C00h. If this fails, and a hard disk is installed, the
- BIOS will read sector 1, head 0, track 0 of the first hard disk.
- This sector should contain a master bootstrap loader and a partition
- table (see #00650). After loading the master boot sector at
- 0000h:7C00h, the master bootstrap loader is given control
- (see #00653). It will scan the partition table for an active
- partition, and will then load the operating system's bootstrap
- loader (contained in the first sector of the active partition) and
- give it control.
- true IBM PCs and most clones issue an INT 18 if neither floppy nor hard
- disk have a valid boot sector
- to accomplish a warm boot equivalent to Ctrl-Alt-Del, store 1234h in
- 0040h:0072h and jump to FFFFh:0000h. For a cold boot equivalent to
- a reset, store 0000h at 0040h:0072h before jumping.
- VDISK.SYS hooks this interrupt to allow applications to find out how
- much extended memory has been used by VDISKs (see #00649). DOS 3.3+
- PRINT hooks INT 19 but does not set up a correct VDISK header block
- at the beginning of its INT 19 handler segment, thus causing some
- programs to overwrite extended memory which is already in use.
- the default handler is at F000h:E6F2h for 100% compatible BIOSes
- MS-DOS 3.2+ hangs on booting (even from floppy) if the hard disk
- contains extended partitions which point at each other in a loop,
- since it will never find the end of the linked list of extended
- partitions
- under Windows Real and Enhanced modes, calling INT 19 will hang the
- system in the same was as under bare DOS; under Windows Standard
- mode, INT 19 will successfully perform a cold reboot as it appears
- to have been redirected to a MOV AL,0FEh/OUT 64h,AL sequence
- BUG: when loading the remainder of the DOS system files fails, various
- versions of IBMBIO.COM/IO.SYS incorrectly restore INT 1E before
- calling INT 19, assuming that the boot sector had stored the
- contents of INT 1E at DS:SI instead of on the stack as it actually
- does
- SeeAlso: INT 14/AH=17h,INT 18"BOOT HOOK",INT 49"Tandy 2000",INT 5B"PC Cluster"
- SeeAlso: MEM 0040h:0067h,MEM F000h:FFF0h,CMOS 0Fh
- Format of VDISK header block (at beginning of INT 19 handler's segment):
- Offset Size Description (Table 00649)
- 00h 18 BYTEs n/a (for VDISK.SYS, the device driver header)
- 12h 11 BYTEs signature string "VDISK Vn.m" for VDISK.SYS version n.m
- 1Dh 15 BYTEs n/a
- 2Ch 3 BYTEs linear address of first byte of available extended memory
- Format of hard disk master boot sector:
- Offset Size Description (Table 00650)
- 00h 446 BYTEs Master bootstrap loader code
- 1BEh 16 BYTEs partition record for partition 1 (see #00651)
- 1CEh 16 BYTEs partition record for partition 2
- 1DEh 16 BYTEs partition record for partition 3
- 1EEh 16 BYTEs partition record for partition 4
- 1FEh WORD signature, AA55h indicates valid boot block
- Format of partition record:
- Offset Size Description (Table 00651)
- 00h BYTE boot indicator (80h = active partition)
- 01h BYTE partition start head
- 02h BYTE partition start sector (bits 0-5)
- 03h BYTE partition start track (bits 8,9 in bits 6,7 of sector)
- 04h BYTE operating system indicator (see #00652)
- 05h BYTE partition end head
- 06h BYTE partition end sector (bits 0-5)
- 07h BYTE partition end track (bits 8,9 in bits 6,7 of sector)
- 08h DWORD sectors preceding partition
- 0Ch DWORD length of partition in sectors
- SeeAlso: #00650
- (Table 00652)
- Values for operating system indicator:
- 00h empty partition-table entry
- 01h DOS 12-bit FAT
- 02h XENIX root file system
- 03h XENIX /usr file system (obsolete)
- 04h DOS 16-bit FAT (up to 32M)
- 05h DOS 3.3+ extended partition
- 06h DOS 3.31+ Large File System (16-bit FAT, over 32M)
- 07h QNX
- 07h OS/2 HPFS
- 07h Windows NT NTFS
- 07h Advanced Unix
- 07h see partition boot record; could be any of the above or others
- 08h OS/2 (v1.0-1.3 only)
- 08h AIX bootable partition, SplitDrive
- 08h Commodore DOS
- 08h DELL partition spanning multiple drives
- 09h AIX data partition
- 09h Coherent filesystem
- 0Ah OS/2 Boot Manager
- 0Ah OPUS
- 0Ah Coherent swap partition
- 0Bh Windows95 with 32-bit FAT
- 0Ch Windows95 with 32-bit FAT (using LBA-mode INT 13 extensions)
- 0Eh logical-block-addressable VFAT (same as 06h but using LBA-mode INT 13)
- 0Fh logical-block-addressable VFAT (same as 05h but using LBA-mode INT 13)
- 10h OPUS
- 11h OS/2 Boot Manager hidden 12-bit FAT partition
- 12h Compaq Diagnostics partition
- 14h (resulted from using Novell DOS 7.0 FDISK to delete Linux Native part)
- 14h OS/2 Boot Manager hidden sub-32M 16-bit FAT partition
- 16h OS/2 Boot Manager hidden over-32M 16-bit FAT partition
- 17h OS/2 Boot Manager hidden HPFS partition
- 17h hidden NTFS partition
- 18h AST special Windows swap file ("Zero-Volt Suspend" partition)
- 19h Willowtech Photon coS
- 1Bh hidden Windows95 FAT32 partition
- 1Ch hidden Windows95 FAT32 partition (using LBA-mode INT 13 extensions)
- 1Eh hidden LBA VFAT partition
- 20h Willowsoft Overture File System (OFS1)
- 21h officially listed as reserved
- 21h FSo2
- 23h officially listed as reserved
- 24h NEC MS-DOS 3.x
- 26h officially listed as reserved
- 31h officially listed as reserved
- 33h officially listed as reserved
- 34h officially listed as reserved
- 36h officially listed as reserved
- 38h Theos
- 3Ch PowerQuest PartitionMagic recovery partition
- 40h VENIX 80286
- 41h Personal RISC Boot
- 41h PowerPC boot partition
- 42h SFS (Secure File System) by Peter Gutmann
- 45h EUMEL/Elan
- 46h EUMEL/Elan
- 47h EUMEL/Elan
- 48h EUMEL/Elan
- 4Fh Oberon boot/data partition
- 50h OnTrack Disk Manager, read-only partition
- 51h OnTrack Disk Manager, read/write partition
- 51h NOVELL
- 52h CP/M
- 52h Microport System V/386
- 53h OnTrack Disk Manager, write-only partition???
- 54h OnTrack Disk Manager (DDO)
- 55h EZ-Drive (see also INT 13/AH=FFh"EZ-Drive")
- 56h GoldenBow VFeature
- 5Ch Priam EDISK
- 61h SpeedStor
- 63h Unix SysV/386, 386/ix
- 63h Mach, MtXinu BSD 4.3 on Mach
- 63h GNU HURD
- 64h Novell NetWare 286
- 64h SpeedStore
- 65h Novell NetWare (3.11)
- 67h Novell
- 68h Novell
- 69h Novell
- 70h DiskSecure Multi-Boot
- 71h officially listed as reserved
- 73h officially listed as reserved
- 74h officially listed as reserved
- 75h PC/IX
- 76h officially listed as reserved
- 7Eh F.I.X.
- 80h Minix v1.1 - 1.4a
- 81h Minix v1.4b+
- 81h Linux
- 81h Mitac Advanced Disk Manager
- 82h Linux Swap partition
- 82h Prime
- 82h Solaris (Unix)
- 83h Linux native file system (ext2fs/xiafs)
- 84h OS/2-renumbered type 04h partition (related to hiding DOS C: drive)
- 85h Linux EXT
- 86h FAT16 volume/stripe set (Windows NT)
- 87h HPFS Fault-Tolerant mirrored partition
- 87h NTFS volume/stripe set
- 93h Amoeba file system
- 94h Amoeba bad block table
- 99h Mylex EISA SCSI
- A0h Phoenix NoteBIOS Power Management "Save-to-Disk" partition
- A1h officially listed as reserved
- A3h officially listed as reserved
- A4h officially listed as reserved
- A5h FreeBSD, BSD/386
- A6h OpenBSD
- A9h NetBSD (http://www.netbsd.org/)
- B1h officially listed as reserved
- B3h officially listed as reserved
- B4h officially listed as reserved
- B6h officially listed as reserved
- B7h BSDI file system (secondarily swap)
- B8h BSDI swap partition (secondarily file system)
- BEh Solaris boot partition
- C0h DR-DOS/Novell DOS secured partition
- C0h CTOS
- C1h DR DOS 6.0 LOGIN.EXE-secured 12-bit FAT partition
- C4h DR DOS 6.0 LOGIN.EXE-secured 16-bit FAT partition
- C6h DR DOS 6.0 LOGIN.EXE-secured Huge partition
- C6h corrupted FAT16 volume/stripe set (Windows NT)
- C7h Syrinx Boot
- C7h corrupted NTFS volume/stripe set
- CBh Reserved for DR-DOS secured FAT32
- CCh Reserved for DR-DOS secured FAT32 (LBA)
- CEh Reserved for DR-DOS secured FAT16 (LBA)
- D0h Multiuser DOS secured FAT12
- D1h Old Multiuser DOS secured FAT12
- D4h Old Multiuser DOS secured FAT16 (<= 32M)
- D5h Old Multiuser DOS secured extended partition
- D6h Old Multiuser DOS secured FAT16 (> 32M)
- D8h CP/M-86
- DBh CP/M, Concurrent CP/M, Concurrent DOS
- DBh CTOS (Convergent Technologies OS)
- E1h SpeedStor 12-bit FAT extended partition
- E2h DOS read-only (Florian Painke's XFDISK 1.0.4)
- E3h DOS read-only
- E3h Storage Dimensions
- E4h SpeedStor 16-bit FAT extended partition
- E5h officially listed as reserved
- E6h officially listed as reserved
- EBh BeOS BFS (BFS1)
- F1h Storage Dimensions
- F2h DOS 3.3+ secondary partition
- F3h officially listed as reserved
- F4h SpeedStor
- F4h Storage Dimensions
- F5h Prologue
- F6h officially listed as reserved
- FEh LANstep
- FEh IBM PS/2 IML (Initial Microcode Load) partition
- FFh Xenix bad block table
- Note: for partition type 07h, one should inspect the partition boot record
- for the actual file system type
- SeeAlso: #00651
- (Table 00653)
- Values Bootstrap loader is called with (IBM BIOS):
- CS:IP = 0000h:7C00h
- DH = access
- bits 7-6,4-0: don't care
- bit 5: =0 device supported by INT 13
- DL = boot drive
- 00h first floppy
- 80h first hard disk
- --------B-1A00-------------------------------
- INT 1A - TIME - GET SYSTEM TIME
- AH = 00h
- Return: CX:DX = number of clock ticks since midnight
- AL = midnight flag, nonzero if midnight passed since time last read
- Notes: there are approximately 18.2 clock ticks per second, 1800B0h per 24 hrs
- (except on Tandy 2000, where the clock runs at 20 ticks per second)
- IBM and many clone BIOSes set the flag for AL rather than incrementing
- it, leading to loss of a day if two consecutive midnights pass
- without a request for the time (e.g. if the system is on but idle)
- since the midnight flag is cleared, if an application calls this
- function after midnight before DOS does, DOS will not receive the
- midnight flag and will fail to advance the date
- SeeAlso: AH=01h,AH=02h,INT 21/AH=2Ch,INT 55"Tandy 2000",INT 4E/AH=02h"TI"
- SeeAlso: INT 62/AX=0099h,MEM 0040h:006Ch,MEM 0040h:0070h
- --------B-1A01-------------------------------
- INT 1A - TIME - SET SYSTEM TIME
- AH = 01h
- CX:DX = number of clock ticks since midnight
- Return: nothing
- Notes: there are approximately 18.2 clock ticks per second, 1800B0h per 24 hrs
- (except on Tandy 2000, where the clock runs at 20 ticks per second)
- this call resets the midnight-passed flag
- SeeAlso: AH=00h,AH=03h,INT 21/AH=2Dh
- --------B-1A02-------------------------------
- INT 1A - TIME - GET REAL-TIME CLOCK TIME (AT,XT286,PS)
- AH = 02h
- Return: CF clear if successful
- CH = hour (BCD)
- CL = minutes (BCD)
- DH = seconds (BCD)
- DL = daylight savings flag (00h standard time, 01h daylight time)
- CF set on error (i.e. clock not running or in middle of update)
- Note: this function is also supported by the Sperry PC, which predates the
- IBM AT; the data is returned in binary rather than BCD on the Sperry,
- and DL is always 00h
- SeeAlso: AH=00h,AH=03h,AH=04h,INT 21/AH=2Ch
- --------b-1A02-------------------------------
- INT 1A - Tandy 2000 - TIME - GET DATE AND TIME
- AH = 02h
- Return: BX = number of days since January 1, 1980
- CH = hours
- CL = minutes
- DH = seconds
- DL = hundredths
- SeeAlso: AH=03h"Tandy 2000",INT 55"Tandy 2000"
- --------B-1A03-------------------------------
- INT 1A - TIME - SET REAL-TIME CLOCK TIME (AT,XT286,PS)
- AH = 03h
- CH = hour (BCD)
- CL = minutes (BCD)
- DH = seconds (BCD)
- DL = daylight savings flag (00h standard time, 01h daylight time)
- Return: nothing
- Note: this function is also supported by the Sperry PC, which predates the
- IBM AT; the data is specified in binary rather than BCD on the
- Sperry, and the value of DL is ignored
- SeeAlso: AH=01h,AH=03h,AH=05h,INT 21/AH=2Dh,INT 4B/AH=01h
- --------b-1A03-------------------------------
- INT 1A - Tandy 2000 - TIME - SET DATE AND TIME
- AH = 03h
- BX = number of days since January 1, 1980
- CH = hours
- CL = minutes
- DH = seconds
- DL = hundredths
- Return: nothing
- SeeAlso: AH=02h"Tandy 2000",INT 55"Tandy 2000"
- --------B-1A04-------------------------------
- INT 1A - TIME - GET REAL-TIME CLOCK DATE (AT,XT286,PS)
- AH = 04h
- Return: CF clear if successful
- CH = century (BCD)
- CL = year (BCD)
- DH = month (BCD)
- DL = day (BCD)
- CF set on error
- SeeAlso: AH=02h,AH=04h"Sperry",AH=05h,INT 21/AH=2Ah,INT 4B/AH=02h"TI"
- --------b-1A04-------------------------------
- INT 1A - Sperry PC - GET REAL-TIME CLOCK DATE
- AH = 04h
- Return: CF clear if successful
- CL = year-1980
- DH = month (binary) (01h-0Ch)
- DL = day (binary) (01h-1Fh)
- CF set on error
- SeeAlso: AH=02h,AH=04h,AH=05h"Sperry",INT 21/AH=2Ah,INT 4B/AH=02h"TI"
- --------B-1A05-------------------------------
- INT 1A - TIME - SET REAL-TIME CLOCK DATE (AT,XT286,PS)
- AH = 05h
- CH = century (BCD)
- CL = year (BCD)
- DH = month (BCD)
- DL = day (BCD)
- Return: nothing
- SeeAlso: AH=04h,INT 21/AH=2Bh"DATE",INT 4B/AH=00h"TI"
- --------b-1A05-------------------------------
- INT 1A - Sperry PC - SET REAL-TIME CLOCK DATE
- AH = 05h
- CL = year-1980
- CH = 00h (???)
- DH = month (binary) (01h-0Ch)
- DL = day (binary) (01h-1Fh)
- Return: nothing
- SeeAlso: AH=02h,AH=04h"Sperry",AH=05h,INT 21/AH=2Bh"DATE"
- --------B-1A06-------------------------------
- INT 1A - TIME - SET ALARM (AT,XT286,PS)
- AH = 06h
- CH = hour (BCD)
- CL = minutes (BCD)
- DH = seconds (BCD)
- Return: CF set on error (alarm already set or clock stopped for update)
- CF clear if successful
- Notes: the alarm occurs every 24 hours until turned off, invoking INT 4A each
- time
- the BIOS does not check for invalid values for the time, so the CMOS
- clock chip's "don't care" setting (any values between C0h and FFh)
- may be used for any or all three parts. For example, to create an
- alarm once a minute, every minute, call with CH=FFh, CL=FFh, and
- DH=00h.
- SeeAlso: AH=07h,AH=0Ch,INT 4A"SYSTEM"
- --------B-1A07-------------------------------
- INT 1A - TIME - CANCEL ALARM (AT,XT286,PS)
- AH = 07h
- Return: alarm disabled
- Note: does not disable the real-time clock's IRQ
- SeeAlso: AH=06h,AH=0Dh,INT 70
- --------B-1A08-------------------------------
- INT 1A - TIME - SET RTC ACTIVATED POWER ON MODE (CONVERTIBLE)
- AH = 08h
- CH = hours in BCD
- CL = minutes in BCD
- DH = seconds in BCD
- SeeAlso: AH=09h
- --------B-1A09-------------------------------
- INT 1A - TIME - READ RTC ALARM TIME AND STATUS (CONV,PS30)
- AH = 09h
- Return: CH = hours in BCD
- CL = minutes in BCD
- DH = seconds in BCD
- DL = alarm status
- 00h alarm not enabled
- 01h alarm enabled but will not power up system
- 02h alarm will power up system
- SeeAlso: AH=08h
- --------B-1A0A-------------------------------
- INT 1A - TIME - READ SYSTEM-TIMER DAY COUNTER (XT2,PS)
- AH = 0Ah
- Return: CF set on error
- CF clear if successful
- CX = count of days since Jan 1,1980
- SeeAlso: AH=04h,AH=0Bh
- --------B-1A0B-------------------------------
- INT 1A - TIME - SET SYSTEM-TIMER DAY COUNTER (XT2,PS)
- AH = 0Bh
- CX = count of days since Jan 1,1980
- Return: CF set on error
- CF clear if successful
- SeeAlso: AH=05h,AH=0Ah
- --------B-1A0C-------------------------------
- INT 1A - TIME - SET RTC DATE/TIME ACTIVATED POWER-ON MODE (IBM)
- AH = 0Ch
- CH = hours (BCD)
- CL = minutes (BCD)
- DH = seconds (BCD)
- DL = day of month (BCD)
- Return: CF clear if successful
- CF set on error (alarm already set or clock nonfunctional)
- Desc: set an automatic power-on for a given time in the future
- Note: IBM classifies this function as optional
- SeeAlso: AH=06h,AH=0Dh,AH=0Eh,INT 4A
- --------B-1A0D-------------------------------
- INT 1A - TIME - RESET RTC DATE/TIME ACTIVATED POWER-ON MODE (IBM)
- AH = 0Dh
- Return: CF clear if successful
- CF set on error
- Desc: cancel a previously-set power-on alarm
- Note: IBM classifies this function as optional
- SeeAlso: AH=07h,AH=0Ch,AH=0Eh
- --------B-1A0E-------------------------------
- INT 1A - TIME - GET RTC DATE/TIME ALARM AND STATUS (IBM)
- AH = 0Eh
- Return: CF clear if successful
- BH = alarm status
- 00h disabled
- 01h enabled but will not power-up system
- 02h enabled, system will power-up on activation
- CH = alarm time, hours (BCD)
- CL = alarm time, minutes (BCD)
- DH = seconds (BCD)
- DL = day of month (BCD)
- CF set on error
- SeeAlso: AH=0Ch,AH=0Dh,AH=0Fh
- --------B-1A0F-------------------------------
- INT 1A - TIME - INITIALIZE REAL-TIME CLOCK
- AH = 0Fh
- AL = reserved (0)
- Return: CF clear if successful
- CF set on error
- SeeAlso: AH=0Ch,AH=0Dh,AH=0Eh
- --------J-1A10-------------------------------
- INT 1A - NEC PC-9800 series - PRINTER - INITIALIZE
- AH = 10h
- ???
- Return: ???
- SeeAlso: AH=11h,AH=12h,INT 17/AH=01h
- --------J-1A1000-----------------------------
- INT 1A - NEC PC-9800 series - INSTALLATION CHECK
- AX = 1000h
- Return: AX <> 1000h if NEC
- --------J-1A11-------------------------------
- INT 1A - NEC PC-9800 series - PRINTER - OUTPUT CHARACTER
- AH = 11h
- ???
- Return: ???
- SeeAlso: AH=10h,AH=12h,INT 17/AH=00h
- --------J-1A12-------------------------------
- INT 1A - NEC PC-9800 series - PRINTER - SENSE STATUS
- AH = 12h
- ???
- Return: ???
- SeeAlso: AH=10h,AH=11h,INT 17/AH=02h
- --------A-1A3601-----------------------------
- INT 1A - WORD PERFECT v5.0 Third Party Interface - INSTALLATION CHECK
- AX = 3601h
- Return: DS:SI = routine to monitor keyboard input, immediately preceded by the
- ASCIZ string "WPCORP\0"
- Notes: WordPerfect 5.0 will call this interrupt at start up to determine if a
- third party product wants to interface with it. The third party
- product must intercept this interrupt and return the address of a
- keyboard monitor routine.
- Before checking for keyboard input, and after every key entered by the
- user, Word Perfect will call the routine whose address was provided
- in DS:SI with the following parameters:
- Entry: AX = key code or 0
- BX = WordPerfect state flag
- Exit: AX = 0 or key code
- BX = 0 or segment address of buffer with key codes
- See the "WordPerfect 5.0 Developer's Toolkit" for further information.
- SeeAlso: INT 16/AX=5500h
- --------N-1A6108-----------------------------
- INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDWITHREPLY" - SEND MSG AND GET REPLY
- AX = 6108h
- STACK: WORD conversation ID (0000h-0009h)
- DWORD pointer to message buffer
- WORD length of message
- DWORD pointer to reply buffer
- WORD length of reply buffer
- WORD 0000h (use default "Cparams" structure)
- Return: AX = status (see #00654)
- STACK unchanged
- Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
- which implements the Simple Network Application Protocol
- SeeAlso: AX=6205h
- (Table 00654)
- Values for SNAP.EXE status:
- 0000h successful
- F830h "SNAP_ABORTED"
- FC04h "SNAP_SERVERDIED"
- FC05h "SNAP_RESEND"
- FC06h "SNAP_SELECTFAILED"
- FC07h "SNAP_WRONGVERSION"
- FC08h "SNAP_INVALIDACK"
- FC09h "SNAP_TIMEOUT"
- FC0Ah "SNAP_SERVERREJECT"
- FC0Bh "SNAP_NOREPLYDUE"
- FC0Ch "SNAP_NOAUTHENTICATE"/"SNAP_GUARDIAN_ERROR"
- FC0Dh "SNAP_NOINIT"
- FC0Eh "SNAP_SOCKETERROR"
- FC0Fh "SNAP_BUFFERLIMIT"
- FC10h "SNAP_INVALIDCID"
- FC11h "SNAP_INVALIDOP"
- FC12h "SNAP_XMITFAIL"
- FC13h "SNAP_NOMORERETRIES"
- FC14h "SNAP_BADPARMS"
- FC15h "SNAP_NOMEMORY"
- FC16h "SNAP_NOMORECONVS"
- FFFFh failed (invalid function/parameter)
- --------N-1A6205-----------------------------
- INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDNOREPLY" - SEND MSG, DON'T AWAIT REPLY
- AX = 6205h
- STACK: WORD conversation ID (0000h-0009h)
- DWORD pointer to message
- WORD length of message
- WORD 0000h (use default "Cparms" structure)
- Return: AX = status (see #00654)
- STACK unchanged
- SeeAlso: AX=6108h
- --------N-1A6308-----------------------------
- INT 1A - SNAP.EXE 3.2+ - "SNAP_BEGINCONV" - BEGIN CONVERSATION
- AX = 6308h
- STACK: WORD offset of ASCIZ "guardian"
- WORD offset of ASCIZ hostname
- WORD offset of ASCIZ server name
- WORD offset of ASCIZ userid
- WORD offset of ASCIZ password
- WORD offset of password length
- WORD offset of password type
- WORD offset of "Cparms" structure (see #00655)
- Return: ???
- STACK unchanged
- Note: all stacked offsets are within the SNAP data segment (use AX=6A01h
- to allocate a buffer)
- SeeAlso: AX=6405h,AX=7202h
- Format of SNAP.EXE Cparms structure:
- Offset Size Description (Table 00655)
- 00h WORD retry delay in seconds
- 02h WORD timeout delay in seconds
- 04h WORD maximum buffer size
- 06h WORD encryption level
- --------N-1A6405-----------------------------
- INT 1A - SNAP.EXE 3.2+ - "SNAP_ENDCONV" - END CONVERSATION
- AX = 6405h
- STACK: WORD conversation ID (0000h-0009h)
- DWORD pointer to message buffer
- WORD length of message
- WORD 0000h (use default "Cparms" structure)
- Return: AX = status (see #00654)
- STACK unchanged
- Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
- which implements the Simple Network Application Protocol
- SeeAlso: AX=6308h
- --------N-1A6900-----------------------------
- INT 1A - SNAP.EXE 3.2+ - "SNAP_DATASEG" - GET RESIDENT DATA SEGMENT
- AX = 6900h
- Return: AX = value used for DS by resident code
- SeeAlso: AX=6A01h,AX=6F01h
- --------N-1A6A01-----------------------------
- INT 1A - SNAP.EXE 3.2+ - "SNAP_ALLOC" - ALLOCATE BUFFER IN SNAP DATA SEGMENT
- AX = 6A01h
- STACK: WORD number of bytes to allocate
- Return: AX = offset of allocated buffer or 0000h if out of memory
- STACK unchanged
- Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
- which implements the Simple Network Application Protocol
- SeeAlso: AX=6B01h
- --------N-1A6B01-----------------------------
- INT 1A - SNAP.EXE 3.2+ - "SNAP_FREE" - DEALLOCATE BUFFER IN SNAP DATA SEGMENT
- AX = 6B01h
- STACK: WORD offset within SNAP data segment of previously allocated
- buffer
- Return: STACK unchanged
- Note: this call is a NOP if the specified offset is 0000h
- SeeAlso: AX=6A01h
- --------N-1A6C04-----------------------------
- INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYTO" - COPY DATA TO RESIDENT SNAP PACKAGE
- AX = 6C04h
- STACK: WORD offset within SNAP data segment of dest (nonzero)
- WORD segment of source buffer
- WORD offset of source buffer
- WORD number of bytes to copy
- Return: AX = offset of byte after last one copied to destination
- STACK unchanged
- Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
- which implements the Simple Network Application Protocol
- SeeAlso: AX=6D04h
- --------N-1A6D04-----------------------------
- INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYFROM" - COPY DATA FROM RESIDENT SNAP PACKAGE
- AX = 6D04h
- STACK: WORD offset within SNAP data segment of source buffer
- WORD segment of destination buffer
- WORD offset of destination buffer
- WORD number of bytes to copy
- Return: AX = offset of byte after last one copied from source
- buffer filled
- STACK unchanged
- SeeAlso: AX=6C04h
- --------N-1A6E01-----------------------------
- INT 1A - SNAP.EXE 3.2+ - "SNAP_SETDEBUG" - SET ???
- AX = 6E01h
- STACK: WORD new value for ???
- Return: AX = old value of ???
- STACK unchanged
- Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
- which implements the Simple Network Application Protocol
- --------N-1A6F01-----------------------------
- INT 1A - SNAP.EXE 3.2+ - "SNAP_CHKINSTALL" - INSTALLATION CHECK
- AX = 6F01h
- STACK: WORD 0000h
- Return: AX = status
- 0000h SNAP is resident
- other SNAP not present
- STACK unchanged
- Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
- which implements the Simple Network Application Protocol, and is
- required by PCVENUS (a network shell). The combination of SNAP and
- PCVENUS allows the use of the Andrew File System as one or more
- networked drives.
- SeeAlso: AX=6900h,AX=7400h
- --------N-1A7002-----------------------------
- INT 1A - SNAP.EXE 3.2+ - "SNAP_SETANCHOR"
- AX = 7002h
- STACK: WORD anchor number (0000h-0009h)
- WORD new value for the anchor
- Return: AX = status
- 0000h successful
- FFFFh failed (top word on stack not in range 00h-09h)
- STACK unchanged
- SeeAlso: AX=7101h
- --------N-1A7101-----------------------------
- INT 1A - SNAP.EXE 3.2+ - "SNAP_GETANCHOR"
- AX = 7101h
- STACK: WORD anchor number (0000h-0009h)
- Return: AX = anchor's value
- STACK unchanged
- Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
- which implements the Simple Network Application Protocol
- SeeAlso: AX=7002h
- --------N-1A7202-----------------------------
- INT 1A - SNAP.EXE 3.2+ - "SNAP_SETCONVPARMS" - SET CONVERSATION PARAMETERS
- AX = 7202h
- STACK: WORD conversation ID (0000h-0009h)
- WORD offset within resident data segment of "Cparms"
- structure (see #00655)
- Return: AX = status???
- STACK unchanged
- SeeAlso: AX=6308h
- --------N-1A7302-----------------------------
- INT 1A - SNAP.EXE 3.2+ - "SNAP_CLIENTVERSION" - ???
- AX = 7302h
- STACK: WORD conversation ID (0000h-0009h)
- WORD offset within resident data segment of ???
- Return: AX = ???
- ???
- STACK unchanged
- SeeAlso: AX=7400h
- --------N-1A7400-----------------------------
- INT 1A - SNAP.EXE 3.2+ - "SNAP_VERSION" - GET VERSION
- AX = 7400h
- Return: AX = version (AH=major, AL=minor)
- Note: this call is only valid if SNAP is installed
- SeeAlso: AX=7302h,INT 1A/AX=6F01h
- --------N-1A75-------------------------------
- INT 1A - SNAP.EXE 3.2+ - "SNAP_NOP" - ???
- AH = 75h
- AL = ???
- Return: AX = ??? (0000h)
- Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
- which implements the Simple Network Application Protocol
- --------N-1A76-------------------------------
- INT 1A - SNAP.EXE 3.2+ - "SNAP_802_5" - ???
- AH = 76h
- AL = ???
- Return: AX = ???
- --------N-1A77-------------------------------
- INT 1A - SNAP.EXE 3.4 - ???
- AH = 77h
- AL = ??? (at least 01h)
- STACK: WORD ???
- ???
- Return: ???
- STACK unchanged
- --------N-1A7802-----------------------------
- INT 1A - SNAP.EXE 3.4 - ???
- AX = 7802h
- STACK: WORD ???
- WORD ???
- Return: ???
- STACK unchanged
- Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
- which implements the Simple Network Application Protocol
- --------s-1A7F-------------------------------
- INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND???
- AH = 7Fh
- ???
- Return: ???
- Note: this function is not supported by the Tandy 1000SL/TL BIOS
- SeeAlso: AH=80h,AH=83h,AH=85h
- --------s-1A80-------------------------------
- INT 1A - PCjr, Tandy 2500???, Tandy 1000SL/TL - SET UP SOUND MULTIPLEXOR
- AH = 80h
- AL = 00h source is 8253 channel 2
- 01h source is cassette input
- 02h source is I/O channel "Audio IN"
- 03h source is sound generator chip
- Note: although documented in the 1000TL Technical Reference, the 1000TL
- BIOS has just an IRET for this call
- SeeAlso: AH=7Fh,AH=83h
- --------X-1A80-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - GET NUMBER OF ADAPTERS
- AH = 80h
- Return: CF clear if successful
- CX = 5353h ('SS') if Socket Services installed
- AL = number of adapters present (0-16)
- AH destroyed
- CF set on error
- AH = error code (see #00656)
- SeeAlso: AH=83h"PCMCIA"
- (Table 00656)
- Values for PCMCIA error codes:
- 01h "BAD_ADAPTER" nonexistent adapter
- 02h "BAD_ATTRIBUTE" invalid attribute specified
- 03h "BAD_BASE" invalid system memory base address
- 04h "BAD_EDC" invalid EDC generator specified
- 05h "BAD_INDICATOR" invalid indicator specified
- 06h "BAD_IRQ" invalid IRQ channel specified
- 07h "BAD_OFFSET" invalid PCMCIA card offset specified
- 08h "BAD_PAGE" invalid page specified
- 09h "BAD_READ" unable to complete request
- 0Ah "BAD_SIZE" invalid window size specified
- 0Bh "BAD_SOCKET" nonexistent socket specified
- 0Ch "BAD_TECHNOLOGY" unsupported Card Technology for writes
- 0Dh "BAD_TYPE" unavailable window type specified
- 0Eh "BAD_VCC" invalid Vcc power level index specified
- 0Fh "BAD_VPP" invalid Vpp1 or Vpp2 power level index specified
- 10h "BAD_WAIT" invalid number of wait states specified
- 11h "BAD_WINDOW" nonexistent window specified
- 12h "BAD_WRITE" unable to complete request
- 13h "NO_ADAPTERS" no adapters installed, but Socket Services is present
- 14h "NO_CARD" no card in socket
- 15h function not supported
- 16h invalid mode
- 17h invalid speed
- 18h busy
- --------X-1A81-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - REGISTER STATUS CHANGE CALLBACK
- AH = 81h
- DS:DX -> callback routine (see #00657) or 0000h:0000h to disable
- Return: CF clear if successful
- AH destroyed
- CF set on error
- AH = error code (see #00656)
- Note: the callback will be invoked on any socket changes whose notification
- has not been disabled with the status change enable mask; it may be
- invoked either while processing a hardware interrupt from the adapter
- or while processing the following Socket Services request
- SeeAlso: AH=80h"PCMCIA",AH=82h"PCMCIA"
- (Table 00657)
- Values PCMCIA callback routine is invoked with:
- AL = adapter number
- BH = status change interrupt enable mask (see #00658)
- BL = socket number
- DH = current socket status (see #00659)
- DL = current card status (see #00660)
- Return: all registers preserved
- Notes: the callback may be invoked during a hardware interrupt, and may not
- call on Socket Services
- the callback will be invoked once for each socket with a status change
- Bitfields for PCMCIA status change interrupt enable mask:
- Bit(s) Description (Table 00658)
- 7 card detect change
- 6 ready change
- 5 battery warning change
- 4 battery dead change
- 3 insertion request
- 2 ejection request
- 1-0 reserved (0)
- Bitfields for PCMCIA current socket status:
- Bit(s) Description (Table 00659)
- 7 card changed
- 6 reserved (0)
- 5 card insertion complete
- 4 card ejection complete
- 3 card insertion request pending
- 2 card ejection request pending
- 1 card locked
- 0 reserved (0)
- Bitfields for PCMCIA current card status:
- Bit(s) Description (Table 00660)
- 7 card detect
- 6 ready
- 5 battery voltage detect 2 (battery warning)
- 4 battery voltage detect 1 (battery dead)
- 3-1 reserved (0)
- 0 write protected
- --------s-1A8100-----------------------------
- INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND - INSTALLATION CHECK
- AX = 8100h
- Return: AL > 80h if supported
- AX = 00C4h if supported (1000SL/TL)
- CF set if sound chip is busy
- CF clear if sound chip is free
- Note: the value of CF is not definitive; call this function until CF is
- clear on return, then call AH=84h"Tandy"
- --------s-1A82-------------------------------
- INT 1A - Tandy 2500???, Tandy 1000SL/TL - DIGITAL SOUND - RECORD SOUND
- AH = 82h
- ES:BX -> buffer for sound samples
- CX = length of buffer
- DX = transfer rate (1-4095, 1 is fastest)
- Return: AH = 00h
- CF set if sound busy
- CF clear if sound chip free
- Note: the value in DX should be 1/10 the corresponding value for
- INT 1A/AH=83h on the 1000TL, 1/11.5 on the 1000SL. Call
- INT 1A/AX=8100h and INT 1A/AH=84h before invoking this function.
- The BIOS issues an INT 15/AX=91FBh when the input is complete
- DMA across a 64K boundary is masked by the BIOS
- --------X-1A82-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - REGISTER CARD TECHNOLOGY CALLBACK
- AH = 82h
- DS:DX -> callback routine (see #00661) or 0000h:0000h
- Return: CF clear if successful
- AH destroyed
- CF set on error
- AH = error code (see #00656)
- Note: the callback is invoked on a Write Multiple request with an unsupported
- card technology type
- SeeAlso: AH=81h"PCMCIA",AH=94h
- (Table 00661)
- Values PCMCIA callback routine is invoked with:
- ES:AX -> Low-Level Socket Services Routines (see #00663)
- BH = socket attributes (see #00662)
- CX = number of bytes or words to write
- DS:SI -> data buffer to be written
- DX:DI -> 26-bit linear card address
- BP = card technology type
- Return: CF clear if successful
- CF set on error
- AH = error code (07h,0Ch,12h,14h) (see #00656)
- Bitfields for PCMCIA socket attributes:
- Bit(s) Description (Table 00662)
- 7-4 reserved (0)
- 3 packed buffer
- 2 even bytes only (only valid if 1 set)
- 1 data width (clear = byte, set = word)
- 0 memory type (clear = common, set = attribute)
- Format of PCMCIA Low-Level Socket Services Routines:
- Offset Size Description (Table 00663)
- 00h WORD offset of Write Many routine (see #00664)
- 02h WORD offset of Write One routine (see #00665)
- 04h WORD offset of Read One routine (see #00666)
- 06h WORD offset of Increment Offset routine (see #00667)
- 08h WORD offset of Set Offset routine (see #00668)
- 0Ah WORD offset of Get Status routine (see #00669)
- (Table 00664)
- Call Write Many routine with:
- BH = socket attributes (see #00662)
- CX = number of bytes or words to write
- DS:SI -> data to be written
- Return: CF clear if successful
- CF set on error
- (Table 00665)
- Call Write One routine with:
- AL/AX = data to be written
- BH = socket attributes (see #00662)
- Return: CF clear if successful
- CF set on error
- (Table 00666)
- Call Read One routine with:
- BH = socket attributes (see #00662)
- Return: CF clear if successful
- AL/AX = data read
- CF set on error
- (Table 00667)
- Call Increment Offset routine with:
- BH = socket attributes (see #00662)
- Return: CF clear if successful
- CF set on error
- (Table 00668)
- Call Set Offset routine with:
- DX:DI = new offset address
- Return: CF clear if successful
- CF set on error
- (Table 00669)
- Call Get Status routine with:
- nothing
- Return: AL = current card status (see #00660)
- --------s-1A83-------------------------------
- INT 1A - Tandy 2500, Tandy 1000L series - START PLAYING DIGITAL SOUND
- AH = 83h
- AL = volume (0=silence, 7=highest)
- CX = number of bytes to play
- DX = time between sound samples (multiples of 273 nanoseconds)
- only bits 11-0 used
- ES:BX -> sound data (array of 8-bit unsigned PCM samples)
- Return: AH = 00h
- CF set if sound is busy
- CF clear if sound chip is free
- Notes: this call returns immediately while the sound plays in the
- background; the sound chip is clocked at 3.57 MHz, with the low 12
- bits of DX specifying the clock divisor
- The BIOS appears to call INT 15/AX=91FBh when the sound device
- underflows to allow another INT 1A/AH=83h for seamless playing of
- long sounds.
- SeeAlso: AH=84h"Tandy",INT 15/AH=91h
- --------X-1A83-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - GET SOCKET SERVICES VERSION NUMBER
- AH = 83h
- AL = adapter number
- Return: CF clear if successful
- AX = Socket Services version (BCD)
- BX = implementation version (BCD)
- CX = 5353h ("SS")
- DS:SI -> ASCIZ implementor description
- CF set on error
- AH = error code (01h) (see #00656)
- Note: the current version (from the Revision A.00 documentation) of Socket
- Services is 1.00 (AX=0100h)
- SeeAlso: AH=80h"PCMCIA"
- --------s-1A84-------------------------------
- INT 1A - Tandy 2500, Tandy 1000L series - STOP PLAYING DIGITAL SOUND
- AH = 84h
- Return: ???
- Note: the BIOS will call INT 15/AX=91FBh when the sound has stopped playing
- SeeAlso: AH=83h"Tandy",AH=85h"Tandy"
- --------X-1A84-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - INQUIRE ADAPTER
- AH = 84h
- AL = adapter number
- Return: CF clear if successful
- AH destroyed
- BH = number of windows
- BL = number of sockets (1-16)
- CX = number of EDCs
- DH = capabilities (see #00670)
- DL = status change interrupt used (only if DH bit 3 set)(see #00671)
- CF set on error
- AH = error code (01h) (see #00656)
- SeeAlso: AH=80h"PCMCIA",AH=85h"PCMCIA",AH=87h
- Bitfields for PCMCIA capabilities:
- Bit(s) Description (Table 00670)
- 7-6 reserved (0)
- 5 status change interrupt is hardware shareable
- 4 status change interrupt is software shareable
- 3 status change interrupt
- 2 data bus width is per-socket rather than per-window
- 1 power management is per-adapter rather than per-socket
- 0 indicators are per-adapter rather than per-socket
- (Table 00671)
- Values for PCMCIA status change interrupt usage:
- 00h-0Fh IRQ level
- 10h NMI
- 11h I/O check
- 12h bus error
- 13h vendor specific
- 14h-FFh reserved
- --------s-1A85-------------------------------
- INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND???
- AH = 85h
- ???
- Return: ???
- Note: this function is not supported by the Tandy 1000SL/TL BIOS
- SeeAlso: AH=7Fh,AH=83h"Tandy"
- --------X-1A85-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - GET ADAPTER
- AH = 85h
- AL = adapter number
- Return: CF clear if successful
- AH destroyed
- DH = adapter attributes (see #00672)
- CF set on error
- AH = error code (01h) (see #00656)
- SeeAlso: AH=84h"PCMCIA",AH=86h
- Bitfields for PCMCIA adapter attributes:
- Bit(s) Description (Table 00672)
- 7-5 reserved (0)
- 4 hardware share status change
- 3 software share status change
- 2 enable status change interrupts
- 1 adapter preserves state information during reduced power consumption
- 0 attempting to reduce power consumption
- --------X-1A86-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - SET ADAPTER
- AH = 86h
- AL = adapter number
- DH = new adapter attributes (see #00672)
- Return: CF clear if successful
- AH destroyed
- CF set on error
- AH = error code (01h) (see #00656)
- SeeAlso: AH=84h"PCMCIA",AH=85h"PCMCIA"
- --------X-1A87-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - INQUIRE WINDOW
- AH = 87h
- AL = adapter number
- BH = window number
- Return: CF clear if successful
- AH destroyed
- BL = capabilities (see #00673)
- CX = bitmap of assignable sockets
- DH = EISA A15-A12 address lines (in bits 7-4, bits 3-0 = 0)
- DL = supported access speeds (see #00674)
- DS:SI -> Memory Window Characteristics table (see #00675)
- DS:DI -> I/O Window Characteristics table (see #00676)
- CF set on error
- AH = error code (01h,11h) (see #00656)
- SeeAlso: AH=84h"PCMCIA",AH=88h,AH=89h,AH=8Ch
- Bitfields for PCMCIA window capabilities:
- Bit(s) Description (Table 00673)
- 7-5 reserved (0)
- 4 separate enable for EISA comon space
- 3 EISA I/O mappable
- 2 I/O space
- 1 attribute memory
- 0 common memory
- Bitfields for PCMCIA supported access speeds:
- Bit(s) Description (Table 00674)
- 7 reserved (0)
- 6 600 ns
- 5 300 ns
- 4 250 ns
- 3 200 ns
- 2 150 ns
- 1 100 ns
- 0 WAIT line monitoring
- Format of PCMCIA Memory Window Characteristics table:
- Offset Size Description (Table 00675)
- 00h WORD window capabilities (see #00677)
- 02h WORD minimum base address in 4K pages
- 04h WORD maximum base address in 4K pages
- 06h WORD minimum window size in 4K pages
- 08h WORD maximum window size in 4K pages
- 0Ah WORD window size granularity (4K units)
- 0Ch WORD required base address alignment (4K units)
- 0Eh WORD required card offset alignment (4K units)
- Format of PCMCIA I/O Window Characteristics table:
- Offset Size Description (Table 00676)
- 00h WORD window capabilities (see #00677)
- 02h WORD minimum base address in bytes
- 04h WORD maximum base address in bytes
- 06h WORD minimum window size in bytes
- 08h WORD maximum window size in bytes
- 0Ah WORD window size granularity (bytes)
- Bitfields for PCMCIA window capabilities:
- Bit(s) Description (Table 00677)
- 0 programmable base address
- 1 programmable window size
- 2 window disable/enable supported
- 3 8-data bus
- 4 16-data bus
- 5 base address alignment on size boundary required
- 6 power-of-two size granularity
- ---memory windows---
- 7 card offset must be aligned on size boundary
- 8 paging hardware available
- 9 paging hardware shared
- 10 page disable/enable supported
- 11-15 reserved (0)
- ---I/O windows---
- 7-15 reserved (0)
- --------X-1A88-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - GET WINDOW
- AH = 88h
- AL = adapter number
- BH = window number
- Return: CF clear if successful
- AH destroyed
- BL = socket number (0-16) (0 = not assigned)
- CX = window size (bytes for I/O window, 4K units for memory window)
- DH = window attributes (see #00678)
- DL = access speed (only one bit set) (see #00674)
- SI = window base address (bytes if I/O, 4K units if memory)
- DI = card offset address (memory only, 4K units)
- CF set on error
- AH = error code (01h,11h) (see #00656)
- SeeAlso: AH=87h,AH=89h,AH=8Ah
- Bitfields for PCMCIA window attributes:
- Bit(s) Description (Table 00678)
- 0 memory-mapped rather than I/O-mapped
- 1 attribute memory rather than common (memory-mapped)
- EISA mapped (I/O)
- 2 enabled
- 3 16-data path
- 4 subdivided into pages (memory-mapped only)
- 5 non-specific access slot enable (EISA-mapped only)
- 6-7 reserved (0)
- --------X-1A89-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - SET WINDOW
- AH = 89h
- AL = adapter number
- BH = window number
- BL = socket number
- CX = window size (bytes if I/O window, 4K units if memory window)
- DH = window attributes (see #00678)
- DL = access speed (only one bit set) (see #00674)
- SI = window base address (bytes if I/O, 4K units if memory window)
- DI = card offset addrress (memory only, 4K units)
- Return: CF clear if successful
- AH destroyed
- CF set on error
- AH = error code (01h,03h,07h,08h,0Ah,0Bh,0Dh,10h,11h) (see #00656)
- SeeAlso: AH=87h,AH=88h,AH=8Bh
- --------X-1A8A-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - GET PAGE
- AH = 8Ah
- AL = adapter number
- BH = window number
- BL = page number
- Return: CF clear if successful
- AH destroyed
- DX = page attributes (see #00679)
- DI = memory card offset (4K units)
- CF set on error
- AH = error code (01h,08h,11h) (see #00656)
- Notes: this function is only valid for memory-mapped windows
- the socket being operated on is implied by the previous AH=89h call
- SeeAlso: AH=88h,AH=8Bh
- Bitfields for PCMCIA page attributes:
- Bit(s) Description (Table 00679)
- 0 page enabled
- 15-1 reserved (0)
- --------X-1A8B-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - SET PAGE
- AH = 8Bh
- AL = adapter number
- BH = window number
- BL = page number
- DX = page attributes (see #00679)
- DI = memory card offset (4K units)
- Return: CF clear if successful
- AH destroyed
- CF set on error
- AH = error code (01h,02h,07h,08h,11h) (see #00656)
- Notes: this function is only valid for memory-mapped windows
- the socket being operated on is implied by the previous AH=89h call
- SeeAlso: AH=89h,AH=8Ah
- --------X-1A8C-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - INQUIRE SOCKET
- AH = 8Ch
- AL = adapter number
- BL = socket number (01h to maximum supported by adapter)
- Return: CF clear if successful
- AH destroyed
- DH = capabilities (see #00680)
- DL = hardware indicators (see #00681)
- DS:SI -> Socket Characteristics table (see #00682)
- DS:DI -> Power Management table (see #00684)
- CF set on error
- AH = error code (01h,0Bh) (see #00656)
- SeeAlso: AH=87h,AH=8Dh,AH=8Eh
- Bitfields for PCMCIA socket capabilities:
- Bit(s) Description (Table 00680)
- 0 card change
- 1 card lock
- 2 insert card (motor control)
- 3 eject card (motor control)
- 4-7 reserved (0)
- Bitfields for PCMCIA socket hardware indicators:
- Bit(s) Description (Table 00681)
- 0 busy status
- 1 write-protected
- 2 battery status
- 3 card lock status
- 4 XIP status (eXecute-In-Place)
- 5-7 reserved (0)
- Format of PCMCIA Socket Characteristics table:
- Offset Size Description (Table 00682)
- 00h WORD supported card types (see #00683)
- 02h WORD steerable IRQ levels (bit 0 = IRQ0 to bit 15 = IRQ15)
- 04h WORD additional steerable IRQ levels
- bit 0: NMI
- bit 1: I/O check
- bit 2: bus error
- bit 3: vendor-unique
- bits 4-7 reserved (0)
- Bitfields for supported card types:
- Bit(s) Description (Table 00683)
- 0 memory card
- 1 I/O card
- 2-7 reserved (0)
- Format of PCMCIA Power Management table:
- Offset Size Description (Table 00684)
- 00h WORD number of entries in table (0 if power management not avail)
- 02h 2N BYTEs power levels
- byte 0: voltage in 0.1V units
- byte 1: power supply
- bit 7: Vcc
- bit 6: Vpp1
- bit 5: Vpp2
- --------X-1A8D-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - GET SOCKET
- AH = 8Dh
- AL = adapter number
- BL = socket number (01h to maximum supported by adapter)
- Return: CF clear if successful
- AH destroyed
- BH = status change interrupt enable mask (see #00658)
- CH = Vcc level (lower nybble) (see #00684)
- CL = Vpp1 level (upper nybble) and Vpp2 level (lower nybble)
- DH = current socket status (see #00659)
- DL = indicators (see #00681)
- SI = card type (see #00685)
- DI = IRQ level steering (I/O only) (see #00686)
- CF set on error
- AH = error code (01h,0Bh) (see #00656)
- SeeAlso: AH=8Ch,AH=8Eh
- Bitfields for PCMCIA card type:
- Bit(s) Description (Table 00685)
- 0 memory
- 1 I/O
- 2-15 reserved (0)
- Bitfields for PCMCIA I/O level steering:
- Bit(s) Description (Table 00686)
- 15 interrupt steering enabled
- 14-5 reserved (0)
- 4-0 IRQ level (0-15=IRQ,16=NMI,17=I/O check,18=bus error,19=vendor)
- --------X-1A8E-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - SET SOCKET
- AH = 8Eh
- AL = adapter number
- BL = socket number (01h to maximum supported by adapter)
- BH = status change interrupt enable mask (see #00658)
- CL = Vpp1 level (upper nybble) and Vpp2 level (lower nybble)
- DH = current socket status (see #00659)
- DL = indicators (see #00681)
- SI = card type (see #00685)
- DI = IRQ level steering (I/O only) (see #00686)
- Return: CF clear if successful
- AH destroyed
- CF set on error
- AH = error code (01h,02h,05h,06h,0Bh,0Eh,0Fh) (see #00656)
- SeeAlso: AH=8Ch,AH=8Dh
- --------X-1A8F-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - GET CARD
- AH = 8Fh
- AL = adapter number
- BL = socket number (01h to maximum supported by adapter)
- Return: CF clear if successful
- AH destroyed
- DL = current card status (see #00660)
- CF set on error
- AH = error code (01h,0Bh) (see #00656)
- SeeAlso: AH=8Dh,AH=90h
- --------X-1A90-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - RESET CARD
- AH = 90h
- AL = adapter number
- BL = socket number (01h to maximum supported by adapter)
- Return: CF clear if successful
- AH destroyed
- CF set on error
- AH = error code (01h,0Bh,14h) (see #00656)
- Note: toggles RESET pin of the specified card, but does not wait after
- toggling the pin; it is the caller's responsibility to avoid
- accessing the card before it is ready again
- --------X-1A91-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - READ ONE
- AH = 91h
- AL = adapter number
- BL = socket number (01h to maximum supported by adapter)
- BH = attributes (see #00687)
- DX:SI = card address
- Return: CF clear if successful
- AH destroyed
- CL/CX = value read
- CF set on error
- AH = error code (01h,07h,09h,0Bh,14h) (see #00656)
- CX may be destroyed
- Note: this function is only valid for I/O-mapped sockets
- SeeAlso: AH=92h,AH=93h,INT 21/AX=440Dh"DOS 3.2+"
- Bitfields for PCMCIA attributes:
- Bit(s) Description (Table 00687)
- 2 even bytes only
- 1 word rather than byte
- 0 attribute memory instead of common memory
- --------X-1A92-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - WRITE ONE
- AH = 92h
- AL = adapter number
- BL = socket number (01h to maximum supported by adapter)
- BH = attributes (see #00687)
- CL/CX = value to write
- DX:SI = card address
- Return: CF clear if successful
- AH destroyed
- CF set on error
- AH = error code (01h,07h,0Bh,12h,14h) (see #00656)
- Note: this function is only valid for I/O-mapped sockets; it also does not
- implement Card Technology handling--use AH=94h when writing to
- non-RAM technologies
- SeeAlso: AH=91h,AH=94h,INT 21/AX=440Dh"DOS 3.2+"
- --------X-1A93-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - READ MULTIPLE
- AH = 93h
- AL = adapter number
- BL = socket number (01h to maximum supported by adapter)
- BH = attributes (see #00687)
- CX = number of bytes or words to read
- DX:SI = card address
- DS:DI -> data buffer to be filled
- Return: CF clear if successful
- AH destroyed
- CF set on error
- AH = error code (01h,07h,09h,0Bh,14h) (see #00656)
- Note: this function is only available on I/O-mapped sockets
- SeeAlso: AH=91h,AH=94h,INT 21/AX=440Dh"DOS 3.2+"
- --------X-1A94-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - WRITE MULTIPLE
- AH = 94h
- AL = adapter number
- BL = socket number (01h to maximum supported by adapter)
- BH = attributes (see #00687)
- CX = number of bytes or words to read
- DX:DI = card address
- DS:SI -> buffer containing data
- BP = Card Technology type (0000h = RAM)
- Return: CF clear if successful
- AH destroyed
- CF set on error
- AH = error code (01h,07h,0Bh,0Ch,12h,14h) (see #00656)
- Notes: this function is only available on I/O-mapped sockets
- Socket Services calls the Card Technology callback (see #00661) for
- any card technology it does not directly support
- SeeAlso: AH=82h"PCMCIA",AH=92h,AH=93h,INT 21/AX=440Dh"DOS 3.2+"
- --------X-1A95-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - INQUIRE ERROR DETECTION CODE
- AH = 95h
- AL = adapter number
- BH = EDC generator number
- Return: CF clear if successful
- AH destroyed
- CX = bitmap of assignable sockets
- DH = EDC capabilities (see #00688)
- DL = supported EDC types (see #00689)
- CF set on error
- AH = error code (01h,04h) (see #00656)
- SeeAlso: AH=96h,AH=9Ch
- Bitfields for EDC capabilities:
- Bit(s) Description (Table 00688)
- 0 unidirectional only generation
- 1 bidirectional only generation
- 2 register-based (I/O-mapped) support
- 3 memory-mapped support
- 4 pausable
- 5-7 reserved (0)
- Bitfields for supported EDC types:
- Bit(s) Description (Table 00689)
- 0 8-checksum
- 1 16-CRC-SDLC
- 2-7 reserved (0)
- --------X-1A96-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - GET ERROR DETECTION CODE
- AH = 96h
- AL = adapter number
- BH = EDC generator number
- Return: CF clear if successful
- AH destroyed
- BL = socket number
- DH = EDC attributes (see #00690)
- DL = EDC type (see #00689) (only one bit set)
- CF set on error
- AH = error code (01h,04h) (see #00656)
- SeeAlso: AH=95h,AH=97h,AH=9Ch
- Bitfields for EDC attributes:
- Bit(s) Description (Table 00690)
- 0 unidirectional only
- 1 (if 0 set) clear=read, set=write
- 2-7 reserved (0)
- --------X-1A97-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - SET ERROR DETECTION CODE
- AH = 97h
- AL = adapter number
- BH = EDC generator
- BL = socket number
- DH = EDC attributes (see #00690)
- DL = EDC type (see #00689) (only one bit may be set)
- Return: CF clear if successful
- AH destroyed
- CF set on error
- AH = error code (01h,02h,04h,0Bh) (see #00656)
- SeeAlso: AH=96h,AH=9Ch
- --------X-1A98-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - START ERROR DETECTION CODE
- AH = 98h
- AL = adapter number
- BH = EDC generator
- Return: CF clear if successful
- AH destroyed
- CF set on error
- AH = error code (01h,04h) (see #00656)
- SeeAlso: AH=96h,AH=99h,AH=9Bh,AH=9Ch
- --------X-1A99-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - PAUSE ERROR DETECTION CODE
- AH = 99h
- AL = adapter number
- BH = EDC generator
- Return: CF clear if successful
- AH destroyed
- CF set on error
- AH = error code (01h,04h) (see #00656)
- SeeAlso: AH=9Ah
- --------X-1A9A-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - RESUME ERROR DETECTION CODE
- AH = 9Ah
- AL = adapter number
- BH = EDC generator
- Return: CF clear if successful
- AH destroyed
- CF set on error
- AH = error code (01h,04h) (see #00656)
- SeeAlso: AH=99h,AH=98h
- --------X-1A9B-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - STOP ERROR DETECTION CODE
- AH = 9Bh
- AL = adapter number
- BH = EDC generator
- Return: CF clear if successful
- AH destroyed
- CF set on error
- AH = error code (see #00656)
- SeeAlso: AH=98h,AH=99h,AH=9Ch
- --------X-1A9C-------------------------------
- INT 1A - PCMCIA Socket Services v1.00 - READ ERROR DETECTION CODE
- AH = 9Ch
- AL = adapter number
- BH = EDC generator
- Return: CF clear if successful
- AH destroyed
- DL/DX = computed checksum or CRC
- CF set on error
- AH = error code (01h,04h) (see #00656)
- SeeAlso: AH=95h,AH=96h,AH=98h,AH=99h,AH=9Bh
- --------X-1A9D-------------------------------
- INT 1A - PCMCIA Socket Services v2.1??? - GET VENDOR INFO
- AH = 9Dh
- AL = adapter number
- BH = EDC generator
- ES:EDI -> vendor information structure (see #00691)
- Return: CF clear if successful
- AH destroyed
- DX = vendor release number in BCD
- ES:EDI unchanged
- CF set on error
- AH = error code (01h,15h) (see #00656)
- Notes: this API is supported by recent versions of the AMI BIOS
- the low-level API described here is hidden by the higher-level
- ExCA API once Card Services has been installed
- SeeAlso: AH=9Dh"ExCA"
- Format of Vendor Information structure:
- Offset Size Description (Table 00691)
- 00h WORD buffer length (set to size of buffer below)
- 04h WORD (ret) data length
- 08h x BYTEs implementor name (ASCIIZ string)
- --------X-1A9D-------------------------------
- INT 1A - Intel PCMCIA ExCA Card Services - API
- AH = 9Dh
- AL = subfunction (see #00692)
- ???
- Return: ???
- SeeAlso: AH=9Dh"ExCA",#00891
- (Table 00692)
- Values for PCMCIA ExCA Card Services subfunction number:
- 00h Client Services: Get Number of Sockets
- 01h Advanced Client Utilities: Initialize
- 02h Client Services: Register Client
- 03h Client Services: Deregister Client
- 04h Advanced Client Utilities: Enumerate Clients
- 05h Client Services: Register SCB
- 06h Client Services: Deregister SCB
- 07h Advanced Client Utilities: Register MTD
- 08h Advanced Client Utilities: Deregister MTD
- 09h Advanced Client Utilities: Enumerate MTD
- 0Ah Client Services: Get Status
- 0Bh Client Services: Reset Card
- 0Ch Client Utilities: Get First Tuple
- 0Dh Client Utilities: Get Next Tuple
- 0Eh Client Utilities: Determine First Region
- 0Fh Client Utilities: Determine Next Region
- 10h Client Utilities: Get First Region
- 11h Client Utilities: Get Next Region
- 12h Client Utilities: Get First Partition
- 13h Client Utilities: Get Next Partition
- 14h Bulk Memory Services: Open Region
- 15h Bulk Memory Services: Read Memory
- 16h Bulk Memory Services: Write Memory
- 17h Bulk Memory Services: Copy Memory
- 18h Bulk Memory Services: Erase Memory
- 19h Resource Management: Request I/O
- 1Ah Resource Management: Release I/O
- 1Bh Resource Management: Request Memory
- 1Ch Client Services: Modify Window
- 1Dh Resource Management: Release Memory
- 1Eh Client Services: Map Mem Page
- 1Fh Advanced Client Utilities: Return SS Entry
- 20h Advanced Client Utilities: Map Log to Phy
- 21h Advanced Client Utilities: Map Log Phy to Log
- 22h Resource Management: Request IRQ
- 23h Resource Management: Release IRQ
- 24h Bulk Memory Services: Close Region
- --------X-1A9E-------------------------------
- INT 1A - PCMCIA Socket Services v2.1 - ACKNOWLEDGE INTERRUPT
- AH = 9Eh
- AL = adapter number
- Return: CF clear if successful
- AH destroyed
- CX = bitmap representing sockets which have changed status
- CF set on error
- AH = error code (01h) (see #00656)
- Note: this API is supported by recent versions of the AMI BIOS
- --------X-1A9F-------------------------------
- INT 1A - PCMCIA Socket Services v2.1 - GET/SET PRIOR INT 1A HANDLER
- AH = 9Fh
- AL = adapter number
- BL = mode
- 00h get prior INT 1Ah handler
- 01h set prior INT 1Ah handler
- CX:DX -> new prior handler
- Return: CF clear if successful
- AH destroyed
- CX:DX -> old prior handler
- CF set on error
- AH = error code (01h,15h,18h) (see #00656)
- Desc: allows hooking of INT 16h "behind" the Socket Services hook
- Note: this API is supported by recent versions of the AMI BIOS
- SeeAlso: AH=9Eh,AH=A0h"PCMCIA",AH=AEh"PCMCIA"
- --------c-1AA0-------------------------------
- INT 1A U - Disk Spool II v2.07+ - INSTALLATION CHECK
- AH = A0h
- Return: AH = B0h if installed
- AL = pending INT 1A/AH=D0h subfunction if nonzero???
- ES = code segment
- ES:BX -> name of current spool file
- ES:SI -> current despool file
- CL = despooler state (00h disabled, 41h enabled)
- CH = spooler state (00h disabled, 41h enabled)
- DL = despooler activity
- 00h currently active printing a file
- 41h standing by
- DH = 00h ???
- = 41h ???
- DI = 0000h ???
- 0001h ???
- Program: Disk Spool II is a shareware disk-based print spooler by Budget
- Software Company
- Note: this function is also supported by Vertisoft's Emulaser utility ELSPL,
- as that is a licensed version of Disk Spool II
- SeeAlso: AH=ABh,AH=C0h,AH=D0h,AH=E1h
- --------X-1AA0-------------------------------
- INT 1A - PCMCIA Socket Services v2.1 - GET/SET SOCKET SERVICES ADDRESS
- AH = A0h
- AL = adapter number
- BH = mode
- 00h real mode
- 01h 16:16 protected mode
- 02h 16:32 protected mode
- 03h 00:32 (Flat) protected mode
- BL = subfunction
- 00h return number of additional data areas (see #00693)
- 01h return description of additional data areas (see #00694)
- 02h accept mode-specific pointers to data areas (see #00695)
- ES:EDI -> buffer supplied by caller
- Return: CF clear if successful
- AH destroyed
- CX = number of additional data areas
- ES:EDI unchanged
- CF set on error
- AH = error code (01h,02h,15h,16h,18h) (see #00656)
- SeeAlso: AH=9Fh,AH=AEh
- Format of PCMCIA Subfunction 00h Buffer Table Entry structure:
- Offset Size Description (Table 00693)
- 00h DWORD 32-bit linear base address of the code segment
- 04h DWORD segment limit of the code segment
- 08h DWORD entry point offset
- 0Ch DWORD 32-bit linear base address of the data segment
- (ignored in 00:32 flat mode)
- 10h DWORD segment limit of the data segment
- 14h DWORD data area offset. Only used in 32-bit protected mode.
- SeeAlso: #00694,#00695
- Format of PCMCIA Additional Data Area Description structure [array]:
- Offset Size Description (Table 00694)
- 00h DWORD 32-bit linear base address of the additional data segment
- (ignored in 00:32 flat mode)
- 04h DWORD segment limit of the code segment
- 08h DWORD data area offset (only used in 32-bit protected mode)
- SeeAlso: #00693,#00695
- Format of PCMCIA Subfunction 02h Buffer Table Entry structure:
- Offset Size Description (Table 00695)
- 00h DWORD 32-bit offset(ignored in 16:16 protected mode)
- 04h DWORD selector (only used in 00:32 flat mode)
- 08h DWORD reserved
- SeeAlso: #00693,#00694
- --------X-1AA1-------------------------------
- INT 1A - PCMCIA Socket Services v2.1 - GET ACCESS OFFSETS
- AH = A1h
- AL = adapter number
- BH = Mode
- 00h = Real Mode
- 01h = 16:16 Protected Mode
- 02h = 16:32 Protected Mode
- 03h = 00:32 Protected Mode
- CX = Number of access offsets
- ES:EDI -> buffer supplied by caller, CX words long (see #00696)
- Return: CF clear if successful
- AH destroyed
- DX = number of access offsets supported
- ES:EDI unchanged
- CF set on error
- AH = error code (01h,15h,16h) (see #00656)
- Desc: Returns an array of low-level adapter-specific optimized
- PC Card access routines for adapters that use registers
- or I/O ports to access PC Card memory. Adapters that access
- PC Card memory through windows mapped to host system memory
- do not support this function.
- Note: offsets returned are 16-bit offsets into the
- Socket Services code segment. They must be called
- appropriately for the processor mode selected.
- (Real, 16:16 and 16:32 modes use FAR CALL,
- Flat 00:32 mode uses a 32-bit NEAR CALL).
- SeeAlso: AH=AEh
- Format of Offset Table structure:
- Offset Size Description (Table 00696)
- 00h WORD Set Address
- 02h WORD Set Auto Increment
- 04h WORD Read Byte
- 06h WORD Read Word
- 08h WORD Read Byte with Auto Increment
- 0Ah WORD Read Word with Auto Increment
- 0Ch WORD Read Words
- 0Eh WORD Read Words with Auto Increment
- 10h WORD Write Byte
- 12h WORD Write Word
- 14h WORD Write Byte with Auto Increment
- 16h WORD Write Word with Auto Increment
- 18h WORD Write Words
- 1Ah WORD Write Words with Auto Increment
- 1Ch WORD Compare Byte
- 1Eh WORD Compare Byte with Auto Increment
- 20h WORD Compare Words
- 22h WORD Compare Words with Auto Increment
- --------X-1AA2-------------------------------
- INT 1A - CardBus Socket Services - ACCESS CONFIGURATION SPACE
- AH = A2h
- ??? details not available
- Return: ???
- --------X-1AA4-------------------------------
- INT 1A - CardBus Socket Services - GET BRIDGE WINDOW / WINDOW CAPABILITIES
- AH = A4h
- ??? details not available
- Return: ???
- SeeAlso: AH=A5h"CardBus"
- --------X-1AA5-------------------------------
- INT 1A - CardBus Socket Services - SET BRIDGE WINDOW
- AH = A5h
- ??? details not available
- Return: ???
- SeeAlso: AH=A4h"CardBus"
- --------c-1AAB-------------------------------
- INT 1A U - Disk Spool II v1.83 - INSTALLATION CHECK
- AH = ABh
- Return: AH = BAh if installed
- AL = pending INT 1A/AH=ADh subfunction if nonzero???
- ES = code segment
- ES:BX -> name of current spool file
- ES:SI -> current despool file
- CL = despooler state (00h disabled, 41h enabled)
- CH = spooler state (00h disabled, 41h enabled)
- DL = despooler activity
- 00h currently active printing a file
- 41h standing by
- DH = 00h ???
- = 41h ???
- DI = 0000h ???
- 0001h ???
- Program: Disk Spool II is a shareware disk-based print spooler by Budget
- Software Company
- SeeAlso: AH=A0h,AH=ACh,AH=ADh,AH=E1h
- --------c-1AAC-------------------------------
- INT 1A U - Disk Spool II v1.83 - INSTALLATION CHECK
- AH = ACh
- Return: (see AH=ABh)
- Note: this function is identical to AH=ABh
- SeeAlso: AH=A0h,AH=ABh,AH=ADh
- --------c-1AAD-------------------------------
- INT 1A U - Disk Spool II v1.83 - FUNCTION CALLS
- AH = ADh
- AL = function code (see #00697)
- Return: AH = 00h if successful
- SeeAlso: AH=ABh
- (Table 00697)
- Values for Disk Spool function code:
- 02h enable spooler only
- 03h enable the despooler
- 04h disable the despooler
- 08h inhibit popup menu
- 09h enable popup menu
- 0Ah ???
- 0Bh disable the spooler
- 0Ch start despooler after last successfully printed document???
- 0Dh start despooler at the exact point where it last left off???
- 0Eh pop up the menu
- 0Fh ???
- 11h ???
- 14h ???
- 15h ???
- 16h ???
- 17h ???
- 18h ???
- 19h ???
- 20h clear file pointed to by the despooler???
- 21h ???
- 22h ???
- 23h ???
- 30h ???
- --------X-1AAE-------------------------------
- INT 1A - PCMCIA Socket Services v2.1 - VENDOR SPECIFIC
- AH = AEh
- AL = adapter number
- all other registers are vendor-specific
- Return: vendor specific
- SeeAlso: AH=A1h,AH=AFh
- --------X-1AAE-------------------------------
- INT 1A - PCMCIA Socket Services v2.1 - API
- AH = AEh
- SI = function
- 0002h ???
- 0100h ???
- 0101h ???
- 8000h ???
- 8001h ???
- details not yet available
- Return: CF clear if successful
- CF set on error
- AH = error code (02h,0Bh,11h,15h,17h) (see #00656)
- SeeAlso: AH=9Eh
- --------X-1AAF-------------------------------
- INT 1A - PCMCIA v2 Card Services - API
- AH = AFh
- AL = function
- 00h close memory
- 01h copy memory
- 02h deregister client
- 03h get client information (see #00702)
- 04h get configuration information (see #00704)
- 05h get first partition
- 06h get first region
- 07h get first tuple (see #00711)
- 08h get next partition
- 09h get next region
- 0Ah get next tuple
- 0Bh get Card Services information (see #00700)
- 0Ch get status
- 0Dh get tuple data (see #00712)
- 0Eh get first client (see #00701)
- 0Fh get/register Erase Queue
- 10h register client (see #00713)
- 11h reset function
- 12h map logical socket
- 13h map logical window
- 14h map memory page
- 15h map physical socket
- 16h map physical window
- 17h modify window
- 18h open memory
- 19h read memory
- 1Ah register MTD
- 1Bh release I/O
- 1Ch release IRQ (see #00715)
- 1Dh release window
- 1Eh release configuration (see #00716)
- 1Fh request I/O (see #00717)
- 20h request IRQ (see #00718)
- 21h reqeust window (see #00720)
- 22h request socket mask
- 23h return SS entry
- 24h write memory
- 25h deregister Erase Queue
- 26h check Erase Queue
- 27h modify configuration
- 28h register timer
- 29h set region
- 2Ah get next client
- 2Bh validate CIS
- 2Ch request exclusive access (see #00723)
- 2Dh release exclusive access (see #00723)
- 2Eh get event mask
- 2Fh release socket mask
- 30h request configuration (see #00724)
- 31h set event mask
- 32h add Socket Service
- 33h replace Socket Service
- 34h vendor-specific
- 35h adjust resource information
- 36h access configuration register
- 37h get first window
- 38h get next window
- 39h get memory page
- 3Ah request DMA
- 3Bh release DMA
- further details not yet available
- Return: ??? = result code (see #00698)
- SeeAlso: AH=AEh
- (Table 00698)
- Values for PCMCIA Card Services result codes:
- 00h successful
- 01h invalid adapter number
- 02h bad value for attribute field
- 03h bad value for base system memory address
- 04h invalid EDC generator specified
- 05h (reserved for historical reasons)
- 06h invalid IRQ level specified
- 07h invalid PC Card memory array offset
- 08h invalid page number specified
- 09h unable to complete read request
- 0Ah invalid size specified
- 0Bh invalid socket number
- 0Ch (reserved for historical reasons)
- 0Dh invalid window or interface type
- 0Eh invalid Vcc power level specified
- 0Fh invalid Vpp1 or Vpp2 power level specified
- 10h (reserved for historical reasons)
- 11h invalid window number
- 12h unable to complete write request
- 13h (reserved for historical reasons)
- 14h no PC Card in socket
- 15h service not supported by implementation
- 16h unsupported processor mode
- 17h specified speed not available
- 18h busy -- retry later
- 19h undefined error (general failure)
- 1Ah storage medium write protected
- 1Bh argument length in (E)CX is invalid
- 1Ch bad value(s) in argument packet
- 1Dh configuration has already been locked
- 1Eh requested resource already in use
- 1Fh no more items of requested type available
- 20h out of resources
- 21h invalid client handle
- 22h unsupported client version
- (Table 00699)
- Values for Card Services Callback Event codes:
- 01h battery dead
- 02h battery low
- 03h card locked
- 04h card has become ready
- 05h card removed
- 06h card unlocked
- 07h motorized ejection complete
- 08h ejection requested
- 09h insertion complete
- 0Ah insertion requested
- 0Bh power management: resume
- 0Ch power management: suspend
- 0Dh exclusive access granted
- 0Eh exclusive access requested
- 0Fh perform physical reset
- 10h physical reset requested
- 11h card has been reset
- 12h MTD request (read/write/etc)
- 14h request for client info
- 15h timer has expired
- 16h Socket Service was modified
- 17h write-protected
- 18h attention requested
- 40h card insertion
- 80h reset complete
- 81h erase complete
- 82h registration complete
- Format of Card Services Information:
- Offset Size Description (Table 00700)
- 00h WORD length of information record in bytes
- 02h WORD signature
- 04h WORD number of sockets
- 06h WORD revision level
- 08h WORD Card Services level
- 0Ah WORD offset of vendor string
- 0Ch WORD length of vendor string
- 0Eh WORD number of functions
- 10h 255 BYTEs vendor string
- SeeAlso: #00702
- Format of Card Services Client structure:
- Offset Size Description (Table 00701)
- 00h WORD PCMCIA socket number
- 02h WORD client attributes
- Format of Cards Services Client Information:
- Offset Size Description (Table 00702)
- 00h WORD maximum length of data in bytes (180)
- 02h WORD (ret) length of returned data
- 04h WORD attributes (see #00703)
- 06h WORD revision level (BCD)
- 08h WORD Card Services level (BCD)
- 0Ah WORD revision date (DOS packed date format) (see #01666)
- 0Ch WORD offset to name
- 0Eh WORD length of name
- 10h WORD offset to vendor string
- 12h WORD length of vendor string
- 14h 80 BYTEs buffer for name
- 64h 80 BYTEs buffer for vendor string
- SeeAlso: #00700,#00704
- Bitfields for Card Services client attributes:
- Bit(s) Description (Table 00703)
- 0 memory client
- 1 MTD client
- 2 I/O client
- 3 all clients can share this card
- 4 only one client can use this card at a time
- SeeAlso: #00702
- Format of Card Services configuration information:
- Offset Size Description (Table 00704)
- 00h WORD socket (usually 0000h)
- 02h WORD attributes (see #00705)
- 04h BYTE Vcc value
- 05h BYTE Vpp1 value
- 06h BYTE Vpp2 value
- 07h BYTE interface type (see #00706)
- 08h DWORD base address of configuration registers
- 0Ch BYTE card's Status register setting (if present)
- 0Dh BYTE card's Pin register setting (if present)
- 0Eh BYTE card's Socket/Copy register setting (if present)
- 0Fh BYTE card's Option register setting (if present)
- 10h BYTE bitmap of present card configuration registers
- 11h BYTE first device type
- 12h BYTE function code
- 13h BYTE SysInit mask
- 14h WORD manufacturer code
- 16h WORD manufacturer information
- 18h BYTE valie card register values
- 19h BYTE IRQ number assigned to PC Card
- 1Ah WORD IRQ attributes (see #00708)
- 1Ch WORD base port address (for I/O range 1)
- 1Eh BYTE number of contiguous ports (for I/O range 1)
- 1Fh BYTE bitmap of port attributes (for I/O range 1) (see #00709)
- 20h WORD base port address (for I/O range 2)
- 22h BYTE number of contiguous ports (for I/O range 2)
- 23h BYTE bitmap of port attributes (for I/O range 2) (see #00709)
- 24h BYTE number of I/O address lines decoded (16-bit PC Card only)
- 25h BYTE extended status register setting (if present)
- 26h BYTE bitmap of DMA attributes (see #00710)
- (note: value at call is used to set!)
- 27h BYTE assigned DMA channel
- 28h BYTE number of I/O windows in use on logical socket
- 29h BYTE number of memory windows in use on logical socket
- SeeAlso: #00703,#00724
- Bitfields for Card Services Configuration attributes:
- Bit(s) Description (Table 00705)
- 0 exclusive
- 1 IRQ active
- 2 CardBus card
- 3-5 reserved (0)
- 6 DMA channel is active
- 7 reserved (0)
- 8 valid client
- 9 overwrite voltage value
- 10-15 reserved (0)
- SeeAlso: #00704
- Bitfields for Card Services Configuration interface type:
- Bit(s) Description (Table 00706)
- 0 memory interface
- 1 I/O and memory interface
- 2 CardBus interface
- 3-7 reserved (0)
- SeeAlso: #00704
- Bitfields for Card Services Configuration registers:
- Bit(s) Description (Table 00707)
- 0 option value is value
- 1 status value
- 2 pin-replacement value
- 3 copy value
- 4 extended status value
- 5-7 reserved (0)
- SeeAlso: #00704
- Bitfields for Card Services Configuration IRQ attributes:
- Bit(s) Description (Table 00708)
- 1-0 sharing
- 00 no sharing
- 01 time-multiplex sharing
- 10 dynamic sharing
- 11 reserved
- 2 force pulse mode
- 3 first used together
- 4-7 reserved
- 8 pulse IRQ has been assigned
- 9-15 reserved
- SeeAlso: #00704,#00709,#00710,#00715,#00718
- Bitfields for Card Services Configuration Port attributes:
- Bit(s) Description (Table 00709)
- 0 shared I/O ports
- 1 "CS_FirstCommonUsedCard"
- 2 force alias access
- 3 =1 sixteen-bit I/O
- =0 eight-bit I/O
- 7-4 reserved (0)
- SeeAlso: #00704,#00708,#00710,#00717
- Bitfields for Card Services Configuration DMA attributes:
- Bit(s) Description (Table 00710)
- 1-0 sharing mode
- 00 no sharing
- 01 time-multiplex sharing
- 10 dynamic sharing
- 11 reserved
- 3-2 DMA request signal
- 00 reserved
- 01 DMARQ uses pin SPKR#
- 10 DMARQ uses pin IOIS16#
- 11 DMARQ uses pin INPACK#
- 4 DMA size
- 0 eight bits
- 1 sixteen bits
- 7-5 reserved (0)
- SeeAlso: #00704,#00708,#00709
- Format of Card Services Tuple information:
- Offset Size Description (Table 00711)
- 00h WORD logical socket number
- 02h WORD attributes
- bit 0: return Link tuples
- 04h BYTE code value of desired tuple
- 05h BYTE reserved (0)
- 06h WORD (ret) TupleFlags
- 08h DWORD (ret) -> Card Services Link State Information
- 0Ch DWORD (ret) -> Card Services CIS State Information
- 10h BYTE (ret) code for tuple
- 11h BYTE (ret) link value for tuple
- SeeAlso: #00712
- Format of Card Services GetTupleData record:
- Offset Size Description (Table 00712)
- 00h WORD logical socket
- 02h WORD attributes
- 04h BYTE code value of desired tuple
- 05h BYTE offset into tuple from link byte
- 06h WORD flags
- 08h DWORD -> Link
- 0Ch DWORD -> CIS
- 10h WORD (call) maximum amount of data to return (0004h)
- 12h WORD (ret) amount of data returned
- 14h DWORD (ret) tuple data
- SeeAlso: #00711
- Format of Card Services Client Registration record:
- Offset Size Description (Table 00713)
- 00h WORD attributes
- 02h WORD event mask
- 04h WORD client data (passed to client event handler in DI)
- --- 16-bit code ---
- 06h WORD client data selector (passed to event handler in DS)
- 08h WORD client data offset (passed to event handler in SI)
- 0Ah WORD reserved
- --- 32-bit code ---
- 06h WORD reserved
- 08h DWORD client data offset (passed to event handler in ESI)
- ------
- 0Ch WORD expected Card Services version (0210h for v2.10)
- Bitfields for Card Services client event codes:
- Bit(s) Description (Table 00714)
- 0 change in write-protect status
- 1 change in card lock
- 2 ejection request
- 3 insertion request
- 4 battery is dead
- 5 battery low
- 6 change in Ready
- 7 change in Card Detect
- 8 power management change
- 9 reset
- 10 Socket Services updated
- 11 extended status change
- SeeAlso: #00713
- Format of Card Services ReleaseIRQ record:
- Offset Size Description (Table 00715)
- 00h WORD logical socket number
- 02h WORD attributes (see #00708)
- 04h BYTE assigned IRQ number to be released
- Format of Card Services Release Configuration record:
- Offset Size Description (Table 00716)
- 00h WORD logical socket number
- Format of Card Services Request I/O record:
- Offset Size Description (Table 00717)
- 00h WORD logical socket number
- 02h WORD base port 1
- 04h BYTE size of port range 1
- 05h BYTE attributes for port range 1 (see #00709)
- 06h WORD base port 2
- 08h BYTE size of port range 2
- 09h BYTE attributes for port range 2 (see #00709)
- 0Ah BYTE number of address lines (typically 16)
- SeeAlso: #00718,#00716
- Format of Card Services Request IRQ record:
- Offset Size Description (Table 00718)
- 00h WORD logical socket number
- 02h WORD attributes (see #00708)
- 04h BYTE (ret) assigned IRQ number, if successful
- 05h BYTE IRQ info (see #00719)
- 06h WORD bitmap of available IRQs (bit 0 = IRQ0, etc.)
- (only if bit 4 of IRQ info set)
- SeeAlso: #00717,#00716
- Bitfields for Card Services Request IRQ info flags:
- Bit(s) Description (Table 00719)
- 7 IRQ is shared
- 6 pulse (edge-triggered) interrupt
- 5 level interrupt
- 4 use IRQ bitmap
- --- bit 4 set ---
- 3 vendor-specific interrupt
- 2 bus error
- 1 I/O check interrupt
- 0 NMI
- --- bit 4 clear ---
- 3-0 IRQ number
- SeeAlso: #00718
- Format of Card Services Request Window record:
- Offset Size Description (Table 00720)
- 00h WORD logical socket number
- 02h WORD attributes (see #00721)
- 04h DWORD system base adress
- 08h DWORD size of memory window
- 0Ch BYTE additional info
- if attributes bit ??? is set, this is the address-lines field
- otherwise, this is the access-speed field (see #00722)
- Bitfields for Card Services Request Window attributes:
- Bit(s) Description (Table 00721)
- 0 I/O window instead of memory window
- 1 attribute memory instead of normal memory (16-bit PC Cards only)
- 2 window enabled
- 3 16-bit data path instead of 8-bit path (16-bit PC Cards only, v2.10+)
- (ignored if bit 9 set)
- 4 size is given in 16K pages (invalid for CardBus PC Cards)
- 5 shared (invalid for CardBus)
- 6 first shared (invalid for CardBus)
- 7 "CS_BindingSpecific" (memory window only)
- 8 card offsets are window-size granular (16-bit PC Card memory window)
- 9 32-bit data path (CardBus only)
- 10 reserved (0)
- 12-11 prefetch/cache
- 00 neither prefetchable nor cacheable
- 01 prefetchable but not cacheable
- 10 prefetchable and cachable
- 11 reserved
- 15-13 decoded base address register number (CardBus only)
- SeeAlso: #00720,#00722
- Bitfields for Card Services Request Window access-speed:
- Bit(s) Description (Table 00722)
- 6-3 mantissa
- 0000 use device speed code
- 0001 1.0
- 0010 1.2
- 0011 1.2 ???
- 0100 1.5
- 0101 2.0
- 0110 2.5
- 0111 3.0
- 1000 3.5
- 1001 4.0
- 1010 4.5
- 1011 5.0
- 1100 5.5
- 1101 6.0
- 1110 7.0
- 1111 8.0
- --- if mantissa==0 ---
- 2-0 device speed code
- 000 reserved
- 001 250 ns
- 010 200 ns
- 011 150 ns
- 100 100 ns
- 101-111 reserved
- --- if mantissa<>0 ---
- 2-0 speed exponent
- 000 1 ns
- 001 10 ns
- 010 100 ns
- 011 1 us
- 100 10 us
- 101 100 us
- 110 1 ms
- 111 10 ms
- SeeAlso: #00720,#00721
- Format of Card Services Request/Release Exclusive Access record:
- Offset Size Description (Table 00723)
- 00h WORD logical socket number
- 02h WORD attributes (currently all reserved, must be 0000h)
- Format of Card Services Request Configuration record:
- Offset Size Description (Table 00724)
- 00h WORD socket (usually 0000h)
- 02h WORD attributes (see #00705)
- 04h BYTE Vcc value
- 05h BYTE Vpp1 value
- 06h BYTE Vpp2 value
- 07h BYTE interface type (see #00706)
- 08h DWORD base address of configuration registers
- 0Ch BYTE card's Status register setting (if present)
- 0Dh BYTE card's Pin register setting (if present)
- 0Eh BYTE card's Socket/Copy register setting (if present)
- 0Fh BYTE card's Option register setting (if present)
- 10h BYTE bitmap of present card configuration registers
- 11h BYTE extended status register setting (if present)
- SeeAlso: #00704
- --------X-1AB000-----------------------------
- INT 1A U - HP 100LX/200LX - PCMCIA - ???
- AX = B000h
- ES:BX -> parameter block ???
- Return: CF clear if ???
- CF set if ???
- Note: called by HP 100LX/200LX PCMCIA client CIC100.EXE
- --------d-1AB001CX4D52-----------------------
- INT 1A - Microsoft Real-Time Compression Interface (MRCI) - ROM-BASED SERVER
- AX = B001h
- CX = 4D52h ("MR")
- DX = 4349h ("CI")
- Return: CX = 4943h ("IC") if installed
- DX = 524Dh ("RM") if installed
- ES:DI -> MRCINFO structure (see #00725)
- Note: this call is functionally identical to INT 2F/AX=4A12h, which should
- be called first, as this call is used for the first, ROM-based
- MRCI server, while the other call is used for RAM-based servers
- which may be partially or entirely replacing a prior server
- SeeAlso: INT 2F/AX=4A12h
- Format of MRCINFO structure:
- Offset Size Description (Table 00725)
- 00h 4 BYTEs vendor signature
- "MSFT" Microsoft
- 04h WORD server version (high=major)
- 06h WORD MRCI specification version
- 08h DWORD address of server entry point (see #00727)
- 0Ch WORD bit flags: server capabilities (see #00726)
- 0Eh WORD bit flags: hardware assisted capabilities (see #00726)
- 10h WORD maximum block size supported by server (at least 8192 bytes)
- Bitfields for MRCI capabilities:
- Bit(s) Description (Table 00726)
- 0 standard compress
- 1 standard decompress
- 2 update compress
- 3 MaxCompress (not present in initial public release)
- 4 reserved
- 5 incremental decompress
- 6 MRCI 2.0 standard compress
- 7 MRCI 2.0 standard decompress
- 8-14 reserved
- 15 this structure is in ROM and can't be modified
- (server capabilities only)
- (Table 00727)
- Call MRCI entry point with:
- DS:SI -> MRCREQUEST structure (see #00728)
- CX = type of client (0000h application, 0001h file system)
- AX = operation
- 0001h perform standard compression
- 0002h perform standard decompression
- 0004h perform update compression
- 0008h perform MaxCompress
- 0020h perform incremental decompression
- 0040h perform MRCI 2.0 standard compression
- 0080h perform MRCI 2.0 standard decompression
- AX = FFFFh clear flags
- BX = bitmask of flags to clear (set bits in BX are flags to clear)
- Return: AX = status
- 0000h successful
- 0001h invalid function
- 0002h server busy, try again
- 0003h destination buffer too small
- 0004h incompressible data
- 0005h bad compressed data format
- BP destroyed (MS-DOS 6.2)
- Note: MRCI driver may chain to a previous driver
- Format of MRCREQUEST structure:
- Offset Size Description (Table 00728)
- 00h DWORD pointer to source buffer
- 04h WORD size of source buffer (0000h = 64K)
- 06h WORD (UpdateCompress only)
- (call) offset in source buffer of beginning of changed data
- (ret) offset in destination buffer of beginning of changed
- compressed data
- 08h DWORD pointer to destination buffer
- must contain original compressed data for UpdateCompress
- 0Ch WORD size of destination buffer (0000h = 64K)
- any compression: size of buffer for compressed data
- standard decompression: number of bytes to be decompressed
- incremental decompression: number of byte to decompress now
- (ret) actual size of resulting data
- 0Eh WORD client compressed data storage allocation size
- 10h DWORD incremental decompression state data
- set to 00000000h before first incremental decompression call
- Notes: the source and destination buffers may not overlap
- the source and destination buffer sizes should normally be the same
- application should not update the contents of the MRCREQUEST structure
- between incremental decompression calls
- --------!---Section--------------------------
- Interrupt List, part 5 of 18
- Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
- --------X-1AB101-----------------------------
- INT 1A - PCI BIOS v2.0c+ - INSTALLATION CHECK
- AX = B101h
- EDI = 00000000h
- Return: AH = 00h if installed
- CF clear
- EDX = 20494350h (' ICP')
- EDI = physical address of protected-mode entry point (see #00731)
- AL = PCI hardware characteristics (see #00730)
- BH = PCI interface level major version (BCD)
- BL = PCI interface level minor version (BCD)
- CL = number of last PCI bus in system
- EAX, EBX, ECX, and EDX may be modified
- all other flags (except IF) may be modified
- Notes: this function may require up to 1024 byte of stack; it will not enable
- interrupts if they were disabled before making the call
- some BIOSes do not change EDI, so applications looking for the
- protected-mode entry point should set EDI to 00000000h before
- calling this function
- SeeAlso: AX=B181h
- (Table 00729)
- Values for PCI BIOS v2.0c+ status codes:
- 00h successful
- 81h unsupported function
- 83h bad vendor ID
- 86h device not found
- 87h bad PCI register number
- Bitfields for PCI hardware characteristics:
- Bit(s) Description (Table 00730)
- 0 configuration space access mechanism 1 supported
- 1 configuration space access mechanism 2 supported
- 2-3 reserved
- 4 Special Cycle generation mechanism 1 supported
- 5 Special Cycle generation mechanism 2 supported
- 6-7 reserved
- (Table 00731)
- Call protected-mode entry point with:
- registers as for real/V86-mode INT call
- CS = ring 0 descriptor with access to full address space
- Return: as for real/V86-mode call
- --------X-1AB102-----------------------------
- INT 1A - PCI BIOS v2.0c+ - FIND PCI DEVICE
- AX = B102h
- CX = device ID (see #00735,#00742,#00743,#00873,#00875)
- DX = vendor ID (see #00732)
- SI = device index (0-n)
- Return: CF clear if successful
- CF set on error
- AH = status (00h,83h,86h) (see #00729)
- 00h successful
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 func)
- EAX, EBX, ECX, and EDX may be modified
- all other flags (except IF) may be modified
- Notes: this function may require up to 1024 byte of stack; it will not enable
- interrupts if they were disabled before making the call
- device ID FFFFh may be reserved as a wildcard in future implementations
- the meanings of BL and BH on return were exchanged between the initial
- drafts of the specification and final implementation
- all devices sharing a single vendor ID and device ID may be enumerated
- by incrementing SI from 0 until error 86h is returned
- SeeAlso: AX=B182h
- (Table 00732)
- Values for PCI vendor ID:
- 001Ah Ascend Communications, Inc.
- 003Dh Martin-Marietta Corporation
- 0E11h Compaq (see #00733)
- 1000h Symbios Logic Inc (formerly NCR) (see #00734)
- 1002h ATI (see #00735)
- 1003h ULSI Systems (see #00736)
- 1004h VLSI Technologies (see #00737)
- 1005h Avance Logics (ADL) (see #00738)
- 1006h Reply Group
- 1007h Netframe Systems Inc.
- 1008h Epson
- 100Ah Phoenix Technologies
- 100Bh National Semiconductor (see #00739)
- 100Ch Tseng Labs (see #00740) (also ID 10BEh)
- 100Dh AST Research
- 100Eh Weitek (see #00741)
- 1010h Video Logic Ltd
- 1011h DEC (see #00742)
- 1012h Micronics Computers
- 1013h Cirrus Logic (see #00743,#00029)
- 1014h IBM (see #00744)
- 1015h LSI Logic Corp. of Canada
- 1016h ICL Personal Systems
- 1017h SPEA Software AG
- 1018h Unisys
- 1019h EliteGroup Computer Sys
- 101Ah NCR/AT&T GIS
- 101Bh Vitesse Semiconductor
- 101Ch Western Digital (see #00745)
- 101Eh AMI (see #00746)
- 101Fh Picturetel
- 1020h Hitachi Computer Electronics
- 1021h Oki Electric Industry
- 1022h Advanced Micro Devices (see #00747)
- 1023h Trident Microsystems (see #00748)
- 1024h Zenith Data Systems
- 1025h Acer
- 1028h Dell Computer Corporation
- 1029h Siemens Nixdorf
- 102Ah LSI Logic, Headland Division (see #00749)
- 102Bh Matrox (see #00750)
- 102Ch Chips & Technologies (see #00751)
- 102Dh Wyse Technologies
- 102Eh Olivetti Advanced Technology
- 102Fh Toshiba America (see #00752)
- 1030h TMC Research
- 1031h Miro Computer Products AG (see #00753)
- 1032h Compaq
- 1033h NEC Corporation (see #00754)
- 1034h Burndy Corporation
- 1035h Computers and Communications Research Lab
- 1036h Future Domain (see #00755)
- 1037h Hitachi Micro Systems
- 1038h AMP Incorporated
- 1039h Silicon Integrated System (SIS) (see #00756)
- 103Ah Seiko Epson Corporation
- 103Bh Tatung Corp. of America
- 103Ch Hewlett-Packard (see #00757)
- 103Eh Solliday
- 103Fh Logic Modeling
- 1040h Kubota Pacific
- 1041h Computrend
- 1042h PC Technology (see #00758,#00928) (see also PORT 03F0h"PCTech")
- 1043h Asustek
- 1044h Distributed Processing Technology (DPT) (see #00759)
- 1045h OPTi (see #00760)
- 1046h IPC Corporation, Ltd.
- 1047h Genoa Systems Corp.
- 1048h Elsa GmbH
- 1049h Fountain Technology
- 104Ah SGS Thomson Microelectric (see #00761)
- 104Bh BusLogic (see #00762)
- 104Ch Texas Instruments (see #00763)
- 104Dh Sony Corporation
- 104Eh Oak Technology (see #00764)
- 104Fh Co-Time Computer Ltd.
- 1050h Winbond (see #00765)
- 1051h Anigma Corp.
- 1052h Young Micro Systems
- 1054h Hitachi, Ltd. (see #00766)
- 1055h EFAR Microsystems (see #00767)
- 1056h ICL
- 1057h Motorola (see #00768)
- 1058h Electronics and Telecommunications Research
- 1059h Teknor Microsystems
- 105Ah Promise Technology (see #00769)
- 105Bh Foxconn International
- 105Ch Wipro Infotech Ltd.
- 105Dh Number 9 Computer Company (see #00770)
- 105Eh VTech Engineering Canada, Ltd.
- 105Fh Infotronic America, Inc.
- 1060h United Microelectronics (UMC) (see #00771)
- 1061h 8x8 (X Tech) (see #00772)
- 1062h Maspar Computer Copr.
- 1063h Ocean Office Automation
- 1064h Alcatel Cit
- 1065h Texas Microsystems
- 1066h PicoPower Technology (see #00773)
- 1067h Mitsubishi Electronics
- 1068h Diversified Technology
- 1069h Mylex Corporation (see #00774)
- 106Ah Aten Research
- 106Bh Apple Computer
- 106Ch Hyundai Electronics America
- 106Dh Sequent
- 106Eh DFI Inc.
- 106Fh City Gate Development, Ltd.
- 1070h Daewoo Telecom Ltd.
- 1071h Mitac
- 1072h GIT Co., Ltd.
- 1073h Yamaha Corporation (see #00775)
- 1074h NexGen Microsystems (see #00776)
- 1075h Advanced Integration Research
- 1076h Chaintech Computer Co. Ltd.
- 1077h Q Logic (see #00777)
- 1078h Cyrix Corporation
- 1079h I-Bus
- 107Ah Networth
- 107Bh Gateway 2000
- 107Ch Goldstar Co. Ltd.
- 107Dh Leadtek Research (see #00778)
- 107Eh Interphase Corporation (see #00779)
- 107Fh Data Technology Corporation (DTC) (see #00780)
- 1080h Contaq Microsystems (see #00781)
- 1081h Supermac Technology
- 1082h EFA Corporation of America
- 1083h Forex Computer Corporation (see #00782)
- 1084h Parador
- 1085h Tulip Computers Int'l BV
- 1086h J. Bond Computer Systems
- 1087h Cache Computer
- 1088h Microcomputer Systems (M) Son
- 1089h Data General Corporation
- 108Ah Bit3 Computer (see #00783)
- 108Ch Elonex PLC (Oakleigh Systems, Inc)
- 108Dh Olicom (see #00784)
- 108Eh Sun Microsystems
- 108Fh Systemsoft Corporation
- 1090h Encore Computer Corporation
- 1091h Intergraph Corporation (see #00785)
- 1092h Diamond Computer Systems
- 1093h National Instruments (see #00786)
- 1094h First International Computers (FIC)
- 1095h CMD Technology, Inc. (see #00787)
- 1096h Alacron
- 1097h Appian Technology (see #00788)
- 1098h Vision / Quantum Designs Ltd (see #00789)
- 1099h Samsung Electronics Co. Ltd.
- 109Ah Packard Bell
- 109Bh Gemlight Computer Ltd.
- 109Ch Megachips Corporation
- 109Dh Zida Technologies
- 109Eh Brooktree Corporation (see #00790)
- 109Fh Trigem Computer Inc.
- 10A0h Meidensha Corporation
- 10A1h Juko Electronics Inc. Ltd.
- 10A2h Quantum Corporation
- 10A3h Everex Systems Inc.
- 10A4h Globe Manufacturing Sales
- 10A5h Racal Interlan
- 10A6h Informtech Industrial Ltd.
- 10A7h Benchmarq Microelectronics
- 10A8h Sierra Semiconductor (see #00791)
- 10A9h Silicon Graphics
- 10AAh ACC Microelectronics (see #00792)
- 10ABh Digicom
- 10ACh Honeywell IASD
- 10ADh Symphony Labs (see #00793)
- 10AEh Cornerstone Technology
- 10AFh Microcomputer Systems
- 10B0h CardExpert Technology
- 10B1h Cabletron Systems, Inc.
- 10B2h Raytheon Company
- 10B3h Databook Inc
- 10B4h STB Systems
- 10B5h PLX Technology (see #00794)
- 10B6h Madge Networks (see #00795)
- 10B7h 3com Corporation (see #00796)
- 10B8h Standard Microsystems Corporation (SMC) (see #00797)
- 10B9h Acer Labs Inc. (see #00798)
- 10BAh Mitsubishi Electronics Corp.
- 10BBh Dapha Electronics Corporation
- 10BCh Advanced Logic Research Inc. (ALR)
- 10BDh Surecom Technology (see #00799)
- 10BEh Tseng Labs International Corp. (see #00740)
- 10BFh Most Inc.
- 10C0h Boca Research Inc.
- 10C1h ICM Corp. Ltd.
- 10C2h Auspex Systems Inc.
- 10C3h Samsung Semiconductors
- 10C4h Award Software International Inc.
- 10C5h Xerox Corporation
- 10C6h Rambus Inc.
- 10C7h Media Vision
- 10C8h Neomagic Corporation (see #00800)
- 10C9h DataExpert Corporation
- 10CAh Fujitsu
- 10CBh Omron Corporation
- 10CCh Mentor Arc Inc.
- 10CDh Advanced System Products (see #00801)
- 10CEh Radius Inc.
- 10CFh Citicorp TTI (see #00802)
- 10D0h Fujitsu Limited
- 10D1h Future+ Systems
- 10D2h Molex Incorporated
- 10D3h Jabil Circuit Inc.
- 10D4h Hualon Microelectronics
- 10D5h Autologic Inc.
- 10D6h Cetia
- 10D7h BCM Advanced Research
- 10D8h Advanced Peripherals Labs
- 10D9h Macronix International Co. Ltd
- 10DAh Thomas-Conrad Corporation
- 10DBh Rohm Research
- 10DCh CERN/ECP/EDU (see #00803)
- 10DDh Evans & Sutherland (see #00804)
- 10DEh NVIDIA Corporation
- 10DFh Emulex Corporation (see #00805)
- 10E0h Integrated Micro Solutions (IMS) (see #00806)
- 10E1h TekRAM Technology Corporation Ltd. (see #00807)
- 10E2h Aptix Corporation
- 10E3h Newbridge Microsystems (see #00808)
- 10E4h Tandem Computers
- 10E5h Micro Industries
- 10E6h Gainbery Computer Products Inc.
- 10E7h Vadem
- 10E8h Applied Micro Circuits Corp. (see #00809)
- 10E9h Alps Electronic Corp. Ltd.
- 10EAh Integraphics Systems (see #00810)
- 10EBh Artist Graphics (see #00811)
- 10ECh Realtek Semiconductor (see #00812)
- 10EDh ASCII Corporation (see #00813)
- 10EEh Xilinx Corporation
- 10EFh Racore Computer Products
- 10F0h Peritek Corporation
- 10F1h Tyan Computer
- 10F2h Achme Computer Inc.
- 10F3h Alaris Inc.
- 10F4h S-MOS Systems
- 10F5h NKK Corporation (see #00814)
- 10F6h Creative Electronic Systems SA
- 10F7h Matsushita Electric Industrial Corp. Ltd.
- 10F8h Altos India Ltd.
- 10F9h PC Direct
- 10FAh Truevision (see #00815)
- 10FBh Thesys Ges. f�r Microelektronik mbH
- 10FCh I/O Data Device Inc.
- 10FDh Soyo Technology Corp. Ltd.
- 10FEh Fast Electronic GmbH
- 10FFh N-Cube
- 1100h Jazz Multimedia
- 1101h Initio Corporation (see #00816)
- 1102h Creative Labs
- 1103h Triones Technologies Inc.
- 1104h Rasterops
- 1105h Sigma Designs, Inc.
- 1106h VIA Technologies (see #00817)
- 1107h Stratus Computer
- 1108h Proteon Inc. (see #00818)
- 1109h Cogent Data Technologies (see #00819)
- 110Ah Siemens AG / Siemens Nixdorf AG (see #00820)
- 110Bh Xenon Microsystems / Chromatic Research, Inc.
- 110Ch Mini-Max Technology Inc.
- 110Dh ZNyX Corporation
- 110Eh CPU Technology
- 110Fh Ross Technology
- 1110h Powerhouse Systems
- 1111h Santa Cruz Operation (SCO)
- 1112h Rockwell / RNS division of Meret Communications Inc. (see #00821)
- 1113h Accton Technology Corporation
- 1114h Atmel Corporation
- 1115h DuPont Pixel Systems
- 1116h Data Translation / Media 100, Inc.
- 1117h Datacube Inc. (see #00822)
- 1118h Berg Electronics
- 1119h Vortex Computersysteme GmbH (see #00823)
- 111Ah Efficient Networks, Inc. (see #00824)
- 111Bh Teledyne Electronic Systems
- 111Ch Tricord Systems, Inc.
- 111Dh Integrated Device Technology
- 111Eh Eldec Corporation
- 111Fh Precision Digital Images
- 1120h EMC Corporation
- 1121h Zilog
- 1122h Multi-tech Systems, Inc.
- 1123h Excellent Design, Inc.
- 1124h Leutron Vision AG
- 1125h Eurocore
- 1126h Vigra
- 1127h FORE Systems (see #00825)
- 1128h ???
- 1129h Firmworks
- 112Ah Hermes Electronics Co.
- 112Bh Linotype - Hell AG
- 112Dh Ravicad
- 112Eh Infomedia MicroElectronics Inc (see #00826)
- 112Fh Imaging Technology (see #00827)
- 1130h Computervision
- 1131h Philips Semiconductors
- 1132h Mitel Corp
- 1133h Eicon Technology Corporation
- 1134h Mercury Computer Systems Inc (see #00828)
- 1135h Fuji Xerox Co Ltd (see #00829)
- 1136h Momentum Data Systems
- 1137h Cisco Systems Inc
- 1138h Ziatech Corporation (see #00830)
- 1139h Dynamic Pictures Inc (see #00831)
- 113Ah FWB Inc
- 113Ch Cyclone Microsystems (PLX) (see #00832)
- 113Dh Leading Edge Products Inc
- 113Eh Sanyo Electric Co. - Computer Engineering Dept.
- 113Fh Equinox Systems
- 1140h Intervoice Inc
- 1141h Crest Microsystem Inc (see #00833)
- 1142h Alliance Semiconductor Corp (see #00834)
- 1143h Netpower, Inc.
- 1144h Cincinnati Milacron / Vickers Inc. Electronic Systems (see #00835)
- 1145h Workbit Corp
- 1146h Force Computers
- 1147h Interface Corp.
- 1148h Schneider & Koch Co. / Syskonnect (see #00836)
- 1149h Win System Corporation
- 114Ah VMIC (see #00837)
- 114Bh Canopus Co.
- 114Ch Annabooks
- 114Dh IC Corporation
- 114Eh Nikon Systems Inc
- 114Fh Digi International / Stargate (see #00838)
- 1150h Thinking Machines Corp.
- 1151h JAE Electronics Inc.
- 1152h Megatek
- 1153h Land Win Electronic Corp.
- 1154h Melco Inc.
- 1155h Pine Technology Ltd.
- 1156h Periscope Engineering
- 1157h Avsys Corporation
- 1158h Voarx R&D Inc. (see #00839)
- 1159h MuTech (see #00840)
- 115Ah Harleguin Ltd.
- 115Bh Parallax Graphics
- 115Ch Photron, Ltd.
- 115Dh Xircom
- 115Eh Peer Protocols Inc.
- 115Fh ???
- 1160h Megasoft Inc.
- 1161h PFU Ltd. (see #00841)
- 1162h OA Laboratory Co Ltd.
- 1163h Creative Labs / Rendition (see #00842)
- 1164h Advanced Peripherals Tech
- 1165h Imagraph Corporation (see #00843)
- 1166h Pequr Technology Inc. / Relience Computer
- 1167h Mutoh Industries, Inc.
- 1168h Thine Electronics Inc
- 1169h Centre for Development of Advanced Computing
- 116Ah Polaris Communications
- 116Bh Connectware Inc
- 116Ch ???
- 116Dh ???
- 116Eh ???
- 116Fh Workstation Technology
- 1170h Inventec Corporation
- 1171h Loughborough Sound Images
- 1172h Altera Corporation
- 1173h Adobe Systems
- 1174h Bridgeport Machines
- 1175h Mitron Computer Inc.
- 1176h SBE
- 1177h Silicon Engineering
- 1178h Alfa Inc (see #00844)
- 1179h Toshiba America Info Systems
- 117Ah A-Trend Technology
- 117Bh LG Electronics Inc.
- 117Ch Atto Technology
- 117Dh ???
- 117Eh T/R Systems
- 117Fh ???
- 1180h Ricoh Co Ltd
- 1181h Telmatics International
- 1182h ???
- 1183h Fujikura Ltd
- 1184h Forks Inc
- 1185h Dataworld
- 1186h D-Link System Inc
- 1187h Advanced Technology Laboratories
- 1188h Shima Seiki Manufacturing Ltd.
- 1189h Matsushita Electronics (see #00845)
- 118Ah Hilevel Technology
- 118Bh ???
- 118Ch Corollary Inc (see #00846)
- 118Dh BitFlow Inc (see #00847)
- 118Eh Hermstedt GmbH
- 118Fh ???
- 1190h ???
- 1191h Artop Electric / Acard Technology Corp. (see #00848)
- 1192h Densan Co. Ltd
- 1193h Zeitnet Inc. (see #00849)
- 1194h Toucan Technology
- 1195h Ratoc System Inc
- 1196h Hytec Electronics Ltd
- 1197h Gage Applied Sciences Inc.
- 1198h Lambda Systems Inc
- 1199h Digital Communications Associates Inc,
- 119Ah Mind Share Inc.
- 119Bh Omega Micro Inc.
- 119Ch Information Technology Inst.
- 119Dh Bug Sapporo Japan
- 119Eh Fujitsu
- 119Fh Bull Hn Information Systems
- 11A0h Convex Computer Corporation
- 11A1h Hamamatsu Photonics K.K.
- 11A2h Sierra Research and Technology
- 11A3h Deuretzbacher GmbH & Co. Eng. KG
- 11A4h Barco
- 11A5h MicroUnity Systems Engineering, Inc.
- 11A6h Pure Data
- 11A7h Power Computing Corp.
- 11A9h InnoSys Inc. (see #00850)
- 11AAh Actel
- 11ABh Galileo Technology Ltd. (see #00851)
- 11ACh Canon Information Systems
- 11ADh Lite-On Communications Inc
- 11AEh Scitex Corporation Ltd
- 11AFh Pro-Log Corporation / Avid Technology Corp.
- 11B0h V3 Semiconductor Inc. (see #00852)
- 11B1h Apricot Computers
- 11B2h Eastman Kodak
- 11B3h Barr Systems Inc.
- 11B4h Leitch Technology International
- 11B5h Radstone Technology Plc
- 11B6h United Video Corp
- 11B7h Motorola
- 11B8h Xpoint Technologies Inc
- 11B9h Pathlight Technology Inc. (see #00853)
- 11BAh Videotron Corp
- 11BBh Pyramid Technology
- 11BCh Network Peripherals Inc
- 11BDh Pinnacle Systems Inc.
- 11BEh International Microcircuits Inc
- 11BFh Astrodesign, Inc.
- 11C3h NEC Corporation
- 11C4h Document Technologies Ind.
- 11C5h Shiva Corporatin
- 11C6h Dainippon Screen Mfg. Co., Ltd.
- 11C7h D.C.M. Data Systems
- 11C8h Dolphin Interconnect Solutions (see #00854)
- 11C9h MAGMA
- 11CAh LSI Systems Inc
- 11CBh Specialix International, Ltd. (see #00855)
- 11CCh Michels & Kleberhoff Computer GmbH
- 11CDh HAL Computer Systems Inc.
- 11CEh Netaccess
- 11D0h Lockheed Martin Federal Systems-Manassas
- 11D2h Intercom, Inc.
- 11D4h Analog Devices
- 11D5h Ikon Corp.
- 11D9h TEC Corp.
- 11DAh Novell
- 11DBh Sega Enterprises, Ltd.
- 11DEh Zoran Corporation
- 11DFh New Wave PDG
- 11E0h ???
- 11E1h GEC Plessey Semi Inc.
- 11E2h Samsung Information Systems Americ
- 11E3h Quicklogic Corporation
- 11E4h Second Wave Inc.
- 11E5h IIX Consulting
- 11E6h Mitsui-Zosen System Research
- 11E7h ???
- 11E8h Digital Processing Systems Inc.
- 11E9h ???
- 11EAh Elsag Bailey
- 11EBh Formation Inc.
- 11ECh Coreco Inc.
- 11EDh Mediamatics
- 11EEh Dome Imaging Systems Inc.
- 11EFh Nicolet Technologies B.V.
- 11F0h Compu-Shack GmbH
- 11F1h Symbios Logic Inc.
- 11F2h Picture Tel Japan K.K.
- 11F3h Keithley Metrabyte
- 11F4h Kinetic Systems Corporation
- 11F5h Computing Devices International
- 11F6h Powermatic Data Systems Ltd.
- 11F6h Compex USA, Inc. (see #00856)
- 11F7h Scientific Atlanta
- 11F8h PMC-Sierra Inc. (see #00857)
- 11F9h I-Cube, Inc.
- 11FEh RP ??? (see #00858)
- 1201h Vista Controls Corp.
- 1203h Bayer Corp., AGFA division
- 1204h Lattice Semiconductor Corp.
- 1205h Array Corp.
- 1206h Amdahl Corp.
- 120Eh Cyclades (see #00859)
- 1216h PURUP Eskofot A/S
- 1217h O2Micro, Inc.
- 121Ah 3DFX Interactive, Inc.
- 121Bh Advanced Telecomm Modules
- 1220h Ariel Corporation (see #00860)
- 1221h Contec Co., Ltd.
- 1222h Ancor Communications, Inc.
- 1223h Heurikon/Computer Products
- 1224h Interactive Images
- 1225h Power I/O, Inc.
- 1226h ???
- 1227h Tech-Source
- 1228h Norsk Elektro Optikk A/S
- 1229h Data Kinesis Inc.
- 122Ah Integrated Telecom
- 122Bh LG Industrial Systems Co. Ltd.
- 122Ch Sican GmbH
- 122Dh Aztech Systems Ltd
- 122Eh Xyratex
- 122Fh Andrew Corporation
- 1230h Fishcamp Engineering
- 1231h Woodward McCoach, Inc.
- 1232h GPT Limited
- 1233h Bus-Tech, Inc.
- 1234h Technical Corp.
- 1235h Risq Modular Systems, Inc. / Smart Modular Technologies, Inc.
- 1236h Sigma Designs Corporation
- 1237h Alta Technology Corporation
- 1238h Adtran
- 1239h The 3DO Company
- 123Ah Visicom Laboratories, Inc.
- 123Bh Seeq Technology, Inc.
- 123Ch Century Systems, Inc.
- 123Dh Engineering Design Team, Inc.
- 123Eh Sumutech, Inc.
- 123Fh C-Cube Microsystems
- 1240h Marathon Technologies Corp.
- 1241h DSC Communications
- 1242h (unknown vendor)
- 1243h Delphax
- 1244h AVM Audiovisuelles Mktg & Computer GmbH
- 1245h A.P.D., S.A.
- 1246h Dipix Technologies, Inc.
- 1247h Xylon Research, Inc.
- 1248h Central Data Corporation
- 1249h Samsung Electronics Co., Ltd.
- 124Ah AEG Electrocom GmbH
- 124Bh SBS/Greenspring Modular I/O
- 124Ch Solitron Technologies, Inc.
- 124Dh Stallion Technologies
- 124Eh Cylink
- 124Fh Infortrend Technology, Inc.
- 1250h Hitachi Microcomputer System, Ltd.
- 1251h VLSI Solution Oy
- 1252h ???
- 1253h Guzik Technical Enterprises
- 1254h Linear Systems Ltd.
- 1255h Optibase Ltd.
- 1256h Perceptive Solutions, Inc.
- 1257h Vertex Networks, Inc.
- 1258h Gilbarco, Inc.
- 1259h Allied telesyn International
- 125Ah ABB Power Systems
- 125Bh Asix Electronics Corporation
- 125Ch Aurora Technologies, Inc.
- 125Dh ESS Technology
- 125Eh SpecialVideo Engineering SRL
- 125Fh Concurrent Technologies, Inc.
- 1260h Harris Semiconductor (see #00861)
- 1261h Matsushita-Kotobuki Electronics Industries
- 1262h ES Computer Company, Ltd.
- 1263h Sonic Solutions
- 1264h Aval Nagasaki Corporation
- 1265h Casio Computer Co., Ltd.
- 1266h Microdyne Corporation
- 1267h S.A. Telecommunications
- 1268h Tektronix
- 1269h Thomson-CSF/TTM
- 126Ah Lexmark International, Inc.
- 126Bh Adax, Inc.
- 126Ch Northern Telecom
- 126Dh Splash Technology, Inc.
- 126Eh Sumitomo Metal Industries, Ltd.
- 126Fh Silicon Motion, Inc.
- 1270h Olympus Optical Co., Ltd.
- 1271h GW Instruments
- 1272h Telematics International
- 1273h Hughes Network Systems
- 1274h Ensoniq (see #00862)
- 1275h Network Appliance Corporation
- 1276h Switched Network Tecnologies, Inc.
- 1277h Comstream
- 1278h Transtech Parallel Systems Ltd.
- 1279h Transmeta Corporation
- 127Ah Rockwell Semiconductor Systems
- 127Bh Pixera Corporation
- 127Ch Crosspoint Solutions, Inc.
- 127Dh Vela Research
- 127Eh Winnov, L.P.
- 127Fh Fujifilm
- 1280h Photoscript Group Ltd.
- 1281h Yokogawa Electric Corporation
- 1282h Davicom Semiconductor, Inc.
- 1283h Integrated Technology Express, Inc.
- 1284h Sahara Networks, Inc.
- 1285h Platform Technologies, Inc.
- 1286h Mazet GmbH
- 1287h M-Pact, Inc. / Luxsonor, Inc.
- 1288h Timestep Corporation
- 1289h AVC Technology, Inc.
- 128Ah Asante Technologies, Inc.
- 128Bh Transwitch Corporation
- 128Ch Retix Corporation / Sonoma Systems, Inc.
- 128Dh G2 Networks, Inc.
- 128Ch Retix Corp
- 128Dh ???
- 128Eh Samho Multi Tech Ltd. / Hoon Tech Co., Ltd.
- 128Fh Tateno Dennou, Inc.
- 1290h Sord Computer Corporation
- 1291h NCS Computer Italia
- 1292h Tritech Microelectronics, Inc.
- 1293h Media Reality Technology
- 1294h Rhetorex, Inc.
- 1295h Imagenation Corporation
- 1296h Kofax Image Products
- 1297h Holco Ent Co, Ltd / Shuttle Computer
- 1298h Spellcaster Telecommunications Inc.
- 1299h Knowledge Technology Lab.
- 129Ah VMetro, Inc.
- 129Bh Image Access
- 129Ch Jaycor / Xantel Corporation
- 129Dh Compcore Multimedia, Inc.
- 129Eh Victor Company of Japan, Ltd.
- 129Fh OEC Medical Systems, Inc.
- 12A0h Allen-Bradley Company
- 12A1h Simpact Associates, Inc.
- 12A2h Newgen Systems Corporation
- 12A3h Lucent Technologies
- 12A4h NTT Electronics Technology Company
- 12A5h Vision Dynamics Ltd.
- 12A6h Scalable Networks, Inc.
- 12A7h AMO GmbH
- 12A8h News Datacom
- 12A9h Xiotech Corporation
- 12AAh SDL Communications, Inc.
- 12ABh Yuan Yuan Enterprise Co., Ltd.
- 12ACh MeasureX Corporation
- 12ADh Multidata GmbH
- 12AEh Alteon Networks, inc.
- 12AFh TDK USA Corporation
- 12B0h Jorge Scientific Corporation
- 12B1h GammaLink
- 12B2h General Signal Networks
- 12B3h Inter-Face Co. Ltd.
- 12B4h FutureTel Inc.
- 12B5h Granite Systems Inc.
- 12B6h Natural Microsystems
- 12B7h Acumen
- 12B8h Korg
- 12B9h US Robotics / 3com Corporation
- 12BAh PMC Sierra
- 12BBh Nippon Unisoft Corporation
- 12BCh Array Microsystems
- 12BDh Computerm Corp.
- 12BEh Anchor Chips
- 12BFh Fujifilm Microdevices
- 12C0h InfiMed
- 12C1h GMM Research Corp.
- 12C2h Mentec Limited
- 12C3h Holtek Microelectronics Inc.
- 12C4h Connect Tech Inc.
- 12C5h Picture Elements, Inc. (see #00863)
- 12C6h Mitani Corporation
- 12C7h Dialogic Corporation
- 12C8h G Force Co, Ltd.
- 12C9h Gigi Operations
- 12CAh Integrated Computing Engines
- 12CBh Antex Electronics Corporation
- 12CCh Pluto Technologies International
- 12CDh Aims Lab
- 12CEh Netspeed, Inc.
- 12CFh Prophet Systems, Inc.
- 12D0h GDE Systems, Inc.
- 12D1h Psitech
- 12D2h NVIDIA / SGS Thomson
- 12D3h Vingmed Sound A/S
- 12D4h DGM&S
- 12D5h Equator Technologies
- 12D6h Analogic Corporation
- 12D7h Biotronic SRL
- 12D8h Pericom Semiconductor
- 12D9h Aculab PLC
- 12DAh True Time
- 12DBh Annapolis Micro Systems, Inc.
- 12DCh Symicron Computer Communication Ltd.
- 12DDh Management Graphics
- 12DEh Rainbow Technologies
- 12DFh SBS Technologies Inc.
- 12E0h Chase Research
- 12E1h Nintendo Co, Ltd.
- 12E2h Datum Inc, Bancomm-Timing Division
- 12E3h Imation Corp - Medical Imaging Systems
- 12E4h Brooktrout Technology Inc.
- 12E5h Apex Inc / XCD Inc.
- 12E6h Cirel Systems
- 12E7h Sunsgroup Corporation / Sebring Systems
- 12E8h CRISC Corporation
- 12E9h GE Spacenet
- 12EAh Zuken / Real Vision, Inc.
- 12EBh Aureal Semiconductor
- 12ECh 3A International, Inc.
- 12EDh Optivision Inc.
- 12EEh Orange Micro
- 12EFh Vienna Systems
- 12F0h Pentek
- 12F1h Sorenson Vision Inc.
- 12F2h GammaGraphx, Inc.
- 12F3h XING, Inc.
- 12F4h Megatel
- 12F5h Forks
- 12F6h Dawson France
- 12F7h Cognex
- 12F8h Electronic-Design GmbH
- 12F9h FourFold Technologies
- 12FBh Spectrum Signal Processing
- 12FCh Capital Equipment Corp.
- 12FDh i2S
- 12FEh ESD Electronic System Design GmbH
- 12FFh Lexicon
- 1300h Harman International Industries, Inc.
- 1302h Computer Sciences Corp.
- 1303h Innovative Integration
- 1304h Juniper Networks
- 1305h NetPhone, Inc.
- 1306h Duet Technologies
- 1307h Computer Boards
- 1308h Jato Technologies, Inc.
- 1309h AB Semicon, Ltd.
- 130Ah Mitsubishi Electric MicroComputer
- 130Bh Colorgraphic Communications Corp.
- 130Ch AMBEX Technologies, Inc.
- 130Dh Accelerix, Inc.
- 130Eh Yamatake-Honeywell Co., Ltd.
- 130Fh Advanet, Inc.
- 1310h GESPAC
- 1311h VideoServer, Inc.
- 1312h Acuity Imaging, Inc.
- 1313h Yaskawa Electric Co.
- 1316h Teradyne, Inc.
- 1317h Bridgecom, Inc.
- 1318h Packet Engines, Inc.
- 1319h ForteMedia, Inc.
- 131Ah Finisar Corp.
- 131Ch Nippon Electro-Sensory Devices Corp.
- 131Dh Sysmic, Inc.
- 131Eh Xinex Networks, Inc.
- 131Fh SIIG, Inc.
- 1320h Crypto AG
- 1321h Arcobel Graphics BV
- 1322h MTT Co., Ltd.
- 1323h DOME, Inc.
- 1324h Sphere Communications
- 1325h Salix Technologies, Inc.
- 1326h SeaChange International
- 1327h Voss Scientific
- 1328h Quadrant International
- 1329h Productivity Enhancement
- 132Ah Microcom, Inc.
- 132Bh BroadBand Technologies
- 132Ch Micrel, Inc.
- 132Dh Integrated Silicon Solution, Inc.
- 1330h MMC Networks
- 1331h RadiSys Corporation
- 1332h Micro Memory
- 1333h ???
- 1334h Redcreek Communications, Inc.
- 1335h Videomail, Inc.
- 1336h ???
- 1337h Third Planet Publishing
- 1338h BT Electronics
- 133Ah VTEL Corp.
- 133Bh Softcom Microsystems
- 133Ch Holontech Corp.
- 133Dh S S Technologies
- 133Eh Virtual Computer Corp.
- 133Fh SCM Microsystems
- 1340h Atalla Corp.
- 1341h Kyoto Microcomputer Co.
- 1342h Promax Systems Inc.
- 1343h Phylon Communications, Inc.
- 1344h Crucial Technology
- 1345h Arescom, Inc.
- 1346h ???
- 1347h Odetics
- 1348h ???
- 1349h Sumitomo Electric Industries, Ltd.
- 134Ah DTC Technology Corp.
- 134Bh Ark Research Corp.
- 134Ch Chori Joho System Co., Ltd.
- 134Dh Pctel, Inc.
- 134Eh CSTI
- 134Fh Algo System Co., Ltd.
- 1350h Systec Co., Ltd.
- 1351h Sonix, Inc.
- 1353h Dassault A.T.
- 1354h dWave System, Inc.
- 1355h Kratos Analytical, Ltd.
- 1356h The Logical Co.
- 1359h Prisa Networks
- 135Ah Brain Boxes
- 135Bh Giganet, Inc.
- 135Ch Quatech, Inc.
- 135Dh ABB Network Partner AB
- 135Eh Sealevel Systems, Inc.
- 135Fh I-Data International A-S
- 1360h Meinberg Funkuhren
- 1361h Soliton Systems K.K.
- 1362h Fujifacom Corp.
- 1363h Phoenix Technology, Ltd.
- 1364h ATM Communications, Inc.
- 1365h Hypercope Corp.
- 1366h Teijin Seiki Co., Ltd.
- 1367h Hitachi Zosen Corp.
- 1368h Skyware Corp.
- 1369h Digigram
- 136Ah High Soft Tech
- 136Bh Kawasaki Steel Corp.
- 136Ch Adtek System Science Co., Ltd.
- 136Dh Gigalabs, Ltd.
- 136Fh Applied Magic, Inc.
- 1370h ATL Products
- 1371h CNET Technology, Inc.
- 1373h Silicon Vision, Inc.
- 1374h Silicom, Ltd.
- 1375h Argosystems, Inc.
- 1376h LMC
- 1377h Electronic Equipment Production
- 1378h Telemann Co., Ltd.
- 1379h Asahi Kasei Microsystems Co., Ltd.
- 137Ah Mark Of The Unicorn, Inc.
- 137Bh PPT Vision
- 137Ch Iwatsu Electric Co., Ltd.
- 137Dh Dynachip Corp.
- 137Eh Patriot Scientific Corp.
- 137Fh Japan Satellite Systems, Inc.
- 1380h Sanritz Automation Co., Ltd.
- 1381h Brains Co., Ltd.
- 1382h Marian - Electronic & Software
- 1383h Controlnet, Inc.
- 1384h Reality Simulation Systems, Inc.
- 1385h Netgear
- 1386h Video Domain Technologies
- 1387h Systran Corp.
- 1388h Hitachi Information Technology Co., Ltd.
- 1389h Applicom International
- 138Ah Fusion Micromedia Corp.
- 138Bh Tokimec, Inc.
- 138Ch Silicon Reality
- 138Dh Future Techno Designs Pte., Ltd.
- 138Eh Basler GmbH
- 138Fh Patapsco Designs, Inc.
- 1390h Concept Development, Inc.
- 1391h Development Concepts, Inc.
- 1392h Medialight, Inc.
- 1394h Level One Communications
- 1395h Ambicom, Inc.
- 1396h Cipher Systems, Inc.
- 1397h Cologne Chip Designs GmbH
- 1398h Clarion Co., Ltd.
- 1399h Rios Systems Co., Ltd.
- 139Ah Alacritech, Inc.
- 139Bh Mediasonic Multimedia Systems, Ltd.
- 139Ch Quantum 3D, Inc.
- 139Dh EPL, Ltd.
- 139Eh Media4
- 139Fh Aethra S.R.L.
- 13A0h Crystal Group, Inc.
- 13A1h Kawasaki Heavy Industries, Ltd.
- 13A2h Ositech Communications, Inc.
- 13A3h HI-FN
- 13A4h Rascom, Inc.
- 13A5h Audio Digital Imaging, Inc.
- 13A6h Videonics, Inc.
- 13A7h Teles AG
- 13A8h Exar Corp.
- 13A9h Ultrasound Group
- 13AAh Broadband Networks, Inc.
- 13ABh Arcom Control Systems, Ltd.
- 13ACh Motion Media Technology, Ltd.
- 13ADh Nexus, Inc.
- 13AEh ALD Technology, Ltd.
- 13AFh T.Sqware
- 13B0h Maxspeed Corp.
- 13B1h Tamura Corp.
- 13B2h Techno Chips Co., Ltd.
- 13B3h Lanart Corp.
- 13B4h Wellbean Co, Inc.
- 13B5h ARM
- 13B6h DLoG GmbH
- 13B7h LOGIC Devices, Inc.
- 13B8h Nokia Telecommunications Oy
- 13B9h Elecom Co., Ltd.
- 13BAh Oxford Instruments
- 13BBh Sanyo Technosound Co., Ltd.
- 13BCh Bitran Corp.
- 13BDh Sharp Corp.
- 13BEh Miroku Jyoho Service Co., Ltd.
- 13BFh Sharewave., Inc.
- 13C0h Microgate Corp.
- 13C1h 3ware Inc.
- 13C2h Technotrend Systemtechnik GmbH
- 13C3h Janz Computer AG
- 13C4h Phase Metrics
- 13C5h Alphi Technology Corp.
- 13C6h Condor Engineering, Inc.
- 13C7h Blue Chip Technology, Ltd.
- 13C8h Apptech, Inc.
- 13C9h Eaton Corp.
- 13CAh IOMEGA Corp.
- 13CBh Yano Electric Co., Ltd.
- 13CCh Metheus Corp.
- 13CDh Compatible Systems Corp.
- 13CEh Cocom A/S
- 13CFh Studio Audio & Video, Ltd.
- 13D0h Techsan Electronics Co., Ltd.
- 13D1h Abocom Systems, Inc.
- 13D2h Shark Multimedia, Inc.
- 13D3h IMC Networks
- 13D4h Graphics Microsystems, Inc.
- 13D5h Media 100, Inc.
- 13D6h K.I. Technology Co., Inc.
- 13D7h Toshiba Engineering Corp.
- 13D8h Phobos Corp.
- 13D9h Apex PC Solutions, Inc.
- 13DAh Intresource Systems Pte., Ltd.
- 13DBh Janich & Klass Computertechnik GmbH
- 13DCh Netboost Corp.
- 13DDh Multimedia Bundle, Inc.
- 13DEh ABB Robotics Products AB
- 13DFh E-Tech, Inc.
- 13E0h GVC Corp.
- 13E1h Silicom Multimedia Systems, Inc.
- 13E2h Dynamics Research Corp.
- 13E3h Nest, Inc.
- 13E4h Calculex, Inc.
- 13E5h Telesoft Design, Ltd.
- 13E6h Argosy Research, Inc.
- 13E7h NAC, Inc.
- 13E8h Chip Express Corp.
- 13E9h Intraserver Technology, Inc.
- 13EAh Dallas Semiconductor
- 13EBh Hauppauge Computer Works, Inc.
- 13ECh Zydacron, Inc.
- 13EDh Raytheion E-Systems
- 13EEh Hayes Microcomputer Products, Inc.
- 13F0h Sundance Technology, Inc.
- 13F1h Oce' - Technologies B.V.
- 13F2h Ford Microelectronics, Inc.
- 13F3h McData Corp.
- 13F4h Troika Design, Inc.
- 13F5h Kansai Electric Co., Ltd.
- 13F6h C-Media Electronics, Inc.
- 13F7h Wildfire Communications
- 13F8h Ad Lib Multimedia, Inc.
- 13F9h NTT Advanced Technology Corp.
- 13FAh Pentland Systems, Ltd.
- 13FBh Aydin Corp.
- 13FCh Computer Peripherals International
- 13FDh Micro Science, Inc.
- 13FEh Advantech Co., Ltd.
- 13FFh Silicon Spice, Inc.
- 1400h ARTX, Inc.
- 1401h CR-Systems A/S
- 1402h Meilhaus Electronic GmbH
- 1403h Ascor, Inc.
- 1404h Fundamental Software, Inc.
- 1405h Excalibur Systems, Inc.
- 1406h Oce' Printing Systems GmbH
- 1407h Lava Computer Mfg., Inc.
- 1408h Aloka Co., Ltd.
- 1409h Timedia Technology Co., Ltd.
- 140Ah DSP Research, Inc.
- 140Bh Ramix, Inc.
- 140Ch Elmic Systems, Inc.
- 140Dh Matsushita Electrics Works, Ltd.
- 140Eh Goepel Electronic GmbH
- 140Fh Salient Systems Corp.
- 1410h Midas Lab, Inc.
- 1411h Ikos Systems, Inc.
- 1412h IC Ensemble, Inc.
- 1413h Addonics
- 1414h Microsoft
- 1415h Oxford Semiconductor, Ltd.
- 1416h Multiwave Innovation Pte, Ltd.
- 1417h Convergenet Technologies, Inc.
- 1418h Kyushu Electronics Systems, Inc.
- 1419h Excel Switching Corp.
- 141Ah Apache Micro Peripherals, Inc.
- 141Bh Zoom Telephonics, Inc.
- 141Dh Digitan Systems, Inc.
- 141Eh Fanuc, Ltd.
- 141Fh Visiontech, Ltd.
- 1420h Psion Dacom PLC
- 1421h ADS Technologies, Inc.
- 1422h Ygrec Systems Co., Ltd.
- 1423h Custom Technology Corp.
- 1424h Vidoeserver Connections
- 1425h ASIC Designers, Inc.
- 1426h Storage Technology Corp.
- 1427h Better On-line Solutions
- 1428h EDEC Co., Ltd.
- 1429h UNEX Technology Corp.
- 142Ah Kingmax Technology, Inc.
- 142Bh RadioLAN
- 142Ch Minton Optic Industry Co., Ltd.
- 142Dh Pix Stream, Inc.
- 142Eh Vitec Multimedia
- 142Fh Radicom Research, Inc.
- 1430h ITT Aerospace/Communications Division
- 1431h Gilat Satellite Networks
- 1432h Edimax Computer Co.
- 1433h Eltec Elektronik GmbH
- 1435h Real Time Devices US, Inc.
- 1436h CIS Technology, Inc.
- 1437h Nissin Co Inc
- 1438h Atmel-Dream
- 1439h Outsource Engineering & Mfg. Inc
- 143Ah Stargate Solutions Inc
- 143Bh Canon Research Center, America
- 143Ch Amlogic Inc
- 143Dh Tamarack Microelectronics Inc
- 143Fh Lightwell Co Ltd - Zax Division
- 1440h Algol Corp
- 1441h AGIE LTD
- 1442h Phoenix Contact Co GmbH
- 1443h Unibrain S.A.
- 1444h TRW
- 1445h Logical do Ltd
- 1447h AIM GmbH
- 1448h Alesis Studio
- 1449h TUT Systems Inc
- 144Ah Adlink Technology
- 144Bh Loronix Information Systems Inc
- 144Ch Catalina Research Inc
- 144Eh Olitec
- 144Fh Askey Computer Corp
- 1450h Nexus Systems Inc
- 1451h SP3D Chip Design GmbH
- 1453h Mycom Inc
- 1454h Altiga Networks
- 1455h Logic Plus Plus Inc
- 1456h Advanced Hardware
- 1457h Nuera Communications Inc
- 1458h Giga-Byte Technology
- 1459h Dooin Electronics
- 145Ah Escalate Networks Inc
- 145Bh Praim SRL
- 145Ch Cryptek
- 145Dh Gallant Computer Inc
- 145Eh Aashima Technology B.V.
- 145Fh Baldor Electric Company
- 1460h Dynarc Inc
- 1461h Avermedia Technologies Inc
- 1462h Micro-Star International Co Ltd
- 1463h Fast Corp
- 1464h Interactive Circuits & Systems Ltd
- 1465h GN Nettest Telecom Div.
- 1466h Designpro Inc
- 1467h Digicom SPA
- 1468h Ambit microsystem Corp
- 1469h Cleveland Motion Controls
- 146Ah IFR Ltd
- 146Bh Parascan Technologies Ltd
- 146Ch Ruby Tech Corp
- 146Dh Tachyon Inc
- 146Eh Williams Electronic Games Inc
- 146Fh Multi Dimensional Consulting Inc
- 1470h Bay Networks
- 1471h Integrated Telecom Express Inc
- 1472h Daikin Indistries Ltd
- 1473h Zapex Technologies Inc
- 1474h Doug Carson & Associates
- 1475h Picazo Communications
- 1476h Mortara Instrument Inc
- 1477h Net Insight
- 1478h Diatrend Corp
- 1479h Toray Industries Inc
- 147Ah Formosa Industrial Computing
- 147Bh Abit Computer Corp
- 147Ch Aware Inc
- 147Dh Interworks Computer Products
- 147Eh Matsushita Graphic Communication Systems Inc
- 147Fh Nihon Unisys Ltd
- 1480h SCII Telecom
- 1481h Biopac Systems Inc
- 1482h ISYTEC
- 1483h Labway Corp
- 1668h Action Tec Electronics, Inc.
- 1A08h Sierra Semiconductor
- 1B13h Jaton Corp.
- 1C1Ch Symphony (see #00864)
- 1D44h DPT
- 1DE1h TekRAM (see #00865)
- 21C3h 21st Century Computer Corp.
- 2348h Racore
- 270Bh Xantel Corp.
- 270Fh Chaintech Computer Co., Ltd.
- 3000h Hansol Electronics Inc.
- 3142h Post Impression Systems
- 3388h Hint Corp.
- 3D3Dh 3DLabs (see #00866)
- 4005h Avance Logic, Inc. (see #00867)
- 4444h Internext Compression, Inc.
- 4468h BRIDGEPORT MACHINES
- 4594h Cogetec Informatique Inc.
- 4680h UMAX Computer Corp.
- 4843h Hercules Computer Technology, Inc.
- 4942h ???
- 4943h Growth Networks
- 4978h Axil Computer, Inc.
- 4A14h NetVin
- 4B10h Buslogic Inc. (see #00869)
- 4C48h Lung Hwa Electronics
- 4D51h Mediaq Inc
- 4DDCh ILC data Device Corp.
- 5053h Voyetra Technologies
- 5143h Qualcomm, Inc.
- 5333h S3 (see also #00870)
- 5455h Technische Universit„t Berlin
- 5519h Cnet Technologies, Inc.
- 5555h Genroco Inc
- 5700h Netpower
- 6356h UltraStor
- 6374h c't Magazin fuer Computertechnik (see #00871)
- 6409h Logitec Corp
- 6666h Decision Computer International Co.
- 7604h O.N. Electric Co Ltd
- 8008h Quancom Electronic GmbH (see #00872)
- 8086h Intel (see also #00873)
- 8800h Trigem Computer (see #00874)
- 8866h T-Square Design Inc
- 8888h Silicon Magic
- 8E0Eh Computone Corporation
- 8E2Eh KTI
- 9004h Adaptec (see #00875)
- 9005h Adaptec
- 907Fh Atronics (see #00876)
- 9412h Holtek
- A200h NEC Corp. (see #00754)
- A259h Hewlett Packard (see #00757)
- A25Bh Hewlett Packard GmbH PL24-MKT (see #00757)
- A304h Sony
- A727h 3com Corp. (see #00796)
- AA42h Scitex Digital Video
- B1B3h Shiva Europe, Ltd.
- C001h TSI Telsys
- C0A9h Micron/Crucial Technology
- C0DEh Motorola (see #00768)
- C0FEh Motion Engineering, Inc.
- CAFEh Chrysalis-ITS
- D4D4h DY4 Systems Inc.
- E159h Tiger Jet Network Inc.
- E000h Winbond
- E159h Tiger Jet Network Inc.
- ECC0h Echo Corp.
- EDD8h Ark Logic Inc (see #00877)
- FEDAh Epigram Inc
- Note: this list, as well as the following per-vendor tables, tends to be
- rather out-of-date. The current version of the listing can be found
- in PCICFG.DAT, part of the PCICFG program distributed in RBPCIxxx.ZIP
- (available at http://www.pobox.com/~ralf/files.html).
- SeeAlso: #00878
- (Table 00733)
- Values for Compaq PCI device code:
- 0001h EISA Bridge
- 0002h ISA Bridge
- 1000h Triflex/PCI CPU Bridge
- 2000h Triflex/PCI CPU Bridge
- 3032h QVision
- 3033h QVision 1280/p
- 3034h QVision 1280
- 4000h Triflex/PCI CPU Bridge
- AE32h Netelligent 10/100 TX
- AE34h Netelligent 10 T
- AE35h Integrated NetFlex 3/P
- AE40h Dual-port Netelligent 10/100 TX
- AE43h ProLiant Integrated Netelligent 10/100
- B011h Dual-port Netelligent 10/100 TX
- F130h ThunderLAN
- F150h NetFlex 3/P with BNC
- SeeAlso: #00732
- (Table 00734)
- Values for Symbios Logic (formerly NCR) PCI device code:
- 0001h PCI revision ID:
- 00-0Fh 53C810 (fast SCSI)
- 10-1Fh 53C810A (fast SCSI)
- 20-2Fh 53C810ALV (fast SCSI)
- 0002h 53C820 (fast wide SCSI)
- 0003h PCI revision ID:
- 00-0Fh 53C825 (fast wide SCSI)
- 10-1Fh 53C825A (Ultra wide SCSI)
- 0004h 53C815 (fast SCSI)
- 0005h 53C810AP (fast SCSI)
- 0006h PCI revision ID:
- 00-0Fh 53C860 (Ultra SCSI)
- 10-1Fh 53C860LV (Ultra SCSI)
- 000Fh 53C875 (Ultra wide SCSI)
- 1000h 63c815 Fast-SCSI
- SeeAlso: #00732
- (Table 00735)
- Values for ATI PCI device code:
- 4158h 68800AX (Mach32)
- 4354h 215CT222
- 4358h 210888CX
- 4758h 210888GX (Mach64)
- 5654h 215VT222 Video Expression
- SeeAlso: #00732
- (Table 00736)
- Values for ULSI Systems PCI device code:
- 0201h US201 Graphics Controller
- SeeAlso: #00732
- (Table 00737)
- Values for VLSI Technologies PCI device code:
- 0005h 82C592 CPU Bridge
- 0006h 82C593 ISA Bridge
- 0007h 82C594 Wildcat System Ctrlr
- 0008h VL82C597 Wildcat ISA Bridge
- 0009h 82C597
- 000Ch 82C541
- 000Dh 82C543
- 0101h 82C532
- 0102h 82C534
- 0104h 82C535
- 0105h 82C147
- 0200h 82C975 RISC GUI Accelerator
- 0280h 82C925 RISC GUI Accelerator
- SeeAlso: #00732
- (Table 00738)
- Values for Avance Logic, Inc. (Avance Logics) PCI device code:
- 2301h ALG2301 GUI accelerator
- 2302h ALG2302 GUI accelerator
- SeeAlso: #00732,INT 10/AX=4F70h
- (Table 00739)
- Values for National Semiconductor PCI device code:
- 0001h DP83810 Ethernet
- 0002h PC87415 IDE DMA-Master Mode controller (see #00922)
- D001h NS87410 EIDE controller (see #00921)
- SeeAlso: #00732,#00773
- (Table 00740)
- Values for Tseng Labs PCI device code:
- 3202h ET4000/W32p-2
- 3205h ET4000/W32p-B
- 3206h ET4000/W32p-C
- 3207h ET4000/W32p-D
- 3208h ET6000
- SeeAlso: #00732
- (Table 00741)
- Values for Weitek PCI device code:
- 9000h Power9000???
- 9001h Power9001
- 9100h Power9100
- SeeAlso: #00732
- (Table 00742)
- Values for DEC PCI device code:
- 0001h DC21050 DEC BRD PCI-PCI bridge
- 0002h DC21040 Tulip
- 0004h DecChip 21030
- 0009h DC21140 Tulip Fast (see #00923)
- 000Ah 21230 Video Codec
- 000Fh DEFPA FDDI
- 0014h DC21041 Tulip Plus (see #00923)
- 0016h DGLPB ATM
- 0019h DC21143 PCI/Cardbus Ethernet
- 0021h 21052 PCI-PCI Bridge (see #00924)
- 0022h 21150 PCI-PCI Bridge
- 0024h 21152 PCI-PCI Bridge
- 0025h 21153 PCI-PCI Bridge
- 0026h 21154 PCI-PCI Bridge
- 0045h 21553 PCI-PCI Bridge
- 0046h 21554 PCI-PCI Bridge
- 1050h??? 21340 Managed Port Switch
- SeeAlso: #00732
- (Table 00743)
- Values for Cirrus Logic PCI device code:
- 0038h CL-GD7548 Video Controller
- 004Ch CL-GD7556 64-bit Video/Graphics LCD/CRT Ctrlr
- 00A0h Cirrus 5430
- 00A4h Cirrus 5434-4
- 00A8h Cirrus 5434-8
- 00ACh Cirrus 5436
- 00B8h Cirrus GD5446
- 00BCh CL-GD5480 64-bit SGRAM GUI accelerator
- 1100h Cirrus 6729 PCMCIA Controller
- 1110h Cirrus 6832 PCMCIA/CardBus Ctrlr
- 1200h Cirrus 7542
- 1202h Cirrus 7543
- 1204h Cirrus 7541
- 6001h CS4610/4611 CrystalClear SoundFusion Audio Accelerator
- SeeAlso: #00732
- (Table 00744)
- Values for IBM PCI device code:
- 0002h MCA Bridge
- 0005h Alta Lite CPU Bridge
- 0007h Alta MP CPU Bridge
- 000Ah ISA Bridge
- 0017h CPU Bridge
- 0018h Auto LANStreamer
- 001Bh GXT-150P Graphics Adapter
- 001Dh 82G2675
- 0020h MCA Bridge
- 0022h PCI-PCI Bridge
- 002Eh ??? RAID SCSI
- 0036h Miami/PCI 32-bit LocalBus Bridge
- 0047h ???
- 0048h ???
- 004Ah ???
- 004Bh ???
- 004Ch ???
- 004Dh ???
- 004Eh ???
- 004Fh ???
- 0050h ???
- 0051h ???
- 0052h ???
- 0053h ??? 25 MBit ATM controller
- 0055h ???
- 0059h ???
- 005Ah ???
- 005Bh ???
- SeeAlso: #00732
- (Table 00745)
- Values for Western Digital PCI device code:
- 0193h WD33C193A 8-bit SCSI
- 0196h SCSI Bridge
- 0197h WD33C197A 16-bit SCSI
- 0296h WD33C296A 16-bit SCSI
- 3193h WD7193 Fast SCSI-II
- 3197h WD7197 Fast-Wide SCSI-II
- 3296h WD7197
- 4296h WD33C296 Wide Fast-20 Bridge
- C24Ah 90C?
- SeeAlso: #00732
- (Table 00746)
- Values for AMI PCI device code:
- 9010h MegaRAID
- 9030h ??? IDE Controller
- 9031h ??? IDE Controller
- 9032h ??? IDE/SCSI Controller
- 9033h ??? SCSI Controller
- 9040h ??? Multimedia card
- SeeAlso: #00732
- (Table 00747)
- Values for Advanced Micro Devices (AMD) PCI device code:
- 2000h Am79C970 (Lance)
- Am79C970A (PCnet-PCI II, PCI revision ID is 1xh)
- Am79C971 (PCnet-FAST, PCI revision ID is 2xh)
- 2020h Am53c974 SCSI (see #00925)
- 2040h Am79C974 Ethernet/SCSI
- SeeAlso: #00732
- (Table 00748)
- Values for Trident PCI device code:
- 9320h ??? 32-bit GUI accelerator
- 9350h ??? 32-bit GUI accelerator
- 9360h ??? Flat-Panel controller
- 9420h Trident 9420
- 9440h Trident 9440
- 9460h Trident 9460
- 9660h Trident 9660
- 9682h ??? Multimedia accelerator
- SeeAlso: #00732
- (Table 00749)
- Values for LSI Logic PCI device code:
- 0000h Hydra (Pentium chipset)
- 0010h Aspen (486 chipset)
- SeeAlso: #00732
- (Table 00750)
- Values for Matrox PCI device code:
- 0518h MGA-II (Ultima)
- 0519h Millenium (2064W)
- 0D10h MGA-I (Impression)
- SeeAlso: #00732
- (Table 00751)
- Values for Chips & Technologies PCI device code:
- 00B8h 64310 GUI Accelerator
- 00D0h 65545 Flat Panel/CRT VGA
- 00D8h F65545
- 00DCh F65548
- 00E0h 65550 Flat Panel/CRT GUI Accelerator
- 00E4h 65554 display
- 00E5h 65555 HiQVPro LCD/CRT GUI Controller
- 00F4h 68554 HiQVision LCD/CRT GUI Controller
- SeeAlso: #00732
- (Table 00752)
- Values for Toshiba America PCI device code:
- 0009h r4x00 Bridge
- SeeAlso: #00732
- (Table 00753)
- Values for Miro Computer Products AG PCI device code:
- 5601h 36050
- 5607h video in/out w/ MPEG
- SeeAlso: #00732
- (Table 00754)
- Values for NEC Corporation PCI device code:
- 0001h PCI-to-486 Bridge
- 0002h PCI-to-VL98 Bridge
- 0003h ATM LAN controller
- 0004h r4000PCI Bridge
- 0005h PCI-to-486 Bridge
- 0006h GUI Accelerator
- 0007h PCI-to-UXbus Bridge
- 0008h GUI Accelerator
- 0009h PC-98 Graphics Controller
- SeeAlso: #00732
- (Table 00755)
- Values for Future Domain PCI device code:
- 0000h TMC-36C70 / TMC-18C30 (fast SCSI)
- SeeAlso: #00732
- (Table 00756)
- Values for Silicon Integrated System (SIS) PCI device code:
- 0001h SiS6201
- 0002h SiS6202
- 0006h SI 85C501/2
- 0008h SI 85C503/5513
- 0205h SiS6205
- 0406h SiS501
- 0496h SiS496
- 0596h Pentium chipset
- 0601h SiS601
- 3602h IDE controller
- 5401h 486 chipset
- 5511h SiS5511 Pentium chipset
- 5513h SiS5513 EIDE controller
- 5581h Pentium chipset
- 5582h ISA Bridge
- 5596h Pentium chipset
- 6204h video decoder/MPEG
- 6205h PCI VGA controller
- SeeAlso: #00732
- (Table 00757)
- Values for Hewlett-Packard PCI device code:
- 1030h J2585A DeskDirect 10/100 PCI NIC
- 1040h J2973A DeskDirect 10BaseT PCI NIC
- 1041h J2585B DeskDirect 10/100 PCI NIC
- 1042h J2970A DeskDirect 10BaseT/2 PCI NIC
- 2910h E2910A PCI-bus exerciser
- 2925h E2925A PCI-bus exerciser
- SeeAlso: #00732
- (Table 00758)
- Values for PC Technology PCI device code:
- 1000h RZ1000
- 1001h RZ1001
- SeeAlso: #00732
- (Table 00759)
- Values for Distributed Processing Technology (DPT) PCI device code:
- A400h 2124A/9X EATA SmartCache/RAID SCSI
- SeeAlso: #00732
- (Table 00760)
- Values for OPTi PCI device code:
- A0F8h 82C750 (Vendetta) USB controller
- C557h 82C557
- C558h 82C558
- C567h 82C750 (Vendetta, device 0)
- C568h 82C750 (Vendetta, device 1)
- C621h 82C621 IDE controller / 82C750 Vendetta IDE controller
- C822h 82C822
- C824h 82C824 FireFox PC-Card controller
- C825h 82C825 FireBridge II
- C861h 82C861/82C871 FireLink/FireBlast PCI-to-USB Bridge (see #00965)
- D568h 82C750 Vendetta IDE controller
- D768h 82C750 Vendetta IDE controller (ultra DMA)
- SeeAlso: #00732
- (Table 00761)
- Values for SGS Thomson Microelectronics PCI device code:
- 0008h SGS 2000
- 0009h SGS 1764
- SeeAlso: #00732
- (Table 00762)
- Values for BusLogic PCI device code:
- 0140h MultiMaster NC
- 1040h MultiMaster
- 8130h FlashPoint
- SeeAlso: #00732
- (Table 00763)
- Values for Texas Instruments PCI device code:
- 0500h 100 Mbit LAN controller
- 0508h tms380c2x
- 1000h TI PCI Eagle i/f
- 3D04h TVP4010 3D Graphics Processor !!!ti\slas155.pdf p.26
- A001h TDC1570 64-bit ATM sar
- A100h TDC1561 32-bit ATM sar
- AC10h PCI1050 PCCard controller
- AC11h PCI1053 PCCard controller
- AC12h PCI1130 PCCard controller
- SeeAlso: #00732
- (Table 00764)
- Values for Oak Technology PCI device code:
- 0107h OTI-0107 (Spitfire)
- SeeAlso: #00732
- (Table 00765)
- Values for Winbond PCI device code:
- 0000h ??? Ethernet controller
- 0001h 83769
- 0105h 82C105
- SeeAlso: #00732
- (Table 00766)
- Values for Hitachi Ltd. PCI device code:
- 0001h PCI Bridge
- 0002h PCI-bus controller
- SeeAlso: #00732
- (Table 00767)
- Values for EFAR Microsystems PCI device code:
- 0810h 486 Bridge
- 0922h Pentium/P54C Bridge
- 0926h ISA Bridge
- SeeAlso: #00732
- (Table 00768)
- Values for Motorola PCI device code:
- 0001h MPC105 PowerPC chipset
- SeeAlso: #00732
- (Table 00769)
- Values for Promise Technology PCI device code:
- 5300h Promise 5300
- SeeAlso: #00732
- (Table 00770)
- Values for Number 9 Computer Company PCI device code:
- 2309h Imagine 128
- 2339h Imagine 128-2
- SeeAlso: #00732
- (Table 00771)
- Values for United Microelectronics (UMC) PCI device code:
- 0001h UM82C881 (486 chipset)
- 0002h UM82C776 (ISA Bridge)
- 0101h UM8673F
- 0881h UM8881 (486 chipset)
- 0886h UM8886F (ISA Bridge)
- 0891h UM8891A
- 1001h UM886A (dual IDE controller)
- 673Ah UM8886BF
- 8710h UM8710 VGA controller
- 886Ah UM8886A
- 8881h UM8881F
- 8886h UM8886F
- 8891h UM8891 (Pentium chipset)
- 9017h UM9017F
- E881h UM8881 (486 chipset)
- E886h UM8886N
- E891h UM8891N
- SeeAlso: #00732
- (Table 00772)
- Values for 8x8 (X Tech) PCI device code:
- 0001h AGX-016
- 0002h IIT3204/3501 MPEG decoder
- SeeAlso: #00732
- (Table 00773)
- Values for PicoPower PCI device code:
- 0000h PT80C826 VL Bridge
- 0001h Vesuvius V1-LS System Controller (see PORT 0024h"V1-LS")
- Revision ID field: 03h = Rev. AA, 04h = Rev. BB, 05h = Rev. CC
- 0002h Vesuvius V3-LS ISA Bridge (see #00971,PORT 0024h"V3-LS")
- 0005h National Semiconductor PC87550 PCI System Controller
- 8002h Vesuvius V3-LS ISA Bridge (secondary; Rev. BB and higher only)
- SeeAlso: #00732,#00739
- (Table 00774)
- Values for Mylex Corporation PCI device code:
- 0001h DAC960P Wide SCSI + RAID
- SeeAlso: #00732
- (Table 00775)
- Values for Yamaha Corporation PCI device code:
- 0001h ?? 3D graphics controller
- 0002h YGV615 RPA3 3D graphics controller
- SeeAlso: #00732
- (Table 00776)
- Values for NexGen Microsystems PCI device code:
- 4E78h NexGen 82C501
- SeeAlso: #00732
- (Table 00777)
- Values for Q Logic PCI device code:
- 1020h ISP1020 Fast-Wide SCSI
- 1022h ISP1022 Fast-Wide SCSI
- SeeAlso: #00732
- (Table 00778)
- Values for Leadtek Research PCI device code:
- 0000h LeadTek 805
- SeeAlso: #00732
- (Table 00779)
- Values for Interphase PCI device code:
- 0001h ATM interface
- 0002h 100 vg amylan controller
- SeeAlso: #00732
- (Table 00780)
- Values for Data Technology Corporation (DTC) PCI device code:
- 0802h SL82C105 EIDE Controller
- SeeAlso: #00732
- (Table 00781)
- Values for Contaq Microsystems PCI device code:
- 0600h Contaq 82C599
- SeeAlso: #00732
- (Table 00782)
- Values for Forex Computer Corporation PCI device code:
- 0001h FR710 EIDE Controller
- 0613h ??? Host Bridge
- SeeAlso: #00732
- (Table 00783)
- Values for Bit3 Computer PCI device code:
- 0001h Model 617 PCI-VME Bus Adapter
- SeeAlso: #00732
- (Table 00784)
- Values for Olicom PCI device code:
- 0001h ??? Ethernet Controller
- SeeAlso: #00732
- (Table 00785)
- Values for Intergraph Corporation PCI device code:
- 0020h 3D graphics processor
- 0021h 3D graphics processor w/texture
- 0040h 3D graphics frame buffer
- 0041h 3D graphics frame buffer
- 0060h proprietary bus bridge
- 0720h Motion JPEG codec
- SeeAlso: #00732
- (Table 00786)
- Values for National Instruments PCI device code:
- C801h PCI-GPIB
- SeeAlso: #00732
- (Table 00787)
- Values for CMD Technology, Inc. PCI device code:
- 0640h CMD 640
- 0642h IDE controller with RAID-1
- 0646h CMD 646 EIDE
- 0650h PBC0650A Fast SCSI-II
- SeeAlso: #00732
- (Table 00788)
- Values for Appian Technology:
- 0038h ??? EIDE Controller
- SeeAlso: #00732
- (Table 00789)
- Values for Vision / Quantum Designs Ltd. PCI device code:
- 0001h QD8500
- 0002h QD8580
- SeeAlso: #00732
- (Table 00790)
- Values for Brooktree Corporation PCI device code:
- 0350h BT848 TV/PCI with DMA Push
- 2115h BtV 2115 Mediastream Controller
- 2125h BtV 2125 Mediastream Controller
- 8230h Bt8230 ATM Segment/Reassembly Ctrlr (SRC) (see #00981)
- SeeAlso: #00732
- (Table 00791)
- Values for Sierra Semiconductor PCI device code:
- 0000h STB 64-bit GUI accelerator
- SeeAlso: #00732
- (Table 00792)
- Values for ACC Microelectronics PCI device code:
- 0000h ACC 2056
- SeeAlso: #00732
- (Table 00793)
- Values for Symphony Labs PCI device code:
- 0001h 83769
- 0103h sl82c103 PCI-IDE Controller
- 0105h 82C105 bus-master PCI-IDE controller
- SeeAlso: #00732
- (Table 00794)
- Values for PLX Technology PCI device code:
- 9036h PCI9036 interface chip
- 9060h PCI9060xx interface chip
- SeeAlso: #00732
- (Table 00795)
- Values for Madge Networks PCI device code:
- 0001h Smart 16/4 Ringnode
- 1000h Collage 25 ATM adapter
- 1001h Collage 155 ATM adapter
- SeeAlso: #00732
- (Table 00796)
- Values for 3com Corporation PCI device code:
- 5900h 3C590
- 5950h 3C595TX
- 5951h 3C595T4
- 5952h 3C595MII
- 8811h token ring
- 9000h 3C900-TPO Fast Etherlink
- 9001h 3C900-COMBO Fast Etherlink
- 9050h 3C905-TX Fast Etherlink 10/100
- SeeAlso: #00732
- (Table 00797)
- Values for Standard Microsystems Corporation (SMC) PCI device code:
- 1000h 37C665 floppy disk controller
- 1001h 37C922 floppy disk controller
- SeeAlso: #00732
- (Table 00798)
- Values for Acer Labs Inc. PCI device code:
- 1435h M1435 VL Bridge
- 1445h ALI M1445 VL bridge + EIDE
- 1449h ALI M1449 ISA bridge
- 1451h ALI M1451 Pentium chipset
- 1461h ALI M1461 P54C chipset
- 1489h ALI M1489
- 1511h ALI M1511
- 1513h ALI M1513
- 3141h M3141 GUI accelerator VRAM
- 3143h M3143 GUI accelerator VRAM/DAC
- 3145h M3145 GUI accelerator VRAM
- 3147h M3147 GUI accelerator VRAM/DAC
- 3149h M3149 GUI accelerator VRAM
- 3151h M3151 GUI accelerator VRAM
- 5212h M4803
- 5215h ALI MS4803 EIDE controller
- 5217h m5217 I/O
- 5219h m5219 I/O
- 5235h m5225 I/O
- SeeAlso: #00732
- (Table 00799)
- Values for Surecom Technology PCI device code:
- 5240h IDE Controller
- 5241h PCMCIA Bridge
- 5242h general-purpose controller
- 5243h Bus controller
- 5244h Floppy-disk controller
- SeeAlso: #00732
- (Table 00800)
- Values for Neomagic Corporation:
- 0000h graphics controller
- SeeAlso: #00732
- (Table 00801)
- Values for Advanced System Products PCI device code:
- 1100h ABP940 revision A??? SCSI
- 1200h ABP940 revision B??? Fast SCSI-2
- 1300h Fast-Wide SCSI controller
- SeeAlso: #00732
- (Table 00802)
- Values for Citicorp TTI PCI device code:
- 2001h mb86605 Wide SCSI-2
- SeeAlso: #00732
- (Table 00803)
- Values for CENR/ECP/EDU PCI device code:
- 0001h SPSB PMC
- 0002h SPSB PCI
- 10DCh ATT 2C15-3 FPGA
- SeeAlso: #00732
- (Table 00804)
- Values for Evans & Sutherland PCI device code:
- 0001h 3D graphics processor
- SeeAlso: #00732
- (Table 00805)
- Values for Emulex Corporation PCI device code:
- 1AE5h Fibre Channel Host Adapter
- SeeAlso: #00732
- (Table 00806)
- Values for Integrated Micro Solutions PCI device code:
- 5026h IMS5026/27/28 VL Bridge
- 5028h ISA Bridge
- 8849h IMS 8849
- 8853h ATM network card
- 9128h IMS9129 GUI accelerator
- SeeAlso: #00732
- (Table 00807)
- Values for TekRAM Technology Corporation Ltd. PCI device code:
- 690Ch TekRAM 690c
- SeeAlso: #00732
- (Table 00808)
- Values for Newbridge Microsystems PCI device code:
- 0000h CA91C042 VMEbus Bridge
- SeeAlso: #00732
- (Table 00809)
- Values for Applied Micro Circuits Corp. PCI device code:
- 4750h S5933 PCI controller
- 8043h MyriNet
- SeeAlso: #00732
- (Table 00810)
- Values for Integraphics Systems PCI device code:
- 1680h 1680
- SeeAlso: #00732
- (Table 00811)
- Values for Artist Graphics PCI device code:
- 0101h 3GA 64-bit graphics processor
- SeeAlso: #00732
- (Table 00812)
- Values for Realtek Semiconductor PCI device code:
- 8029h Realtek 8029
- SeeAlso: #00732
- (Table 00813)
- Values for ASCII Corporation PCI device code:
- 7310h V7310 VGA Video Overlay
- SeeAlso: #00732
- (Table 00814)
- Values for NKK Corporation PCI device code:
- A001h NDR4000 NR4600 Bridge
- SeeAlso: #00732
- (Table 00815)
- Values for Truevision PCI device code:
- 0000h ??? GUI Accelerator
- 0001h ??? GUI Accelerator
- 0002h ??? GUI Accelerator
- 0003h ??? GUI Accelerator
- 0004h ??? GUI Accelerator
- 0005h ??? GUI Accelerator
- 0006h ??? GUI Accelerator
- 0007h ??? GUI Accelerator
- 0008h ??? GUI Accelerator
- 0009h ??? GUI Accelerator
- 0010h ??? GUI Accelerator
- 0011h ??? GUI Accelerator
- 0012h ??? GUI Accelerator
- 0013h ??? GUI Accelerator
- 0014h ??? GUI Accelerator
- 0015h ??? GUI Accelerator
- SeeAlso: #00732
- (Table 00816)
- Values for Initio Corporation PCI device code:
- 9100h 320P
- 9400h Fast-Wide SCSI
- 9700h Fast-Wide SCSI
- SeeAlso: #00732
- (Table 00817)
- Values for VIA Technologies PCI device code:
- 0505h VIA 82C505
- 0561h VIA 82C561
- 0571h AMD-645 Peripheral Bus Controller, function 1 (see #01034)
- VT82C586A/B PCI Integrated Peripheral Controller, function 1
- 0576h VIA 82C576
- 0585h VT82C585VPX Host Bus-PCI bridge (see #00982)
- 0586h AMD-645 Peripheral Bus Controller, function 0 (see #01011)
- VT82C586A/B PCI Integrated Peripheral Controller, function 0
- 0595h AMD-640 System Controller (see #00983)
- VT82C595
- 0597h VT82C597 / VT82C597AT
- 1000h 82C570MV P54 Controller
- 1106h 82C570MV ISA Bridge + IDE
- 1571h VIA 82C416
- 3038h AMD-645 Peripheral Bus Controller, function 2 (see #01046)
- VT82C586A/B PCI Integrated Peripheral Controller, function 2
- 3040h AMD-645 Peripheral Bus Controller, function 3 (see #01049)
- VT82C586B PCI Integrated Peripheral Controller, function 3
- SeeAlso: #00732
- (Table 00818)
- Values for Proteon Inc. PCI device code:
- 0100h p1690plus-AA Token Ring
- 0101h p1690plus-AB 2-port Token Ring
- SeeAlso: #00732
- (Table 00819)
- Values for Cogent Data Technologies PCI device code:
- 1400h EM110TX PCI Fast Ethernet
- SeeAlso: #00732
- (Table 00820)
- Values for Siemens Nixdorf PCI device code:
- 6120h SZB6120 Multimedia Adapter
- SeeAlso: #00732
- (Table 00821)
- Values for Rockwell PCI device code:
- 2200h FDDI adapter
- 2300h Fast Ethernet adapter
- 2340h four-port Fast Ethernet
- 2400h ATM adapter
- SeeAlso: #00732
- (Table 00822)
- Values for Datacube Inc. PCI device code:
- 9500h MAX-LC SuperVGA
- 9501h MAX-LC image processing
- SeeAlso: #00732
- (Table 00823)
- Values for Vortex Computersysteme GmbH PCI device code:
- 0000h GDT60x0 SCSI RAID
- 0001h GDT6000B SCSI RAID
- 0002h GDT6x10 SCSI RAID
- 0003h GDT6x20 two-channel SCSI RAID
- 0004h GDT6530 three-channel SCSI RAID
- 0005h GDT6550 five-channel SCSI RAID
- 0006h GDT6x17
- 0007h GDT6x27
- 0008h GDT6537
- 0009h GDT6557
- 000Ah GDT6x15
- 000Bh GDT6x25
- 000Ch GDT6535
- 000Dh GDT6555
- SeeAlso: #00732
- (Table 00824)
- Values for Efficient Networks, Inc. PCI device code:
- 0000h 155P-MF1 ATM FPGA
- 0002h ATM ASIC
- SeeAlso: #00732
- (Table 00825)
- Values for FORE Systems PCI device code:
- 0210h PCA200PC
- 0300h PCA200E
- SeeAlso: #00732
- (Table 00826)
- Values for Infomedia MicroElectronics PCI device code:
- 0000h EIDE/HD and IDE/CD-ROM controller
- 000Bh EIDE/HD and IDE/CD-ROM controller
- SeeAlso: #00732
- (Table 00827)
- Values for Imaging Technology PCI device code:
- 0000h ICPCI
- 0001h video frame grabber/processor
- SeeAlso: #00732
- (Table 00828)
- Values for Mercury Computer Systems PCI device code:
- 0001h Raceway Bridge
- SeeAlso: #00732
- (Table 00829)
- Values for Fuji Xerox Co Ltd. PCI device code:
- 0001h Printer Controller
- SeeAlso: #00732
- (Table 00830)
- Values for Ziatech Corporation PCI device code:
- 8905h 8905 STD-32 Bridge
- SeeAlso: #00732
- (Table 00831)
- Values for Dynamic Pictures Inc. PCI device code:
- 0001h VGA-compatible 3D graphics
- SeeAlso: #00732
- (Table 00832)
- Values for Cyclone Microsystems (PLX Technology???) PCI device code:
- 0001h PLX 9060
- 0911h PCI 911 i960Jx Intelligent I/O
- 0912h PCI 912 i960Cx Intelligent I/O
- 0913h PCI 913 i960Hx Intelligent I/O
- SeeAlso: #00732
- (Table 00833)
- Values for Crest Microsystem PCI device code:
- 0001h EIDE/ATAPI super adapter
- SeeAlso: #00732
- (Table 00834)
- Values for Alliance Semiconductor Corp. PCI device code:
- 3210h Pro Motion 3210
- 6410h GUI Accelerator
- 6412h GUI Accelerator
- 6420h GUI Accelerator
- 6422h Pro Video
- 6424h GUI Accelerator
- 6426h GUI Accelerator
- SeeAlso: #00732
- (Table 00835)
- Values for Cincinnati Milacron PCI device code:
- 0001h Noservo Controller
- SeeAlso: #00732
- (Table 00836)
- Values for Schneider & Koch Co. PCI device code:
- 4000h FDDI adapter
- SeeAlso: #00732
- (Table 00837)
- Values for VMIC PCI device code:
- 7587h VME
- SeeAlso: #00732
- (Table 00838)
- Values for Digi International / Stargate PCI device code:
- 0003h RightSwitch
- SeeAlso: #00732
- (Table 00839)
- Values for Voarx R&D Inc. PCI device code:
- 3011h Tokenet/vg 1001/10m anylan
- 9050h Lanfleet/Truevalue
- SeeAlso: #00732
- (Table 00840)
- Values for MuTech PCI device code:
- 0001h MV1000
- SeeAlso: #00732
- (Table 00841)
- Values for PFU Ltd. PCI device code:
- 0001h Host Bridge
- SeeAlso: #00732
- (Table 00842)
- Values for Creative Labs (vendor ID 1163h) PCI device code:
- 0001h 3D Blaster
- SeeAlso: #00732
- (Table 00843)
- Values for Imagraph Corporation PCI device code:
- 0001h Motion JPEG record/play w/ audio
- SeeAlso: #00732
- (Table 00844)
- Values for Alfa Inc. PCI device code:
- AFA1h Fast Ethernet
- SeeAlso: #00732
- (Table 00845)
- Values for Matsushita Electronics PCI device code:
- 1592h ???
- SeeAlso: #00732
- (Table 00846)
- Values for Corollary Inc. PCI device code:
- 0014h PCIB C-bus II to PCI bridge chip
- SeeAlso: #00732
- (Table 00847)
- Values for BitFlow Inc. PCI device code:
- 0001h Raptor-PCI frame grabber
- SeeAlso: #00732
- (Table 00848)
- Values for Artop Electric PCI device code:
- 0001h IDE controller
- 0002h IDE controller
- 0003h SCSI-2 cache controller
- 0004h ATP8400 ASIC cache accelerator
- 8001h SCSI-2 cache controller
- 8002h SCSI-2 controller
- SeeAlso: #00732
- (Table 00849)
- Values for Zeitnet Inc. PCI device code:
- 0001h Zeitnet 1221
- 0002h Zeitnet 1225
- SeeAlso: #00732
- (Table 00850)
- Values for InnoSys Inc. PCI device code:
- 4240h AMCC S5933Q Intelligent Serial Card
- SeeAlso: #00732
- (Table 00851)
- Values for Galileo Technology PCI device code:
- 0146h GT-64010 System Controller for R46xx CPU
- 4801h GT-48001 8-port switched Ethernet ctrlr
- SeeAlso: #00732
- (Table 00852)
- Values for V3 Semiconductor Inc. PCI device code:
- 0292h V292PBC Am29030/40 Bridge
- 0960h V96xPBC i960 Bridge
- C960h V96DPC i960 dual PCI Bridge
- SeeAlso: #00732
- (Table 00853)
- Values for Pathlight Technology PCI device code:
- C0EDh SSA Controller
- SeeAlso: #00732
- (Table 00854)
- Values for Dolphin Interconnect Solutions PCI device code:
- 0658h PSB PCI-SCI Bridge
- SeeAlso: #00732
- (Table 00855)
- Values for Specialix Research Ltd. PCI device code:
- 2000h PCI-9050 Target Interface
- 4000h Specialix XIO (SUPI-1 Target Interface)
- 8000h Specialix RIO (T255 Bridge)
- SeeAlso: #00732
- (Table 00856)
- Values for Compex USA, Inc. PCI device code:
- 1401h ReadyLINK RL2000 10MBit NIC
- SeeAlso: #00732
- (Table 00857)
- Values for PMC-Sierra Inc. PCI device code:
- 7375h PM7375 LASAR-155 ATM SAR
- SeeAlso: #00732
- (Table 00858)
- Values for RP PCI device code:
- 0001h RP8OCTA
- 0002h RP8INTF
- 0003h RP16INTF
- 0004h RP32INTF
- SeeAlso: #00732
- (Table 00859)
- Values for Cyclades PCI device code:
- 0100h Cyclom Y Lo multiport serial card
- 0101h Cyclom Y Hi
- 0200h Cyclom Z Lo multiport serial card
- 0201h Cyclom Z Hi
- SeeAlso: #00732
- (Table 00860)
- Values for Ariel Corporation PCI device code:
- 1220h AMCC 5933 TMS320C80 DSP/Imaging Board
- SeeAlso: #00732
- (Table 00861)
- Values for Harris Semiconductor PCI device code:
- 8130h HMP8130 NTSC/PAL Video Decoder
- 8131h HMP8131 NTSC/PAL Video Decoder
- SeeAlso: #00732
- (Table 00862)
- Values for Ensoniq PCI device code:
- 1371h AudioPCI-97 ES1371
- 5000h AudioPCI ES1370
- SeeAlso: #00732
- (Table 00863)
- Values for Picture Elements PCI device code:
- 0081h PCIVST PCI Thresholding Engine
- SeeAlso: #00732
- (Table 00864)
- Values for Symphony PCI device code:
- 0001h Symphony 82C101 IDE controller
- SeeAlso: #00732
- (Table 00865)
- Values for TekRAM PCI device code:
- DC29h DC290 / DC290M EIDE controller
- SeeAlso: #00732
- (Table 00866)
- Values for 3DLabs PCI device code:
- 0004h 3C0SX GUI Accelerator
- SeeAlso: #00732
- (Table 00867)
- Values for Avance Logic, Inc. PCI device code:
- 2301h AVL2301 GUI Accelerator
- 2303h AVG2302 GUI Accelerator
- SeeAlso: #00732
- (Table 00868)
- Values for 4942h PCI device code:
- 4C4Ch ??? (Ensoniq AudioPCI ES1370 subsystem)
- SeeAlso: #00732
- (Table 00869)
- Values for BusLogic Inc. PCI device code:
- 3080h ??? SCSI-ti
- 4010h ??? Fast-Wide SCSI-2
- SeeAlso: #00732
- (Table 00870)
- Values for S3 PCI device code:
- 5631h 86C325 ViRGE 3D GUI Accelerator
- 8800h Vision 866
- 8801h Vision 964
- 8810h S3 Trio32
- 8811h S3 Trio64, or Trio64V+
- 8812h S3 Trio64UV+
- 8813h S3 Trio64? v3
- 883Dh S3 ViRGE/VX
- 888xh S3 868
- 88Bxh S3 928
- 88C0h S3 864-1
- 88C1h S3 864-2
- 88C2h S3 864-3
- 88C3h S3 864-4
- 88D0h S3 964-1
- 88D1h S3 964-2
- 88D2h S3 964-3
- 88D3h S3 964-4
- 88F0h S3 968
- 88F1h S3 968-2
- 88F2h S3 968-3
- 88F3h S3 968-3
- 8900h S3 Trio64 V2/DX GUI Accelerator
- 8901h S3 775 Trio64V2
- 8902h S3 PLATO/PX
- 8A01h S3 ViRGE/DX or ViRGE/GX
- 8A10h ???
- 8C00h ???
- 8C01h ???
- SeeAlso: #00732,#00873
- (Table 00871)
- Values for c't Magazin f�r Computer PCI device code:
- 6773h GPPCI PCI interface
- SeeAlso: #00732
- (Table 00872)
- Values for Quancom Electronic PCI device code:
- 0010h PCI-WDOG1 Watchdog
- 0011h PWDOG2 Watchdog2/PCI
- SeeAlso: #00732
- (Table 00873)
- Values for Intel PCI device code:
- 0482h 82375EB/SB PCI-EISA Bridge (see #01054)
- 0483h 82424 Cache Controller (see #01063)
- 0484h 82378/82379 Bus Interface (Mercury/Saturn/Neptune chipsets) (see #01064)
- 0486h 82425EX/82430
- 04A3h 82434 LX (Mercury) / NX (Neptune) (see #01055)
- 0960h i960 RP Microprocessor/Bridge
- 1221h 82092AA PCMCIA Bridge
- 1222h 82092AA IDE Controller
- 1223h Intel SAA7116
- 1226h 82596
- 1227h 82865
- 1228h EtherExpress Pro/100 Smart
- 1229h 82557 Fast Ethernet (see #01227)
- 122Dh 82437FX (Triton)
- 122Eh 82371FB ISA Bridge (Triton)
- 1230h 82338 IDE controller / 82371FB IDE function (Triton)
- 1234h 82371MX (see #01168)
- 1235h 82437MX
- 1237h 82441FX (see #01229)
- 1239h 82371FB IDE Interface (Triton)
- 123Ch 82380AB Mobile PCI-to-ISA Bridge (see #01090)
- 124Bh 82380FB Mobile PCI-to-PCI Bridge (see #04069)
- 1250h 82439HX (430HX chipset) (see #01098)
- 1960h 80960RP i960RP Microprocessor
- 7000h 82371SB ISA Bridge (see #01167)
- 7010h 82371SB IDE controller (see #01214)
- 7020h 82371SB (see #01215)
- 7030h 82437VX (430VX chipset) (see #01108)
- 7100h 82439TX (430TX chipset) (see #01099)
- 7110h 82371AB PIIX4 ISA Bridge (see #01100)
- 7111h 82371AB PIIX4 Ultra DMA IDE Controller (see #01103)
- 7112h 82371AB PIIX4 USB Controller (see #01104)
- 7113h 82371AB PIIX4 Power Management Controller (see #01105)
- 7180h 82443LX/EX 440LX/EX Host-PCI Bridge (see #01129)
- 7181h 82443LX/EX 440LX/EX AGP device (see #01130)
- 7190h 82443BX 440BX PCI-Host Bridge (AGP Enabled) (see #01142)
- 7191h 82443BX 440BX PCI-PCI Bridge (see #01143)
- 7192h 82443BX 440BX PCI-Host Bridge (AGP Disabled) (see #01142)
- 71A0h 82443GX Host Bridge/Controller (AGP enabled)
- 71A1h 82443GX AGP Controller
- 71A2h 82443GX Host Bridge/Controller (AGP disabled)
- 84C4h 82450KX/GX PCI Bridge (Orion) (see #01240)
- 84C5h 82450KX/GX Memory Ctrlr (Orion)
- 84CAh 82451NX (450NX) Memory & I/O Controller (MIOC)
- 84CBh 82454NX (450NX) PCI Expansion Bridge (PXB)
- SeeAlso: #00732,#00870
- (Table 00874)
- Values for Trigem Computer PCI device code:
- 2008h video assistant
- SeeAlso: #00732
- (Table 00875)
- Values for Adaptec PCI device code:
- 1078h AIC-7810C RAID Coprocessor
- 5078h x940 Fast-Wide SCSI-II Ctrlr
- 5578h AHA-2830P SCSI Controller
- 7078h AHA-294x/AIC-7870P Fast-Wide SCSI-II
- 7178h AHA-2940 Fast-Wide SCSI-II
- 7278h x940 two-channel Fast-Wide SCSI
- 7378h AHA-3985 4-channel RAID SCSI
- 7478h AHA-2944 SCSI
- 7810h AIC-7810 memory control IC
- 7850h AIC-7850 SCSI IC (see #01241)
- 7855h AHA-2930 SCSI
- 7870h AIC-7870 SCSI IC
- 7871h AHA-2940
- 7872h AHA-3940
- 7873h AHA-3980
- 7874h AHA-2944 Differential SCSI
- 7880h AIC-7880 Fast-20 SCSI
- 8078h Adaptec 7880
- 8178h Adaptec 2940UW
- 8278h AHA-3940U/UW
- 8378h Adaptec 7883
- 8478h Adaptec 7884
- SeeAlso: #00732
- (Table 00876)
- Values for Atronics PCI device code:
- 2015h Atronics 2015
- SeeAlso: #00732
- (Table 00877)
- Values for Ark Logic Inc. PCI device code:
- A091h ARK 1000PV ??? Stingray
- A099h ARK 2000PV ??? Stingray
- A0A1h ark2000mt 64-bit GUI Accel w/DCI
- SeeAlso: #00732
- --------X-1AB103-----------------------------
- INT 1A - PCI BIOS v2.0c+ - FIND PCI CLASS CODE
- AX = B103h
- ECX = class code (see also #F0085,#00878)
- bits 31-24 unused
- bits 23-16 class
- bits 15-8 subclass
- bits 7-0 programming interface
- SI = device index (0-n)
- Return: CF clear if successful
- CF set on error
- AH = status (00h,86h) (see #00729)
- 00h successful
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 func)
- 86h device not found
- EAX, EBX, ECX, and EDX may be modified
- all other flags (except IF) may be modified
- Notes: this function may require up to 1024 byte of stack; it will not enable
- interrupts if they were disabled before making the call
- the meanings of BL and BH on return were exchanged between the initial
- drafts of the specification and final implementation
- all devices sharing the same Class Code may be enumerated by
- incrementing SI from 0 until error 86h is returned
- SeeAlso: AX=B183h
- --------X-1AB106-----------------------------
- INT 1A - PCI BIOS v2.0c+ - PCI BUS-SPECIFIC OPERATIONS
- AX = B106h
- BL = bus number
- EDX = Special Cycle data
- Return: CF clear if successful
- CF set on error
- AH = status (00h,81h) (see #00729)
- EAX, EBX, ECX, and EDX may be modified
- all other flags (except IF) may be modified
- Note: this function may require up to 1024 byte of stack; it will not enable
- interrupts if they were disabled before making the call
- SeeAlso: AX=B186h,INT 2F/AX=1684h/BX=304Ch
- --------X-1AB108-----------------------------
- INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION BYTE
- AX = B108h
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- DI = register number (0000h-00FFh) (see #00878)
- Return: CF clear if successful
- CL = byte read
- CF set on error
- AH = status (00h,87h) (see #00729)
- EAX, EBX, ECX, and EDX may be modified
- all other flags (except IF) may be modified
- Notes: this function may require up to 1024 byte of stack; it will not enable
- interrupts if they were disabled before making the call
- the meanings of BL and BH on entry were exchanged between the initial
- drafts of the specification and final implementation
- BUG: the Award BIOS 4.51PG (dated 05/24/96) incorrectly returns FFh for
- register 00h if the PCI function number is nonzero
- SeeAlso: AX=B109h,AX=B10Ah,AX=B188h,INT 2F/AX=1684h/BX=304Ch
- --------X-1AB109-----------------------------
- INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION WORD
- AX = B109h
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- DI = register number (0000h-00FFh, must be multiple of 2) (see #00878)
- Return: CF clear if successful
- CX = word read
- CF set on error
- AH = status (00h,87h) (see #00729)
- EAX, EBX, ECX, and EDX may be modified
- all other flags (except IF) may be modified
- Notes: this function may require up to 1024 byte of stack; it will not enable
- interrupts if they were disabled before making the call
- the meanings of BL and BH on entry were exchanged between the initial
- drafts of the specification and final implementation
- BUG: the Award BIOS 4.51PG (dated 05/24/96) incorrectly returns FFFFh for
- register 00h if the PCI function number is nonzero
- SeeAlso: AX=B108h,AX=B10Ah,AX=B189h,INT 2F/AX=1684h/BX=304Ch
- --------X-1AB10A-----------------------------
- INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION DWORD
- AX = B10Ah
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- DI = register number (0000h-00FFh, must be multiple of 4) (see #00878)
- Return: CF clear if successful
- ECX = dword read
- CF set on error
- AH = status (00h,87h) (see #00729)
- EAX, EBX, ECX, and EDX may be modified
- all other flags (except IF) may be modified
- Notes: this function may require up to 1024 byte of stack; it will not enable
- interrupts if they were disabled before making the call
- the meanings of BL and BH on entry were exchanged between the initial
- drafts of the specification and final implementation
- BUG: the Award BIOS 4.51PG (dated 05/24/96) incorrectly returns FFFFFFFFh
- for register 00h if the PCI function number is nonzero
- SeeAlso: AX=B108h,AX=B109h,AX=B10Ah/SF=8086h,AX=B18Ah,INT 2F/AX=1684h/BX=304Ch
- Format of PCI Configuration Data:
- Offset Size Description (Table 00878)
- 00h WORD vendor ID (read-only) (see #00732 at AX=B102h)
- FFFFh returned if requested device non-existent
- 02h WORD device ID (read-only)
- 04h WORD command register (see #00879)
- 06h WORD status register (see #00880)
- 08h BYTE revision ID
- 09h 3 BYTEs class code
- bits 7-0: programming interface
- bits 15-8: sub-class
- bits 23-16: class code (see also #F0085)
- 0Ch BYTE cache line size
- 0Dh BYTE latency timer
- 0Eh BYTE header type
- bits 6-0: header format
- 00h other
- 01h PCI-to-PCI bridge
- 02h PCI-to-CardBus bridge
- bit 7: multi-function device
- 0Fh BYTE Built-In Self-Test result (see #00881)
- ---header type 00h---
- 10h DWORD base address 0 (see #00882)
- (OpenHCI) base address of host controller registers (see #00902)
- 14h DWORD base address 1
- 18h DWORD base address 2
- 1Ch DWORD base address 3
- 20h DWORD base address 4
- 24h DWORD base address 5
- 28h DWORD CardBus CIS pointer (read-only) (see #00889)
- 2Ch WORD subsystem vendor ID or 0000h
- 2Eh WORD subsystem ID or 0000h
- 30h DWORD expansion ROM base address (see #00883)
- 34h BYTE offset of capabilities list within configuration space (R/O)
- (only valid if status register bit 4 set) (see #00884)
- 35h 3 BYTEs reserved
- 38h DWORD reserved
- 3Ch BYTE interrupt line
- 00h = none, 01h = IRQ1 to 0Fh = IRQ15
- 3Dh BYTE interrupt pin (read-only)
- (00h = none, else indicates INTA# to INTD#)
- 3Eh BYTE minimum time bus master needs PCI bus ownership, in 250ns units
- (read-only)
- 3Fh BYTE maximum latency, in 250ns units (bus masters only) (read-only)
- 40h 48 DWORDs varies by device (see #00919,#00920,#01055,#01083)
- ---header type 01h---
- 10h DWORD base address 0 (see #00882)
- 14h DWORD base address 1
- 18h BYTE primary bus number (for bus closer to host processor)
- 19h BYTE secondary bus number (for bus further from host processor)
- 1Ah BYTE subordinate bus number
- 1Bh BYTE secondary latency timer
- 1Ch BYTE I/O base (see #00899)
- 1Dh BYTE I/O limit (see #00899)
- 1Eh WORD secondary status
- 20h WORD memory base (see #00900)
- 22h WORD memory limit
- 24h WORD prefetchable memory base
- 26h WORD prefetchable memory limit
- 28h DWORD prefetchable base, upper 32 bits
- 2Ch DWORD prefetchable limit, upper 32 bits
- 30h WORD I/O base, upper 16 bits
- 32h WORD I/O limit, upper 16 bits
- 34h DWORD reserved
- 38h DWORD expansion ROM base address
- 3Ch BYTE interrupt line
- 3Dh BYTE interrupt pin (read-only)
- 3Eh WORD bridge control (see #00901)
- 40h 48 DWORDs varies by device (see #00919,#00920,#01055,#01083)
- ---header type 02h---
- 10h DWORD CardBus Socket/ExCa base address (see #00890)
- bits 31-12: start address of socket interface register block
- in 4K blocks
- bits 11-0: reserved (0)
- 14h BYTE offset of capabilities list within configuration space (R/O)
- (only valid if status register bit 4 set) (see #00884)
- 15h BYTE reserved
- 16h WORD secondary status
- 18h BYTE PCI bus number
- 19h BYTE CardBus bus number
- 1Ah BYTE subordinate bus number
- 1Bh BYTE CardBus latency timer
- 1Ch DWORD memory base address 0
- 20h DWORD memory limit 0
- 24h DWORD memory base address 1
- 28h DWORD memory limit 1
- 2Ch WORD I/O base address 0
- 2Eh WORD I/O base address 0 high word (optional)
- 30h WORD I/O limit 0
- 32h WORD I/O limit 0 high word (optional)
- 34h WORD I/O base address 1
- 36h WORD I/O base address 1 high word (optional)
- 38h WORD I/O limit 1
- 3Ah WORD I/O limit 1 high word (optional)
- 3Ch BYTE interrupt line
- 3Dh BYTE interrupt pin (read-only) (no interrupt used if 00h)
- 3Eh WORD bridge control
- 40h WORD subsystem vendor ID
- 42h WORD subsystem device ID
- 44h DWORD 16-bit PC Card legacy mode base address (for accessing ExCa
- registers)
- 48h 14 DWORDs reserved
- 80h 32 DWORDs varies by device (see #00919,#00920,#01055,#01083)
- Bitfields for PCI Configuration Command Register:
- Bit(s) Description (Table 00879)
- 0 I/O access enabled
- 1 memory access enabled
- 2 bus master enable
- 3 special cycle recognition enabled
- 4 memory write and invalidate enabled
- 5 VGA palette snoop enabled
- 6 parity error response enabled
- 7 wait cycles enabled
- 8 system error (SERR# line) enabled
- 9 fast back-to-back transactions enabled
- 15-10 reserved
- SeeAlso: #00878,#00880
- Format of PCI Configuration Status Register:
- Bit(s) Description (Table 00880)
- 3-0 reserved (0)
- 4 new capabilities list is present (first entry pointed at by byte at
- 34h or 14h)
- 5 capable of running at 66 MHz
- 6 UDF supported
- 7 capable of fast back-to-back transactions
- 8 data parity error reported
- 10-9 device select timing
- 00 fast
- 01 medium
- 10 slow
- 11 reserved
- 11 signaled target abort
- 12 received target abort
- 13 received master abort
- 14 signaled system error (device is asserting SERR# line)
- 15 detected parity error (set even if parity error reporting is disabled)
- Note: bits 12, 13 and 15 are cleared by writing a 1 into the corresponding
- bit
- SeeAlso: #00878,#00879
- Bitfields for PCI Configuration Built-In Self-Test register:
- Bit(s) Description (Table 00881)
- 3-0 completion code (0000 = successful)
- 5-4 reserved
- 6 start BIST (set to one to start, cleared automatically on completion)
- 7 BIST-capable
- Notes: this register is hardwired to 00h if no BIST capability
- software should timeout the BIST after two seconds
- SeeAlso: #00878
- Bitfields for PCI Configuration Base Address:
- Bit(s) Description (Table 00882)
- 0 address type (0 = memory space, 1 = I/O space)
- ---memory address---
- 2-1 address type
- 00 anywhere in first 4GB
- 01 below 1MB
- 10 anywhere in 64-bit address space
- 11 reserved
- 3 prefetchable
- 31-4 bits 31-4 of base memory address if addressable in first 1MB or 4GB
- 63-4 bits 63-4 of base memory address if addressable in 64-bit memory
- (bits 63-32 are stored in the following base address DWORD)
- ---I/O address---
- 1 reserved
- 31-2 bits 31-2 of base I/O port
- SeeAlso: #00878,#00902
- Bitfields for PCI Configuration Expansion ROM Address:
- Bit(s) Description (Table 00883)
- 0 address decode enable (ROM address is valid)
- 10-1 reserved
- 31-11 bits 31-11 of ROM's starting physical address
- SeeAlso: #00878
- Format of PCI Capabilities List:
- Offset Size Description (Table 00884)
- 00h BYTE capability identifier
- 01h PCI Power Managment
- 01h BYTE offset of next item (within configuration space) or 00h
- N BYTEs varies by capability type
- ---PCI Power Management---
- 02h WORD power managment capabilities (see #00885) (read-only)
- 04h WORD power managment capabilities status register (see #00886)
- 06h BYTE PMCSR bridge support extensions (see #00887)
- 07h BYTE (optional) read-only data register (see #00888)
- Note: this information is from the v0.93 draft of the specification and is
- subject to change
- SeeAlso: #00878,#00880
- Bitfields for PCI Power Management Capabilities:
- Bit(s) Description (Table 00885)
- 15 reserved (0)
- 14-12 PME# support
- bit 12: PME# can be asserted from power state D0
- bit 13: PME# can be asserted from power state D1
- bit 14: PME# can be asserted from power state D2
- 11 reserved (0)
- 10 D2 power state supported
- 9 D1 power state supported
- 8 full-speed clock is required in state D0 for proper operation
- (if clear, device may be run at reduced clock except when actually
- being accessed)
- 7-6 dynamic clock control support
- 00 not bridge, no dynamic clock control, or secondary bus' clock is
- is tied to primary bus' clock
- 01 bridge is capable of dynamic clock control
- 10 reserved
- 11 secondary bus has independent clock, but dynamic clock not supported
- 5 device-specific initialization is required
- 4 auxiliary power required for PME# generation
- 3 PCI clock required for PME# generation
- 2-0 specification version
- 001 = v1.0; four bytes of power management registers
- Note: this information is from the v0.93 draft of the specification and is
- subject to change
- SeeAlso: #00884,#00886,#00887
- Bitfields for PCI Power Management Capabilities Status Register:
- Bit(s) Description (Table 00886)
- 15 PME status: if set, PME# is (or would be) asserted
- writing a 1 to this bit clears it
- 14-13 (read-only) scale factor to apply to contents of Data register
- 00 unknown (or unimplemented data)
- 01 x0.1
- 10 x0.01
- 11 x0.001
- 12-9 (read-write) data select (see #00888)
- 8 (read-write) enable PME# assertion
- 7-5 reserved (0)
- 4 (read-write) enable dynamic data reporting
- when set, PME# is asserted whenever the value in the Data register
- changes significantly
- 3-2 reserved (0)
- 1-0 (read-write) current power state
- 00 = D0
- ...
- 11 = D3
- Note: this information is from the v0.93 draft of the specification and is
- subject to change
- SeeAlso: #00884,#00885,#00887
- Bitfields for PCI Power Management PMCSR bridge support extension:
- Bit(s) Description (Table 00887)
- 7 (read-only) Bus Power Control Enable
- 6 (read-only) Bus Power State B3 supported
- 5 (read-only) Bus Power State B2 supported
- 4 dynamic clock control enable
- 3-0 reserved (0)
- Note: this information is from the v0.93 draft of the specification and is
- subject to change
- SeeAlso: #00884,#00885,#00886
- (Table 00888)
- Values for PCI Power Management Data Select:
- 00h D0-state power consumed in watts (+20%/-10%)
- 01h D1-state power consumed in watts (+20%/-10%)
- 02h D2-state power consumed in watts (+20%/-10%)
- 03h D3-state power consumed in watts (+20%/-10%)
- 04h D0-state power dissipated into chassis in watts
- 05h D1-state power dissipated into chassis in watts
- 06h D2-state power dissipated into chassis in watts
- 07h D3-state power dissipated into chassis in watts
- 08h-0Fh reserved
- SeeAlso: #00886
- Bitfields for PCI Configuration CardBus CIS Pointer:
- Bit(s) Description (Table 00889)
- 2-0 address space
- 000 in device's device-specific configuration space
- 001 in memory pointed to by base address register 0
- ...
- 110 in memory pointed to by base address register 5
- 111 in device's expansion ROM
- 27-3 offset within address space defined by bits 2-0
- 31-28 ROM image number (when address space is expansion ROM)
- SeeAlso: #00878
- Format of CardBus Socket/ExCA socket interface register space:
- Offset Size Description (Table 00890)
- 00h DWORD Socket Event Register (see #00892)
- 04h DWORD Socket Mask Register (see #00893)
- 08h DWORD Socket Present State Register (see #00894)
- 0Ch DWORD Socket Force Event Register (see #00895)
- 10h DWORD Socket Control Register (see #00896)
- 14h 3 DWORDs reserved
- 20h DWORD Socket Power Management Register
- 90h BYTE (TI PCI1130) Retry Status Register
- 91h BYTE (TI PCI1130) Card Control Register (see #00897)
- 92h BYTE (TI PCI1130) Device Control Register (see #00898)
- 93h BYTE (TI PCI1130) Buffer Control Register
- 800h 64+ BYTEs ExCa Socket Interface Registers (see #00891)
- Format of ExCa memory-mapped registers:
- Offset Size Description (Table 00891)
- 00h BYTE identification and revision register
- 01h BYTE interface status register
- 02h BYTE power control register
- 03h BYTE interrupt and general control
- 04h BYTE card status change
- 05h BYTE card status change interrupt configuration
- 06h BYTE address window enable
- 07h BYTE I/O window control register
- 08h WORD I/O window 0 start address
- 0Ah WORD I/O window 0 end address
- 0Ch WORD I/O window 1 start address
- 0Eh WORD I/O window 1 end address
- 10h WORD memory window 0 start address
- 12h WORD memory window 0 end address
- 14h WORD memory window 0 offset address
- 16h 2 BYTEs user-defined
- 18h WORD memory window 1 start address
- 1Ah WORD memory window 1 end address
- 1Ch WORD memory window 1 offset address
- 1Eh BYTE user-defined
- 1Fh BYTE reserved
- 20h WORD memory window 2 start address
- 22h WORD memory window 2 end address
- 24h WORD memory window 2 offset address
- 26h 2 BYTEs user-defined
- 28h WORD memory window 3 start address
- 2Ah WORD memory window 3 end address
- 2Ch WORD memory window 3 offset address
- 2Eh 2 BYTEs user-defined
- 30h WORD memory window 4 start address
- 32h WORD memory window 4 end address
- 34h WORD memory window 4 offset address
- 36h 10 BYTEs user-defined
- ---optional---
- 40h BYTE memory window 0 start address high byte
- 41h BYTE memory window 1 start address high byte
- 42h BYTE memory window 2 start address high byte
- 43h BYTE memory window 3 start address high byte
- 44h BYTE memory window 4 start address high byte
- 45h-7FFh user-defined
- SeeAlso: #00890
- Bitfields for CardBus Socket Event Register:
- Bit(s) Description (Table 00892)
- 0 CSTSCHG pin asserted (status change)
- 1 CCD1# (card detect 1) changed state
- 2 CCD2# (card detect 2) changed state
- 3 interface power cycle completed
- 31-4 reserved (0)
- Note: the bits in this register are set by the bridge, and cleared by writing
- a one into the bits one wishes to clear
- SeeAlso: #00890,#00893,#00895
- Bitfields for CardBus Socket Event Mask Register:
- Bit(s) Description (Table 00893)
- 0 write-protect (enable status-change interrupt on WriteProtect switch)
- 1 ready mask (allow status-change interrupt on Ready line change)
- 3-2 battery condition (allow status-change int on battery-condition change)
- 4 general wakeup enabled
- 5 binary audio mode enabled on CAUDIO pin
- 6 Pulse Width Modulation enabled on CAUDIO pin
- (CAUDIO state undefined if both bits 5 and 6 set)
- 13-7 reserved (0)
- 14 Wakeup mask (enable wakeup events via status-change pin)
- 15 enable card interrupts via CINT# pin and wakeup events
- 31-16 reserved
- SeeAlso: #00890,#00892,#00894
- Bitfields for CardBus Socket Present State Register:
- Bit(s) Description (Table 00894)
- 0 CSTSCHG pin asserted (status change)
- 1 CCD1# (card detect 1) changed state
- 2 CCD2# (card detect 2) changed state
- 3 interface power cycle completed
- 4 16-bit PC card inserted
- 5 CardBus card inserted
- 6 card's interrupt pin asserted
- 7 card inserted but type can not be determined
- 8 data may have been lost due to abrupt card removal
- 9 attempted to apply Vcc voltage not supported by the card
- 10 card can accept Vcc = 5.0 volts
- 11 card can accept Vcc = 3.3 volts
- 12 card can accept Vcc = X.X volts
- 13 card can accept Vcc = Y.Y volts
- 27-14 reserved (0)
- 28 socket can accept Vcc = 5.0 volts
- 29 socket can accept Vcc = 3.3 volts
- 30 socket can accept Vcc = X.X volts
- 31 socket can accept Vcc = Y.Y volts
- Note: bits 0-3 may be cleared by writing a 1 into the respective bits
- SeeAlso: #00890,#00892,#00893,#00896
- Bitfields for CardBus Socket Force Event Register:
- Bit(s) Description (Table 00895)
- 0 write-protect
- 1 ready
- 2 battery voltage detect 2
- 3 battery voltage detect 1
- 4 general wakeup
- 14-5 reserved (0)
- 15 enable card interrupts via CINT# pin
- 31-16 reserved
- Note: this register can simulate events by forcing the values of some of the
- bits in the Event Mask Register; any bit of this register which is
- set to 1 forces the corresponding bit in the Mask Register to 1,
- while bits set to 0 leave the corresponding bit unchanged
- SeeAlso: #00890,#00892,#00896
- Bitfields for CardBus Socket Control Register:
- Bit(s) Description (Table 00896)
- 2-0 Vpp control
- 000 power off
- 001 12.0 Volts
- 010 5.0 Volts
- 011 3.3 Volts
- 100 reserved (X.X Volts)
- 101 reserved (Y.Y Volts)
- 110 reserved
- 111 reserved
- 3 reserved (0)
- 6-4 Vcc control (as for Vpp, but 12.0V not supported)
- 31-7 reserved (0)
- SeeAlso: #00890,#00893,#00895
- Bitfields for TI PCI1130 Card Control Register:
- Bit(s) Description (Table 00897)
- 0 interrupt pending
- 1 speaker output enabled
- 2 reserved
- 3 enable status-change interrupt routing (to INTA# for socket A, INTB#
- for socket B)
- 4 function interrupt routed to corresponding PCI interrupt pin
- 5 PCI interrupts enabled
- 6 ZOOM video mode enabled
- 7 Ring Indicator enabled on IRQ15/RI_OUT pin
- SeeAlso: #00890,#00898
- Bitfields for TI PCI1130 Device Control Register:
- Bit(s) Description (Table 00898)
- 0 reserved (0)
- 2-1 interrupt mode enable
- 00 no interrupt
- 01 ISA mode (direct IRQ routing)
- 10 serialized interrupt mode
- 11 reserved
- 4-3 reserved
- 5 3volt Socket Capable force bit
- 6 5volt Socket Capable force bit
- 7 reserved
- SeeAlso: #00890,#00897
- Bitfields for PCI Configuration I/O base and limit:
- Bit(s) Description (Table 00899)
- 3-0 (read-only) address decoding type
- 0000 16-bit
- 0001 32-bit
- other reserved
- 7-4 bits 15-12 of I/O address range
- SeeAlso: #00878,#00900
- Bitfields for PCI Configuration memory base and limit:
- Bit(s) Description (Table 00900)
- 3-0 address decode type
- 0000 32-bit address decoder
- 0001 64-bit address decoder
- other reserved
- 15-4 bits 31-20 of memory address range
- SeeAlso: #00878,#00899
- Bitfields for PCI Configuration Bridge Control Register:
- Bit(s) Description (Table 00901)
- 7 enable fast back-to-back cycles on secondary bus
- 6 reset secondary bus
- 5 master abort mode on secondary bus
- 4 reserved
- 3 VGA enable (when set, forward VGA memory and I/O ranges to seconary
- bus)
- 2 ISA enable
- 1 reserved
- 0 enable parity error response
- SeeAlso: #00878,#01131
- Format of OpenHCI Host Controller memory-mapped registers:
- Offset Size Description (Table 00902)
- 00h DWORD "HcRevision" OpenHCI revision (see #00903)
- 04h DWORD "HcControl" HC operating modes (see #00904)
- 08h DWORD "HcCommandStatus" command/status (see #00905)
- 0Ch DWORD "HcInterruptStatus" interrupt status (see #00906)
- 10h DWORD "HcInterruptEnable" enable interrupts (see #00907)
- 14h DWORD "HcInterruptDisable" disable interrupts (see #00907)
- 18h DWORD "HcHCCA" HC Communications Area (see #00908)
- 1Ch DWORD "HcPeriodCurrentED" Endpoint Descriptor addr (see #00909)
- 20h DWORD "HcControlHeadED" Control Endpoint Descriptor (see #00910)
- 24h DWORD "HcControlCurrentED" Control Endpoint Descriptor (see #00910)
- 28h DWORD "HcBulkHeadED" Bulk Endpoint Descriptor (see #00911)
- 2Ch DWORD "HcBulkCurrentED" Bulk Endpoint Descriptor (see #00911)
- 30h DWORD "HcDoneHead" last completed Xfer Descr. (see #00912)
- 34h DWORD "HcFmInterval" Frame bit-time interval (see #00913)
- 38h DWORD "HcFmRemaining" bit time remaining in Frame (see #00914)
- 3Ch DWORD "HcFmNumber" Frame Number (bits 15-0)
- 40h DWORD "HcPeriodicStart" earliest time to start periodic list
- (bits 13-0)
- 44h DWORD "HcLSThreshold" threshold for Low Speed transaction
- (bits 11-0)
- 48h DWORD "HcRhDescriptorA" Root Hub Descriptor A (see #00915)
- 4Ch DWORD "HcRhDescriptorB" Root Hub Descriptor B (see #00916)
- 50h DWORD "HcRhStatus" Root Hub status (see #00917)
- 54h N DWORDs "HCRhPortStatus[1-N]" Root Hub port status N (see #00918)
- Note: OpenHCI reserves a full 4K page of the systems address space for its
- memory-mapped registers
- SeeAlso: #00878,#00882,#F0085,#00966
- Bitfields for OpenHCI "HcRevision" register:
- Bit(s) Description (Table 00903)
- 31-8 reserved
- 7-0 BCD OpenHCI specification number (10h = 1.0, 11h = 1.1)
- Note: this register is read-only
- SeeAlso: #00902,#00904
- Bitfields for OpenHCI "HcControl" register:
- Bit(s) Description (Table 00904)
- 31-11 reserved
- 10 RWE enable Remote Wakeup feature
- 9 RWC controller supports Remote Wakeup signalling
- 8 IR Interrupt Routing
- 0 normal host bus interrupt
- 1 System Managment Interrupt
- 7-6 HCFS USB Host Controller Functional State
- 00 USBReset
- 01 USBResume
- 10 USBOperational
- 11 USBSuspend
- 5 BLE enable Bulk List processing in next frame
- 4 CLE enable Control List processing in next frame
- 3 IE enable Isochronous ED processing
- 2 PLE enable processing of Periodic List in next frame
- 1-0 CBSR Control Bulk Service Ratio
- 00 1:1 Control EDs:Bulk EDs served
- 01 2:1
- 10 3:1
- 11 4:1
- SeeAlso: #00902,#00903,#00905
- Bitfields for OpenHCI "HcCommandStatus" register:
- Bit(s) Description (Table 00905)
- 31-18 reserved
- 17-16 SOC scheduling-overrun count
- 15-4 reserved
- 3 OCR ownership change request is pending
- 2 BLF bulk list contains TDs
- 1 CLF control list contains TDs
- 0 HCR host controller software reset
- Note: writing a 1 bit sets the corresponding bit, while a 0 bit leaves the
- corresponding bit unchanged
- SeeAlso: #00902,#00903,#00906
- Bitfields for OpenHCI "HcInterruptStatus" register:
- Bit(s) Description (Table 00906)
- 31 reserved (0)
- 30 OC ownership change
- 29-7 reserved
- 6 RHSC Root Hub status changed
- 5 FNO frame number overflowed
- 4 UE unrecoverable error
- 3 RD resume detected
- 2 SF start of frame
- 1 WDH writeback done
- 0 SO scheduling overrun
- Note: writing a 1 bit clears the corresponding bit of the register
- SeeAlso: #00902,#00903,#00905,#00907
- Bitfields for OpenHCI "HcInterruptEnable" and "HcInterruptDisable" registers:
- Bit(s) Description (Table 00907)
- 31 MIE master interrupt enable
- 30 OC ownership change
- 29-7 reserved
- 6 RHSC Root Hub status change
- 5 FNO frame number overflow
- 4 UE unrecoverable error
- 3 RD Resume Detect
- 2 SF start of frame
- 1 WDH HcDoneHead writeback
- 0 SO scheduling overrun
- Note: writing a 1 bit to HcInterruptEnable enables the corresponding
- interrupt, while writing a 1 bit to HcInterruptDisable disables it;
- zero bits are ignored. On reading, both registers return the
- same value, which reflects the currently enabled interrupts
- SeeAlso: #00902
- Bitfields for OpenHCI "HcHCCA" register:
- Bit(s) Description (Table 00908)
- 31-8 physical address of Host Controller Communications Area (bits 31-8)
- 7-0 reserved (0)
- Note: the required alignment for the HCCA may be determined by writing
- FFFFFFFFh to this register and determining the number of low-order
- zero bits
- SeeAlso: #00902,#00909,#00910
- Bitfields for OpenHCI "HcPeriodCurrentED" register:
- Bit(s) Description (Table 00909)
- 31-4 physical address of current Isochronous/Interrupt Endpoint Descriptor
- (bits 31-4)
- 3-0 reserved (0)
- SeeAlso: #00902,#00908,#00910
- Bitfields for OpenHCI "HcControlHeadED"/"HcControlCurrentED" register:
- Bit(s) Description (Table 00910)
- 31-4 physical address of first/current Endpoint Descriptor (bits 31-4)
- 3-0 reserved (0)
- Note: HcControlCurrentED is set to 0000000h to indicate the end of the
- Control list
- SeeAlso: #00902,#00908,#00909
- Bitfields for OpenHCI "HcBulkHeadED"/"HcBulkCurrentED" register:
- Bit(s) Description (Table 00911)
- 31-4 physical address of first/current Endpoint Descriptor in the Bulk
- list (bits 31-4)
- 3-0 reserved (0)
- Note: HcBulkCurrentED is set to 0000000h to indicate the end of the Bulk
- list
- SeeAlso: #00902,#00908,#00910
- Bitfields for OpenHCI "HcDoneHead" register:
- Bit(s) Description (Table 00912)
- 31-4 physical address of most-recently completed Transfer Descriptor added
- to the Done queue (bits 31-4)
- 3-0 reserved (0)
- SeeAlso: #00902,#00909,#00911
- Bitfields for OpenHCI "HcFmInterval" register:
- Bit(s) Description (Table 00913)
- 31 "FIT" toggled each time a new value is loaded into bits 13-0
- 30-16 "FSMPS" largest data packet in bits
- 15-14 reserved
- 13-0 "FI" Frame Interval (between to consecutive SOFs)
- SeeAlso: #00902,#00914
- Bitfields for OpenHCI "HcFmRemaining" register:
- Bit(s) Description (Table 00914)
- 31 "FRT" loaded from bit 31 of HcFmInterval whenever FR reaches 0
- 30-14 reserved
- 13-0 "FR" FrameRemaining -- bits times left in current frame
- SeeAlso: #00902,#00913
- Bitfields for OpenHCI "HcRhDescriptorA" register:
- Bit(s) Description (Table 00915)
- 31-24 "POTPGT" power-on to power-good time in 2ms units
- 23-13 reserved
- 12 "NOCP" no over-current protection supported
- 11 "OCPM" over-current status reported per-port
- 10 "DT" device type - is root hub compound device?
- 9 "NPS" NoPowerSwitching -- ports are always powered up
- 8 "PSM" power-switching mode -- if set, each port powered individually
- 7-0 "NDP" number of downstream ports
- SeeAlso: #00902,#00916,#00917
- Bitfields for OpenHCI "HcRhDescriptorB" register:
- Bit(s) Description (Table 00916)
- 31-16 "PPCM" PortPowerControlMask -- bitmask of ports NOT affected by global
- power control (bit 16 [port #0] is reserved)
- 15-0 "DR" DeviceRemovable -- bitmap of removable devices
- SeeAlso: #00902,#00915,#00917
- Bitfields for OpenHCI "HcRhStatus" register:
- Bit(s) Description (Table 00917)
- 31 "CRWE" Clear Remote Wakeup Enable
- write 1 to disable remote wakeup (writes of 0 ignored)
- 30-18 reserved
- 17 "OCIC" OverCurrent Indicator Change
- write 1 to clear
- 16 R "LPSC" Local Power Status Change
- W Set Global Power mode (write 1; writes of 0 ignored)
- 15 "DRWE" Device Remote Wakeup Enable
- write 1 to enable (writes of 0 ignored)
- read to get current status
- 14-2 reserved
- 1 "OCI" OverCurrent Indicator
- 0 R "LPS" LocalPowerStatus (always 0 for Root Hub)
- W write 1 to turn off power to all ports/ports with clear
- PortPowerControlMask bits
- SeeAlso: #00902,#00915,#00916,#00918
- Bitfields for OpenHCI "HcRhPortStatusN" register:
- Bit(s) Description (Table 00918)
- 31-21 reserved
- 20 "PRSC" Port Reset Status Change (write '1' to clear)
- 19 "OCIC" Port OverCurrent Indiactor Change (write '1' to clear)
- 18 "PSSC" Port Suspend Status Change (write '1' to clear)
- 17 "PESC" Port Enable Status Change (write '1' to clear)
- 16 "CSC" Connect Status Change (write '1' to clear)
- 15-10 reserved
- 9 R "LSDA" Low Speed Device Attached
- W clear port power by writing '1'
- 8 R "PPS" Port Power Status
- W set port power by writing '1'
- 7-5 reserved
- 4 R "PRS" Port Reset Status
- W set port reset by writing '1'
- 3 R "POCI" Port OverCurrent Indicator
- W clear suspend status by writing '1'
- 2 R "PSS" Port Suspend Status
- W set port suspend by writing '1'
- 1 R "PES" Port Enable Status
- W set port enable by writing '1'
- 0 R "CCS" current connect status
- W clear port enable by writing '1'
- SeeAlso: #00902,#00915,#00916,#00917
- --------X-1AB10ASF1004-----------------------
- INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION DWORD (VLSI devices)
- AX = B10Ah subfn 1004h
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- DI = register number (0000h-00FFh) (see #00878)
- Return: CF clear if successful
- ECX = dword read
- CF set on error
- AH = status (00h,87h) (see #00729)
- EAX, EBX, ECX, and EDX may be modified
- all other flags (except IF) may be modified
- Notes: this function may require up to 1024 byte of stack; it will not enable
- interrupts if they were disabled before making the call
- the meanings of BL and BH on entry were exchanged between the initial
- drafts of the specification and final implementation
- SeeAlso: AX=B10Ah,AX=B10Ah/SF=8086h
- Format of PCI Configuration Data for VLSI VL82C591 Host/PCI bridge:
- Offset Size Description (Table 00919)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 1004h, device ID 0005h)
- 40h BYTE bus number
- 41h BYTE subordinate bus number
- 42h WORD reserved
- 44h 4 DWORDs reserved
- 54h 2 BYTEs device-specific configuration registers
- 56h WORD reserved
- 58h 2 BYTEs device-specific configuration registers
- 5Ah WORD reserved
- 5Ch 5 BYTEs device-specific configuration registers
- ...
- FFh BYTE device-specific configuration register
- SeeAlso: #00878,#00732,#00920
- Format of PCI Configuration data for VLSI VL82C593 PCI/ISA bridge:
- Offset Size Description (Table 00920)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 1004, device ID 0006h)
- 40h 4 DWORDs reserved
- 50h 11 BYTEs device-specific configuration registers
- 5Bh BYTE reserved
- 5Ch 25 BYTEs device-specific configuration registers
- 75h 138 BYTEs reserved
- FFh BYTE device-specific configuration register
- SeeAlso: #00878,#00919
- --------X-1AB10ASF100B-----------------------
- INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION DWORD (National Semicond. device)
- AX = B10Ah subfn 100Bh
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- DI = register number (0000h-00FFh) (see #00878)
- Return: CF clear if successful
- ECX = dword read
- CF set on error
- AH = status (00h,87h) (see #00729)
- EAX, EBX, ECX, and EDX may be modified
- all other flags (except IF) may be modified
- Notes: this function may require up to 1024 byte of stack; it will not enable
- interrupts if they were disabled before making the call
- the meanings of BL and BH on entry were exchanged between the initial
- drafts of the specification and final implementation
- SeeAlso: AX=B10Ah,AX=B10Ah/SF=8086h
- Format of National Semiconductor PC87410 EIDE Controller configuration:
- Offset Size Description (Table 00921)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 100Bh, device ID D001h)
- 10h DWORD I/O base address for channel 0 control ports (def: 01F0h)
- 14h DWORD I/O base address for channel 0 status port (def: 03F6h)
- 18h DWORD I/O base address for channel 1 control ports (def: 0170h)
- 1Ch DWORD I/O base address for channel 1 status port (def: 0376h)
- 40h BYTE IDE Channel 0 timing control
- 41h WORD IDE Channel 0 read-ahead counter (write-only except bit 15)
- 43h BYTE IDE Channel 0 function
- 44h BYTE IDE Channel 1 timing control
- 45h WORD IDE Channel 1 read-ahead counter (write-only except bit 15)
- 47h BYTE IDE Channel 1 function
- 48h BYTE PCI control
- 49h 7 BYTEs unused
- 50h 176 BYTEs ??? (unused?)
- !!!http://www.national.com/ds/PC/PC87410.pdf p.7
- SeeAlso: #00739,#00922
- Format of National Semiconductor PC87415 IDE DMA-Master configuration:
- Offset Size Description (Table 00922)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 100Bh, device ID 0002h)
- 40h 3 BYTEs control register
- 43h BYTE write buffer status (read-only)
- 44h BYTE Channel 1 master read timing
- 45h BYTE Channel 1 master write timing
- 48h BYTE Channel 1 slave read timing
- 49h BYTE Channel 1 slave write timing
- 4Ch BYTE Channel 2 master read timing
- 4Dh BYTE Channel 2 master write timing
- 50h BYTE Channel 2 slave read timing
- 51h BYTE Channel 2 slave write timing
- 54h BYTE command and control block timing
- 55h BYTE sector size
- !!!http://www.national.com/ds/PC/PC87415.pdf p.8
- SeeAlso: #00739,#00921
- --------X-1AB10ASF1011-----------------------
- INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION DWORD (DEC device)
- AX = B10Ah subfn 1011h
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- DI = register number (0000h-00FFh) (see #00878)
- Return: CF clear if successful
- ECX = dword read
- CF set on error
- AH = status (00h,87h) (see #00729)
- EAX, EBX, ECX, and EDX may be modified
- all other flags (except IF) may be modified
- Notes: this function may require up to 1024 byte of stack; it will not enable
- interrupts if they were disabled before making the call
- the meanings of BL and BH on entry were exchanged between the initial
- drafts of the specification and final implementation
- SeeAlso: AX=B10Ah,AX=B10Ah/SF=8086h
- Format of DEC DC21140/DC21040/DC21041 Tulip {Fast/Plus} Ethernet:
- Offset Size Description (Table 00923)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 1011h, device ID 0014h)
- 10h DWORD base I/O port for access to control/status registers
- 14h DWORD base memory address for access to control/status registers
- 40h DWORD configuration driver area
- bit 31: sleep mode \ only one of bits 31,30 may be set
- bit 30: snooze mode /
- bits 15-8: device driver's use
- !!!digital\21041hm.pdf p.34 digital\21140ahm.pdf p.35
- SeeAlso: #00742
- Format of DEC 21052 PCI-PCI bridge PCI configuration data:
- Offset Size Description (Table 00924)
- 00h 64 BYTEs header, type 1 (see #00878)
- (vendor ID 1011h, device ID 0021h)
- 40h BYTE chip control
- 41h BYTE diagnostic control
- 42h BYTE burst counter
- 43h BYTE SErr disable
- 44h BYTE primary target wait timer
- 45h BYTE secondary target wait timer
- 46h 2 BYTEs reserved
- 48h DWORD count of secondary write attempts
- 4Ch DWORD count of primary write attempts
- 50h 44 DWORDs reserved
- !!!digital\21052ds.pdf p.117
- SeeAlso: #00742
- --------X-1AB10ASF1022-----------------------
- INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION DWORD (AMD devices)
- AX = B10Ah subfn 1022h
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- DI = register number (0000h-00FFh) (see #00878)
- Return: CF clear if successful
- ECX = dword read
- CF set on error
- AH = status (00h,87h) (see #00729)
- EAX, EBX, ECX, and EDX may be modified
- all other flags (except IF) may be modified
- Notes: this function may require up to 1024 byte of stack; it will not enable
- interrupts if they were disabled before making the call
- the meanings of BL and BH on entry were exchanged between the initial
- drafts of the specification and final implementation
- SeeAlso: AX=B10Ah,AX=B10Ah/SF=1042h,AX=B10Ah/SF=8086h
- Format of AMD Am53C974A PC-SCSI PCI configuration data:
- Offset Size Description (Table 00925)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 1022h, device ID 2020h)
- 10h DWORD I/O base address (see PORT xxxxh"Am53C974A")
- 40h 16 BYTEs scratch registers
- (used by AMD's PC-SCSI drivers as follows:
- 40h/41h SCSI configuration register 0 (see #00926,#00927)
- ...
- 4Eh/4Fh SCSI configuration register 7)
- SeeAlso: #00747
- Bitfields for AMD Am53C974A Target Device Configuration Register:
- Bit(s) Description (Table 00926)
- 15-14 reserved
- 13 "FSCSI" Fast SCSI drive is present
- 12-8 "SPD" synchronous period
- 7-4 synchronous offset (0 = asynchronous transfers)
- 3-1 SCSI bus status
- 0 target device is present and active
- if 0, all other bits must be cleared to zero for target devices
- SeeAlso: #00925,#00927
- Bitfields for AMD Am53C974A Host Configuration Register:
- Bit(s) Description (Table 00927)
- 15-9 reserved
- 8 SCSI bus has been reset
- 7 starting BIOS number (bits 6-4) is valid
- 6-4 starting BIOS number (000 = BIOS drive 80h, 001 = drive 81h, etc)
- 3 this device is a SCSI host
- 2 protected-mode driver initialized
- 1 real-mode driver initialized
- 0 target device present
- =0 indicates that this is a host if bit 3 is set
- SeeAlso: #00925,#00926
- --------X-1AB10ASF1042-----------------------
- INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION DWORD (PC Technology devices)
- AX = B10Ah subfn 1042h
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- DI = register number (0000h-00FFh) (see #00878)
- Return: CF clear if successful
- ECX = dword read
- CF set on error
- AH = status (00h,87h) (see #00729)
- EAX, EBX, ECX, and EDX may be modified
- all other flags (except IF) may be modified
- Notes: this function may require up to 1024 byte of stack; it will not enable
- interrupts if they were disabled before making the call
- the meanings of BL and BH on entry were exchanged between the initial
- drafts of the specification and final implementation
- SeeAlso: AX=B10Ah,AX=B10Ah/SF=1022h,AX=B10Ah/SF=1045h,AX=B10Ah/SF=8086h
- Format of PCI Configuration data for PC Technology RZ-1000 EIDE controller:
- Offset Size Description (Table 00928)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 1042h, device ID 1000h)
- 10h DWORD base address for controller I/O registers
- (set to 01F1h for primary controller, 0171h for secondary)
- 14h DWORD base address for controller digital I/O port
- (set to 03F5h for primary, 0375h for secondary)
- 40h DWORD ???
- bits 7-1: ???
- bit 13: read-ahead mode enabled
- (Read-Ahead is buggy on original RZ-1000, and is
- thus typically disabled by clearing this bit)
- bit 16: ???
- 44h DWORD ???
- 48h 8 BYTEs ???
- 50h 176 BYTEs unused???
- --------X-1AB10ASF1045-----------------------
- INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION DWORD (OPTi devices)
- AX = B10Ah subfn 1045h
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- DI = register number (0000h-00FFh) (see #00878)
- Return: CF clear if successful
- ECX = dword read
- CF set on error
- AH = status (00h,87h) (see #00729)
- EAX, EBX, ECX, and EDX may be modified
- all other flags (except IF) may be modified
- Notes: this function may require up to 1024 byte of stack; it will not enable
- interrupts if they were disabled before making the call
- the meanings of BL and BH on entry were exchanged between the initial
- drafts of the specification and final implementation
- SeeAlso: AX=B10Ah,AX=B10Ah/SF=1042h,AX=B10Ah/SF=1066h
- Format of PCI Configuration data for OPTi 82C750 Vendetta (device 0):
- Offset Size Description (Table 00929)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 1045h, device ID C567h)
- 40h DWORD memory control (see #00930)
- 44h 6 BYTEs data path control (see #00931)
- 4Ah WORD reserved
- 4Ch BYTE SDRAM SDRAS/SDCAS mux control (see #00932)
- 4Dh BYTE SDRAM select (see #00933)
- 4Eh BYTE ECC test / I2C control (see #00934)
- 4Fh BYTE ECC test data
- 50h DWORD ECC control (see #00935)
- 54h WORD SDRAM select (see #00936)
- 56h BYTE data path control / EDO X-2-2-2 writes (see #00937)
- 57h BYTE reserved
- 58h DWORD ECC reporting (see #00938)
- 5Ch 164 BYTEs reserved
- SeeAlso: #00878,#00939,#00965
- Bitfields for OPTi 82C750 Vendetta (device 0) memory control:
- Bit(s) Description (Table 00930)
- 31-30 reserved
- 29 reserved (1)
- 28-18 reserved
- 17 reserved (1)
- 16 HA drive-back during CPU memory access enable
- 15-6 PCI video frame buffer write posting hole
- 5-4 reserved
- 3 PCI bus write post disable
- 2 video frame buffer write post (posting enabled if bit 2 = bit 3)
- 1 video memory write post(posting enabled if bit 1 = bit 3)
- 0 I/O cycle write post enable
- SeeAlso: #00929,#00931
- Bitfields for OPTi 82C750 Vendetta (device 0) data path control:
- Bit(s) Description (Table 00931)
- 41-47 reserved
- 40 DTY pin suspend enable
- 39-38 reserved
- 37 SDRAM refresh 0 sized bank RAS# disable
- 36 SDRAM control signal stepping enable
- 35 reserved
- 34-32 SDRAM mode
- 000 = normal
- 001 = NOP enable
- 010 = precharge all banks
- 011 = mode register enable
- 100 = CBR cycle enable
- 101-111 = reserved
- 31 SDRAM memory read access enable
- 30 CPU-to-PCI FIFO clear enable
- 29 PCI-to-DRAM FIFO clear enable
- 28 CPU-to-DRAM FIFO clear enable
- 27 82C750 register write disable
- 26-15 reserved
- 14 PCI master/ECC generate NMI disable
- 13-12 reserved (1)
- 11 memory parity checking enable
- 10 reserved
- 9 CPU DRAM write byte merge enable
- 8 MD bus pull-up resistor disable
- 7 PCI CPU write 6DW FIFO enable
- 6 DRAM PCI read 24DW FIFO enable
- 5 DRAM PCI write 24DW FIFO enable
- 4 DRAM CPU write 8QW FIFO enable
- 3 82C750 memory read access (0 = SDRAM, 1 = reserved)
- 2-1 reserved
- 0 82C750 memory read access (0 = FP mode, 1 = EDO/SDRAM)
- SeeAlso: #00929
- Bitfields for OPTi 82C750 Vendetta (device 0) SDRAM SDRAS/SDCAS mux control:
- Bit(s) Description (Table 00932)
- 7 MCACHE enable
- 6 GWE#/BWE# (1)
- 5 reserved (read-only)
- 4 reserved (1)
- 3 BOFF# CPU status latch enable
- 2 reserved (1) (SDRAS# & SDCAS#)
- 1 reserved (1) (BA1 & BA0)
- 0 pin mux
- 0 = RAS4# & RAS5#
- 1 = SDRAS# & SDCAS#
- SeeAlso: #00929
- Bitfields for OPTi 82C750 Vendetta (device 0) SDRAM select:
- Bit(s) Description (Table 00933)
- 7-6 reserved
- 5 bank 5 enable
- 4 bank 4 enable
- 3-0 reserved
- SeeAlso: #00929
- Bitfields for OPTi 82C750 Vendetta (device 0) ECC test / I2C control:
- Bit(s) Description (Table 00934)
- 7 ECC test mode enable
- 6 reserved
- 5 reserved (1 if SDRAM enabled)
- 4 I2C data output read-back (read-only)
- 3 I2C clock output read-back (read-only)
- 2 I2C data output (refer to file I2C.LST for more details)
- 1 I2C clock output
- 0 I2C control enable
- SeeAlso: #00929,I2C A0h,#00935
- Bitfields for OPTi 82C750 Vendetta (device 0) ECC control:
- Bit(s) Description (Table 00935)
- 31-13 upper 19 bits of error address
- 12-5 syndrome byte for reported error
- 4 non-correctable error
- 3 single-bit error
- 2 nibble error
- 1 ECC error report enable
- 0 ECC data path enable
- SeeAlso: #00929,#00934
- Bitfields for OPTi 82C750 Vendetta (device 0) SDRAM select:
- Bit(s) Description (Table 00936)
- 15 SDWE# stepping enable
- 14 reserved (1) (SDRAM)
- 13-12 reserved
- 11-6 bank 5-0 SDRAM technology
- 0 = 16 Mb
- 1 = 64 Mb
- 5-0 bank 5-0 SDRAM timing
- 0 = leadoff 7/6
- 1 = leadoff 8/7
- SeeAlso: #00929
- Bitfields for OPTi 82C750 Vendetta (device 0) data path control / EDO X-2-2-2:
- Bit(s) Description (Table 00937)
- 7 CPU-to-DRAM FIFO enable
- 6 1 CLK CAS enable
- 5-0 RAS5#-RAS0# X-2-2-2 write enable
- (CPU-to-DRAM FIFO, DRAM write post, and cache readaround write must
- be enabled)
- SeeAlso: #00929
- Bitfields for OPTi 82C750 Vendetta (device 0) ECC reporting:
- Bit(s) Description (Table 00938)
- 31-26 reserved
- 25-16 single-bit error counter
- 15 reserved
- 14 delayed write enable
- 13-4 single-bit error limit
- 3 correctable error reporting (0 = NMI, 1 = SMI)
- 2 single-bit error counter enable (disabling resets counter)
- 1 error reporting method (0 = NMI, 1 = SMI)
- 0 NMI/SMI generate disable
- SeeAlso: #00929
- Format of PCI Configuration data for OPTi 82C750 Vendetta (device 1):
- Offset Size Description (Table 00939)
- 00h 64 BYTEs header (see #00824)
- (vendor ID 1045h, device ID C568h)
- 40h WORD keyboard control (see #00940)
- 42h WORD interrupt control (see #00941)
- 44h BYTE pin functionality 1 (see #00942)
- 45h BYTE reserved
- 46h WORD cycle control (see #00943)
- 48h WORD pin functionality 2 (see #00944)
- 4Ah WORD ROMCS# range control (see #00945)
- 4Ch BYTE miscellaneous control 1 (see #00946)
- 4Dh BYTE reserved
- 4Eh BYTE miscellaneous control 2 (see #00947)
- 4Fh BYTE miscellaneous control 3 (see #00948)
- 50h WORD interrupt trigger control (see #00949)
- 52h WORD interrupt multiplexing control (see #00950)
- 54h WORD PCI master control (see #00951)
- 56h WORD serial interrupt source (see #00952)
- 58h BYTE serial interrupt mode control (see #00953)
- 59h BYTE pin functionality 3 (see #00954)
- 5Ah WORD distributed DMA master base address
- 5Ch BYTE distributed DMA control (see #00955)
- 5Dh 3 BYTEs reserved
- 60h BYTE USB interrupt control register (see #00956)
- 61h BYTE PCI reset control (see #00957)
- 62h BYTE emulation control (see #00958)
- 63h BYTE PCI retry control (see #00959)
- 64h 153 BYTEs reserved
- FDh BYTE SMI control
- FEh BYTE stop grant cycle control
- FFh BYTE host memory parity error
- SeeAlso: #00878,#00929,#00965
- Bitfields for OPTi 82C750 Vendetta (device 1) keyboard control:
- Bit(s) Description (Table 00940)
- 15 keyboard port read (read-only)
- 14 keyboard port write (read-only)
- 13 keyboard RESET CPUINIT
- 0 = generate immediately
- 1 = wait for halt
- 12 keyboard emulation disable
- 11-9 PIRQ3# IRQ generation
- 000 = use interrupt trigger control register (offset 50h)
- 001 = IRQ5
- 010-101 = IRQ9-IRQ12
- 110-111 = IRQ14-IRQ15
- 8-6 PIRQ2# IRQ generation
- 5-3 PIRQ1# IRQ generation
- 2-0 PIRQ0# IRQ generation
- SeeAlso: #00939,#00941
- Bitfields for OPTi 82C750 Vendetta (device 1) interrupt control:
- Bit(s) Description (Table 00941)
- 15 ISA IRQ14 blocking enable
- 14 ISA IRQ15 blocking enable
- 13 DMA/ISA master to preempt PCI master enable
- 12 PCI priority is fixed instead of rotating
- 11-10 back-to-back ISA I/O delay
- 00 = 3 ATCLKs
- 01 = 12 ATCLKs
- 10 = no delay
- 11 = delay all by 12 ATCLKs
- 9 PCI master ISA device access disable
- 8 ISA bus control signals for memory access >16M and I/O access >64K
- disable
- 7-6 IRQ15-IRQ14 triggering (0 = edge, 1 = level)
- 5-2 IRQ12-IRQ9 triggering (0 = edge, 1 = level)
- 1 IRQ 5 triggering (0 = edge, 1 = level)
- 0 pin AE16 functionality
- 0 = DREQ6
- 1 = EPMI0#
- SeeAlso: #00939,#00940
- Bitfields for OPTi 82C750 Vendetta (device 1) pin functionality 1:
- Bit(s) Description (Table 00942)
- 7-6 pin AC15 functionality
- 00-01 = controlled by bits 1-0
- 10 = DACK7#
- 11 = reserved
- 5-4 pin AE15 functionality
- 00-01 = controlled by bits 1-0
- 10 = DACK6#
- 11 = reserved
- 3-2 pin AF15 functionality
- 00-01 = controlled by bits 1-0
- 10 = DACK5#
- 11 = reserved
- 1-0 DACK group-wise programmable pin functionalities
- 00 = DACK3#-DACK0#
- 01 = DACK7#-DACK5#, DACK3#, DACK1#, DACK0#
- 10 = reserved
- 11 = EDACK2#-EDACK0#, EDACKEN#, PIRQ3#, PIRQ2#
- SeeAlso: #00939
- Bitfields for OPTi 82C750 Vendetta (device 1) cycle control:
- Bit(s) Description (Table 00943)
- 15 ISA bus ROM write enable
- 14 hidden refresh enable
- 13-12 ATCLK select
- 00 = LCLK/4
- 01 = LCLK/3
- 10 = LCLK/2
- 11 = LCLK
- 11 CPU master to PCI slave write
- 0 = 1 LCLK
- 1 = 0 LCLK
- 10-8 PCI master to PCI master preempt timer
- 000 = no preempt
- 001 = 260 LCLKs
- 010 = 132 LCLKs
- 011 = 68 LCLKs
- 100 = 36 LCLKs
- 101 = 20 LCLKs
- 110 = 12 LCLKs
- 111 = 5 LCLKs
- 7 reserved
- 6 XDIR achieve
- 0 = accessing ROM, keyboard controller, RTC
- 1 = accessing ROM, NVRAM
- 5 PERR# to SERR# conversion enable
- 4 address parity checking enable
- 3 target abort SERR# generation enable
- 2 fast back-to-back enable
- 1 sample point decoding
- 0 = slow
- 1 = subtractive
- 0 reserved
- SeeAlso: #00939
- Bitfields for OPTi 82C750 Vendetta (device 1) pin functionality 2:
- Bit(s) Description (Table 00944)
- 15 pin AF18 functionality (0 = IRQ15, 1 = reserved)
- 14-13 pin AE19 functionality (00-01 = IRQ12, 10-11 = reserved)
- 12 pin AD20 functionality (0 = IRQ10, 1 = MIRQ10/12)
- 11 pin AE21 functionality (0 = IRQ6, 1 = reserved)
- 10 pin AD22 functionality (0 = IRQ4, 1 = MIRQ4/6)
- 9-8 pin AD16 functionality (00 = DREQ7, 01 = EPMI3#, 1x = reserved)
- 7-6 pin AD17 functionality
- 00 = DREQ3
- 01 = DREQ3/7
- 10 = DREQ7
- 11 = reserved
- 5-4 pin AD18 functionality
- 00 = DREQ1
- 01 = DREQ1/6
- 10 = DREQ6
- 11 = reserved
- 3-2 pin AE18 functionality
- 00 = DREQ0
- 01 = DREQ0/5
- 10 = DREQ5
- 11 = reserved
- 1-0 pin T23 functionality (0x = PREQ1#, 1x = reserved)
- SeeAlso: #00939
- Bitfields for OPTi 82C750 Vendetta (device 1) ROMCS# range control:
- Bit(s) Description (Table 00945)
- 15 FFFF8000h-FFFFFFFFh ROMCS# disable
- 14 FFFF0000h-FFFF7FFFh ROMCS# disable
- 13 FFFE8000h-FFFEFFFFh ROMCS# enable
- 12 FFFE0000h-FFFE7FFFh ROMCS# enable
- 11 FFFD8000h-FFFDFFFFh ROMCS# enable
- 10 FFFD0000h-FFFD7FFFh ROMCS# enable
- 9 FFFC8000h-FFFCFFFFh ROMCS# enable
- 8 FFFC0000h-FFFC7FFFh ROMCS# enable
- 7 F8000h-FFFFFh ROMCS# disable
- 6 F0000h-F7FFFh ROMCS# disable
- 5 E8000h-EFFFFh ROMCS# enable
- 4 E0000h-E7FFFh ROMCS# enable
- 3 D8000h-DFFFFh ROMCS# enable
- 2 D0000h-D7FFFh ROMCS# enable
- 1 C8000h-CFFFFh ROMCS# enable
- 0 C0000h-C7FFFh ROMCS# enable
- SeeAlso: #00939
- Bitfields for OPTi 82C750 Vendetta (device 1) miscellaneous control 1:
- Bit(s) Description (Table 00946)
- 7-5 reserved
- 4 game port/MPU-401 enable
- 3 PREQ4#/PGNT4# mux (0 = SDA2/GP3, 1 = PREQ4#/PGNT4#)
- 2 DACK5# 1-to-0 transition enable
- 1-0 reserved
- SeeAlso: #00939,#00947,#00948
- Bitfields for OPTi 82C750 Vendetta (device 1) miscellaneous control 2:
- Bit(s) Description (Table 00947)
- 7-4 reserved
- 3 pipeline byte merge enable
- 2 EOP configuration (0 = output, 1 = input)
- 1 byte merge enable
- 0 ISA master data swap disable
- SeeAlso: #00939,#00946,#00948
- Bitfields for OPTi 82C750 Vendetta (device 1) miscellaneous control 3:
- Bit(s) Description (Table 00948)
- 7 pin AB15 functionality
- 0 = DACK5#
- 1 = PPWRL+PPWRL2
- 6 IDE functionality support enable
- 5 reserved (read-only)
- 4 ISA bus AT command 1 wait state extension disable
- 3-2 reserved
- 1 pin AE14 functionality
- 0 = controlled by offset 44h bits 1-0
- 1 = GPCS2#
- 0 reserved
- SeeAlso: #00939,#00946,#00947
- Bitfields for OPTi 82C750 Vendetta (device 1) interrupt trigger control:
- Bit(s) Description (Table 00949)
- 15 reserved (1)
- 14 reserved
- 13 pin AD15 functionality (0 = DACK2#, 1 = GPCS2#)
- 12-11 reserved
- 10 IRQ3 triggering (0 = edge, 1 = level)
- 9 IRQ4 triggering (0 = edge, 1 = level)
- 8 IRQ7 triggering (0 = edge, 1 = level)
- 7-6 IRQ generation when PIRQ3# triggered
- 00 = disable
- 01 = IRQ3
- 10 = IRQ4
- 11 = IRQ7
- 5-4 IRQ generation when PIRQ2# triggered
- 00 = disable
- 01 = IRQ3
- 10 = IRQ4
- 11 = IRQ7
- 3-2 IRQ generation when PIRQ1# triggered
- 00 = disable
- 01 = IRQ3
- 10 = IRQ4
- 11 = IRQ7
- 1-0 IRQ generation when PIRQ0# triggered
- 00 = disable
- 01 = IRQ3
- 10 = IRQ4
- 11 = IRQ7
- SeeAlso: #00939,#00950
- Bitfields for OPTi 82C750 Vendetta (device 1) interrupt multiplexing control:
- Bit(s) Description (Table 00950)
- 15 pin functionality
- 0 = AE22:IRQ3, AF21:IRQ5, AE21:IRQ6, AD21:IRQ7, AE20:IRQ9, AF19:IRQ11
- 1 = AE22:MIRQ3/5, AF21:MIRQ7/9, AE21:MIRQ11/15,
- AD21:EPMI1#, AE20:EPMI2#, AF19:GMIRQ
- 14 pin R22 functionality (0 = PREQ2#, 1 = EPMI0#)
- 13 IRQ1 latching enable
- 12 IRQ12 latching enable
- 11 DACKEN# status (0 = active low, 1 = active high)
- 10 system bus owned by external device
- 9 flash ROM locking enable
- 8 reserved
- 7 IRQ6 triggering (0 = edge, 1 = level)
- 6-3 IRQ generation when GMIRQ triggered
- 0000 = disabled
- 0001-0010 = reserved
- 0011-0111 = IRQ3-IRQ7
- 1000 = reserved
- 1001-1100 = IRQ9-IRQ12
- 1101 = reserved
- 1110-1111 = IRQ14-IRQ15
- 2 reserved (1)
- 1 priority scheme enable
- 0 concurrent refresh and IDE cycle enable
- SeeAlso: #00939,#00949
- Bitfields for OPTi 82C750 Vendetta (device 1) PCI master control:
- Bit(s) Description (Table 00951)
- 15-12 reserved
- 11 interrupt request register recover enable
- 10 DMA address and counter (0 = current, 1 = base)
- 9 CPU/PCI master access ISA cycle retry enable
- 8 CPU-to-PCI cycle AHOLD signal use enable
- (used only when bit 4 = 1)
- 7 PCI master X-1-1-1 write enable
- 6 PCI master X-1-1-1 read enable
- 5 concurrent PCI master/IDE enable
- 4 new AHOLD protocol enable
- 3 PCI master non-contiguous byte enable
- 2 reserved
- 1 simultaneous hardware PMU and IDE function operation enable
- 0 ISA refresh disable
- SeeAlso: #00939
- Bitfields for OPTi 82C750 Vendetta (device 1) serial interrupt source:
- Bit(s) Description (Table 00952)
- 15-3 IRQ15-IRQ3 interrupt resource (0 = ISA, 1 = serial interrupt)
- 2 SMI#, IOCHK#, PCIRQ3#-PCIRQ0# interrupt resource
- 0 = ISA
- 1 = serial interrupt
- 1-0 IRQ1-IRQ0 interrupt resource (0 = ISA, 1 = serial interrupt)
- SeeAlso: #00939,#00953
- Bitfields for OPTi 82C750 Vendetta (device 1) serial interrupt mode control:
- Bit(s) Description (Table 00953)
- 7-6 serial interrupt control mode
- 00 = continuous
- 01 = idle
- 1x = active
- 5 reserved
- 4 data frame slot support
- 0 = 17 slots (IRQ15-IRQ3, IRQ1-IRQ0, SMI#, IOCHK#)
- 1 = 21 slots (IRQ15-IRQ3, IRQ1-IRQ0, SMI#, IOCHK#, PCIRQ3#-PCIRQ0#)
- 3-2 CPU access PCI priority
- 00 = lowest
- 01 = higher after 4 PCI master grants
- 10 = higher after 2 PCI master grants
- 11 = higher after 3 PCI master grants
- 1-0 serial interrupt start frame pulse width in continuous/active mode
- 00 = 4/3 CLK
- 01 = 6/5 CLK
- 10 = 8/7 CLK
- 11 = reserved
- SeeAlso: #00939,#00952
- Bitfields for OPTi 82C750 Vendetta (device 1) pin functionality 3:
- Bit(s) Description (Table 00954)
- 7 PCI arbitration time-out mode enable
- 6 0 wait state for CPU I/O access enable
- 5 SMI output disable
- 4 CPU request for PCI bus (0 = enabled, 1 = reserved)
- 3 reserved
- 2 refresh preemption disable
- 1-0 reserved
- SeeAlso: #00939
- Bitfields for OPTi 82C750 Vendetta (device 1) distributed DMA control:
- Bit(s) Description (Table 00955)
- 7-5 channel 7-5 enable
- 4-1 channel 3-0 enable
- 0 DDMA enable
- SeeAlso: #00939
- Bitfields for OPTi 82C750 Vendetta (device 1) USB interrupt control register:
- Bit(s) Description (Table 00956)
- 7 reserved
- 6-5 buffered DMA control
- 00 = original DMA with old protocol
- 01 = reserved
- 10 = original DMA with PCI master capability
- 11 = buffered DMA enable
- 4 reserved
- 3-0 IRQ generation when USBIRQ triggered
- 0000 = disabled
- 0001-0010 = reserved
- 0011-0111 = IRQ3-IRQ7
- 1000 = reserved
- 1001-1100 = IRQ9-IRQ12
- 1101 = reserved
- 1110-1111 = IRQ14-IRQ15
- SeeAlso: #00939
- Bitfields for OPTi 82C750 Vendetta (device 1) PCI reset control:
- Bit(s) Description (Table 00957)
- 7 PCI soft reset generate enable
- 6 PCI slave demand mode buffered DMA retry fix enable
- 5 IORDY# PCI master delay fix enable
- 4 ISA command deassertion IOCHRDY delay
- 0 = <1 ATCLK
- 1 = >=1 ATCLK
- 3-2 buffered DMA fix (00 = disable, 11 = enable)
- 1 reserved
- 0 ISA master synchronization (1)
- SeeAlso: #00939
- Bitfields for OPTi 82C750 Vendetta (device 1) emulation control:
- Bit(s) Description (Table 00958)
- 7 PCIRST# disable
- 6 SDA2 muxed with XDIR (0 = XDIR, 1 = SDA2)
- 5 SPKR muxed with MIDI1 (0 = MIDI1, 1 = SPKR)
- 4 audio mux (0 = MP7-MP0, DACK)
- 3 audio module enable
- 2 ATA-33 IDE pin mux scheme (0 = old, 1 = new)
- 1 REFRESH priority (0 = high, 1 = lowest)
- 0 port 92h emulation disable
- SeeAlso: #00939,PORT 0092h
- Bitfields for OPTi 82C750 Vendetta (device 1) PCI retry control:
- Bit(s) Description (Table 00959)
- 7-2 reserved
- 1 reserved (1)
- 0 ISA slave PCI master retry
- 0 = no change
- 1 = generate BOFF#
- SeeAlso: #00939
- Format of PCI Configuration data for OPTi 82C750 Vendetta (IDE controller):
- Offset Size Description (Table 00960)
- 00h 64 BYTEs header (see #00824)
- (vendor ID 1045h, device ID C621h)
- 40h BYTE IDE initialization control (see #00961)
- 41h BYTE reserved
- 42h BYTE IDE enhanced feature (see #00962)
- 43h BYTE IDE enhanced mode (see #00963)
- 44h WORD ultra DMA mode select (see #00964)
- 46h 186 BYTEs reserved
- Bitfields for OPTi 82C750 Vendetta (IDE Controller) IDE initialization control:
- Bit(s) Description (Table 00961)
- 7-6 bus master IDE PCI bus request when FIFO filled with
- 00 = 32 bytes (early request disabled)
- 01 = 30 bytes
- 10 = 28 bytes
- 11 = 26 bytes
- 5 reserved (1)
- 4 reserved
- 3 secondary IDE disable
- 2 I/O addresses relocatable
- 1-0 IDE device default cycle time
- 00 = >=600ns (PIO mode 0)
- 01 = >=383ns (PIO mode 2)
- 10 = >=240ns (PIO mode 1)
- 11 = >=180ns (PIO mode 3)
- SeeAlso: #00960
- Bitfields for OPTi 82C750 Vendetta (IDE Controller) IDE enhanced feature:
- Bit(s) Description (Table 00962)
- 7 reserved
- 6 IDE write concurrency enable
- 5 slave IDE FIFO to ISA bus preemption disable
- 4 IDE arbiter PCI/IDE concurrency support enable
- 3 PCI memory commands enable
- 2 PCI master IDE and IDE cycle concurrency enable
- 1 PCI master X-1-1-1 MIDE enable
- 0 reserved
- SeeAlso: #00960,#00963
- Bitfields for OPTi 82C750 Vendetta (IDE Controller) IDE enhanced mode:
- Bit(s) Description (Table 00963)
- 7-6 secondary IDE drive 1 enhanced mode
- 00 = disabled
- 01 = command recovery in 1 LCLK
- 10 = command recovery in 0 LCLK
- 11 = reserved
- 5-4 secondary IDE drive 0 enhanced mode
- 00 = disabled
- 01 = command recovery in 1 LCLK
- 10 = command recovery in 0 LCLK
- 11 = reserved
- 3-2 primary IDE drive 1 enhanced mode
- 00 = disabled
- 01 = command recovery in 1 LCLK
- 10 = command recovery in 0 LCLK
- 11 = reserved
- 1-0 primary IDE drive 0 enhanced mode
- 00 = disabled
- 01 = command recovery in 1 LCLK
- 10 = command recovery in 0 LCLK
- 11 = reserved
- SeeAlso: #00960,#00963
- Bitfields for OPTi 82C750 Vendetta (IDE Controller) ultra DMA mode select:
- Bit(s) Description (Table 00964)
- 15 primary IDE disable
- 14-12 reserved
- 11-10 secondary IDE drive 1 ultra DMA mode
- 00 = mode 0
- 01 = mode 1
- 10 = mode 2
- 11 = reserved
- 9-8 secondary IDE drive 0 ultra DMA mode (same values as bits 11-10)
- 7-6 primary IDE drive 1 ultra DMA mode (same values as bits 11-10)
- 5-4 primary IDE drive 0 ultra DMA mode (same values as bits 11-10)
- 3 secondary IDE drive 1 ultra DMA 33 enable
- 2 secondary IDE drive 0 ultra DMA 33 enable
- 1 primary IDE drive 1 ultra DMA 33 enable
- 0 primary IDE drive 0 ultra DMA 33 enable
- SeeAlso: #00960
- Format of PCI Configuration data for OPTi 82C861/82C871 PCI-to-USB Bus Bridge:
- Offset Size Description (Table 00965)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 1045h, device ID C861h)
- 40h 4 BYTEs reserved for testing
- 44h 10 BYTEs reserved
- 4Eh BYTE I2C control
- bits 7-5: reserved
- bit 4: I2C data output read-back (read-only)
- bit 3: I2C clock output read-back (read-only)
- bit 2: I2C data output
- bit 1: I2C clock output
- bit 0: I2C control enable
- 4Fh BYTE reserved
- 50h BYTE PCI host feature control
- bits 7-4: reserved
- bit 3: subsystem vendor ID register write disable
- bit 2: CLKRUN# enable
- bit 1: port 2 output disable
- bit 0: port 1 output disable
- 51h BYTE interrupt assignment
- bit 7: host controller type
- 0 = Viper-N+ (send 1 data phase on IRQ driveback)
- 1 = FireStar (send 2 data phases on IRQ driveback)
- bit 6: IRQ driveback enable
- bit 5: reserved
- bits 4-0: interrupt assignment
- 00000 = disabled
- 00001 = PCIRQ0# (default) to 00100 = PCIRQ3#,
- 00101 = ACPI0 to 01111 = ACPI10
- 10000 = IRQ0 to 11111 = IRQ15
- 52h 2 BYTEs reserved
- 54h DWORD IRQ driveback address
- bits 1-0: reserved to 00 (read-only)
- 58h 20 BYTEs reserved
- 6Ch DWORD reserved (test mode enable)
- SeeAlso: #00878,#00929,#00939
- Format of OPTi FireLink/FireBlast Host Controller memory-mapped registers:
- Offset Size Description (Table 00966)
- 00h 256 BYTES standard OpenHCI registers (see #00902)
- 100h DWORD "HceControl" emulation control (see #00967)
- 104h DWORD "HceInput" legacy Input Buffer (see #00968)
- 108h DWORD "HceOutput" legacy Output Buffer (see #00969)
- 10Ch DWORD "HceStatus" legacy Status (see #00970)
- SeeAlso: #00902,#00965
- Bitfields for OPTi FireLink/FireBlast "HceControl" register:
- Bit(s) Description (Table 00967)
- 31-9 reserved
- 8 A20 gate state
- 7 IRQ12 active (write 1 to clear)
- 6 IRQ1 active (write 1 to clear)
- 5 A20 gate sequence
- 1 D1h written to port 64h
- 0 other than D1h written to port 64h
- 4 external IRQ emulation enable
- 3 IRQ enable
- 2 character pending emulation enable
- 1 (read-only) emulation interrupt condition
- 0 emulation enable
- SeeAlso: #00902,PORT 0064h
- Bitfields for OPTi FireLink/FireBlast "HceInput" register:
- Bit(s) Description (Table 00968)
- 31-8 reserved
- 7-0 data written to port 60h or 64h
- SeeAlso: #00902,#00970,PORT 0060h,PORT 0064h
- Bitfields for OPTi FireLink/FireBlast "HceOutput" register:
- Bit(s) Description (Table 00969)
- 31-8 reserved
- 7-0 data to be returned on read of port 60h
- SeeAlso: #00902,PORT 0060h
- Bitfields for OPTi FireLink/FireBlast "HceStatus" register:
- Bit(s) Description (Table 00970)
- 31-8 reserved
- 7 parity error
- 6 time-out
- 5 aux output full enable
- 4 keyboard inhibit switch state
- 0 inhibited
- 1 not inhibited
- 3 data written to port:
- 0 port 60h
- 1 port 64h
- 2 warm/cold boot flag
- 1 input full
- 0 output full
- SeeAlso: #00902,PORT 0060h,PORT 0064h
- --------X-1AB10ASF1066-----------------------
- INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION DWORD (PicoPower devices)
- AX = B10Ah subfn 1066h
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- DI = register number (0000h-00FFh) (see #00878)
- Return: CF clear if successful
- ECX = dword read
- CF set on error
- AH = status (00h,87h) (see #00729)
- EAX, EBX, ECX, and EDX may be modified
- all other flags (except IF) may be modified
- Notes: this function may require up to 1024 byte of stack; it will not enable
- interrupts if they were disabled before making the call
- the meanings of BL and BH on entry were exchanged between the initial
- drafts of the specification and final implementation
- SeeAlso: AX=B10Ah,AX=B10Ah/SF=8086h
- Format of PicoPower Vesuvius V3-LS ISA Bridge configuration:
- Offset Size Description (Table 00971)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 1066h, device ID 0002h or 8002h)
- 40h WORD distributed DMA control register (see #00972)
- 42h BYTE distributed DMA status register (see #00973)
- 44h DWORD slave DMAC CH0 base register (see #00974)
- 48h DWORD slave DMAC CH1 base register (see #00974)
- 4Ch DWORD slave DMAC CH2 base register (see #00974)
- 50h DWORD slave DMAC CH3 base register (see #00974)
- 54h DWORD slave DMAC CH5 base register (see #00974)
- 58h DWORD slave DMAC CH6 base register (see #00974)
- 5Ch DWORD slave DMAC CH7 base register (see #00974)
- 90h DWORD PCI-to-ISA bridge configuration register (see #00975)
- 94h DWORD ISA memory address positive decode (see #00976)
- 98h DWORD I/O address positive decode (see #00977)
- 9Ch WORD I/O configuration address register (see #00978)
- A0h DWORD programmable ISA I/O address decoder (see #00979)
- A4h 6 DWORD programmable ISA range decoder registers 1-6 (see #00980)
- C0h 64 BYTEs reserved
- SeeAlso: #00773
- Bitfields for PicoPower Vesuvius V3-LS distributed DMA control register:
- Bit(s) Description (Table 00972)
- 15-6 reserved
- 5 (revision BB & later) secondary slave floppy disk distributed access
- enable (if bit 1 = 0)
- 4 (revision BB & later) secondary slave hard disk distributed access
- enable (if bit 1 = 0)
- 3 slave floppy drive port distributed access enable (if bit 1 = 0)
- 2 slave hard drive port distributed access enable (if bit 1 = 0)
- 1 distributed DMA mode
- 0 = master
- 1 = slave
- 0 distributed DMA function enable
- SeeAlso: #00971
- Bitfields for PicoPower Vesuvius V3-LS distributed DMA status register:
- Bit(s) Description (Table 00973)
- 7-1 reserved
- 0 DDMA status (write 1 to clear)
- SeeAlso: #00971
- Bitfields for PicoPower Vesuvius V3-LS slave DMAC CH0-7 base register:
- Bit(s) Description (Table 00974)
- 31-16 reserved (0)
- 15-7 channel base address
- 6-4 channel base address (hardwired to channel number)
- 3 extended address (0)
- 2-1 size (00 for channel 0-3, 01 for channel 5-7)
- 0 channel enable
- SeeAlso: #00971
- Bitfields for PicoPower Vesuvius V3-LS PCI-to-ISA bridge configuration:
- Bit(s) Description (Table 00975)
- 31-15 reserved
- 14 AD/SD/SA bus staggering enable
- 13 ISA bridge PCI positive decode enable
- 12 ISA bridge PCI subtractive decode disable
- 11-10 reserved
- 9 retry enable
- 8 lock input enable
- 7 SERR#/NMI status flag (write 1 to clear)
- 6 PERR#/NMI status flag (write 1 to clear)
- 5 SERR# triggers NMI enable
- 4 PERR# triggers NMI enable
- 3 reserved
- 2-0 (revision BB and later) system configuration setting
- SeeAlso: #00971
- Bitfields for PicoPower Vesuvius V3-LS ISA memory address positive decode:
- Bit(s) Description (Table 00976)
- 31-9 reserved
- 8 ISA memory A0000h-AFFFFh and FFA0000h-FFFAFFFFh decode enable
- 7 ISA memory B0000h-BFFFFh and FFB0000h-FFFBFFFFh decode enable
- 6 ISA memory C0000h-C7FFFh and FFC0000h-FFFC7FFFh decode enable
- 5 ISA memory C8000h-CFFFFh and FFC8000h-FFFCFFFFh decode enable
- 4 ISA memory D0000h-D7FFFh and FFD0000h-FFFD7FFFh decode enable
- 3 ISA memory D8000h-DFFFFh and FFD8000h-FFFDFFFFh decode enable
- 2 ISA memory E0000h-E7FFFh and FFE0000h-FFFE7FFFh decode enable
- 1 ISA memory E8000h-EFFFFh and FFE8000h-FFFEFFFFh decode enable
- 0 ISA memory F0000h-FFFFFh and FFF0000h-FFFFFFFFh decode enable
- SeeAlso: #00971
- Bitfields for PicoPower Vesuvius V3-LS I/O address positive decode:
- Bit(s) Description (Table 00977)
- 31-24 reserved
- 23 (revision BB and later) I/O read 377h decode enable
- 22 (revision BB and later) I/O read 3F7h decode enable
- 21 PC NET (360h-36Fh) decode enable
- 20 audio 5 (388h-38Bh) decode enable
- 19 audio 4 (250h-25Fh) decode enable
- 18 audio 3 (240h-24Fh) decode enable
- 17 audio 2 (230h-23Fh) decode enable
- 16 audio 1 (220h-22Fh) decode enable
- 15 audio 0 (201h) decode enable
- 14 (revision BB and later) ISA secondary floppy (370h-375h, 377h write)
- decode enable
- 13 (revision BB and later) ISA primary floppy (3F0h-3F5h, 3F7h write)
- decode enable
- 12 (revision BB and later) ISA secondary IDE (170h-177h, 376h) decode
- enable
- 11 (revision BB and later) ISA primary IDE (1F0h-1F7h, 3F6h) decode enable
- 10 ISA LPT3 (3BCh-3BFh, 7BCh-7BEh) decode enable
- 9 ISA LPT2 (278h-27Fh, 678h-67Ah) decode enable
- 8 ISA LPT1 (378h-37Fh, 778h-77Ah) decode enable
- 7 ISA COM4 (2E8h-2EFh) decode enable
- 6 ISA COM3 (3E8h-3EFh) decode enable
- 5 ISA COM2 (2F8h-2FFh) decode enable
- 4 ISA COM1 (3F8h-3FFh) decode enable
- 3 ISA system I/O (00h-FFh) decode enable
- 2 configuration (24h/26h) decode enable
- 1-0 reserved
- SeeAlso: #00971
- Bitfields for PicoPower Vesuvius V3-LS I/O configuration address register:
- Bit(s) Description (Table 00978)
- 15-10 reserved
- 9-1 configuration I/O address
- 0 configuration address register enable
- SeeAlso: #00971
- Bitfields for PicoPower Vesuvius V3-LS programmable ISA I/O address decoder:
- Bit(s) Description (Table 00979)
- 31-18 reserved
- 17 ISA range decoder 6 read enable
- 16 ISA range decoder 6 write enable
- 15 ISA range decoder 6 type
- 0 = memory
- 1 = I/O
- 14 ISA range decoder 5 read enable
- 13 ISA range decoder 5 write enable
- 12 ISA range decoder 5 type (same values as bit 15)
- 11 ISA range decoder 4 read enable
- 10 ISA range decoder 4 write enable
- 9 ISA range decoder 4 type (same values as bit 15)
- 8 ISA range decoder 3 read enable
- 7 ISA range decoder 3 write enable
- 6 ISA range decoder 3 type (same values as bit 15)
- 5 ISA range decoder 2 read enable
- 4 ISA range decoder 2 write enable
- 3 ISA range decoder 2 type (same values as bit 15)
- 2 ISA range decoder 1 read enable
- 1 ISA range decoder 1 write enable
- 0 ISA range decoder 1 type (same values as bit 15)
- SeeAlso: #00971
- Bitfields for PicoPower Vesuvius V3-LS programmable ISA range decoder 1:
- Bit(s) Description (Table 00980)
- 31-16 ISA address compare
- 15-0 ISA device address (memory address bits 23-8, I/O address bits 15-0)
- SeeAlso: #00971
- --------X-1AB10ASF1066-----------------------
- INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION DWORD (Brooktree devices)
- AX = B10Ah subfn 1066h
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- DI = register number (0000h-00FFh) (see #00878)
- Return: CF clear if successful
- ECX = dword read
- CF set on error
- AH = status (00h,87h) (see #00729)
- EAX, EBX, ECX, and EDX may be modified
- all other flags (except IF) may be modified
- Notes: this function may require up to 1024 byte of stack; it will not enable
- interrupts if they were disabled before making the call
- the meanings of BL and BH on entry were exchanged between the initial
- drafts of the specification and final implementation
- SeeAlso: AX=B10Ah,AX=B10Ah/SF=8086h
- Format of Brooktree Bt8230 ATM controller configuration:
- Offset Size Description (Table 00981)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 109Eh, device ID 8230h)
- 10h DWORD address at which to map external memory (multiple of 16M)
- internal registers are mapped at offsets 0000h-01FFh; Bt8222
- registers are mapped at 0200h-03FFh, and T1/E1 Framer
- registers are mapped at 0800h-0FFFh. Only 32-bit memory
- accesses are used
- 40h BYTE maximum burst length (00h not allowed, default = 10h)
- 41h BYTE "SPECIAL_STATUS"
- bit 3: attempted to perform DMA on PCI while bus-mastering
- disabled in PCI command word
- bit 2: PCI/DMA synchronization error occurred
- bit 1: PCI bus master encountered fatal error
- bit 0: direction of transaction which encountered error
- =0 write (refer to offset 48h)
- =1 read (refer to offset 44h)
- Note: bits 3-1 are write-clear, bit 0 is read-only
- 42h 2 BYTEs unused
- 44h DWORD current read target address for PCI bus master (read-only)
- 48h DWORD current write target address for PCI bus master (read-only)
- 4Ch 180 BYTEs reserved
- SeeAlso: #00790
- --------X-1AB10ASF1106-----------------------
- INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION DWORD (VIA Technologies devices)
- AX = B10Ah subfn 1106h
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- DI = register number (0000h-00FFh) (see #00878)
- Return: CF clear if successful
- ECX = dword read
- CF set on error
- AH = status (00h,87h) (see #00729)
- EAX, EBX, ECX, and EDX may be modified
- all other flags (except IF) may be modified
- Notes: this function may require up to 1024 byte of stack; it will not enable
- interrupts if they were disabled before making the call
- the meanings of BL and BH on entry were exchanged between the initial
- drafts of the specification and final implementation
- SeeAlso: AX=B10Ah,AX=B10Ah/SF=8086h
- Format of Via Technologies' VT82C580VPX CPU-PCI bridge configuration:
- Offset Size Description (Table 00982)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 1106h, device ID 0585h)
- 40h 16 BYTEs unused
- 50h BYTE cache control 1
- 51h BYTE cache control 2
- 52h BYTE non-cacheable control
- 53h BYTE system performance control
- 54h BYTE non-cacheable region 1 (high)
- 55h BYTE non-cacheable region 1 (low)
- 56h BYTE non-cacheable region 2 (high)
- 57h BYTE non-cacheable region 2 (low)
- 58h BYTE DRAM configuration 1
- 59h BYTE DRAM configuration 2
- 5Ah 6 BYTEs DRAM row N ending address (N=0-5)
- 60h BYTE DRAM type
- 61h BYTE shadow RAM control 1
- 62h BYTE shadow RAM control 2
- 63h BYTE shadow RAM control 3
- 64h BYTE DRAM reference timing
- 65h BYTE DRAM timing control 1 (see #00996)
- 66h BYTE DRAM timing control 2 (see #00997)
- 67h BYTE 32-bit DRAM width (see #00998)
- 68h BYTE
- 69h BYTE reserved ("do not program")
- 6Ah BYTE refresh counter
- 6Bh BYTE refresh control
- 6Ch BYTE SDRAM control
- 6Dh BYTE DRAM control drive strength
- 6Eh 2 BYTEs reserved
- 70h BYTE PCI buffer control
- 71h BYTE CPU-to-PCI flow control 1
- 72h BYTE CPU-to-PCI flow control 2
- 73h BYTE PCI master control 1
- 74h BYTE PCI master control 2
- 75h BYTE PCI arbitration 1
- 76h BYTE PCI arbitration 2
- 77h BYTE reserved for chip test
- 78h 136 BYTEs reserved
- !!!via\580vpx.pdf
- SeeAlso: #00817
- Format of AMD-640 System Controller:
- Offset Size Description (Table 00983)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 1106h, device ID 0595h)
- 0Dh BYTE latency timer (bits 7-3)
- 00h = 32*8 PCI clocks
- 01h = 1*8 PCI clocks
- N = N*8 PCI clocks
- 40h 16 BYTEs unused???
- 50h BYTE cache control 1 (see #00984)
- 51h BYTE cache control 2 (see #00985)
- 52h BYTE non-cacheable control (see #00986)
- 53h BYTE system performance control (see #00987)
- 54h WORD non-cacheable region 1 (see #00988)
- 56h WORD non-cacheable region 2 (see #00988)
- 58h BYTE DRAM configuration register 1 (see #00989)
- 59h BYTE DRAM configuration register 2 (see #00990)
- 5Ah 6 BYTEs end of DRAM banks 0-5
- each register specifies bits 29-22 of the bank's ending address
- 60h BYTE DRAM type (see #00991)
- 61h BYTE shadow RAM control register 1 (see #00992)
- 62h BYTE shadow RAM control register 2 (see #00993)
- 63h BYTE shadow RAM control register 3 (see #00994)
- 64h BYTE DRAM timing (see #00995)
- 65h BYTE DRAM control register 1 (see #00996)
- 66h BYTE DRAM control register 2 (see #00997)
- 67h BYTE 32-bit DRAM width control register (see #00998)
- 68h 2 BYTEs reserved
- 6Ah BYTE DRAM refresh counter (in units of 16 CPU clocks)
- 6Bh BYTE DRAM refresh control register (see #00999)
- 6Ch BYTE SDRAM control register (see #01000)
- 6Dh BYTE DRAM drive strength control register (see #01001)
- 6Eh BYTE ECC control register (see #01002)
- 6Fh BYTE ECC status register (see #01003)
- 70h BYTE PCI buffer control (see #01004)
- 71h BYTE CPU-to-PCI flow control 1 (see #01005)
- 72h BYTE CPU-to-PCI flow control 2 (see #01006)
- 73h BYTE PCI target control (see #01007)
- 74h BYTE PCI initiator control (see #01008)
- 75h BYTE PCI arbitration control 1 (see #01009)
- 76h BYTE PCI arbitration control 2 (see #01010)
- 77h 137 BYTEs reserved
- Note: the AMD-640 uses PCI configuration mechanism #1; bus/device/function
- are always 00h/00h/00h
- SeeAlso: #00817,#01011
- Bitfields for AMD-640 Cache Control Register 1:
- Bit(s) Description (Table 00984)
- 7-6 cache enable
- 00 disabled
- 01 initialization (BIOS fills L2 cache to known state)
- 10 enabled (normal operation)
- 11 reserved
- 5 reserved (do not change)
- 4-3 tag configuration
- 00 eight tag bits, no "modify" bit
- 01 seven tag bits, one modify bit
- 10 ten tag bits, no modify bit
- 11 nine tag bits, one modify bit
- 2 reserved (0)
- 1-0 type of cache RAM
- 00 none
- 01 reserved
- 10 burst SRAM
- 11 pipeline burst SRAM
- SeeAlso: #00983,#00985
- Bitfields for AMD-640 Cache Control Register 2:
- Bit(s) Description (Table 00985)
- 7-6 reserved (0)
- 5 backoff processor until L2 cache filled
- 4 reserved (0)
- 3 two banks of SRAM instead of one
- 2 reserved (0)
- 1-0 L2 cache size
- 00 = 256K
- 01 = 512K
- 10 = 1M
- 11 = 2M
- SeeAlso: #00983,#00984,#00986
- Bitfields for AMD-640 Non-Cacheable Control Register:
- Bit(s) Description (Table 00986)
- 7 segment C000h-C7FFh cacheable and write-protected
- 6 D000h-DFFFh cacheable and write-protected
- 5 E000h-EFFFh cacheable and write-protected
- 4 F000h-FFFFh cacheable and write-protected
- 3 reserved (0)
- 2 force L2 cache fill
- 1 reserved (1)
- 0 L2 write mode (0 = writeback, 1 = write-through)
- SeeAlso: #00983,#00985,#00987
- Bitfields for AMD-640 System Performance Control Register:
- Bit(s) Description (Table 00987)
- 7 enable read-around-write
- 6 enable cache read pipeline cycle
- 5 enable cache write pipeline cycle
- 4 enable DRAM pipeline cycle
- 3 enable PCI Peer Concurrence (PCI initiator can transfer to another
- PCI device without blocking memory or CPU bus)
- 2-0 reserved (0)
- SeeAlso: #00983,#00986
- Bitfields for AMD-640 Non-Cacheable Region register:
- Bit(s) Description (Table 00988)
- 15-11 bits 20-16 of region's base address
- 10-8 size of non-cacheable area
- 000 disabled
- 001 = 64K
- 010 = 128K
- ...
- 110 = 2M
- 111 = 4M
- 7-0 bits 28-21 of region's base address
- SeeAlso: #00983,#00989
- Bitfields for AMD-640 DRAM Configuration Register 1:
- Bit(s) Description (Table 00989)
- 7-5 type of address mapping for memory banks 0 and 1
- ---EDO/FastPageMode---
- 000 eight-bit column address
- 001 nine-bit column address
- 010 ten-bit column address
- 011 eleven-bit column address
- 100 twelve-bit column address
- other reserved
- ---SDRAM---
- 0xx = 16-Mbit SDRAM (see #00991)
- 1xx = 64-Mbit SDRAM
- 4 reserved (0)
- 3-1 type of address mapping ofr memory banks 2 and 3
- 0 reserved (0)
- SeeAlso: #00983,#00990
- Bitfields for AMD-640 DRAM Configuration Register 2:
- Bit(s) Description (Table 00990)
- 7-5 type of address mapping for memory banks 4 and 5 (see #00989)
- 4-3 reserved (0)
- 2-0 last populated memory bank
- 000 - 101 = Bank0 - Bank5
- 110,111 reserved
- Note: banks 2-4 are non-cacheable if tag RAM is ten bits + modified bit
- SeeAlso: #00983,#00989
- Bitfields for AMD-640 DRAM Type register:
- Bit(s) Description (Table 00991)
- 7-6 reserved
- 5-4 type of DRAM in banks 4 and 5
- 00 fast page mode (FPM)
- 01 extended data out (EDO)
- 10 reserved
- 11 synchronous DRAM (SDRAM)
- 3-2 type of DRAM in banks 2 and 3
- 1-0 type of DRAM in banks 0 and 1
- SeeAlso: #00983,#00989,#00990
- Bitfields for AMD-640 Shadow RAM Control Register 1:
- Bit(s) Description (Table 00992)
- 7-6 segment CC00h-CFFFh shadow RAM control
- 00 shadowing disabled
- 01 write enabled
- 10 read enabled
- 11 both read and write enabled
- 5-4 segment C800h-CBFFh shadow RAM control
- 3-2 segment C400h-C7FFh shadow RAM control
- 1-0 segment C000h-C3FFh shadow RAM control
- SeeAlso: #00983,#00993,#00994
- Bitfields for AMD-640 Shadow RAM Control Register 2:
- Bit(s) Description (Table 00993)
- 7-6 segment DC00h-DFFFh shadow RAM control
- 00 shadowing disabled
- 01 write enabled
- 10 read enabled
- 11 both read and write enabled
- 5-4 segment D800h-DBFFh shadow RAM control
- 3-2 segment D400h-D7FFh shadow RAM control
- 1-0 segment D000h-D3FFh shadow RAM control
- SeeAlso: #00983,#00992,#00994
- Bitfields for AMD-640 Shadow RAM Control Register 3:
- Bit(s) Description (Table 00994)
- 7-6 segment E000h-EFFFh shadow RAM control
- 00 shadowing disabled
- 01 write enabled
- 10 read enabled
- 11 both read and write enabled
- 5-4 segment F000h-FFFFh shadow RAM control
- 3-2 ISA memory hole
- 00 none
- 01 = 512K-640K
- 10 = 15M-16M
- 11 = 14M-16M
- 1 enable SMI redirection
- if set: 30000h-3FFFFh redirected to B0000h, 40000h-4FFFFh to A0000h
- 0 redirect video RAM accesses (A0000h-BFFFFh) to system DRAM rather than
- PCI bus (used to initialize SMRAM at B0000h)
- SeeAlso: #00983,#00992,#00993
- Bitfields for AMD-640 DRAM Timing register:
- Bit(s) Description (Table 00995)
- 7-6 RAS# precharge time
- 00 = 2T (for 50ns DRAM) [T = HCLK period]
- 01 = 3T (60ns)
- 10 = 4T (70ns)
- 11 = 6T
- 5-4 RAS# pulse width
- 00 = 3T (for 50ns DRAM)
- 01 = 4T (60ns)
- 10 = 5T (70ns)
- 11 = 6T
- 3-2 CAS# pulse width
- FPM: 00=1T, 01=2T, 10=3T, 11=4T
- EDO: 00=4T, 01=1T, 10=2T, 11=3T
- 1 write pulse width (0 = 1T, 1 = 2T)
- 0 delay from column address to CAS# (0 = 1T, 1 = 2T)
- SeeAlso: #00983,#00994
- Bitfields for AMD-640 DRAM Control Register 1:
- Bit(s) Description (Table 00996)
- 7-6 page mode control
- 00 close page after access
- 01 reserved
- 10 keep page open until timeout or page miss
- 11 close page if processor has not accessed DRAM for 8 CPU cycles
- 5 enable fast DRAM decoding
- 4 reduce EDO DRAM leadoff cycle from 6T to 5T
- 3 delay DRAM data latch by 1/2 clock
- 2 (AMD-640) reserved
- (VT82C580VPX) Pin88 function (0 = DB32, 1 = TA9)
- 1 reserved (0)
- 0 delay DRAM read cycle by 1T whenever write buffer contains data
- must be set if read-around-write is enabled (see #00987)
- SeeAlso: #00983,#00997,#00982
- Bitfields for AMD-640 DRAM Control Register 2:
- Bit(s) Description (Table 00997)
- 7 enable EDO test mode
- when set, EDO RAM contents will read correctly, FPM not
- 6 reserved (0)
- 5-3 (AMD-640) reserved (0)
- 5 (VT82C580VPX) SDRAM CAS# latency (0 = latency 2, 1 = latency 3)
- 4 (VT82C580VPX) reserved (0)
- 3 (VT82C580VPX) enable Turbo EDO mode (0 = x-2-2-2, 1 = x-1-1-1 bursts)
- 2 add one wait state for memory data-to-host data pop
- 1 reduce RAS# precharge by 1T for SDRAM
- 0 reduce RAS# to CAS# delay for SDRAM
- Note: bits 1 and 0 have no effect unless SDRAM has been selected via the
- DRAM type register (see #00991)
- SeeAlso: #00983,#00996,#00982
- Bitfields for AMD-640 32-bit DRAM Width Control register:
- Bit(s) Description (Table 00998)
- 7 RAS# to Column Address delay (0 = 1T, 1 = 2T)
- 6 delay NA# by 1T
- 5-0 widths of banks 5 - 0
- AMD-640 documentation clains that all bits should be cleared
- for VT82C580VPX, settings are 0 = 64-bit, 1 = 32-bit (only applicable
- when two banks of PBSRAM are installed)
- SeeAlso: #00983,#00982,#00997,#00999
- Bitfields for AMD-640 DRAM Refresh Control register:
- Bit(s) Description (Table 00999)
- 7 enable CAS#-before-RAS# refresh
- 6 enable burst refresh (four rows every 60 us, not one every 15 us)
- 5-0 reserved (0)
- SeeAlso: #00983,#00998
- Bitfields for AMD-640 SDRAM Control Register:
- Bit(s) Description (Table 01000)
- 7 enable 4-bank interleave for 64-Mbit SDRAMs (when bit 5 set)
- 6 enable SDRAM burst write
- 5 enable SDRAM bank interleave
- (when set, reduces 3-line burst from 8-1-1-1-3-1-1-1-3-1-1-1 to 8-1...)
- 4 reserved (0)
- 3 SDRAM CAS# latency (0 = latency 2, 1 = latency 3)
- 2-0 SDRAM Operation Mode
- 000 normal SDRAM
- 001 enable NOP command
- 010 convert CPU-to-DRAM cycles into All Banks Precharge command
- 011 convert CPU-to-DRAM cycles into commands on MA[11:0]
- 100 enable CAS#-before-RAS# cycles
- other reserved
- SeeAlso: #00983,#00999
- Bitfields for AMD-640 DRAM Drive Strength Control register:
- Bit(s) Description (Table 01001)
- 7 bank decoding test (1="for production test only. DO NOT SET.")
- 6 strength of MA[1:0] drive (0 = 12ma, 1 = 24ma)
- 5 function of N17 and M17 pins
- 0 N17 is RAS5#, M17 is RAS4#
- 1 N17 is MA1, M17 is MA0
- 4 force SMM mode (when set, act as if SMIACT# is asserted)
- 3 strength of SDRAM command lines (0 = 12ma, 1 = 24ma)
- 2 strength of MA[13:2] and WEx# drive (0 = 12ma, 1 = 24ma)
- 1 strength of CAS# drive (0 = 12ma, 1 = 24ma)
- 0 strength of RAS# drive (0 = 12ma, 1 = 24ma)
- SeeAlso: #00983,#00999
- Bitfields for AMD-640 ECC Control Register:
- Bit(s) Description (Table 01002)
- 7 ECC mode select (0 = parity, 1 = ECC)
- 6 reserved (0)
- 5 assert SERR# for ECC multibit errors
- 4 assert SERR# for ECC single-bit errors
- 3 add 1T for SDRAM read cycles with ECC (required when ECC mode enabled)
- 2 enable ECC for banks 5 and 4
- 1 enable ECC for banks 3 and 2
- 0 enable ECC for banks 1 and 0
- SeeAlso: #00983,#01003
- Bitfields for AMD-640 ECC Status Register:
- Bit(s) Description (Table 01003)
- 7 multi-bit error detected (write-clear)
- 6-4 number of DRAM bank containing multi-bit error (write-clear)
- 3 single-bit error detected (write-clear)
- 2-0 number of DRAM bank containing single-bit error (write-clear)
- SeeAlso: #00983,#01002
- Bitfields for AMD-640 PCI Buffer Control register:
- Bit(s) Description (Table 01004)
- 7 enable CPU-to-PCI posted writes
- 6 enable PCI-to-DRAM posted writes
- 5 enable PCI-to-DRAM prefetch
- 4-2 reserved (0)
- 1 disable PCI retry for processor QuadWord access
- 0 CPU-to-PCI buffer flushing
- 0 flushing has priority over bus grants
- 1 bus-grant to another PCI initiator has priority over flushing
- SeeAlso: #00983
- Bitfields for AMD-640 CPU-to-PCI Flow Control 1 register:
- Bit(s) Description (Table 01005)
- 7,3 PCI burst control
- 00 no bursts, every write goes to write buffer
- 01 burst writes placed in write buffer, non-burst writes sent to PCI
- bus immediately after write buffers flushed
- 1x all writes go to write buffer; bursting performed for burstable
- transactions
- 6 enable byte merge
- 5 reserved (1)
- 4 enable posted PCI I/O cycle writes
- 2 eanble fast back-to-back PCI writes
- 1 enable quick frame generation (FRAME# asserted one clock early)
- 0 add one wait state to IRDY#
- SeeAlso: #00983,#01006
- Bitfields for AMD-640 CPU-to-PCI Flow Control 2 register:
- Bit(s) Description (Table 01006)
- 7 unsuccessful retry (16 or 64 times) has occurred (write-clear)
- 6 retry timeout action
- 0 retry continuously, recording status
- 1 flush buffer; if reading, return FFFFFFFFh
- 5-4 retry count and backoff
- 00 retry twice, backoff processor
- 01 retry 16 times, set bit 7 on failure
- 10 retry four times, backoff processor
- 11 retry 64 times, set bit 7 on failure
- 3 discard failed data from write buffer when retry fails
- 2 backoff processor if PCI read retry fails
- 1 assert FRAME# one cycle earlier than indicated by offset 71h bit 1
- 0 reduce TRDY#-to-BRDY# by one HCLK on processor reads of PCI target
- SeeAlso: #00983,#01005,#01007
- Bitfields for AMD-640 PCI Target Control register:
- Bit(s) Description (Table 01007)
- 7 slow memory decoding (must be set if fast back-to-back cycles enabled)
- 6 add one wait state to TRDY# response on reads
- 5 add one wait state to TRDY# response on writes
- 4 reserved (0)
- 3 assert STOP# after write timeout
- 2 assert STOP# after read timeout
- 1 enable sampling of PCI LOCK# pin
- 0 force AMD-640 to initiate PCI arbitration if FRAM# not asserted within
- 16 PCI clocks of last GNT#
- SeeAlso: #00983,#01006,#01008
- Bitfields for AMD-640 PCI Initiator Control register:
- Bit(s) Description (Table 01008)
- 7 enable enhanced PCI commands (Memory Read Line, Memory Read Multiple,
- and Memory Write and Invalidate)
- 6 enable single-write byte merging
- 5-0 reserved (0)
- SeeAlso: #00983,#01007,#01008
- Bitfields for AMD-640 PCI Arbitration Control 1 register:
- Bit(s) Description (Table 01009)
- 7 arbitration priority
- 0 = fixed (high-to-low is REQ1#, REQ2#, REQ3#, REQ4#, PREQ#, and CPU)
- 1 = fair (round-robin) arbitration
- 6 arbitration mode
- 0 arbitrate at end of REQ#
- 1 arbitrate at end of each FRAME# (allows pre-emption by a
- higher-priority initiator)
- 5-4 reserved (0)
- 3-0 number of idle time periods of 32 PCI clocks before arbitration is
- forced (0000 disables timeout)
- SeeAlso: #00983,#01008,#01010
- Bitfields for AMD-640 PCI Arbitration Control 2 register:
- Bit(s) Description (Table 01010)
- 7 enable initiator priority rotation
- =0 use arbitration priority as set by offset 75h bit 7 (see #01009)
- 6 reserved (0)
- 5-4 initiator priority rotation control
- 00 disabled (use offset 75h bit 7 setting)
- 01 grant to processor after every PCI initiator grant
- 10 grant to processor after every other PCI initiator grant
- 11 grant to processor after every three PCI initiator grants
- 3-0 reserved (0)
- SeeAlso: #00983,#01009
- Format of AMD-645 Peripheral Bus Controller, function 0 (PCI-ISA bridge) data:
- Offset Size Description (Table 01011)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 1106h, device ID 0586h)
- 40h BYTE ISA bus control (see #01012)
- 41h BYTE ISA Test Mode (see #01013)
- 42h BYTE ISA clock control (see #01014)
- 43h BYTE ROM Decode Control (see #01015)
- 44h BYTE keyboard controller control (see #01016)
- 45h BYTE Type F DMA control (see #01017)
- 46h BYTE Miscellaneous control 1 (see #01018)
- 47h BYTE Miscellaneous control 2 (see #01019)
- 48h BYTE Miscellaneous control 3 (see #01020)
- 49h BYTE reserved
- 4Ah BYTE IDE interrupt routing (see #01021)
- 4Bh BYTE reserved
- 4Ch BYTE PCI memory hole bottom, bits 23-16
- 4Dh BYTE PCI memory hole top, bits 23-16
- (if top is <= bottom, hole is disabled)
- 4Eh WORD DMA/Master memory access control 3 (see #01022)
- 50h BYTE PnP DRQ Routing (see #01023)
- 51h 3 BYTEs reserved
- 54h BYTE PCI IRQ Edge/Level selection (see #01024)
- 55h BYTE PnP Routing for external MIRQ0/1 (see #01025)
- 56h BYTE PnP Routing for PCI INTB/INTA (see #01027)
- 57h BYTE PnP Routing for PCI INTD/INTC (see #01028)
- 58h BYTE PnP Routing for external MIRQ2 (see #01029)
- 59h BYTE MIRQ pin configuration (see #01030)
- 5Ah BYTE XD Power-On Strap Options (see #01031)
- 5Bh BYTE internal RTC test mode (see #01032)
- 5Ch 4 BYTEs reserved
- 60h WORD distributed DMA, channel 0 base address/enable (see #01033)
- 62h WORD distributed DMA, channel 1 base address/enable (see #01033)
- 64h WORD distributed DMA, channel 2 base address/enable (see #01033)
- 66h WORD distributed DMA, channel 3 base address/enable (see #01033)
- 68h WORD reserved
- 6Ah WORD distributed DMA, channel 5 base address/enable (see #01033)
- 6Ch WORD distributed DMA, channel 6 base address/enable (see #01033)
- 6Eh WORD distributed DMA, channel 7 base address/enable (see #01033)
- 70h 144 BYTEs reserved
- SeeAlso: #00817,#00983,#01034,#01046
- Bitfields for AMD-645 ISA Bus Control register:
- Bit(s) Description (Table 01012)
- 7 extra delay on ISA commands (default is disabled)
- 6 enable extended ISA bus ready (default is disabled)
- 5 ISA slave wait states (0=4 wait states [default], 1=5 wait states)
- 4 chipset I/O wait states (0=2 wait states [default], 1=4 wait states)
- 3 I/O recovery time enabled
- 2 enable extended ALE
- 1 no ROM wait states (default is clear, 1 wait state)
- 0 enable ROM writes
- SeeAlso: #01011
- Bitfields for AMD-645 ISA Test Mode register:
- Bit(s) Description (Table 01013)
- 7-6 reserved (0)
- 5 enable fast reset via PORT 0092h
- 4 reserved (0)
- 3 double DMA clock (=0 DMA at 1/2 ISA clock, =1 DMA at full ISA clock)
- 2-0 reserved (0)
- SeeAlso: #01011,#01012,#01014
- Bitfields for AMD-645 ISA Clock Control register:
- Bit(s) Description (Table 01014)
- 7 disable "Latch IO16#"
- 6-4 reserved (0)
- 3 enable ISA Bus clock select via bits 2-0 (=0 use PCLK/4)
- 2-0 ISA Bus clock select
- 000 PCLK/3 (default)
- 001 PCLK/2
- 010 PCLK/4
- 011 PCLK/6
- 100 PCLK/5
- 101 PCLK/10
- 110 PCLK/12
- 111 OSC/2
- Note: in order to safely change the ISA clock, bit 3 must first be cleared,
- then bits 2-0 may be changed, and finally bit 3 can be set again
- SeeAlso: #01011,#01013
- Bitfields for AMD-645 ROM Decode Control register:
- Bit(s) Description (Table 01015)
- 7 enable 64K ROM at FFFE00000h-FFFEFFFFh
- 6 enable 384K ROM at FFF80000h-FFFDFFFFh
- 5 enable 32K ROM at E8000h-EFFFFh
- 4 enable 32K ROM at E0000h-E7FFFh
- 3 enable 32K ROM at D8000h-D8FFFh
- 2 enable 32K ROM at D0000h-D7FFFh
- 1 enable 32K ROM at C8000h-CFFFFh
- 0 enable 32K ROM at C0000h-C7FFFh
- SeeAlso: #01011
- Bitfields for AMD-645 Keyboard Controller Control register:
- Bit(s) Description (Table 01016)
- 7-4 reserved (0)
- 3 enable Mouse Lock
- 2-0 reserved (0)
- SeeAlso: #01011
- Bitfields for AMD-645 Type-F DMA Control register:
- Bit(s) Description (Table 01017)
- 7 enable line buffer from ISA Master/DMA to PCI
- 6-4 enable Type F timing on DMA Channels 7, 6, 5
- 3-0 enable Type F timing on DMA Channels 3-0
- SeeAlso: #01011
- Bitfields for AMD-645 Miscellaneous Control 1 register:
- Bit(s) Description (Table 01018)
- 7-5 reserved (0)
- 4 enable command register test mode
- (when set, PCI offset 04h bits 0-1 become writable and bit 3 read-only)
- 3-2 reserved (0)
- 1 disallow interruptions of PCI burst reads
- 0 enable posted memory writes
- SeeAlso: #01011,#01019,#01020
- Bitfields for AMD-645 Miscellaneous Control 2 register:
- Bit(s) Description (Table 01019)
- 7 use INIT as CPU reset signal instead of CPURST
- 6 enable PCI transaction delay
- 5 enable ports 04D0h-04D1h (per EISA spec)
- 4 enable interrupt controller shadow register
- 3 reserved (0)
- 2 enable write delay transaction time-out timer
- 1 enable read delay transaction time-out timer
- 0 software PCI reset -- set to cause a PCI reset via PCIRST pin
- SeeAlso: #01011,#01018,#01020,PORT 04D0h
- Bitfields for AMD-645 Miscellaneous Control 3 register:
- Bit(s) Description (Table 01020)
- 7-4 reserved (0)
- 3 disable RTC PORT 0074h and PORT 0075h
- 2 disable integrated USB controller
- 1 disable integrated IDE controller
- 0 add 512K to offset 4Eh bits 15-12 at top of PCI memory
- SeeAlso: #01011,#01018,#01019,PORT 0074h"AMD-645"
- Bitfields for AMD-645 IDE Interrupt Routing register:
- Bit(s) Description (Table 01021)
- 7 wait for PGNT before Grant to ISA Master/DMA
- 6 port 00xxh bus select (0=access via SD bus, 1=access via XD bus)
- 5-4 reserved (0)
- 3-2 secondary IDE channel IRQ (same encoding as primary)
- 1-0 primary IDE channel IRQ
- 00 IRQ14 (default for primary)
- 01 IRQ15 (default for secondary)
- 10 IRQ10
- 11 IRQ11
- SeeAlso: #01011
- Bitfields for AMD-645 DMA/Master Memory Access Control 3 register:
- Bit(s) Description (Table 01022)
- 15-12 top of PCI memory for ISA DMA/Master access, bits 23-20, less 1
- 11 accesses to E0000h-EFFFFh forwarded to PCI
- 10 accesses to A0000h-BFFFFh forwarded to PCI
- 9 accesses to 80000h-9FFFFh forwarded to PCI
- 8 accesses to 00000h-7FFFFh forwarded to PCI
- 7 accesses to DC000h-DFFFFh forwarded to PCI
- 6 accesses to D8000h-DBFFFh forwarded to PCI
- 5 accesses to D4000h-D7FFFh forwarded to PCI
- 4 accesses to D0000h-D3FFFh forwarded to PCI
- 3 accesses to CC000h-CFFFFh forwarded to PCI
- 2 accesses to C8000h-CBFFFh forwarded to PCI
- 1 accesses to C4000h-C7FFFh forwarded to PCI
- 0 accesses to C0000h-C3FFFh forwarded to PCI
- SeeAlso: #01011
- Bitfields for AMD-645 PnP DRQ Routing register:
- Bit(s) Description (Table 01023)
- 7-0 reserved (always read 04h)
- SeeAlso: #01011,#01024
- Bitfields for AMD-645 PCI IRQ Edge/Level Select register:
- Bit(s) Description (Table 01024)
- 7-4 reserved
- 3 PIRQA# is edge-sensitive rather than level-sensitive
- 2 PIRQB# is edge-sensitive
- 1 PIRQC# is edge-sensitive
- 0 PIRQD# is edge-sensitive
- SeeAlso: #01011,#01023,#01025
- Bitfields for AMD-645 PnP IRQ Routing 1 register:
- Bit(s) Description (Table 01025)
- 7-4 routing for MIRQ1 (see #01026)
- 3-0 routing for MIRQ0 (see #01026)
- SeeAlso: #01011,#01024
- (Table 01026)
- Values for AMD-645 IRQ routing:
- 0000 disabled
- 0001 IRQ1
- 0010 reserved
- 0011 IRQ3
- ...
- 0111 IRQ7
- 1000 reserved
- 1001 IRQ9
- ...
- 1100 IRQ12
- 1101 reserved
- 1110 IRQ14
- 1111 IRQ15
- SeeAlso: #01025,#01027,#01028,#01029
- Bitfields for AMD-645 PnP IRQ Routing 2 register:
- Bit(s) Description (Table 01027)
- 7-4 routing for PIRQB# (see #01026)
- 3-0 routing for PIRQA# (see #01026)
- SeeAlso: #01025,#01028,#01029
- Bitfields for AMD-645 PnP IRQ Routing 3 register:
- Bit(s) Description (Table 01028)
- 7-4 routing for PIRQD# (see #01026)
- 3-0 routing for PIRQC# (see #01026)
- SeeAlso: #01025,#01027,#01029
- Bitfields for AMD-645 PnP IRQ Routing 4 register:
- Bit(s) Description (Table 01029)
- 7-4 reserved
- 3-0 routing for MIRQ2# (see #01026)
- SeeAlso: #01025,#01027,#01028
- Bitfields for AMD-645 MIRQ Pin Configuration register:
- Bit(s) Description (Table 01030)
- 7-3 reserved (0)
- 2 select MASTER# instead of MIRQ2
- 1 select KEYLOCK instead of MIRQ1
- 0 select APICCS# instead of MIRQ0
- SeeAlso: #01011,#01029
- Bitfields for AMD-645 XD Power-Up Strap Options register:
- Bit(s) Description (Table 01031)
- 7-4 Keyboard RP16-RP13
- 3 reserved (0)
- 2 enable internal RTC
- 1 enable internal PS/2 mouse
- 0 enable internal keyboard controller
- Note: the default value of this register is latched from external pins at
- power-up
- SeeAlso: #01011
- Bitfields for AMD-645 Internal RTC Test Mode register:
- Bit(s) Description (Table 01032)
- 7-2 reserved (0)
- 1 enable access to internal RTC's RAM when RTC is disabled
- (see PORT 0074h"AMD-645")
- 0 reserved (0)
- SeeAlso: #01011
- Bitfields for AMD-645 Distributed DMA Base/Enable register:
- Bit(s) Description (Table 01033)
- 15-4 base address bits 15-4 for Channel N
- 3 enable DMA channel
- 2-0 reserved (0)
- SeeAlso: #01011
- Format of AMD-645 Peripheral Bus Controller, function 1 (IDE Control) data:
- Offset Size Description (Table 01034)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 1106h [VIA Technologies], device ID 0571h)
- 09h BYTE programming interface
- bit 7: Master IDE capability
- bits 6-4: reserved (0)
- bit 3: secondary channel supports operating mode selection
- bit 2: use native PCI mode, not compatibility mode for sec. ch.
- bit 1: primary channel supports operating mode selection
- bit 0: use native PCI mode, not compatibility mode for pri. ch.
- 10h DWORD primary data/command base address
- 14h DWORD primary control/status base address
- 18h DWORD secondary data/command base address
- 1Ch DWORD secondary control/status base address
- 20h DWORD bus master control base address (default 0000CC01h)
- 40h BYTE chip enable (see #01035)
- 41h BYTE IDE configuration (see #01036)
- 42h BYTE reserved ("do not program")
- 43h BYTE FIFO configuration (see #01037)
- 44h BYTE miscellaneous control 1 (see #01038)
- 45h BYTE miscellaneous control 2 (see #01039)
- 46h BYTE miscellaneous control 3 (see #01040)
- 47h BYTE unused???
- 48h DWORD drive timing control (see #01041)
- 4Ch BYTE address setup time (see #01042)
- 4Dh BYTE reserved ("do not program")
- 4Eh BYTE secondary non-01F0h port access timing (see #01043)
- 4Fh BYTE primary non-01F0h port access timing (see #01043)
- 50h BYTE UltraDMA/33 extended timing control, Sec. Drive 1 (see #01044)
- 51h BYTE UltraDMA/33 extended timing control, Sec. Drive 0 (see #01044)
- 52h BYTE UltraDMA/33 extended timing control, Pri. Drive 1 (see #01044)
- 53h BYTE UltraDMA/33 extended timing control, Pri. Drive 0 (see #01044)
- 54h 4 BYTEs reserved
- 58h DWORD "reserved"
- (appears to be an additional set of drive timing controls)
- 5Ch 4 BYTEs ???
- 60h WORD primary sector size (see #01045)
- 62h 6 BYTEs reserved
- 68h WORD secondary sector size (see #01045)
- 6Ah 150 BYTEs reserved
- Note: the AMD-645 IDE controller is compatible with the SFF 8038i v1.0 spec
- SeeAlso: #00817,#01011,#01046
- Bitfields for AMD-645 IDE Chip Enable register:
- Bit(s) Description (Table 01035)
- 7-2 reserved (00001)
- 1 enable primary IDE channel
- 0 enable secondary IDE channel
- SeeAlso: #01034,#01036
- Bitfields for AMD-645 IDE Configuration register :
- Bit(s) Description (Table 01036)
- 7 enable primary IDE read-prefetch buffer
- 6 enable primary IDE post write buffer
- 5 enable secondary IDE read-prefetch buffer
- 4 enable secondary IDE post write buffer
- 3-0 reserved (0110)
- SeeAlso: #01034,#01035,3813
- Bitfields for AMD-645 IDE FIFO Configuration register:
- Bit(s) Description (Table 01037)
- 7 reserved (0)
- 6-5 FIFO configuration
- 00 primary channel = 16, secondary channel = 0
- 01/10 primary channel = 8, secondary channel = 8
- 11 primary channel = 0, secondary channel = 16
- 4 reserved (1)
- 3-2 primary channel FIFO threshold
- 00 = completely full
- 01 = 3/4 full
- 10 = 1/2 full
- 11 = 1/4 full
- 1-0 secondary channel FIFO threshold (same settings as bits 3-2)
- SeeAlso: #01034,#01036
- Bitfields for AMD-645 IDE Miscellaneous Control 1 register:
- Bit(s) Description (Table 01038)
- 7 reserved (0)
- 6 number of wait states on Master Read Cycle IRDY#
- 5 number of wait states on Master Write Cycle IRDY#
- 4 enable 1/2 clock advance on FIFO output
- 3 enable bus-master IDE status register read retry
- 2-0 reserved (0)
- SeeAlso: #01034,#01039,#01040
- Bitfields for AMD-645 IDE Miscellaneous Control 2 register:
- Bit(s) Description (Table 01039)
- 7 reserved (0)
- 6 swap interrupts between the two IDE channels
- 5-0 reserved (0)
- SeeAlso: #01034,#01038,#01040
- Bitfields for AMD-645 IDE Miscellaneous Control 3 register:
- Bit(s) Description (Table 01040)
- 7 enable FIFO flush for read DMA on primary channel interrupt
- 6 enable FIFO flush for read DMA on secondary channel interrupt
- 5 enable FIFO flush for each sector on primary channel
- 4 enable FIFO flush for each sector on secondary channel
- 3-2 reserved
- 1-0 maximum DRDY# pulse width
- 00 unlimited
- 01 64 PCI clocks
- 10 128 PCI clocks
- 11 192 PCI clocks
- SeeAlso: #01034,#01038,#01039
- Bitfields for AMD-645 IDE Drive Timing Control register:
- Bit(s) Description (Table 01041)
- 31-28 primary drive 0 active DIOR#/DIOW# pulse width
- 27-24 primary drive 0 DIOR#/DIOW# recovery time (PCI clocks, less 1)
- 23-20 primary drive 1 active pulse width (PCI clocks, less 1)
- 19-16 primary drive 1 recovery time
- 15-12 secondary drive 0 active pulse width
- 11-8 secondary drive 0 recovery time
- 7-4 secondary drive 1 active pulse width
- 3-0 secondary drive 1 recover time (PCI clocks, less 1)
- SeeAlso: #01034,#01042
- Bitfields for AMD-645 IDE Address Setup Time register:
- Bit(s) Description (Table 01042)
- 7-6 primary drive 0 address setup time
- 00 = 1T
- 01 = 2T
- 10 = 3T
- 11 = 4T
- 5-4 primary drive 1 address setup time (same values as above)
- 3-2 secondary drive 0 address setup time
- 1-0 secondary drive 1 address setup time
- SeeAlso: #01034,#01041
- Bitfields for AMD-645 Non-01F0h Port Access Timing register:
- Bit(s) Description (Table 01043)
- 7-4 width of DIOR#/DIOW# active pulse in PCI clocks (less 1)
- 3-0 DIOR#/DIOW# recovery time in PCI clocks (less 1)
- SeeAlso: #01011
- Bitfields for AMD-645 UltraDMA/33 Extended Timing Control register:
- Bit(s) Description (Table 01044)
- 7 method for enabling UltraDMA mode on drive
- 0 using "Set Feature" command
- 1 using bit 6 of this register
- 6 enable UltraDMA mode for drive
- 5 UltraDMA transfer mode
- 0 UltraDMA DMA mode
- 1 UltraDMA PIO mode
- 4-2 reserved (0)
- 1-0 drive cycle time
- 00 = 2T
- ...
- 11 = 5T
- SeeAlso: #01011
- Bitfields for AMD-645 Sector Size register:
- Bit(s) Description (Table 01045)
- 15-12 reserved
- 11-0 sector size in bytes (default 200h)
- SeeAlso: #01011
- Format of AMD-645 Peripheral Bus Controller, function 2 (USB Controller) data:
- Offset Size Description (Table 01046)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 1106h, device ID 3038h)
- 20h DWORD base address of USB I/O ports (see PORT xxxxh"AMD-645 - USB"
- 40h BYTE miscellaneous control 1 (see #01047)
- 41h BYTE miscellaneous control 2 (see #01048)
- 42h 2 BYTEs reserved
- 44h 3 BYTEs reserved ("do not program")
- 47h BYTE reserved
- 48h 24 BYTEs reserved
- 60h BYTE USB release number (read-only, 10h)
- 61h 95 BYTEs reserved
- C0h WORD USB legacy support (read-only, 2000h)
- C2h 62 BYTEs reserved
- SeeAlso: #00817,#00983,#01011,#01034,#01049
- Bitfields for AMD-645 USB Miscellaneous Control 1 register:
- Bit(s) Description (Table 01047)
- 7 PCI memory commands
- 0 support memory-read-line, memory-read-multiple, and
- memory-write-and-invalidate
- 1 memory read and memory write commands only
- 6 do not disable port on EOF babble
- 5 eanble PCI parity checking and PERR# generation
- 4 reserved (0)
- 3 USB data length
- 0 allow TD length up to 1280 bytes
- 1 limit to 1023
- 2 enable USB power management
- 1 DMA limited to 8-DW burst instead of 16-DW
- 0 insert one PCI wait state
- SeeAlso: #01046,#01048
- Bitfields for AMD-645 USB Miscellaneous Control 2 register:
- Bit(s) Description (Table 01048)
- 7-3 reserved (0)
- 2 only trap port 60h/64h bits when trap-enable bits are set
- 1 do not pass A20GATE command sequence (from UHCI) through I/O port 64h
- 0 reserved (0)
- SeeAlso: #01046,#01047,PORT 0064h
- Format of AMD-645 Peripheral Bus Controller, function 3 (Power Mgmt) data:
- Offset Size Description (Table 01049)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 1106h, device ID 3040h)
- 20h DWORD base address for I/O ports (see PORT xxxxh"AMD-645")
- 40h BYTE pin configuration (see #01050)
- 41h BYTE general configuration (see #01051)
- 42h BYTE SCI interrupt configuration (see #01052)
- 43h BYTE reserved
- 44h WORD primary interrupt channel
- bit 2 is reserved; setting any other bit N makes IRQN the
- primary interrupt channel
- 46h WORD secondary interrupt channel
- bit 2 is reserved; setting any other bit N makes IRQN the
- secondary interrupt channel
- 48h 8 BYTEs unused???
- 50h DWORD GP timer control (see #01053)
- 54h 13 BYTEs reserved
- 61h BYTE programming interface read value (value to be returned by
- configuration register 09h) (write-only)
- 62h BYTE subclass read value (value to be returned by
- configuration register 0Ah) (write-only)
- 63h BYTE base class read value (value to be returned by configuration
- register 0Bh) (write-only)
- 64h 156 BYTEs reserved
- SeeAlso: #00817,#00983,#01011,#01034,#01046,#01049
- Bitfields for AMD-645 PM Pin Configuration register:
- Bit(s) Description (Table 01050)
- 7 GPIO4 configuration (0 = Pin136 is GPO_WE, 1 = Pin136 is GPIO4)
- 6 GPIO3 configuration (0 = Pin92 is GPI_RE#, 1 = Pin92 is GPIO3)
- 5-0 reserved (0)
- SeeAlso: #01049,#01051
- Bitfields for AMD-645 PM General Configuration register:
- Bit(s) Description (Table 01051)
- 7 enable debounce of PWRBTN# input
- 6 enable ACPI timer reset
- 5-4 reserved ("do not program")
- 3 select ACPI timer size (0 = 24 bits, 1 = 32 bits)
- 2 enable PCI Frame Activation as Resume Event im power state C2
- 1 clock-throttling cycle time
- 0 = 32 usec clock, 512 usec cycle time (default)
- 1 = 1 msec clock 16 msec cycle time
- 0 reserved ("do not program")
- SeeAlso: #01049,#01050,MEM xxxxh:xxx0h"ACPI"
- Bitfields for AMD-645 PM SCI Interrupt Configuration register:
- Bit(s) Description (Table 01052)
- 7-4 reserved (0)
- 3-0 interrupt assignment
- 0000 disabled
- else IRQ number (except IRQ2 is reserved)
- SeeAlso: #01049
- Bitfields for AMD-645 PM GP Timer Control register:
- Bit(s) Description (Table 01053)
- 31-30 power-conservation mode timer
- 00 = 1/16 sec
- 01 = 1/8 sec
- 10 = 1 sec
- 11 = 1 minute
- 29 (read) set when system is in power-conservation mode
- 28 enable power-conservation mode
- 27-26 secondary event timer
- 00 = 2 msec
- 01 = 64 msec
- 10 = 1/2 sec
- 11 = 0.25 msec after EOI
- 25 secondary event occurred, secondary event timer is counting down
- 24 enable secondary event timer
- 23-16 GP1 Timer count (see bits 5-4)
- 15-8 GP0 Timer count (see bits 1-0)
- 7 start GP1 timer
- 6 automatically reload GP1 timer after counting down to 0
- 5-4 time base for GP1 timer
- 00 disabled
- 01 = 32 microseconds
- 10 = 1 second
- 11 = 1 minute
- 3 start GP0 timer
- 2 automatically reload GP0 timer after counting down to 0
- 1-0 time base for GP0 timer
- 00 disabled
- 01 = 1/16 second
- 10 = 1 second
- 11 = 1 minute
- SeeAlso: #01049
- --------X-1AB10ASF8086-----------------------
- INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION DWORD (Intel devices)
- AX = B10Ah subfn 8086h
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- DI = register number (0000h-00FFh) (see #00878)
- Return: CF clear if successful
- ECX = dword read
- CF set on error
- AH = status (00h,87h) (see #00729)
- EAX, EBX, ECX, and EDX may be modified
- all other flags (except IF) may be modified
- Notes: this function may require up to 1024 byte of stack; it will not enable
- interrupts if they were disabled before making the call
- the meanings of BL and BH on entry were exchanged between the initial
- drafts of the specification and final implementation
- SeeAlso: AX=B10Ah,AX=B10Ah/SF=1106h,AX=B10Dh
- Format of PCI Configuration data for Intel 82375 EISA Bridge:
- Offset Size Description (Table 01054)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 8086h, device ID 0482h)
- (revision numbers: 03h = 82375EB, 04h = 82375SB)
- 40h BYTE PCI Control
- !!!intel\29047704.pdf pg. 32
- 41h BYTE PCI Arbiter Control
- 42h BYTE PCI Arbiter Priority Control
- 43h BYTE PCI Arbiter Priority Control Extension
- 44h BYTE MEMCS# Control
- 45h BYTE MEMCS# Bottom of Hole
- 46h BYTE MEMCS# Top of Hole
- 47h BYTE MEMCS# Top of Memory
- 48h WORD EISA Address Decode Control 1
- 4Ah 2 BYTEs reserved
- 4Ch BYTE ISA I/O Recovery Time Control
- 4Dh 7 BYTEs reserved
- 54h BYTE MEMCS# Attribute Register #1
- 55h BYTE MEMCS# Attribute Register #2
- 56h BYTE MEMCS# Attribute Register #3
- 57h BYTE reserved
- 58h BYTE PCI Decode Control
- 59h BYTE reserved
- 5Ah BYTE EISA Address Decode Control 2
- 5Bh BYTE reserved
- 5Ch BYTE EISA-to-PCI Memory Region Attributes
- 5Dh 3 BYTEs reserved
- 60h 4 DWORDs EISA-to-PCI Memory Region Address registers 1-4
- 70h 4 DWORDs EISA-to-PCI I/O Region Address registers 1-4
- 80h WORD BIOS Timer base address
- 82h 2 BYTEs reserved
- 84h BYTE EISA Latency Timer Control Register
- 85h 3 BYTEs reserved
- 88h DWORD PCEB Test Control Register ("DO NOT WRITE")
- 8Ch 116 BYTEs reserved
- SeeAlso: #00878,#01055
- Format of PCI Configuration data for Intel 82434LX/NX Cache/DRAM Controller:
- Offset Size Description (Table 01055)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 8086h, device ID 04A3h)
- (revision numbers: 01h/03h are 82434LX, 1xh are 82434NX)
- (command register only supports bits 8,6,2,1,0)
- 40h 16 BYTEs unused (hard-wired to 00h)
- 44h BYTE ??? (AMI BIOS writes 00h)
- 45h BYTE ??? (AMI BIOS writes 00h)
- 50h BYTE Host CPU Selection (see #01056)
- 51h BYTE deturbo frequency control register
- when deturbo mode is selected (see PORT 0CF9h), the chipset
- places a hold on the memory bus for a fraction of the
- time inversely proportional to the value in this register
- by comparing it against a free-running 8-bit counter counting
- at 1/8 the CPU clock speed
- (i.e. C0h = 1/4, 80h = 1/2, 40h = 3/4, 20h = 7/8, etc.)
- (only bits 7-6 writable, bits 5-0 hardwired to 0)
- 52h BYTE Secondary Cache Control (see #01057)
- 53h BYTE Host Read/Write Buffer Control (see #01058)
- 54h BYTE PCI Read/Write Buffer Control
- bits 7-3: reserved
- bit 2: LBXs connected to TRDY#
- bit 1: enable PCI burst writes
- bit 0: enable PCI-to-memory posted writes
- 55h 2 BYTEs reserved
- 57h BYTE DRAM Control (see #01059)
- 58h BYTE DRAM Timing (see also #01117)
- bits 7-2: reserved
- bit 1: (NX only) RAS# Wait State
- bit 0: CAS# Wait State (one extra wait state before CAS#
- within burst cycle)
- 59h 7 BYTEs Programmable Attribute Map registers 0-6 (see #01118)
- 60h 8 BYTEs DRAM Row Boundary registers 0-7
- (chip revisions numbered < 10h [LX] only support six rows of
- DRAM)
- each register N indicates the amount of cumulative amount of
- memory in SIMM banks 0-N, in multiples of 1M; offset 67h
- (65h on 82434LX's) contains the total amount of memory
- installed in the system; on the 82434NX, two additional
- bits are concatenated to each row boundary from the DRAM Row
- Boundary Extension registers to allow up to 1024M of memory
- to be specified (though only 512M are supported)
- 68h 4 BYTEs (NX only) DRAM Row Boundary Extension registers
- each nybble is concatenated with the corresponding DRAM Row
- Boundary register to form a 12-bit boundary value (of which
- only the low 10 bits are actually used)
- 6Ch DWORD reserved (hardwired to 00000000h)
- 70h BYTE Error Command (see #01060)
- 71h BYTE Error Status (see #01061)
- 72h BYTE System Management RAM control (see also #01123)
- bits 7-6: reserved
- bit 5: map SMM-mode memory (64K) into address space when bits
- 2-0 = 010 (default 3000h:0000h; can be changed by
- first SMM event)
- bit 4: close SMRAM space (allows data accesses to be forwarded
- to PCI bus while execuding SMM code)
- bit 3: lock SMRAM space (can't be cleared by software)
- bits 2-0: SMRAM memory address (010 = Axxxxh, 011 = Bxxxxh)
- 73h 5 BYTEs reserved
- 78h WORD Memory Space Gap
- bit 15: enable ISA hole
- bits 14-12: size of ISA hole in MB (less 1); must be power of 2
- bits 11-8: reserved
- bits 7-4: bottom of ISA memory hole in MB
- (must be multiple of gap size)
- bits 3-0: reserved
- 7Ah 2 BYTEs reserved
- 7Ch DWORD Frame Buffer Range (see #01062)
- 80h 128 BYTEs reserved
- Note: the 82434NX is part of the Intel Neptune chipset
- SeeAlso: #01064,#01083
- Bitfields for Intel 82434LX/NX Host CPU Selection:
- Bit(s) Description (Table 01056)
- 7-5 host CPU type
- LX: hardwired to 100 (Pentium)
- NX: "reserved" (101 on RB's system)
- 4-3 reserved
- 2 enable L1 cache
- 1-0 Host Operating Frequency (set according to external bus speed)
- 00: reserved
- 01: 50 MHz
- 10: 60 MHz
- 11: 66 MHz
- (LX: bit 1 reserved, only 60/66 MHz supported)
- SeeAlso: #01055,#01057
- Bitfields for Intel 82434LX/NX Secondary Cache Control:
- Bit(s) Description (Table 01057)
- 7-6 secondary cache size
- 00 none
- 01 reserved
- 10 256K
- 11 512K
- 5 SRAM type
- 0 standard SRAMs
- 1 burst SRAMs
- 4 secondary cache allocation
- 0 cache only CPU reads of memory with CACHE# asserted
- 1 cache all CPU reads of cacheable memory
- 3 Cache Byte Control
- 0 use single write enable and per-byte select lines
- 1 use per-byte write enables on the cache
- 2 (NX only) SRAM connectivity
- 0 disable CCS[1:0]# / CCS1# functionality
- 1 enable CCS[1:0]# functionality to de-select async SRAMs, placing them
- in a low-power standby mode
- 1 enable CCS1# functionality for burst SRAMs, indicating the lack of an
- external address latch
- 1 (LX only) Secondary Cache Write Policy
- 0 write-through
- 1 write-back (NX is always in write-back mode)
- 0 Secondary Cache Enable
- SeeAlso: #01055,#01058
- Bitfields for Intel 82434LX/NX Host Read/Write Buffer Control:
- Bit(s) Description (Table 01058)
- 7-4 reserved
- 3 enable read-around-write
- 2 reserved
- 1 enable CPU-to-PCI posted writes
- 0 (LX only) enable CPU-to-memory posted writes
- (NX always posts memory writes)
- SeeAlso: #01055,#01057
- Bitfields for Intel 82434LX/NX DRAM Control:
- Bit(s) Description (Table 01059)
- 7-6 (NX only) DRAM burst timing
- 00 X-4-4-4 read/write (default)
- 01 X-4-4-4 read, X-3-3-3 write
- 10 reserved
- 11 X-3-3-3 read/write
- 5 parity error mask
- 4 0-Active RAS# mode
- 3 SMRAM enable (must be set to enable reg 72h)
- 2 Burst-of-Four Refresh
- 1 Refresh Type
- =0 RAS#-only
- =1 CAS#-before-RAS#
- 0 DRAM Refresh Enable
- SeeAlso: #01055
- Bitfields for Intel 82434LX/NX Error Command register:
- Bit(s) Description (Table 01060)
- 7 assert SERR# on receiving target abort
- 6 assert SERR# on PCI data-write parity error
- 5 (NX only) assert SERR# on PCI data-read parity error
- 4 (NX only) assert SERR# on PCI address parity error
- 3 (NX only) assert PERR# on data parity error
- 2 enable L2 cache parity
- 1 enable SERR# on DRAM/L2 cache data parity error
- 0 assert PEN# on data reads; allow CPU to signal parity error via PCHK#
- Notes: PCI command register bit 6 is master enable for bit 3;
- PCI cmd bits 6 and 8 are the master enable for bits 7-4 and 1
- bits 1-0 = 10 is not permitted
- SeeAlso: #01055,#01061
- Bitfields for Intel 82434LX/NX Error Status register:
- Bit(s) Description (Table 01061)
- 7 reserved
- 6 PCI-write detected parity error
- 5 (NX only) PCI-read detected parity error
- 4 (NX only) PCI address parity error detected
- 3 main memory data parity error
- 2 L2 cache data parity error
- 1 reserved
- 0 Shutdown cycle detected
- Note: clear status bits by writing a 'one' bit to each bit to be cleared
- SeeAlso: #01060,#01055
- Bitfields for Intel 82434LX/NX Frame Buffer Range register:
- Bit(s) Description (Table 01062)
- 31-20 buffer offset (in 1MB increments; must be multiple of buffer set set
- by bits 3-0)
- 19-14 reserved
- 13 enable byte merging
- 12 128K VGA-range Attribute Enable
- when set, bits 13,9,7 also apply to VGA memory range (Axxxx-Bxxxx)
- 11-10 reserved
- 9 no lock requests
- 8 reserved
- 7 enable transparent bufer writes
- 6-4 reserved
- 3-0 buffer size in MB (less 1); must be power of 2
- Note: if bits 31-20=0, the frame buffer feature is disabled
- SeeAlso: #01055
- Format of PCI Configuration data for Intel 82424 Cache Controller:
- Offset Size Description (Table 01063)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 8086h, device ID 0483h)
- 40h BYTE bus number
- 41h BYTE subordinate bus number
- 42h BYTE disconnect timer
- 50h BYTE host CPU selection
- 51h BYTE deturbo frequency control
- when deturbo mode is selected (see PORT 0CF9h), the chipset
- places a hold on the memory bus for a fraction of the
- time inversely proportional to the value in this register
- (i.e. C0h = 1/4, 80h = 1/2, 40h = 3/4, 20h = 7/8, etc.)
- 52h BYTE secondary cache control
- 53h BYTE write buffer control
- 54h BYTE PCI features control
- 55h BYTE DRAM Operation Mode Select
- 56h BYTE System Exception Handling
- 57h BYTE SMM Control Register
- 58h BYTE reserved
- 59h 7 BYTEs Programmable Attribute Map registers 0-6 (see also #01118)
- 60h 4 BYTEs DRAM Row Boundary registers 0-3
- each register N indicates amount of memory in rows 0-N (each
- row is 64 bits wide)
- boundary register 3 (offset 63h) contains the total system
- memory, which may not exceed 128M
- 64h 4 BYTEs unused???
- 68h WORD Memory Hole-0
- 6Ah WORD Memory Hole-1
- Note: the above field names are those given by EduWARE's PCI Configuration
- Manager v1.2
- SeeAlso: #01055,#01083,#01108
- Format of PCI Configuration data for Intel 82378 and 82379 ISA Bridges:
- Offset Size Description (Table 01064)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 8086h, device ID 0484h)
- (revision ID:
- bits 7-4: reserved
- bits 3-0: revision
- 0011 82378ZB A0-step
- 1000 82379AB A0-step)
- 40h BYTE PCI Control (see #01065)
- 41h BYTE PCI Arbiter Control (see #01066)
- 42h BYTE PCI Arbiter Priority Control (see #01067)
- 43h BYTE (82378ZB) PCI Arbiter Priority Control Extension Register
- bit 0: bank 3 fixed priority mode select (see also #01067)
- =0 REQ2# has higher priority
- =1 REQ3# has higher priority
- 44h BYTE MEMCS# Control (see #01068)
- 45h BYTE MEMCS# Bottom of Hole (address bits 23-16)
- 46h BYTE MEMCS# Top of Hole (address bits 23-16)
- 47h BYTE MEMCS# Top of Memory
- (address bits 28-21 == size in 2M increments, less 1)
- 48h BYTE ISA Address Decoder Control (see #01069)
- 49h BYTE ISA Address Decoder ROM Block Enable (see #01070)
- 4Ah BYTE ISA Address Decoder Bottom of Hole (address bits 23-16)
- 4Bh BYTE ISA Address Decoder Top of Hole (address bits 23-16)
- 4Ch BYTE ISA Controller Recovery Time (see #01087)
- 4Dh BYTE ISA Clock Divisor (see #01071)
- 4Eh BYTE Utility Bus Chip Select Enable A (see #01072)
- 4Fh BYTE Utility Bus Chip Select Enable B (see #01073)
- 50h 4 BYTEs reserved
- 54h BYTE MEMCS# Attribute Register #1 (see #01074)
- attributes for 16K blocks from C0000h-CFFFFh
- 55h BYTE MEMCS# Attribute Register #2 (see #01074)
- attributes for 16K blocks from D0000h-DFFFFh
- 56h BYTE MEMCS# Attribute Register #3 (see #01074)
- attributes for 16K blocks from E0000h-EFFFFh
- 57h BYTE (82378) Scatter/Gather Relocation Base Adress (see #01075)
- (82379AB) reserved
- 58h 8 BYTEs reserved
- 60h BYTE (82378ZB) IRQ0# Route Control (see #01076)
- 61h BYTE (82378ZB) IRQ1# Route Control (see #01076)
- 62h BYTE (82378ZB) IRQ2# Route Control (see #01076)
- 63h BYTE (82378ZB) IRQ3# Route Control (see #01076)
- 64h 12 BYTEs reserved
- 70h BYTE (82378) reserved
- (82379AB, write-only) PIC/APIC Configuration Control
- (see #01077)
- 71h BYTE (82378) reserved
- (82379AB, write-only) APIC Base Address Relocation
- (see #01078,MEM FEC00000h)
- 72h 14 BYTEs reserved
- 80h WORD BIOS timer base address (see PORT 0078h)
- bits 15-2 are bits 15-2 of BIOS timer port address
- bit 1: reserved (0)
- bit 0: timer enabled (if disabled, other bits ignored)
- 82h 30 BYTEs unused???
- A0h BYTE SMI Control (see #01079)
- A1h BYTE reserved
- A2h WORD SMI Enable (see #01080)
- A4h DWORD System Event Enable (SEE) (see #01081)
- A8h BYTE Fast-Off Timer (in minutes)
- A9h BYTE reserved
- AAh WORD active SMI Requests (see #01082)
- ACh BYTE (82378ZB) Clock Throttle STPCLK# Low Timer
- duration of STPCLK# low period in 32 microsecond units
- ADh BYTE reserved
- AEh BYTE (82378ZB) Clock Throttle STPCLK# High Timer
- duration of STPCLK# high period in 32 microsecond units
- AFh 81 BYTEs reserved
- SeeAlso: #01055,#01167,PORT 040Ah"82378ZB"
- Bitfields for Intel 82378/82379 PCI Control:
- Bit(s) Description (Table 01065)
- 7 reserved (0)
- 6 DMA Reserved Page Register Aliasing Control
- =0 alias PORT 80h-8Fh to PORT 90h-9Fh
- 5 Interrupt Acknowledge Enable
- =0 ignore INTA cycles on the PCI bus, but still allow 8259 register
- access and poll-mode functions
- 4-3 Subtractive Decoding Sample Point
- 00 slow sample point
- 01 typical
- 10 fast sample point
- 11 reserved
- 2 PCI Posted Write Buffer Enable
- 1 ISA Master Line Buffer Configuration
- =0 single-transaction mode
- =1 eight-byte mode for ISA bus master transfers
- 0 DMA Line Buffer Configuration
- =0 single-transaction mode
- =1 eight-byte mode
- SeeAlso: #01064,#01066
- Bitfields for Intel 82378/82379 PCI Arbiter Control:
- Bit(s) Description (Table 01066)
- 7-5 reserveed (0)
- 4-3 Master Retry Timer
- 00 disabled (retries never masked)
- 01 retries unmasked after 16 PCICLKs
- 10 retries unmasked after 32 PCICLKs
- 11 retries unmasked after 64 PCICLKs
- 2 Bus Park
- =1 park CPUREQ# on PCI bus when 82378 detects PCI bus idle
- 1 Bus Lock
- =0 resource lock
- =1 Bus lock
- 0 Guaranteed Access Time
- =1 ISA bus masters are guaranteed 2.5 microsecond CHRDY time-out
- SeeAlso: #01064,#01065
- Bitfields for Intel 82378/82379 PCI Arbiter Priority Control:
- Bit(s) Description (Table 01067)
- 7 bank 3 rotate control
- 6 bank 2 rotate control
- 5 bank 1 rotate control
- 4 bank 0 rotate control
- 3 bank 2 fixed priority mode select B
- 2 bank 2 fixed priority mode select A
- 1 bank 1 fixed priority mode select
- 0 bank 0 fixed priority mode select
- Note: if both 'rotate' and 'fixed' bits are set for a given bank,
- that bank will be in rotating-priority mode
- SeeAlso: #01064,#01066
- Bitfields for Intel 82378/82379 MEMCS# Control Register:
- Bit(s) Description (Table 01068)
- 7-5 reserved (0)
- 4 MEMCS# Master Enable
- 3 write enable for 0F0000h-0FFFFFh
- 2 read enable for 0F0000h-0FFFFFh
- 1 write enable for 080000h-09FFFFh
- 0 read enable for 080000h-09FFFFh
- SeeAlso: #01064
- Bitfields for Intel 82378/82379 ISA Address Decoder Control Register:
- Bit(s) Description (Table 01069)
- 7-4 ISA memory cycle forwarding to PCI
- 0000-1111 = 1M-16M top of ISA memory; any accesses above programmed
- limit are forwarded to PCI bus
- 3-0 ISA/DMA memory cycle to PCI bus enables
- bit 3: 896K-960K (E000h-EFFFh)
- bit 2: 640K-768K (A000h-BFFFh)
- bit 1: 512K-640K (8000h-9FFFh)
- bit 0: 0K-512K (0000h-7FFFh)
- SeeAlso: #01064,#01070
- Bitfields for Intel 82378/82379 ISA Address Decoder ROM Block Enable:
- Bit(s) Description (Table 01070)
- 7 enable 880K-896K (EC00h-EFFFh)
- 6 enable 864K-880K (E800h-EBFFh)
- 5 enable 848K-864K (E400h-E7FFh)
- 4 enable 832K-848K (E000h-E3FFh)
- 3 enable 816K-832K (DC00h-DFFFh)
- 2 enabel 800K-816K (D800h-DBFFh)
- 1 enable 784K-800K (D400h-D7FFh)
- 0 enable 768K-784K (D000h-D3FFh)
- Note: ISA accesses within any enabled ranges are forwarded to the PCI bus
- SeeAlso: #01064,#01069
- Bitfields for Intel 82378/82379 ISA Clock Divisor Register:
- Bit(s) Description (Table 01071)
- 7 reserved (0)
- 6 enable positive decode of upper 64K BIOS at 000F0000h-000FFFFFh,
- FFEF0000h-FFEFFFFFh, and FFFF0000h-FFFFFFFFh
- 5 coprocessor error enable
- =1 FERR# is driven onto IRQ13
- 4 IRQ12/Mouse Function Enable
- =0 standard IRQ12
- =1 mouse
- 3 RSTDRV enable
- =1 assert RSTDRV until this bit cleared (for use in changing ISA bus
- speed)
- 2-0 PCICLK-to-ISA SYSCLK divisor
- 000 4
- 001 3
- other reserved
- SeeAlso: #01064,#01069
- Bitfields for Intel 82378/82379 Utility Bus Chip Select A Register:
- Bit(s) Description (Table 01072)
- 7 extended BIOS enable (decode accesses to FFF80000h-FFFDFFFFh)
- 6 lower BIOS enable (decode accesses to E0000h-EFFFFh,
- FFEE0000h-FFEEFFFFh, and FFFE0000h-FFFEFFFFh)
- 5 (82378ZB) floppy disk primary/secondary address select
- =1 use secondary address range
- 4 (82378ZB) IDE Decode enable
- 3,2 floppy disk address locations enable
- 1 keyboard controller address location enable
- enables I/O addresses 60h,62h,64h,66h (82378ZB) or 60h/64h (82379AB)
- 0 RTC address location enabled
- =1 enable decode of I/O ports 70h-77h
- SeeAlso: #01064,#01089,#01073
- Bitfields for Intel 82378ZB/82379 Utility Bus Chip Select B Register:
- Bit(s) Description (Table 01073)
- 7 configuration RAM decode enable
- =1 permit write accesses to I/O port 0C00h and r/w to ports 08xxh
- 6 enable PORT 0092h
- 5-4 parallel port enable
- 00 LPT1 (ports 03BCh-03BFh)
- 01 LPT2 (ports 0378h-037Fh)
- 10 LPT3 (ports 0278h-027Fh)
- 11 disabled
- 3-2 serial port B enable
- 00 COM1 (03F8h-03FFh)
- 01 COM2 (02F8h-02FFh)
- 10 reserved
- 11 port B disabled
- 1-0 serial port A enable
- 00 COM1 (03F8h-03FFh)
- 01 COM2 (02F8h-02FFh)
- 10 reserved
- 11 port A disabled
- Note: if both serial ports are set to the same address, port B is disabled
- SeeAlso: #01064,#01072,PORT 0092h
- Bitfields for Intel 82378/82379 MEMCS# Attribute Register 1/2/3:
- Bit(s) Description (Table 01074)
- 7 write-enable xC000h-xFFFFh expansion ROM
- 6 read-enable xC000h-xFFFFh expansion ROM
- 5 write-enable x8000h-xBFFFh expansion ROM
- 4 read-enable x8000h-xBFFFh expansion ROM
- 3 write-enable x4000h-x7FFFh expansion ROM
- 2 read-enable x4000h-x7FFFh expansion ROM
- 1 write-enable x0000h-x3FFFh expansion ROM
- 0 read-enable x0000h-x3FFFh expansion ROM
- Note: x = C/D/E depending on the attribute register
- SeeAlso: #01064
- Bitfields for Intel 82378ZB Scatter Gather Relocation Base Address:
- Bit(s) Description (Table 01075)
- 7-0 bits 15-8 of base address for scatter/gather I/O ports
- (default 04h; low 8 bits of address are always 10h-3Fh)
- SeeAlso: #01064,#01074,#01076,PORT 040Ah"82378ZB",#P0039
- Bitfields for Intel 82371/82378/82379 PCI IRQ Route Control Register:
- Bit(s) Description (Table 01076)
- 7 disable IRQ routing
- 6-4 reserved (0)
- 3-0 ISA IRQ number to which to route the PCI IRQ
- Note: IRQs 0-2, 8, and 13 are reserved
- SeeAlso: #01064,#01167,#01100
- Bitfields for Intel 82379AB PIC/APIC Configuration Control Register:
- Bit(s) Description (Table 01077)
- 7-2 reserved
- 1 SMI Routing Control
- =1 SMI via APIC
- =0 SMI via SMI# signal
- 0 INT Routing Control
- =1 INT disabled (requires that APIC be enabled)
- =0 INT enabled
- SeeAlso: #01064,#01078
- Bitfields for Intel 82379AB/82371 APIC Base Address Relocation:
- Bit(s) Description (Table 01078)
- 7 reserved
- 6 (82379AB) reserved
- 6 (82371) A12 mask
- =1 ignore address bit 12 in APIC address
- 5-0 bits 15-10 of APIC memory address (ORed with FEC00000h to form base
- address)
- SeeAlso: #01064,#01167,#01077,MEM FEC00000h
- Bitfields for Intel 82378/82379 SMI Control Register:
- Bit(s) Description (Table 01079)
- 7 reserved
- 6 (82378) reserved
- (82379) require Stop Grant bus cycle before asserting STPCLK#
- 5-4 reserved
- 3 Fast-Off Timer freeze
- 2 STPCLK# scaling enable
- =1 enable Clock Throttle bytes in PCI configuration space
- 1 STPCLK# signal enable
- =1 assert STPCLK# on read from PORT 00B2h
- 0 SMI# Gate
- =1 enable SMI# on system management interrupt
- Notes: bit 1 is cleared either with an explicit write of 0 here, or by any
- write to PORT 00B2h
- bit 0 does not affect the recording of SMI events, so a pending SMI
- will cause an immediate SMI# when the bit is set
- SeeAlso: #01064,#01080,#01081,#01222,PORT 00B2h
- Bitfields for Intel 82371/82378/82379 SMI Enable Register:
- Bit(s) Description (Table 01080)
- 15-9 reserved
- 8 (82371SB only) Legacy USB SMI enable
- 7 APMC Write SMI enable
- =1 generate SMI on write to PORT 00B2h
- 6 EXTSMI# SMI enable
- 5 Fast-Off Timer SMI enable
- 4 IRQ12 (PS/2 mouse) SMI enable
- 3 IRQ8 (RTC alarm) SMI enable
- 2 IRQ4 (COM1/COM3) SMI enable
- 1 IRQ3 (COM2/COM4) SMI enable
- 0 IRQ1 (keyboard) SMI enable
- SeeAlso: #01064,#01079,#01081,#01167,PORT 00B2h
- Bitfields for Intel 82371/82378/82379 System Event Enable Register:
- Bit(s) Description (Table 01081)
- 31 Fast-Off SMI enable (system and break events)
- 30 (82379 only) Fast-Off Interrupt Enable (break events only)
- 30 (82371 only) INTR enable (break events only)
- 29 Fast-Off NMI enable (system and break events)
- 28 (82371SB only) Fast-Off APIC enable (break events only)
- 27 (82379 only) Fast-Off COM enable (system events only)
- 26 (82379 only) Fast-Off LPT enable (system events only)
- 25 (82379 only) Fast-Off Drive enable (system events only)
- 24 (82379 only) Fast-Off DMA enable (system events only)
- 23-16 reserved
- 15-3 Fast-Off IRQ (15-3) enable (system and break events)
- 2 reserved
- 1-0 Fast-Off IRQ (1-0) enable (system and break events)
- Note: any enabled system event restarts the Fast-Off Timer, thus preventing
- a Fast-Off powerdown; any enabled break event awakens the system from
- powerdown
- SeeAlso: #01064,#01079,#01080,#01082,#01167
- Bitfields for Intel 82371/82378/82379 SMI Request Register:
- Bit(s) Description (Table 01082)
- 15-9 reserved
- 8 (82371SB only) Legacy USB SMI status
- 7 APM SMI Status (write to PORT 00B2h triggered SMI)
- 6 EXTSMI# SMI Status (EXTSMI# line triggered SMI)
- 5 Fast-Off Timer expired
- 4 IRQ12 triggered SMI
- 3 IRQ8 triggered SMI
- 2 IRQ4 triggered SMI
- 1 IRQ3 triggered SMI
- 0 IRQ1 triggered SMI
- Note: software must explicitly reset the appropriate bits
- SeeAlso: #01064,#01081,#01167
- Format of PCI Configuration data for Intel 82425EX PSC:
- Offset Size Description (Table 01083)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 8086h, device ID 0486h)
- 40h BYTE PCI control register (see #01084)
- 41h 3 BYTEs ???
- 44h BYTE host device control register (see #01085)
- 45h 3 BYTEs ???
- 48h WORD PCI local-bus IDE control register (see #01086)
- 4Ah 2 BYTEs ???
- 4Ch BYTE ISA I/O recovery timer register (see #01087)
- 4Dh BYTE part revision register (see #01088)
- 4Eh BYTE X-bus Chip Select A register (see #01089)
- 4Fh BYTE X-bus Chip Select B register??? (see also #01102)
- 50h BYTE host select register
- 51h BYTE deturbo frequency control register
- when deturbo mode is selected (see PORT 0CF9h), the chipset
- places a hold on the memory bus for a fraction of the
- time inversely proportional to the value in this register
- (i.e. C0h = 1/4, 80h = 1/2, 40h = 3/4, 20h = 7/8, etc.)
- 52h WORD secondary (L2) cache control register
- 54h 2 BYTEs ???
- 56h WORD DRAM control register
- 58h BYTE ???
- 59h 7 BYTEs Programmable Attribute Map (PAM) registers 0-6 (see also #01118)
- 60h 5 BYTEs DRAM row boundary registers 0-4
- each register N indicates amount of memory in rows 0-N (each
- row is 64 bits wide); the fifth row of memory (if
- implemented) must contain either 8M or 16M, depending on
- system configuration
- boundary register 4 (offset 64h) contains the total system
- memory, which may not exceed 128M
- 65h BYTE ???
- 66h BYTE PIRQ route control register 0
- 67h BYTE PIRQ route control register 1
- 68h BYTE DRAM memory hole register
- 69h BYTE top of memory
- 6Ah 6 BYTEs ???
- 70h BYTE SMRAM control register
- 71h 47 BYTEs unused???
- A0h BYTE SMI control register
- A1h BYTE ???
- A2h WORD SMI enable register
- A4h DWORD system event enable
- A8h BYTE fast off timer register
- A9h BYTE ???
- AAh WORD SMI request register
- ACh BYTE clock throttle STPCLK# low timer
- ADh BYTE unused???
- AEh BYTE clock throttle STPCLK# high timer
- AFh BYTE ???
- B0h 80 BYTEs unused???
- SeeAlso: #00878,#01063,#01055,#01108,#01167
- Bitfields for Intel 82425EX PCI control register:
- Bit(s) Description (Table 01084)
- 0 CPU-to-PCI byte merging
- 1 CPU-to-PCI bursting enable
- 2 PCI posted-write buffer enable
- 4-3 subtractive decode sampling point
- 00 slow
- 01 typical
- 10 fast
- 11 reserved
- 5 DRAM parity error enable
- 6 target abort error enable
- 7 reserved
- SeeAlso: #01083,#01085,#01086,#01087
- Bitfields for Intel 82425EX host device control register:
- Bit(s) Description (Table 01085)
- 0 HRDY# maximum signal sampling point
- 0 slow timing
- 1 fast timing
- 1 HDEV# signal sampling point
- 0 slow timing
- 1 fast timing
- 2 host device present
- 7-3 reserved
- SeeAlso: #01083,#01084
- Bitfields for Intel 82425EX local-bus IDE control register:
- Bit(s) Description (Table 01086)
- 1-0 primary/secondary PCI IDE enable
- 00 IDE disabled
- 01 primary (ports 01F0h-01F7h,03F6,03F7h)
- 10 secondary (ports 0170h-017Fh,0376h,0377h)
- 11 reserved
- 3-2 fast timing bank drive select 1
- bit 2 = drive 0 enabled
- bit 3 = drive 1 enabled
- 5-4 IORDY sample point Enable Drive Select
- bit 4 = drive 0 enabled
- bit 5 = drive 1 enabled
- 7-6 reserved
- 9-8 IORDY sample point
- 00 6 clocks
- 01 5 clocks
- 10 4 clocks
- 11 3 clocks
- 12-10 recover time (000 = 8 PCI clocks, 001 = 7, ..., 101 = 3, 110/111 = 3)
- 15-13 reserved
- SeeAlso: #01083,#01084
- Bitfields for Intel chipset ISA I/O recovery timer register:
- Bit(s) Description (Table 01087)
- 7 (82425EX/82371) DMA reserved page register aliasing disable
- =0 ports 0090h-009Fh alias ports 0080h-008Fh
- =1 ports 0090h-009Fh forwarded to ISA bus
- 6 8-bit I/O recovery enable
- 5-3 8-bit I/O recovery time
- 000 = 8 SYSCLKs
- 001-110 = 1-7 SYSCLKs
- 2 16-bit I/O recovery enable
- 1-0 16-bit I/O recovery time
- 00 = 4 SYSCLKs
- 01-11 = 1-3 SYSCLKs
- SeeAlso: #01064,#01083,#01084,#01167,#01170
- Bitfields for Intel 82425EX part revision register:
- Bit(s) Description (Table 01088)
- 7-5 fabrication house identifier (read-only)
- 4 E0000h-EFFFFh ISA-to-main-memory forwarding enabled
- 3-0 revision ID (read-only)
- SeeAlso: #01083,#01089
- Bitfields for Intel 82425EX/82371 X-bus Chip Select A register:
- Bit(s) Description (Table 01089)
- 7 extended BIOS enabled at FFF80000h-FFFDFFFFh
- 6 lower (E000h) BIOS enabled
- 5 trigger IRQ13 on FERR#
- 4 IRQ12 mouse function enabled
- 3 (82371AB only) alias accesses to PORTs 63h/65h/67h to 61h
- (else) reserved (0)
- 2 BIOS memory write protect
- 1 keyboard controller addresses (60h,62h,64h,66h) enabled
- 0 RTC addresses (70h-77h) enabled
- SeeAlso: #01083,#01167,#01088,#01102
- Format of PCI Configuration Data for Intel 82380AB PCI-ISA Bridge:
- Offset Size Description (Table 01090)
- 00h 64 BYTEs header (see #00878)
- (vender ID 8086h, device ID 123Ch)
- 40h BYTE I/O Recovery Register (see #01091)
- 41h BYTE reserved
- 42h BYTE MISA Error Status (see #01092)
- 43h 189 BYTEs reserved
- SeeAlso: #00873,#01093
- Bitfields for Intel 82380AB I/O Recovery Register:
- Bit(s) Description (Table 01091)
- 7 SYSCLK select
- 0 SYSCLK = PCICLK/4
- 1 SYSCLK = PCICLK/3
- 6 enable 8-bit I/O recovery
- 5-3 additional recovery time for 8-bit I/O cycles, in SYSCLKs
- 2 enable 16-bit I/O recovery
- 1-0 additional recovery time for 16-bit I/O cycles, in SYSCLKs
- SeeAlso: #01090
- Bitfields for Intel 82380AB MISA error status:
- Bit(s) Description (Table 01092)
- 7-3 reserved
- 2 IOCHK# asserted
- 1 reserved
- 0 illegal byte lane combination for PCI I/O detected
- SeeAlso: #01090
- Format of PCI Configuration data for Intel 82380FB PCI-PCI Bridge (MPCI2):
- Offset Size Description (Table 01093)
- 00h 64 BYTEs header type 1 [bridge] (see #00878)
- (vendor ID 8086h, device ID 124Bh)
- 40h BYTE Connector Control (see #01094)
- 41h BYTE Connector Event (see #01095)
- 42h 2 BYTEs reserved
- 44h WORD Serial Bus Interface/Burst Enable (see #01096)
- 46h BYTE MPCI2 Miscellaneous Status (see #01097)
- 47h 5 BYTEs reserved
- 4Ch WORD Special Message Encode
- encoded message portion of Special Cycle forwarded by MPCI2
- 4Eh 178 BYTEs reserved
- SeeAlso: #00873,#01090
- Bitfields for Intel 82380FB Connector Control register:
- Bit(s) Description (Table 01094)
- 7-4 reserved
- 3 QEN2 output signal
- 2 QEN1 output signal
- 1-0 reserved
- SeeAlso: #01093
- Bitfields for Intel 82380FB Connector Event register:
- Bit(s) Description (Table 01095)
- 7 reserved (1)
- 6 activate power-no suspend
- 5 (read-only) inverted state of MISAEN pin
- 4 (read-only) inverted state of DSTYP pin
- 3 undocking permit
- software should set this bit for at least 32 microseconds; when this
- bit is then cleared, the MPCI2 pulses the OPENACK signal for 256 us
- to tell external hardware to "eject" the notebook
- 2 reserved (1)
- 1 system is docked
- 0 open requested
- SeeAlso: #01093
- Bitfields for Intel 82380FB Serial Interface/Burst Enable register:
- Bit(s) Description (Table 01096)
- 15-13 reserved
- 12 enable SERR# on discarding of posted write data
- 11 reserved
- 10 SDATA signal direction (0 = output, 1 = input)
- 9 enable write posting
- 8 enable read bursting
- 7 enable upstream blind prefetching
- 6 reserved
- 5 SDATA signal state (read when bit 10 set, write when bit 10 clear)
- 4 SDIN signal state
- 3 do not pulse P_SERR# when S_PERR# is asserted
- 2 cascade/frame determination delay (0 = 20 P_CLKs, 1 = 10 P_CLKs)
- 1 serial EEPROM chip select
- 0 serial EEPROM clock
- SeeAlso: #01093
- Bitfields for Intel 82380FB MPCI2 Miscellaneous Status register:
- Bit(s) Description (Table 01097)
- 7-1 reserved
- 0 (write-clear) P_SERR# was asserted due to invalidation of posted write
- SeeAlso: #01093
- Format of PCI Configuration Data for Intel 82439HX:
- Offset Size Description (Table 01098)
- 00h 64 BYTEs header (see #00878)
- (vender ID 8086h, device ID 1250h)
- (revision ID 00h = A0 stepping)
- 40h 16 BYTEs reserved
- 50h BYTE PCI Control (see #01110)
- 51h BYTE reserved
- 52h BYTE cache control (see #01112)
- 53h 3 BYTEs reserved
- 56h BYTE DRAM extended control (see #01115)
- 57h BYTE DRAM control (see #01116)
- 58h BYTE DRAM timing (see #01117)
- 59h 7 BYTEs Programmable Attribute Map registers 0-6 (see #01118)
- 60h 8 BYTEs DRAM Row Boundary registers 0-7
- each register N indicates cumulative amount of memory in rows
- 0-N (each 64 bits wide), in 4M units
- 68h BYTE DRAM Row Type (see #01119)
- bits 0-7 indicate whether each row 0-7 contains EDO DRAM
- instead of page-mode DRAM
- 69h BYTE ???
- 6Ah 8 BYTEs reserved
- 72h BYTE System Management RAM control (see #01123)
- 73h 29 BYTEs reserved
- 90h BYTE Error Command (see #01126)
- 91h BYTE Error Status (see #01127) (read-only)
- 92h BYTE Error Syndrome (read-only)
- latest non-zero ECC error syndrome
- 93h 109 BYTEs reserved
- SeeAlso: #01108,#01229
- Format of PCI Configuration Data for Intel 82439TX "MTXC":
- Offset Size Description (Table 01099)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 8086h, device ID 7100h)
- (revision ID 00h = A0 stepping)
- 40h 15 BYTEs reserved
- 4Fh BYTE Arbitration Control register (see #01109)
- 50h BYTE PCI Control register (see #01110)
- 51h BYTE reserved
- 52h BYTE Cache Control register (see #01112)
- 53h BYTE Extended Cache Control register (see #01113)
- 54h WORD SDRAM Control Register (see #01114)
- 56h BYTE DRAM Extended Control register (see #01115)
- 57h BYTE DRAM Control register (see #01116)
- 58h BYTE DRAM Timing register (see #01117)
- 59h 7 BYTEs Programmable Attribute Map registers 0-6 (see #01118)
- 60h 6 BYTEs DRAM Row Boundary registers 0-5
- each register N indicates cumulative amount of memory in rows
- 0-N (each 64 bits wide), in 4M units
- 66h BYTE reserved
- 67h BYTE DRAM Row Type High register (see #01213)
- 68h BYTE DRAM Row Type Low register (see #01119)
- 69h 7 BYTEs reserved
- 70h BYTE Multi-Transaction Timer register
- number of PCLKs guaranteed to the current agent before the
- 82439TX will grant the bus to another PCI agent on request
- 71h BYTE Extended System Management RAM Control register (see #01149)
- 72h BYTE System Management RAM Control register (see #01123)
- 73h 6 BYTEs reserved
- 79h BYTE Miscellaneous Control register (see #01128)
- 7Ah 134 BYTEs reserved
- Note: The Intel 82439TX chipset uses PCI configuration mechanism #1
- SeeAlso: #00873,PORT 0CF8h
- Format of PCI Configuration Data for Intel 82371AB (PIIX4), ISA Bridge:
- Offset Size Description (Table 01100)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 8086h, device ID 7110h)
- 40h 12 BYTEs reserved
- 4Ch BYTE ISA I/O recovery timer (see #01101)
- 4Dh BYTE reserved
- 4Eh WORD X-Bus Chip Select (see #01089,#01102)
- 50h 16 BYTEs reserved
- 60h BYTE PIRQA route control (see #01076)
- 61h BYTE PIRQB route control (see #01076)
- 62h BYTE PIRQC route control (see #01076)
- 63h BYTE PIRQD route control (see #01076)
- !!!intel\29056201.pdf p.59
- 64h BYTE serial IRQ control
- 65h 4 BYTEs reserved???
- 69h BYTE top of memory
- 6Ah WORD miscellaneous status
- 6Ch 10 BYTEs reserved???
- 76h BYTE motherboard device DMA control 0
- 77h BYTE motherboard device DMA control 1
- 78h 9 BYTEs reserved???
- 80h BYTE APIC base address relocation
- 81h BYTE reserved???
- 82h BYTE deterministic latency control
- 83h 13 BYTEs reserved???
- 90h WORD PCI DMA configuration
- 92h WORD distributed DMA (channels 0-3) slave base pointer
- 94h WORD distributed DMA (channels 5-7) slave base pointer
- 96h 26 BYTEs reserved???
- B0h DWORD general configuration
- B4h 23 BYTEs reserved???
- CBh BYTE real-time clock configuration
- CCh 52 BYTEs reserved
- SeeAlso: #00873,#01103,#01104,#01105
- Bitfields for Intel PIIX4 ISA I/O recovery timer:
- Bit(s) Description (Table 01101)
- 7 disable aliasing PORTs 90h-9Fh into 80h-8Fh (except PORT 0092h)
- 6 enable 8-bit I/O recover timer in bits 5-3
- 5-3 additional 8-bit I/O recovery time (added to 3.5 SYSCLK minimum)
- 000 = 8 SYSCLKs, else N SYSCLKs
- 2 enable 16-bit I/O recovery timer in bits 1-0
- 1-0 additional 16-bit I/O recovery time (added to 3.5 SYSCLK minimum)
- 00 = 3 SYSCLKs
- 01 = 1 SYSCLK
- 10 = 2 SYSCLKs
- 11 = 4 SYSCLKs
- SeeAlso: #01100
- Bitfields for Intel 82371 X-Bus Chip Select Enable (high byte):
- Bit(s) Description (Table 01102)
- 7-3 reserved
- 2 (82371AB) enable positive PCI decode for Micro Controller at PORTs 62h
- and 66h
- 1 (82371AB) enable one-megabyte extended BIOS (FFF00000h-FFF7FFFFh are
- forwarded to ISA bus, aliased to top of 16M region)
- 0 enable I/O APIC
- SeeAlso: #01089
- Format of PCI Configuration Data for Intel 82371AB (PIIX4), IDE Controller:
- Offset Size Description (Table 01103)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 8086h, device ID 7111h)
- 20h DWORD I/O base address (for 16 contiguous PORTs)
- !!!intel\29056201.pdf p.89
- 40h WORD primary channel timing register
- 42h WORD secondary channel timing register
- 44h BYTE slave IDE timing
- 45h 3 BYTEs reserved???
- 48h BYTE Ultra DMA/33 control
- 49h BYTE reserved???
- 4Ah WORD Ultra DMA/33 timing
- 4Ch 180 BYTEs reserved
- SeeAlso: #00873,#01100,#01104,#01105
- Format of PCI Configuration Data for Intel 82371AB (PIIX4), USB Controller:
- Offset Size Description (Table 01104)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 8086h, device ID 7112h)
- 20h DWORD I/O base address (for 32 contiguous PORTs)
- !!!intel\29056201.pdf p.102
- 40h 32 BYTEs reserved
- 60h BYTE USB specification release number
- 00h pre-release 1.0
- 10h release 1.0
- 61h 95 BYTEs reserved
- C0h WORD legacy support
- C2h 61 BYTEs reserved
- FFh BYTE miscellaneous support
- SeeAlso: #00873,#01100,#01103,#01105
- Format of PCI Configuration Data for Intel 82371AB (PIIX4), Power Management:
- Offset Size Description (Table 01105)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 8086h, device ID 7113h)
- 40h DWORD base address of power-management I/O ports
- (same format as PCI base addresses; low bit hardwired to 1)
- 44h DWORD initial counts of device 0-11 idle timers
- 48h DWORD !!!intel\29056201.pdf p.117
- 4Ch DWORD general-purpose input control
- 50h 3 BYTEs "device resource D"
- 53h BYTE unused???
- 54h DWORD device activity event selection A
- 58h DWORD device activity event selection B
- 5Ch DWORD "device resource A"
- 60h DWORD "device resource B"
- 64h DWORD "device resource C"
- 68h 3 BYTEs "device resource E"
- 6Bh 5 BYTEs unused???
- 70h 3 BYTEs "device resource G"
- 73h BYTE unused???
- 74h DWORD "device resource H"
- 78h DWORD "device resource I"
- 7Ch DWORD "device resource J"
- 80h BYTE miscellaneous power management
- 81h 15 BYTEs unused???
- 90h DWORD base address for SMBus I/O ports
- (same format as PCI base addresses; low bit hardwired to 1)
- 94h ...
- D2h BYTE SMBus host configuration
- D3h BYTE SMBus slave command
- D4h BYTE SMBus slave shadow port 1 address
- D5h BYTE SMBus slave shadow port 2 address
- D6h BYTE SMBus revision
- D7h
- SeeAlso: #00873,#01100,#01103,#01104
- Format of PCI Configuration Data for Intel 82437MX:
- Offset Size Description (Table 01106)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 8086h, device ID 1235h)
- 40h 16 BYTEs reserved
- 50h BYTE PCI Control (see #01111)
- 51h BYTE reserved
- 52h BYTE cache control (see #01112)
- 53h 4 BYTEs reserved
- 57h BYTE DRAM Control (see #01116)
- 58h BYTE DRAM timing (see #01117)
- 59h 7 BYTEs Programmable Attribute Map registers 0-6 (see #01118)
- 60h 4 BYTEs DRAM Row Boundary Registers 0-3
- each register N indicates cumulative amount of memory in rows
- 0-N, in 4M units (each row is 64 bits wide)
- 64h 4 BYTEs reserved
- 68h BYTE DRAM Row Type (see #01121)
- 69h 9 BYTEs reserved
- 72h BYTE System Management RAM control (see #01123)
- 73h 141 BYTEs reserved
- SeeAlso: #01108,#01107
- Format of PCI Configuration Data for Intel 82437FX:
- Offset Size Description (Table 01107)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 8086h, device ID 122Dh) (see #00873)
- 40h 16 BYTEs reserved
- 50h BYTE PCI Control (see #01111)
- 51h BYTE reserved
- 52h BYTE cache control (see #01112)
- 53h 4 BYTEs reserved
- 57h BYTE DRAM Control (see #01116)
- 58h BYTE DRAM timing (see #01117)
- 59h 7 BYTEs Programmable Attribute Map registers 0-6 (see #01118)
- 60h 5 BYTEs DRAM Row Boundary Registers 0-4
- each register N indicates cumulative amount of memory in rows
- 0-N, in 4M units (each row is 64 bits wide)
- 65h 3 BYTEs reserved
- 68h BYTE DRAM Row Type (see #01121)
- 69h 9 BYTEs reserved
- 72h BYTE System Management RAM control (see #01123)
- 73h 141 BYTEs reserved
- SeeAlso: #01106,#01108
- Format of PCI Configuration Data for Intel 82437VX:
- Offset Size Description (Table 01108)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 8086h, device ID 7030h)
- (revision ID 00h = A0 stepping)
- 40h 15 BYTEs reserved
- 4Fh BYTE arbitration control (see #01109)
- 50h BYTE PCI Control (see #01110)
- 51h BYTE reserved
- 52h BYTE cache control (see #01112)
- 53h BYTE cache control extensions (see #01113)
- 54h WORD SDRAM control (see #01114)
- 55h BYTE reserved
- 56h BYTE DRAM extended control (see #01115)
- 57h BYTE DRAM control (see #01116)
- 58h BYTE DRAM timing (see #01117)
- 59h 7 BYTEs Programmable Attribute Map registers 0-6 (see #01118)
- 60h 5 BYTEs DRAM Row Boundary registers 0-4
- each register N indicates amount of memory in rows 0-N in 4M
- units (each row is 64 bits wide); the fifth row of memory (if
- implemented) must contain either 8M or 16M, depending on
- system configuration
- boundary register 4 (offset 64h) contains the total system
- memory, which may not exceed 128M
- 65h 2 BYTEs reserved
- 67h BYTE DRAM Row Type (high)
- defines memory type in DRAM row 4 in bits 4,0 (see #01119)
- 68h BYTE DRAM Row Type (low) (see #01119)
- 69h BYTE PCI TRDY timer (see #01122)
- 6Ah 6 BYTEs reserved
- 70h BYTE Multi-Transaction Timer
- number of PCLKs guaranteed to the current agent before the
- 82437 will grant the bus to another PCI agent on request
- 71h BYTE reserved
- 72h BYTE System Management RAM control (see #01123)
- 73h BYTE shared memory buffer control (see #01124)
- 74h BYTE shared memory buffer start address, in 0.5MB units
- end address is top-of-memory at offset 64h or start of an
- enabled PCI memory hole when top-of-memory is 16M
- 76h 2 BYTEs reserved
- 78h BYTE graphics controller latency timers (see #01125)
- 79h 135 BYTEs reserved
- SeeAlso: #00873,#01063,#01083,#01098,#01106
- Bitfields for Intel 82437VX,82439TX Arbitration Control register:
- Bit(s) Description (Table 01109)
- 7 extended CPU-to-PIIX PHLDA# signalling enabled
- 6-0 (82439TX) reserved
- 6-4 reserved
- 3 (82437VX) CPU priority enable
- =1 CPU gets PCI bus after two PCI slots
- =0 CPU gets PCI bus after three PCI slots
- 2-0 reserved
- SeeAlso: #01099,#01108,#01110
- Bitfields for Intel 82437VX,82439HX/TX PCI Control register:
- Bit(s) Description (Table 01110)
- 7-4 reserved (82437VX,82439TX)
- 7 DRAM ECC/Parity Select (82439HX)
- =1 ECC
- =0 parity
- 6 ECC TEST enable (82439HX)
- 5 shutdown to port 92h (82439HX)
- =1 send 01h to PORT 0092h on Shutdown special cycle on host bus
- 4 dual-processor NA# enable (82439HX)
- 3 PCI Concurrency Enable
- =1 CPU can access DRAM/L2 during non-PIIX PCI master cycles
- =0 CPU kept off PCI bus during all PCI bus-master cycles
- 2-0 reserved (82437VX,82439TX)
- 2 SERR# Output Type (82439HX only)
- =1 SERR# is actively driven high when negated
- =0 SERR# is PCI-compatible open-drain output
- 1 reserved
- 0 Global TXC Enable (82439HX only)
- =1 enable new 82439HX features
- SeeAlso: #01099,#01108,#01098,#01112,#01111
- Bitfields for Intel 82437FX/82437MX PCI Control register:
- Bit(s) Description (Table 01111)
- 7-5 CPU inactivity timer (in PCI Clocks less 1)
- 4 reserved
- 3 enable PCI Peer Concurrency
- =1 CPU can access DRAM/L2 during non-PIIX PCI master cycles
- =0 CPU kept off PCI bus during all PCI bus-master cycles
- 2 disable PCI Bursting
- 1 disable PCI Streaming
- 0 disable Bus Concurrency
- SeeAlso: #01106,#01107,#01110
- Bitfields for Intel 82437,82439HX/TX cache control register:
- Bit(s) Description (Table 01112)
- 7-6 secondary cache size
- 00 none
- 01 256K
- 10 512K
- 11 reserved
- 5-4 L2 RAM type
- 00 pipelined burst SRAM/DRAM
- 01 reserved
- 10 asynchronous SRAM (82437FX/MX/VX,82439TX only)
- 11 two banks of pipelined burst cache
- 3 NA disable
- =1 never assert NA# pin
- 2 reserved (82437FX/MX/VX,82439TX)
- 2 Extended Cacheability Enable (82439HX)
- =1 cache up to 512M
- =0 cache only first 64M
- 1 Secondary Cache Force Miss or Invalidate
- =1 force all memory accesses to bypass L2 cache
- 0 First Level Cache Enable
- =1 all memory accesses made non-cacheable by CPU L1 cache
- SeeAlso: #01099,#01108,#01098,#01110,#01113,#01114,#01106
- Bitfields for Intel 82437VX,82439TX cache control extensions register:
- Bit(s) Description (Table 01113)
- 7-6 reserved
- 5 DRAM cache detected (read-only)
- 4-0 DRAM cache refresh timer
- number of HCLKs 82437VX,82439TX remains idle during DRAM cache refresh
- SeeAlso: #01099,#01108,#01112
- Bitfields for Intel 82437VX,82439TX SDRAM control register:
- Bit(s) Description (Table 01114)
- 15-9 reserved
- 8-6 Special SDRAM Mode Select
- 000 normal mode (default)
- 001 enable NOP command
- 010 enable All Banks Precharge command
- 011 enable Mode Register Command
- 100 enable CBR Cycle
- 101 reserved
- 11x reserved
- 5 (82437VX) reserved
- 5 (82439TX) RAS# to CAS# Override
- =1 and CAS# latency=0, RAS# to CAS# is delayed 2 HCLKs
- =0 RAS# to CAS# delay determined solely by CAS# latency setting
- 4 CAS# latency
- =1 latency is 2 for all SDRAM cycles
- =0 latency is 3
- 3 RAS# precharge and refresh timing
- =0 slower
- =1 faster
- 2 reserved
- 1 (82437VX) reserved
- 1 (82439TX) 64-Mbit Technology Enable
- =1 supports 64M-bit SDRAM devices
- =0 supports 64M-bit EDO/FPM devices only
- 0 reserved
- SeeAlso: #01099,#01108,#01112
- Bitfields for Intel 82437VX,82439HX/TX DRAM extended control register:
- Bit(s) Description (Table 01115)
- 7 reserved
- 6 (VX/TX) refresh RAS# assertion length (0=4 clocks, 1=5 clocks)
- 5 (VX/TX) Fast EDO Path Select
- 4 Speculative Leadoff Disable
- 3 (82439HX) Turn-Around Insertion Enable
- =1 insert one extra clock of turnaround time after asserting MWE#
- 2-1 Memory Address Drive Strength
- 82437VX: 82439HX: 82439TX:
- 00 reserved 00 8mA 00 10mA/10mA (MA/MWE#)
- 01 10mA (default) 01 8mA/12mA (MAA/MWE#) 01 10mA/16mA (MA/MWE#)
- 10 16mA 10 12mA/8mA (MAA/MWE#) 10 16mA/10mA (MA/MWE#)
- 11 reserved 11 12mA 11 16mA/16mA (MA/MWE#)
- 0 (82437VX) DRAM Symmetry Detect Mode
- (used to force some memory address lines to fixed value for detecting
- DRAM symmetry row-by-row)
- 0 (82439HX) 64MBit Mode Enable
- =1 enable support for 64M SIMMs
- 0 (82439TX) reserved
- SeeAlso: #01099,#01108,#01098,#01116
- Bitfields for Intel 82437,82439HX/TX DRAM control register:
- Bit(s) Description (Table 01116)
- 7-6 DRAM Hole Enable
- 00 none
- 01 512K-640K
- 10 15M-16M (82437FX/MX/VX only)
- 11 14M-16M (82437VX,82439TX only)
- 5 reserved
- 4 (82437MX only) refresh type during Suspend
- =1 self-refreshing DRAMs in system
- =0 CAS-before-RAS refresh
- (82439TX only) Enhanced Paging disabled
- 3 EDO Detect Mode enable
- (used to detect whether memory is EDO bank-by-bank)
- 2-0 DRAM refresh rate
- FX/VX/HX MX TX
- 000 disabled 15.6 us disabled
- 001 50 MHz 31.2 us 15.6 us
- 010 60 MHz 62.4 us 31.2 us
- 011 66 MHz 125 us 64.4 us
- 100 reserved 250 us 125 us
- 101 reserved reserved 256 us
- 1xx reserved reserved reserved
- SeeAlso: #01099,#01108,#01098,#01115,#01106
- Bitfields for Intel 82437FX/MX/VX,82439HX/TX DRAM timing register:
- Bit(s) Description (Table 01117)
- 7 (82437FX,82439TX) reserved
- 7 (82437MX) MA[11:2] buffer strength
- =0 8mA
- =1 12mA
- 7 (82437VX) MA-to-RAS# Delay
- =1 one clock
- =0 two clocks
- 7 (82439HX) Turbo Read Leadoff
- =1 bypass first register in DRAM data pipeline, saving one clock
- (may only be set in a cacheless configuration)
- 6-5 DRAM Read Burst Timing
- 00 x444 (EDO and Standard Page Mode)
- 01 x333 (EDO), x444 (SPM)
- 10 x222 (EDO), x333 (SPM)
- 11 x322 (EDO), x333 (SPM) (82437VX only)
- 11 reserved (other)
- 4-3 DRAM Write Burst Timing
- 00 x444
- 01 x333
- 10 x222
- 11 reserved
- 2 (82439TX) reserved
- 2 RAS-to-CAS Delay
- =1 two clocks
- =0 three clocks
- 1-0 DRAM Leadoff Timing
- 82437FX/MX Read Leadoff Write Leadoff RAS# Precharge
- 00 8 6 3
- 01 7 5 3
- 10 8 6 4
- 11 7 5 4
- 82437VX,82439TX Read Write Leadoff RAS# Precharge
- 00 11 7 3
- 01 10 6 3
- 10 11 7 4
- 11 10 6 4
- 82439HX Read Leadoff Write Leadoff RAS# Precharge
- 00 7 6 3
- 01 6 5 3
- 10 7 6 4
- 11 6 5 4
- SeeAlso: #01099,#01108,#01116,#01106,#01107
- Bitfields for Intel 8243x/8244x Programmable Attribute Map Register:
- Bit(s) Description (Table 01118)
- 7 reserved
- 6 cache enable (region 1)
- 5 write enable (region 1)
- 4 read enable (region 1)
- 3 reserved
- 2 cache enable (region 0)
- 1 write enable (region 0)
- 0 read enable (region 0)
- Notes: each programmable attribute map register controls two memory
- regions at the top of the first megabyte of memory
- for the Intel 82441FX and 82443BX/LX, bits 6 and 2 are reserved, as
- cacheability is set using the Pentium Pro/II/Celeron's MTRR registers
- (see MSR 000000FEh)
- Intel 82434,82437FX/MX/VX,82439HX,82441FX,82443EX/LX PAM
- registers/regions:
- PAM0 low: reserved [*]
- PAM0 hi: segment F000-FFFF
- PAM1 low: segment C000-C3FF
- PAM1 hi: segment C400-C7FF
- PAM2 low: segment C800-CBFF
- PAM2 hi: segment CC00-CFFF
- PAM3 low: segment D000-D3FF
- PAM3 hi: segment D400-D7FF
- PAM4 low: segment D800-DBFF
- PAM4 hi: segment DC00-DFFF
- PAM5 low: segment E000-E3FF
- PAM5 hi: segment E400-E7FF
- PAM6 low: segment E800-EBFF
- PAM6 hi: segment EC00-EFFF
- [*] on the 82434 (and possibly other Intel chipsets), the low nybble of
- PAM0 controls segment 8000-9FFF
- SeeAlso: #01055,#01108,#01098,#01099,#01229,#01106,#01107,#01142,#01129
- Bitfields for Intel 82437VX,82439TX DRAM Row Type register:
- Bit(s) Description (Table 01119)
- 7,3 row 3 type
- 6,2 row 2 type
- 5,1 row 1 type
- 4,0 row 0 type
- 00 SPM DRAM
- 01 EDO DRAM
- 10 SDRAM
- 11 reserved
- SeeAlso: #01099,#01108,#01118,#01213
- Bitfields for Intel 82439TX DRAM Row Type high register:
- Bit(s) Description (Table 01213)
- 7 Host Frequency detection
- =1 66MHz Bus
- =0 60MHz bus
- 5,1 DRAM Row 5 type
- 4,0 DRAM ROW 4 type
- 00 SPM
- 01 EDO
- 10 SDRAM
- 11 reserved
- 6,3 reserved
- 2 Memory Address select Enabled
- SeeAlso: #01099,#01119
- Bitfields for Intel 82437FX/82437MX DRAM Row Type register:
- Bit(s) Description (Table 01121)
- 7-4 reserved
- 3-0 DRAM Row N is EDO instead of page-mode DRAM
- SeeAlso: #01106,#01107
- Bitfields for Intel 82437VX PCI TRDY timer:
- Bit(s) Description (Table 01122)
- 7-3 reserved
- 2-0 TRDY timeout value
- 000 2 PCICLKs
- 001 4 PCICLKs
- 010 6 PCICLKs
- 011 8 PCICLKs
- 1xx reserved
- SeeAlso: #01108,#01123
- Bitfields for Intel 82437,82439HX/TX,82443BX/EX/LX SMRAM control register:
- Bit(s) Description (Table 01123)
- 7 reserved
- 6 SMM Space Open
- =1 make SMM DRAM visible even when not in SMM if bit 4 =0
- 5 SMM Space Closed
- =1 no data references permitted to SMM DRAM even in SMM
- 4 SMM Space Locked
- =1 force bits 4 and 6 to become read-only; and clear bit 6
- 3 SMRAM Enable
- =1 128K DRAM are accessible for use at A000 while in SMM
- 2-0 SMM Space Base Segment
- 010 segment A000-BFFF
- 100 segment C000-CFFF (82437MX,82443EX only)
- other reserved
- Note: bits 5 and 6 must never both be set at the same time
- SeeAlso: #01099,#01108,#01098,#01124,#01106,#01107,#01142,#01129
- Bitfields for Intel 82437VX Shared Memory Buffer control register:
- Bit(s) Description (Table 01124)
- 7-2 reserved
- 1 enable shared memory buffer
- 0 redirect shared memory buffer access
- =0 treat SMB area as a hole in system DRAM
- SeeAlso: #01108,#01123,#01125
- Bitfields for Intel 82437VX Graphics Controller Latency Timer:
- Bit(s) Description (Table 01125)
- 7-6 reserved
- 5-3 GC latency for PCI reads (in 4 HCLK multiples) (default=100)
- 2-0 GC latency for CPU and PCI writes (in 4 HCLK multiples) (default=011)
- SeeAlso: #01108,#01124
- Bitfields for Intel 82439HX Error Command register:
- Bit(s) Description (Table 01126)
- 7 SERR# duration
- =0 one PCI clock
- =1 until error flags are cleared
- 6-3 reserved
- 2 force bad parity on multiple-bit uncorrectable error
- 1 assert SERR# on multiple-bit uncorrectable error
- 0 assert SERR# on single-bit correctable error
- SeeAlso: #01098,#01127
- Bitfields for Intel 82439HX Error Status register:
- Bit(s) Description (Table 01127)
- 7-5 DRAM row associated with multi-bit error
- 4 multi-bit uncorrectable error occurred (write 1 bit to clear)
- 3-1 DRAM row associated with single-bit correctable error
- 0 single-bit correctable error occurred (write 1 bit to clear)
- SeeAlso: #01098,#01126
- Bitfields for Intel 82439TX miscellaneous control register:
- Bit(s) Description (Table 01128)
- 7 reserved
- 6 ACPI control register enable
- 5 Suspend refresh type (EDO/FPM DRAM only)
- =1 Self refresh (Always for SDRAM)
- =0 CBR refresh
- 4 Normal refresh enable
- When set to 1, 82439TX switches from suspend refresh to normal refresh
- 3 reserved
- 2 Internal clock control disable
- =1 disable
- =0 enable Disables 82439TX internal clocks during suspend, reducing
- power consumption.
- 1-0 reserved
- SeeAlso: #01099
- Format of PCI configuration for Intel 82443EX/LX Device 0 (Host-PCI):
- Offset Size Description (Table 01129)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 8086h, device ID 7180h)
- chipset is 82443EX if revision >= 03h
- 40h 16 BYTEs reserved
- 50h WORD PAC Configuration register (See #01131)
- 52h BYTE reserved
- 53h BYTE Data Buffer Control register (see #01132)
- 54h BYTE reserved
- 55h WORD DRAM Row Type register (see #01133)
- 57h BYTE DRAM Control register (see #01134)
- 58h BYTE DRAM Timing register (see #01135)
- 59h 7 BYTEs PAM Configuration registers 0-6 (See #01118)
- 60h 8 BYTEs DRAM Row Boundary registers 0-7
- each register indicates top of memory for a particular row, in
- 8MB units; DIMMs use two rows each, with single-sided DIMMs
- leaving the odd-numbered rows unpopulated
- 68h BYTE Fixed DRAM Hole Control register (see #01147)
- 69h BYTE reserved
- 6Ah WORD DRAM Extended Mode Select register (see #01136)
- 6Ch DWORD Memory Buffer Strength Control register (see #01137)
- 70h BYTE Multi-Transaction Timer register (see #01140)
- 71h BYTE reserved
- 72h BYTE System Management RAM Control register (see #01123)
- 73h 29 BYTEs reserved
- 90h BYTE Error Command register (see #01156)
- 91h BYTE Error Status 0 register (see #01138)
- 92h BYTE Error Status 1 register (see #01139)
- 93h BYTE Reset Control Register (see #01239)
- 94h 12 BYTEs reserved
- A0h DWORD AGP Capability register (see #01158)
- A4h DWORD AGP Status register (see #01159)
- A8h DWORD AGP Command register (see #01160)
- ACh 4 BYTEs reserved
- B0h DWORD AGP Control register (see #01161)
- B4h BYTE Arpeture Size Control register (see #01162)
- B5h 3 BYTEs reserved
- B8h DWORD Arpeture Translation Table Base register (see #01163)
- BCh BYTE AGP MTT Control register (see #01140)
- BDh BYTE AGP Low Priority Transaction timer register (see #01141)
- BCh 67 BYTEs reserved
- Notes: The 82443EX is virtually identical to the 82443LX, except that it does
- not support ECC type DRAM.
- The Intel 82443EX/LX chipsets use PCI configuration mechanism #1
- SeeAlso: #01130,#01142,PORT 0CF8h
- Format of PCI configuration for Intel 82443EX/LX Device 1 (PCI-PCI):
- Offset Size Description (Table 01130)
- 00h 64 BYTEs header, type 1 [bridge] (see #00878)
- (vendor ID 8086h, device ID 7181h)
- chipset is 82443EX if revision >= 03h
- 40h 192 BYTEs reserved
- Note: The Intel 82443LX chipset uses PCI configuration mechanism #1
- SeeAlso: #01129,#01143,PORT 0CF8h
- Bitfields for Intel 82443EX/LX (Device 0) PAC Configuration register:
- Bit(s) Description (Table 01131)
- 15 WSC# Handshake Disable
- 14 (82443LX) Host Frequency (read-only)
- =1 60MHz
- =0 66MHz
- 14 (82443EX) reserved
- 13-12 reserved
- 11 ??? (Not documented by Intel!)
- 10 PCI Agent to Arperture Access Disable
- 9 Aperture Access Global Enable
- 8-6 (82443EX) reserved
- 8-7 (82443LX) DRAM Data Integrety Mode
- 00 Non-ECC (no check, no correct)
- 01 EC-only (do check, no correct)
- 10 reserved
- 11 ECC (do check, do correct)
- 6 (82443LX) ECC-Test Diagnostic Mode Enabled
- 5 MDA Present
- Note: Controls routing of Monochrome Display Adaptor I/O and memory
- range accesses. Works in conjunction with the VGA-bit in
- Bridge Control register of device 1 (see #00901):
- VGA MDA
- 0 0 MDA and VGA routed to PCI bus
- 0 1 reserved
- 1 0 MDA and VGA routed to AGP bus
- 1 1 VGA routed to AGP bus, MDA routed to PCI bus
- 4-0 reserved
- SeeAlso: #00901,#01129
- Bitfields for Intel 82443EX/LX (Device 0) Data Buffer Control register:
- Bit(s) Description (Table 01132)
- 7 reserved
- 6 CPU-to-PCI posting enabled
- 5 Write post during I/O Bridge access enabled
- 4-0 reserved
- SeeAlso: #01129
- Bitfields for Intel 82443EX/LX (Device 0) DRAM Row Type register:
- Bit(s) Description (Table 01133)
- 15-14 row 7 type
- 0 0 EDO (Same values for each row)
- 0 1 reserved
- 1 0 SDRAM
- 1 1 empty row
- 13-12 row 6 type
- 11-10 row 5 type
- 9-8 row 4 type
- 7-6 row 3 type
- 5-4 row 2 type
- 3-2 row 1 type
- 1-0 row 0 type
- SeeAlso: #01129,#01134
- Bitfields for Intel 82443EX/LX (Device 0) DRAM Control register:
- Bit(s) Description (Table 01134)
- 7-6 reserved
- 5 DRAM EDO Auto-Detect mode enabled
- 4 SDRAM power management enabled
- 3 reserved
- 2-0 DRAM Refresh rate
- 000 = Refresh disabled
- 001 = Normal (Based on PAC Configuration bit 14)
- 010-111 = reserved
- SeeAlso: #01129,#01133,#01135
- Bitfields for Intel 82443EX/LX (Device 0) DRAM Timing register:
- Bit(s) Description (Table 01135)
- 7 SDRAM RAS to CAS Delay (1 = 2 clocks, 0 = 3 clocks)
- 6 SDRAM CAS Latency (1 = 2 clocks, 0 = 3 clocks)
- 5 SDRAM RAS Precharge Time (1 = 2 clocks, 0 = 3 clocks)
- 4 EDO DRAM Read Burst timing
- =1 Read rate is x222
- =0 Read rate is x333
- 3 EDO DRAM Write Burst timing
- =1 Write rate is x222
- =0 write rate is x333
- 2 EDO RAS Precharge Time (1 = 3 clocks, 0 = 4 clocks)
- 1 EDO RAS to CAS Delay (1 = 2 clocks, 0 = 3 clocks)
- 0 MA Wait State
- =1 Fast (0 wait states for SDRAM, clocks run normally for EDO)
- =0 Slow (1 wait state for SDRAM, add one clock to all EDO timings)
- SeeAlso: #01129,#01134
- Bitfields for Intel 82443EX/LX DRAM Extended Mode Select register:
- Bit(s) Description (Table 01136)
- 15-8 reserved
- 7-5 Operating Mode
- 000 Normal operating mode
- 001 NOP command enabled
- 010 All banks precharge enable
- 011 Mode register set command enable
- 100 CBR cycle enable
- 101-11x reserved
- 4 reserved
- 3-2 Page timeout select
- 00 16 clocks
- 01-11 reserved
- 1-0 Close both banks control
- 00 close both banks on page misses
- 01-11 reserved
- SeeAlso: #01129
- Bitfields for Intel 82443EX/LX Memory Buffer Strength Control register:
- Bit(s) Description (Table 01137)
- 31-30 MAA[1-0] buffer strength
- 00 48mA (same values for bits 25-12,5-0)
- 01 42mA
- 10 22mA
- 11 reserved
- 29-28 (82443LX only) MECC[7-0] buffer strength
- 00 42mA (same values for bits 27-26,11-6)
- 01 38mA
- 10 33mA
- 11 reserved
- 27-26 MD[63-0] buffer strength
- 25-24 RCSA[0]# & RCSB[0]#/MAB[6] buffer strength
- 23-22 (82443LX only) MAB[1-0] buffer strength
- 21-20 MAA[13:2] buffer strength
- 19-18 RCSA[1]# & RCSB[1]#/MAB[7] buffer strength
- 17-16 RCSA[2]# & RCSB[2]#/MAB[8] buffer strength
- 15-14 RCSA[3]# & RCSB[3]#/MAB[9] buffer strength
- 13-12 (82443LX only) RCSA[4]# & RCSB[4]#/MAB[10] buffer strength
- 11-10 (82443LX only) CQDB[5,1]# buffer strength
- 9-8 CQDA[5,1]# buffer strength
- 7-6 CQDA[7-6,4-2,0]# buffer strength
- ---82443LX---
- 5-4 RCSA[5]# & RCSB[5]#/MAB[11] buffer strength
- 3-2 RCSA[6]#/MAB[2] & RCSB[6]#/MAB[12] buffer strength
- 1-0 RCSA[7]#/MAB[3] & RCSB[7]#/MAB[13] buffer strength
- ---82443EX---
- 5-0 reserved
- SeeAlso: #01129
- Bitfields for Intel 82443EX/LX Error Status 0 register:
- Bit(s) Description (Table 01138)
- ---82443LX---
- 7-5 Multi-bit first error (read-only) Indicates which DRAM row had the
- multi-bit error
- 4 Multiple-bit ECC Error occurred flag
- 3-1 Single-bit first row error (read-only) Indicates which DRAM row had the
- single-bit error
- 0 Single-bit ECC error occurred flag
- ---82443EX---
- 7-0 reserved
- Note: Write a 1 to bits 4 & 0 to clear the flags
- SeeAlso: #01129,#01139
- Bitfields for Intel 82443EX/LX Error Status 1 register:
- Bit(s) Description (Table 01139)
- 7-3 reserved
- 2 AGP non-snoopable access outside of graphics arperture
- 1 AGP non-snoopable access outside of main DRAM ranges and arperture
- 0 access to invalid graphics arperture translation table entry
- Note: Write a 1 to these bit(s) to clear
- SeeAlso: #01129,#01138
- Bitfields for Intel 82443EX/LX Multi-Transaction Timer register:
- Bit(s) Description (Table 01140)
- 7-3 Multi-transaction timer count value
- 2-0 reserved
- SeeAlso: #01129,#01141
- Bitfields for Intel 82443EX/LX Low Priority Transaction Timer register:
- Bit(s) Description (Table 01141)
- 7-3 Low priority transaction timer count value
- 2-0 reserved
- SeeAlso: #01129,#01140
- Format of PCI Configuration for Intel 82443BX Device 0 (Host-PCI):
- Offset Size Description (Table 01142)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 8086h, device ID 7190h/7192h)
- 10h DWORD graphics aperture base address
- 2Ch WORD subsystem vendor identification (write-once)
- 2Eh WORD subsystem device identification (write-once)
- 40h 16 BYTEs reserved (0)
- 50h DWORD 440BX Configuration (see #01144)
- 54h 3 BYTEs reserved (0)
- 57h BYTE DRAM Control (see #01145)
- 58h BYTE DRAM Timing (see #01146)
- 59h 7 BYTEs Programmable Attribute Map register 0-6 (see #01118)
- 60h 8 BYTEs DRAM Row Boundary registers 0-7
- each register indicates top of memory for a particular row, in
- 8MB units; DIMMs use two rows each, with single-sided DIMMs
- leaving the odd-numbered rows unpopulated
- 68h BYTE Fixed DRAM Hole Control (see #01147)
- 69h 6 BYTEs Memory Buffer Strength Control (see #01148)
- 6Fh 2 BYTEs reserved (0)
- 71h BYTE Intel Reserved (1Fh)
- 72h BYTE SMRAM Control (see #01123)
- 73h BYTE Extended SMRAM Control (see #01149)
- 74h WORD SDRAM Row Page Size (see #01150)
- 76h WORD SDRAM Control Register (see #01151)
- 78h WORD Paging Policy Register (see #01152)
- 7Ah BYTE Power Management Control (see #01153)
- 7Bh WORD Suspend CBR Refresh Rate Register (see #01154)
- 7Dh 3 BYTEs reserved (0)
- 80h DWORD Error Address Pointer (see #01155)
- 84h 12 BYTEs reserved (0)
- 90h BYTE Error Command Register (see #01156)
- 91h WORD Error Status Register (see #01157)
- 93h BYTE reserved (0)
- 94h DWORD Intel Reserved (00006104h)
- 98h WORD Intel Reserved (0500h)
- 9Ah BYTE Intel Reserved (0)
- 9Bh 5 BYTEs reserved (0)
- A0h DWORD AGP Capability Identifier (see #01158)
- A4h DWORD AGP Status Register (read-only) (see #01159)
- A8h DWORD AGP Command Register (see #01160)
- ACh 4 BYTEs reserved (0)
- B0h DWORD AGP Control Register (see #01161)
- B4h BYTE Aperture Size Control (see #01162)
- B5h 3 BYTEs reserved (0)
- B8h DWORD Aperture Translation Table (see #01163)
- BCh 2 BYTEs reserved
- BEh WORD reserved (0)
- C0h DWORD Intel Reserved (0)
- C4h DWORD Intel Reserved (0)
- C8h BYTE Intel Reserved (18h)
- C9h BYTE Intel Reserved (0Ch)
- CAh 3 BYTEs Memory Buffer Frequency Select (see #01164)
- CDh 3 BYTEs reserved (0)
- D0h 8 BYTEs BIOS scratch pad (read-write, init to 0 on reset)
- D8h 8 BYTEs Intel Reserved (0)
- E0h 2 DWORDs DRAM Write Thermal Throttling Control (see #01165)
- E8h 8 BYTEs DRAM Read Therman Throttling Control (see #01165)
- F0h WORD Buffer Control Register (see #01166)
- F2h 2 BYTEs Intel Reserved (0000h)
- F4h DWORD Intel Reserved (0000F800h)
- bits 30-29 are "Abort Disable Test Mode" configuration bits
- and should always be set (according to Intel
- Specification Update)
- F8h DWORD Intel Reserved (00000F20h)
- FCh DWORD Intel Reserved (0)
- SeeAlso: #00873,#01143,PORT 0022h"82443BX"
- !!!intel\29063301.pdf p.34
- Format of PCI Configuration for Intel 82443BX Device 1 (PCI-AGP):
- Offset Size Description (Table 01143)
- 00h 64 BYTEs header, type 1 [bridge] (see #00878)
- (vendor ID 8086h, device ID 7191h)
- 40h 192 BYTEs reserved
- SeeAlso: #00873,#01142,#01130
- !!!intel\29063301.pdf p.80
- Bitfields for Intel 82443BX (Device 0) NBX Configuration Register:
- Bit(s) Description (Table 01144)
- 31-24 SDRAM rows without ECC (each set bit indicates a row in the SDRAM array
- with does NOT have error correction (bit 24 = row 0; note that double-
- sided DIMMs use two rows, one for the front and one for the back)
- 23-19 reserved
- 18 DRAM data asserted on host bus on the same clock on which the snoop
- result is sampled, instead of one clock later
- 17 ECC signals are always driven for EDO memory
- 16 IDSEL redirection
- =0 allocate IDSEL1/AD12 to bridge, never assert external AD12
- =1 allocate IDSEL7/AD18 to bridge, never assert external AD18; PCI
- configuration cycles for Bus0/Device7 are redirected to Bus0/Device1
- 15 disable WSC# handshake (uni-processor mode)
- 14 Intel Reserved
- 13:12 Host/DRAM frequency
- 00 100 MHz
- 01 reserved
- 10 66 MHz
- 11 reserved
- 11 enable AGP-to-PCI access (note: AGP-to-PCI traffic is not allowed to
- target ISA-bus devices)
- 10 disable PCI agent access to graphis aperture (ignored if bit 9 clear)
- 9 global enable graphics aperture access
- 8:7 DRAM Data Integrity Mode
- 00 non-ECC
- 01 error checking only (e.g. parity)
- 10 ECC mode
- 11 ECC mdoe with hardware scrubbing
- 6 enable ECC diagnostics mode (when set, ECC lines are forced to zero on
- writes and compared to internally-generated ECC on reads)
- 5 monochrome video adapter present on PCI/ISA bus (with primary adapter
- on AGP bus)
- if register 3Eh bit 3 is clear, all VGA cycles are sent to PCI
- regardless of this bit
- otherwise: if clear, all VGA cycles are sent to AGP; if set, all VGA
- cycles except MDA ranges (memory B0000h-B7FFFh and ports 03B4h,03B5h,
- 03B8h,03B9h,03BAh,03BFh) are sent to AGP
- 4 reserved
- 3 enable posting of host USWC (U??? Speculative Write Combine) writes to
- PCI memory
- 2 In-Order Queue Depth
- =1 maximum (PPro supports up to 8, but 82443BX only supports depth 4)
- =0 depth forced to 1 (no pipelining on processor bus)
- 1:0 reserved
- SeeAlso: #01142
- Bitfields for 82443BX DRAM Control:
- Bit(s) Description (Table 01145)
- 7-6 reserved
- 5 module mode configuration (read-only)
- =0 self-refresh entry is staggered; if "SDRAMPWR" (offset 76h bit 4) is
- set, 3 DIMMs are supported, CKE[5:0] is driven, and dynamic SDRAM
- power-down is available; if "SDRAMPWR" is clear, 4 DIMMs are
- supported but power-down is not available
- =1 self-refresh entry is not staggered; 3 DIMMs are supported, only
- CKE0 is driven, and dynamic power-down is not available
- 4:3 DRAM type
- 00 EDO
- 01 SDRAM
- 10 registered SDRAM
- 11 reserved
- 2:0 DRAM refresh rate
- 000 disabled
- 001 15.6 microseconds
- 010 31.2 microseconds
- 011 62.4
- 100 124.8
- 101 249.6
- else reserved
- SeeAlso: #01142
- Bitfields for Intel 82443BX DRAM Timing:
- Bit(s) Description (Table 01146)
- 7-2 reserved
- 1 add one EDO RASx# wait state for row misses (two tASR instead of one)
- 0 add one wait state to first EDO CASx# assertion for page hits
- (2 Tasc instead of 1 Tasc)
- SeeAlso: #01142
- Bitfields for Intel 82443BX/EX/LX Fixed DRAM Hole Control:
- Bit(s) Description (Table 01147)
- 7-6 Hole Enable
- 00 none
- 01 512K-640K
- 10 15M-16M
- 11 reserved
- 5-0 reserved (0)
- SeeAlso: #01142,#01129
- Bitfields for Intel 82443BX Memory Buffer Strength Control:
- Bit(s) Description (Table 01148)
- 47-40 reserved (0)
- 39-38 strengths of MAA[13:0], WEA#, SRASA#, SCASA# (settings same as below)
- 37-36 strengths of MAB[12:11,9:0], MAB[13,10], WEB#, SRASB#, SCASB#
- 00 = 1x (at both 66 and 100 MHz)
- 01 reserved
- 10 = 2x (at both 66 and 100 MHz)
- 11 = 3x (at both 66 and 100 MHz)
- 35-34 MD[63:0] buffer strength control 2
- 4 DIMM FET config: strength for MD[63:0] path connected to DIMMs 2&3
- 3/4 DIMM non-FET config: program to same value as buffer str. ctrl 1
- 33-32 MD[63:0] buffer strength control 1
- 4 DIMM FET config: strength for MD[63:0] path connected to DIMMs 0&1
- 3/4 DIMM non-FET config: programmable based on total load detected on
- all DIMM connectors
- 00 = 1x (at both 66 and 100 MHz)
- 01 reserved
- 10 = 2x (at both 66 and 100 MHz)
- 11 = 3x (at 100 MHz only)
- 31-30 MECC[7:0] buffer strength control 2
- 4 DIMM FET config: strength for MECC[7:0] path connected to DIMMs 2&3
- 3/4 DIMM non-FET config: program to same value as buffer str. ctrl 1
- 29-28 MECC[7:0] buffer strength control 1
- 4 DIMM FET config: strength for MD[63:0] path connected to DIMMs 0&1
- 3/4 DIMM non-FET config: programmable based on total load detected on
- all DIMM connectors
- (values same as for MD[63:0] buffer strength)
- 27-26 CSB7#/CKE5 buffer strength (same values as bits 37-36)
- 25-24 CSA7#/CKE3 buffer strength (same values as bits 37-36)
- 23-22 CSB6#/CKE4 buffer strength (same values as bits 37-36)
- 21-20 CSA6#/CKE2 buffer strength (same values as bits 37-36)
- 19 CSA5#/RASA5#, CSB5#/RASB5# buffer strength
- 0 = 1x (at both 66 and 100 MHz)
- 1 = 2x (at both 66 and 100 MHz)
- 18 CSA4#/RASA4#, CSB4#/RASB4# buffer strength (same values as bit 19)
- 17 CSA3#/RASA3#, CSB3#/RASB3# buffer strength (same values as bit 19)
- 16 CSA2#/RASA2#, CSB2#/RASB2# buffer strength (same values as bit 19)
- 15 CSA1#/RASA1#, CSB1#/RASB1# buffer strength (same values as bit 19)
- 14 CSA0#/RASA0#, CSB0#/RASB0# buffer strength (same values as bit 19)
- 13-12 DQMA5/CASA5# buffer strength
- 00 = 1x (at both 66 and 100 MHz)
- 01 reserved
- 10 = 2x (at both 66 and 100 MHz)
- 11 = 3x (at 66 MHz only)
- 11-10 DQMA1/CASA1# buffer strength (same values as bits 37-36)
- 9-8 DQMB5/CASB5# buffer strength (same values as bits 13-12)
- 7-6 DQMB1/CASB1# buffer strength (same values as bits 13-12)
- 5-4 DQMA[7:6,4:2,0]/CASA[7:6,4:2,0]# buffer strength (as for bits 37-36)
- 3-2 CKE1/GCKE buffer strength (same values as bits 37-36)
- 1-0 CKE0/FENA buffer strength (same values as bits 37-36)
- SeeAlso: #01142
- Bitfields for Intel 82439TX/82443BX Extended SMRAM Control register:
- Bit(s) Description (Table 01149)
- 7 SMRAM location
- =0 compatible SMRAM space at segment A000h
- =1 high SMRAM space at addreses 100A0000h to 100FFFFFh (accessing
- physical DRAM addresses A0000h to FFFFFh)
- 6 (write-clear) access to extended SMRAM memory range when SMRAM space
- is not open and not in SMM
- 5 enable write-through caching of SMRAM
- (forced to 1 by 82443BX, to 0 by 82439TX)
- 4 enable L1 caching of SMRAM (forced to 1 by 82443BX)
- 3 enable L2 caching of SMRAM (forced to 1 by 82443BX)
- 2-1 TSEG size (read-only once SMRAM locked) (see #01123)
- 00 128K
- 01 256K
- 10 512K
- 11 1M
- 0 enable TSEG (read-only once SMRAM locked) (see #01123)
- when both SMRAM and TSEG are enabled, the top N kilobytes of physical
- DRAM are no longer claimed by the memory controller, and instead
- appear as extended SMRAM at an address 256M higher than the physical
- address
- SeeAlso: #01142,#01123,#01099
- Bitfields for Intel 82443BX SDRAM Row Page Size:
- Bit(s) Description (Table 01150)
- 15-14 page size for row 7 (back of DIMM4)
- 00 two KB
- 01 four KB
- 10 eight KB
- 11 reserved
- 13-12 page size for row 6 (front of DIMM4)
- ...
- 3-2 page size for row 1 (back of DIMM1)
- 1-0 page size for row 0 (front of DIMM1)
- SeeAlso: #01142
- Bitfields for Intel 82443BX SDRAM Control Register:
- Bit(s) Description (Table 01151)
- 15-10 reserved (0)
- 9-8 add one-clock delay to idle/pipeline DRAM leadoff when =01 (all other
- values are illegal)
- 7-5 SDRAM mode select
- 000 normal operation
- 001 issue NOP command on all CPU-to-SDRAM cycles
- 010 issue All-Banks-Precharge command on all CPU-to-SDRAM cycles
- 011 issue mode register set command on CPU-to-SDRAM cycles
- (command is driven on memory address lines, so the proper
- address must be calculated for each row of memory to drive
- the correct command; MAx[2:0] must be driven to 010 for
- burst-of-4 mode, MAx3 to 1 for interleave wrap type,
- MAx4 to the value of the CAS# latency bit, MAx[6:5] to 01,
- and MAx[12:7] to 0000000
- 100 issue CBR cycles on all CPU-to-SDRAM cycles
- else reserved
- 4 "SDRAMPWR" specifies how CKE signals are driven for various DRAM
- configurations; refer to #01145 bit 5
- 3 Leadoff Command Timing
- =0 four CS# clocks (100 MHz or 66 MHz desktop if MAA/MAB load > 9)
- =1 three CS# clocks (66 MHz mobile platforms, or desktop w/ load <= 9)
- 2 CAS# latency
- =0 three DCLKs
- =1 two DCLKs
- 1 SDRAM RAS# to CAS# delay
- =0 three clocks
- =1 two clocks
- 0 SDRAM RAS# precharge
- =0 three clocks
- =1 two clocks
- SeeAlso: #01142
- Bitfields for Intel 82443BX Paging Policy Register:
- Bit(s) Description (Table 01152)
- 15-8 banks per row (bit 7 is row 0, bit 15 is row 7)
- =0 two banks
- =1 four banks
- 7-5 reserved
- 4 Intel Reserved
- 3-0 DRAM Idle Timer ("DIT")
- number of clocks in idle state before all pages are precharged
- 0000 no clocks
- 0001 2 clocks
- 0010 4 clocks
- 0011 8 clocks
- 0100 10 clocks
- 0101 12 clocks
- 0110 16 clocks
- 0111 32 clocks
- 1xxx never (pages are not closed on idle)
- SeeAlso: #01142
- Bitfields for Intel 82443BX Power Management Control Register:
- Bit(s) Description (Table 01153)
- 7 enable SDRAM power-down for idle rows
- 6 enable ACPI control register at PORT 0022h
- 5 suspend refresh type
- =0 self-refresh
- =1 CBR mode
- 4 enable normal refresh (must be set before accessing RAM after a reset)
- 3 quick-start mode enabled (read-only)
- 2 enable dynamic clock gating on AGPset "IDLE" condition (all buses in
- idle state)
- 1 AGP disabled (read-only)
- 0 enable CPU reset without PCIRST enable
- SeeAlso: #01142
- Bitfields for Intel 82443BX Suspend CBR Refresh Rate:
- Bit(s) Description (Table 01154)
- 15-13 reserved (0)
- 12 enable automatic Suspend CBR Refresh Rate adjustment (based on number
- of OSCCLKs in a given time); if clear, the below field must be
- programmed to guarantee minimum refresh rates in the worst case
- 11-0 Suspend CBR Refresh Rate (number of OSCCLKs between refresh requests)
- SeeAlso: #01142
- Bitfields for Intel 82443BX Error Address Pointer:
- Bit(s) Description (Table 01155)
- 31-12 (read-only) bits 31-12 of address in which first parity/ECC error
- occurred
- 11-2 reserved
- 1 (write-clear) multi-bit error occurred
- 0 (write-clear) single-bit error occurred
- SeeAlso: #01156,#01142
- Bitfields for Intel 82443BX/EX/LX Error Command Register:
- Bit(s) Description (Table 01156)
- 7 enable SERR# on AGP non-snoopable access outside graphics aperture
- 6 enable SERR# on invalid AGP DRAM access (82443BX)
- enable SERR# on AGP Non-snoopable access to location outside main DRAM
- and arpeture rangles (82443EX/LX)
- 5 enable SERR# on access to invalid Graphics Aperture Translation Table
- 4 enable SERR# on receiving Target Abort
- 3 enable SERR# when Thermal DRAM Throttling detected (82443BX)
- enable SERR# on PCI Parity Error (82443EX/LX)
- ---82443BX---
- 2 SERR# mode
- =0 asserted for one PCI clock
- =1 level mode signal (for systems that connect SERR# to EXTSMI#)
- 1 enable SERR# on receiving multi-bit Parity/ECC error
- 0 enable SERR# on receiving single-bit (corrected) ECC error
- ---82443EX/LX---
- 2-0 reserved
- Note: bits 1 and 0 must be clear on systems not supporting ECC
- SeeAlso: #01155,#01157,#01142,#01129
- Bitfields for Intel 82443BX Error Status Register:
- Bit(s) Description (Table 01157)
- 15-13 reserved (0)
- 12 (write-clear) DRAM Read thermal throttling condition occurred
- 11 (write-clear) DRAM Write thermal throttling condition occurred
- 10 (write-clear) AGP non-snoopable access outside Graphics Aperture
- 9 (write-clear) invalid AGP non-snoopable DRAM read access
- 8 (write-clear) invalid Graphics Aperture Translation Table entry
- 7-5 (read-only) number of DRAM row containing first multi-bit error
- 4 (write-clear) multi-bit (uncorrectable) error occurred
- 3-1 (read-only) number of DRAM row containing first single-bit error
- 0 (write-clear) single-bit (correctable) error occurred
- SeeAlso: #01156,#01142
- Bitfields for Intel AGP Capability Identifier:
- Bit(s) Description (Table 01158)
- 31-24 reserved
- 23-20 major version of supported AGP revision
- 19-16 minor version of supported AGP revision
- 15-8 offset of next capability (0 = none)
- 7-0 PCI capability ID (2 = AGP, 0 = disabled)
- SeeAlso: #01142,#01159,#01129
- Bitfields for Intel 82443BX/EX/LX AGP Status Register:
- Bit(s) Description (Table 01159)
- 31-24 maximum AGP request queue depth (read-only)
- 23-10 reserved
- 9 AGP side band addressing is supported (read-only)
- 8-2 reserved
- 1-0 supported AGP data transfer type(s)
- bit 0: 1x data transfer mode
- bit 1: 2x data transfer mode
- Note: bits 0 and 1 may not both be clear
- SeeAlso: #01160,#01142,#01158,#01129
- Bitfields for Intel 82443BX/EX/LX AGP Command Register:
- Bit(s) Description (Table 01160)
- 31-10 reserved
- 9 enable AGP sideband addressing
- 8 enable AGP
- 7-2 reserved
- 1-0 selected AGP transfer rate
- 00 = default
- 01 = 1x
- 10 = 2x
- 11 illegal
- SeeAlso: #01159,#01142,#01161,#01129
- Bitfields for Intel 82443BX/EX/LX AGP Control Register:
- Bit(s) Description (Table 01161)
- 31-16 reserved (0)
- 15 disable forced ordering of snoopable writes and AGP reads (82443BX)
- (82443EX/LX) reserved
- 14 reserved (0)
- 13 enable Graphics Aperture Write-AGP Read synchronization
- 12-10 reserved (0)
- 9-8 reserved (0) (82443BX)
- expedite transaction throttle timer (82443EX/LX)
- 00 no throttling
- 01 reserved
- 10 192 clocks on, 64 clocks off
- 11 reserved
- 7 enable Graphics Translation Lookaside Buffer (and GTLB Flush Control)
- 6-0 reserved (0)
- SeeAlso: #01160,#01142,#01129
- Bitfields for Intel 82443BX/EX/LX Graphics Aperture Size Control:
- Bit(s) Description (Table 01162)
- 7-6 reserved
- 5-0 aperture size
- 000000 256M
- 100000 128M
- 110000 64M
- 111000 32M
- 111100 16M
- 111110 8M
- 111111 4M
- other illegal
- SeeAlso: #01142,#01163,#01129
- Bitfields for Intel 82443BX/EX/LX Graphics Aperture Trans. Table Base Register:
- Bit(s) Description (Table 01163)
- 31-12 bits 31-12 of aperture translation table base address
- 11-0 reserved (0)
- SeeAlso: #01162,#01142,#01129
- Bitfields for Intel 82443BX Memory Buffer Frequency Select:
- Bit(s) Description (Table 01164)
- 23 reserved
- 22 MAA[13:0], WEA#, SRASA#, SCASA# buffer select
- =0 66 MHz buffers
- =1 100 MHz buffers
- 21 MAB[12:11,9:0]#, MAB[13,10], WEB#, SRASB#, SCASB# buffer select
- (as for bit 22)
- 20 MD[63:0] (control 2) buffer select
- 19 MD[63:0] (control 1) buffer select
- 18 MECC[7:0] (control 2) buffer select
- 17 MECC[7:0] (control 1) buffer select
- 16 CSB7#/CKE5 buffer select
- 15 CSA7#/CKE3 buffer select
- 14 CSB6#/CKE4 buffer select
- 13 CSA6#/CKE2 buffer select
- 12 CSA5#/RASA5#, CSB5#/RASB5# buffer select
- 11 CSA4#/RASA4#, CSB4#/RASB4# buffer select
- 10 CSA3#/RASA3#, CSB3#/RASB3# buffer select
- 9 CSA2#/RASA2#, CSB2#/RASB2# buffer select
- 8 CAS1#/RASA1#, CSB1#/RASB1# buffer select
- 7 CSA0#/RASA0#, CSB0#/RASB0# buffer select
- 6 DQMA5/CASA5# buffer select
- 5 DQMA1/CASA1# buffer select
- 4 DQMB5/CASB5# buffer select
- 3 DQMB1/CASB1# buffer select
- 2 DQMA[7:6,4:2,0]/CASA[7:6,4:2,0]# buffer select
- 1 CKE1/GCKE buffer select
- 0 CKE0/FENA buffer select
- SeeAlso: #01142,#01166
- Bitfields for Intel 82443BX DRAM Read/Write Thermal Throttling Control:
- Bit(s) Description (Table 01165)
- 63 lock all read and write throttle control register bits (exists in Write
- Throttling control register only)
- 62-46 reserved
- 45-38 global DRAM sampling window (in four-millisecond units)
- 37-26 global QWORD threshold (documented as units of 215, but may be typo and
- actually be units of 2^15 = 32768)
- thermal throttling will be invoked if the number of QWORD accesses
- during the sampling window exceeds the threshold count
- 25-20 throttle time in multiples of the sampling window
- 19-13 throttle monitoring window in 16 DRAM-clock units
- 12-3 throttle QWORD maximum count -- while throttling is enabled, at most
- this many QWORD accesses are permitted during each throttle
- monitoring window
- 2-0 DRAM Throttle Mode
- 100 normal operation
- else Intel Reserved
- SeeAlso: #01142
- Bitfields for Intel 82443BX Buffer Control Register:
- Bit(s) Description (Table 01166)
- 15-10 reserved
- 9-6 AGP Jam Latch strength
- bit 9: enable strong pull-up
- bit 8: enable weak pull-up
- bit 7: enable strong pull-down
- bit 6: enable weak pull-down
- 5-0 Intel Reserved
- SeeAlso: #01142,#01164
- Format of PCI Configuration for Intel 82371FB/82371SB Function 0 (ISA Bridge):
- Offset Size Description (Table 01167)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 8086h, device ID 122Eh/7000h)
- (revision ID 00h = 82371SB step A-1)
- (revision ID 01h = 82371SB step B-0)
- 40h 12 BYTEs reserved
- 4Ch BYTE ISA I/O Controller Recovery Timer (see #01087)
- 4Dh BYTE reserved
- 4Eh BYTE X-Bus Chip Select Enable (see #01089)
- 4Fh BYTE (82371SB) X-Bus Chip Select Enable High (see #01102)
- bit 0: I/O APIC enabled
- 4Fh BYTE (82371FB) reserved
- 50h 16 BYTEs reserved
- 60h 4 BYTEs PCI IRQ Route Control (see #01076)
- 64h 5 BYTEs reserved
- 69h BYTE top of memory (see #01216)
- 6Ah WORD miscellaneous status (see #01217)
- 6Ch 4 BYTEs reserved
- 70h BYTE motherboard IRQ Route Control 0 (see #01218)
- 71h BYTE (82371FB) motherboard IRQ Route Control 1 (see #01218)
- 72h 4 BYTEs reserved
- 76h 2 BYTEs motherboard DMA control (see #01219)
- 78h WORD programmable chip select control (see #01220)
- 7Ah 6 BYTEs reserved
- 80h BYTE (82371SB) APIC Base Address Relocation (see #01078)
- 81h BYTE reserved
- 82h BYTE (82371SB) Deterministic Latency Control (see #01221)
- 83h 29 BYTEs reserved
- A0h BYTE SMI Control (see #01222)
- A1h BYTE reserved
- A2h WORD SMI Enable (see #01080)
- A4h DWORD System Event Enable (SEE) (see #01081)
- A8h BYTE Fast-Off Timer (in minutes, PCICLKs, or milliseconds)
- value is count less one; timer must be stopped before
- changing its value
- A9h BYTE reserved
- AAh WORD SMI Request (see #01082)
- ACh BYTE Clock Scale STPCLK# Low Timer
- STPCLK# stays low for 1+1056*(value+1) PCICLKs
- ADh BYTE reserved
- AEh BYTE Clock Scale STPCLK# High Timer
- STPCLK# stays high for 1+1056*(value+1) PCICLKs
- AFh 81 BYTEs reserved
- SeeAlso: #00873,#01214,#01215,#01064,#01083,#01108,#01098
- Format of PCI configuration for Intel 82371MX MPIIX:
- Offset Size Description (Table 01168)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 8086h, device ID 1234h)
- 40h 9 BYTEs reserved
- 49h BYTE serial and parallel port enable (see #01169)
- 4Ah 2 BYTEs reserved
- 4Ch BYTE Extended I/O Controller Recovery Timer (see #01170)
- 4Dh BYTE reserved
- 4Eh BYTE BIOS enable (see #01171)
- 4Fh BYTE FDC enable (see #01172)
- 50h 16 BYTEs reserved
- 60h BYTE PIRQA# Route Control (see #01076)
- 61h BYTE PIRQB# Route Control (see #01076)
- 62h 8 BYTEs reserved
- 6Ah WORD Miscellaneous Status (see #01173)
- 6Ch WORD IDE timing modes (see #01223)
- 6Eh 2 BYTEs reserved
- 70h BYTE Motherboard IRQ Route Control (see #01223)
- 71h 5 BYTEs reserved
- 76h 3 BYTEs Motherboard DMA Route Control (see #01219)
- 79h 5 BYTEs reserved
- 7Eh BYTE Audio enable (see #01174)
- 7Fh BYTE DMA channel 5-7 address size (see #01175)
- 80h BYTE PCI DMA enable (see #01176)
- 81h 7 BYTEs reserved
- 88h BYTE PCI DMA/PCI DMA expansion A (see #01177)
- 89h BYTE PCI DMA/PCI DMA expansion B (see #01177)
- 8Ah WORD Programmable Memory Address Control 0 (see #01178)
- 8Ch WORD Programmable Memory Address Control 1 (see #01178)
- 8Eh WORD Programmable Memory Address Mask (see #01179)
- 90h BYTE Programmable Address Range Enable (see #01180)
- 91h BYTE reserved
- 92h WORD Programmable Chip Select Control (see #01181)
- 94h WORD Programmable Address Control 1 (see #01182)
- 96h WORD Programmable Address Control 2 (see #01182)
- 98h WORD Programmable Address Control 3 (see #01182)
- 9Ah BYTE Programmable Address Mask A (see #01183)
- 9Bh BYTE Programmable Address Mask B (see #01184)
- 9Ch WORD I/O configuration address (see #01185)
- 9Eh 2 BYTEs reserved
- A0h WORD Programmable Address Control 4 (see #01182)
- A2h WORD Programmable Address Control 5 (see #01182)
- A4h BYTE Programmable Address Mask C (see #01186)
- A5h BYTE Peripheral Access Detect Enable 0 (see #01187)
- A6h BYTE Peripheral Access Detect Enable 1 (see #01188)
- A7h BYTE Peripheral Access Detect Enable 2 (see #01189)
- A8h WORD Local Trap Address for Device 3 (see #01190)
- AAh BYTE Local Trap Mask for Device 3 (see #01191)
- ABh BYTE Local Trap SMI Enable (see #01192)
- ACh 2 BYTEs reserved
- AEh BYTE Local Trap SMI Status (see #01192)
- AFh BYTE reserved
- B0h BYTE Local Standby SMI Enable (see #01193)
- B1h BYTE Local Standby Timer Reload Enable (see #01194)
- B2h BYTE Local Standby SMI Status (see #01193)
- B3h BYTE reserved
- B4h BYTE Local Standby Timer IDE Idle (see #01195)
- B5h BYTE Local Standby Timer Audio Idle (see #01195)
- B6h BYTE Local Standby Timer COM Idle (see #01195)
- B7h BYTE reserved
- B8h BYTE Local Standby Timer Device 1 Idle (see #01195)
- B9h BYTE Local Standby Timer Device 2 Idle (see #01195)
- BAh BYTE Local Standby Timer Device 3 Idle (see #01195)
- BBh BYTE reserved
- BCh BYTE Software/EXTSMI# SMI Delay Timer (see #01195)
- BDh BYTE Suspend SMI Delay Timer (see #01195)
- BEh BYTE Global Standby Timer (see #01195)
- BFh BYTE Clock Throttle Standby Timer (see #01195)
- C0h BYTE System Management Control (see #01196)
- C1h BYTE System SMI Enable (see #01197)
- C2h BYTE Miscellaneous SMI Enable (see #01198)
- C3h BYTE Global SMI Enable (see #01200)
- C4h 2 BYTEs reserved
- C6h BYTE System SMI Status (see #01197)
- C7h BYTE Miscellaneous SMI Status (see #01199)
- C8h BYTE Global SMI Status (see #01201)
- C9h 3 BYTEs reserved
- CCh BYTE Suspend/Resume Control 1 (see #01202)
- CDh BYTE Suspend/Resume Control 2 (see #01203)
- CEh BYTE SMOUT Control (see #01204)
- CFh BYTE reserved
- D0h BYTE System Event Enable 0 (see #01207)
- D1h BYTE System Event Enable 1 (see #01208)
- D2h BYTE System Event Enable 2 (see #01209)
- D3h BYTE Burst Count Timer (see #01195)
- D4h BYTE Clock Control (see #01205)
- D5h BYTE reserved
- D6h BYTE STPCLK# Low Timer (see #01195)
- D7h BYTE STPCLK# High Timer (see #01195)
- D8h BYTE Stop Break Event Enable 0 (see #01207)
- D9h BYTE Stop Break Event Enable 1 (see #01208)
- DAh BYTE Stop Break Event Enable 2 (see #01209)
- DBh 5 BYTEs reserved
- E0h BYTE Shadow Register (see #01206)
- E1h 3 BYTEs reserved
- E4h BYTE Burst Clock Event Enable 0 (see #01207)
- E5h BYTE Burst Clock Event Enable 1 (see #01208)
- E6h BYTE Burst Clock Event Enable 2 (see #01209)
- E7h BYTE Burst Clock Event Enable 3 (see #01210)
- E8h BYTE Burst Clock Event Enable 4 (see #01211)
- E9h BYTE Burst Clock Event Enable 5 (see #01212)
- EAh BYTE Burst Clock Event Enable 6 (see #01213)
- EBh BYTE reserved
- ECH BYTE Clock Throttle Break Event Enable 0 (see #01207)
- EDh BYTE Clock Throttle Break Event Enable 1 (see #01208)
- EEh BYTE Clock Throttle Break Event Enable 2 (see #01209)
- EFh BYTE Clock Throttle Break Event Enable 3 (see #01210)
- F0h BYTE Clock Throttle Break Event Enable 4 (see #01211)
- F1h BYTE Clock Throttle Break Event Enable 5 (see #01212)
- F2h BYTE Clock Throttle Break Event Enable 6 (see #01213)
- F3h 13 BYTES reserved
- SeeAlso: #00873,#01076
- Bitfields for Intel 82371MX serial and parallel port enable register:
- Bit(s) Description (Table 01169)
- 7 reserved
- 6 LPT3 enabled
- 5 LPT2 enabled
- 4 LPT1 enabled
- 3 COM4 enabled
- 2 COM3 enabled
- 1 COM2 enabled
- 0 COM1 enabled
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Extended I/O Controller Recovery Timer register:
- Bit(s) Description (Table 01170)
- 7 reserved
- 6 8-Bit I/O Recovery Enable
- =1 Enable value programmed into bits 5-3
- 5-3 8-Bit I/O Recovery Times
- 000 = 8 SYSCLK
- 001 = 1 SYSCLK (default)
- 010 = 2 SYSCLK
- 011 = 3 SYSCLK
- 100 = 4 SYSCLK
- 101 = 5 SYSCLK
- 110 = 6 SYSCLK
- 111 = 7 SYSCLK
- 2-0 Reserved (0)
- SeeAlso: #01168,#01087,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX BIOS enable register:
- Bit(s) Description (Table 01171)
- 7 Extended BIOS Enable
- 6 Lower BIOS Enable 1
- 5 Lower BIOS Enable 0
- 4 Lower BIOS CS# Enable 0
- 3 F Segment BIOS Enable
- 2 BIOSCS# Write Protect
- 1-0 reserved
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX FDC Enable register:
- Bit(s) Description (Table 01172)
- 7 Coprocessor Error fuction Enable
- 6 IRQ12/M Mouse Function Enable
- 5 System Management Output 5/Disk Output Enable
- 4 System Management Output 4/RTCALE Enable
- 3 Motherboad DMA 2 Disable
- 2 reserved
- 1 Floppy Secondary Addess Enable
- 0 Floppy Primary Address Enable
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Miscellaneous Status register:
- Bit(s) Description (Table 01173)
- 15-3 reserved
- 2-1 reserved (0)
- 0 ISA Clock Divisor Status
- =1 Divisor=3 (PCICLK=25MHz) default
- =0 Divisor=4 (PCICLK=33MHz)
- Note: This is a read-only register that reports on chipset jumper settings.
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Audio enable register:
- Bit(s) Description (Table 01174)
- 7 Audio enabled
- 6-4 Reserved
- 3-2 Audio I/O Address
- 00 0220h
- 01 0230h
- 10 0240h
- 11 0250h
- 1-0 reserved
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX DMA channel 5-7 address size register:
- Bit(s) Description (Table 01175)
- 7 Channel 7 16/8-Bit Count by Word/Byte
- =1 16-bit, count by word
- =0 8-bit, count by byte
- 6 Channel 6 16/8-Bit Count by Word/Byte (same values as bit 7)
- 5 Channel 5 16/8-Bit Count by Word/Byte (same values as bit 7)
- 4-3 reserved (0)
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX PCI DMA Enable register:
- Bit(s) Description (Table 01176)
- 7 DMA CH7 is on PCI Bus
- 6 DMA CH6 is on PCI Bus
- 5 DMA CH5 is on PCI Bus
- 4 reserved
- 3 DMA CH3 is on PCI Bus
- 2 DMA CH2 is on PCI Bus
- 1 DMA CH1 is on PCI Bus
- 0 DMA CH0 is on PCI Bus
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX PCI DMA/PCI DMA expansion registers:
- Bit(s) Description (Table 01177)
- 7-4 reserved
- 3 Expansion enabled
- 2-0 DMA channel
- Note: The PCI DMA Expansion request lines (REQ[A,B]#/GNT[A,B]#) provide PCI
- DMA and PCI DMA expansion support.
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Programmable Memory Address Control registers:
- Bit(s) Description (Table 01178)
- 15-0 Memory Access Control
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Programmable Memory Address Mask register:
- Bit(s) Description (Table 01179)
- 7-0 Memory Address Mask
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Programmable Address Range Enable register:
- Bit(s) Description (Table 01180)
- 7 PCS# Enabled for Programmable Address Range 2
- 6 PCS# Enabled for Programmable Address Range 1
- 5 Programmable Address range 5 Enabled
- 4 Programmable Address range 4 Enabled
- 3 Programmable Address range 5 Enabled
- 2 Programmable Address range 3 Enabled
- 1 Programmable Address range 1 Enabled
- 5 PCS# Address range Enabled
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Programmable Chip Select Control register:
- Bit(s) Description (Table 01181)
- 15-0 PCS# Address
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Programmable Address Control registers:
- Bit(s) Description (Table 01182)
- 15-0 Programmable Address Control
- Note: This register selects a 16-bit I/O address range to be forwarded to
- the Extended I/O Bus, if enabled in the Programmable Address Range
- register.
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Programmable Address Mask A register:
- Bit(s) Description (Table 01183)
- 7-4 Programmable Address Control 1 Mask
- 3-0 Programmable Chip Select Mask
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Programmable Address Mask B register:
- Bit(s) Description (Table 01184)
- 7-4 Programmable Address Control 3 Mask
- 3-0 Programmable Address Control 2 Mask
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX I/O configuration address register:
- Bit(s) Description (Table 01185)
- 15-10 reserved
- 9-1 I/O Configuration Address
- 0 I/O Configuration Address Enabled
- Note: This register provides an I/O address range to be forwarded to the
- Extended I/O Bus for accesses to the configuration space of an
- integrated I/O device. PCI address bits 9-1 are compared to bits
- 9-1 of this register. Address bits 31-10 must be 0.
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Programmable Address Mask C register:
- Bit(s) Description (Table 01186)
- 7-4 Programmable Address Control 5 Mask
- 3-0 Programmable Address Control 4 Mask
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Peripheral Access Detect Enable 0 register:
- Bit(s) Description (Table 01187)
- 7 Enable Audio-E
- 6 Enable Audio-D
- 5 Enable Audio-C
- 4 Enable Audio-B
- 3 Enable Audio-A
- 2 Enable Parallel 3
- 1 Enable Parallel 2
- 0 Enable Parallel 1
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Peripheral Access Detect Enable 1 register:
- Bit(s) Description (Table 01188)
- 7 Enable COM4
- 6 Enable COM3
- 5 Enable COM3
- 4 Enable COM1
- 3 Enable Secondary FDC
- 2 Enable Primary FDC
- 1 Enable Secondary IDE
- 0 Enable Promary IDE
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Peripheral Access Detect Enable 2 register:
- Bit(s) Description (Table 01189)
- 7 Enable PMAC1
- 6 Enable PMAC0
- 5 Enable PAC5
- 4 Enable PAC4
- 3 Enable PAC3
- 2 Enable PAC2
- 1 Enable PAC1
- 0 Enable PCSC
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Local Trap Address for Device 3 register:
- Bit(s) Description (Table 01190)
- 15-0 Local Trap Address base for Device 3
- Note: Is compared with bits 15-0 of PCI I/O Addresses. Address bits 31-16
- must be 0.
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Local Trap Mask for Device 3 register:
- Bit(s) Description (Table 01191)
- 7-4 Local Trap COM Port Select
- =1000 COM4 02E8h-02EFh
- =0100 COM3 03E8h-83EFh
- =0010 COM2 02F8h-02FFh
- =0001 COM1 03F8h-03FFh
- Note: These bits when set cause an SMI# when access to the corresponding I/O
- port range is made.
- 3-0 Local Trap Mask
- Note: This field selects the range of trappable addresses (in bytes).
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Local Trap SMI Enable/Status registers:
- Bit(s) Description (Table 01192)
- 7-6 reserved
- 5 IDE
- 4 Audio
- 3 COM
- 2 DEV3
- 1 DEV2
- 0 DEV1
- Note: a set bit indicates in the Enable register turns generation of SMI# on
- I/O accesses to the address region used by the selected device;
- a set bit in the Status register indicates which trap caused an SMI#
- interrupt.
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Local Standby SMI Enable/Status registers:
- Bit(s) Description (Table 01193)
- 7-6 reserved
- 5 IDE
- 4 Audio
- 3 COM
- 2 DEV3
- 1 DEV2
- 0 DEV1
- Note: each bit in the Enable register turns on the associated SMI Timer; a
- set bit in the Status register indicates which local standby timer
- caused the SMI interrupt
- SeeAlso: #01168,#01194,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Local Standby Timer Reload Enable register:
- Bit(s) Description (Table 01194)
- 7 IDE
- 6 Audio
- 5 COM
- 4 DEV3
- 3 DEV2
- 2 DEV1
- 1 Audio MDAK2
- 0 Audio MDAK1
- Note: This register enables local standby timer reloading. When the
- associated I/O address range is accessed, the standby timer is
- reloaded with it's default value. Also note the different bit-order
- for this register only.
- SeeAlso: #01168,#01193,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Count Value registers:
- Bit(s) Description (Table 01195)
- 7-0 Count value
- Note: This field contains the initial count value for various time-out
- events. 00 is an illegal programmed value. The programmed value is
- decremented by certain events or system clocks, and the event is
- triggered when the count reaches 0.
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX System Management Control register:
- Bit(s) Description (Table 01196)
- 7-3 reserved
- 2 Freeze (but not reset) all Power Management timers
- 1 =0 disable all Power Management functions
- 0 =0 disable SMI
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX System SMI Enable/Status registers:
- Bit(s) Description (Table 01197)
- 7 reserved
- 6 Write to APMC Port (software SMI)
- 5 EXTSMI#
- 4 IRQ12
- 3 IRQ8
- 2 IRQ4
- 1 IRQ3
- 0 IRQ1
- Note: each set bit in the Enable register turns on SMI# generation for the
- associated hardware event; a set bit in the Status register indicates
- which event caused the SMI interrupt
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Miscellaneous SMI Enable register:
- Bit(s) Description (Table 01198)
- 7-4 reserved
- 3 Write to APMC Port
- 2 SRBTN#
- 1 BATLOW#
- 0 reserved
- Note: Enables SMI# generation for the above hardware events
- SeeAlso: #01168,#01199,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Miscellaneous SMI Status register:
- Bit(s) Description (Table 01199)
- 7-4 reserved
- 3 =1 indicates system is in global standby mode
- 2 SRBTN# caused SMI
- 1 BATLOW# caused SMI
- 0 reserved
- SeeAlso: #01168,#01198,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Global SMI Enable register:
- Bit(s) Description (Table 01200)
- 7 System Events Enabled
- 6 Software SMI#'s (generated by bit 0 of this register) Enabled
- 5 reserved
- 4 Local Traps Enabled
- 3 Local Standby Timers Enabled
- 2 Global Standby Timer Enabled
- 1 SRBTN# and BATLOW# Enabled
- Note: Enables SMI# generation for the above hardware events
- SeeAlso: #01168,#01201,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Global SMI Status register:
- Bit(s) Description (Table 01201)
- 7 One of the System Events caused SMI
- 6 Software SMI or EXTSMI# caused SMI
- 5 Write to APMC caused SMI
- 4 Access to one of the Local Traps caused SMI
- 3 One of the local Standby timers caused SMI
- 2 Global Standby Timer caused SMI
- 1 SRBTN# or BATLOW# caused SMI
- 0 reserved
- SeeAlso: #01168,#01200,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Suspend/Resume Control 1 register:
- Bit(s) Description (Table 01202)
- 7 BATLOW# bypasses Suspend delay timer and activates SMI# immediately
- 6 IRQ8 will NOT cause a resume
- 5 COM RI (Ring) will NOT cause a resume ("Wake on Ring" function)
- 4 BATLOW# will not prevent a resume
- 3 is set by power management software at the end of a suspend routine
- 2 can be set by power management software at the end of a suspend routine
- 1-0 Set suspend mode
- 00 Suspend Disabled
- 01 reserved
- 10 Suspend-to-DRAM
- 11 Suspend-to-Disk
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Suspend/Resume Control 2 register:
- Bit(s) Description (Table 01203)
- 7-1 reserved
- 0 EXTSMI# will NOT cause a resume event
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX SMOUT Control register:
- Bit(s) Description (Table 01204)
- 7-6 reserved
- 5-0 Writing to any bits sets the state of the 6 SMOUTx pins.
- SMOUT5 is not effected if it is configured for DOE# function
- SMOUT4 is not effected if it is configured for RTCALE function
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Clock Control register:
- Bit(s) Description (Table 01205)
- 7 Clock Throttle standy by timer frequency
- =1 32ms
- =0 4ms
- Note: Sets the granularity of the Clock Throttle Standby Timer
- 6-5 reserved
- 4 Enable Auto Clock Throttle
- 3-2 STPCLK# Mode
- 00 Disable STPCLK# Function
- 01 Enable stop grant mode
- 10 Enable stop clock mode
- 11 reserved
- 1 Enable clock throttling
- 0 Enable "PCI Clock can be stopped"
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- (Table 01206)
- Values for Intel 82371MX Shadow Register
- Value AT Port Description
- 00h 00h Channel 0 Base Address Register (low byte)
- 01h 00h Channel 0 Base Address Register (high byte)
- 02h 01h Channel 0 Base Word Count Register (low byte)
- 03h 01h Channel 0 Base Word Count Register (high byte)
- 04h 02h Channel 1 Base Address Register (low byte)
- 05h 02h Channel 1 Base Address Register (high byte)
- 06h 03h Channel 1 Base Word Count Register (low byte)
- 07h 03h Channel 1 Base Word Count Register (high byte)
- 08h 04h Channel 2 Base Address Register (low byte)
- 09h 04h Channel 2 Base Address Register (high byte)
- 0Ah 05h Channel 2 Base Word Count Register (low byte)
- 0Bh 05h Channel 2 Base Word Count Register (high byte)
- 0Ch 06h Channel 3 Base Address Register (low byte)
- 0Dh 06h Channel 3 Base Address Register (high byte)
- 0Eh 07h Channel 3 Base Word Count Register (low byte)
- 0Fh 07h Channel 3 Base Word Count Register (high byte)
- 10h 08h DMA1 Command Register
- 11h 0Bh Channel 0 Mode Register
- 12h 0Bh Channel 1 Mode Register
- 13h 0Bh Channel 2 Mode Register
- 14h 0Bh Channel 3 Mode Register
- 15h 0Fh DMA1 Mask Register
- 16h C4h Channel 5 Base Address Register (low byte)
- 17h C4h Channel 5 Base Address Register (high byte)
- 18h C6h Channel 5 Base Word Count Register (low byte)
- 19h C6h Channel 5 Base Word Count Register (high byte)
- 1Ah C8h Channel 6 Base Address Register (low byte)
- 1Bh C8h Channel 6 Base Address Register (high byte)
- 1Ch CAh Channel 6 Base Word Count Register (low byte)
- 1Dh CAh Channel 6 Base Word Count Register (high byte)
- 1Eh CCh Channel 7 Base Address Register (low byte)
- 1Fh CCh Channel 7 Base Address Register (high byte)
- 20h CDh Channel 7 Base Word Count Register (low byte)
- 21h CDh Channel 7 Base Word Count Register (high byte)
- 22h D0h DMA2 Command Register
- 23h D6h Channel 5 Mode Register
- 24h D6h Channel 6 Mode Register
- 25h D6h Channel 7 Mode Register
- 26h DEh DMA2 Mask Register
- 27h 20h PIC1 ICW1
- 28h 21h PIC1 ICW2
- 29h 21h PIC1 ICW3
- 2Ah 21h PIC1 ICW4
- 2Bh 20h PIC1 OCW2
- 2Ch A0h PIC2 ICW1
- 2Dh A1h PIC2 ICW2
- 2Eh A1h PIC2 ICW3
- 2Fh A1h PIC2 ICW4
- 30h A0h PIC2 OCW2
- 31h 70h NMI mask / RTC address
- 32h 03FAh COM1 FIFO Enable Register (only bits 0,3,6 & 7 valid)
- 33h 02FAh COM2 FIFO Enable Register (only bits 0,3,6 & 7 valid)
- 34h 03EAh COM3 FIFO Enable Register (only bits 0,3,6 & 7 valid)
- 35h 02EAh COM4 FIFO Enable Register (only bits 0,3,6 & 7 valid)
- 36h 40h TIMER 0 Count Register (low byte)
- 37h 40h TIMER 0 Count Register (high byte)
- 38h 20h Master PIC OCW3 Register (bits 0,2 & 5 only valid)
- 39h A0h Slave PIC OCW3 Register (bits 0,2 & 5 only valid)
- Desc: This register is used to read the current programmed value of certain
- AT compatable I/O ports which are traditionally write-only.
- Note: To read a given register, write the value from the table to the shadow
- register, then immediately re-read the shadow register. The returned
- value is the current value of the I/O port.
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Burst Clock/Clock Throttle Break Enable 0 register:
- Bit(s) Description (Table 01207)
- 7 Enable IRQ7
- 6 Enable IRQ6
- 5 Enable IRQ7
- 4 Enable IRQ4
- 3 Enable IRQ3
- 2 reserved
- 1 Enable IRQ1
- 0 Enable IRQ0
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Event Enable 1 register:
- Bit(s) Description (Table 01208)
- 7 Enable IRQ15
- 6 Enable IRQ14
- 5 reserved
- 4 Enable IRQ12
- 3 Enable IRQ11
- 2 Enable IRQ10
- 1 Enable IRQ9
- 0 Enable IRQ8
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Event Enable 2 register:
- Bit(s) Description (Table 01209)
- 7 (Clock Throttle Break Event,Burst Clock Event)
- reserved
- (System Event,Stop Break Event,Clock Throttle Break Event)
- Enable BATLOW# & SRBTN#
- 6 Enable EXTSMI#
- 5 Enable SMI#
- 4 (System Event,Stop Break Event,Clock Throttle Break Event)
- Enable NMI
- (Burst Clock Event)
- reserved
- 3 (System Event,Stop Break Event,Clock Throttle Break Event)
- Enable INTR
- (Burst Clock Event)
- reserved
- 2 reserved
- 1 Enable COMRI#
- 0 Enable events of selected type
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Event Enable 3 register:
- Bit(s) Description (Table 01210)
- 7-2 reserved
- 1 Enable EXTEVNT#
- 0 Enable PHLDA#
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Event Enable 4 register:
- Bit(s) Description (Table 01211)
- 7 Enable PMAC1
- 6 Enable PMAC0
- 5 Enable PAC5
- 4 Enable PAC4
- 3 Enable PAC3
- 2 Enable PAC2
- 1 Enable PAC1
- 0 Enable PCSC
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Event Enable 5 register:
- Bit(s) Description (Table 01212)
- 7 Enable COM4
- 6 Enable COM3
- 5 Enable COM3
- 4 Enable COM1
- 3 Enable Secondary FDC
- 2 Enable Primary FDC
- 1 Enable Secondary IDE
- 0 Enable Promary IDE
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Bitfields for Intel 82371MX Event Enable 6 register:
- Bit(s) Description (Table 01213)
- 7 Enable Audio-E
- 6 Enable Audio-D
- 5 Enable Audio-C
- 4 Enable Audio-B
- 3 Enable Audio-A
- 2 Enable Parallel 3
- 1 Enable Parallel 2
- 0 Enable Parallel 1
- SeeAlso: #01168,PORT xxxxh"Intel 82371"
- Format of PCI Configuration for Intel 82371FB/82371SB Function 1 (IDE):
- Offset Size Description (Table 01214)
- 00h 64 BYTEs header (see #00878)
- (vender ID 8086h, device ID 1230h/7010h)
- 20h DWORD Bus Master Interface Base Address
- (see PORT xxxxh"Intel 82371SB")
- 40h WORD IDE timing modes, primary channel (see #01223)
- 42h WORD IDE timing modes, secondary channel (see #01223)
- 44h BYTE (82371SB) slave IDE timing register (see #01224)
- 45h 187 BYTEs reserved
- SeeAlso: #01167,#01215,PORT xxxxh"Intel 82371SB"
- Format of PCI Configuration data for Intel 82371SB Function 2 (USB):
- Offset Size Description (Table 01215)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 8086h, device ID 7020h)
- 20h DWORD I/O space base address
- (see PORT xxxxh"Intel 82371SB")
- 40h 32 BYTEs reserved
- 60h BYTE Serial Bus Specification release number
- 00h pre-release 1.0
- 10h Release 1.0
- 61h 9 BYTEs reserved
- 6Ah WORD miscellaneous status (see #01225)
- 6Ch 84 BYTEs reserved
- C0h WORD legacy support (see #01226)
- C2h 62 BYTEs reserved
- SeeAlso: #01167,#01214,PORT xxxxh"Intel 82371SB"
- Bitfields for Intel 82371FB/82371SB top of memory register:
- Bit(s) Description (Table 01216)
- 7-4 top of ISA memory (in megabytes, less 1; i.e. 0001 = 2M)
- 3 ISA/DMA lower BIOS forwarding enable
- 2 (82371SB) enable A000/B000 segment forwarding to PCI bus
- 1 enable forwarding ISA/DMA 512K-640K region to PCI bus
- 0 reserved
- SeeAlso: #01167,#01217
- Bitfields for Intel 82371FB/82371SB miscellaneous status register:
- Bit(s) Description (Table 01217)
- 15 (82371SB) enable SERR# on delayed transaction
- write 1 to clear this bit
- 14-8 reserved
- 7 (82371SB) NB Retry Enable
- 6 (82371SB) EXTSMI# Mode Enable
- allow special SERR# protocol between PCI bridge and 82371
- 5 reserved
- 4 (82371SB) enable USB
- disable USB's master enable and I/O decode enable prior to
- clearing this bit!
- 3 reserved
- 2 (82371FB) PCI Header Type Bit enable
- =1 report multifunction device in PCI configuration header
- 1 (82371FB) internal ISA DMA/external DMA Mode status (read-only)
- =0 normal DMA operation
- 0 (82371FB) ISA Clock Divisor status (read-only)
- (82371SB) ISA Clock Divisor (read-write)
- =1 SYSCLK clock divisor is 3
- =0 SYSCLK clock divisor is 4
- SeeAlso: #01167,#01216
- Bitfields for Intel 82371FB/82371SB/82371MX motherboard IRQ Route Control:
- Bit(s) Description (Table 01218)
- 7 disable IRQ routing
- 6 enable MIRQx/IRQx sharing
- 5 (82371SB only) enable IRQ0 output
- 4 reserved (0)
- 3-0 ISA IRQ number to which to route the PCI IRQ
- Notes: IRQs 0-2, 8, and 13 are reserved
- interrupt sharing should only be enabled when the device connected to
- the MIRQ line and the device connected to the IRQ line both produce
- active high, level triggered interrupts.
- SeeAlso: #01167,#01168,#01216,#01219
- Bitfields for Intel 82371FB/82371SB/82371MX motherboard DMA control:
- Bit(s) Description (Table 01219)
- 7 type F DMA buffer enable
- 6-4 reserved
- 3 (82371FB only) disable motherboadr DMA channel
- (SB/MX) reserved (0)
- 2-0 DMA channel number (100 = disabled [default])
- (82371FB) Type F and Motherboard DMA
- (82371SB/MX) Type F DMA
- SeeAlso: #01167,#01168,#01218
- Bitfields for Intel 82371FB/83271SB programmable chip select control register:
- Bit(s) Description (Table 01220)
- 15-2 I/O address which will assert PCS# signal
- 1-0 PCS address mask
- 00 four bytes
- 01 eight contiguous bytes
- 10 disabled
- 11 sixteen contiguous bytes
- SeeAlso: #01167,#01219,#01221
- Bitfields for Intel 82371SB Deterministic Latency Control register:
- Bit(s) Description (Table 01221)
- 7-4 reserved
- 3 enable SERR# on delayed transaction timeout
- 2 enable USB passive release
- 1 enable passive release
- 0 enable delayed transactions
- SeeAlso: #01167,#01220
- Bitfields for Intel 82371FB/82371SB SMI Control Register:
- Bit(s) Description (Table 01222)
- 7-5 reserved
- 4-3 Fast-Off Timer freeze/granularity selection
- 00 one minute granularity (assuming 33 MHz PCICLK)
- 01 disabled (frozen)
- 10 one PCICLK
- 11 one millisecond
- 2 STPCLK# scaling enable
- =1 enable Clock Scale bytes in PCI configuration space
- 1 STPCLK# signal enable
- =1 assert STPCLK# on read from PORT 00B2h
- 0 SMI# Gate
- =1 enable SMI# on system management interrupt
- Notes: bit 1 is cleared either with an explicit write of 0 here, or by any
- write to PORT 00B2h
- bit 0 does not affect the recording of SMI events, so a pending SMI
- will cause an immediate SMI# when the bit is set
- SeeAlso: #01167,#01079
- Bitfields for Intel 82371FB/82371SB/82371MX IDE timing modes:
- Bit(s) Description (Table 01223)
- 15 IDE decode enable
- 14 (82371SB) slave IDE timing register enable (see #01224)
- (82371MX) primary/secondary address decode (=0 primary, =1 secondary)
- 13-12 IORDY# sample point
- 00 five clocks after DIOx# assertion
- 01 four clocks
- 10 three clocks
- 11 two clocks
- 11-10 reserved
- 9-8 recovery time between IORDY# sample point and DIOx#
- 00 four clocks
- 01 three clocks
- 10 two clocks
- 11 one clock
- 7 (FB/SB) DMA timing enable only, drive 1
- (MX) reserved
- 6 prefetch and posting enable, drive 1
- 5 IORDY# sample point enable drive select 1
- 4 fast timing bank drive select 1
- 3 (FB/SB) DMA timing enable only, drive 0
- (MX) reserved
- 2 prefetch and posting enable, drive 0
- 1 IORDY# sample point enable drive select 0
- 0 fast timing bank drive select 0
- SeeAlso: #01214,#01168
- Bitfields for Intel 82371SB slave IDE timing register:
- Bit(s) Description (Table 01224)
- 7-6 secondary drive 1 IORDY# sample point
- 00 five clocks after DIOx# assertion
- 01 four clocks
- 10 three clocks
- 11 two clocks
- 5-4 secondary drive 1 recovery time
- 00 four clocks
- 01 three clocks
- 10 two clocks
- 11 one clock
- 3-2 primary drive 1 IORDY# sample point
- 1-0 primary drive 1 recovery time
- SeeAlso: #01223
- Bitfields for Intel 82371SB miscellaneous status:
- Bit(s) Description (Table 01225)
- 15-1 reserved
- 0 USB clock selection
- =1 48 MHz
- =0 24 MHz
- SeeAlso: #01215,#01226
- Bitfields for Intel 82371SB legacy support register:
- Bit(s) Description (Table 01226)
- 15 A20GATE pass-through sequence ended
- write 1 to clear this bit
- 14 reserved
- 13 USB PIRQ enabled
- 12 USR IRQ status (read-only)
- 11 trap caused by write to PORT 0064h
- write 1 to clear this bit
- 10 trap caused by read from PORT 0064h
- write 1 to clear this bit
- 9 trap caused by write to PORT 0060h
- write 1 to clear this bit
- 8 trap caused by read from PORT 0060h
- write 1 to clear this bit
- 7 enable SMI at end of A20GATE Pass-Through
- 6 A20GATE pass-through sequence in progress (read-only)
- 5 enable A20GATE pass-through sequence
- (write PORT 64h,D1h; write 60h,xxh; read 64h; write 64h,FFh)
- 4 enable trap/SMI on USB IRQ
- 3 enable trap/SMI on PORT 0064h write
- 2 enable trap/SMI on PORT 0064h read
- 1 enable trap/SMI on PORT 0060h write
- 0 enable trap/SMI on PORT 0060h read
- SeeAlso: #01215,#01225
- Format of PCI Configuration Data for Intel 82557:
- Offset Size Description (Table 01227)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 8086h, device ID 1229h) (see #00873)
- 10h DWORD base address of memory-mapped Control/Status Registers (4K)
- (see #01228)
- 14h DWORD base address of I/O-mapped Control/Status Registers (32 ports)
- 18h DWORD base address of Flash memory (1M)
- 40h 192 BYTEs unused
- SeeAlso: #01098
- Format of Intel 82557 Control/Status Registers:
- Offset Size Description (Table 01228)
- 00h WORD SCB status word
- 02h WORD SCB command word
- 04h DWORD SCB general pointer
- 08h DWORD PORT
- 0Ch WORD Flash control register
- 0Eh WORD EEPROM control register
- 10h DWORD MDI control register
- 14h DWORD Early RCV Interrupt Rx byte count (RXBC) register
- Note: see www.intel.com/design/network/datashts/64434604.pdf for additional
- details
- SeeAlso: #01228
- Format of PCI Configuration Data for Intel 82441FX:
- Offset Size Description (Table 01229)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 8086h, device ID 1237h) (see #00873)
- 40h 16 BYTEs reserved
- 50h WORD PMC Configuration (see #01230)
- 52h BYTE deturbo counter control
- when deturbo mode is selected (see PORT 0CF9h), the chipset
- places a hold on the memory bus for a fraction of the
- time inversely proportional to the value in this register
- (i.e. C0h = 1/4, 80h = 1/2, 40h = 3/4, 20h = 7/8, etc.)
- 53h BYTE DBX buffer control (see #01231)
- 54h BYTE auxiliary control (see #01232)
- 55h WORD DRAM Row Type (see #01233)
- 57h BYTE DRAM Control (see #01234)
- 58h BYTE DRAM Timing (see #01235)
- 59h 7 BYTEs Programmable Attribute Map registers 0-6 (see #01118)
- 60h 8 BYTEs DRAM Row Buondary registers 0-7
- each register N indicates cumulative amount of memory in rows
- 0-N (each 64 bits wide), in 8M units
- 68h BYTE Fixed DRAM Hole Control
- 69h 7 BYTEs reserved
- 70h BYTE Multi-Transaction Timer
- number of PCLKs guaranteed to the current agent before the
- 82441 will grant the bus to another PCI agent on request
- 71h BYTE CPU Latency Timer (see #01236)
- 72h BYTE System Management RAM control (see #01123)
- 73h 29 BYTEs reserved
- 90h BYTE Error Command (see #01237)
- 91h BYTE Error Status (see #01238)
- 92h BYTE reserved
- 93h BYTE Turbo Reset Control (see #01239)
- 94h 108 BYTEs reserved
- SeeAlso: #01098,#01108
- Bitfields for Intel 82441FX PMC Configuration Register:
- Bit(s) Description (Table 01230)
- 15 WSC Protocol Enable
- 14 Row Select/Extra Copy select (read-only)
- =1 pins on PMC configured as two additional row selects (6/7)
- =0 extra copy of two lowest memory address bits enabled
- 13-10 reserved
- 9-8 host frequence select
- 00 reserved
- 01 60 MHz
- 10 66 MHz
- 11 reserved
- 7 reserved
- 6 ECC/Parity TEST enable
- 5-4 DRAM Data Integrity Mode
- 00 no parity/ECC
- 01 parity generated and checked
- 10 ECC generated and checked, correction disabled
- 10 ECC generated and checked, correction enabled
- 3 reserved
- 2 In-Order Queue size (0=one, 1=four)
- 1-0 reserved
- SeeAlso: #01229,#01231
- Bitfields for Intel 82441FX DBX buffer control register:
- Bit(s) Description (Table 01231)
- 7 enable delayed transactions
- 6 enable CPU-to-PCI IDE posting
- 5 enable USWC Write Post during I/O Bridge access
- 4 disable PCI Delayed Transaction timer
- 3 enable CPU-to-PCI Write Post
- 2 enable PCI-to-DRAM pipeline
- 1 enable PCI Burst Write Combining
- 0 enable Read-Around-Write
- SeeAlso: #01229,#01230
- Bitfields for Intel 82441FX auxiliary control register:
- Bit(s) Description (Table 01232)
- 7 enable RAS precharge
- 6-2 reserved
- 1 Lower Memory Address Buffer Set A
- =0 8mA
- =1 12mA
- 0 reserved
- SeeAlso: #01229
- Bitfields for Intel 82441FX DRAM Row Type register:
- Bit(s) Description (Table 01233)
- 15-14 row 7 DRAM type
- 13-12 row 6 DRAM type
- 11-10 row 5 DRAM type
- 9-8 row 4 DRAM type
- 7-6 row 3 DRAM type
- 5-4 row 2 DRAM type
- 3-2 row 1 DRAM type
- 1-0 row 0 DRAM type
- 00 fast page-mode DRAM
- 01 EDO DRAM
- 10 BEDO DRAM
- 11 empty row
- SeeAlso: #01229,#01234
- Bitfields for Intel 82441FX DRAM Control register:
- Bit(s) Description (Table 01234)
- 7 reserved
- 6 enable DRAM Refresh Queue
- 5 enable DRAM EDO Auto-Detect Mode
- 4 DRAM Refresh Type
- =0 CAS before RAS
- =1 RAS only
- 3 reserved
- 2-0 DRAM refresh rate
- 000 disabled
- 001 normal (as set by PMCCFG register)
- 01x reserved
- 1xx reserved
- 111 fast refresh (every 32 host clocks)
- SeeAlso: #01229,#01233,#01235
- Bitfields for Intel 82441FX DRAM Timing register:
- Bit(s) Description (Table 01235)
- 7 reserved
- 6 enable WCBR Mode
- 5-4 DRAM Read Burst Timing
- BEDO EDO FPM
- 00 x333 x444 x444
- 01 x222 x333 x444
- 10 x222 x222 x333
- 11 res. res. res.
- 3-2 DRAM Write Burst Timing
- (B)EDO FPM
- 00 x444 x444
- 01 x333 x444
- 10 x333 x333
- 11 x222 x333
- 1 RAS-to-CAS delay
- =1 one clock
- =0 zero clocks
- 0 insert one MA Wait State
- SeeAlso: #01229,#01234
- Bitfields for Intel 82441FX CPU Latency Timer register:
- Bit(s) Description (Table 01236)
- 7-5 reserved
- 4-0 snoop stall count value
- SeeAlso: #01229
- Bitfields for Intel 82441FX Error Command register:
- Bit(s) Description (Table 01237)
- 7-5 reserved
- 4 enable SERR# on receiving Target Abort
- 3 enable SERR# on PCI Parity Error (PERR#)
- 2 reserved
- 1 enable SERR# on receiving multiple-bit ECC/Parity error
- 0 enable SERR# on receiving single-bit ECC error
- SeeAlso: #01229,#01238
- Bitfields for Intel 82441FX Error Status register:
- Bit(s) Description (Table 01238)
- 7-5 DRAM row causing first multi-bit error (read-only)
- 4 multiple-bit uncorrectable error detected
- write 1 to this bit to clear it
- 3-1 DRAM row causing first single-bit error (read-only)
- 0 single-bit correctable ECC error detected
- write 1 to this bit to clear it
- SeeAlso: #01229,#01237
- Bitfields for Intel 82441FX,82443EX/LX Turbo Reset Control register:
- Bit(s) Description (Table 01239)
- 7-4 reserved
- 3 enable BIST on hard reset
- 2 reset CPU
- 1 reset mode (0 = soft reset, 1 = hard reset)
- 0 deturbo mode (82441FX)
- reserved (82443EX/LX)
- Note: BIST should not be enabled during a soft reset
- SeeAlso: #01229,#01129,PORT 0CF9h
- Format of PCI Configuration data for Intel 82454KX/GX:
- Offset Size Description (Table 01240)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 8086h, device ID 84C4h)
- !!!intel\29052301.pdf pg. 40
- 40h DWORD top of system memory
- 44h 4 BYTEs reserved
- 48h BYTE PCI decode mode
- 49h BYTE bridge device number
- 4Ah BYTE PCI bus number
- 4Bh BYTE PCI subordinate bus number
- 4Ch BYTE PB configuration
- 4Dh 4 BYTEs reserved
- 51h BYTE deturbo counter control
- 52h BYTE reserved
- 53h BYTE CPU read/write control
- 54h WORD PCI read/write control
- 56h BYTE reserved
- 57h BYTE SMM Enable
- 58h BYTE video buffer area enable
- 59h 7 BYTEs Programmable Attribute Map registers 0-6 (see #01118)
- 60h 16 BYTEs reserved
- 70h BYTE Error Command
- 71h BYTE Error Status
- 72h 6 BYTEs reserved
- 78h WORD memory gap range
- 7Ah WORD memory gap upper address
- 7Ch DWORD PCI frame buffer
- 80h 8 BYTEs reserved
- 88h DWORD high memory gap start address
- 8Ch DWORD high memory gap end address
- 90h 8 BYTEs reserved
- 98h DWORD (GX only) I/O Space Range #1
- 9Ch BYTE PCI reset
- 9Dh 3 BYTEs reserved
- A0h DWORD (GX only) I/O Space Range #2
- A4h DWORD I/O APIC range
- A8h 8 BYTEs reserved
- B0h WORD configuration values driven on reset
- B2h 2 BYTEs reserved
- B4h WORD captured system configuration values (read-only)
- B6h 2 BYTEs reserved
- B8h DWORD SMM range
- BCh BYTE high BIOS register
- BDh 3 BYTEs reserved
- C0h DWORD PB Extended Error Reporting Command
- C4h DWORD PB Extended Error Reporting Status
- C8h DWORD PB Retry Timers
- CCh 52 BYTEs reserved
- SeeAlso: #00878
- --------X-1AB10ASF9004-----------------------
- INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION DWORD (Adaptec devices)
- AX = B10Ah subfn 9004h
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- DI = register number (0000h-00FFh) (see #01241)
- Return: CF clear if successful
- ECX = dword read
- CF set on error
- AH = status (00h,87h) (see #00729)
- EAX, EBX, ECX, and EDX may be modified
- all other flags (except IF) may be modified
- Notes: this function may require up to 1024 byte of stack; it will not enable
- interrupts if they were disabled before making the call
- the meanings of BL and BH on entry were exchanged between the initial
- drafts of the specification and final implementation
- SeeAlso: AX=B10Ah,AX=B10Ah/SF=8086h
- Format of PCI Configuration Data for AIC-78xx PCI SCSI controllers:
- Offset Size Description (Table 01241)
- 00h 64 BYTEs header (see #00878)
- (vendor ID 9004h) (see #00875 for device ID)
- 40h WORD device configuration register (DEVCONFIG) (see #01242)
- SeeAlso: #00734,PORT xxxxh"Adaptec AIC-78xx"
- Bitfields for AIC-78xx device configuration register (DEVCONFIG):
- Bit(s) Description (Table 01242)
- 15-11 reserved
- 10 (AIC-787x+) multi-port mode (MPORTMODE)
- 9 (AIC-787x+) external SRAM present? (RAMPSM)
- 8 "VOLSENSE"
- 7 SCB RAM select (SCBRAMSEL)
- 6 "MRDCEN"
- 5 (AIC-787x+) external SCB SRAM access time (EXTSCBTIME)
- 4 (AIC-787x+) external SCB SRAM parity enable (EXTSCBPEN)
- 3 "BERREN"
- 2 "DACEN"
- 1 SCSI terminator power level (STPWLEVEL)
- 0 (AIC-787x+) differential active negation enable (DIFACTNEGEN)
- Note: clearing bit 7 allows access to the external SCB SRAM
- SeeAlso: #01241
- --------X-1AB10B-----------------------------
- INT 1A - PCI BIOS v2.0c+ - WRITE CONFIGURATION BYTE
- AX = B10Bh
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- DI = register number (0000h-00FFh)
- CL = byte to write
- Return: CF clear if successful
- CF set on error
- AH = status (00h,87h) (see #00729)
- EAX, EBX, ECX, and EDX may be modified
- all other flags (except IF) may be modified
- Notes: this function may require up to 1024 byte of stack; it will not enable
- interrupts if they were disabled before making the call
- the meanings of BL and BH on entry were exchanged between the initial
- drafts of the specification and final implementation
- SeeAlso: AX=B108h,AX=B10Ch,AX=B10Dh,AX=B18Bh,INT 2F/AX=1684h/BX=304Ch
- --------X-1AB10C-----------------------------
- INT 1A - PCI BIOS v2.0c+ - WRITE CONFIGURATION WORD
- AX = B10Ch
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- DI = register number (multiple of 2 less than 0100h)
- CX = word to write
- Return: CF clear if successful
- CF set on error
- AH = status (00h,87h) (see #00729)
- EAX, EBX, ECX, and EDX may be modified
- all other flags (except IF) may be modified
- Notes: this function may require up to 1024 byte of stack; it will not enable
- interrupts if they were disabled before making the call
- the meanings of BL and BH on entry were exchanged between the initial
- drafts of the specification and final implementation
- SeeAlso: AX=B109h,AX=B10Bh,AX=B10Dh,AX=B18Ch,INT 2F/AX=1684h/BX=304Ch
- --------X-1AB10D-----------------------------
- INT 1A - PCI BIOS v2.0c+ - WRITE CONFIGURATION DWORD
- AX = B10Dh
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- DI = register number (multiple of 4 less than 0100h)
- ECX = dword to write
- Return: CF clear if successful
- CF set on error
- AH = status (00h,87h) (see #00729)
- EAX, EBX, ECX, and EDX may be modified
- all other flags (except IF) may be modified
- Notes: this function may require up to 1024 byte of stack; it will not enable
- interrupts if they were disabled before making the call
- the meanings of BL and BH on entry were exchanged between the initial
- drafts of the specification and final implementation
- SeeAlso: AX=B10Ah,AX=B10Bh,AX=B10Ch,AX=B18Dh,INT 2F/AX=1684h/BX=304Ch
- --------X-1AB10EBX0000-----------------------
- INT 1A - PCI BIOS v2.1+ - GET IRQ ROUTING INFORMATION
- AX = B10Eh
- BX = 0000h
- DS = segment/selector for PCI BIOS data
- (real mode: F000h; 16-bit PM: physical 000F0000h; 32-bit PM: as
- specified by BIOS32 services directory)
- ES:(E)DI -> IRQ routing table header (see #01259 at AX=B406h)
- Return: CF clear if successful
- AH = 00h
- BX = bit map of IRQ channels permanently dedicated to PCI
- WORD ES:[DI] = size of returned data
- CF set on error
- AH = error code (59h) (see #01243)
- WORD ES:[DI] = required size of buffer
- SeeAlso: AX=B10Fh,AX=B406h,INT 2F/AX=1684h/BX=304Ch
- --------X-1AB10F-----------------------------
- INT 1A - PCI BIOS v2.1+ - SET PCI IRQ
- AX = B10Fh
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- CH = number of IRQ to connect
- CL = number of interrupt pin (0Ah=INTA# to 0Dh=INTD#) to reprogram
- DS = segment/selector for PCI BIOS data
- (real mode: F000h; 16-bit PM: physical 000F0000h; 32-bit PM: as
- specified by BIOS32 services directory)
- Return: CF clear if successful
- AH = 00h
- CF set on error
- AH = error code (59h) (see #01243)
- Note: assumes that the calling application has determined the IRQ routing
- topology (see AX=B10Eh), has ensured that the selected IRQ will not
- cause a conflict, and will update the interrupt line configuration
- register on all devices which currently use the IRQ line
- SeeAlso: AX=B10Eh
- --------X-1AB181-----------------------------
- INT 1A - PCI BIOS v2.0c+ - INSTALLATION CHECK (32-bit)
- AX = B181h
- Return: as for AX=B101h
- SeeAlso: AX=B101h
- --------X-1AB182-----------------------------
- INT 1A - PCI BIOS v2.0c+ - FIND PCI DEVICE (32-bit)
- AX = B182h
- CX = device ID (see #00735,#00742,#00743,#00873,#00875)
- DX = vendor ID (see #00732 at AX=B102h)
- SI = device index (0-n)
- Return: as for AX=B102h
- SeeAlso: AX=B102h
- --------X-1AB183-----------------------------
- INT 1A - PCI BIOS v2.0c+ - FIND PCI CLASS CODE (32-bit)
- AX = B183h
- ECX = class code (bits 23-0)
- SI = device index (0-n)
- Return: as for AX=B103h
- SeeAlso: AX=B103h
- --------X-1AB186-----------------------------
- INT 1A - PCI BIOS v2.0c+ - PCI BUS-SPECIFIC OPERATIONS (32-bit)
- AX = B186h
- BH = bus number
- EDX = Special Cycle data
- Return: as for AX=B106h
- Note: the meanings of BL and BH on return were exchanged between the initial
- drafts of the specification and final implementation
- SeeAlso: AX=B106h
- --------X-1AB188-----------------------------
- INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION BYTE (32-bit)
- AX = B188h
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- DI = register number (0000h-00FFh)
- Return: as for AX=B108h
- Note: the meanings of BL and BH on return were exchanged between the initial
- drafts of the specification and final implementation
- SeeAlso: AX=B108h,AX=B189h,AX=B18Ah
- --------X-1AB189-----------------------------
- INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION WORD (32-bit)
- AX = B189h
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- DI = register number (0000h-00FFh)
- Return: as for AX=B109h
- Note: the meanings of BL and BH on return were exchanged between the initial
- drafts of the specification and final implementation
- SeeAlso: AX=B109h,AX=B188h,AX=B18Ah
- --------X-1AB18A-----------------------------
- INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION DWORD (32-bit)
- AX = B18Ah
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- DI = register number (0000h-00FFh)
- Return: as for AX=B10Ah
- Note: the meanings of BL and BH on return were exchanged between the initial
- drafts of the specification and final implementation
- SeeAlso: AX=B10Ah,AX=B188h,AX=B189h
- --------X-1AB18B-----------------------------
- INT 1A - PCI BIOS v2.0c+ - WRITE CONFIGURATION BYTE (32-bit)
- AX = B18Bh
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- DI = register number (0000h-00FFh)
- CL = byte to write
- Return: as for AX=B10Bh
- Note: the meanings of BL and BH on return were exchanged between the initial
- drafts of the specification and final implementation
- SeeAlso: AX=B10Bh,AX=B18Ch,AX=B18Dh
- --------X-1AB18C-----------------------------
- INT 1A - PCI BIOS v2.0c+ - WRITE CONFIGURATION WORD (32-bit)
- AX = B18Ch
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- DI = register number (multiple of 2 less than 0100h)
- CX = word to write
- Return: as for AX=B10Ch
- Note: the meanings of BL and BH on return were exchanged between the initial
- drafts of the specification and final implementation
- SeeAlso: AX=B10Ch,AX=B18Bh,AX=B18Dh
- --------X-1AB18D-----------------------------
- INT 1A - PCI BIOS v2.0c+ - WRITE CONFIGURATION DWORD (32-bit)
- AX = B18Dh
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- DI = register number (multiple of 4 less than 0100h)
- ECX = dword to write
- Return: as for AX=B10Dh
- Note: the meanings of BL and BH on return were exchanged between the initial
- drafts of the specification and final implementation
- SeeAlso: AX=B10Dh,AX=B18Bh,AX=B18Ch
- --------X-1AB18EBX0000-----------------------
- INT 1A - PCI BIOS v2.1+ - GET IRQ ROUTING INFORMATION (32-bit)
- AX = B18Eh
- BX = 0000h
- DS = segment/selector for PCI BIOS data
- (real mode: F000h; 16-bit PM: physical 000F0000h; 32-bit PM: as
- specified by BIOS32 services directory)
- ES:(E)DI -> IRQ routing table header (see #01259 at AX=B406h)
- Return: CF clear if successful
- AH = 00h
- BX = bit map of IRQ channels permanently dedicated to PCI
- WORD ES:[DI] = size of returned data
- CF set on error
- AH = error code (59h) (see #01243)
- WORD ES:[DI] = required size of buffer
- SeeAlso: AX=B10Fh,AX=B406h,INT 2F/AX=1684h/BX=304Ch
- --------X-1AB18F-----------------------------
- INT 1A - PCI BIOS v2.1+ - SET PCI IRQ (32-bit)
- AX = B18Fh
- BH = bus number
- BL = device/function number (bits 7-3 device, bits 2-0 function)
- CH = number of IRQ to connect
- CL = number of interrupt pin (0Ah=INTA# to 0Dh=INTD#) to reprogram
- DS = segment/selector for PCI BIOS data
- (real mode: F000h; 16-bit PM: physical 000F0000h; 32-bit PM: as
- specified by BIOS32 services directory)
- Return: CF clear if successful
- AH = 00h
- CF set on error
- AH = error code (59h) (see #01243)
- Note: assumes that the calling application has determined the IRQ routing
- topology (see AX=B10Eh), has ensured that the selected IRQ will not
- cause a conflict, and will update the interrupt line configuration
- register on all devices which currently use the IRQ line
- SeeAlso: AX=B10Eh
- --------X-1AB2-------------------------------
- INT 1A - Reserved For PCI
- AH = B2h
- --------X-1AB3-------------------------------
- INT 1A - Reserved For PCI
- AH = B3h
- --------X-1AB400-----------------------------
- INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - INSTALLATION CHECK
- AX = B400h
- Return: CF clear if installed
- AX = 0000h if installed
- BH = ACFG major version (02h)
- BL = ACFG minor version (08h)
- CX = ??? (0002h)
- EDX = 47464341h ('GFCA', which is byte-swapped 'ACFG')
- SI = ??? (001Fh)
- SeeAlso: AX=B401h,AX=B402h,AX=B403h,AX=B404h,AX=B405h,AX=B406h,AX=B407h
- SeeAlso: @xxxxh:xxxxh"Plug-and-Play"
- (Table 01243)
- Values for Intel Plug-and-Play AUTO-CONFIGURATION error codes:
- 0000h successful
- 0001h specified action could not be completed
- 0051h ???
- 0055h unable to read/write configuration table from/to nonvolatile storage
- 0056h not a valid configuration table or wrong table version
- 0059h buffer too small
- 0081h unsupported function
- FFFFh ???
- SeeAlso: #F0081
- --------X-1AB401-----------------------------
- INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - GET DEFAULT CONFIG TABLE
- AX = B401h
- Return: CF clear if successful
- AX = 0000h
- BX = maximum size of configuration table in bytes
- CX = required configuration buffer size
- (includes scratch space used by ACFG code)
- EDI = linear/physical address of ESCD table (see #01244)
- CF set on error
- AX = error code (see #01243)
- SeeAlso: AX=B400h,AX=B402h,@xxxxh:xxxxh"Plug-and-Play"
- Format of Intel Plug-and-Play Extended System Configuration Data table:
- Offset Size Description (Table 01244)
- 00h WORD total length of this table
- 02h 4 BYTEs signature "ACFG"
- 06h BYTE minor version number
- 07h BYTE major version number (currently 02h)
- 08h BYTE number of boards listed in the configuration data
- 09h 3 BYTEs reserved (00h)
- 0Ch var board data
- WORD checksum
- Notes: this table contains information about the standard devices in the
- system, such as serial ports, parallel ports, etc. For each device,
- it includes at least the I/O port address (03F8h,02F8h,0378h,etc).
- the sum of all words in the table, including the checksum field (with
- implied zero padding if the length is odd), must equal 0000h
- SeeAlso: #01245
- Format of Extended System Configuration Data Board Header:
- Offset Size Description (Table 01245)
- 00h WORD length of this header in bytes
- 02h BYTE slot number
- 00h motherboard
- 01h-0Fh ISA/EISA
- 10h-40h PCI
- 03h BYTE reserved (00h)
- SeeAlso: #01244,#01246
- Format of Extended System Configuration Data Freeform Board Header:
- Offset Size Description (Table 01246)
- 00h 4 BYTEs signature "ACFG"
- 04h BYTE minor version number
- 05h BYTE major version number (currently 02h)
- 06h BYTE board type
- 01h ISA
- 02h EISA
- 04h PCI
- 08h PCMCIA
- 10h PnPISA
- 20h MCA
- 07h BYTE reserved (00h)
- 08h WORD disabled functions (bit N set = function N disabled)
- 0Ah WORD configuration error functions
- 0Ch WORD reconfigurable functions (bit N set = function N reconfig'able)
- 0Eh 2 BYTEs reserved (00h)
- SeeAlso: #01249,#01250
- Format of Extended System Configuration Data Freeform PCI Device Data:
- Offset Size Description (Table 01247)
- 00h BYTE PCI bus number
- 01h BYTE PCI device and function number
- 02h WORD PCI device identifier
- 04h WORD PCI vendor ID (see #00732 at INT 1A/AX=B102h)
- 06h 2 BYTEs reserved (00h)
- SeeAlso: #01247,#01250
- Format of Extended System Configuration Data Freeform PnP ISA Board ID:
- Offset Size Description (Table 01248)
- 00h DWORD vendor ID (EISA device identifier)
- 04h DWORD serial number
- SeeAlso: #01248,#01249
- Format of Extended System Configuration Data PnP ISA ECD Extension Function:
- Offset Size Description (Table 01249)
- 00h WORD 001Eh (length of this structure)
- 02h BYTE 01h (selection size)
- 03h BYTE 00h (selection data)
- 04h BYTE C0h (function information byte) (see #01252)
- 05h BYTE 18h (size of following free-format data)
- 06h 16 BYTEs freeform board header (see #01246)
- 16h 8 BYTEs Plug-and-Play board ID (see #01248)
- Note: ECD = Extended Configuration Data; this structure must be the last
- "function" for a particular ISA Plug-and-Play board
- SeeAlso: #01250
- Format of Extended System Configuration Data PCI ECD Extension Function:
- Offset Size Description (Table 01250)
- 00h WORD length of this structure (at least 001Eh, up to 0056h)
- 02h BYTE 01h (selection size)
- 03h BYTE 00h (selection data)
- 04h BYTE C0h (function information byte) (see #01252)
- 05h BYTE size of following free-format data (at least 18h, max 50h)
- 06h 16 BYTEs freeform board header (see #01246)
- 16h 8N BYTEs PCI board ID (see #01247) for one to eight boards
- Notes: ECD = Extended Configuration Data; this structure must be the last
- "function" for a particular PCI board
- AMI BIOS v1.00.05.AX1 sets the length field to 001Ch for entries with
- a single board ID, apparently treating the field as the length of
- the remainder of the structure instead of the full structure's length
- SeeAlso: #01249
- Bitfields for EISA ID and Slot Information:
- Bit(s) Description (Table 01251)
- 3-0 selector among duplicate configuration file names (0000 if no dups)
- 5-4 slot type
- 00 expansion slot
- 01 embedded
- 10 virtual slot
- 11 reserved
- 6 ID is readable
- 7 duplicate IDs present
- 8 board can be disabled
- 9 IOCHKERR supported
- 10 board or entries locked
- 13-11 reserved
- 14 board does not have or need configuration file
- 15 configuration not complete
- SeeAlso: #01252
- Bitfields for EISA Function Information:
- Bit(s) Description (Table 01252)
- 0 subtype data
- 1 memory information (see #01253)
- 2 IRQ information (see #01255)
- 3 DMA information (see #01256)
- 4 port range information (see #01257)
- 5 port initialization data (see #01258)
- 6 free form data
- 7 function disabled
- SeeAlso: #01249,#01250,#01251
- Format of EISA Memory Information:
- Offset Size Description (Table 01253)
- 00h WORD memory information flags (see #01254)
- 02h 3 BYTEs high 24 bits of memory start address (LSB first)
- 05h WORD memory size in K (0000h = 65536K)
- SeeAlso: #01252
- Bitfields for EISA Memory Information Flags:
- Bit(s) Description (Table 01254)
- 0 writable (RAM rather than ROM)
- 1 cached
- 2 write-back cache rather than write-through
- 4-3 memory type
- 00 system
- 01 expantion
- 10 virtual
- 11 other
- 5 shared
- 6 reserved (0)
- 7 more entries follow
- 9-8 memory width
- 00 byte
- 01 word
- 10 dword
- 11 reserved
- 11-10 decoded address lines
- 00 = 20
- 01 = 24
- 10 = 32
- 11 reserved
- 15-12 reserved (0)
- SeeAlso: #01253
- Bitfields for EISA IRQ Information:
- Bit(s) Description (Table 01255)
- 3-0 IRQ number
- 4 reserved (0)
- 5 IRQ triggering (0 = edge, 1 = level)
- 6 IRQ is shareable
- 7 more entries follow
- 15-8 reserved (0)
- SeeAlso: #01252
- Bitfields for EISA DMA Information:
- Bit(s) Description (Table 01256)
- 2-0 DMA channel number
- 5-3 reserved (0)
- 6 shareable
- 7 more entries follow
- 9-8 reserved
- 11-10 DMA transfer size
- 00 byte
- 01 word
- 10 dword
- 11 word, but count in bytes
- 13-12 DMA timing
- 00 ISA-compatible
- 01 EISA type "A"
- 10 EISA type "B"
- 11 EISA type "C"/"F" (burst)
- 15-14 reserved (0)
- SeeAlso: #01252
- Format of EISA Port Range Information:
- Offset Size Description (Table 01257)
- 00h BYTE port description
- bits 4-0: number of sequential ports
- bit 5 reserved (0)
- bit 6: shareable
- bit 7: more entries follow
- 01h WORD I/O port address
- SeeAlso: #01252,#01258
- Format of EISA Port Initialization Data:
- Offset Size Description (Table 01258)
- 00h BYTE flags
- bits 1-0: port size
- 00 byte
- 01 word
- 10 dword
- 11 reserved
- bit 2: masked write
- bits 6-3 reserved (0)
- bit 7: more entries follow
- 01h ???
- SeeAlso: #01252,#01257
- --------X-1AB402-----------------------------
- INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - COPY AND VERIFY CONFIG TABLE
- AX = B402h
- DS:SI -> configuration table (see #01244)
- ES:DI -> buffer for copy of configuration table
- Return: CF clear if successful
- AX = 0000h
- CF set on error
- AX = error code (0055h,0056h) (see #01243)
- Note: the buffer pointed at by ES:DI must be at least as large as the
- maximum configuration table size reported by AX=B401h
- SeeAlso: AX=B400h,AX=B401h,AX=B403h
- --------X-1AB403-----------------------------
- INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - STORE ESCD TABLE IN NVRAM
- AX = B403h
- DS:SI -> configuration table (see #01244)
- Return: CF clear if successful
- AX = 0000h
- CF set on error
- AX = error code (0055h) (see #01243)
- Note: sets the configuration table's checksum field, then copies the table
- into nonvolatile storage (i.e. FlashROM)
- SeeAlso: AX=B400h,AX=B402h
- --------X-1AB404-----------------------------
- INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - GET AVAILABLE IRQs???
- AX = B404h
- BX = bitmap of IRQs being used???
- Return: CF clear if successful
- AX = 0000h
- BX = available for ISA??? (not(BXin) & A127h)
- CX = available for on-board I/O??? (not(BXin) & 40D8h)
- DX = available for PCI??? (either not(BXin) & 0E00h or 0000h)
- CF set on error
- AX = error code (0051h) (see #01243)
- Note: the various vector types have also been called "shareable",
- "unshareable", and "avoidable"
- SeeAlso: AX=B400h,INT 2F/AX=1684h/BX=304Ch
- --------X-1AB405-----------------------------
- INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - GET ???
- AX = B405h
- Return: AX = ??? (0008h)
- SeeAlso: AX=B400h
- --------X-1AB406-----------------------------
- INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - GET PCI IRQ ROUTING TABLE
- AX = B406h
- ES:DI -> IRQ routing table header (see #01259)
- Return: CF clear if successful
- AX = 0000h
- WORD ES:[DI] = size of returned data
- CF set on error
- AX = error code (0059h) (see #01243)
- WORD ES:[DI] = required size of buffer
- SeeAlso: AX=B400h,AX=B404h,AX=B10Eh,INT 2F/AX=1684h/BX=304Ch
- Format of Intel Plug-and-Play AUTO-CONFIGURATION PCI IRQ routing header:
- Offset Size Description (Table 01259)
- 00h WORD length of IRQ routing table buffer
- 02h DWORD -> IRQ routing table array buffer (see #01260)
- Format of Intel Plug-and-Play ACFG PCI IRQ routing table entry [array]:
- Offset Size Description (Table 01260)
- 00h BYTE PCI bus number
- 01h BYTE PCI device number (bits 7-3)
- 02h BYTE link value for INTA#
- (if non-zero, wire-ORed together with any other PCI interrupts
- with same link value)
- 03h WORD IRQ connectivity bit map for INTA#
- (standard AT IRQs to which PCI interrupt can be routed)
- 05h BYTE link value for INTB#
- 06h WORD IRQ connectivity bit map for INTB#
- 08h BYTE link value for INTC#
- 09h WORD IRQ connectivity bit map for INTC#
- 0Bh BYTE link value for INTD#
- 0Ch WORD IRQ connectivity bit map for INTD#
- 0Eh BYTE (PCI BIOS v2.1+) device slot number (00h = motherboard)
- 0Fh BYTE reserved
- Note: each item in the routing table corresponds to a motherboard PCI
- device or PCI slot
- SeeAlso: #01259,#M0091
- --------X-1AB407-----------------------------
- INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - ???
- AX = B407h
- EDX = length of ???
- EDI = physical address of ???
- Return: CF clear if successful
- AX = 0000h
- EDX = ???
- EDI = ???
- CF set on error
- AX = error code (FFFFh) (see #01243)
- Notes: returns error if EDI < 000C0000h or EDI+EDX > 00100000h
- seems to force EDI and EDX to align to 16K boundaries
- SeeAlso: AX=B400h
- --------X-1AB4-------------------------------
- INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - 32-BIT API
- AH = B4h
- AL = function (80h-87h)
- further details not yet available
- Note: these functions are 32-bit versions of functions 00h-07h
- --------c-1AC0-------------------------------
- INT 1A U - Disk Spool II v2.07+ - ALTERNATE INSTALLATION CHECK
- AH = C0h
- Return: (see AH=A0h)
- Notes: this call is identical to AH=A0h
- this function is also supported by Vertisoft's Emulaser utility ELSPL,
- as that is a licensed version of Disk Spool II
- SeeAlso: AH=A0h,AH=ABh,AH=D0h
- --------U-1ACCCCBXCCCC-----------------------
- INT 1A U - DATEFIX - INSTALLATION CHECK
- AX = CCCCh
- BX = CCCCh
- CX = 0000h
- Return: CX = CCCCh if installed
- ES:BX -> original interrupt handler
- Program: DATEFIX is a public-domain TSR to correct the date on AT&T 6300
- machines, where the realtime clock's calendar wraps after 1991
- SeeAlso: AH=FEh,AH=FFh"AT&T"
- --------c-1AD0-------------------------------
- INT 1A U - Disk Spool II v2.07+ - FUNCTION CALLS
- AH = D0h
- AL = function code
- 01h enable spooler and despooler
- 02h enable spooler only
- 03h enable despooler at beginning of file
- 04h disable the despooler
- 05h disable the despooler and spooler
- 06h clear the spool file
- 08h inhibit the popup menu
- 09h enable the popup menu
- 0Ah ??? (called by Disk Spool's INT 21 handler)
- 0Bh disable the spooler
- 0Ch start despooler after last successfully printed document
- 0Dh start despooler at the exact point where it last left off
- 0Eh pop up the menu
- 0Fh ???
- 11h start new spool file??? (called by Disk Spool's INT 21 handler
- when a program terminates)
- 14h ???
- 15h delete despool file and reset ???
- 16h ??? (writes something to unknown file)
- 17h ??? (writes something to despool file, then reads something
- else and ???)
- 18h ??? (reads something from despool file, and then ???)
- 19h ??? (creates/truncates spool file)
- 20h clear file pointed to by the despooler
- 21h ??? (writes something to unknown file)
- 22h ??? (writes something to spool file if spooler/despooler using
- same file)
- 23h ??? (opens/creates unknown file, then ???)
- 30h ???
- 31h ???
- 32h beep
- 33h append CRLF to spool file???
- 34h ???
- 35h ???
- 36h ???
- 37h append CRLF to spool file and start a new spool file???
- 38h ???
- 40h ??? (v4.05)
- 41h ??? (v4.05)
- 51h ??? (called by Disk Spool's INT 21 handler)
- 52h ??? (called by Disk Spool's INT 21 handler)
- 57h ???
- 5Ah ??? (v4.05)
- 5Bh ??? (v4.05)
- 5Ch ??? (v4.05)
- Note: this function is also supported by Vertisoft's Emulaser utility ELSPL,
- as that is a licensed version of Disk Spool II
- SeeAlso: AH=A0h,AH=ADh
- --------c-1AE0-------------------------------
- INT 1A - Disk Spool II v4.0x - ENABLE/DISABLE
- AH = E0h
- AL = subfunction
- 01h enable spooler
- 02h disable spooler
- 03h enable despooler
- 04h disable despooler
- CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
- Return: AH = status
- 00h successful
- F0h printer port not managed by Disk Spool II
- FFH failed
- Note: this function is also supported by Vertisoft's Emulaser utility ELSPL,
- as that is a licensed version of Disk Spool II
- SeeAlso: AH=A0h,AH=E1h,AX=E301h,AX=E401h
- --------c-1AE1-------------------------------
- INT 1A - Disk Spool II v4.0x - GET STATUS
- AH = E1h
- CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
- Return: AH = status
- 00h successful
- CL = despooler state (00h disabled, 41h enabled)
- CH = spooler state (00h disabled, 41h enabled)
- DL = despooler activity (00h standing by, 41h printing)
- ES:BX -> ASCIZ name of current spool file (or next if AutoSpool
- or AutoDespool enabled)
- ES:SI -> ASCIZ name of current despool file
- ES:DI -> 3-byte file extension used by Disk Spool II
- F0h printer port not managed by Disk Spool II
- Note: this function is also supported by Vertisoft's Emulaser utility ELSPL,
- as that is a licensed version of Disk Spool II
- SeeAlso: AH=A0h,AH=E0h,AH=E2h
- --------U-1AE11B-----------------------------
- INT 1A - TheGrab v4.60 - ???
- AX = E11Bh
- ???
- Return: ??? (may destroy all registers)
- SeeAlso: AX=E11Dh
- --------U-1AE11D-----------------------------
- INT 1A - TheGrab v4.60 - INSTALLATION CHECK
- AX = E11Dh
- Return: ES:DI -> signature block (see #01261) if installed
- CX = length of signature block (000Fh)
- Program: TheGrab is a resident ANSI screen grabber bundled with TheDraw
- SeeAlso: AX=E11Bh
- Format of TheGrab signature block:
- Offset Size Description (Table 01261)
- 00h BYTE 08h
- 01h 8 BYTEs ASCIZ "THEGRAB"
- 09h 6 BYTEs ??? (zeros)
- --------c-1AE2-------------------------------
- INT 1A - Disk Spool II v4.0x - GET SPOOL FILES
- AH = E2h
- AL = which
- 01h first
- 02h next (can only call after "first")
- CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
- Return: AH = status
- 00h successful
- ES:BX -> ASCIZ filename
- F0h no (more) spool files
- FFh failed
- Note: this function is also supported by Vertisoft's Emulaser utility ELSPL,
- as that is a licensed version of Disk Spool II
- SeeAlso: AH=E0h,AH=E1h
- --------c-1AE301-----------------------------
- INT 1A - Disk Spool II v4.0x - GET SPOOL FILE STATUS
- AX = E301h
- ES:BX -> ASCIZ filename (max 32 chars)
- Return: AH = status
- 00h successful
- ES:SI -> spool file status record (see #01262)
- F0h not a spool file
- FFh failed
- Note: this function is also supported by Vertisoft's Emulaser utility ELSPL,
- as that is a licensed version of Disk Spool II
- SeeAlso: AH=E0h,AX=E302h,AX=E401h
- Format of Disk Spool II spool file status record:
- Offset Size Description (Table 01262)
- 00h BYTE hour of creation or last update
- 01h BYTE minute of creation or last update
- 02h BYTE year-1980 of creation or last update
- 03h BYTE month of creation or last update
- 04h BYTE day of creation or last update
- 05h BYTE total number of copies to print
- 06h BYTE number of copies already printed
- 07h BYTE printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
- 08h BYTE save status (00h delete after printing, 01h save)
- 09h BYTE file status
- 01h done printing, but being saved
- 02h on hold
- 03h queued for printing
- 04h being spooled
- 05h being despooled (i.e. printed)
- 0Ah 16 BYTEs ASCIZ description
- 1Ah 2 WORDs file size in bytes (high,low)
- 1Eh 2 WORDs bytes left to print (high,low)
- --------c-1AE302-----------------------------
- INT 1A - Disk Spool II v4.0x - UPDATE SPOOL FILE
- AX = E302h
- ES:BX -> ASCIZ filename (max 32 chars)
- ES:SI -> spool file status record (see #01262)
- Return: AH = status
- 00h successful
- F0h not a spool file
- FFh failed
- Note: this function is also supported by Vertisoft's Emulaser utility ELSPL,
- as that is a licensed version of Disk Spool II
- SeeAlso: AH=E0h,AX=E301h,AX=E401h
- --------c-1AE401-----------------------------
- INT 1A - Disk Spool II v4.0x - SPOOL EXISTING FILE
- AX = E401h
- ES:BX -> ASCIZ filename (max 32 chars)
- CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
- Return: AH = status
- 00h successful
- FFh failed
- Note: this function is also supported by Vertisoft's Emulaser utility ELSPL,
- as that is a licensed version of Disk Spool II
- SeeAlso: AH=E1h,AX=E302h,AX=E402h
- --------c-1AE402-----------------------------
- INT 1A U - Disk Spool II v4.0x - SPOOL EXISTING FILE???
- AX = E402h
- ES:BX -> ASCIZ filename (max 32 chars)
- CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
- Return: AH = status
- 00h successful
- FFh failed
- Note: this function is also supported by Vertisoft's Emulaser utility ELSPL,
- as that is a licensed version of Disk Spool II
- SeeAlso: AH=E1h,AX=E302h,AX=E401h
- --------c-1AE5-------------------------------
- INT 1A U - Emulaser ELSPL.COM - ???
- AH = E5h
- ???
- Return: ???
- Program: ELSPL.COM is a licensed version of Disk Spool II which is distributed
- as part of Vertisoft's Emulaser PostScript emulator
- SeeAlso: AH=A0h,INT 17/AH=03h
- --------c-1AEE-------------------------------
- INT 1A U - Disk Spool II v4.05 - ???
- AH = EEh
- AL = printer port???
- ???
- Return: ???
- Note: this function is also supported by Vertisoft's Emulaser utility ELSPL,
- as that is a licensed version of Disk Spool II
- SeeAlso: AH=E1h
- --------U-1AF7-------------------------------
- INT 1A - RighTime v1.1 - TEMPORARILY DISABLE
- AH = F7h
- Program: RighTime is a TSR by G.T. Becker which continuously adjusts the
- system time to correct for clock drift
- Note: any AH value from F0h-F7h or F9h-FEh will perform this function in
- version 1.1, but F7h is the function called by transient portion
- SeeAlso: AH=F8h,AH=FFh"RighTime"
- --------U-1AF8-------------------------------
- INT 1A - RighTime v1.1 - ENABLE
- AH = F8h
- Program: RighTime is a TSR by G.T. Becker which continuously adjusts the
- system time to correct for clock drift
- Note: RighTime is TeSseRact-compatible (see INT 2F/AX=5453h) and modifies its
- TeSseRact program identifier based on its current state: "RighTime"
- when enabled, "RighTim"F7h when disabled.
- SeeAlso: AH=F7h,AH=FFh"RighTime"
- --------b-1AFE-------------------------------
- INT 1A - AT&T 6300 - READ TIME AND DATE
- AH = FEh
- Return: BX = day count (0 = Jan 1, 1984)
- CH = hour
- CL = minute
- DH = second
- DL = hundredths
- SeeAlso: AX=CCCCh/BX=CCCCh,AH=FFh"AT&T",INT 21/AH=2Ah,INT 21/AH=2Ch
- --------b-1AFF-------------------------------
- INT 1A - AT&T 6300 - SET TIME AND DATE
- AH = FFh
- BX = day count (0 = Jan 1, 1984)
- CH = hour
- CL = minute
- DH = second
- DL = hundredths
- Return: ???
- SeeAlso: AX=CCCCh/BX=CCCCh,AH=FEh,INT 21/AH=2Bh"DATE",INT 21/AH=2Dh
- --------U-1AFF-------------------------------
- INT 1A - RighTime v1.1 - PERMANENTLY DISABLE
- AH = FFh
- Program: RighTime is a TSR by G.T. Becker which continuously adjusts the
- system time to correct for clock drift
- Note: upon being permanently disabled, RighTime closes the file handle
- referencing its executable (which is updated with time correction
- information every two minutes while RighTime is enabled).
- --------s-1AFF00-----------------------------
- INT 1A - SND - INSTALLATION CHECK???
- AX = FF00h
- Return: AL = version??? (02h)
- AH = busy flag (00h if not in a SND call, 01h if SND currently active)
- Note: the SND API is also supported by IC (Internal Commands) v2.0, a
- shareware TSR by Geoff Friesen which extends COMMAND.COM's internal
- command set
- SeeAlso: AX=FF01h,AX=FF02h,AX=FF04h,AX=FF05h
- --------s-1AFF01-----------------------------
- INT 1A - SND - PAUSE
- AX = FF01h
- DX = number of clock ticks to delay
- Return: AH = status
- 00h successful
- 01h SND busy
- Notes: if successful, execution returns to the caller after the delay expires;
- if SND is busy, execution returns immediately
- the IC v2.0 implementation of this API makes no special allowance for
- time rollover at midnight, which can cause the delay to be over one
- hour if this function is called just before the BIOS time count
- rolls over and the delay extends into the next day
- SeeAlso: AX=FF00h,INT 15/AH=86h,INT 62/AX=0096h,INT 7F/AH=E8h,INT 80/BX=0009h
- SeeAlso: INT E0/CL=BDh
- --------s-1AFF02-----------------------------
- INT 1A - SND - START SOUND
- AX = FF02h
- DX = frequency in Hertz (14h-FFFFh)
- Return: AH = status
- 00h successful
- 01h SND busy
- SeeAlso: AX=FF00h,AX=FF01h,AX=FF03h
- --------s-1AFF03-----------------------------
- INT 1A - SND - STOP SOUND
- AX = FF03h
- Return: AH = status
- 00h successful
- 01h busy
- Note: turns off any sound currently being emitted by the PC's speaker unless
- SND is currently busy processing an API call (this includes
- background music). Use AX=FF05h to stop the sound even if an API
- call is in progress.
- SeeAlso: AX=FF00h,AX=FF02h,AX=FF05h
- --------s-1AFF04-----------------------------
- INT 1A - SND - PLAY MUSIC STRING IN BACKGROUND
- AX = FF04h
- DS:DX -> ASCIZ music string
- Return: AH = status
- 00h successful (music begins playing in background)
- 01h busy
- Note: the music string accepted by SND is not the same as that accepted by
- BASIC and other programs which process music strings
- SeeAlso: AX=FF00h,AX=FF05h,INT 80/BX=0006h
- --------s-1AFF05-----------------------------
- INT 1A - SND - UNCONDITIONALLY STOP SOUND
- AX = FF05h
- Return: AH = 00h (successful)
- Note: this function is the same as AX=FF03h, but will stop the sound even if
- SND is currently busy, such as playing background music
- SeeAlso: AX=FF00h,AX=FF03h,INT 80/BX=0007h
- --------B-1B---------------------------------
- INT 1B C - KEYBOARD - CONTROL-BREAK HANDLER
- Desc: this interrupt is automatically called when INT 09 determines that
- Control-Break has been pressed
- Note: normally points to a short routine in DOS which sets the Ctrl-C flag,
- thus invoking INT 23h the next time DOS checks for Ctrl-C.
- SeeAlso: INT 23,MEM 0040h:0071h
- --------B-1C---------------------------------
- INT 1C - TIME - SYSTEM TIMER TICK
- Desc: this interrupt is automatically called on each clock tick by the INT 08
- handler
- Notes: this is the preferred interrupt to chain when a program needs to be
- invoked regularly
- not available on NEC 9800-series PCs
- SeeAlso: INT 08,INT E2"PC Cluster"
- --------B-1D---------------------------------
- INT 1D - SYSTEM DATA - VIDEO PARAMETER TABLES
- Note: the default parameter table (see #01263) is located at F000h:F0A4h for
- 100% compatible BIOSes
- SeeAlso: INT 10/AH=00h
- Format of video parameters:
- Offset Size Description (Table 01263)
- 00h 16 BYTEs 6845 register values for modes 00h and 01h
- 10h 16 BYTEs 6845 register values for modes 02h and 03h
- 20h 16 BYTEs 6845 register values for modes 04h and 05h
- 30h 16 BYTEs 6845 register values for modes 06h and 07h
- 40h WORD bytes in video buffer for modes 00h and 01h (0800h)
- 42h WORD bytes in video buffer for modes 02h and 03h (1000h)
- 44h WORD bytes in video buffer for modes 04h and 05h (4000h)
- 46h WORD bytes in video buffer for mode 06h (4000h)
- 48h 8 BYTEs columns on screen for each of modes 00h through 07h
- 50h 8 BYTEs CRT controller mode bytes for each of modes 00h through 07h
- Note: QEMM v7.5 Stealth appears to copy only the first 40h bytes of this
- table into always-accessible memory
- --------B-1E---------------------------------
- INT 1E - SYSTEM DATA - DISKETTE PARAMETERS
- Notes: the default parameter table (see #01264) is located at F000h:EFC7h for
- 100% compatible BIOSes
- if the table is changed, INT 13/AH=00h should be called to ensure that
- the floppy-disk controller is appropriately reprogrammed
- SeeAlso: INT 13/AH=0Fh,INT 41"HARD DISK 0",INT 4D/AH=0Ah
- Format of diskette parameter table:
- Offset Size Description (Table 01264)
- 00h BYTE first specify byte
- bits 7-4: step rate (Fh=2ms,Eh=4ms,Dh=6ms,etc.)
- bits 3-0: head unload time (0Fh = 240 ms)
- 01h BYTE second specify byte
- bits 7-1: head load time (01h = 4 ms)
- bit 0: non-DMA mode (always 0)
- 02h BYTE delay until motor turned off (in clock ticks)
- 03h BYTE bytes per sector (00h = 128, 01h = 256, 02h = 512, 03h = 1024)
- 04h BYTE sectors per track
- 05h BYTE length of gap between sectors (2Ah for 5.25", 1Bh for 3.5")
- 06h BYTE data length (ignored if bytes-per-sector field nonzero)
- 07h BYTE gap length when formatting (50h for 5.25", 6Ch for 3.5")
- 08h BYTE format filler byte (default F6h)
- 09h BYTE head settle time in milliseconds
- 0Ah BYTE motor start time in 1/8 seconds
- ---IBM SurePath BIOS---
- 0Bh BYTE maximum track number
- 0Ch BYTE data transfer rate
- 0Dh BYTE drive type in CMOS
- SeeAlso: #03226 at INT 4D/AH=09h
- --------B-1F---------------------------------
- INT 1F - SYSTEM DATA - 8x8 GRAPHICS FONT
- Desc: this vector points at 1024 bytes of graphics data, 8 bytes for each
- character 80h-FFh
- Note: graphics data for characters 00h-7Fh stored at F000h:FA6Eh in 100%
- compatible BIOSes
- SeeAlso: INT 10/AX=5000h,INT 43
- --------b-1F12-------------------------------
- INT 1F U - C&T "SuperState" BIOS - POWER OFF
- AH = 12h
- Return: none
- Note: POWER OFF
- --------b-1F17-------------------------------
- INT 1F U - C&T "SuperState" BIOS - EXECUTE FAR PROC ROUTINE ON SuperState
- AH = 17h
- ES:DI -> far procedure
- Return: all registers except AH,ES,DI
- Note: You can change the BIOS area (F000h:0000h - F000h:FFFFh) only through
- this function
- --------b-1F19-------------------------------
- INT 1F U - C&T "SuperState" BIOS - ENABLE AUTO WAKEUP AND SET TIME AND DATE
- AH = 19h
- AL = hour in BCD
- BH = minutes in BCD
- BL = seconds in BCD
- CH = year century in BCD (must be 19h)
- CL = year low in BCD
- DH = month in BCD
- DL = date in BCD
- Return: CF clear
- --------b-1F1C-------------------------------
- INT 1F U - C&T "SuperState" BIOS - SET SUSPEND TIMEOUT
- AH = 1Ch
- BX = sec until suspend starts
- Return: None
- --------b-1F1D-------------------------------
- INT 1F U - C&T "SuperState" BIOS - SET SLEEP TIMEOUT
- AH = 1Dh
- BX = sec until sleep starts
- Return: None
- --------J-1F90-------------------------------
- INT 1F - NEC PC-9801 - COPY EXTENDED MEMORY
- AH = 90h
- ES:BX -> global descriptor table (see #00499 at INT 15/AH=87h)
- CX = number of bytes to copy
- SI = 0000h
- DI = 0000h
- Return: CF clear if successful
- CF set on error
- ???
- SeeAlso: INT 15/AH=87h
- --------b-1FF5--BLFA-------------------------
- INT 1F U - C&T "SuperState" BIOS - REQUEST PASSWORD INPUT
- AH = F5h
- BL = FAh
- Return: none
- Note: this function will not return until the correct password is entered
- SeeAlso: AH=F5h/BL=FDh,AH=F5h/BL=FEh
- --------b-1FF5--BLFD-------------------------
- INT 1F U - C&T "SuperState" BIOS - ENCRYPT PASSWORD
- AH = F5h
- BL = FDh
- CX:SI = input string
- DX:DI = encrypted string
- BH = length of input string
- Return: CF set on error
- SeeAlso: AH=F5h/BL=FAh,AH=F5h/BL=FEh
- --------b-1FF5--BLFE-------------------------
- INT 1F U - C&T "SuperState" BIOS - SET PASSWORD
- AH = F5h
- BL = FEh
- CX:SI -> input string
- BH = length of input string (if BH = 00h, clear password)
- Return: CF set on error
- Note: the input string must be encrypted by INT 1Fh/AH=F5h/BL=FDh
- SeeAlso: AH=F5h/BL=FDh,AH=F5h/BL=FFh
- --------b-1FF5--BLFF-------------------------
- INT 1F U - C&T "SuperState" BIOS - GET ENCRYPTED PASSWORD
- AH = F5h
- BL = FFh
- DX:DI = string buffer
- Return: CF set on error
- CF clear if successful
- BH = length of input string (if BH = 00h, password is not valid)
- DX:DI -> encrypted password string
- SeeAlso: AH=F5h/BL=FDh,AH=F5h/BL=FEh
- --------b-1FFB-------------------------------
- INT 1F U - C&T "SuperState" BIOS - GET/SET CPU SPEED
- AH = FBh
- BL = function
- 00h get CPU speed
- Return: AL = current CPU speed (00h = fast, 01h = slow)
- 01h set CPU speed
- AL = new CPU speed (00h = fast, 01h = slow)
- SeeAlso: AH=FCh/BL=00h
- --------b-1FFC--BL00-------------------------
- INT 1F U - C&T "SuperState" BIOS - GET ALARM STATUS
- AH = FCh
- BL = 00h
- Return: AL = current alarm state (00h = disabled, 01h = enabled)
- SeeAlso: AH=FCh/BL=01h,AH=FCh/BL=02h
- --------b-1FFC--BL01-------------------------
- INT 1F U - C&T "SuperState" BIOS - SET ALARM STATUS
- AH = FCh
- BL = 01h
- AL = new alarm state (00h = disabled, 01h = enabled)
- SeeAlso: AH=FCh/BL=00h,AH=FCh/BL=03h
- --------b-1FFC--BL02-------------------------
- INT 1F U - C&T "SuperState" BIOS - GET ALARM TIME
- AH = FCh
- BL = 02h
- Return: CH = hour by BCD
- CL = min by BCD
- DH = sec by BCD
- SeeAlso: AH=FCh/BL=00h,AH=FCh/BL=03h,AH=FCh/BL=04h
- --------b-1FFC--BL03-------------------------
- INT 1F U - C&T "SuperState" BIOS - SET ALARM TIME
- AH = FCh
- BL = 03h
- CH = hour by BCD
- CL = min by BCD
- DH = sec by BCD
- Return: CF set on error (incorrect time format or Alarm is not enable)
- SeeAlso: AH=FCh/BL=01h,AH=FCh/BL=02h,AH=FCh/BL=05h
- --------b-1FFC--BL04-------------------------
- INT 1F U - C&T "SuperState" BIOS - GET ALARM DATE
- AH = FCh
- BL = 04h
- Return: CH = year century by BCD
- CL = year low by BCD
- DH = month by BCD
- DL = date by BCD
- SeeAlso: AH=FCh/BL=02h,AH=FCh/BL=05h
- --------b-1FFC--BL05-------------------------
- INT 1F U - C&T "SuperState" BIOS - SET ALARM DATE
- AH = FCh
- BL = 05h
- CH = year century by BCD
- CL = year low by BCD
- DH = month by BCD
- DL = date by BCD
- Return: CF set on error (incorrect date format or Alarm is not enable)
- SeeAlso: AH=FCh/BL=03h,AH=FCh/BL=04h
- --------b-1FFD--BL00-------------------------
- INT 1F U - C&T "SuperState" BIOS - GET AUTO WAKE UP STATUS
- AH = FDh
- BL = 00h
- Return: AL = current wake-up state (00h = disabled, 01h = enabled)
- SeeAlso: AH=FDh/BL=01h,AH=FDh/BL=02h
- --------b-1FFD--BL01-------------------------
- INT 1F U - C&T "SuperState" BIOS - SET AUTO WAKE UP STATUS
- AH = FDh
- BL = 01h
- AL = new wake-up state (00h = disabled, 01h = enabled)
- SeeAlso: AH=FDh/BL=00h,AH=FDh/BL=03h
- --------b-1FFD--BL02-------------------------
- INT 1F U - C&T "SuperState" BIOS - GET AUTO WAKE UP TIME
- AH = FDh
- BL = 02h
- Return: CH = hour by BCD
- CL = min by BCD
- DH = sec by BCD
- SeeAlso: AH=FDh/BL=00h,AH=FDh/BL=03h
- --------b-1FFD--BL03-------------------------
- INT 1F U - C&T "SuperState" BIOS - SET AUTO WAKE UP TIME
- AH = FDh
- BL = 03h
- CH = hour by BCD
- CL = min by BCD
- DH = sec by BCD
- Return: CF set on error (incorrect Time format or Auto Wake up is not enable)
- SeeAlso: AH=FDh/BL=01h,AH=FDh/BL=02h
- --------b-1FFD--BL04-------------------------
- INT 1F U - C&T "SuperState" BIOS - GET AUTO WAKE UP DATE
- AH = FDh
- BL = 04h
- Return: CH = year century in BCD
- CL = year low in BCD
- DH = month in BCD
- DL = date in BCD
- SeeAlso: AH=FDh/BL=02h,AH=FDh/BL=05h
- --------b-1FFD--BL05-------------------------
- INT 1F U - C&T "SuperState" BIOS - SET AUTO WAKE UP DATE
- AH = FDh
- BL = 05h
- CH = year century in BCD
- CL = year low in BCD
- DH = month in BCD
- DL = date in BCD
- Return: CF set on error (incorrect date format or Auto Wake up is not enable)
- SeeAlso: AH=FDh/BL=03h"C&T",AH=FDh/BL=04h"C&T"
- --------!---Section--------------------------
- Interrupt List, part 6 of 18
- Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
- --------O-20---------------------------------
- INT 20 - Minix - SEND/RECEIVE MESSAGE
- AX = process ID of other process
- BX -> message
- CX = operation (1 send, 2 receive, 3 send&receive)
- Program: Minix is a Version 7 Unix-compatible operating system by Andrew
- Tanenbaum
- Note: the message contains the system call number (numbered as in V7
- Unix(tm)) and the call parameters
- --------D-20---------------------------------
- INT 20 - DOS 1+ - TERMINATE PROGRAM
- CS = PSP segment
- Return: never
- Notes: (see INT 21/AH=00h)
- this function sets the program's return code (ERRORLEVEL) to 00h
- SeeAlso: INT 21/AH=00h,INT 21/AH=4Ch
- --------G-20---------------------------------
- INT 20 - COMTROL HOSTESS i/ISA DEBUGGER - INVOKE FIRMWARE DEBUGGER
- ???
- Return: ???
- SeeAlso: INT 21"COMTROL"
- --------W-20----Vx0001-----------------------
- INT 20 P - Microsoft Windows - VMM - VxD SERVICES
- VxD = 0001h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01265)
- Values for VMM (VxD ID 0001h) service number:
- 0000h get version
- 0001h get current VM handle
- 0002h test current VM handle
- 0003h get system VM handle
- 0004h test system VM handle
- 0005h validate VM handle
- 0006h get VMM reenter count
- 0007h begin reentrant execution
- 0008h end reentrant execution
- 0009h install V86 breakpoint
- 000Ah remove V86 breakpoint
- 000Bh allocate V86 callback
- 000Ch allocation PM callback
- 000Dh call when VM returns
- 000Eh schedule global event
- 000Fh schedule VM event
- 0010h call global event
- 0011h call VM event
- 0012h cancel global event
- 0013h cancel VM event
- 0014h call priority VM event
- 0015h cancel priority VM event
- 0016h get NMI handler address
- 0017h set NMI handler address
- 0018h hook NMI event
- 0019h call when VM interrupts enabled
- 001Ah enable VM interrupts
- 001Bh disable VM interrupts
- 001Ch map flat
- 001Dh map linear to VM address
- 001Eh adjust execution priority
- 001Fh begin critical section
- 0020h end critical section
- 0021h end critical section and suspend
- 0022h claim critical section
- 0023h release critical section
- 0024h call when not critical
- 0025h create semaphore
- 0026h destroy semaphore
- 0027h wait on semaphore
- 0028h signal semaphore
- 0029h get critical section status
- 002Ah call when task switched
- 002Bh suspend VM
- 002Ch resume VM
- 002Dh no-fail resume VM
- 002Eh nuke VM
- 002Fh crash current VM
- 0030h get execution focus
- 0031h set execution focus
- 0032h get time slice priority
- 0033h set time slice priority
- 0034h get time slice granularity
- 0035h set time slice granularity
- 0036h get time slice information
- 0037h adjust execution time
- 0038h release time slice
- 0039h wake up VM
- 003Ah call when idle
- 003Bh get next VM handle
- 003Ch set global timeout
- 003Dh set VM timeout
- 003Eh cancel timeout
- 003Fh get system time
- Return: EAX = time in milliseconds that Windows has been running
- 0040h get VM execution time
- 0041h hook V86 interrupt chain
- 0042h get V86 interrupt vector
- 0043h set V86 interrupt vector
- 0044h get PM interrupt vector
- 0045h set PM interrupt vector
- 0046h simulate interrupt
- 0047h simulate IRET
- 0048h simulate far call
- 0049h simulate far jump
- 004Ah simulate far RET
- 004Bh simulate far RET N
- 004Ch build interrupt stack frame
- 004Dh simulate push
- 004Eh simulate pop
- 004Fh _HeapAllocate
- 0050h _HeapReAllocate
- 0051h _HeapFree
- 0052h _HeapGetSize
- 0053h _PageAllocate
- 0054h _PageReAllocate
- 0055h _PageFree
- 0056h _PageLock
- 0057h _PageUnLock
- 0058h _PageGetSizeAddr
- 0059h _PageGetAllocInfo
- 005Ah _GetFreePageCount
- 005Bh _GetSysPageCount
- 005Ch _GetVMPgCount
- 005Dh _MapIntoV86
- 005Eh _PhysIntoV86
- 005Fh _TestGlobalV86Mem
- 0060h _ModifyPageBits
- 0061h copy page table
- 0062h map linear into V86
- 0063h linear page lock
- 0064h linear page unlock
- 0065h _SetResetV86Pageabl
- 0066h _GetV86PageableArray
- 0067h _PageCheckLinRange
- 0068h page out dirty pages
- 0069h discard pages
- 006Ah _GetNulPageHandle
- 006Bh get first V86 page
- 006Ch map physical address to linear address
- 006Dh _GetAppFlatDSAlias
- 006Eh _SelectorMapFlat
- 006Fh _GetDemandPageInfo
- 0070h _GetSetPageOutCount
- 0071h hook V86 page
- 0072h assign device V86 pages
- 0073h deassign device V86 pages
- 0074h get array of V86 pages for device
- 0075h _SetNULPageAddr
- 0076h allocate GDT selector
- 0077h free GDT selector
- 0078h allocate LDT selector
- 0079h free LDT selector
- 007Ah _BuildDescriptorDWORDs
- 007Bh get descriptor
- 007Ch set descriptor
- 007Dh toggle HMA
- 007Eh get fault hook addresses
- 007Fh hook V86 fault
- 0080h hook PM fault
- 0081h hook VMM fault
- 0082h begin nested V86 execution
- 0083h begin nested execution
- 0084h execute V86-mode interrupt
- 0085h resume execution
- 0086h end nested execution
- 0087h allocate PM application callback area
- 0088h get current PM application callback area
- 0089h set V86 execution mode
- 008Ah set PM execution mode
- 008Bh begin using locked PM stack
- 008Ch end using locked PM stack
- 008Dh save client state
- 008Eh restore client state
- 008Fh execute VxD interrupt
- STACK: WORD interrupt number
- other registers as required by interrupt call
- Return: registers as returned by interrupt call
- 0090h hook device service
- EAX = service ID (high word = VxD ID, low = service number)
- ESI -> new handler
- 0091h hook device V86 API
- 0092h hook device PM API
- 0093h system control (see also #02657)
- 0094h simulate I/O
- 0095h install multiple I/O handlers
- 0096h install I/O handler
- DX = I/O port address
- ESI -> handler to call when I/O access attempted???
- 0097h enable global trapping
- DX = I/O port address
- 0098h enable local trapping
- DX = I/O port address
- 0099h disable global trapping
- DX = I/O port address
- 009Ah disable local trapping
- DX = I/O port address
- 009Bh create list
- 009Ch destroy list
- 009Dh allocate list
- 009Eh attach list
- 009Fh attach list tail
- 00A0h insert into list
- 00A1h remove from list
- 00A2h deallocate list
- 00A3h get first item in list
- 00A4h get next item in list
- 00A5h remove first item in list
- 00A6h add instance item
- 00A7h allocate device callback area
- 00A8h allocate global V86 data area
- 00A9h allocate temporary V86 data area
- 00AAh free temporary V86 data area
- 00ABh get decimal integer from profile
- 00ACh convert decimal string to integer
- 00ADh get fixed-point number from profile
- 00AEh convert fixed-point string
- 00AFh get hex integer from profile
- 00B0h convert hex string to integer
- 00B1h get boolean value from profile
- 00B2h convert boolean string
- 00B3h get string from profile
- 00B4h get next string from profile
- 00B5h get environment string
- 00B6h get exec path
- 00B7h get configuration directory
- 00B8h open file
- 00B9h get PSP segment
- 00BAh get DOS vectors
- 00BBh get machine information
- 00BCh get/set HMA information
- 00BDh set system exit code
- 00BEh fatal error handler
- 00BFh fatal memory error
- 00C0h update system clock
- 00C1h test if debugger installed
- 00C2h output debugger string
- 00C3h output debugger character
- 00C4h input debugger character
- 00C5h debugger convert hex to binary
- 00C6h debugger convert hex to decimal
- 00C7h debugger test if valid handle
- 00C8h validate client pointer
- 00C9h test reentry
- 00CAh queue debugger string
- 00CBh log procedure call
- 00CCh debugger test current VM
- 00CDh get PM interrupt type
- 00CEh set PM interrupt type
- 00CFh get last updated system time
- 00D0h get last updated VM execution time
- 00D1h test if double-byte character-set lead byte
- 00D2h _AddFreePhysPage
- 00D3h _PageResetHandlePAddr
- 00D4h _SetLastV86Page
- 00D5h _GetLastV86Page
- 00D6h _MapFreePhysReg
- 00D7h _UnmapFreePhysReg
- 00D8h _XchgFreePhysReg
- 00D9h _SetFreePhysRegCalBk
- 00DAh get next arena (MCB)
- 00DBh get name of ugly TSR
- 00DCh get debug options
- 00DDh set physical HMA alias
- 00DEh _GetGlblRng0V86IntBase
- 00DFh add global V86 data area
- 00E0h get/set detailed VM error
- 00E1h Is_Debug_Chr
- 00E2h clear monochrome screen
- 00E3h output character to mono screen
- 00E4h output string to mono screen
- 00E5h set current position on mono screen
- 00E6h get current position on mono screen
- 00E7h get character from mono screen
- 00E8h locate byte in ROM
- 00E9h hook invalid page fault
- 00EAh unhook invalid page fault
- 00EBh set delete on exit file
- 00ECh close VM
- 00EDh "Enable_Touch_1st_Meg"
- 00EEh "Disable_Touch_1st_Meg"
- 00EFh install exception handler
- 00F0h remove exception handler
- 00F1h "Get_Crit_Status_No_Block"
- 00F2h "_Schedule_VM_RTI_Event"
- 00F3h "_Trace_Out_Service"
- 00F4h "_Debug_Out_Service"
- 00F5h "_Debug_Flags_Service"
- 00F6h VMM add import module name
- 00F7h VMM Add DDB
- 00F8h VMM Remove DDB
- 00F9h get thread time slice priority
- 00FAh set thread time slice priority
- 00FBh schedule thread event
- 00FCh cancel thread event
- 00FDh set thread timeout
- 00FEh set asynchronous timeout
- 00FFh "_AllocatreThreadDataSlot"
- 0100h "_FreeThreadDataSlot"
- 0101h create Mutex
- 0102h destroy Mutex
- 0103h get Mutex owner
- 0104h call when thread switched
- 0105h create thread
- 0106h start thread
- 0107h terminate thread
- 0108h get current thread handle
- 0109h test current thread handle
- 010Ah "Get_Sys_Thread_Handle"
- 010Bh "Test_Sys_Thread_Handle"
- 010Ch "Validate_Thread_Handle"
- 010Dh "Get_Initial_Thread_Handle"
- 010Eh "Test_Initial_Thread_Handle"
- 010Fh "Debug_Test_Valid_Thread_Handle"
- 0110h "Debug_Test_Cur_Thread"
- 0111h "VMM_GetSystemInitState"
- 0112h "Cancel_Call_When_Thread_Switched"
- 0113h "Get_Next_Thread_Handle"
- 0114h "Adjust_Thread_Exec_Priority"
- 0115h "_Deallocate_Device_CB_Area"
- 0116h "Remove_IO_Handler"
- 0117h "Remove_Mult_IO_Handlers"
- 0118h unhook V86 interrupt chain
- 0119h unhook V86 fault handler
- 011Ah unhook PM fault handler
- 011Bh unhook VMM fault handler
- 011Ch unhook device service
- 011Dh "_PageReserve"
- 011Eh "_PageCommit"
- 011Fh "_PageDecommit"
- 0120h "_PagerRegister"
- 0121h "_PagerQuery"
- 0122h "_PagerDeregister"
- 0123h "_ContextCreate"
- 0124h "_ContextDestroy"
- 0125h "_PageAttach"
- 0126h "_PageFlush"
- 0127h "_SignalID"
- 0128h "_PageCommitPhys"
- 0129h "_Register_Win32_Services"
- 012Ah "Cancel_Call_When_Not_Critical"
- 012Bh "Cancel_Call_When_Idle"
- 012Ch "Cancel_Call_When_Task_Switched"
- 012Dh "_Debug_Printf_Service"
- 012Eh enter Mutex
- 012Fh leave Mutex
- 0130h simulate VM I/O
- 0131h "Signal_Semaphore_No_Switch"
- 0132h "_MMSwitchContext"
- 0133h "_MMModifyPermissions"
- 0134h "_MMQuery"
- 0135h "_EnterMustComplete"
- 0136h "_LeaveMustComplete"
- 0137h "_ResumeExecMustComplete"
- 0138h get thread termination status
- 0139h "_GetInstanceInfo"
- 013Ah "_ExecIntMustComplete"
- 013Bh "_ExecVxDIntMustComplete"
- 013Ch begin V86 serialization
- 013Dh unhook V86 page
- 013Eh "VMM_GetVxDLocationList"
- 013Fh "VMM_GetDDBList" get start of VxD chain
- (see also #02657 at INT 2F/AX=1684h/BX=0017h)
- 0140h unhook NMI event
- 0141h "Get_Instanced_V86_Int_Vector"
- 0142h get or set real DOS PSP
- 0143h call priority thread event
- 0144h "Get_System_Time_Address"
- 0145h "Get_Crit_Status_Thread"
- 0146h "Get_DDB"
- 0147h "Directed_Sys_Control"
- 0148h "_RegOpenKey"
- 0149h "_RegCloseKey"
- 014Ah "_RegCreateKey"
- 014Bh "_RegDeleteKey"
- 014Ch "_RegEnumKey"
- 014Dh "_RegQueryValue"
- 014Eh "_RegSetValue"
- 014Fh "_RegDeleteValue"
- 0150h "_RegEnumValue"
- 0151h "_RegQueryValueEx"
- 0152h "_RegSetValueEx"
- 0153h "_CallRing3"
- 0154h "Exec_PM_Int"
- 0155h "_RegFlushKey"
- 0156h "_PageCommitContig"
- 0157h "_GetCurrentContext"
- 0158h "_LocalizeSprintf"
- 0159h "_LocalizeStackSprintf"
- 015Ah "Call_Restricted_Event"
- 015Bh "Cancel_Restricted_Event"
- 015Ch "Register_PEF_Provider"
- 015Dh "_GetPhysPageInfo"
- 015Eh "_RegQueryInfoKey"
- 015Fh "MemArb_Reserve_Pages"
- 0160h "Time_Slice_Sys_VM_Idle"
- 0161h "Time_Slice_Sleep"
- 0162h "Boost_With_Decay"
- 0163h "Set_Inversion_Pri"
- 0164h "Reset_Inversion_Pri"
- 0165h "Release_Inversion_Pri"
- 0166h "Get_Thread_Win32_Pri"
- 0167h "Set_Thread_Win32_Pri"
- 0168h "Set_Thread_Static_Boost"
- 0169h "Set_VM_Static_Boost"
- 016Ah "Release_Inversion_Pri_ID"
- 016Bh "Attach_Thread_To_Group"
- 016Ch "Detach_Thread_From_Group"
- 016Dh "Set_Group_Static_Boost"
- 016Eh "_GetRegistryPath"
- 016Fh "_GetRegistryKey"
- 0170h "_CleanupNestedExec"
- 0171h "_RegRemapPreDefKey"
- 0172h "End_V86_Serialization"
- 0173h "_Assert_Range"
- 0174h "_Sprintf"
- 0175h "_PageChangePager"
- 0176h "_RegCreateDynKey"
- 0177h "RegQMulti"
- 0178h "Boost_Thread_With_VM"
- 0179h "Get_Boot_Flags"
- 017Ah "Set_Boot_Flags"
- 017Bh "_lstrcpyn"
- 017Ch "_lstrlen"
- 017Dh "_lmemcpy"
- 017Eh "_GetVxDName"
- 017Fh "Force_Mutexes_Free"
- 0180h "Restore_Forced_Mutexes"
- 0181h "_AddReclaimableItem"
- 0182h "_SetReclaimableItem"
- 0183h "_EnumReclaimableItem"
- 0184h "Time_Slice_Wake_Sys_VM"
- 0185h "VMM_Replace_Global_Environment"
- 0186h "Begin_Non_Serial_Nest_V86_Exec"
- 0187h "Get_Nest_Exec_Status"
- 0188h "Open_Boot_Log"
- 0189h "Write_Boot_Log"
- 018Ah "Close_Boot_Log"
- 018Bh "EnableDisable_Boot_Log"
- 018Ch "_Call_On_My_Stack"
- 018Dh "Get_Inst_V86_Int_Vec_Base"
- 018Eh "_lstrcmpi"
- 018Fh "_strupr"
- 0190h "Log_Fault_Call_Out"
- 0191h "_AtEventTime"
- 0191h ...last service for Windows95 SP1
- 811Ch unhook device service??? (called by KEYREMAP.VXD)
- EAX = service ID (high word = VxD ID, low = service number)
- ESI -> handler
- SeeAlso: #01266,#01267,INT 2F/AX=1684h/BX=0001h
- --------W-20----Vx0002-----------------------
- INT 20 P - Microsoft Windows - DEBUG - VxD SERVICES
- VxD = 0002h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01266,#01340
- (Table 01266)
- Values for DEBUG (VxD ID 0002h) service number:
- 0000h get version
- 0001h "DEBUG_Fault"
- 0002h "DEBUG_CheckFault"
- 0003h "_DEBUG_LoadSyms"
- SeeAlso: #01265,#01267
- --------W-20----Vx0003-----------------------
- INT 20 P - Microsoft Windows - VPICD - VxD SERVICES
- VxD = 0003h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01267,#01340
- (Table 01267)
- Values for VPICD (VxD ID 0003h) service number:
- 0000h get version
- 0001h virtualize IRQ
- 0002h set interrupt request
- 0003h clear interrupt request
- 0004h physical EOI
- 0005h get complete status
- 0006h get status
- 0007h test physical request
- 0008h physically mask
- 0009h physically unmask
- 000Ah set automatic masking
- 000Bh get IRQ complete status
- 000Ch convert handle to IRQ
- 000Dh convert IRQ to interrupt
- 000Eh convert interrupt to IRQ
- 000Fh call on hardware interrupt
- 0010h force default owner
- 0011h force default behavior
- 0012h "VPICD_Auto_Mask_At_Inst_Swap"
- 0013h "VPICD_Begin_Inst_Page_Swap"
- 0014h "VPICD_End_Inst_Page_Swap"
- 0015h "VPICD_Virtual_EOI"
- 0016h "VPICD_Get_Virtualization_Count"
- 0017h "VPICD_Post_Sys_Critical_Init"
- 0018h "VPICD_VM_SlavePIC_Mask_Change"
- SeeAlso: #01265,#01268,INT 2F/AX=1684h/BX=0003h
- --------W-20----Vx0004-----------------------
- INT 20 P - Microsoft Windows - VDMAD - VxD SERVICES
- VxD = 0004h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01268)
- Values for VDMAD (VxD ID 0004h) service number:
- 0000h get version
- 0001h virtualize channel
- 0002h get region information
- 0003h set region information
- 0004h get virtual state
- 0005h set virtual state
- 0006h set physical state
- 0007h mask channel
- 0008h unmask channel
- 0009h lock DMA region
- 000Ah unlock DMA region
- 000Bh scatter lock
- 000Ch scatter unlock
- 000Dh reserve buffer space
- 000Eh request buffer
- 000Fh release buffer
- 0010h copy to buffer
- 0011h copy from buffer
- 0012h default handler
- 0013h disable translation
- 0014h enable translation
- 0015h get EISA address mode
- 0016h set EISA address mode
- 0017h unlock DMA region (ND)
- 0018h "VDMAD_Phys_Mask_Channel"
- 0019h "VDMAD_Phys_Unmask_Channel"
- 001Ah "VDMAD_Unvirtualize_Channel"
- 001Bh "VDMAD_Set_IO_Address"
- 001Ch "VDMAD_Get_Phys_Count"
- 001Dh "VDMAD_Get_Phys_Status"
- 001Eh "VDMAD_Get_Max_Phys_Page"
- 001Fh "VDMAD_Set_Channel_Callbacks"
- 0020h "VDMAD_Get_Virt_Count"
- 0021h "VDMAD_Set_Virt_Count"
- 0021h ...last service for Windows95 SP1
- SeeAlso: #01267,#02646,#02683 at INT 2F/AX=1684h/BX=0444h
- --------W-20----Vx0005-----------------------
- INT 20 P - Microsoft Windows - VTD - VxD SERVICES
- VxD = 0005h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01269)
- Values for VTD (VxD ID 0005h) service number:
- 0000h get version
- 0001h update system clock
- 0002h get interrupt period
- 0003h begin minimum interrupt period
- 0004h end minimum interrupt period
- 0005h disable trapping
- 0006h enable trapping
- 0007h get real time
- Return: EDX:EAX = time in 840ns units since Windows was started
- 0008h "VTD_Get_Date_And_Time"
- 0009h "VTD_Adjust_VM_Count"
- 000Ah "VTD_Delay"
- SeeAlso: #02646 at INT 2F/AX=1684h/BX=0005h
- --------W-20----Vx0006-----------------------
- INT 20 P - Microsoft Windows - V86MMGR - VxD SERVICES
- VxD = 0006h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01270)
- Values for V86MMGR (VxD ID 0006h) service number:
- 00h get version
- 01h allocate V86 pages
- 02h set EMS and XMS limits
- 03h get EMS and XMS limits
- 04h set mapping information
- 05h get mapping information
- 06h Xlat API
- 07h load client pointer
- 08h allocate buffer
- 09h free buffer
- 0Ah get Xlat buffer state
- 0Bh set Xlat buffer state
- 0Ch get VM flat selector
- 0Dh map pages
- 0Eh free page map region
- 0Fh _LocalGlobalReg
- 10h get page status
- 11h set local A20
- 12h reset base pages
- 13h set available mapped pages
- 14h "V86MMGR_NoUMBInitCalls"
- 15h "V86MMGR_Get_EMS_XMS_Avail"
- 16h "V86MMGR_Toggle_HMA"
- EAX = ???
- 17h "V86MMGR_Dev_Init"
- 18h "V86MMGR_Alloc_UM_Page"
- SeeAlso: #02646,#01271,INT 2F/AX=1684h"DEVICE API"
- --------W-20----Vx0007-----------------------
- INT 20 P - Microsoft Windows - PageSwap - VxD SERVICES
- VxD = 0007h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01271)
- Values for PageSwap (VxD ID 0007h) service number:
- 00h get version
- 01h test create
- 02h create swap file
- 03h destroy swap file
- 04h in
- 05h out
- 06h test if I/O valid
- 07h "Read_Or_Write"
- 08h "Grow_File"
- 09h "Init_File"
- SeeAlso: #01270,#01272,#01273,#02648
- --------W-20----Vx0009-----------------------
- INT 20 P - Microsoft Windows - REBOOT - VxD SERVICES
- VxD = 0009h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01272)
- Values for REBOOT (VxD ID 0009h) service number:
- 00h get REBOOT version???
- 01h ???
- 02h ???
- 03h ...last service for Windows95 SP1
- SeeAlso: #01271,#01273,#02642
- --------W-20----Vx000A-----------------------
- INT 20 P - Microsoft Windows - VDD - VxD SERVICES
- VxD = 000Ah
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01273)
- Values for VDD (VxD ID 000Ah) service number:
- 00h get version
- 01h PIF state
- 02h get GrabRtn
- 03h hide cursor
- 04h set VM type
- 05h get ModTime
- 06h set HCurTrk
- 07h message clear screen
- 08h message foreground color
- 09h message background color
- 0Ah message output text
- 0Bh message set cursor position
- 0Ch query access
- 0Dh "VDD_Check_Update_Soon"
- 0Eh "VDD_Get_Mini_Dispatch_Table"
- 0Fh "VDD_Register_Virtual_Port"
- DX = base I/O port number
- CL = number of contiguous ports???
- 10h "VDD_Get_VM_Info"
- 11h "VDD_Get_Special_VM_IDs"
- Return: ESI = ???
- EDI = ???
- 12h "VDD_Register_Extra_Screen_Selector"
- 13h "VDD_Takeover_VGA_Port"
- DX = VGA I/O port number (03C2h, etc.)
- ECX -> routine to call on I/O access
- Return: ECX -> previous handler (to be jumped to at end of new handler)
- 14h ???
- 15h ???
- 16h ...last service for Windows95 SP1
- SeeAlso: #01272,#01274,#02648
- --------W-20----Vx000B-----------------------
- INT 20 P - Microsoft Windows - VSD - VxD SERVICES
- VxD = 000Bh
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01274)
- Values for VSD (VxD ID 000Bh) service number:
- 00h get version
- 01h bell
- 02h sound on
- 03h "VSD_TakeSoundPort"
- SeeAlso: #01273,#01275
- --------W-20----Vx000C-----------------------
- INT 20 P - Microsoft Windows - VMD / VMOUSE - VxD SERVICES
- VxD = 000Ch
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01275)
- Values for VMD / VMOUSE (VxD ID 000Ch) service number:
- 0000h get version
- 0001h set mouse type
- 0002h get mouse owner
- 0003h "VMOUSE_Post_Pointer_Message"
- 0004h "VMOUSE_Set_Cursor_Proc"
- 0005h "VMOUSE_Call_Cursor_Proc"
- 0006h "VMOUSE_Set_Mouse_Data~Get_Mouse_Data"
- 0007h "VMOUSE_Manipulate_Pointer_Message"
- 0008h "VMOUSE_Set_Middle_Button"
- 0009h "VMD_Set_Middle_Button"
- 000Ah "VMD_Enable_Disable_Mouse_Events"
- 000Bh "VMD_Post_Absolute_Pointer_Message"
- ...last service for Windows95 SP1
- SeeAlso: #01274,#01276,INT 2F/AX=1684h/BX=000Ch
- --------W-20----Vx000D-----------------------
- INT 20 P - Microsoft Windows - VKD - VxD SERVICES
- VxD = 000Dh
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01276)
- Values for VKD (VxD ID 000Dh) service number:
- 0000h get version
- 0001h define hotkey
- 0002h remove hotkey
- 0003h locally enable hotkey
- 0004h locally disable hotkey
- 0005h reflect hotkey
- 0006h cancel hotkey state
- 0007h force keys
- 0008h get keyboard owner
- 0009h define paste mode
- 000Ah start pasting
- 000Bh cancel paste
- 000Ch get message key
- 000Dh peek message key
- 000Eh flush message key queue
- 000Fh "VKD_Enable_Keyboard"
- 0010h "VKD_Disable_Keyboard"
- 0011h "VKD_Get_Shift_State"
- 0012h "VKD_Filter_Keyboard_Input"
- 0013h "VKD_Put_Byte"
- 0014h "VKD_Set_Shift_State"
- ...last service for Windows95 SP1
- SeeAlso: #01275,#01277
- --------W-20----Vx000E-----------------------
- INT 20 P - Microsoft Windows - VCD - VxD SERVICES
- VxD = 000Eh
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01277)
- Values for VCD (VxD ID 000Eh) service number:
- 0000h get version
- 0001h set port global
- 0002h get focus
- 0003h virtualize port
- 0004h "VCD_Acquire_Port"
- 0005h "VCD_Free_Port"
- 0006h "VCD_Acquire_Port_Windows_Style"
- 0007h "VCD_Free_Port_Windows_Style"
- 0008h "VCD_Steal_Port_Windows_Style"
- 0009h "VCD_Find_COM_Index"
- 000Ah "VCD_Set_Port_Global_Special"
- 000Bh "VCD_Virtualize_Port_Dynamic"
- 000Ch "VCD_Unvirtualize_Port_Dynamic"
- ...last service for Windows95 SP1
- SeeAlso: #01276,#01278
- --------W-20----Vx0010-----------------------
- INT 20 P - Microsoft Windows - BlockDev / IOS - VxD SERVICES
- VxD = 0010h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01278)
- Values for BlockDev/IOS (VxD ID 0010h) service number:
- 0000h get version
- 0001h register device
- 0002h find INT 13 drive
- 0003h get device list
- 0004h send command
- 0005h command complete
- 0006h synchronous command
- 0007h "IOS_Register"
- 0008h "IOS_Requestor_Service"
- 0009h "IOS_Exclusive_Access"
- 000Ah "IOS_Send_Next_Command"
- 000Bh "IOS_Set_Async_Time_Out"
- 000Ch "IOS_Signal_Semaphore_No_Switch"
- 000Dh "IOSIdleStatus"
- 000Eh "IOSMapIORSToI24"
- 000Fh "IOSMapIORSToI21"
- 0010h "PrintLog"
- SeeAlso: #01277,#01279
- --------W-20----Vx0011-----------------------
- INT 20 P - Microsoft Windows - VMCPD - VxD SERVICES
- VxD = 0011h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01279)
- Values for VMCPD (VxD ID 0011h) service number:
- 0000h "VMCPD_Get_Version"
- 0001h "VMCPD_Get_Virt_State"
- 0002h "VMCPD_Set_Virt_State"
- 0003h "VMCPD_Get_CR0_State"
- 0004h "VMCPD_Set_CR0_State"
- 0005h "VMCPD_Get_Thread_State"
- 0006h "VMCPD_Set_Thread_State"
- 0007h "_VMCPD_Get_FP_Instruction_Size"
- 0008h "VMCPD_Set_Thread_Precision"
- SeeAlso: #01278,#01280,#02642
- --------W-20----Vx0012-----------------------
- INT 20 P - Microsoft Windows - EBIOS - VxD SERVICES
- VxD = 0012h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01280)
- Values for EBIOS (VxD ID 0012h) service number:
- 00h get EBIOS version
- 01h get unused memory
- SeeAlso: #01279,#01281
- --------W-20----Vx0014-----------------------
- INT 20 P - Microsoft Windows - VNETBIOS - VxD SERVICES
- VxD = 0014h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01281)
- Values for VNETBIOS (VxD ID 0014h) service number:
- 00h get version
- 01h register
- 02h submit
- 03h enum
- 04h deregister
- 05h register2
- 06h map
- 07h enum2
- SeeAlso: #01280,#01282
- --------W-20----Vx0015-----------------------
- INT 20 P - Microsoft Windows - DOSMGR - VxD SERVICES
- VxD = 0015h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01282)
- Values for DOSMGR (VxD ID 0015h) service number:
- 0000h get version
- 0001h set exec VM data
- 0002h coyp VM drive state
- 0003h execute VM
- 0004h get InDOS pointer
- 0005h add device
- 0006h remove device
- 0007h instance device
- 0008h get DOS critical status
- 0009h enable InDOS polling
- 000Ah backfill allowed
- 000Bh "LocalGlobalReg"
- 000Ch "Init_UMB_Area"
- 000Dh "Begin_V86_App"
- 000Eh "End_V86_App"
- 000Fh "Alloc_Local_Sys_VM_Mem"
- EAX = number of paragraphs??? to allocate
- 0010h "DOSMGR_Grow_CDSs"
- 0011h "DOSMGR_Translate_Server_DOS_Call"
- 0012h "DOSMGR_MMGR_PSP_Change_Notifier"
- SeeAlso: #01281,#02656 at INT 2F/AX=1684h/BX=0015h
- --------W-20----Vx0017-----------------------
- INT 20 P - Microsoft Windows - SHELL - VxD SERVICES
- VxD = 0017h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01283)
- Values for SHELL (VxD ID 0017h) service number:
- 0000h get version
- 0001h resolve contention
- 0002h event
- 0003h SYSMODAL message
- 0004h message
- 0005h get VM information
- 0006h "_SHELL_PostMessage"
- 0007h "_SHELL_WinExec"
- 0008h "_SHELL_CallDll"
- 0009h "SHELL_OpenClipboard"
- 000Ah "SHELL_SetClipboardData"
- 000Bh "SHELL_GetClipboardData"
- 000Ch "SHELL_CloseClipboard"
- 000Dh "_SHELL_Install_Taskman_Hooks"
- 000Eh "SHELL_Hook_Properties"
- 000Fh "SHELL_Unhook_Properties"
- 0010h "SHELL_OEMKeyScan"
- 0011h "SHELL_Update_User_Activity"
- 0012h "_SHELL_UnhookSystemBroadcast"
- 0013h "_SHELL_LocalAllocEx"
- 0014h "_SHELL_LocalFree"
- 0015h "_SHELL_LoadLibrary"
- 0016h "_SHELL_FreeLibrary"
- 0017h "_SHELL_GetProcAddress"
- 0018h "_SHELL_CallDll"
- 0019h "_SHELL_SuggestSingleMSDOSMode"
- 001Ah "SHELL_CheckHotkeyAllowed"
- 001Bh "_SHELL_GetDOSAppInfo"
- SeeAlso: #01282,#01284,#02657 at INT 2F/AX=1684h/BX=0017h
- --------W-20----Vx0018-----------------------
- INT 20 P - Microsoft Windows - VMPoll - VxD SERVICES
- VxD = 0018h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01284)
- Values for VMPoll (VxD ID 0018h) service number:
- 00h get version
- 01h enable/disable
- 02h reset detection
- 03h check idle
- SeeAlso: #01269,#02657 at INT 2F/AX=1684h/BX=0017h
- --------W-20----Vx001A-----------------------
- INT 20 P - Microsoft Windows - DOSNET - VxD SERVICES
- VxD = 001Ah
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01285)
- Values for DOSNET (VxD ID 001Ah) service number:
- 00h get version
- 01h send FILESYSCHANGE
- 02h do PSP adjust
- SeeAlso: #01284,#01286
- --------W-20----Vx001B-----------------------
- INT 20 P - Microsoft Windows - VFD - VxD SERVICES
- VxD = 001Bh
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01286,#01340
- (Table 01286)
- Values for VFD (VxD ID 001Bh) service number:
- 0000h get version
- SeeAlso: #01285,#01287
- --------W-20----Vx001C-----------------------
- INT 20 P - Microsoft Windows - LoadHi - VxD SERVICES
- VxD = 001Ch
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01287)
- Values for LoadHi (VxD ID 001Ch) service number:
- 00h get version
- Return: CF clear
- EAX = version (AH = major, AL = minor)
- ESI -> ASCIZ signature "LoadHi"
- SeeAlso: #01286,#01288
- --------W-20----Vx0020-----------------------
- INT 20 P - Microsoft Windows - Int13 - VxD SERVICES
- VxD = 0020h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01288)
- Values for Int13 (VxD ID 0020h) service number:
- 00h get version
- 01h device registered
- 02h translate VM interrupt
- 03h hooking BIOS interrupt
- 04h unhooking BIOS interrupt
- SeeAlso: #01287,#01289
- --------W-20----Vx0021-----------------------
- INT 20 P - Microsoft Windows - PAGEFILE - VxD SERVICES
- VxD = 0021h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01289)
- Values for PAGEFILE (VxD ID 0021h) service number:
- 00h get version
- 01h init file
- 02h clean up
- 03h grow file
- 04h read or write
- 05h cancel
- 06h test I/O valid
- 07h "Get_Size_Info"
- 08h "Set_Async_Manager"
- 09h "Call_Async_Manager"
- SeeAlso: #01288,#02661 at INT 2F/AX=1684h/BX=0021h
- --------W-20----Vx0026-----------------------
- INT 20 P - Microsoft Windows - VPOWERD - VxD SERVICES
- VxD = 0026h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01290)
- Values for VPOWERD (VxD ID 0026h) service number:
- 00h get version
- Return: CF clear
- EAX = version (AH = major, AL = minor)
- 01h get APM BIOS version
- Return: CF clear
- EAX = APM BIOS version
- 02h get current power management level
- Return: CF clear
- EAX = power management level
- 03h enable/disable power management (see INT 15/AX=5308h)
- Return: EAX = error code (see #02665) or 00000000h if successful
- 04h set power state (see INT 15/AX=5307h)
- ???
- Return: EAX = error code (see #02665) or 00000000h if successful
- 05h set system power status
- Return: EAX = error code (see #02665) or 00000000h if successful
- 06h restore APM power-on defaults (see INT 15/AX=5309h)
- Return: EAX = error code (see #02665) or 00000000h if successful
- 07h get power status (see INT 15/AX=530Ah)
- Return: ???
- 08h get APM 1.1 power state (see INT 15/AX=530Ch)
- Return: ???
- 09h invoke OEM APM function
- ??? -> bufer containing parameters for INT 15/AX=5380h
- Return: EAX = error code (see #02665) or 00000000h if successful
- buffer updated if successful
- 0Ah register power handler
- ???
- Return: EAX = error code (see #02665) or 00000000h if successful
- 0Bh deregister power handler
- ???
- Return: EAX = error code (see #02665) or 00000000h if successful
- 0Ch Win32 get system power status
- 0Dh Win32 set system power status
- SeeAlso: #01289,#01291,INT 2F/AX=1684h/BX=0026h
- --------W-20----Vx0027-----------------------
- INT 20 P - Microsoft Windows - VXDLDR - VxD SERVICES
- VxD = 0027h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01291)
- Values for VXDLDR (VxD ID 0027h) service number:
- 0000h "VXDLDR_Get_Version"
- 0001h "VXDLDR_LoadDevice"
- 0002h "VXDLDR_UnloadDevice"
- 0003h "VXDLDR_DevInitSucceeded"
- 0004h "VXDLDR_DevInitFailed"
- 0005h "VXDLDR_GetDeviceList"
- 0006h "VXDLDR_UnloadMe"
- 0007h "PELDR_LoadModule"
- 0008h "PELDR_GetModuleHandle"
- 0009h "PELDR_GetModuleUsage"
- 000Ah "PELDR_GetEntryPoint"
- 000Bh "PELDR_GetProcAddress"
- 000Ch "PELDR_AddExportTable"
- 000Dh "PELDR_RemoveExportTable"
- 000Eh "PELDR_FreeModule"
- 000Fh "VXDLDR_Notify"
- 0010h "_PELDR_InitCompleted"
- 0011h "_PELDR_LoadModuleEx"
- SeeAlso: #01289,#01292
- --------W-20----Vx0028-----------------------
- INT 20 P - Microsoft Windows - NDIS - VxD SERVICES
- VxD = 0028h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01292)
- Values for NDIS (VxD ID 0028h) service number:
- 00h "NdisGetVersion"
- 01h "NdisAllocateSpinLock"
- 02h "NdisFreeSpinLock"
- 03h "NdisAcquireSpinLock"
- 04h "NdisReleaseSpinLock"
- 05h "NdisOpenConfiguration"
- 06h "NdisReadConfiguration"
- 07h "NdisCloseConfiguration"
- 08h "NdisReadEisaSlotInformation"
- 09h "NdisReadMcaPosInformation"
- 0Ah "NdisAllocateMemory"
- 0Bh "NdisFreeMemory"
- 0Ch "NdisSetTimer"
- 0Dh "NdisCancelTimer"
- 0Eh "NdisStallExecution"
- 0Fh "NdisInitializeInterrupt"
- 10h "NdisRemoveInterrupt"
- 11h "NdisSynchronizeWithInterrupt"
- 12h "NdisOpenFile"
- 13h "NdisMapFile"
- 14h "NdisUnmapFile"
- 15h "NdisCloseFile"
- 16h "NdisAllocatePacketPool"
- 17h "NdisFreePacketPool"
- 18h "NdisAllocatePacket"
- 19h "NdisReinitializePacket"
- 1Ah "NdisFreePacket"
- 1Bh "NdisQueryPacket"
- 1Ch "NdisAllocateBufferPool"
- 1Dh "NdisFreeBufferPool"
- 1Eh "NdisAllocateBuffer"
- 1Fh "NdisCopyBuffer"
- 20h "NdisFreeBuffer"
- 21h "NdisQueryBuffer"
- 22h "NdisGetBufferPhysicalAddress"
- 23h "NdisChainBufferAtFront"
- 24h "NdisChainBufferAtBack"
- 25h "NdisUnchainBufferAtFront"
- 26h "NdisUnchainBufferAtBack"
- 27h "NdisGetNextBuffer"
- 28h "NdisCopyFromPacketToPacket"
- 29h "NdisRegisterProtocol"
- 2Ah "NdisDeregisterProtocol"
- 2Bh "NdisOpenAdapter"
- 2Ch "NdisCloseAdapter"
- 2Dh "NdisSend"
- 2Eh "NdisTransferData"
- 2Fh "NdisReset"
- 30h "NdisRequest"
- 31h "NdisInitializeWrapper"
- 32h "NdisTerminateWrapper"
- 33h "NdisRegisterMac"
- 34h "NdisDeregisterMac"
- 35h "NdisRegisterAdapter"
- 36h "NdisDeregisterAdapter"
- 37h "NdisCompleteOpenAdapter"
- 38h "NdisCompleteCloseAdapter"
- 39h "NdisCompleteSend"
- 3Ah "NdisCompleteTransferData"
- 3Bh "NdisCompleteReset"
- 3Ch "NdisCompleteRequest"
- 3Dh "NdisIndicateReceive"
- 3Eh "NdisIndicateReceiveComplete"
- 3Fh "NdisIndicateStatus"
- 40h "NdisIndicateStatusComplete"
- 41h "NdisCompleteQueryStatistics"
- 42h "NdisEqualString"
- 43h "NdisNetAddressStringToBinary"
- 44h "NdisReadNetworkAddress"
- 45h "NdisWriteErrorLogEntry"
- 46h "C_MapPhysToLinear"
- 47h "C_HeapFree"
- 48h "NdisAllocateSharedMemory"
- 49h "NdisFreeSharedMemory"
- ...
- 5Fh ...last service for Windows95 SP1
- SeeAlso: #01291,#01293
- --------W-20----Vx002A-----------------------
- INT 20 P - Microsoft Windows - VWIN32 - VxD SERVICES
- VxD = 002Ah
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01293)
- Values for VWIN32 (VxD ID 002Ah) service number:
- 0000h "VWin32_Get_Version"
- 0001h "VWin32_Wake_For_Event"
- 0002h "_VWIN32_QueueUserApc"
- 0003h "_VWIN32_Get_Thread_Context"
- 0004h "_VWIN32_Set_Thread_Context"
- 0005h "_VWIN32_CopyMem"
- 0006h "_VWIN32_BlockForTermination"
- 0007h "_VWIN32_Emulate_Npx"
- 0008h "_VWIN32_CheckDelayedNpxTrap"
- 0009h "VWIN32_EnterCrstR0"
- 000Ah "VWIN32_LeaveCrstR0"
- 000Bh "_VWIN32_FaultPopup"
- 000Ch "VWIN32_GetContextHandle"
- 000Dh "VWIN32_GetCurrentProcessHandle"
- 000Eh "_VWIN32_SetWin32Event"
- 000Fh "_VWIN32_PulseWin32Event"
- 0010h "_VWIN32_ResetWin32Event"
- 0011h "_VWIN32_WaitSingleObject"
- 0012h "_VWIN32_WaitMultipleObjects"
- 0013h "_VWIN32_CreateRing0Thread"
- 0014h "_VWIN32_CloseVxDHandle"
- 0015h "VWIN32_ActiveTimeBiasSet"
- 0016h "VWIN32_GetCurrentDirectory"
- 0017h "VWIN32_BlueScreenPopup"
- 0018h "VWIN32_TerminateApp"
- 0019h "_VWIN32_QueueKernelAPC"
- 001Ah "VWIN32_SysErrorBox"
- 001Bh "_VWIN32_IsClientWin32"
- 001Ch "VWIN32_IFSRIPWhenLev2Taken"
- SeeAlso: #01292,#01294
- --------W-20----Vx002B-----------------------
- INT 20 P - Microsoft Windows - VCOMM - VxD SERVICES
- VxD = 002Bh
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01294)
- Values for VCOMM (VxD ID 002Bh) service number:
- 0000h "VCOMM_Get_Version"
- 0001h "_VCOMM_Register_Port_Driver"
- 0002h "_VCOMM_Acquire_Port"
- 0003h "_VCOMM_Release_Port"
- 0004h "_VCOMM_OpenComm"
- 0005h "_VCOMM_SetCommState"
- 0006h "_VCOMM_GetCommState"
- 0007h "_VCOMM_SetupComm"
- 0008h "_VCOMM_TransmitCommChar"
- 0009h "_VCOMM_CloseComm"
- 000Ah "_VCOMM_GetCommQueueStatus"
- 000Bh "_VCOMM_ClearCommError"
- 000Ch "_VCOMM_GetModemStatus"
- 000Dh "_VCOMM_GetCommProperties"
- 000Eh "_VCOMM_EscapeCommFunction"
- 000Fh "_VCOMM_PurgeComm"
- 0010h "_VCOMM_SetCommEventMask"
- 0011h "_VCOMM_GetCommEventMask"
- 0012h "_VCOMM_WriteComm"
- 0013h "_VCOMM_ReadComm"
- 0014h "_VCOMM_EnableCommNotification"
- 0015h "_VCOMM_GetLastError"
- 0016h "_VCOMM_Steal_Port"
- 0017h "_VCOMM_SetReadCallBack"
- 0018h "_VCOMM_SetWriteCallBack"
- 0019h "_VCOMM_GetSetCommTimeouts"
- 001Ah "_VCOMM_SetWriteRequest"
- 001Bh "_VCOMM_SetReadRequest"
- 001Ch "_VCOMM_Dequeue_Request"
- 001Dh "_VCOMM_Dequeue_Request"
- 001Eh "_VCOMM_Enumerate_DevNodes"
- 001Fh "VCOMM_Map_Win32DCB_To_Ring0"
- 0020h "VCOMM_Map_Ring0DCB_To_Win32"
- 0021h "_VCOMM_Get_Contention_Handler"
- 0022h "_VCOMM_Map_Name_To_Resource"
- SeeAlso: #01293,#01295
- --------W-20----Vx002C-----------------------
- INT 20 P - Microsoft Windows - SPOOLER - VxD SERVICES
- VxD = 002Ch
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01295)
- Values for SPOOLER (VxD ID 002Ch) service number:
- 0000h get version???
- 0001h ???
- 0010h ...last service for Windows95 SP1
- SeeAlso: #01294,#01296
- --------W-20----Vx0032-----------------------
- INT 20 P - Microsoft Windows - VSERVER - VxD SERVICES
- VxD = 0032h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01296)
- Values for VSERVER (VxD ID 0032h) service number:
- 00h get VSERVER version
- Return: CF clear
- EAX = version (AH = major, AL = minor)
- EBX = ??? (00000000h)
- 01h allocate ???
- AX = ???
- ESI = ???
- Return: CF clear if successful
- CF set on error (table full)
- 02h NOP???
- Return: EBX = 00000000h
- 03h ???
- Return: ZF clear
- SeeAlso: #01295,#01297,INT 2F/AX=1684h/BX=0032h
- --------W-20----Vx0033-----------------------
- INT 20 P - Microsoft Windows - CONFIGMG - VxD SERVICES
- VxD = 0033h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01297)
- Values for CONFIGMG (VxD ID 0033h) service number:
- 0000h "_CONFIGMG_Get_Version"
- 0001h "_CONFIGMG_Initialize"
- 0002h "_CONFIGMG_Locate_DevNode"
- 0003h "_CONFIGMG_Get_Parent"
- 0004h "_CONFIGMG_Get_Child"
- 0005h "_CONFIGMG_Get_Sibling"
- 0006h "_CONFIGMG_Get_Device_ID_Size"
- 0007h "_CONFIGMG_Get_Device_ID"
- 0008h "_CONFIGMG_Get_Depth"
- 0009h "_CONFIGMG_Get_Private_DWord"
- 000Ah "_CONFIGMG_Set_Private_DWord"
- 000Bh "_CONFIGMG_Create_DevNode"
- 000Ch "_CONFIGMG_Query_Remove_SubTree"
- 000Dh "_CONFIGMG_Remove_SubTree"
- 000Eh "_CONFIGMG_Register_Device_Driver"
- 000Fh "_CONFIGMG_Register_Enumerator"
- 0010h "_CONFIGMG_Register_Arbitrator"
- 0011h "_CONFIGMG_Deregister_Arbitrator"
- 0012h "_CONFIGMG_Query_Arbitrator_Free_Size"
- 0013h "_CONFIGMG_Query_Arbitrator_Free_Data"
- 0014h "_CONFIGMG_Sort_NodeList"
- 0015h "_CONFIGMG_Yield"
- 0016h "_CONFIGMG_Lock"
- 0017h "_CONFIGMG_Unlock"
- 0018h "_CONFIGMG_Add_Empty_Log_Conf"
- 0019h "_CONFIGMG_Free_Log_Conf"
- 001Ah "_CONFIGMG_Get_First_Log_Conf"
- 001Bh "_CONFIGMG_Get_Next_Log_Conf"
- 001Ch "_CONFIGMG_Add_Res_Des"
- 001Dh "_CONFIGMG_Modify_Res_Des"
- 001Eh "_CONFIGMG_Free_Res_Des"
- 001Fh "_CONFIGMG_Get_Next_Res_Des"
- 0020h "_CONFIGMG_Get_Performance_Info"
- 0021h "_CONFIGMG_Get_Res_Des_Data_Size"
- 0022h "_CONFIGMG_Get_Res_Des_Data"
- 0023h "_CONFIGMG_Process_Events_Now"
- 0024h "_CONFIGMG_Create_Range_List"
- 0025h "_CONFIGMG_Add_Range"
- 0026h "_CONFIGMG_Delete_Range"
- 0027h "_CONFIGMG_Test_Range_Available"
- 0028h "_CONFIGMG_Dup_Range_List"
- 0029h "_CONFIGMG_Free_Range_List"
- 002Ah "_CONFIGMG_Invert_Range_List"
- 002Bh "_CONFIGMG_Intersect_Range_List"
- 002Ch "_CONFIGMG_First_Range"
- 002Dh "_CONFIGMG_Next_Range"
- 002Eh "_CONFIGMG_Dump_Range_List"
- 002Fh "_CONFIGMG_Load_DLVxDs"
- 0030h "_CONFIGMG_Get_DDBs"
- 0031h "_CONFIGMG_Get_CRC_CheckSum"
- 0032h "_CONFIGMG_Register_DevLoader"
- 0033h "_CONFIGMG_Reenumerate_DevNode"
- 0034h "_CONFIGMG_Setup_DevNode"
- 0035h "_CONFIGMG_Reset_Children_Marks"
- 0036h "_CONFIGMG_Get_DevNode_Status"
- 0037h "_CONFIGMG_Remove_Unmarked_Children"
- 0038h "_CONFIGMG_ISAPNP_To_CM"
- 0039h "_CONFIGMG_CallBack_Device_Driver"
- 003Ah "_CONFIGMG_CallBack_Enumerator"
- 003Bh "_CONFIGMG_Get_Alloc_Log_Conf"
- 003Ch "_CONFIGMG_Get_DevNode_Key_Size"
- 003Dh "_CONFIGMG_Get_DevNode_Key"
- 003Eh "_CONFIGMG_Read_Registry_Value"
- 003Fh "_CONFIGMG_Write_Registry_Value"
- 0040h "_CONFIGMG_Disable_DevNode"
- 0041h "_CONFIGMG_Enable_DevNode"
- 0042h "_CONFIGMG_Move_DevNode"
- 0043h "_CONFIGMG_Set_Bus_Info"
- 0044h "_CONFIGMG_Get_Bus_Info"
- 0045h "_CONFIGMG_Set_HW_Prof"
- 0046h "_CONFIGMG_Recompute_HW_Prof"
- 0047h "_CONFIGMG_Query_Change_HW_Prof"
- 0048h "_CONFIGMG_Get_Device_Driver_Private_DWord"
- 0049h "_CONFIGMG_Set_Device_Driver_Private_DWord"
- 004Ah "_CONFIGMG_Get_HW_Prof_Flags"
- 004Bh "_CONFIGMG_Set_HW_Prof_Flags"
- 004Ch "_CONFIGMG_Read_Registry_Log_Confs"
- 004Dh "_CONFIGMG_Run_Detection"
- 004Eh "_CONFIGMG_Call_At_Appy_Time"
- 004Fh "_CONFIGMG_Fail_Change_HW_Prof"
- 0050h "_CONFIGMG_Set_Private_Problem"
- 0051h "_CONFIGMG_Debug_DevNode"
- 0052h "_CONFIGMG_Get_Hardware_Profile_Info"
- 0053h "_CONFIGMG_Register_Enumerator_Function"
- 0054h "_CONFIGMG_Call_Enumerator_Function"
- 0055h "_CONFIGMG_Add_ID"
- 0056h "_CONFIGMG_Find_Range"
- 0057h "_CONFIGMG_Get_Global_State"
- 0058h "_CONFIGMG_Broadcast_Device_Change_Message"
- 0059h "_CONFIGMG_Call_DevNode_Handler"
- 005Ah "_CONFIGMG_Remove_Reinsert_All"
- Note: the VxD services appear to be identical to the PM/V86 APIs on
- INT 2F/AX=1684h
- SeeAlso: #01296,#01299,INT 2F/AX=1684h/BX=0033h
- --------W-20----Vx0034-----------------------
- INT 20 P - Microsoft Windows - DWCFGMG.SYS - VxD SERVICES
- VxD = 0034h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01298)
- Values for DWCFGMG.SYS (VxD ID 0034h) service number:
- 00h "CM_GetVersion" get supported DDI version
- Return: EAX = 00000000h if not installed
- else
- AH = major version number
- AL = minor version number
- EBX = number of devices controlled by DWCFGMG.SYS
- 01h "CM_GetConfig" get device configuration
- EBX = device index
- EDI -> buffer for configuration information (see #02675)
- Return: EAX = status (0000h successful, 0001h index out of range)
- 02h "CM_LockConfig" lock device configuration
- EDI -> configuration information (see #02675)
- Return: EAX = status
- 0000h successful
- 0001h resource conflict
- 0002h invalid request
- 03h "CM_UnlockConfig" unlock device configuration
- EDI -> configuration information (see #02675)
- Return: EAX = status (0000h successful, 0001h invalid request)
- 04h "CME_QueryResources"
- 05h "CME_AllocResources"
- 06h "CME_DeallocResources"
- SeeAlso: INT 2F/AX=1684h/BX=0034h
- --------W-20----Vx0036-----------------------
- INT 20 P - Microsoft Windows - VFBACKUP - VxD SERVICES
- VxD = 0036h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01299)
- Values for VFBACKUP (VxD ID 0036h) service number:
- 0000h get version
- Return: CF clear
- EAX = version (AH = major, AL = minor)
- 0001h "VFBACKUP_Lock_NEC"
- 0002h "VFBACKUP_UnLock_NEC"
- 0003h "VFBACKUP_Register_NEC"
- 0004h "VFBACKUP_Register_VFD"
- 0005h "VFBACKUP_Lock_All_Ports"
- SeeAlso: #01297,#01300
- --------W-20----Vx0037-----------------------
- INT 20 P - Microsoft Windows - VMINI / ENABLE - VxD SERVICES
- VxD = 0037h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01300)
- Values for VMINI / ENABLE (VxD ID 0037h) service number:
- 0000h get version
- Return: CF clear
- EAX = version (AH = major, AL = minor)
- 0001h "VMINI_Update"
- ??? (performs VMMCall 1800Eh, then falls through to service 04h)
- Return: EAX = system time???
- 0002h "VMINI_Status"
- get current ???
- Return: EAX = ???
- 0003h "VMINI_DisplayError" (schedules a global event via VMMCall 1800Eh)
- Return: ???
- 0004h "VMINI_SetTimeStamp" (performs VMMCall 100CFh)
- Return: EAX = system time
- 0005h "VMINI_Siren" (call ??? priority event)
- Return: nothing
- 0006h "VMINI_RegisterAccess" (set ??? / get ???)
- EDI -> buffer containing data to copy into VxD and space for results
- Return: EDI buffer updated
- 0007h "VMINI_GetData"
- EBX = ??? flags (bits 2,15,17,18 checked)
- EDI -> ???
- ???
- Return: ???
- 0008h "VMINI_ShutDownItem" (schedules a global event via VMMCall 1800Eh)
- Return: ???
- 0009h "VMINI_RegisterSK" (get ??? data)
- EDI -> buffer for data (see #01301)
- Return: EDI buffer updated if large enough
- SeeAlso: #01299,#01302,#02677 at INT 2F/AX=1684h/BX=0037h
- Format of ENABLE.VXD ??? data:
- Offset Size Description (Table 01301)
- 00h DWORD (ret) length of data, including this word
- (call) length of buffer
- 04h DWORD -> 24-byte (or larger) buffer
- 08h DWORD -> 20-byte buffer
- 0Ch DWORD -> 260-byte buffer
- 10h DWORD -> 260-byte buffer
- SeeAlso: #01300
- --------W-20----Vx0038-----------------------
- INT 20 P - Microsoft Windows - VCOND - VxD SERVICES
- VxD = 0038h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01302)
- Values for VCOND (VxD ID 0038h) service number:
- 0000h get VCOND version
- Return: CF clear
- EAX = version (AH = major, AL = minor)
- 0001h "VCOND_Launch_ConApp_Inherited"
- SeeAlso: #01303,#01300,#01304
- (Table 01303)
- Values for Windows95 VCOND (Vxd ID 0038h) Win32 service number:
- 00h get VCOND version
- Return: EAX = version (AH = major, AL = minor)
- ...
- 34h ...last Win32 service for Windows95 SP1
- SeeAlso: #01302
- --------W-20----Vx003D-----------------------
- INT 20 P - Microsoft Windows - BIOS - VxD SERVICES
- VxD = 003Dh
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01304)
- Values for BIOS (VxD ID 003Dh) service number:
- 00h get version???
- 01h ???
- 02h ???
- 03h ???
- SeeAlso: #01302,#01305
- --------W-20----Vx003E-----------------------
- INT 20 P - Microsoft Windows - WSOCK - VxD SERVICES
- VxD = 003Eh
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01305)
- Values for WSOCK (VxD ID 003Eh) service number:
- 00h get WSOCK version
- Return: CF clear
- AH = major version
- AL = minor version
- EAX high word = 0000h
- 01h ???
- EAX = ??? or 00000000h
- Return: CF clear if successful
- EAX = 00000000h
- CF set on error
- EAX = ???
- 02h ???
- EAX = ??? or 00000000h
- Return: ???
- 03h ???
- 04h ...last service for Windows95 SP1
- SeeAlso: #01304,#01306
- --------W-20----Vx0040-----------------------
- INT 20 P - Microsoft Windows - IFSMgr - VxD SERVICES
- VxD = 0040h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01306)
- Values for IFSMGR (VxD ID 0040h) service number:
- 00h get version
- 01h "RegisterMount"
- 02h "RegisterNet"
- 03h "RegisterMailSlot"
- 04h "Attach"
- 05h "Detach"
- 06h "Get_NetTime"
- 07h "Get_DOSTime"
- 08h "SetupConnection"
- 09h "DerefConnection"
- 0Ah "ServerDOSCall"
- 0Bh "CompleteAsync"
- 0Ch "RegisterHeap"
- 0Dh "GetHeap"
- 0Eh "RetHeap"
- 0Fh "CheckHeap"
- 10h "CheckHeapItem"
- 11h "FillHeapSpare"
- 12h "Block"
- 13h "Wakeup"
- 14h "Yield"
- 15h "SchedEvent"
- 16h "QueueEvent"
- 17h "KillEvent"
- 18h "FreeIOReg"
- 19h "MakeMailSlot"
- 1Ah "DeleteMailSlot"
- 1Bh "WriteMailSlot"
- 1Ch "PopUp"
- 1Dh "printf"
- 1Eh "AssertFailed"
- 1Fh "LogEntry"
- 20h "DebugMenu"
- 21h "DebugVars"
- 22h "GetDebugString"
- 23h "GetDebugHexNum"
- 24h "NetFunction"
- 25h "DoDelAllUses"
- 26h "SetErrString"
- 27h "GetErrString"
- 28h "SetReqHook"
- 29h "SetPathHook"
- 2Ah "UseAdd"
- 2Bh "UseDel"
- 2Ch "InitUseAdd"
- 2Dh "ChangeDir"
- 2Eh "DelAllUses"
- 2Fh "CDROM_Attach"
- 30h "CDROM_Detach"
- 31h "Win32DupHandle"
- 32h "Ring0_FileIO"
- 33h "Toggle_Extended_File_Handle"
- 34h "IFSMgr_GetDrive_Info"
- 35h "IFSMgr_Ring0GetDriveInfo"
- 36h "IFSMgr_BlockNoEvents"
- 37h "IFSMgr_NetToDosTime"
- 38h "IFSMgr_DosToNetTime"
- 39h "IFSMgr_DosToWin32Time"
- 3Ah "IFSMgr_Win32ToDosTime"
- 3Bh "IFSMgr_NetToWin32Time"
- 3Ch "IFSMgr_Win32ToNetTime"
- 3Dh "IFSMgr_MetaMatch"
- 3Eh "IFSMgr_TransMatch"
- 3Fh "IFSMgr_CallProvider"
- 40h "UniToBCS"
- 41h "UniToBCSPath"
- 42h "BCSToUni"
- 43h "UniToUpper"
- 44h "UniCharToOEM"
- 45h "CreateBasis"
- 46h "MatchBasisName"
- 47h "AppendBasisTail"
- 48h "FcbToShort"
- 49h "ShortToFcb"
- 4Ah "IFSMgr_ParsePath"
- 4Bh "Query_PhysLock"
- 4Ch "_VolFlush"
- 4Dh "NotifyVolumeArrival"
- 4Eh "NotifyVolumeRemoval"
- 4Fh "QueryVolumeRemoval"
- 50h "IFSMgr_FSDUnmountCFSD"
- 51h "IFSMgr_GetConversionTablePtrs"
- 52h "IFSMgr_CheckAccessConflict"
- 53h "IFSMgr_LockFile"
- 54h "IFSMgr_UnlockFile"
- 55h "IFSMgr_RemoveLocks"
- 56h "IFSMgr_CheckLocks"
- 57h "IFSMgr_CountLocks"
- 58h "IFSMgr_ReassignLockFileInst"
- 59h "IFSMgr_UnassignLockList"
- 5Ah "IFSMgr_MountChildVolume"
- 5Bh "IFSMgr_UnmountChildVolume"
- 5Ch "IFSMgr_SwapDrives"
- 5Dh "IFSMgr_FSDMapFHtoIOREQ"
- 5Eh "IFSMgr_FSDParsePath"
- 5Fh "IFSMgr_FSDAttachSFT"
- 60h "IFSMgr_GetTimeZoneBias"
- 61h "IFSMgr_PNPEvent"
- 62h "IFSMgr_RegisterCFSD"
- 63h "IFSMgr_Win32MapExtendedHandleToSFT"
- 64h "IFSMgr_DbgSetFileHandleLimit"
- 65h "IFSMgr_Win32MapSFTToExtendedHandle"
- 66h "IFSMgr_FSDGetCurrentDrive"
- 67h "IFSMgr_InstallFileSystemApiHook"
- 68h "IFSMgr_RemoveFileSystemApiHook"
- 69h "IFSMgr_RunScheduledEvents"
- 6Ah "IFSMgr_CheckDelResource"
- 6Bh "IFSMgr_Win32GetVMCurdir"
- 6Ch "IFSMgr_SetupFailedConnection"
- 6Dh "_GetMappedErr"
- 6Eh "ShortToLossyFcb"
- 6Fh "IFSMgr_GetLockState"
- 70h "BcsToBcs"
- 71h "IFSMgr_SetLoopback"
- 72h "IFSMgr_ClearLoopback"
- 73h "IFSMgr_ParseOneElement"
- 74h "BcsToBcsUpper"
- SeeAlso: #01305,#01307
- --------W-20----Vx0041-----------------------
- INT 20 P - Microsoft Windows - VCDFSD - VxD SERVICES
- VxD = 0041h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01307)
- Values for VCDFSD (VxD ID 0041h) service number:
- 00h get VCDFSD version???
- 01h ???
- 02h ???
- 03h ???
- SeeAlso: #01306,#01308
- --------W-20----Vx0048-----------------------
- INT 20 P - Microsoft Windows - PERF - VxD SERVICES
- VxD = 0048h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01308)
- Values for PERF (VxD ID 0048h) service number:
- 00h get version
- Return: CF clear
- EAX = version (AH = major, AL = minor)
- 01h "PERF_Server_Register"
- (creates/sets a registry key for the server)
- 02h "PERF_Server_Deregister"
- end performance monitoring (deletes registry key for server)
- 03h "PERF_Server_Add_Stat"
- start performance monitoring (creates/sets a registry key)
- 04h "PERF_Server_Remove_Stat"
- end performance monitoring (deletes registry key)
- SeeAlso: #01307,#01311,#01309
- --------W-20----Vx004A-----------------------
- INT 20 P - Microsoft Windows - MTRR - VxD SERVICES
- VxD = 004Ah
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01309)
- Values for MTRR (VxD ID 004Ah) service number:
- 00h get version
- 01h ??? (highest service defined for Win95B)
- SeeAlso: #01308,#01310
- --------W-20----Vx004B-----------------------
- INT 20 P - Microsoft Windows - NTKERN - VxD SERVICES
- VxD = 004Bh
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01310)
- Values for NTKERN (VxD ID 004Bh) service number:
- 00h get version???
- ...
- 08h ??? (highest service defined for Win95B)
- SeeAlso: #01309,#01311
- --------W-20----Vx011F-----------------------
- INT 20 P - Microsoft Windows - VFLATD - VxD SERVICES
- VxD = 011Fh
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01311)
- Values for VFLATD (VxD ID 011Fh) service number:
- 00h get VFLATD version???
- 01h ???
- SeeAlso: #01308,#01312
- --------W-20----Vx0449-----------------------
- INT 20 P - Microsoft Windows - vjoyd - VxD SERVICES
- VxD = 0449h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01312)
- Values for vjoyd (VxD ID 0449h) service number:
- 00h get vjoyd version???
- 01h ???
- SeeAlso: #01311,#01313
- --------W-20----Vx044A-----------------------
- INT 20 P - Microsoft Windows - mmdevldr - VxD SERVICES
- VxD = 044Ah
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01313)
- Values for mmdevldr (VxD ID 044Ah) service number:
- 00h get mmdevldr version???
- 01h ???
- 02h ???
- 03h ???
- 04h ???
- 05h ???
- SeeAlso: #01312,#01314
- --------W-20----Vx0480-----------------------
- INT 20 P - Microsoft Windows - VNetSup - VxD SERVICES
- VxD = 0480h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01314)
- Values for VNetSup (VxD ID 0480h) service number:
- 00h get VNetSup version???
- 01h ???
- 02h ???
- 03h ???
- 04h ???
- 05h ???
- 06h ???
- SeeAlso: #01313,#01315
- --------W-20----Vx0481-----------------------
- INT 20 P - Microsoft Windows - VREDIR - VxD SERVICES
- VxD = 0481h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01315)
- Values for VREDIR (VxD ID 0481h) service number:
- 0000h "VRedir_Get_Version"
- 0001h "VRedir_Register"
- 0002h "VRedir_MakeMailSlot"
- 0003h "VRedir_DeleteMailSlot"
- 0004h "VRedir_ServerEnum"
- 0010h ...last service for Windows95 SP1
- SeeAlso: #01314,#01316
- --------W-20----Vx0483-----------------------
- INT 20 P - Microsoft Windows - VSHARE - VxD SERVICES
- VxD = 0483h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01316)
- Values for VSHARE (VxD ID 0483h) service number:
- 00h get VSHARE version???
- SeeAlso: #01315,#01317
- --------W-20----Vx0487-----------------------
- INT 20 P - Microsoft Windows - NWLINK - VxD SERVICES
- VxD = 0487h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01317)
- Values for NWLINK (VxD ID 0487h) service number:
- 00h get NWLINK version???
- 01h ???
- 06h ...last service for Windows95 SP1
- SeeAlso: #01316,#01318,#02642
- --------W-20----Vx0488-----------------------
- INT 20 P - Microsoft Windows - VTDI - VxD SERVICES
- VxD = 0488h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01318)
- Values for VTDI (VxD ID 0488h) service number:
- 00h get VTDI version???
- 01h ???
- 08h get ???
- seen called with DWORD -> ASCIZ "MSTCP" on stack, returning EAX=???
- 0Dh ...last service for Windows95 SP1
- SeeAlso: #01317,#01319
- --------W-20----Vx0489-----------------------
- INT 20 P - Microsoft Windows - VIP - VxD SERVICES
- VxD = 0489h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01319)
- Values for VIP (VxD ID 0489h) service number:
- 00h get VIP version???
- 01h ???
- 05h ???
- 06h ???
- returns EAX=0/1
- 08h ...last service for Windows95 SP1
- ---Frontier Technologies' FTCVIP---
- 09h ???
- returns EAX=1
- SeeAlso: #01318,#01320
- --------W-20----Vx048A-----------------------
- INT 20 P - Microsoft Windows - MSTCP - VxD SERVICES
- VxD = 048Ah
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01320)
- Values for MSTCP (VxD ID 048Ah) service number:
- 00h get MSTCP version???
- SeeAlso: #01319,#01321
- --------W-20----Vx048B-----------------------
- INT 20 P - Microsoft Windows - VCACHE - VxD SERVICES
- VxD = 048Bh
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01321)
- Values for VCACHE (VxD ID 048Bh) service number:
- 0000h "VCACHE_Get_Version"
- 0001h "VCACHE_Register"
- 0002h "VCACHE_GetSize"
- 0003h "VCACHE_CheckAvail"
- 0004h "VCACHE_FindBlock"
- 0005h "VCACHE_FreeBlock"
- 0006h "VCACHE_MakeMRU"
- 0007h "VCACHE_Hold"
- 0008h "VCACHE_Unhold"
- 0009h "VCACHE_Enum"
- 000Ah "VCACHE_TestHandle"
- 000Bh "VCACHE_VerifySums"
- 000Ch "VCACHE_RecalcSums"
- 000Dh "VCACHE_TestHold"
- 000Eh "VCACHE_GetStats"
- 000Fh "VCache_Deregister"
- 0010h "VCache_AdjustMinimum"
- 0011h "VCache_SwapBuffers"
- 0012h "VCache_RelinquishPage"
- 0013h "VCache_UseThisPage"
- 0014h "_VCache_CreateLookupCache"
- 0015h "_VCache_CloseLookupCache"
- 0016h "_VCache_DeleteLookupCache"
- 0017h "_VCache_Lookup"
- 0018h "_VCache_UpdateLookup"
- SeeAlso: #01320,#01322
- --------W-20----Vx048E-----------------------
- INT 20 P - Microsoft Windows - NWREDIR - VxD SERVICES
- VxD = 048Eh
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01322)
- Values for NWREDIR (VxD ID 048Eh) service number:
- 00h get NWREDIR version???
- 01h ???
- SeeAlso: #01321,#01323
- --------W-20----Vx0491-----------------------
- INT 20 P - Microsoft Windows - FILESEC - VxD SERVICES
- VxD = 0491h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01323)
- Values for FILESEC (VxD ID 0491h) service number:
- 00h get FILESEC version???
- 01h ???
- 10h ...last service for Windows95 SP1
- SeeAlso: #01322,#01324
- --------W-20----Vx0492-----------------------
- INT 20 P - Microsoft Windows - NWSERVER - VxD SERVICES
- VxD = 0492h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01324)
- Values for NWSERVER (VxD ID 0492h) service number:
- 00h get NWSERVER version???
- 01h ???
- 02h ???
- 03h ???
- SeeAlso: #01323,#01325
- --------W-20----Vx0493-----------------------
- INT 20 P - Microsoft Windows - MSSP / NWSP - VxD SERVICES
- VxD = 0493h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01325)
- Values for MSSP/NWSP (VxD ID 0493h) service number:
- 00h get NSSP / NWSP version???
- 01h ???
- 06h ...last service for Windows95 SP1
- SeeAlso: #01324,#01326
- --------W-20----Vx0494-----------------------
- INT 20 P - Microsoft Windows - NSCL - VxD SERVICES
- VxD = 0494h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01326)
- Values for NSCL (VxD ID 0494h) service number:
- 00h get NSCL version???
- 01h ???
- 02h ???
- SeeAlso: #01325,#01327
- --------W-20----Vx0495-----------------------
- INT 20 P - Microsoft Windows - AFVXD - VxD SERVICES
- VxD = 0495h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01327)
- Values for AFVXD (VxD ID 0495h) service number:
- 00h get version
- Return: CF clear
- AX = version (AH = high, AL = low)
- 01h ???
- EAX -> ???
- EBX -> ???
- ECX = ???
- Return: ???
- 02h ???
- EAX -> ???
- Return: ???
- SeeAlso: #01326,#01328
- --------W-20----Vx0496-----------------------
- INT 20 P - Microsoft Windows - NDIS2SUP - VxD SERVICES
- VxD = 0496h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier (see #02642)
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01328)
- Values for NDIS2SUP (VxD ID 0496h) service number:
- 00h get NDIS2SUP version???
- 01h ???
- SeeAlso: #01327,#01329
- --------W-20----Vx0498-----------------------
- INT 20 P - Microsoft Windows - Splitter - VxD SERVICES
- VxD = 0498h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier (see #02642)
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01329)
- Values for Splitter (VxD ID 0498h) service number:
- 00h get Splitter version
- Return: CF clear
- EAX = version (00000001h)
- 01h ???
- 02h ???
- 03h hook/unhook VMM "hook device service" service
- EAX = request (0 = unhook, nonzero = hook)
- Return: if EAX nonzero on entry, Splitter's service 04h replaces VMM
- service 0090h; otherwise, default handler is restored
- 04h Splitter "hook device service" handler
- SeeAlso: #01328,#01330
- --------W-20----Vx0499-----------------------
- INT 20 P - Microsoft Windows - PPPMAC - VxD SERVICES
- VxD = 0499h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier (see #02642)
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01330)
- Values for PPPMAC (VxD ID 0499h) service number:
- 00h ???
- 09h ...last service for Windows95 SP1
- SeeAlso: #01329,#01331,#02642
- --------W-20----Vx049A-----------------------
- INT 20 P - Microsoft Windows - VDHCP - VxD SERVICES
- VxD = 049Ah
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier (see #02642)
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01331)
- Values for VDHCP (VxD ID 049Ah) service number:
- 00h get VDHCP version???
- 01h ???
- 02h ???
- 03h ???
- SeeAlso: #01330,#01332
- --------W-20----Vx049B-----------------------
- INT 20 P - Microsoft Windows - VNBT - VxD SERVICES
- VxD = 049Bh
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier (see #02642)
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01332)
- Values for VNBT (VxD ID 049Bh) service number:
- 00h get VNBT version???
- SeeAlso: #01331,#01333
- --------W-20----Vx049D-----------------------
- INT 20 P - Microsoft Windows - LOGGER - VxD SERVICES
- VxD = 049Dh
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier (see #02642)
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01333)
- Values for LOGGER (VxD ID 049Dh) service number:
- 00h get LOGGER version???
- 01h ???
- 02h ???
- 03h ???
- 04h ???
- SeeAlso: #01332,#01334
- --------W-20----Vx097C-----------------------
- INT 20 P - Microsoft Windows - PCCARD - VxD SERVICES
- VxD = 097Ch
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier (see #02642)
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01334,#01340
- (Table 01334)
- Values for PCCARD (VxD ID 097Ch) service number:
- 0000h "PCCARD_Get_Version"
- 0001h "PCCARD_Card_Services"
- SeeAlso: #01333,#01337
- ----------20----Vx3048-----------------------
- INT 20 P - Frontier Technologies ??? - VxD SERVICES
- VxD = 3048h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01335
- (Table 01335)
- Values for ??? (VxD ID 3048h) service number:
- 00h get version???
- 03h ???
- called with 5 DWORDs on stack, returns EAX=???, ECX nonzero on error
- 04h ???
- called with DWORD on stack, returns EAX=???, ECX nonzero on error
- 06h ???
- called with DWORD on stack, returns EAX=???, ECX nonzero on error
- 07h ???
- called with 3 DWORDs on stack, returns EAX=???, ECX nonzero on error
- 0Bh ???
- called with 2 DWORDs on stack, returns EAX=???, ECX nonzero on error
- 0Ch ???
- called with 2 DWORDs on stack, returns EAX=???, ECX nonzero on error
- 0Dh ???
- called with 6 DWORDs on stack, returns EAX=???, ECX nonzero on error
- 1Ah ???
- called with 3 DWORDs on stack
- SeeAlso: #01336
- ----------20----Vx3049-----------------------
- INT 20 P - Frontier Technologies ??? - VxD SERVICES
- VxD = 3049h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01336
- (Table 01336)
- Values for ??? (VxD ID 3049h) service number:
- 00h get version???
- 1Dh ???
- called with 2 DWORDs on stack; returns EAX=???, ECX nonzero on error
- 1Eh ???
- called with 6 DWORDs on stack; returns EAX=???, ECX nonzero on error
- SeeAlso: #01335
- --------W-20----Vx3098-----------------------
- INT 20 P - QEMM - VstlthD - VxD SERVICES
- VxD = 3098h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01337)
- Values for VStlthD (VxD ID 3098h) service number:
- 00h get version
- Return: CF clear
- EAX = version (AH = major, AL = BCD minor)
- 01h ???
- 02h get current ???
- Return: CF clear
- EDX = current value of ???
- 03h ???
- SeeAlso: #01334,#01338
- --------W-20----Vx30F6-----------------------
- INT 20 P - Microsoft Windows - WSVV - VxD SERVICES
- VxD = 30F6h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01338)
- Values for WSVV (VxD ID 30F6h) service number:
- 00h get WSVV version???
- SeeAlso: #01337,#01339
- --------W-20----Vx33FC-----------------------
- INT 20 P - Microsoft Windows - APSIENUM - VxD SERVICES
- VxD = 33FCh
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01339)
- Values for ASPIENUM (VxD ID 33FCh) service number:
- 00h get ASPIENUM version???
- 01h ???
- 02h ???
- 03h ???
- SeeAlso: #01338,#01340
- --------W-20----Vx357E-----------------------
- INT 20 P - Microsoft Windows - DSOUND - VxD SERVICES
- VxD = 357Eh
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01340)
- Values for DSOUND (VxD ID 357Eh) service number:
- 00h get DSOUND version???
- 01h ???
- 02h ???
- SeeAlso: #01339,#01341
- --------W-20----Vx39E6-----------------------
- INT 20 P - Microsoft Windows - A3D - VxD SERVICES
- VxD = 39E6h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01341)
- Values for A3D (VxD ID 39E6h) service number:
- 00h get version???
- 01h ???
- 02h ??? (highest service defined)
- SeeAlso: #01340,#01342
- --------W-20----Vx3BFD-----------------------
- INT 20 P - Microsoft Windows - CWCPROXY - VxD SERVICES
- VxD = 3BFDh
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01342)
- Values for CWCPROXY (VxD ID 3BFDh) service number:
- 00h get version???
- ...
- 03h ??? (highest service defined)
- SeeAlso: #01341,#01343
- --------W-20----Vx3C78-----------------------
- INT 20 P - Microsoft Windows - VGARTD - VxD SERVICES
- VxD = 3C78h
- Note: the desired VxD and service number are identified by the data
- immediately following the INT 20 instruction, as in:
- INT 20h
- DW service number
- DW VxD identifier
- SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#01265,#01340
- (Table 01343)
- Values for VGARTD (VxD ID 3C78h) service number:
- 00h get version???
- ...
- 05h ??? (highest service defined)
- SeeAlso: #01342,#02642
- --------G-21---------------------------------
- INT 21 - COMTROL HOSTESS i/ISA DEBUGGER - GET SEGMENT FOR CONTROL PROGRAM USE
- ???
- Return: AX = first segment available for control program use
- SeeAlso: INT 20"COMTROL",INT 22"COMTROL"
- --------D-2100-------------------------------
- INT 21 - DOS 1+ - TERMINATE PROGRAM
- AH = 00h
- CS = PSP segment
- Notes: Microsoft recommends using INT 21/AH=4Ch for DOS 2+
- this function sets the program's return code (ERRORLEVEL) to 00h
- execution continues at the address stored in INT 22 after DOS performs
- whatever cleanup it needs to do (restoring the INT 22,INT 23,INT 24
- vectors from the PSP assumed to be located at offset 0000h in the
- segment indicated by the stack copy of CS, etc.)
- if the PSP is its own parent, the process's memory is not freed; if
- INT 22 additionally points into the terminating program, the
- process is effectively NOT terminated
- not supported by MS Windows 3.0 DOSX.EXE DOS extender
- SeeAlso: AH=26h,AH=31h,AH=4Ch,INT 20,INT 22
- --------D-2101-------------------------------
- INT 21 - DOS 1+ - READ CHARACTER FROM STANDARD INPUT, WITH ECHO
- AH = 01h
- Return: AL = character read
- Notes: ^C/^Break are checked, and INT 23 executed if read
- ^P toggles the DOS-internal echo-to-printer flag
- ^Z is not interpreted, thus not causing an EOF if input is redirected
- character is echoed to standard output
- standard input is always the keyboard and standard output the screen
- under DOS 1.x, but they may be redirected under DOS 2+
- SeeAlso: AH=06h,AH=07h,AH=08h,AH=0Ah
- --------v-21010F-----------------------------
- INT 21 - VIRUS - "Susan" - INSTALLATION CHECK
- AX = 010Fh
- Return: AX = 7553h ("Su") if resident
- SeeAlso: INT 16/AH=DDh"VIRUS",INT 21/AX=0B56h
- --------D-2102-------------------------------
- INT 21 - DOS 1+ - WRITE CHARACTER TO STANDARD OUTPUT
- AH = 02h
- DL = character to write
- Return: AL = last character output (despite the official docs which state
- nothing is returned) (at least DOS 2.1-7.0)
- Notes: ^C/^Break are checked, and INT 23 executed if pressed
- standard output is always the screen under DOS 1.x, but may be
- redirected under DOS 2+
- the last character output will be the character in DL unless DL=09h
- on entry, in which case AL=20h as tabs are expanded to blanks
- if standard output is redirected to a file, no error checks (write-
- protected, full media, etc.) are performed
- SeeAlso: AH=06h,AH=09h
- --------D-2103-------------------------------
- INT 21 - DOS 1+ - READ CHARACTER FROM STDAUX
- AH = 03h
- Return: AL = character read
- Notes: keyboard checked for ^C/^Break, and INT 23 executed if detected
- STDAUX is usually the first serial port
- SeeAlso: AH=04h,INT 14/AH=02h,INT E0/CL=03h
- --------D-2104-------------------------------
- INT 21 - DOS 1+ - WRITE CHARACTER TO STDAUX
- AH = 04h
- DL = character to write
- Notes: keyboard checked for ^C/^Break, and INT 23 executed if detected
- STDAUX is usually the first serial port
- if STDAUX is busy, this function will wait until it becomes free
- SeeAlso: AH=03h,INT 14/AH=01h,INT E0/CL=04h
- --------D-2105-------------------------------
- INT 21 - DOS 1+ - WRITE CHARACTER TO PRINTER
- AH = 05h
- DL = character to print
- Notes: keyboard checked for ^C/^Break, and INT 23 executed if detected
- STDPRN is usually the first parallel port, but may be redirected under
- DOS 2+
- if the printer is busy, this function will wait
- SeeAlso: INT 17/AH=00h
- --------D-2106-------------------------------
- INT 21 - DOS 1+ - DIRECT CONSOLE OUTPUT
- AH = 06h
- DL = character (except FFh)
- Return: AL = character output (despite official docs which state nothing is
- returned) (at least DOS 2.1-7.0)
- Notes: does not check ^C/^Break
- writes to standard output, which is always the screen under DOS 1.x,
- but may be redirected under DOS 2+
- SeeAlso: AH=02h,AH=09h
- --------D-2106--DLFF-------------------------
- INT 21 - DOS 1+ - DIRECT CONSOLE INPUT
- AH = 06h
- DL = FFh
- Return: ZF set if no character available
- AL = 00h
- ZF clear if character available
- AL = character read
- Notes: ^C/^Break are NOT checked
- if the returned character is 00h, the user pressed a key with an
- extended keycode, which will be returned by the next call of this
- function
- this function reads from standard input, which is always the keyboard
- under DOS 1.x, but may be redirected under DOS 2+
- although the return of AL=00h when no characters are available is not
- documented, some programs rely on this behavior
- SeeAlso: AH=0Bh
- --------D-2107-------------------------------
- INT 21 - DOS 1+ - DIRECT CHARACTER INPUT, WITHOUT ECHO
- AH = 07h
- Return: AL = character read from standard input
- Notes: does not check ^C/^Break
- standard input is always the keyboard under DOS 1.x, but may be
- redirected under DOS 2+
- if the interim console flag is set (see AX=6301h), partially-formed
- double-byte characters may be returned
- SeeAlso: AH=01h,AH=06h,AH=08h,AH=0Ah
- --------D-2108-------------------------------
- INT 21 - DOS 1+ - CHARACTER INPUT WITHOUT ECHO
- AH = 08h
- Return: AL = character read from standard input
- Notes: ^C/^Break are checked, and INT 23 executed if detected
- standard input is always the keyboard under DOS 1.x, but may be
- redirected under DOS 2+
- if the interim console flag is set (see AX=6301h), partially-formed
- double-byte characters may be returned
- SeeAlso: AH=01h,AH=06h,AH=07h,AH=0Ah,AH=64h"DOS 3.2+"
- --------D-2109-------------------------------
- INT 21 - DOS 1+ - WRITE STRING TO STANDARD OUTPUT
- AH = 09h
- DS:DX -> '$'-terminated string
- Return: AL = 24h (the '$' terminating the string, despite official docs which
- state that nothing is returned) (at least DOS 2.1-7.0 and
- NWDOS)
- Notes: ^C/^Break are checked, and INT 23 is called if either pressed
- standard output is always the screen under DOS 1.x, but may be
- redirected under DOS 2+
- under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
- SeeAlso: AH=02h,AH=06h"OUTPUT"
- --------D-210A-------------------------------
- INT 21 - DOS 1+ - BUFFERED INPUT
- AH = 0Ah
- DS:DX -> buffer (see #01344)
- Return: buffer filled with user input
- Notes: ^C/^Break are checked, and INT 23 is called if either detected
- reads from standard input, which may be redirected under DOS 2+
- if the maximum buffer size (see #01344) is set to 00h, this call returns
- immediately without reading any input
- SeeAlso: AH=0Ch,INT 2F/AX=4810h
- Format of DOS input buffer:
- Offset Size Description (Table 01344)
- 00h BYTE maximum characters buffer can hold
- 01h BYTE (call) number of chars from last input which may be recalled
- (ret) number of characters actually read, excluding CR
- 02h N BYTEs actual characters read, including the final carriage return
- --------K-210A00-----------------------------
- INT 21 - WCED v1.6+ - INSTALLATION CHECK
- AX = 0A00h
- DS:DX -> 6-byte buffer whose first two bytes must be 00h
- Return: buffer offset 02h-05h filled with "Wced" if installed
- Program: WCED is a free command-line editor and history utility by Stuart
- Russell
- SeeAlso: AH=FFh"CED"
- --------D-210B-------------------------------
- INT 21 - DOS 1+ - GET STDIN STATUS
- AH = 0Bh
- Return: AL = status
- 00h if no character available
- FFh if character is available
- Notes: ^C/^Break are checked, and INT 23 is called if either pressed
- standard input is always the keyboard under DOS 1.x, but may be
- redirected under DOS 2+
- if the interim console flag is set (see AX=6301h), this function
- returns AL=FFh if a partially-formed double-byte character is
- available
- SeeAlso: AH=06h"INPUT",AX=4406h
- --------v-210B56-----------------------------
- INT 21 - VIRUS - "Perfume" - INSTALLATION CHECK
- AX = 0B56h
- Return: AX = 4952h if resident
- SeeAlso: AX=0D20h,INT 12/AX=4350h/BX=4920h,INT 13/AH=F2h,INT 21/AX=010Fh
- --------D-210C-------------------------------
- INT 21 - DOS 1+ - FLUSH BUFFER AND READ STANDARD INPUT
- AH = 0Ch
- AL = STDIN input function to execute after flushing buffer
- other registers as appropriate for the input function
- Return: as appropriate for the specified input function
- Note: if AL is not one of 01h,06h,07h,08h, or 0Ah, the buffer is flushed but
- no input is attempted
- SeeAlso: AH=01h,AH=06h"INPUT",AH=07h,AH=08h,AH=0Ah
- --------D-210D-------------------------------
- INT 21 - DOS 1+ - DISK RESET
- AH = 0Dh
- Return: (DOS 6 only) CF clear (earlier versions preserve CF)
- Notes: This function writes all modified disk buffers to disk, but does not
- update the directory information (that is only done when files are
- closed or a SYNC call is issued)
- SeeAlso: AX=5D01h,AX=710Dh,INT 13/AH=00h,INT 2F/AX=1120h
- --------v-210D20-----------------------------
- INT 21 - VIRUS - "Crazy Imp" - INSTALLATION CHECK
- AX = 0D20h
- Return: AX = 1971h if resident
- SeeAlso: AX=0B56h,AX=1812h,AX=2C2Ch,AX=710Dh,AH=30h/DX=ABCDh
- --------D-210E-------------------------------
- INT 21 - DOS 1+ - SELECT DEFAULT DRIVE
- AH = 0Eh
- DL = new default drive (00h = A:, 01h = B:, etc)
- Return: AL = number of potentially valid drive letters
- Notes: under Novell NetWare, the return value is always 32, the number of
- drives that NetWare supports
- under DOS 3.0+, the return value is the greatest of 5, the value of
- LASTDRIVE= in CONFIG.SYS, and the number of drives actually present
- on a DOS 1.x/2.x single-floppy system, AL returns 2 since the floppy
- may be accessed as either A: or B:
- otherwise, the return value is the highest drive actually present
- DOS 1.x supports a maximum of 16 drives, 2.x a maximum of 63 drives,
- and 3+ a maximum of 26 drives
- under Novell DOS 7, this function returns the correct LASTDRIVE value
- even when the undocumented LASTDRIVE=27..32 directive was used in
- CONFIG.SYS
- "parse FCB" (see AH=29h) can be used to determine whether a drive
- letter is valid
- SeeAlso: AH=19h,AH=3Bh,AH=DBh
- --------v-210E--DLAD-------------------------
- INT 21 U - Novell DOS 7 - SDRes v27.03 - INSTALLATION CHECK
- AH = 0Eh
- DL = ADh
- Return: AL = BAh if installed
- Program: SDRes is the resident portion of the Search&Destroy antiviral by
- Fifth Generation Systems, as bundled with Novell DOS 7
- Note: SDRes will terminate programs which test for the presence of viruses
- using interrupt-based installation calls, saying that the program
- may be infected
- SeeAlso: AH=0Eh/DL=AEh,AH=0Eh/DL=AFh,AH=4Ah/BX=00B6h,INT 13/AX=A759h
- --------v-210E--DLAE-------------------------
- INT 21 U - Novell DOS 7 - SDRes v27.03 - CLEAR ??? FLAG
- AH = 0Eh
- DL = AEh
- SeeAlso: AH=0Eh/DL=ADh,AH=0Eh/DL=AFh,INT 13/AX=A759h
- --------v-210E--DLAF-------------------------
- INT 21 U - Novell DOS 7 - SDRes v27.03 - SET ??? FLAG
- AH = 0Eh
- DL = AFh
- SeeAlso: AH=0Eh/DL=ADh,AH=0Eh/DL=AEh,INT 13/AX=A759h
- --------D-210F-------------------------------
- INT 21 - DOS 1+ - OPEN FILE USING FCB
- AH = 0Fh
- DS:DX -> unopened File Control Block (see #01345,#01346)
- Return: AL = status
- 00h successful
- FFh file not found or access denied
- Notes: (DOS 3.1+) file opened for read/write in compatibility mode
- an unopened FCB has the drive, filename, and extension fields filled
- in and all other bytes cleared
- not supported by MS Windows 3.0 DOSX.EXE DOS extender
- DR DOS checks password attached with AX=4303h
- (FAT32 drive) this function will only succeed for creating a volume
- label; FAT32 does not support FCBs for file I/O
- BUG: APPEND for DOS 3.3+ corrupts DX if the file is not found
- SeeAlso: AH=10h,AH=16h,AH=3Dh,AX=4303h
- Format of File Control Block:
- Offset Size Description (Table 01345)
- 00h BYTE drive number (0 = default, 1 = A, etc)
- FFh is not allowed (signals extended FCB, see #01346)
- 01h 8 BYTEs blank-padded file name
- 09h 3 BYTEs blank-padded file extension
- 0Ch WORD current block number
- 0Eh WORD logical record size
- 10h DWORD file size
- 14h WORD date of last write (see #01666 at AX=5700h)
- 16h WORD time of last write (see #01665 at AX=5700h) (DOS 1.1+)
- 18h 8 BYTEs reserved (see #01347,#01348,#01349,#01350,#01351)
- 20h BYTE record within current block
- 21h DWORD random access record number (if record size is > 64 bytes, high
- byte is omitted)
- SeeAlso: #01346
- Format of Extended File Control Block (XFCB):
- Offset Size Description (Table 01346)
- 00h BYTE FFh signature for extended FCB
- 01h 5 BYTEs reserved
- 06h BYTE file attribute if extended FCB
- 07h 36 BYTEs standard FCB (all offsets are shifted by seven bytes)
- SeeAlso: #01246
- Format of FCB reserved field for DOS 1.0:
- Offset Size Description (Table 01347)
- 16h WORD location in directory (if high byte = FFh, low byte is device
- ID)
- 18h WORD number of first cluster in file
- 1Ah WORD current absolute cluster number on disk
- 1Ch WORD current relative cluster number within file
- (0 = first cluster of file, 1 = second cluster, etc.)
- 1Eh BYTE dirty flag (00h = not dirty)
- 1Fh BYTE unused
- Format of FCB reserved field for DOS 1.10-1.25:
- Offset Size Description (Table 01348)
- 18h BYTE bit 7: set if logical device
- bit 6: not dirty
- bits 5-0: disk number or logical device ID
- 19h WORD starting cluster number on disk
- 1Bh WORD current absolute cluster number on disk
- 1Dh WORD current relative cluster number within file
- 1Fh BYTE unused
- Format of FCB reserved field for DOS 2.x:
- Offset Size Description (Table 01349)
- 18h BYTE bit 7: set if logical device
- bit 6: set if open???
- bits 5-0: ???
- 19h WORD starting cluster number on disk
- 1Bh WORD ???
- 1Dh BYTE ???
- 1Eh BYTE ???
- 1Fh BYTE ???
- Format of FCB reserved field for DOS 3.x:
- Offset Size Description (Table 01350)
- 18h BYTE number of system file table entry for file
- 19h BYTE attributes
- bits 7,6: 00 = SHARE.EXE not loaded, disk file
- 01 = SHARE.EXE not loaded, character device
- 10 = SHARE.EXE loaded, remote file
- 11 = SHARE.EXE loaded, local file or device
- bits 5-0: low six bits of device attribute word
- ---SHARE.EXE loaded, local file---
- 1Ah WORD starting cluster of file on disk
- 1Ch WORD (DOS 3.x) offset within SHARE of sharing record
- (see #01637 at AH=52h)
- 1Eh BYTE file attribute
- 1Fh BYTE ???
- ---SHARE.EXE loaded, remote file---
- 1Ah WORD number of sector containing directory entry (see #01352)
- 1Ch WORD relative cluster within file of last cluster accessed
- 1Eh BYTE absolute cluster number of last cluster accessed
- 1Fh BYTE ???
- ---SHARE.EXE not loaded---
- 1Ah BYTE (low byte of device attribute word AND 0Ch) OR open mode
- 1Bh WORD starting cluster of file
- 1Dh WORD number of sector containing directory entry (see #01352)
- 1Fh BYTE number of directory entry within sector
- Note: if FCB opened on character device, DWORD at 1Ah is set to the address
- of the device driver header, then the BYTE at 1Ah is overwritten.
- SeeAlso: #01646
- Format of FCB reserved field for DOS 5.0:
- Offset Size Description (Table 01351)
- 18h BYTE number of system file table entry for file
- 19h BYTE attributes
- bits 7,6: 00 = SHARE.EXE not loaded, disk file
- 01 = SHARE.EXE not loaded, character device
- 10 = SHARE.EXE loaded, remote file
- 11 = SHARE.EXE loaded, local file or device
- bits 5-0: low six bits of device attribute word
- ---SHARE.EXE loaded, local file---
- 1Ah WORD starting cluster of file on disk
- 1Ch WORD unique sequence number of sharing record
- 1Eh BYTE file attributes
- 1Fh BYTE unused???
- ---SHARE.EXE loaded, remote file---
- 1Ah WORD network handle
- 1Ch DWORD network ID
- ---SHARE not loaded, local device---
- 1Ah DWORD pointer to device driver header (see #01646)
- 1Eh 2 BYTEs unused???
- ---SHARE not loaded, local file---
- 1Ah BYTE extra info
- bit 7: read-only attribute from SFT
- bit 6: archive attribute from SFT
- bits 5-0: high bits of sector number
- 1Bh WORD starting cluster of file
- 1Dh WORD low word of sector number containing directory entry
- (see #01352)
- 1Fh BYTE number of directory entry within sector
- --------D-2110-------------------------------
- INT 21 - DOS 1+ - CLOSE FILE USING FCB
- AH = 10h
- DS:DX -> File Control Block (see #01345)
- Return: AL = status
- 00h successful
- FFh failed
- Notes: a successful close forces all disk buffers used by the file to be
- written and the directory entry to be updated
- not supported by MS Windows 3.0 DOSX.EXE DOS extender
- SeeAlso: AH=0Fh,AH=16h,AH=3Eh
- --------D-2111-------------------------------
- INT 21 - DOS 1+ - FIND FIRST MATCHING FILE USING FCB
- AH = 11h
- DS:DX -> unopened FCB (see #01345), may contain '?' wildcards
- Return: AL = status
- 00h successful
- [DTA] unopened FCB for first matching file
- FFh no matching filename, or bad FCB
- Notes: the type of the returned FCB depends on whether the input FCB was a
- normal or an extended FCB
- the data returned in the DTA (disk transfer area) is actually the
- drive number (or extended FCB header and drive number) followed by
- the file's directory entry (see #01352); this format happens to be
- compatible with an unopened FCB
- for extended FCBs with search attribute 08h, the volume label (if any)
- will be returned even if the current directory is not the root dir.
- DOS 3.0+ also allows the '*' wildcard
- the search FCB at DS:DX must not be modified if AH=12h will be used to
- continue searching; DOS 3.3 has set the following parts of the FCB:
- 0Ch BYTE ???
- 0Dh WORD directory entry number of matching file
- 0Fh WORD cluster number of current directory
- 11h 4 BYTEs ???
- 15h BYTE drive number (1=A:)
- this function is used by many copy protection schemes to obtain the
- starting cluster of a file
- BUG: under Windows95, if a .EXE program ("MZ" header) rather than a true
- .COM calls this function from a DOS box, the ten bytes of the
- directory entry from 0Ch to 15h may be filled with zeros rather than
- the additional file times
- SeeAlso: AH=12h,AH=1Ah,AH=4Eh,INT 2F/AX=111Bh
- Format of DOS directory entry:
- Offset Size Description (Table 01352)
- 00h 8 BYTEs blank-padded filename
- first character is set to E5h for deleted files (05h for
- pending delete files under Novell DOS / OpenDOS)
- 08h 3 BYTEs blank-padded file extension
- 0Bh BYTE attributes
- 0Ch 10 BYTEs (MS-DOS 1.0-6.22) reserved
- (DR DOS) used to store file password / owner (see #01354)
- (see also INT 21/AX=4302h)
- (Novell DOS 7) DELWATCH data (see #01354)
- (MS-DOS 7/Windows95) additional file times (see #01353)
- 16h WORD time of creation or last update (see #01665 at AX=5700h)
- 18h WORD date of creation or last update (see #01666 at AX=5700h)
- 1Ah WORD starting cluster number (see also AX=440Dh/CX=0871h)
- (may not be set in INT 21/AH=11h return data for FAT32 drives)
- 1Ch DWORD file size
- SeeAlso: #01355,#02628,#02629
- Format of MS-DOS 7/Windows95 additional file times:
- Offset Size Description (Table 01353)
- 00h BYTE reserved
- 01h BYTE 10-millisecond units past creation time below
- 02h WORD file creation time
- 04h WORD file creation date
- 06h WORD last-access date
- 08h WORD (FAT32) high word of starting cluster number
- Note: this data is stored beginning at offset 0Ch in a standard directory
- entry
- SeeAlso: #01352
- Format of DR DOS 6/Novell DOS 7 additional file information:
- Offset Size Description (Table 01354)
- 0Ch BYTE reserved (00h)
- 0Dh BYTE first character of original filename for deleted file
- 0Eh WORD encrypted file/directory password
- 10h WORD reserved (00h)
- (Novell DOS 7 DELWATCH) original file time
- cleared when file is undeleted or purged
- 12h WORD (DR DOS 6) file owner ID
- (Novell DOS 7 DELWATCH) original file date
- cleared when file is undeleted or purged
- 14h WORD single/multiuser file/directory access rights (see AX=4302h)
- ---deleted files---
- 16h WORD (Novell DOS 7 DELWATCH) time of deletion
- 18h WORD (Novell DOS 7 DELWATCH) date of deletion
- Note: offsets are within the full directory entry
- SeeAlso: #01352
- Format of MS-DOS 7/Windows95 long-filename directory entry:
- Offset Size Description (Table 01355)
- 00h BYTE LFN record sequence and flags
- bits 5-0: sequence number
- bit 6: set if last long-filename record for file
- bit 7: set if file deleted
- 01h 10 BYTEs long filename, first part
- 0Bh BYTE 0Fh (otherwise impossible file attribute, used as signature)
- 0Ch BYTE reserved??? (00h)
- 0Dh BYTE checksum for short filename
- 0Eh 12 BYTEs long filename, second part
- 1Ah WORD first cluster number (always 0000h for LFN records)
- 1Ch 4 BYTEs long filename, third part
- Notes: long-filename entries are always stored in the directory just prior
- to the short-name entry for a file
- multiple LFN records are used if the long filename does not fit into
- a single record
- the short-filename checksum byte is computed by adding up the
- eleven bytes of the short filename, rotating the intermediate
- sum right one bit before adding the next character
- the long filename is encoded as 16-bit Unicode characters; for most
- filenames, this appears in the directory as the ASCII character
- followed by 00h
- SeeAlso: #01352,INT 21/AX=5704h,INT 21/AH=71h
- --------D-2112-------------------------------
- INT 21 - DOS 1+ - FIND NEXT MATCHING FILE USING FCB
- AH = 12h
- DS:DX -> unopened FCB (see #01345)
- Return: AL = status
- 00h successful
- Disk Transfer Area filled with unopened FCB
- FFh no more matching filenames
- Note: (see AH=11h)
- assumes that successful FindFirst executed on search FCB before call
- SeeAlso: AH=1Ah,AH=4Fh,INT 2F/AX=111Ch
- --------D-2113-------------------------------
- INT 21 - DOS 1+ - DELETE FILE USING FCB
- AH = 13h
- DS:DX -> unopened FCB (see #01345), filename filled with template for
- deletion ('?' wildcards allowed)
- Return: AL = status
- 00h one or more files successfully deleted
- FFh no matching files or all were read-only or locked
- Notes: DOS 1.25+ deletes everything in the current directory (including
- subdirectories) and sets the first byte of the name to 00h (entry
- never used) instead of E5h if called on an extended FCB with
- filename '???????????' and bits 0-4 of the attribute set (bits 1 and
- 2 for DOS 1.x). This may have originally been an optimization to
- minimize directory searching after a mass deletion (DOS 1.25+ stop
- the directory search upon encountering a never-used entry), but can
- corrupt the filesystem under DOS 2+ because subdirectories are
- removed without deleting the files they contain.
- currently-open files should not be deleted
- MS-DOS allows deletion of read-only files with an extended FCB, whereas
- Novell NetWare, DR DOS 6, and Novell DOS 7/OpenDOS 7.01 do not
- this function generates a trap "D" under OS/2 v4.x (Warp4) when called
- on an HPFS partition with a wildcard in the filename; it operates
- correctly on FAT partitions and when called without wildcards
- SeeAlso: AH=41h,INT 2F/AX=1113h
- --------D-2114-------------------------------
- INT 21 - DOS 1+ - SEQUENTIAL READ FROM FCB FILE
- AH = 14h
- DS:DX -> opened FCB (see #01345)
- Return: AL = status
- 00h successful
- 01h end of file (no data)
- 02h segment wrap in DTA
- 03h end of file, partial record read
- Disk Tranfer Area filled with record read from file
- Notes: reads a record of the size specified in the FCB beginning at the
- current file position, then updates the current block and current
- record fields in the FCB
- if a partial record was read, it is zero-padded to the full size
- not supported by MS Windows 3.0 DOSX.EXE DOS extender
- SeeAlso: AH=0Fh,AH=15h,AH=1Ah,AH=3Fh"DOS",INT 2F/AX=1108h
- --------D-2115-------------------------------
- INT 21 - DOS 1+ - SEQUENTIAL WRITE TO FCB FILE
- AH = 15h
- DS:DX -> opened FCB (see #01345)
- Disk Tranfer Area contains record to be written
- Return: AL = status
- 00h successful
- 01h disk full
- 02h segment wrap in DTA
- Notes: writes a record of the size specified in the FCB beginning at the
- current file position, then updates the current block and current
- record fields in the FCB
- if less than a full sector is written, the data is placed in a DOS
- buffer to be written out at a later time
- not supported by MS Windows 3.0 DOSX.EXE DOS extender
- SeeAlso: AH=0Fh,AH=14h,AH=1Ah,AH=40h,INT 2F/AX=1109h
- --------D-2116-------------------------------
- INT 21 - DOS 1+ - CREATE OR TRUNCATE FILE USING FCB
- AH = 16h
- DS:DX -> unopened FCB (see #01345), wildcards not allowed
- Return: AL = status
- 00h successful
- FFh directory full or file exists and is read-only or locked
- Notes: if file already exists, it is truncated to zero length
- if an extended FCB is used, the file is given the attribute in the
- FCB; this is how to create a volume label in the disk's root dir
- not supported by MS Windows 3.0 DOSX.EXE DOS extender
- (FAT32 drive) this function will only succeed for creating a volume
- label; FAT32 does not support FCBs for file I/O
- SeeAlso: AH=0Fh,AH=10h,AH=3Ch
- --------D-2117-------------------------------
- INT 21 - DOS 1+ - RENAME FILE USING FCB
- AH = 17h
- DS:DX -> modified FCB (see also #01345)
- the old filename ('?' wildcards OK) is in the standard location
- while the new filename ('?' wildcards OK, no drive) is stored
- in the 11 bytes beginning at offset 11h
- Return: AL = status
- 00h successfully renamed
- FFh no matching files,file is read-only, or new name already exists
- Notes: subdirectories may be renamed using an extended FCB with the
- appropriate attribute, as may volume labels
- DR DOS checks password attached with AX=4303h before permitting rename
- SeeAlso: AH=0Fh,AH=13h,AX=4303h,AH=56h,INT 2F/AX=1111h
- --------D-2118-------------------------------
- INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
- AH = 18h
- Return: AL = 00h
- Note: corresponds to the CP/M BDOS function "get bit map of logged drives",
- which is meaningless under MS-DOS
- SeeAlso: AH=1Dh,AH=1Eh,AH=20h,AX=4459h,INT 60/DI=0513h
- --------v-211812------------------------
- INT 21 - VIRUS - "Tasha Yar" - INSTALLATION CHECK
- AX = 1812h
- Return: AL = 00h if resident
- DX = 4310h if resident
- SeeAlso: INT 21/AX=0B56h"VIRUS",INT 21/AX=187Fh,INT 21/AX=2C2Ch"VIRUS"
- --------v-21187FBX4453-----------------------
- INT 21 - VIRUS - "DS-3783" -INSTALLATION CHECK
- AX = 187Fh
- BX = 4453h
- Return: BX = 87A1h if resident
- SeeAlso: AX=1812h"VIRUS",AX=18FFh"VIRUS"
- --------v-2118FF-----------------------------
- INT 21 - VIRUS - "Pathogen:SMEG" - INSTALLATION CHECK
- AX = 18FFh
- Return: AX = E701h if resident
- SeeAlso: INT 21/AX=1812h"VIRUS",INT 21/AX=2080h"VIRUS"
- --------D-2119-------------------------------
- INT 21 - DOS 1+ - GET CURRENT DEFAULT DRIVE
- AH = 19h
- Return: AL = drive (00h = A:, 01h = B:, etc)
- Note: Novell NetWare uses the fact that DOS 2.x COMMAND.COM issues this call
- from a particular location every time it starts a command to
- determine when to issue an automatic EOJ
- SeeAlso: AH=0Eh,AH=47h,AH=BBh
- --------D-211A-------------------------------
- INT 21 - DOS 1+ - SET DISK TRANSFER AREA ADDRESS
- AH = 1Ah
- DS:DX -> Disk Transfer Area (DTA)
- Notes: the DTA is set to PSP:0080h when a program is started
- under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
- SeeAlso: AH=11h,AH=12h,AH=2Fh,AH=4Eh,AH=4Fh
- --------D-211B-------------------------------
- INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR DEFAULT DRIVE
- AH = 1Bh
- Return: AL = sectors per cluster (allocation unit)
- CX = bytes per sector
- DX = total number of clusters
- DS:BX -> media ID byte (see #01356)
- Notes: under DOS 1.x, DS:BX points at an actual copy of the FAT; later
- versions return a pointer to a copy of the FAT's ID byte
- this function may not be properly supported on CD-ROMs and other
- installable file systems (use AX=4402h"CD-ROM" for CD-ROMs
- instead)
- BUG: DOS 7.10 (Win95B/Win98) reportedly returns incorrect values in AL and
- DX for FAT12/FAT16 drives, even though it manages correct results
- for FAT32 drives (DOS windows are not affected, only real-mode
- DOS)
- SeeAlso: AH=1Ch,AH=36h
- (Table 01356)
- Values for media ID byte:
- FFh floppy, double-sided, 8 sectors per track (320K)
- FEh floppy, single-sided, 8 sectors per track (160K)
- FDh floppy, double-sided, 9 sectors per track (360K)
- FCh floppy, single-sided, 9 sectors per track (180K)
- FAh HP 200LX D: ROM disk, 16 sectors per track (995K)
- HP 200LX E: (Stacker host drive ???)
- F9h floppy, double-sided, 15 sectors per track (1.2M)
- floppy, double-sided, 9 sectors per track (720K,3.5")
- F8h hard disk
- F0h other media
- (e.g. floppy, double-sized, 18 sectors per track -- 1.44M,3.5")
- --------D-211C-------------------------------
- INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR SPECIFIC DRIVE
- AH = 1Ch
- DL = drive (00h = default, 01h = A:, etc)
- Return: AL = sectors per cluster (allocation unit), or FFh if invalid drive
- CX = bytes per sector
- DX = total number of clusters
- DS:BX -> media ID byte (see #01356)
- Notes: under DOS 1.x, DS:BX points at an actual copy of the FAT; later
- versions return a pointer to a copy of the FAT's ID byte
- on a DBLSPACE drive, the total number of clusters is based on the
- estimated compression ratio
- this function may not be properly supported on CD-ROMs and other
- installable file systems (use AX=4402h"CD-ROM" for CD-ROMs
- instead)
- BUG: DOS 7.10 (Win95B/Win98) reportedly returns incorrect values in AL and
- DX for FAT12/FAT16 drives, even though it manages correct results
- for FAT32 drives (DOS windows are not affected, only real-mode
- DOS)
- SeeAlso: AH=1Bh,AH=36h
- --------D-211D-------------------------------
- INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
- AH = 1Dh
- Return: AL = 00h
- Note: corresponds to the CP/M BDOS function "get bit map of read-only
- drives", which is meaningless under MS-DOS
- SeeAlso: AH=18h,AH=1Eh,AH=20h,AX=4459h
- --------D-211E-------------------------------
- INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
- AH = 1Eh
- Return: AL = 00h
- Note: corresponds to the CP/M BDOS function "set file attributes" which was
- meaningless under MS-DOS 1.x
- SeeAlso: AH=18h,AH=1Dh,AH=20h
- --------D-211F-------------------------------
- INT 21 - DOS 1+ - GET DRIVE PARAMETER BLOCK FOR DEFAULT DRIVE
- AH = 1Fh
- Return: AL = status
- 00h successful
- DS:BX -> Drive Parameter Block (DPB) (see #01357 for DOS 1.x,
- AH=32h for DOS 2+)
- FFh invalid drive
- Note: this call was undocumented prior to the release of DOS 5.0; however,
- only the DOS 4.0+ version of the DPB has been documented
- SeeAlso: AH=32h,AX=7302h
- Format of DOS 1.1 and MS-DOS 1.25 drive parameter block:
- Offset Size Description (Table 01357)
- 00h BYTE sequential device ID
- 01h BYTE logical drive number (0=A:)
- 02h WORD bytes per sector
- 04h BYTE highest sector number within a cluster
- 05h BYTE shift count to convert clusters into sectors
- 06h WORD starting sector number of first FAT
- 08h BYTE number of copies of FAT
- 09h WORD number of directory entries
- 0Bh WORD number of first data sector
- 0Dh WORD highest cluster number (number of data clusters + 1)
- 0Fh BYTE sectors per FAT
- 10h WORD starting sector of directory
- 12h WORD address of allocation table
- Note: the DOS 1.0 table is the same except that the first and last fields
- are missing; see INT 21/AH=32h for the DOS 2+ version
- SeeAlso: #01395,#04039
- --------D-2120-------------------------------
- INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
- AH = 20h
- Return: AL = 00h
- Note: corresponds to the CP/M BDOS function "get/set default user
- (sublibrary) number", which is meaningless under MS-DOS
- SeeAlso: AH=18h,AH=1Dh,AH=1Eh,AX=4459h
- --------v-212080-----------------------------
- INT 21 - VIRUS - "New-Year" - INSTALLATION CHECK
- AX = 2080h
- Return: AH = 00h if resident (normal DOS return would be AX = 2000h)
- SeeAlso: INT 21/AX=18FFh"VIRUS",INT 21/AX=2C2Ch"VIRUS"
- --------D-2121-------------------------------
- INT 21 - DOS 1+ - READ RANDOM RECORD FROM FCB FILE
- AH = 21h
- DS:DX -> opened FCB (see #01345)
- Return: AL = status
- 00h successful
- 01h end of file, no data read
- 02h segment wrap in DTA, no data read
- 03h end of file, partial record read
- Disk Tranfer Area filled with record read from file
- Notes: the record is read from the current file position as specified by the
- random record and record size fields of the FCB
- the file position is not updated after reading the record
- if a partial record is read, it is zero-padded to the full size
- not supported by MS Windows 3.0 DOSX.EXE DOS extender
- SeeAlso: AH=14h,AH=22h,AH=27h,AH=3Fh"DOS"
- --------D-2122-------------------------------
- INT 21 - DOS 1+ - WRITE RANDOM RECORD TO FCB FILE
- AH = 22h
- DS:DX -> opened FCB (see #01345)
- Disk Transfer Area contains record to be written
- Return: AL = status
- 00h successful
- 01h disk full
- 02h segment wrap in DTA
- Notes: the record is written to the current file position as specified by the
- random record and record size fields of the FCB
- the file position is not updated after writing the record
- if the record is located beyond the end of the file, the file is
- extended but the intervening data remains uninitialized
- if the record only partially fills a disk sector, it is copied to a
- DOS disk buffer to be written out to disk at a later time
- not supported by MS Windows 3.0 DOSX.EXE DOS extender
- SeeAlso: AH=15h,AH=21h,AH=28h,AH=40h
- --------D-2123-------------------------------
- INT 21 - DOS 1+ - GET FILE SIZE FOR FCB
- AH = 23h
- DS:DX -> unopened FCB (see #01345), wildcards not allowed
- Return: AL = status
- 00h successful (matching file found)
- FCB random record field filled with size in records, rounded up
- to next full record
- FFh failed (no matching file found)
- Notes: not supported by MS Windows 3.0 DOSX.EXE DOS extender
- MS-DOS returns nonsense if the FCB record number field is set to a very
- large positive number, and status FFh if negative; DR DOS returns the
- correct file size in both cases
- BUG: APPEND for DOS 3.3+ corrupts DX if the file is not found
- SeeAlso: AH=42h
- --------D-2124-------------------------------
- INT 21 - DOS 1+ - SET RANDOM RECORD NUMBER FOR FCB
- AH = 24h
- DS:DX -> opened FCB (see #01345)
- Notes: computes the random record number corresponding to the current record
- number and record size, then stores the result in the FCB
- normally used when switching from sequential to random access
- not supported by MS Windows 3.0 DOSX.EXE DOS extender
- SeeAlso: AH=21h,AH=27h,AH=42h
- --------D-2125-------------------------------
- INT 21 - DOS 1+ - SET INTERRUPT VECTOR
- AH = 25h
- AL = interrupt number
- DS:DX -> new interrupt handler
- Notes: this function is preferred over direct modification of the interrupt
- vector table
- some DOS extenders place an API on this function, as it is not
- directly meaningful in protected mode
- under DR DOS 5.0+, this function does not use any of the DOS-internal
- stacks and may thus be called at any time
- Novell NetWare (except the new DOS Requester) monitors the offset of
- any INT 24 set, and if equal to the value at startup, substitutes
- its own handler to allow handling of network errors; this introduces
- the potential bug that any program whose INT 24 handler offset
- happens to be the same as COMMAND.COM's will not have its INT 24
- handler installed
- SeeAlso: AX=2501h,AH=35h
- --------E-212501-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - RESET DOS EXTENDER DATA STRUCTURES
- AX = 2501h
- SS = application's original SS or DS (FlashTek X-32VM)
- Return: CF clear if successful
- CF set on error
- caller is operating on X-32 stack (FlashTek X-32VM)
- Notes: Phar Lap uses INT 21/AH=25h as the entry point for all 386/DOS-Extender
- system calls. Only available when directly using 386/DOS-Extender or
- a compatible DOS extender, or when using a product that was created
- using 386-DOS/Extender or a compatible
- this function is also supported by FlashTek X-32VM
- SeeAlso: AH=30h"Phar Lap"
- --------E-212502-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - GET PROTECTED-MODE INTERRUPT VECTOR
- AX = 2502h
- CL = interrupt number
- Return: CF clear
- ES:EBX = CS:EIP of protected-mode interrupt handler
- Note: this function is also supported by FlashTek X-32VM
- SeeAlso: AX=2503h,AX=2504h,INT 31/AX=0204h
- --------E-212503-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - GET REAL-MODE INTERRUPT VECTOR
- AX = 2503h
- CL = interrupt number
- Return: CF clear
- EBX = CS:IP of real-mode interrupt handler
- Note: this function is also supported by FlashTek X-32VM
- SeeAlso: AX=2502h,AX=2504h,AH=35h,INT 31/AX=0200h
- --------E-212504-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - SET PROTECTED-MODE INTERRUPT VECTOR
- AX = 2504h
- CL = interrupt number
- DS:EDX = CS:EIP of protected-mode interrupt handler
- Return: CF clear
- Note: this function is also supported by FlashTek X-32VM
- SeeAlso: AX=2502h,AX=2505h,INT 31/AX=0205h
- --------E-212505-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - SET REAL-MODE INTERRUPT VECTOR
- AX = 2505h
- CL = interrupt number
- EBX = CS:IP of real-mode interrupt handler
- Return: CF clear
- Note: this function is also supported by FlashTek X-32VM
- SeeAlso: AX=2503h,AX=2504h,INT 31/AX=0201h
- --------E-212506-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - SET INT TO ALWAYS GAIN CNTRL IN PR. MODE
- AX = 2506h
- CL = interrupt number
- DS:EDX = CS:EIP of protected-mode interrupt handler
- Return: CF clear
- Notes: this function modifies both the real-mode low-memory interrupt
- vector table and the protected-mode Interrupt Descriptor Table (IDT)
- interrupts occurring in real mode are resignaled in protected mode
- this function is also supported by FlashTek X-32VM
- --------E-212507-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - SET REAL- & PROTECTED-MODE INT VECTORS
- AX = 2507h
- CL = interrupt number
- DS:EDX = CS:EIP of protected-mode interrupt handler
- EBX = CS:IP of real-mode interrupt handler
- Return: CF clear
- Notes: interrupts are disabled until both vectors have been modified
- this function is also supported by FlashTek X-32VM
- SeeAlso: AX=2504h,AX=2505h
- --------E-212508-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - GET SEGMENT LINEAR BASE ADDRESS
- AX = 2508h
- BX = segment selector
- Return: CF clear if successful
- ECX = linear base address of segment
- CF set if invalid segment selector
- Note: this function is also supported by FlashTek X-32VM
- SeeAlso: AX=2509h
- --------E-212509-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - CONVERT LINEAR TO PHYSICAL ADDRESS
- AX = 2509h
- EBX = linear address to convert
- Return: CF clear if successful
- ECX = physical address (carry flag clear)
- CF set if linear address not mapped in page tables
- SeeAlso: AX=2508h
- --------E-212509-----------------------------
- INT 21 P - FlashTek X-32VM - GET SYSTEM SEGMENTS AND SELECTORS
- AX = 2509h
- Return: CF clear
- EAX high word = default DS
- AX = alias for 16-bit data segment
- BX = real mode code segment
- EDX high word = selector covering full 4GB address space
- DX = default SS
- ESI high word = PSP selector
- SI = environment selector
- --------E-21250A-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - MAP PHYSICAL MEMORY AT END OF SEGMENT
- AX = 250Ah
- ES = segment selector in the Local Descriptor Table (LDT) of segment
- to modify
- EBX = physical base address of memory to map (multiple of 4K)
- ECX = number of physical 4K pages to map
- Return: CF clear if successful
- EAX = 32-bit offset in segment of mapped memory
- CF set on error
- EAX = error code
- 08h insufficient memory to create page tables
- 09h invalid segment selector
- SeeAlso: INT 31/AX=0800h
- --------E-21250C-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - GET HARDWARE INTERRUPT VECTORS
- AX = 250Ch
- Return: CF clear
- AL = base interrupt vector for IRQ0-IRQ7
- AH = base interrupt vector for IRQ8-IRQ15
- BL = interrupt vector for BIOS print screen function (Phar Lap only)
- Note: this function is also supported by FlashTek X-32VM
- SeeAlso: INT 31/AX=0400h,INT 67/AX=DE0Ah
- --------E-21250D-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - GET REAL-MODE LINK INFORMATION
- AX = 250Dh
- Return: CF clear
- EAX = CS:IP of real-mode callback procedure (see #01358) that will
- call through from real mode to a protected-mode routine
- EBX = 32-bit real-mode address of intermode call data buffer
- ECX = size in bytes of intermode call data buffer
- ES:EDX = protected-mode address of intermode call data buffer
- Notes: this function is also supported by FlashTek X-32VM
- X-32VM guarantees the intermode buffer to be at least 4 KB
- SeeAlso: AX=250Eh
- (Table 01358)
- Call Phar Lap real-mode callback with:
- STACK: DWORD offset to protected-mode code
- WORD placeholder for protected-mode CS
- DWORD pointer to selector structure (see #01359)
- or 0000h:0000h for defaults
- var parameters for protected-mode procedure
- Return: via FAR return
- Format of Phar Lap selector structure:
- Offset Size Description (Table 01359)
- 00h WORD protected-mode GS selector
- 02h WORD protected-mode FS selector
- 04h WORD protected-mode ES selector
- 06h WORD protected-mode DS selector
- --------E-21250E-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE
- AX = 250Eh
- EBX = CS:IP of real-mode procedure to call
- ECX = number of two-byte words to copy from protected-mode stack
- to real-mode stack
- Return: CF clear if successful
- all segment registers unchanged
- all general registers contain values set by real-mode procedure
- all other flags set as they were left by real-mode procedure
- stack unchanged
- CF set on error
- EAX = error code
- 01h not enough real-mode stack space
- Note: this function is also supported by FlashTek X-32VM; under X-32VM, the
- call will fail if ECX > 0000003Fh
- SeeAlso: AX=250Dh,AX=2510h,AH=E1h"OS/286",INT 31/AX=0301h
- --------E-21250F-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - CONVERT PROTECTED-MODE ADDRESS TO MS-DOS
- AX = 250Fh
- ES:EBX = 48-bit protected-mode address to convert
- ECX = 00000000h or length of data in bytes
- Return: CF clear if successful (address < 1MB and contiguous)
- ECX = 32-bit real-mode MS-DOS address
- CF set on error (address >= 1MB or not contiguous)
- ECX = linear address
- Note: this function is also supported by FlashTek X-32VM
- SeeAlso: AX=2510h
- --------E-212510-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE, REGISTERS
- AX = 2510h
- EBX = CS:IP of real-mode procedure to call
- ECX = number of two-byte words to copy to protected-mode stack to
- real-mode stack
- DS:EDX -> pointer to parameter block (see #01360)
- Return: CF clear if successful
- all segment registers unchanged,
- EDX unchanged
- all other general registers contain values set by real-mode proc
- all other flags are set as they were left by real-mode procedure
- real-mode register values are returned in the parameter block
- CF set on error
- EAX = error code
- 01h not enough real-mode stack space
- Note: unlike most of the preceding 25xxh functions, this one is not
- supported by FlashTek X-32VM
- SeeAlso: AX=250Eh,AX=250Fh
- Format of Phar Lap real-mode call parameter block:
- Offset Size Description (Table 01360)
- 00h WORD real-mode DS value
- 02h WORD real-mode ES value
- 04h WORD real-mode FS value
- 06h WORD real-mode GS value
- 08h DWORD real-mode EAX value
- 0Ch DWORD real-mode EBX value
- 10h DWORD real-mode ECX value
- 14h DWORD real-mode EDX value
- --------E-212511-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - ISSUE REAL-MODE INTERRUPT
- AX = 2511h
- DS:EDX -> parameter block (see #01361)
- Return: all segment registers unchanged
- EDX unchanged
- all other registers contain values set by the real-mode int handler
- the flags are set as they were left by the real-mode interrupt handler
- real-mode register values are returned in the parameter block
- Note: this function is also supported by FlashTek X-32VM
- SeeAlso: AX=2503h,AX=2505h,AX=250Eh,AH=E3h"OS/286",INT 31/AX=0300h
- Format of Phar Lap real-mode interrupt parameter block:
- Offset Size Description (Table 01361)
- 00h WORD interrupt number
- 02h WORD real-mode DS value
- 04h WORD real-mode ES value
- 06h WORD real-mode FS value
- 08h WORD real-mode GS value
- 0Ah DWORD real-mode EAX value
- 0Eh DWORD real-mode EDX value
- Note: all other real-mode values set from protected-mode registers
- --------E-212512-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - LOAD PROGRAM FOR DEBUGGING
- AX = 2512h
- DS:EDX -> pointer to ASCIZ program name
- ES:EBX -> pointer to parameter block (see #01363)
- ECX = size in bytes of LDT buffer
- Return: CF clear if successful
- EAX = number of segment descriptors in LDT
- CF set on error
- EAX = error code (see #01362)
- SeeAlso: AX=2517h
- (Table 01362)
- Values for Phar Lap error code:
- 02h file not found or path invalid
- 05h access denied
- 08h insufficient memory
- 0Ah environment invalid
- 0Bh invalid file format
- 80h LDT too small
- Format of Phar Lap program load parameter block:
- Offset Size Description (Table 01363)
- Input:
- 00h DWORD 32-bit offset of environment string
- 04h WORD segment of environment string
- 06h DWORD 32-bit offset of command-tail string
- 0Ah WORD segment of command-tail string
- 0Ch DWORD 32-bit offset of LDT buffer (size in ECX)
- 10h WORD segment of LDT buffer
- Output:
- 12h WORD real-mode paragraph address of PSP (see also AH=26h)
- 14h WORD real/protected mode flag
- 0000h real mode
- 0001h protected mode
- 16h DWORD initial EIP value
- 1Ah WORD initial CS value
- 1Ch DWORD initial ESP value
- 20h WORD initial SS value
- 22h WORD initial DS value
- 24h WORD initial ES value
- 26h WORD initial FS value
- 28h WORD initial GS value
- --------E-212513-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - ALIAS SEGMENT DESCRIPTOR
- AX = 2513h
- BX = segment selector of descriptor in GDT or LDT
- CL = access-rights byte for alias descriptor
- CH = use-type bit (USE16 or USE32) for alias descriptor
- Return: CF clear if successful
- AX = segment selector for created alias
- CF set on error
- EAX = error code
- 08h insufficient memory (can't grow LDT)
- 09h invalid segment selector in BX
- --------E-212514-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - CHANGE SEGMENT ATTRIBUTES
- AX = 2514h
- BX = segment selector of descriptor in GDT or LDT
- CL = new access-rights byte
- CH = new use-type bit (USE16 or USE32)
- Return: CF clear if successful
- CF set on error
- EAX = error code
- 09h invalid selector in BX
- SeeAlso: AX=2515h,INT 31/AX=0009h
- --------E-212515-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - GET SEGMENT ATTRIBUTES
- AX = 2515h
- BX = segment selector of descriptor in GDT or LDT
- Return: CF clear if successful
- CL = access-rights byte for segment
- CH = use-type bit (USE16 or USE32)
- ECX<16-31> destroyed
- CF set on error
- EAX = error code
- 09h invalid segment selector in BX
- SeeAlso: AX=2514h
- --------E-212516-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender v2.2+ - FREE ALL MEMORY OWNED BY LDT
- AX = 2516h
- Return: CF clear
- Note: this function must be called from Ring 0 or the CS descriptor is freed
- --------E-212517-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender v2.1c+ - GET INFO ON DOS DATA BUFFER
- AX = 2517h
- Return: CF clear
- ES:EBX -> data buffer (protected mode address)
- ECX -> data buffer (real mode address)
- EDX = size of data buffer in bytes
- Note: the data buffer's address changes after calls to AX=2512h and AX=252Ah
- SeeAlso: AX=2512h,AX=252Ah,AX=2530h
- --------E-212518-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender 2.1c+ - SPECIFY HANDLER FOR MOVED SEGMENTS
- AX = 2518h
- ES:EBX -> function to call when a segment is moved
- Return: CF clear
- ES:EBX -> previous handler
- --------E-212519-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender VMM - GET ADDITIONAL MEMORY ERROR INFO
- AX = 2519h
- Return: CF clear
- EAX = error code
- 0000h no error
- 0001h out of physical memory
- 0002h out of swap space (unable to grow swap file)
- 0003h out of LDT entries and unable to grow LDT
- 0004h unable to change extended memory allocation mark
- FFFFFFFFh paging disabled
- Note: VMM is the Virtual Memory Manager option
- --------E-21251A-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender VMM - LOCK PAGES IN MEMORY
- AX = 251Ah
- EDX = number of 4k pages to lock
- if BL = 00h
- ECX = linear address of first page to lock
- if BL = 01h
- ES:ECX -> pointer to first page to lock
- Return: CF clear if successful
- CF set on error
- EAX = error code
- 08h insufficient memory
- 09h invalid address range
- SeeAlso: AX=251Bh,AX=EB06h,INT 31/AX=0600h
- --------E-21251B-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender VMM - UNLOCK PAGES
- AX = 251Bh
- EDX = number of pages to unlock
- if BL = 00h
- ECX = linear address of first page to unlock
- if BL = 01h
- ES:ECX -> pointer to first page to unlock
- Return: CF clear if successful
- CF set on error
- EAX = error code
- 09h invalid address range
- SeeAlso: AX=251Ah,AX=EB07h,INT 31/AX=0601h
- --------E-21251C-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender VMM v2.1c+ - FREE PHYSICAL MEMORY PAGES
- AX = 251Ch
- BH = preservation flag (00h preserve contents, 01h discard contents)
- EDX = number of pages to free
- BL = address type
- 00h linear address
- ECX = linear address of first page to be freed
- 01h pointer
- ES:ECX -> first page to be freed
- Return: CF clear if successful
- CF set on error
- EAX = error code
- 08h memory error, swap space full, no VMM or DPMI
- 09h invalid address
- --------E-21251D-----------------------------
- INT 21 OP - Phar Lap 386/DOS-Extender VMM v2.1c - READ PAGE-TABLE ENTRY
- AX = 251Dh
- BL = address type
- 00h linear address
- ECX = linear address of page table entry to read
- 01h pointer
- ES:ECX -> page table entry to read
- Return: CF clear if successful
- EAX = contents of page table entry
- CF set on error
- EAX = error code
- 09h invalid address or NOPAGE option set
- 78h invalid under DPMI
- Note: this function is obsolete; use AX=252Bh/BH=09h instead
- SeeAlso: AX=251Eh,AX=252Bh/BH=09h,AX=EB00h,INT 31/AX=0506h
- --------E-21251E-----------------------------
- INT 21 OP - Phar Lap 386/DOS-Extender VMM v2.1c - WRITE PAGE-TABLE ENTRY
- AX = 251Eh
- BL = address type
- 00h linear address
- ECX = linear address of page table entry to read
- 01h pointer
- ES:ECX -> page table entry to read
- EDX = new value for page table entry
- Return: CF clear if successful
- CF set on error
- EAX = error code
- 09h invalid address or NOPAGE option set
- 82h not compatible with DPMI
- Note: this call is obsolete; use AX=252Bh/BH=0Ah instead
- SeeAlso: AX=251Dh,AX=252Bh/BH=0Ah,INT 31/AX=0507h
- --------E-21251F-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender VMM - EXHANGE TWO PAGE-TABLE ENTRIES
- AX = 251Fh
- BL = address type
- 00h linear address
- ECX = linear address of first page table entry
- EDX = linear address of second page table entry
- 01h pointer
- ES:ECX -> first page table entry
- ES:EDX -> second page table entry
- Return: CF clear if successful
- CF set on error
- EAX = error code
- 09h invalid address or NOPAGE option set
- 82h not compatible with DPMI
- SeeAlso: AX=251Dh,AX=251Eh
- --------E-212520-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender VMM - GET MEMORY STATISTICS
- AX = 2520h
- DS:EDX -> pointer to buffer at least 100 bytes in size (see #01364)
- BL = 0 (don't reset VM stats), 1 (reset VM stats)
- Return: carry flag clear
- Format of Phar Lap VM statistics buffer:
- Offset Size Description (Table 01364)
- 00h DWORD VM status
- 0001h VM subsystem is present
- 0000h VM not present
- 04h DWORD "nconvpg" number of conventional memory pages available
- 08h DWORD "nbimpg" number of Compaq built-in memory pages available
- 0Ch DWORD "nextpg" total number of extended memory pages
- 10h DWORD "extlim" extender memory pages limit
- 14h DWORD "aphyspg" number of physical memory pages allocated to appl
- 18h DWORD "alockpg" number of locked pages owned by application
- 1Ch DWORD "sysphyspg" number physical memory pages allocated to system
- 20h DWORD "nfreepg" number of free physical pages; approx if EMS VCPI
- 24h DWORD linear address of beginning of application address space
- 28h DWORD linear address of end of application address space
- 2Ch DWORD number of seconds since last time VM stats were reset
- 30h DWORD number of page faults since last time
- 34h DWORD number of pages written to swap file since last time
- 38h DWORD number of reclaimed pages (page faults on swapped pages)
- 3Ch DWORD number of virtual pages allocated to the application
- 40h DWORD size in pages of swap file
- 44h DWORD number of system pages allocated with EMS calls
- 48h DWORD minimum number of conventional memory pages
- 4Ch DWORD maximum size in pages to which swap file can be increased
- 50h DWORD "vmflags"
- bit 0 = 1 if page fault in progress
- ---v4.0+ ---
- 54h DWORD number of physical pages guaranteed to be free
- 58h DWORD number of free physical pages currently available
- 5Ch DWORD size in pages of largest free block of memory (including disk
- swap space)
- 60h DWORD reserved
- --------E-212521-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S EXTENDED MEM USAGE
- AX = 2521h
- EBX = max 4k pages of physical extended memory which program may use
- Return: CF clear if successful
- EBX = maximum limit in pages
- ECX = minimum limit in pages
- CF set on error
- EAX = error code
- 08h insufficient memory or -nopage switch used
- SeeAlso: AX=2522h
- --------E-212522-----------------------------
- INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - SPECIFY ALTERNATE PAGE-FAULT HANDLR
- AX = 2522h
- ES:EBX -> alternate handler for page faults
- Return: CF clear
- ES:EBX -> previous page-fault handler
- SeeAlso: AX=2523h
- --------E-212523-----------------------------
- INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - SPECIFY OUT-OF-SWAP-SPACE HANDLER
- AX = 2523h
- ???
- Return: ???
- Note: this function takes a DWORD pointer and a DWORD pointer to a DWORD
- pointer as arguments
- SeeAlso: AX=2522h
- --------E-212524-----------------------------
- INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - INSTALL PAGE-REPLACEMENT HANDLERS
- AX = 2524h
- ???
- Return: ???
- Note: this function takes three DWORD pointers and three DWORD pointers to
- DWORD pointers as arguments
- --------E-212525-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S CONVENT'L MEM USAGE
- AX = 2525h
- EBX = limit in 4k pages of physical conventional memory which program
- may use
- Return: CF clear if successful
- EBX = maximum limit in pages
- ECX = minimum limit in pages
- CF set on error
- EAX = error code
- 08h insufficient memory or -nopage switch used
- SeeAlso: AX=2521h
- --------E-212526-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - GET CONFIGURATION INFORMATION
- AX = 2526h
- ???
- Return: ???
- Notes: details are not yet available
- this function takes a pointer to the configuration buffer (see #01365)
- and a poitner to a BYTE as arguments
- Format of Phar Lap configuration buffer:
- Offset Size Description (Table 01365)
- 00h DWORD flags 1 (see #01366)
- 04h DWORD flags 2 (unused through v5.0)
- 08h DWORD flags 3 (unused through v5.0)
- 0Ch DWORD 386|DOS-Extender major version
- 10h DWORD 386|DOS-Extender minor version
- 14h DWORD first letter of text after minor version number in version str
- 18h DWORD beta flag (00h normal release, 01h beta release)
- 1Ch DWORD processor (3 = 386, 4 = 486)
- 20h DWORD coprocessor (4 = none, 6 = 287, 7 = 387/486)
- 24h DWORD Weitek coprocessor flag (0 = none, 1 = present)
- 28h DWORD machine type (0 = IBM PC compatible, 1 = NEC 9800 series)
- 2Ch DWORD machine class
- IBM: bus type (0=ISA, 1=MCA, 2=XT, 3=EISA)
- NEC: 0=normal mode, 1=high-res mode
- 30h DWORD VCPI flag (0 = none, 1 = present)
- 34h DWORD -WEITEK/-1167 switch (0 = AUTO, 1 = ON, 2 = OFF)
- 38h DWORD -MINREAL setting
- 3Ch DWORD -MAXREAL setting
- 40h DWORD -MINIBUF setting
- 44h DWORD -MAXIBUF setting
- 48h DWORD size in bytes of DOS call data buffer
- 4Ch DWORD number of interrupt stacks (-NISTACK)
- 50h DWORD interrupt stack size (-ISTKSIZE)
- 54h DWORD -REALBREAK setting
- 58h DWORD -CALLBUFS
- 5Ch DWORD -HWIVEC
- 60h DWORD -PRIVEC
- 64h DWORD -INTMAP
- 68h DWORD -PRIMAP
- 6Ch DWORD VCPI: master 8259 interrupt vector base (IRQ0 mapping)
- 70h DWORD VCPI: slave 8259 interrupt vector base (IRQ8 mapping)
- 74h DWORD BIOS print screen interrupt vector (0 if NEC)
- 78h DWORD -EXTLOW setting
- 7Ch DWORD -EXTHIGH setting
- 80h DWORD lowest physical extended-memory address allocatable
- 84h DWORD highest physical extended-memory address allocatable + 1
- 88h DWORD special memory's physical base address (00000000h if none)
- 8Ch DWORD special memory size in bytes (00000000h if none)
- 90h DWORD -MAXVCPIMEM setting
- 94h DWORD -VSCAN
- 98h DWORD -SWAPCHK (0 = OFF, 1 = ON, 2 = FORCE, 3 = MAX)
- 9Ch DWORD -CODESIZE setting
- A0h DWORD minimum swap file size (-MINSWFSIZE)
- A4h DWORD maximum swap fiel size (-MAXSWFSIZE)
- A8h DWORD page replacement policy (0 = LFU, 1 = NUR)
- ACh DWORD number of GDT entries (-NGDTENT)
- B0h DWORD number of LDT entries (-NLDTENT)
- B4h DWORD program's privilege level (0-3)
- ---386|DOS-Extender v3.0+ ---
- B8h DWORD -LOCKSTACK setting
- BCh DWORD -MAXEXTMEM
- C0h DWORD -MAXXMSMEM
- C4h DWORD -MAXPGMMEM
- C8h DWORD -DATATHRESHOLD
- CCh DWORD virtual memory manager flag (0 = not present, 1 = present)
- D0h DWORD Cyrix coprocessor flag (0 = no Cyrix EMC387, 1 = present)
- D4h DWORD -CYRIX setting (0 = AUTO, 1 = ON, 2 = OFF)
- D8h DWORD DPMI flag (0 = not present, 1 = present)
- DCh DWORD DPMI major version
- E0h DWORD DPMI minor version
- E4h DWORD DPMI capabilities flags (see #01367)
- E8h DWORD VCPI major version
- ECh DWORD VCPI minor version
- F0h WORD VCPI: IRQ0-7 physical base interrupt vector
- F2h WORD VCPI: IRQ8-15 physical base interrupt vector
- F4h DWORD XMS flag (0 = none, 1 = present)
- F8h DWORD XMS major version
- FCh DWORD XMS minor version
- 100h WORD application's CS selector
- 102h WORD application's DS selector
- 104h WORD application's PSP selector
- 106h WORD application's environment selector
- 108h WORD selector mapping entire first megabyte
- 10Ah WORD selector mapping text video memory
- 10Ch WORD selector mapping video memory (text for IBM, graphics for NEC)
- 10Eh WORD selector mapping Weitek address space, 0000h if not present
- 110h WORD selector mapping Cyrix EMC387 address space, 0000h if none
- 112h WORD reserved (0)
- 114h DWORD real-mode FAR entry point to call to switch to protected mode
- with no saved context
- 118h DWORD size of LDT in bytes
- ---386|DOS-Extender v5.0+ ---
- 11Ch DWORD Windows flag (0 = not present, 1 = Windows present)
- 120h DWORD Windows major version
- 124h DWORD Windows minor version
- 128h DWORD Windows mode (0 = real/standard, 1 = enhanced)
- 12Ch DWORD OS/2 flag (0 = not present, 1 = OS/2 present)
- 130h DWORD OS/2 major version
- 134h DWORD OS/2 minor version
- 138h 50 DWORDs reserved (0)
- Bitfields for flags 1:
- Bit(s) Description (Table 01366)
- 0 -NOPAGE specified
- 1 -A20 specified
- 2 -VDISK specified
- 3 -XT specified
- 4 -AT specified
- 5 -MCA specified
- 6 -EISA specified
- 7 -NORMRES specified (NEC only)
- 8 -HIGHRES specified (NEC only)
- 9 set if -SWFGROW1ST, clear if -NOSWFGROW1ST
- 10 -NOVM specified
- 11 -SAVEREGS specified
- 12 unused (clear)
- 13 -NOVCPI specified
- 14 -NOMUL specified
- 15 -NOBMCHK specified
- 16 -NOSPCLMEM or -NOBIM
- 17 -NOPGEXP specified
- 18 -SWAPDEFDISK specified
- ---v3.0+ ---
- 19 -SAVEINTS specified
- 20 -NOLOAD specified
- 21 -PAGELOG specified
- 22 -OPENDENY specified
- 23 -ERRATA17 specified
- ---v4.1+ ---
- 24 -NESTDPMI specified
- 25 -NONESTDPMI specified
- 26 -NODPMI specified
- 27 -NOPCDWEITEK specified
- ---v4.2+ ---
- 28 -WININT21 specified
- Bitfields for DPMI capabilities flags:
- Bit(s) Description (Table 01367)
- 0 paging supported
- 1 physical device mapping
- 2 conventional memory mapping
- 3 exceptions restartable
- --------E-212527-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender VMM - EN/DISABLE STATE SAVE ON INTERRUPTS
- AX = 2527h
- EBX = new status (00h disabled, 01h enabled)
- Return: CF clear
- EBX = previous state save flag
- SeeAlso: AX=2528h
- --------E-212528-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender VMM - READ REGISTERS AFTER CTRL-C INT
- AX = 2528h
- DS:EBX -> buffer for registers (see #01368)
- Return: CF clear if successful
- DS:EBX buffer filled
- CF set on error
- EAX = error code
- 83h interrupt state save not enabled
- 84h no active interrupt
- SeeAlso: AX=2527h
- Format of Phar Lap buffer for registers:
- Offset Size Description (Table 01368)
- 00h 8 BYTEs unused
- 08h 4 DWORDs EAX,EBX,ECX,EDX
- 18h 4 DWORDs ESI,EDI,EBP,ESP
- 28h 6 WORDs CS,DS,SS,ES,FS,GS
- 34h DWORD EIP
- 38h DWORD EFLAGS
- --------E-212529-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - LOAD FLAT MODEL .EXP or .REX FILE
- AX = 2529h
- ???
- Return: ES:EBX -> parameter block (see #01369)
- ???
- Note: details not available at this time
- SeeAlso: AX=252Ah
- Format of Phar Lap program load parameter block:
- Offset Size Description (Table 01369)
- 00h DWORD initial EIP
- 04h WORD initial CS
- 06h DWORD initial ESP
- 0Ah WORD initial SS
- 0Ch 4 WORDs initial DS, ES, FS, GS
- 14h DWORD minimum size in bytes of program segment
- 18h DWORD bytes of additional memory allocated
- 1Ch DWORD flags
- bit 0: child linked with -UNPRIVILEGED
- ---v6.0+ ---
- bit 1: child is PE file instead of .EXP
- bit 2: loaded file is a DLL
- bits 3-31 reserved
- ---v6.0+ ---
- 20h DWORD module handles (PE files only)
- 24h 7 DWORDs reserved (0)
- --------E-21252A-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender VMM - NEW LOAD PROGRAM FOR DEBUG
- AX = 252Ah
- DS:EDX -> ASCIZ program name
- ES:EBX -> parameter block (see #01363)
- ECX = size of LDT buffer in bytes
- ESI = bit flags
- bit 0: allow demand paging rather than loading entire program
- bit 1: demand page from swap file rather than from .EXP
- Return: CF clear if successful
- EAX = VMM handle or FFFFFFFFh if none
- ECX = number of descriptors in LDT buffer
- CF set on error
- EAX = error code
- 02h file error
- EBX = file error code (see #01370)
- ECX = DOS error code if EBX=1,2,3, or 8
- 08h insufficient memory
- EBX = memory error code (see #01371)
- 80h LDT buffer too small
- 87h called twice without intervening call to AX=2531h
- SeeAlso: AX=2512h,AX=2517h,AX=2529h,AX=2531h
- (Table 01370)
- Values for Phar Lap file error code:
- 01h DOS open error
- 02h DOS seek error
- 03h DOS read error
- 04h not an .EXP or .REX file
- 05h invalid file format
- 06h -OFFSET is not a multiple of 64K
- 07h -NOPAGE incompatible with -REALBREAK/-OFFSET
- 08h DOS error loading .EXE file
- (Table 01371)
- Values for Phar Lap memory error code:
- 01h out of physical memory
- 02h out of swap space
- 04h unable to change extended memory allocation
- 05h -MAXPGMMEM exceeded
- 06h insufficient low memory to REALBREAK value
- 07h insufficient low memory for PSP and environment
- --------E-21252BBH00-------------------------
- INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE UNMAPPED PAGES
- AX = 252Bh
- BH = 00h
- ???
- Return: ???
- --------E-21252BBH01-------------------------
- INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE ALLOCATED PAGES
- AX = 252Bh
- BH = 01h
- ???
- Return: ???
- --------E-21252BBH02-------------------------
- INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE PHYSICAL DEVICE PAGES
- AX = 252Bh
- BH = 02h
- ???
- Return: ???
- --------E-21252BBH03-------------------------
- INT 21 Pu - Phar Lap 386/DOS-Extender - MAP DATA FILE
- AX = 252Bh
- BH = 03h
- ???
- Return: ???
- SeeAlso: AX=252Bh/BH=0Bh
- --------E-21252BBH04-------------------------
- INT 21 Pu - Phar Lap 386/DOS-Extender - GET PAGE TYPES
- AX = 252Bh
- BH = 04h
- ???
- Return: ???
- Note: returns one word per page
- SeeAlso: #01372
- Bitfields for Phar Lap page information:
- Bit(s) Description (Table 01372)
- 7 mapped to read/write data file
- 6 mapped to read-only data file
- 5 swapped to disk
- 4 locked
- 3-0 page type
- 0 unmapped
- 1 allocated
- 2 physical device page
- --------E-21252B-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - VIRTUAL MEMORY MANAGEMENT - PAGE LOCKING
- AX = 252Bh
- BH = function
- 05h lock pages
- 06h unlock pages
- BL = address type
- 00h linear address
- ECX = linear start address of memory region
- 01h segmented address
- ES:ECX -> start of memory region
- EDX = size of memory region in bytes
- Return: CF clear if successful
- CF set on error
- Note: this function is also supported by FlashTek X-32VM; if X-32 is not
- using virtual memory, this function always succeeds
- --------E-21252B-----------------------------
- INT 21 Pu - Phar Lap 386/DOS-Extender - FREE PHYSICAL PAGES
- AX = 252Bh
- BH = function (07h,08h)
- ???
- Return: ???
- --------E-21252BBH09-------------------------
- INT 21 P - Phar Lap 386/DOS-Extender v4.1 - GET PAGETABLE ENTRY/PAGE TABLE INFO
- AX = 252Bh
- BH = 09h
- BL = subfunction
- 00h get page table entry by linear address
- ECX = linear address for which to get page table entry
- 01h get page table entry by logical address
- ES:ECX = address for which to get page table entry
- Return: CF clear if successful
- EAX = page table entry
- EBX = additional page table information
- CF set on error
- EAX = error code
- 0009h invalid address
- 0082h running under DPMI
- SeeAlso: AX=251Dh,AX=252Bh/BH=0Ah
- --------E-21252BBH0A-------------------------
- INT 21 P - Phar Lap 386/DOS-Extender v4.1 - SET PAGETABLE ENTRY/PAGE TABLE INFO
- AX = 252Bh
- BH = 0Ah
- BL = subfunction
- 00h set page table entry for linear address
- ECX = linear address for which to get page table entry
- 01h set page table entry for logical address
- ES:ECX = address for which to get page table entry
- ESI = page table entry
- EDI = additional page table information
- Return: CF clear if successful
- CF set on error
- EAX = error code
- 0009h invalid address
- 0082h running under DPMI
- SeeAlso: AX=252Bh/BH=09h
- --------E-21252BBH0B-------------------------
- INT 21 P - Phar Lap 386/DOS-Extender v4.1+ - MAP DATA FILE AT FILE OFFSET
- AX = 252Bh
- BH = 0Bh
- BL = subfunction
- 00h by linear address
- ECX = linear address at which to map data file
- 01h by logical address
- ES:ECX = logical address at which to map data file
- EDX = number of bytes to map
- DS:ESI -> mapping structure (see #01373)
- DS:EDI -> ASCIZ filename
- Return: CF clear if successful
- CF set on error
- EAX = error code
- 0002h file error
- ECX = phase (01h opening file, 02h seeking, 03h reading)
- EDX = error code returned by DOS
- 0009h invalid address
- 0081h invalid parameters or 386|VMM not present
- 0086h all 386|VMM file handles already in use
- SeeAlso: AX=252Bh/BH=03h,AX=252Bh/BH=09h
- Format of Phar Lap mapping structure:
- Offset Size Description (Table 01373)
- 00h DWORD starting file offset to be mapped
- 04h DWORD DOS file access and sharing modes (see #01403 at INT 21/AH=3Dh)
- --------E-21252C-----------------------------
- INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - ADD UNMAPPED PAGES AT END OF SEGMENT
- AX = 252Ch
- BX = segment selector
- ECX = number of 4K pages to add
- Return: CF clear if successful
- EAX = offset in segment of beginning of unmapped pages
- CF set on error
- EAX = error code
- 08h insufficent memory
- 09h invalid selector
- 82h not supported by current DPMI
- --------E-21252D-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender VMM v2.3+ - CLOSE VMM FILE HANDLE
- AX = 252Dh
- EBX = VMM file handle
- Return: CF clear if successful
- CF set on error
- EAX = error code (81h invalid VMM handle)
- --------E-21252E-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender VMM v2.3+ - GET/SET VMM PARAMETERS
- AX = 252Eh
- CL = direction (00h get parameters, 01h set parameters)
- DS:EBX -> parameter buffer (see #01374)
- Return: CF clear if successful
- CF set on error
- EAX = error code (81h bad parameter value)
- Format of Phar Lap VMM parameter buffer:
- Offset Size Description (Table 01374)
- 00h DWORD flags
- bit 0: page fault logging enabled
- ---v5.0+ ---
- bit 1: swap extender to disk during DOS EXEC call
- bit 2: don't zero allocated memory
- 04h DWORD scan period for page aging, in milliseconds
- 08h DWORD maximum size (in bytes) to check on each page scan
- 0Ch 52 BYTEs unused
- --------E-21252F-----------------------------
- INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - WRITE RECORD TO VMM PAGE LOG FILE
- AX = 252Fh
- DS:EBX -> data to be written
- CX = size of data in bytes
- Return: CF clear if successful
- CF set on error
- EAX = error code (85h no page log file or not 386/VMM)
- --------E-212530-----------------------------
- INT 21 P - Phar Lap 386/DOS-Ext VMM v2.3+ - SET SIZE OF BUFFER FOR DOS CALLS
- AX = 2530h
- ECX = size of data buffer in bytes (1024 to 65536)
- Return: CF clear if successful
- CF set on error
- EAX = error code
- 08h insufficient low memory
- 81h invalid size
- SeeAlso: AX=2517h
- --------E-212531-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender VMM v3.0 - READ/WRITE LDT DESCRIPTOR
- AX = 2531h
- BX = segment selector
- ECX = direction (00h read, 01h write)
- DS:EDX -> 8-byte buffer for descriptor contents
- Return: CF clear if successful
- CF set on error
- EAX = error code
- 81h invalid selector
- 82h DPMI running, or not a code or data segment
- --------E-212532-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - GET EXCEPTION HANDLER VECTOR
- AX = 2532h
- CL = exception number (00h-0Fh)
- Return: CF clear if successful
- ES:EBX = CS:EIP of current exception handler
- CF set on error (CL > 0Fh)
- Notes: this call is also supported by the FlashTek X-32VM extender
- this function is incompatible with 386|VMM; use AX=2522h instead
- SeeAlso: AX=2522h,AX=2533h
- --------E-212533-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - SET EXCEPTION HANDLER VECTOR
- AX = 2533h
- CL = exception number (00h-0Fh)
- DS:EDX = CS:EIP of new exception handler
- Return: CF clear if successful
- CF set on error (CL > 0Fh)
- Notes: this call is also supported by the FlashTek X-32VM extender
- this function is incompatible with 386|VMM; use AX=2522h instead
- SeeAlso: AX=2522h,AX=2532h
- --------E-212534-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - GET INTERRUPT FLAG
- AX = 2534h
- Return: CF clear
- EAX = interrupt state (00h disabled, 01h enabled)
- --------E-212535-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - READ/WRITE SYSTEM REGISTERS
- AX = 2535h
- EBX = direction (00h read registers, 01h write)
- DS:EDX -> system register record (see #01375)
- Return: CF clear
- Note: this call is only available under MS Windows if PHARLAP.386 VDD is
- installed
- Format of Phar Lap system register record:
- Offset Size Description (Table 01375)
- 00h DWORD CR0
- 04h 4 DWORDs DR0,DR1,DR2,DR3
- 14h 2 DWORDs reserved
- 1Ch 2 DWORDs DR6,DR7
- 24h 3 DWORDs reserved
- --------E-212536----------------------------
- INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0+ - MIN/MAX EXTENDED/CONV MEMORY USAGE
- AX = 2536h
- EBX = bit flags
- bit 0: modifying conventional memory rather than extended memory
- bit 1: setting maximum memory usage rather than minimum
- ECX = new limit in 4K pages
- Return: CF clear if successful
- EAX = new limit
- CF set on error
- EAX = error code (08h memory error or -NOPAGE set)
- EBX = maximum limit in pages
- ECX = minimum limit in pages
- --------E-212537----------------------------
- INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - ALLOCATE DOS MEMORY ABOVE DOS BUFFER
- AX = 2537h
- BX = number of paragraphs to allocate
- Return: CF clear if successful
- AX = real-mode segment of allocated block
- CF set on error
- AX = error code
- 07h MS-DOS memory chain corrupted
- 08h insufficient low memory
- BX = size in paragraphs of largest free block
- SeeAlso: AH=48h
- --------E-212538----------------------------
- INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - READ PROTMODE REGS AFTER SFTWARE INT
- AX = 2538h
- DS:EBX -> buffer for registers (see #01368)
- ECX = register record to retrieve
- 00h first interrupt state
- 01h next interrupt state
- EDX = handle for current interrupt state
- Return: CF clear if successful
- DS:EBX buffer filled
- EDX = handle of current interrupt state
- ESI = number of interrupt which occurred
- CF set on error
- EAX = error code
- 81h invalid handle in EDX
- 83h register saving not enabled
- 84h no more interrupt states
- SeeAlso: AX=2527h,AX=2528h
- --------E-212539----------------------------
- INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - GET OFFSET OF .EXP FILE HEADER
- AX = 2539h
- BX = MS-DOS file handle for open file
- Return: CF clear if successful
- EAX = offset of .EXP header in file
- CF set on error
- EAX = error code (02h file error)
- EBX = file error code
- 02h DOS error seeking
- 03h DOS error reading
- 04h invalid file type
- 05h invalid file format
- ECX = DOS error code if EBX=02h or 03h
- current file position in file modified
- --------E-21253A----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - INSTALL MOD. SEG FAILURE HANDLER
- AX = 253Ah
- ES:EBX -> function to be called when INT 21/AH=4Ah is about to return
- an error
- Return: CF clear
- ES:EBX -> previous handler
- SeeAlso: AH=4Ah
- --------E-21253B----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - JUMP TO REAL MODE CODE, NO CONTEXT
- AX = 253Bh
- DS:EBX -> buffer containing register contents (see #01368)
- Return: never returns
- SeeAlso: AX=2528h
- --------E-21253C-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender VMM v3.0+ - SHRINK 386|VMM SWAP FILE
- AX = 253Ch
- Return: CF clear
- EAX = old size of swap file in bytes
- EBX = new size of swap file in bytes
- --------E-21253D-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender v4.0+ - READ/WRITE IDT DESCRIPTOR
- AX = 253Dh
- BL = interrupt number
- ECX = direction (0 = read, 1 = write)
- DS:EDX -> 8-byte buffer for descriptor
- Return: CF clear if successful
- DS:EDX filled if reading
- CF set on error
- EAX = error code (0082h if running under DPMI)
- Desc: access hardware-level IDT rather than the internal 386/DOS-Extender
- shadow IDT
- Notes: this call will always fail under DPMI because it is not possible to
- access the IDT
- the descriptor is not checked when writing
- this call can normally be used only by programs running in ring 0
- because the processor does not allow an interrupt to be vectored to
- a less privileged ring
- --------E-21253F-----------------------------
- INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - ALLOCATE LDT DESCRIPTOR
- AX = 253Fh
- BX = LDT descriptor to allocate (0000h for any)
- ???
- Return: ???
- --------E-212540-----------------------------
- INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - FORCE ALIAS OF SEGMENT
- AX = 2540h
- ???
- Return: ???
- --------E-212544-----------------------------
- INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - FREE DLL
- AX = 2544h
- ???
- Return: ???
- --------E-212545-----------------------------
- INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - GET/SET PROCEDURE ADDRESS
- AX = 2545h
- ECX = direction (00h get, 01h set)
- ???
- Return: ???
- --------E-212546-----------------------------
- INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - GET MODULE HANDLE
- AX = 2546h
- ???
- Return: ???
- --------E-2125C0-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - ALLOCATE MS-DOS MEMORY BLOCK
- AX = 25C0h
- BX = number of 16-byte paragraphs of MS-DOS memory requested
- Return: CF clear if successful
- AX = real-mode paragraph address of memory
- CF set on error
- AX = error code
- 07h MS-DOS memory control blocks destroyed
- 08h insufficient memory
- BX = size in paragraphs of largest available memory block
- SeeAlso: AX=25C1h,AX=25C2h
- --------E-2125C1-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - RELEASE MS-DOS MEMORY BLOCK
- AX = 25C1h
- CX = real-mode paragraph address of memory block to free
- Return: CF clear if successful
- EAX destroyed
- CF set on error
- AX = error code
- 07h MS-DOS memory control blocks destroyed
- 09h invalid memory block address in CX
- SeeAlso: AX=25C0h,AX=25C2h
- --------E-2125C2-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - MODIFY MS-DOS MEMORY BLOCK
- AX = 25C2h
- BX = new requested block size in paragraphs
- CX = real-mode paragraph address of memory block to modify
- Return: CF clear if successful
- EAX destroyed
- CF set on error
- AX = error code
- 07h MS-DOS memory control blocks destroyed
- 08h insufficient memory
- 09h invalid memory block address in CX
- BX = size in paragraphs of largest available memory block
- SeeAlso: AX=25C0h,AX=25C1h
- --------E-2125C3-----------------------------
- INT 21 P - Phar Lap 386/DOS-Extender - EXECUTE PROGRAM
- AX = 25C3h
- ES:EBX -> pointer to parameter block (see #01377)
- DS:EDX -> pointer to ASCIZ program filename
- Return: CF clear if successful
- all registers unchanged
- CF set on error
- EAX = error code (see #01376)
- (Table 01376)
- Values for Phar Lap error code:
- 01h function code in AL is invalid ???
- 02h file not found or path invalid
- 05h access denied
- 08h insufficient memory to load program
- 0Ah environment invalid
- 0Bh invalid file format
- Format of parameter block:
- Offset Size Description (Table 01377)
- 00h DWORD 32-bit offset of environment string
- 04h WORD segment selector of environment string
- 06h DWORD 32-bit offset of command-tail string
- 0Ah WORD segment selector of command-tail string
- --------D-2126-------------------------------
- INT 21 - DOS 1+ - CREATE NEW PROGRAM SEGMENT PREFIX
- AH = 26h
- DX = segment at which to create PSP (see #01378)
- Return: AL destroyed
- Notes: new PSP is updated with memory size information; INTs 22h, 23h, 24h
- taken from interrupt vector table; the parent PSP field is set to 0
- (DOS 2+) DOS assumes that the caller's CS is the segment of the PSP to
- copy
- SeeAlso: AH=4Bh,AH=50h,AH=51h,AH=55h,AH=62h,AH=67h
- Format of Program Segment Prefix (PSP):
- Offset Size Description (Table 01378)
- 00h 2 BYTEs INT 20 instruction for CP/M CALL 0 program termination
- the CDh 20h here is often used as a signature for a valid PSP
- 02h WORD segment of first byte beyond memory allocated to program
- 04h BYTE (DOS) unused filler
- (OS/2) count of fake DOS version returns
- 05h BYTE CP/M CALL 5 service request (FAR CALL to absolute 000C0h)
- BUG: (DOS 2+ DEBUG) PSPs created by DEBUG point at 000BEh
- 06h WORD CP/M compatibility--size of first segment for .COM files
- 08h 2 BYTEs remainder of FAR JMP at 05h
- 0Ah DWORD stored INT 22 termination address
- 0Eh DWORD stored INT 23 control-Break handler address
- 12h DWORD DOS 1.1+ stored INT 24 critical error handler address
- 16h WORD segment of parent PSP
- 18h 20 BYTEs DOS 2+ Job File Table, one byte per file handle, FFh = closed
- 2Ch WORD DOS 2+ segment of environment for process (see #01379)
- 2Eh DWORD DOS 2+ process's SS:SP on entry to last INT 21 call
- 32h WORD DOS 3+ number of entries in JFT (default 20)
- 34h DWORD DOS 3+ pointer to JFT (default PSP:0018h)
- 38h DWORD DOS 3+ pointer to previous PSP (default FFFFFFFFh in 3.x)
- used by SHARE in DOS 3.3
- 3Ch BYTE DOS 4+ (DBCS) interim console flag (see AX=6301h)
- Novell DOS 7 DBCS interim flag as set with AX=6301h
- (possibly also used by Far East MS-DOS 3.2-3.3)
- 3Dh BYTE (APPEND) TrueName flag (see INT 2F/AX=B711h)
- 3Eh BYTE (Novell NetWare) flag: next byte initialized if CEh
- (OS/2) capabilities flag
- 3Fh BYTE (Novell NetWare) Novell task number if previous byte is CEh
- 40h 2 BYTEs DOS 5+ version to return on INT 21/AH=30h
- 42h WORD (MSWindows3) selector of next PSP (PDB) in linked list
- Windows keeps a linked list of Windows programs only
- 44h WORD (MSWindows3) "PDB_Partition"
- 46h WORD (MSWindows3) "PDB_NextPDB"
- 48h BYTE (MSWindows3) bit 0 set if non-Windows application (WINOLDAP)
- 49h BYTE unused by DOS versions <= 6.00
- 4Ch WORD (MSWindows3) "PDB_EntryStack"
- 4Eh 2 BYTEs unused by DOS versions <= 6.00
- 50h 3 BYTEs DOS 2+ service request (INT 21/RETF instructions)
- 53h 2 BYTEs unused in DOS versions <= 6.00
- 55h 7 BYTEs unused in DOS versions <= 6.00; can be used to make first FCB
- into an extended FCB
- 5Ch 16 BYTEs first default FCB, filled in from first commandline argument
- overwrites second FCB if opened
- 6Ch 16 BYTEs second default FCB, filled in from second commandline argument
- overwrites beginning of commandline if opened
- 7Ch 4 BYTEs unused
- 80h 128 BYTEs commandline / default DTA
- command tail is BYTE for length of tail, N BYTEs for the tail,
- followed by a BYTE containing 0Dh
- Notes: in DOS v3+, the limit on simultaneously open files may be increased by
- allocating memory for a new open file table, filling it with FFh,
- copying the first 20 bytes from the default table, and adjusting the
- pointer and count at 34h and 32h. However, DOS will only copy the
- first 20 file handles into a child PSP (including the one created on
- EXEC).
- in an OS/2 DOS box, values of D0h-FEh in the open file table indicate
- device drivers
- network redirectors based on the original MS-Net implementation use
- values of 80h-FEh in the open file table to indicate remote files;
- Novell NetWare also uses values from FEh down to 80h or one more than
- FILES= (whichever is greater) to indicate remote files (except on
- OS/2, where is uses CFh down to 80h)
- MS-DOS 5.00 incorrectly fills the FCB fields when loading a program
- high; the first FCB is empty and the second contains the first
- parameter
- some DOS extenders place protected-mode values in various PSP fields
- such as the "parent" field, which can confuse PSP walkers. Always
- check either for the CDh 20h signature or that the suspected PSP is
- at the beginning of a memory block which owns itself (the preceding
- paragraph should be a valid MCB with "owner" the same as the
- suspected PSP).
- Novell NetWare updates the fields at offsets 3Eh and 3Fh without
- checking that a legal PSP segment is current; see AH=50h for further
- discussion
- for 4DOS and Windows95, the command tail may be more than 126
- characters; in that case, the length byte will be set to 7Fh (with
- an 0Dh in the 127th position at offset FFh), and the first 126
- characters will be stored in the PSP, with the entire command line
- in the environment variable CMDLINE; under at least some versions
- of 4DOS, the byte at offset FFh is *not* set to 0Dh, so there is no
- terminating carriage return in the PSP's command tail.
- Format of environment block:
- Offset Size Description (Table 01379)
- 00h N BYTEs first environment variable, ASCIZ string of form "var=value"
- N BYTEs second environment variable, ASCIZ string
- ...
- N BYTEs last environment variable, ASCIZ string of form "var=value"
- BYTE 00h
- ---DOS 3.0+ ---
- WORD number of strings following environment (normally 1)
- N BYTEs ASCIZ full pathname of program owning this environment
- other strings may follow
- --------D-2127-------------------------------
- INT 21 - DOS 1+ - RANDOM BLOCK READ FROM FCB FILE
- AH = 27h
- CX = number of records to read
- DS:DX -> opened FCB (see #01345)
- Return: AL = status
- 00h successful, all records read
- 01h end of file, no data read
- 02h segment wrap in DTA, no data read
- 03h end of file, partial read
- Disk Transfer Area filled with records read from file
- CX = number of records read (return AL = 00h or 03h)
- Notes: read begins at current file position as specified in FCB; the file
- position is updated after reading
- not supported by MS Windows 3.0 DOSX.EXE DOS extender
- SeeAlso: AH=21h,AH=28h,AH=3Fh"DOS"
- --------D-2128-------------------------------
- INT 21 - DOS 1+ - RANDOM BLOCK WRITE TO FCB FILE
- AH = 28h
- CX = number of records to write
- DS:DX -> opened FCB (see #01345)
- Disk Transfer Area contains records to be written
- Return: AL = status
- 00h successful
- 01h disk full or file read-only
- 02h segment wrap in DTA
- CX = number of records written
- Notes: write begins at current file position as specified in FCB; the file
- position is updated after writing
- if CX = 0000h on entry, no data is written; instead the file size is
- adjusted to be the same as the file position specified by the random
- record and record size fields of the FCB
- if the data to be written is less than a disk sector, it is copied into
- a DOS disk buffer, to be written out to disk at a later time
- not supported by MS Windows 3.0 DOSX.EXE DOS extender
- SeeAlso: AH=22h,AH=27h,AH=40h,AH=59h/BX=0000h
- --------D-2129-------------------------------
- INT 21 - DOS 1+ - PARSE FILENAME INTO FCB
- AH = 29h
- AL = parsing options (see #01380)
- DS:SI -> filename string (both '*' and '?' wildcards OK)
- ES:DI -> buffer for unopened FCB
- Return: AL = result code
- 00h successful parse, no wildcards encountered
- 01h successful parse, wildcards present
- FFh failed (invalid drive specifier)
- DS:SI -> first unparsed character
- ES:DI buffer filled with unopened FCB (see #01345)
- Notes: asterisks expanded to question marks in the FCB
- all processing stops when a filename terminator is encountered
- cannot be used with filespecs which include a path (DOS 2+)
- Novell NetWare monitors the result code since an 'invalid drive' may
- signal an attempt to reconnect a network drive; if there are no
- connections to the specified drive, NetWare attempts to build a
- connection and map the drive to the SYS:LOGIN directory
- SeeAlso: AH=0Fh,AH=16h,AH=26h
- Bitfields for parsing options:
- Bit(s) Description (Table 01380)
- 0 skip leading separators
- 1 use existing drive number in FCB if no drive is specified, instead of
- setting field to zero
- 2 use existing filename in FCB if no base name is specified, instead of
- filling field with blanks
- 3 use existing extension in FCB if no extension is specified, instead of
- filling field with blanks
- 4-7 reserved (0)
- --------D-212A-------------------------------
- INT 21 - DOS 1+ - GET SYSTEM DATE
- AH = 2Ah
- Return: CX = year (1980-2099)
- DH = month
- DL = day
- ---DOS 1.10+---
- AL = day of week (00h=Sunday)
- SeeAlso: AH=2Bh"DOS",AH=2Ch,AH=E7h"Novell",INT 1A/AH=04h,INT 2F/AX=120Dh
- --------D-212B-------------------------------
- INT 21 - DOS 1+ - SET SYSTEM DATE
- AH = 2Bh
- CX = year (1980-2099)
- DH = month (1-12)
- DL = day (1-31)
- Return: AL = status
- 00h successful
- FFh invalid date, system date unchanged
- Note: DOS 3.3+ also sets CMOS clock; due to the limitations of the CLOCK$
- driver interface, the CMOS time is also updated to the current
- DOS time (which is the BIOS time-of-day clock with the default
- CLOCK$ driver)
- SeeAlso: AH=2Ah,AH=2Dh,INT 1A/AH=05h
- --------E-212B--CX4149-----------------------
- INT 21 - AI Architects - ??? - INSTALLATION CHECK
- AH = 2Bh
- CX = 4149h ('AI')
- DX = 413Fh ('A?')
- Return: AL <> FFh if installed
- Note: Borland's TKERNEL makes this call
- --------c-212B--CX4358-----------------------
- INT 21 - Super PC-Kwik v3.20+ - INSTALLATION CHECK
- AH = 2Bh
- CX = 4358h ('CX')
- Return: AL = FFh if PC-Kwik/PC-Cache not installed
- AL = 00h if installed
- CF clear
- CX = 6378h ('cx')
- BX = ???
- DX = version (DH = major version, DL = binary minor version)
- Note: PC Tools PC-Cache v5.x and Qualitas Qcache v4.00 are OEM versions of
- Super PC-Kwik, and thus support this call (PC-Cache 5.1 corresponds
- to PC-Kwik v3.20)
- SeeAlso: INT 13/AH=A0h,INT 13/AH=B0h,INT 16/AX=FFA5h/CX=1111h
- Index: PC-Cache;installation check|Qualitas Qcache;installation check
- Index: installation check;PC-Cache 5.x|installation check;Qualitas Qcache
- --------Q-212B--CX4445-----------------------
- INT 21 - DESQview - INSTALLATION CHECK
- AH = 2Bh
- CX = 4445h ('DE')
- DX = 5351h ('SQ')
- AL = subfunction (DV v2.00+)
- 01h get version
- Return: BX = version (BH = major, BL = minor)
- Note: early copies of v2.00 return 0002h
- 02h get shadow buffer info, and start shadowing
- Return: BH = rows in shadow buffer
- BL = columns in shadow buffer
- DX = segment of shadow buffer
- 04h get shadow buffer info
- Return: BH = rows in shadow buffer
- BL = columns in shadow buffer
- DX = segment of shadow buffer
- 05h stop shadowing
- Return: AL = FFh if DESQview not installed
- Notes: in DESQview v1.x, there were no subfunctions; this call only identified
- whether or not DESQview was loaded. DESQview v2.52 performs function
- 01h for all subfunction requests 0Ch and higher and appears to ignore
- all lower-numbered functions not listed here.
- DESQview versions 2.50-2.52 are part of DESQview/X v1.0x; version 2.53
- is part of DESQview/X v1.10; and version 2.63 is part of DESQview/X
- v2.00.
- BUG: subfunction 05h does not appear to work correctly in DESQview 2.52
- SeeAlso: INT 10/AH=FEh,INT 10/AH=FFh,INT 15/AX=1024h,INT 15/AX=DE30h
- --------U-212B--CX454C-----------------------
- INT 21 - ELRES v1.1 - INSTALLATION CHECK
- AH = 2Bh
- CX = 454Ch ('EL')
- DX = 5253h ('RS')
- Return: ES:BX -> ELRES history structure (see #01381)
- DX = DABEh (signature, DAve BEnnett)
- Program: ELRES is an MS-DOS return code (errorlevel) recorder by David H.
- Bennett which stores recent errorlevel values, allows them to be
- retrieved for use in batch files, and can place them in an
- environment variable
- SeeAlso: AH=4Bh"ELRES",AH=4Dh
- Format of ELRES history structure:
- Offset Size Description (Table 01381)
- 00h WORD number of return codes which can be stored by following buffer
- 02h WORD current position in buffer (treated as a ring)
- 04h N BYTEs ELRES buffer
- --------l-212B00CX5643-----------------------
- INT 21 - The Volkov Commander - GET POINTER TO LEFT PANEL DATA STRUCTURE
- AX = 2B00h
- CX = 5643h ('VC')
- DX = 4F4Dh ('OM')
- Return: AL = 0
- ES:BX -> left panel data structure
- Program: Volcov Commander is a shell for MS-DOS by Vsevolod V. Volkov
- SeeAlso: AX=2B01h/CX=5643h,AX=2B02h/CX=5643h
- --------l-212B01CX5643-----------------------
- INT 21 - The Volkov Commander - GET POINTER TO RIGHT PANEL DATA STRUCTURE
- AX = 2B01h
- CX = 5643h ('VC')
- DX = 4F4Dh ('OM')
- Return: AL = 0
- ES:BX -> right panel data structure
- SeeAlso: AX=2B00h/CX=5643h,AX=2B02h/CX=5643h
- --------l-212B02CX5643-----------------------
- INT 21 - The Volkov Commander - GET POINTER TO GLOBAL VARIABLES
- AX = 2B02h
- CX = 5643h ('VC')
- DX = 4F4Dh ('OM')
- Return: AL = 0
- ES:BX -> global variables
- SeeAlso: AX=2B00h/CX=5643h,AX=2B01h/CX=5643h
- --------m-212B01CX444D-----------------------
- INT 21 - Quarterdeck DOS-UP.SYS v2.00 - INSTALLATION CHECK
- AX = 2B01h
- CX = 444Dh ('DM')
- DX = 4158h ('AX')
- Return: AX = 0000h if installed
- BX = DOS-UP version (BH = minor, BL = major)
- CX = 4845h ('HE')
- DX = 5245h ('RE')
- ES = DOS-UP driver segment
- --------T-212B01CX5441-----------------------
- INT 21 - TAME v2.10+ - INSTALLATION CHECK
- AX = 2B01h
- CX = 5441h ('TA')
- DX = 4D45h ('ME')
- ---v2.60---
- BH = ???
- 00h skip ???, else do
- Return: AL = 02h if installed
- ES:DX -> data area in TAME-RES (see #01382,#01386,#01388)
- Program: TAME is a shareware program by David G. Thomas which gives up CPU
- time to other partitions under a multitasker when the current
- partition's program incessantly polls the keyboard or system time
- Format of TAME 2.10-2.20 data area:
- Offset Size Description (Table 01382)
- 00h BYTE data structure minor version number (01h in TAME 2.20)
- 01h BYTE data structure major version number (07h in TAME 2.20)
- 02h DWORD number of task switches
- 06h DWORD number of keyboard polls
- 0Ah DWORD number of time polls
- 0Eh DWORD number of times DESQview told program runs only in foreground
- 12h DWORD original INT 10h
- 16h DWORD original INT 14h
- 1Ah DWORD original INT 15h
- 1Eh DWORD original INT 16h
- 22h DWORD original INT 17h
- 26h DWORD original INT 21h
- 2Ah DWORD original INT 28h
- 2Eh WORD offset of TAME INT 10h handler
- 30h WORD offset of TAME INT 14h handler
- 32h WORD offset of TAME INT 15h handler
- 34h WORD offset of TAME INT 16h handler
- 36h WORD offset of TAME INT 17h handler
- 38h WORD offset of TAME INT 21h handler
- 3Ah WORD offset of TAME INT 28h handler
- 3Ch WORD X in /max:X,Y or /freq:X,Y
- 3Eh WORD Y in /max:X,Y or /freq:X,Y
- 40h WORD number of polls remaining before next task switch
- 42h WORD /KEYIDLE value
- 44h BYTE interrupts already grabbed by TAME (see #01383)
- 45h BYTE flags for interrupts which may be acted on (same bits as above)
- 46h BYTE TAME enabled (01h) or disabled (00h)
- 47h BYTE /TIMEPOLL (01h) or /NOTIMEPOLL (00h)
- 48h BYTE /NOTIMER (01h) or /TIMER (00h)
- 49h BYTE window or task number for this task
- 4Ah BYTE multitasker type (see #01384)
- 4Bh BYTE type of task switching selected
- bit 0: DESQview???
- bit 1: DoubleDOS???
- bit 2: TopView???
- bit 3: KeySwitch
- bit 4: HLT instruction
- 4Ch BYTE ???
- 4Dh BYTE flags
- bit 1: /FREQ instead of /MAX
- 4Eh BYTE /FG: value
- 4Fh BYTE task switches left until next FGONLY DESQview API call
- 50h BYTE ???
- Bitfields for interrupts already grabbed by TAME:
- Bit(s) Description (Table 01383)
- 0 INT 10h
- 1 INT 14h
- 2 INT 15h
- 3 INT 16h
- 4 INT 17h
- 5 INT 21h
- 6 INT 28h
- (Table 01384)
- Values for multitasker type:
- 01h DESQview
- 02h DoubleDOS
- 03h TopView
- 04h OmniView
- 05h VM/386
- Bitfields for type of task switching selected:
- Bit(s) Description (Table 01385)
- 0 DESQview
- 1 DoubleDOS
- 2 TopView
- 3 OmniView
- 4 KeySwitch
- 5 HLT instruction
- Format of TAME 2.30 data area:
- Offset Size Description (Table 01386)
- 00h BYTE data structure minor version number (02h in TAME 2.30)
- 01h BYTE data structure major version number (0Ah in TAME 2.30)
- 02h DWORD number of task switches
- 06h DWORD number of keyboard polls
- 0Ah DWORD number of time polls
- 0Eh DWORD number of times DESQview told program runs only in foreground
- 12h DWORD time of last /CLEAR or TAME-RES load
- 16h DWORD time yielded
- 1Ah DWORD time spent polling
- 1Eh DWORD time spent waiting on key input with INT 16/AH=01h,11h
- 22h DWORD original INT 10h
- 26h DWORD original INT 14h
- 2Ah DWORD original INT 15h
- 2Eh DWORD original INT 16h
- 32h DWORD original INT 17h
- 36h DWORD original INT 21h
- 3Ah DWORD original INT 28h
- 3Eh WORD offset of TAME INT 10h handler
- 40h WORD offset of TAME INT 14h handler
- 42h WORD offset of TAME INT 15h handler
- 44h WORD offset of TAME INT 16h handler
- 46h WORD offset of TAME INT 17h handler
- 48h WORD offset of TAME INT 21h handler
- 4Ah WORD offset of TAME INT 28h handler
- 4Ch WORD X in /max:X,Y or /freq:X,Y
- 4Eh WORD Y in /max:X,Y or /freq:X,Y
- 50h WORD number of polls remaining before next task switch
- 52h WORD /KEYIDLE value
- 54h WORD /FG: value
- 56h WORD task switches left until next FGONLY DESQview API call
- 58h WORD multitasker version
- 5Ah WORD virtual screen segment
- 5Ch BYTE interrupts already grabbed by TAME (see #01383)
- 5Dh BYTE flags for interrupts which may be acted on (same bits as above)
- 5Eh BYTE window or task number for this task
- 5Fh BYTE multitasker type (see #01384)
- 60h BYTE type of task switching selected (bit flags) (see #01385)
- 61h BYTE watch_DOS
- 62h BYTE action flags (see #01387)
- 63h BYTE old status
- 64h WORD signature DA34h
- Bitfields for TAME action flags:
- Bit(s) Description (Table 01387)
- 0 TAME enabled
- 1 /FREQ instead of /MAX (X and Y count fields are per tick)
- 2 /TIMEPOLL
- 3 /KEYPOLL
- 4 inhibit timer
- 5 enable status monitoring
- SeeAlso: #01386,#01388
- Format of TAME 2.60 data area:
- Offset Size Description (Table 01388)
- 00h BYTE data structure minor version number (02h in TAME 2.60)
- 01h BYTE data structure major version number (0Bh in TAME 2.60)
- 02h DWORD number of task switches
- 06h DWORD number of keyboard polls
- 0Ah DWORD number of time polls
- 0Eh DWORD number of times DESQview told program runs only in foreground
- 12h DWORD time of last /CLEAR or TAME-RES load
- 16h DWORD time yielded
- 1Ah DWORD time spent polling
- 1Eh DWORD time spent waiting on key input with INT 16/AH=01h,11h
- 22h 4 BYTEs ???
- 26h DWORD original INT 10h
- 2Ah DWORD original INT 14h
- 2Eh DWORD original INT 15h
- 32h DWORD original INT 16h
- 36h DWORD original INT 17h
- 3Ah DWORD original INT 21h
- 3Eh DWORD original INT 28h
- 42h WORD offset of TAME INT 10h handler
- 44h WORD offset of TAME INT 14h handler
- 46h WORD offset of TAME INT 15h handler
- 48h WORD offset of TAME INT 16h handler
- 4Ah WORD offset of TAME INT 17h handler
- 4Ch WORD offset of TAME INT 21h handler
- 4Eh WORD offset of TAME INT 28h handler
- 50h WORD X in /max:X,Y or /freq:X,Y
- 52h WORD Y in /max:X,Y or /freq:X,Y
- 54h WORD number of polls remaining before next task switch
- 56h WORD /KEYIDLE value
- 58h 4 BYTEs ???
- 5Ch WORD X in /boost:X,Y
- 5Eh WORD Y in /boost:X,Y
- 60h WORD /FG: value
- 62h WORD task switches remaining until next FGONLY DESQview API call
- 64h WORD multitasker version ???
- 66h WORD virtual screen segment
- 68h BYTE interrupts already grabbed by TAME (see #01383)
- 69h BYTE flags for interrupts which may be acted on (same bits as above)
- 6Ah BYTE window or task number for this task
- 6Bh BYTE multitasker type (see #01384)
- 6Ch BYTE type of task switching selected (bit flags) (see #01385)
- 6Dh BYTE watch_DOS
- 6Eh BYTE action flags (see #01387)
- 6Fh BYTE old status
- 70h WORD signature DA34h
- --------v-212B16CX0643-----------------------
- INT 21 - VIRUS - "Maltese Amoeba" - INSTALLATION CHECK
- AX = 2B16h
- CX = 0643h
- Return: AX = 1603h if installed
- --------R-212B44BX4D41-----------------------
- INT 21 - pcANYWHERE IV/LAN - INSTALLATION CHECK
- AX = 2B44h ('D')
- BX = 4D41h ('MA')
- CX = 7063h ('pc')
- DX = 4157h ('AW')
- Return: AX = resident program
- 4F4Bh ('OK') if large host resident
- 6F6Bh ('ok') if small host resident
- CX:DX -> API entry point (see #01389)
- SeeAlso: INT 16/AH=79h
- (Table 01389)
- Call pcANYWHERE API entry point with:
- AX = 0000h get pcANYWHERE IV version
- DS:SI -> BYTE buffer for host type code
- Return: AH = version number
- AL = revision number
- DS:DI buffer byte filled with
- 00h full-featured host
- 01h limited-feature LAN host
- other API may not be supported
- AX = 0001h initialize operation
- DS:SI -> initialization request structure (see #01390)
- Return: AX = function status (see #01393)
- AX = 0002h get status
- Return: AH = current operating mode (see #01390)
- AL = current connection status (see #01392)
- AX = 0003h suspend remote screen updates
- Return: AX = function status (see #01393)
- AX = 0004h resume screen updates
- Return: AX = function status (see #01393)
- AX = 0005h end current remote access session
- DS:SI -> termination request structure (see #01391)
- Return: AX = function status (see #01393)
- AX = 0006h remove pcANYWHERE IV from memory
- Return: AX = status (see #01393)
- AX = 8000h read data from communications channel
- DS:BX -> buffer
- CX = buffer size
- Return: AX >= number of characters read/available
- AX < 0 on error
- AX = 8001h write data to communications channel
- DS:BX -> buffer
- CX = buffer size
- Return: AX >= number of characters written
- AX < 0 on error
- AX = 8002h get connection status
- Return: AX = status
- > 0000h if connection active
- = 0000h if connection lost
- < 0000h on error
- Format of pcANYWHERE initialization request structure:
- Offset Size Description (Table 01390)
- 00h BYTE operating mode
- 00h wait for a call
- 01h hot key activates
- 02h incoming call activates
- 03h initiate a call
- 01h 3 BYTEs user ID to append to config file names
- 04h WORD DS-relative pointer to path for config files
- 06h WORD DS-relative pointer to path for program files
- Format of pcANYWHERE termination request structure:
- Offset Size Description (Table 01391)
- 00h BYTE operating mode after termination
- 00h wait for a call
- 01h hot key activates
- 02h incoming call activates
- 80h use current mode
- FFh remove from memory
- Bitfields for current connection status:
- Bit(s) Description (Table 01392)
- 0 a physical connection is active
- 1 remove screen updating is active
- 2 connection checking is active
- 3 hot key detection is active
- 4 background file transfer is active
- (Table 01393)
- Values for pcANYWHERE function status:
- 0000h function completed successfully
- FFD1h unable to release interrupt vectors
- FFD2h unable to release allocated memory
- FFF2h unable to establish a connection when operating mode is
- "Initiate a call"
- FFF3h modem configuration is invalid (corrupt config)
- FFF4h modem initialization failed (no modem response)
- FFF5h the communications device could not be initialized
- FFF6h the host operator aborted the function
- FFF7h the communications driver type specified in the configuration file is
- different than the one loaded when pcANYWHERE IV was started
- FFF9h the configuration file is invalid
- FFFAh the configuration file could not be found
- FFFBh no session is active
- FFFCh a remote access session is active
- FFFDh the specified operating mode is invalid
- --------l-212B--CX5643-----------------------
- INT 21 - Volkov Commander - INSTALLATION CHECK
- AH = 2Bh
- CX = 5643h ('VC')
- DX = 4F4Dh ('OM')
- AL = function number
- 00h get left window data address
- 01h get right window data address
- 02h get address of general variables
- Return: AL = 00h if Volkov Commander installed
- AH = version code (27h for v4.00.039)
- ES:BX -> requested data
- Program: Volkov Commander is a Norton Commander-like DOS shell
- --------G-212B--CX6269-----------------------
- INT 21 - WDTSR.COM - INSTALLATION CHECK
- AH = 2Bh
- CX = 6269h ('bi')
- DX = 742Dh ('t-')
- Return: AL = FFh if not installed
- AL = 77h ('w') if WDTSR is installed
- CX = 6174h ('at')
- DX = 6368h ('ch')
- ES = resident code segment
- ES:DI -> identification and configuration data
- Program: WDTSR is a driver for the bitWatch watchdog hardware by bit-design
- GmbH
- SeeAlso: AH=2Bh/CX=6269h"bitFOSSI",INT 14/AH=14h"FOSSIL",INT 15/AH=C3h
- --------S-212B--CX6269-----------------------
- INT 21 - bitFOSS - INSTALLATION CHECK
- AH = 2Bh
- CX = 6269h ('bi')
- DX = 7446h ('tF')
- Return: AL = FFh if not installed
- AL = 4Fh ('O') if bitFOSS is installed
- CX = 5353h ('SS')
- DX = 494Ch ('IL')
- ES = resident code segment
- ES:DI -> identification data
- Program: bitFOSS is a revision 5 FOSSIL driver
- SeeAlso: AH=2Bh/CX=6269h"bitFOSSI",INT 11/AH=BCh
- --------S-212B--CX6269-----------------------
- INT 21 - bitFOSSI - INSTALLATION CHECK
- AH = 2Bh
- CX = 6269h ('bi')
- DX = 7449h ('tI')
- Return: AL = FFh if not installed
- AL = 53h ('S') if bitFOSSI is installed
- CX = 444Eh ('DN')
- DX = 2D46h ('-F')
- ES = resident code segment
- ES:DI -> identification data
- Program: bitFOSSI is a revision 5 FOSSIL driver for ???'s ISDN board
- SeeAlso: AH=2Bh/CX=6269h"bitFOSS",INT 11/AH=BCh
- --------D-212C-------------------------------
- INT 21 - DOS 1+ - GET SYSTEM TIME
- AH = 2Ch
- Return: CH = hour
- CL = minute
- DH = second
- DL = 1/100 seconds
- Note: on most systems, the resolution of the system clock is about 5/100sec,
- so returned times generally do not increment by 1
- on some systems, DL may always return 00h
- SeeAlso: AH=2Ah,AH=2Dh,AH=E7h"Novell",INT 1A/AH=00h,INT 1A/AH=02h,INT 1A/AH=FEh
- SeeAlso: INT 2F/AX=120Dh
- --------v-212C--------------------------
- INT 21 - VIRUS - "Anti Pode 2.0" - INSTALLATION CHECK
- AH = 2Ch
- Return: DL = F2h if resident
- SeeAlso: AX=1812h"VIRUS",AX=2C2Ch
- --------v-212C00CX534B-----------------------
- INT 21 - SKUDO - INSTALLATION CHECK
- AX = 2C00h
- CX = 534Bh ('SK')
- DX = 5544h ('UD')
- BX = 4F21h ('O!')
- Return: AX = 5349h ('SI') if installed
- CH = version number
- CL = subversion
- Program: SKUDO is an antivirus TSR by Jordi Mas
- --------v-212C2C------------------------
- INT 21 - VIRUS - "LockJaw/Proto-T" - INSTALLATION CHECK
- AX = 2C2Ch
- Return: AX = 0DCDh if resident
- SeeAlso: AH=2Ch"VIRUS",AX=3000h"VIRUS"
- --------D-212D-------------------------------
- INT 21 - DOS 1+ - SET SYSTEM TIME
- AH = 2Dh
- CH = hour
- CL = minute
- DH = second
- DL = 1/100 seconds
- Return: AL = result
- 00h successful
- FFh invalid time, system time unchanged
- Note: DOS 3.3+ also sets CMOS clock; due to the limitations of the CLOCK$
- driver interface, the CMOS date is also updated to the current
- DOS date
- SeeAlso: AH=2Bh"DOS",AH=2Ch,INT 1A/AH=01h,INT 1A/AH=03h,INT 1A/AH=FFh"AT&T"
- --------T-212D01CX7820-----------------------
- INT 21 - PC-Mix - INSTALLATION CHECK
- AX = 2D01h
- CX = 7820h ('X ')
- DX = 6D69h ('MI')
- Return: AL = 00h if installed
- --------D-212E--DL00-------------------------
- INT 21 - DOS 1+ - SET VERIFY FLAG
- AH = 2Eh
- DL = 00h (DOS 1.x/2.x only)
- AL = new state of verify flag
- 00h off
- 01h on
- Notes: default state at system boot is OFF
- when ON, all disk writes are verified provided the device driver
- supports read-after-write verification
- SeeAlso: AH=54h
- --------D-212F-------------------------------
- INT 21 - DOS 2+ - GET DISK TRANSFER AREA ADDRESS
- AH = 2Fh
- Return: ES:BX -> current DTA
- Note: under the FlashTek X-32 DOS extender, the pointer is in ES:EBX
- SeeAlso: AH=1Ah
- --------D-2130-------------------------------
- INT 21 - DOS 2+ - GET DOS VERSION
- AH = 30h
- ---DOS 5+ ---
- AL = what to return in BH
- 00h OEM number (as for DOS 2.0-4.0x)
- 01h version flag
- Return: AL = major version number (00h if DOS 1.x)
- AH = minor version number
- BL:CX = 24-bit user serial number (most versions do not use this)
- ---if DOS <5 or AL=00h---
- BH = MS-DOS OEM number (see #01394)
- ---if DOS 5+ and AL=01h---
- BH = version flag
- bit 3: DOS is in ROM
- other: reserved (0)
- Notes: the OS/2 v1.x Compatibility Box returns major version 0Ah (10)
- the OS/2 v2.x Compatibility Box returns major version 14h (20)
- OS/2 Warp 3.0 Virtual DOS Machines report v20.30; Warp 4 VDMs report
- v20.40.
- the WindowsNT DOS box returns version 5.00, subject to SETVER
- DOS 4.01 and 4.02 identify themselves as version 4.00; use
- INT 21/AH=87h to distinguish between the original European MS-DOS 4.0
- and the later PC-DOS 4.0x and MS-DOS 4.0x
- IBM DOS 6.1 reports its version as 6.00; use the OEM number to
- distinguish between MS-DOS 6.00 and IBM DOS 6.1 (there was never an
- IBM DOS 6.0)
- MS-DOS 6.21 reports its version as 6.20; version 6.22 returns the
- correct value
- Windows95 returns version 7.00 (the underlying MS-DOS), as did the
- "Chicago" beta (reported in _Microsoft_Systems_Journal_,August 1994);
- Windows95 OSR2 returns version 7.10
- DR DOS 5.0 and 6.0 report version 3.31; Novell DOS 7 reports IBM v6.00,
- which some software displays as IBM DOS v6.10 (because of the version
- mismatch in true IBM DOS, as mentioned above). The Novell DOS 7
- SETVER.EXE has an undocumented option /G x.y which sets the "global"
- DOS version returned by this function for all executables not given
- a specific version number in SETVER to major version x and minor
- version y.
- generic MS-DOS 3.30, Compaq MS-DOS 3.31, and others identify themselves
- as PC-DOS by returning OEM number 00h
- the version returned under DOS 4.0x may be modified by entries in
- the special program list (see #01662 at AH=52h); the version returned
- under DOS 5+ may be modified by SETVER--use AX=3306h to get the true
- version number
- SeeAlso: AX=3000h/BX=3000h,AX=3306h,AX=4452h,AH=87h,INT 15/AX=4900h
- SeeAlso: INT 2F/AX=122Fh,INT 2F/AX=4010h,INT 2F/AX=4A33h,INT 2F/AX=E002h
- (Table 01394)
- Values for DOS OEM number:
- 00h IBM
- 01h Compaq
- 02h MS Packaged Product
- 04h AT&T
- 05h ZDS (Zenith Electronics)
- 06h Hewlett-Packard
- 07h ZDS (Groupe Bull)
- 0Dh Packard-Bell
- 16h DEC
- 23h Olivetti
- 28h Texas Instruments
- 29h Toshiba
- 33h Novell (Windows/386 device IDs only)
- 34h MS Multimedia Systems (Windows/386 device IDs only)
- 35h MS Multimedia Systems (Windows/386 device IDs only)
- 4Dh Hewlett-Packard
- 5Eh RxDOS
- 66h PhysTechSoft (PTS-DOS)
- 99h General Software's Embedded DOS
- EEh DR DOS
- EFh Novell DOS
- FDh FreeDOS
- FFh Microsoft, Phoenix
- --------E-2130-------------------------------
- INT 21 - Phar Lap 386/DOS-Extender, Intel Code Builder - INSTALLATION CHECK
- AH = 30h
- EAX = 00003000h
- EBX = 50484152h ("PHAR")
- Return: AL = major DOS version
- AH = minor DOS version
- EAX bits 31-16 = 4458h ('DX') if 386/DOS-extender installed
- BL = ASCII major version number
- EAX bits 31-16 = 4243h ('BC') if Intel Code Builder installed
- EDX = address of GDA
- SeeAlso: AX=2501h,AX=FF00h,INT 2F/AX=F100h
- --------v-2130--DXABCD-----------------------
- INT 21 - VIRUS - "Possessed" - INSTALLATION CHECK
- AH = 30h
- DX = ABCDh
- Return: DX = DCBAh if installed
- SeeAlso: AX=0D20h,AH=30h/SI=1234h,AX=3000h"VIRUS",AX=30F1h
- --------v-2130--SI1234---------------------
- INT 21 - VIRUS - "ANDROMEDA-758" -INSTALLATION CHECK
- AH = 30h
- SI = 1234h
- Return: AX = FFDDh if resident
- SeeAlso: AH=30h/DX=ABCDh,AX=3000h"VIRUS"
- --------T-213000BX1234-----------------------
- INT 21 - CTask 2.0+ - INSTALLATION CHECK
- AX = 3000h
- BX = 1234h
- DS:DX -> 8-byte version string (DX < FFF0h) "CTask21",00h for v2.1-2.2
- Return: AL = DOS major version
- AH = DOS minor version
- CX:BX -> Ctask global data block
- Program: CTask is a multitasking kernel for C written by Thomas Wagner
- Note: if first eight bytes of returned data block equal eight bytes passed
- in, CTask is resident
- --------O-213000BX3000-----------------------
- INT 21 - PC-MOS/386 v3.0 - INSTALLATION CHECK/GET VERSION
- AX = 3000h
- BX = 3000h
- CX = DX = 3000h
- Return: AX = PC-MOS version
- Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
- system by The Software Link, Inc.
- SeeAlso: AH=30h,INT D4/AH=02h,INT D4/AH=10h
- --------v-213000BX614A------------------
- INT 21 - VIRUS - "Jackal" - INSTALLATION CHECK
- AX = 3000h
- BX = 614Ah ('aJ')
- CX = 6B63h ('kc')
- DX = 6C61h ('la')
- Return: BX = ???
- SeeAlso: AX=2C2Ch"VIRUS",AX=3030h"VIRUS"
- --------G-213022-----------------------------
- INT 21 - StopPrg v2.0 - INSTALLATION CHECK
- AX = 3022h
- Return: AX = DOS version (see AH=30h)
- CX = 1112h if StopPrg installed
- BX = segment of resident code
- Program: StopPrg is a resident program aborter by MAK-TRAXON's Prophet
- Note: StopPrg may be temporarily disabled by storing 9090h in the word at
- 0000h:04FEh
- --------v-213030BX694D-----------------------
- INT 21 - VIRUS - "IMTC" -INSTALLATION CHECK
- AX = 3030h
- BX = 694Dh
- Return: DX = 7443h if resident
- SeeAlso: AX=3000h/BX=614Ah"VIRUS",AX=3032h"VIRUS"
- --------v-213032DX1234-----------------------
- INT 21 - VIRUS - "Uruguay" - INSTALLATION CHECK
- AX = 3032h
- DX = 1234h
- Return: AX = 5678h if resident
- SeeAlso: AX=3030h"VIRUS",AX=30F1h"VIRUS"
- --------v-2130F1-----------------------------
- INT 21 - VIRUS - "Dutch-555"/"Quit 1992" - INSTALLATION CHECK
- AX = 30F1h
- Return: AL = 00h if resident
- SeeAlso: AH=30h/DX=ABCDh,AX=3032h,AX=330Fh,AX=33DAh
- ----------2130FFCX4445-----------------------
- INT 21 - DESQ??? - INSTALLATION CHECK
- AX = 30FFh
- CX = 4445h ("DE")
- DX = 5351h ("SQ")
- Return: BH = 05h if installed
- ???
- Note: called by DUBLDISK.COM v2.6; this function is not supported by
- DESQview, so it may be for DESQview's precursor DESQ.
- SeeAlso: AX=4404h"DUBLDISK"
- --------D-2131-------------------------------
- INT 21 - DOS 2+ - TERMINATE AND STAY RESIDENT
- AH = 31h
- AL = return code
- DX = number of paragraphs to keep resident
- Return: never
- Notes: the value in DX only affects the memory block containing the PSP;
- additional memory allocated via AH=48h is not affected
- the minimum number of paragraphs which will remain resident is 11h
- for DOS 2.x and 06h for DOS 3.0+
- most TSRs can save some memory by releasing their environment block
- before terminating (see #01378 at AH=26h,AH=49h)
- any open files remain open, so one should close any files which will
- not be used before going resident; to access a file which is left
- open from the TSR, one must switch PSP segments first (see AH=50h)
- SeeAlso: AH=00h,AH=4Ch,AH=4Dh,INT 20,INT 22,INT 27
- --------D-2132-------------------------------
- INT 21 - DOS 2+ - GET DOS DRIVE PARAMETER BLOCK FOR SPECIFIC DRIVE
- AH = 32h
- DL = drive number (00h = default, 01h = A:, etc)
- Return: AL = status
- 00h successful
- DS:BX -> Drive Parameter Block (DPB) (see #01395) for specified
- drive
- FFh invalid or network drive
- Notes: the OS/2 compatibility box supports the DOS 3.3 version of this call
- except for the DWORD at offset 12h
- this call updates the DPB by reading the disk; the DPB may be accessed
- via the DOS list of lists (see #01627 at AH=52h) if disk access is not
- desirable.
- undocumented prior to the release of DOS 5.0; only the DOS 4.0+
- version of the DPB has been documented, however
- supported by DR DOS 3.41+; DR DOS 3.41-6.0 return the same data as
- MS-DOS 3.31
- IBM ROM-DOS v4.0 also reports invalid/network (AL=FFh) on the ROM drive
- SeeAlso: AH=1Fh,AH=52h,AX=7302h
- Format of DOS Drive Parameter Block:
- Offset Size Description (Table 01395)
- 00h BYTE drive number (00h = A:, 01h = B:, etc)
- 01h BYTE unit number within device driver
- 02h WORD bytes per sector
- 04h BYTE highest sector number within a cluster
- 05h BYTE shift count to convert clusters into sectors
- 06h WORD number of reserved sectors at beginning of drive
- 08h BYTE number of FATs
- 09h WORD number of root directory entries
- 0Bh WORD number of first sector containing user data
- 0Dh WORD highest cluster number (number of data clusters + 1)
- 16-bit FAT if greater than 0FF6h, else 12-bit FAT
- 0Fh BYTE number of sectors per FAT
- 10h WORD sector number of first directory sector
- 12h DWORD address of device driver header (see #01646)
- 16h BYTE media ID byte (see #01356)
- 17h BYTE 00h if disk accessed, FFh if not
- 18h DWORD pointer to next DPB
- ---DOS 2.x---
- 1Ch WORD cluster containing start of current directory, 0000h=root,
- FFFFh = unknown
- 1Eh 64 BYTEs ASCIZ pathname of current directory for drive
- ---DOS 3.x---
- 1Ch WORD cluster at which to start search for free space when writing
- 1Eh WORD number of free clusters on drive, FFFFh = unknown
- ---DOS 4.0-6.0---
- 0Fh WORD number of sectors per FAT
- 11h WORD sector number of first directory sector
- 13h DWORD address of device driver header (see #01646)
- 17h BYTE media ID byte (see #01356)
- 18h BYTE 00h if disk accessed, FFh if not
- 19h DWORD pointer to next DPB
- 1Dh WORD cluster at which to start search for free space when writing,
- usually the last cluster allocated
- 1Fh WORD number of free clusters on drive, FFFFh = unknown
- SeeAlso: #01357,#01663,#01787 at AX=7302h,#04039 at INT E0/CL=71h
- --------D-2133-------------------------------
- INT 21 - DOS 2+ - EXTENDED BREAK CHECKING
- AH = 33h
- AL = subfunction
- 00h get current extended break state
- Return: DL = current state, 00h = off, 01h = on
- 01h set state of extended ^C/^Break checking
- DL = new state
- 00h off, check only on character I/O functions
- 01h on, check on all DOS functions
- Return: (Novell DOS 7) DL = old state of extended Break checks
- Note: under DOS 3.1+ and DR DOS, this function does not use any of the
- DOS-internal stacks and may thus be called at any time
- SeeAlso: AX=3302h
- --------D-213302-----------------------------
- INT 21 - DOS 3.x+ internal - GET AND SET EXTENDED CONTROL-BREAK CHECKING STATE
- AX = 3302h
- DL = new state (00h for OFF, 01h for ON)
- Return: DL = old state of extended BREAK checking
- Notes: this function does not use any of the DOS-internal stacks and may thus
- be called at any time; one possible use is modifying Control-Break
- checking from within an interrupt handler or TSR
- not supported by DR DOS through version 6.0 (error code 01h);
- newly-supported by Novell DOS 7
- SeeAlso: AH=33h
- --------D-213303-----------------------------
- INT 21 - DOS 4.0+ - UNUSED
- AX = 3303h
- Return: nothing
- Note: this function and AX=3304h were intended to support a proposed
- code-page switching flag (using two of the ten reserved bytes in
- the DOS directory entry for codepage information); however, this
- function has always been a NOP in public releases of DOS and OS/2.
- See _DOS_Internals_ Chapter 2 for more information
- SeeAlso: AX=3304h
- --------D-213304-----------------------------
- INT 21 - DOS 4.0+ - UNUSED
- AX = 3304h
- Return: nothing
- Note: this function and AX=3303h were intended to support a proposed
- code-page switching flag (using two of the ten reserved bytes in
- the DOS directory entry for codepage information); however, this
- function has always been a NOP in public releases of DOS and OS/2.
- See _DOS_Internals_ Chapter 2 for more information
- SeeAlso: AX=3303h
- --------D-213305-----------------------------
- INT 21 - DOS 4.0+ - GET BOOT DRIVE
- AX = 3305h
- Return: DL = boot drive (1=A:,...)
- Notes: fully reentrant
- NEC 9800-series PCs always call the boot drive A: and assign the other
- drive letters sequentially to the other drives in the system
- this call is supported by OS/2 Warp 3.0, but not earlier versions of
- OS/2; it is also supported by Novell DOS 7
- --------D-213306-----------------------------
- INT 21 - DOS 5+ - GET TRUE VERSION NUMBER
- AX = 3306h
- Return: BL = major version
- BH = minor version
- DL = revision (bits 2-0, all others 0)
- DH = version flags
- bit 3: DOS is in ROM
- bit 4: DOS is in HMA
- AL = FFh if true DOS version < 5.0
- Notes: this function always returns the true version number, unlike AH=30h,
- whose return value may be changed with SETVER
- because of the conflict from the CBIS redirector (see next
- entry), programs should check whether BH is less than 100 (64h)
- and BL is at least 5 before accepting the returned BX as the true
- version number; however, even this is not entirely reliable when
- that redirector is loaded
- fully reentrant
- OS/2 v2.1 will return BX=0A14h (version 20.10)
- the Windows NT DOS box returns BX=3205h (version 5.50)
- Novell DOS 7 returns IBM v6.00, which some software displays as
- IBM DOS v6.10 (because of the version mismatch in true IBM DOS
- mentioned for INT 21/AH=30h); versions through Update 15 all
- return revision code 00h
- Windows95 and Windows95 SP1 return version 7.00; Windows95 OSR2 returns
- version 7.10
- BUG: DR DOS 5.0 and 6.0 return CF set/AX=0001h for INT 21/AH=33h
- subfunctions other than 00h-02h and 05h, while MS-DOS returns AL=FFh
- for invalid subfunctions
- SeeAlso: AH=30h,INT 2F/AX=122Fh,INT 2F/AX=E000h"SETDRVER"
- --------N-213306-----------------------------
- INT 21 - CBIS network - NETWORK REDIRECTOR - ???
- AX = 3306h
- Return: AX = 3306h
- BL = ??? (usually 00h)
- BH = ??? (usually 00h or FFh)
- Note: unknown function, is in conflict with DOS 5+ version call
- SeeAlso: AX=3306h"DOS"
- --------D-213307-----------------------------
- INT 21 - Windows95 - SET/CLEAR DOS_FLAG
- AX = 3307h
- DL = subfunction
- 00h clear bit 5 of "DOS_FLAG"
- 01h set bit 5 of "DOS_FLAG"
- Return: ???
- --------v-21330F-----------------------------
- INT 21 - VIRUS - "Burghofer" - INSTALLATION CHECK
- AX = 330Fh
- Return: AL = 0Fh if resident (DOS returns AL=FFh)
- SeeAlso: AX=30F1h,AX=33DAh,AX=33E0h
- --------k-213341-----------------------------
- INT 21 - Diet Disk v1.0 - INSTALLATION CHECK
- AX = 3341h
- Return: DX = 1234h if installed
- CX = resident code segment
- Program: Diet Disk is a public domain transparent data file compressor by
- Barry Nance
- --------v-2133DA------------------------
- INT 21 - VIRUS - "CoffeeShop" - INSTALLATION CHECK
- AX = 33DAh
- Return: AH = A5h if resident
- AL = virus version
- SeeAlso: AX=33DB,AX=33DCh,AX=330Fh,AX=33E0h,AX=5643h"VIRUS"
- --------v-2133DB------------------------
- INT 21 - VIRUS - "CoffeeShop" - GENERATE RANDOM NUMBER
- AX = 33DBh
- Return: ???
- SeeAlso: AX=33DAh,AX=33DCh
- --------v-2133DC------------------------
- INT 21 - VIRUS - "CoffeeShop" - DISPLAY "LEGALIZE CANNABIS" GRAPHIC
- AX = 33DCh
- Return: ???
- SeeAlso: AX=33DAh,AX=33DBh
- --------v-2133E0-----------------------------
- INT 21 - VIRUS - "Oropax" - INSTALLATION CHECK
- AX = 33E0h
- Return: AL = E0h if resident (DOS returns AL=FFh)
- SeeAlso: AX=330Fh,AX=33DAh,AX=357Fh
- --------D-2134-------------------------------
- INT 21 - DOS 2+ - GET ADDRESS OF INDOS FLAG
- AH = 34h
- Return: ES:BX -> one-byte InDOS flag
- Notes: this function executes on the DOS stack, and thus cannot be called
- while another DOS function is already executing; you should use
- this function once at the beginning of the program and store the
- returned pointer rather than calling it when requiring DOS access
- the value of InDOS is incremented whenever an INT 21 function begins
- and decremented whenever one completes
- during an INT 28 call, it is safe to call some INT 21 functions even
- though InDOS may be 01h instead of zero
- InDOS alone is not sufficient for determining when it is safe to
- enter DOS, as the critical error handling decrements InDOS and
- increments the critical error flag for the duration of the critical
- error. Thus, it is possible for InDOS to be zero even if DOS is
- busy.
- SMARTDRV 4.0 sets the InDOS flag while flushing its buffers to disk,
- then zeros it on completion
- the critical error flag is the byte immediately following InDOS in
- DOS 2.x, and the byte BEFORE the InDOS flag in DOS 3.0+ and
- DR DOS 3.41+ (except COMPAQ DOS 3.0, where the critical error flag
- is located 1AAh bytes BEFORE the critical section flag)
- for DOS 3.1+, an undocumented call exists to get the address of the
- critical error flag (see AX=5D06h)
- this function was undocumented prior to the release of DOS 5.0.
- SeeAlso: AX=5D06h,AX=5D0Bh,INT 15/AX=DE1Fh,INT 28
- --------D-2135-------------------------------
- INT 21 - DOS 2+ - GET INTERRUPT VECTOR
- AH = 35h
- AL = interrupt number
- Return: ES:BX -> current interrupt handler
- Note: under DR DOS 5.0+, this function does not use any of the DOS-internal
- stacks and may thus be called at any time
- SeeAlso: AH=25h,AX=2503h
- --------E-213501-----------------------------
- INT 21 P - FlashTek X-32VM - ALLOCATE PROTECTED-MODE SELECTOR
- AX = 3501h
- Return: CF clear if successful
- BX = new selector
- CF set on error (no more selectors available)
- Note: the new selector will be an expand-up read/write data selector with
- undefined base and limit
- SeeAlso: AX=3502h,INT 31/AX=0000h
- --------E-213502-----------------------------
- INT 21 P - FlashTek X-32VM - DEALLOCATE PROTECTED-MODE SELECTOR
- AX = 3502h
- BX = selector
- Return: CF clear if successful
- CF set on error (invalid selector)
- Note: only selectors allocated via AX=3501h should be deallocated
- SeeAlso: AX=3501h,INT 31/AX=0001h
- --------E-213503-----------------------------
- INT 21 P - FlashTek X-32VM - SET SELECTOR BASE ADDRESS
- AX = 3503h
- BX = selector
- ECX = base address
- Return: CF clear if successful
- CF set on error (invalid selector)
- SeeAlso: AX=3504h,AX=3505h,INT 31/AX=0007h
- --------E-213504-----------------------------
- INT 21 P - FlashTek X-32VM - GET SELECTOR BASE ADDRESS
- AX = 3504h
- BX = selector
- Return: CF clear if successful
- ECX = absolute base address of selector
- CF set on error (invalid selector)
- SeeAlso: AX=3503h,INT 31/AX=0006h
- --------E-213505-----------------------------
- INT 21 P - FlashTek X-32VM - SET SELECTOR LIMIT
- AX = 3505h
- BX = selector
- ECX = desired limit
- Return: CF clear if successful
- ECX = actual limit set
- CF set on error (no more selectors available)
- Note: the limit will be rounded down to nearest 4K boundary if the requested
- limit is greater than 1MB
- SeeAlso: AX=3503h,INT 31/AX=0008h
- --------E-21350A-----------------------------
- INT 21 P - FlashTek X-32VM - PHYSICAL ADDRESS MAPPING
- AX = 350Ah
- EBX = absolute physical address
- ECX = size in bytes of area to map
- Return: CF clear if successful
- CF set on error (insufficient memory or service refused by DPMI host)
- Notes: should not make repeated calls for the same physical address
- there is no provision for unmapping memory
- --------E-21350B-----------------------------
- INT 21 P - FlashTek X-32VM - UPDATE AND RETURN AVAILABLE FREE MEMORY
- AX = 350Bh
- DS = default selector for DS
- Return: CF clear
- EAX = maximum amount of memory which can be allocated via AX=350Ch
- SeeAlso: AX=350Ch
- --------E-21350C-----------------------------
- INT 21 P - FlashTek X-32VM - ALLOCATE A BLOCK OF MEMORY
- AX = 350Ch
- ECX = size of block in bytes
- DS = default DS
- Return: CF clear if successful
- EAX = near pointer to new block
- EDX = new lowest legal value for stack
- CF set on error (requested size not multiple of 4K)
- SeeAlso: AX=350Bh,AX=350Dh
- --------E-21350D-----------------------------
- INT 21 P - FlashTek X-32VM - RESERVE BLOCK OF MEMORY FOR 32-BIT STACK
- AX = 350Dh
- EBX = current ESP value
- ECX = size of block in bytes
- DS = default DS
- Return: CF clear if successful
- EBX = new value for ESP
- EDX = suggested new limit for SS
- CF set on error
- Note: this function should only be called once during initialization
- SeeAlso: AX=350Bh,AX=350Ch
- --------v-21357F-----------------------------
- INT 21 - VIRUS - "Agiplan"/"Month 4-6" - INSTALLATION CHECK
- AX = 357Fh
- Return: DX = FFFFh if installed
- SeeAlso: AX=33E0h,AX=3DFFh
- --------D-2136-------------------------------
- INT 21 - DOS 2+ - GET FREE DISK SPACE
- AH = 36h
- DL = drive number (00h = default, 01h = A:, etc)
- Return: AX = FFFFh if invalid drive
- else
- AX = sectors per cluster
- BX = number of free clusters
- CX = bytes per sector
- DX = total clusters on drive
- Notes: free space on drive in bytes is AX * BX * CX
- total space on drive in bytes is AX * CX * DX
- "lost clusters" are considered to be in use
- according to Dave Williams' MS-DOS reference, the value in DX is
- incorrect for non-default drives after ASSIGN is run
- this function does not return proper results on CD-ROMs;
- use AX=4402h"CD-ROM" instead
- (FAT32 drive) the reported total and free space are limited to 2G-32K
- should they exceed that value
- SeeAlso: AH=1Bh,AH=1Ch,AX=4402h"CD-ROM",AX=7303h
- --------D-213700-----------------------------
- INT 21 - DOS 2+ - "SWITCHAR" - GET SWITCH CHARACTER
- AX = 3700h
- Return: AL = status
- 00h successful
- DL = current switch character
- FFh unsupported subfunction
- Desc: Determine the character which is used to introduce command switches.
- This setting is ignored by MS-DOS commands in version 4.0 and higher,
- but is honored by many third-party programs and by Novell DOS 7
- external commands
- BUG: Novell DOS 7's COMMAND.COM (prior to Update 15) fails to honor the
- SwitChar setting for internal commands even though COMMAND.COM
- honors it in its own command tail (i.e. COMMAND /?); even in Update
- 15, internal commands fail to honor SwitChar for the /? help option
- Notes: documented in some OEM versions of some releases of DOS
- supported by OS/2 compatibility box
- always returns AL=00h/DL=2Fh for MS-DOS 5+ and DR DOS 3.41-6.0
- Novell DOS 7 COMMAND.COM indicates switch characters other than '/'
- by changing the first backslash (and only the first one) in the
- path it prints for PROMPT $p with a forward slash
- SeeAlso: AX=3701h
- --------D-213701-----------------------------
- INT 21 - DOS 2+ - "SWITCHAR" - SET SWITCH CHARACTER
- AX = 3701h
- DL = new switch character
- Return: AL = status
- 00h successful
- FFh unsupported subfunction
- Notes: documented in some OEM versions of some releases of DOS; DOS 2.x had
- a SWITCHAR=c setting in CONFIG.SYS
- supported by OS/2 compatibility box and Novell DOS 7
- ignored by MS-DOS 5+ and DR DOS 3.41-6.0; DR DOS 6.0 and Novell DOS 7
- leave AX unchanged
- SeeAlso: AX=3700h
- --------D-2137-------------------------------
- INT 21 - DOS 2.x and 3.3+ only - "AVAILDEV" - SPECIFY \DEV\ PREFIX USE
- AH = 37h
- AL = subfunction
- 02h get availdev flag
- Return: DL = 00h \DEV\ must precede character device names
- = nonzero \DEV\ is optional
- 03h set availdev flag
- DL = new state
- 00h \DEV\ is mandatory
- nonzero \DEV\ is optional
- Return: AL = status
- 00h successful
- FFh unsupported subfunction
- Notes: all versions of DOS from 2.00 allow \DEV\ to be prepended to device
- names without generating an error even if the directory \DEV does
- not actually exist (other paths generate an error if they do not
- exist); DOS 2.x has an AVAILDEV= option in CONFIG.SYS to make \DEV
- mandatory
- although MS-DOS 3.3+, DR DOS 3.41+, and Novell DOS 7 accept these
- calls, they have no effect, and AL=02h always returns DL=FFh (except
- for Novell DOS 7, which leaves AX unchanged for both subfunctions)
- --------k-2137A0BX6A6D-----------------------
- INT 21 - XPACK v1.52+ - TSR INSTALLATION CHECK
- AX = 37A0h
- BX = 6A6Dh ('jm')
- Return: AL = FFh if not present as TSR (default return value from DOS)
- AX = 0000h if installed as a TSR
- CX = 6A6Dh ('jm')
- DX = version ID (0152h)
- Program: XPACK is a transparent file compressor/decompressor by JauMing Tseng
- SeeAlso: AX=37A1h/BX=6A6Dh,AX=37A3h/BX=6A6Dh
- --------k-2137A1BX6A6D-----------------------
- INT 21 - XPACK v1.52+ - UNINSTALL
- AX = 37A1h
- BX = 6A6Dh ('jm')
- Return: AX = status
- 0000h successful
- FFFFh failed
- Program: XPACK is a transparent file compressor/decompressor by JauMing Tseng
- SeeAlso: AX=37A0h/BX=6A6Dh
- --------k-2137A2BX6A6D-----------------------
- INT 21 - XPACK v1.52+ - GET TSR STATUS
- AX = 37A2h
- BX = 6A6Dh ('jm')
- Return: AX = 0000h (successful)
- DL = status (01h active, 00h disabled)
- SeeAlso: AX=37A3h/BX=6A6Dh
- --------k-2137A3BX6A6D-----------------------
- INT 21 - XPACK v1.52+ - SET TSR STATUS
- AX = 37A3h
- BX = 6A6Dh ('jm')
- DL = status (01h active, 00h disabled)
- Return: AX = 0000h (successful)
- SeeAlso: AX=37A0h/BX=6A6Dh,AX=37A2h/BX=6A6Dh
- ----------2137A6BX6A6D-----------------------
- INT 21 - XPACK v1.65 - GET TEMPORARY DIRECTORY NAME
- AX = 37A6h
- BX = 6A6Dh ('jm')
- Return: AX = 0000h
- DS:DX -> name of temporary directory
- Program: XPACK is a transparent file compressor/decompressor by JauMing Tseng
- SeeAlso: AX=37A0h/BX=6A6Dh,AX=37A7h/BX=6A6Dh
- ----------2137A7BX6A6D-----------------------
- INT 21 - XPACK v1.65 - SET TEMPORARY DIRECTORY NAME
- AX = 37A7h
- BX = 6A6Dh ('jm')
- DS:DX -> ASCIZ name of temporary directory (max 64 chars)
- Return: AX = 0000h
- Note: the specified directory name must include a drive letter and end with
- a backslash (e.g. 'c:\dos\',0)
- SeeAlso: AX=37A0h/BX=6A6Dh,AX=37A6h/BX=6A6Dh
- --------k-2137D0BX899D-----------------------
- INT 21 - DIET v1.43e - TSR INSTALLATION CHECK
- AX = 37D0h
- BX = 899Dh ('DI' + 'ET')
- Return: AL = FFh if not present as TSR (default return value from DOS)
- AX = 0000h if installed as a TSR
- CX = 899Dh
- DX = version ID
- Program: DIET is a transparent file compressor/decompressor by Teddy Matsumoto
- SeeAlso: AX=37D1h,AX=37D2h,AX=37D4h,AX=37D6h,AX=37DFh,AX=4BF0h,AX=4BF1h
- --------k-2137D1BX899D-----------------------
- INT 21 - DIET v1.43e - GET DIET.EXE RESIDENT SEGMENT
- AX = 37D1h
- BX = 899Dh ('DI' + 'ET')
- Return: AX = 0000h
- CX = code segment of TSR part of DIET.EXE
- DX = memory block segment of TSR DIET.EXE
- (0000h if installed as device driver)
- SeeAlso: AX=37D0h,AX=37DFh
- --------k-2137D2BX899D-----------------------
- INT 21 - DIET v1.43e - GET TSR CONTROL FLAGS
- AX = 37D2h
- BX = 899Dh ('DI' + 'ET')
- Return: AX = 0000h
- DL = control flag (00h active, else disabled)
- DH = skip flag (nonzero while TSR active)
- SeeAlso: AX=37D0h,AX=37D3h,AX=37D4h
- --------k-2137D3BX899D-----------------------
- INT 21 - DIET v1.43e - SET TSR CONTROL FLAGS
- AX = 37D3h
- BX = 899Dh ('DI' + 'ET')
- DL = control flag (00h active, else disabled)
- DH = skip flag (00h)
- Return: AX = 0000h
- SeeAlso: AX=37D0h,AX=37D2h,AX=37D5h
- --------k-2137D4BX899D-----------------------
- INT 21 - DIET v1.43e - GET TSR OPTIONS
- AX = 37D4h
- BX = 899Dh ('DI' + 'ET')
- Return: AX = 0000h
- DX = TSR options (see #01396)
- SeeAlso: AX=37D0h,AX=37D2h,AX=37D5h
- Bitfields for DIET TSR options:
- Bit(s) Description (Table 01396)
- 0 automated compression of DIETed file
- 1 automated compression of newly-created file
- 2 suppress DIET message
- 3 display original file size
- 4-15 reserved (0)
- --------k-2137D5BX899D-----------------------
- INT 21 - DIET v1.43e - SET TSR OPTIONS
- AX = 37D5h
- BX = 899Dh ('DI' + 'ET')
- DX = TSR options (see #01396)
- Return: AX = 0000h
- Program: DIET is a transparent file compressor/decompressor by Teddy Matsumoto
- SeeAlso: AX=37D0h,AX=37D3h,AX=37D4h
- --------k-2137D6BX899D-----------------------
- INT 21 - DIET v1.43e - GET TEMPORARY DIRECTORY NAMES
- AX = 37D6h
- BX = 899Dh ('DI' + 'ET')
- Return: AX = 0000h
- DS:DX -> name of temporary directory or 0000h:0000h for current dir
- SeeAlso: AX=37D0h,AX=37D7h
- --------k-2137D7BX899D-----------------------
- INT 21 - DIET v1.43e - SET TEMPORARY DIRECTORY NAMES
- AX = 37D7h
- BX = 899Dh ('DI' + 'ET')
- DS:DX -> ASCIZ name of temporary directory (max 61 chars)
- 0000h:0000h for current directory
- Return: AX = 0000h
- Note: the specified directory name must include a drive letter and end with
- a backslash
- SeeAlso: AX=37D0h,AX=37D6h
- --------k-2137DCBX899D-----------------------
- INT 21 - DIET v1.43e - SET ADDRESS OF EXTERNAL PROCEDURE
- AX = 37DCh
- BX = 899Dh ('DI' + 'ET')
- DS:DX -> external procedure (see #01397)
- Return: AX = 0000h
- Note: the resident code will call the specified external procedure at the
- beginning of decompression and when compression is exited on failure
- SeeAlso: AX=37DDh
- (Table 01397)
- Values DIET external procedure is called with:
- STACK: WORD class
- FFFDh creation failed for unknown reasons
- FFFEh creation failed due to lack of space
- FFFFh file creation error
- else file handle of DIETed file to be decompressed
- DWORD -> compressed filename
- DWORD -> decompressed or temporary filename
- Return: SI,DI,BP,DS,ES must be preserved by external procedure
- --------k-2137DDBX899D-----------------------
- INT 21 - DIET v1.43e - RELEASE EXTERNAL PROCEDURE
- AX = 37DDh
- BX = 899Dh ('DI' + 'ET')
- Program: DIET is a transparent file compressor/decompressor by Teddy Matsumoto
- Note: unlinks the external procedure specified by AX=37DCh
- SeeAlso: AX=37DCh
- --------k-2137DEBX899D-----------------------
- INT 21 - DIET v1.43e - READ EMS STATUS
- AX = 37DEh
- BX = 899Dh ('DI' + 'ET')
- Return: AX = 0000h
- CX = EMS status
- 0000h not used
- 0001h used as work area
- 0002h used for code and as work area
- DX = EMM handle when EMS is in use
- --------k-2137DFBX899D-----------------------
- INT 21 - DIET v1.43e - UNINSTALL TSR
- AX = 37DFh
- BX = 899Dh ('DI' + 'ET')
- Return: AX = status
- 0000h successful
- 00FFh failed
- Program: DIET is a transparent file compressor/decompressor by Teddy Matsumoto
- SeeAlso: AX=37D0h
- Index: uninstall;DIET
- --------D-2138-------------------------------
- INT 21 - DOS 2+ - GET COUNTRY-SPECIFIC INFORMATION
- AH = 38h
- --DOS 2.x--
- AL = 00h get current-country info
- DS:DX -> buffer for returned info (see #01398,#01399)
- Return: CF set on error
- AX = error code (02h)
- CF clear if successful
- AX = country code (MS-DOS 2.11 only)
- buffer at DS:DX filled
- --DOS 3.0+--
- AL = 00h for current country
- AL = 01h thru 0FEh for specific country with code <255 (see #01400)
- AL = 0FFh for specific country with code >= 255
- BX = 16-bit country code (see #01400)
- DS:DX -> buffer for returned info (see #01399)
- Return: CF set on error
- AX = error code (02h)
- CF clear if successful
- AX = country code (Novell NWDOS v7.0)
- BX = country code
- DS:DX buffer filled
- Note: this function is not supported by the Borland DPMI host, but no error
- is returned; as a workaround, one should allocate a buffer in
- conventional memory with INT 31/AX=0100h and simulate an INT 21 with
- INT 31/AX=0300h
- SeeAlso: AH=65h,INT 10/AX=5001h,INT 2F/AX=110Ch,INT 2F/AX=1404h
- Format of DOS 2.00-2.10 country info:
- Offset Size Description (Table 01398)
- 00h WORD date format 0 = USA mm dd yy
- 1 = Europe dd mm yy
- 2 = Japan yy mm dd
- 02h BYTE currency symbol
- 03h BYTE 00h
- 04h BYTE thousands separator char
- 05h BYTE 00h
- 06h BYTE decimal separator char
- 07h BYTE 00h
- 08h 24 BYTEs reserved
- Format of DOS 2.11+ country info:
- Offset Size Description (Table 01399)
- 00h WORD date format (see #01398)
- 02h 5 BYTEs ASCIZ currency symbol string
- 07h 2 BYTEs ASCIZ thousands separator
- 09h 2 BYTEs ASCIZ decimal separator
- 0Bh 2 BYTEs ASCIZ date separator
- 0Dh 2 BYTEs ASCIZ time separator
- 0Fh BYTE currency format
- bit 2 = set if currency symbol replaces decimal point
- bit 1 = number of spaces between value and currency symbol
- bit 0 = 0 if currency symbol precedes value
- 1 if currency symbol follows value
- 10h BYTE number of digits after decimal in currency
- 11h BYTE time format
- bit 0 = 0 if 12-hour clock
- 1 if 24-hour clock
- 12h DWORD address of case map routine
- (FAR CALL, AL = character to map to upper case [>= 80h])
- 16h 2 BYTEs ASCIZ data-list separator
- 18h 10 BYTEs reserved
- (Table 01400)
- Values for country code:
- 001h (1) United States
- 002h (2) Canadian-French
- 003h (3) Latin America
- 004h (4) Canada (English)
- 007h (7) Russia
- 014h (20) Egypt
- 01Bh (27) South Africa
- 01Eh (30) Greece
- 01Fh (31) Netherlands
- 020h (32) Belgium
- 021h (33) France
- 022h (34) Spain
- 023h (35) Bulgaria???
- 024h (36) Hungary (not supported by DR DOS 5.0)
- 026h (38) Yugoslavia (not supported by DR DOS 5.0) -- obsolete
- 027h (39) Italy / San Marino / Vatican City
- 028h (40) Romania
- 029h (41) Switzerland / Liechtenstein
- 02Ah (42) Czechoslovakia / Tjekia / Slovakia (not supported by DR DOS 5.0)
- 02Bh (43) Austria (DR DOS 5.0)
- 02Ch (44) United Kingdom
- 02Dh (45) Denmark
- 02Eh (46) Sweden
- 02Fh (47) Norway
- 030h (48) Poland (not supported by DR DOS 5.0)
- 031h (49) Germany
- 033h (51) Peru
- 034h (52) Mexico
- 035h (53) Cuba
- 036h (54) Argentina
- 037h (55) Brazil (not supported by DR DOS 5.0)
- 038h (56) Chile
- 039h (57) Columbia
- 03Ah (58) Venezuela
- 03Ch (60) Malaysia
- 03Dh (61) International English / Australia
- 03Eh (62) Indonesia / East Timor
- 03Fh (63) Philippines
- 040h (64) New Zealand
- 041h (65) Singapore
- 042h (66) Taiwan???
- 051h (81) Japan (DR DOS 5.0, MS-DOS 5.0+)
- 052h (82) South Korea (DR DOS 5.0)
- 054h (84) Vietnam
- 056h (86) China (MS-DOS 5.0+)
- 058h (88) Taiwan (MS-DOS 5.0+)
- 05Ah (90) Turkey (MS-DOS 5.0+)
- 05Bh (91) India
- 05Ch (92) Pakistan
- 05Dh (93) Afghanistan
- 05Eh (94) Sri Lanka
- 062h (98) Iran
- 063h (99) Asia (English)
- 070h (112) Belarus
- 0C8h (200) Thailand
- 0D4h (212) Morocco
- 0D5h (213) Algeria
- 0D8h (216) Tunisia
- 0DAh (218) Libya
- 0DCh (220) Gambia
- 0DDh (221) Senegal
- 0DEh (222) Maruitania
- 0DFh (223) Mali
- 0E0h (224) African Guinea
- 0E1h (225) Ivory Coast
- 0E2h (226) Burkina Faso
- 0E3h (227) Niger
- 0E4h (228) Togo
- 0E5h (229) Benin
- 0E6h (230) Mauritius
- 0E7h (231) Liberia
- 0E8h (232) Sierra Leone
- 0E9h (233) Ghana
- 0EAh (234) Nigeria
- 0EBh (235) Chad
- 0ECh (236) Centra African Republic
- 0EDh (237) Cameroon
- 0EEh (238) Cape Verde Islands
- 0EFh (239) Sao Tome and Principe
- 0F0h (240) Equatorial Guinea
- 0F1h (241) Gabon
- 0F2h (242) Congo
- 0F3h (243) Zaire
- 0F4h (244) Angola
- 0F5h (245) Guinea-Bissau
- 0F6h (246) Diego Garcia
- 0F7h (247) Ascension Isle
- 0F8h (248) Seychelles
- 0F9h (249) Sudan
- 0FAh (250) Rwhanda
- 0FBh (251) Ethiopia
- 0FCh (252) Somalia
- 0FDh (253) Djibouti
- 0FEh (254) Kenya
- 0FFh (255) Tanzania
- 100h (256) Uganda
- 101h (257) Burundi
- 103h (259) Mozambique
- 104h (260) Zambia
- 105h (261) Madagascar
- 106h (262) Reunion Island
- 107h (263) Zimbabwe
- 108h (264) Namibia
- 109h (265) Malawi
- 10Ah (266) Lesotho
- 10Bh (267) Botswana
- 10Ch (268) Swaziland
- 10Dh (269) Comoros
- 10Eh (270) Mayotte
- 122h (290) St. Helena
- 129h (297) Aruba
- 12Ah (298) Faroe Islands
- 12Bh (299) Greenland
- 15Eh (350) Gibraltar
- 15Fh (351) Portugal
- 160h (352) Luxembourg
- 161h (353) Ireland
- 162h (354) Iceland
- 163h (355) Albania
- 164h (356) Malta
- 165h (357) Cyprus
- 166h (358) Finland
- 167h (359) Bulgaria
- 172h (370) Lithuania
- 173h (371) Latvia
- 174h (372) Estonia
- 175h (373) Moldova
- 17Dh (381) Serbia / Montenegro
- 180h (384) Croatia???
- 181h (385) Croatia
- 182h (386) Slovenia
- 183h (387) Bosnia-Herzegovina (Latin)
- 184h (388) Bosnia-Herzegovina (Cyrillic)
- 185h (389) FYR Macedonia
- 1A5h (421) Czech Republic
- 1A6h (422) Slovakia
- 1F4h (500) Falkland Islands
- 1F5h (501) Belize
- 1F6h (502) Guatemala
- 1F7h (503) El Salvador
- 1F8h (504) Honduras
- 1F9h (505) Nicraragua
- 1FAh (506) Costa Rica
- 1FBh (507) Panama
- 1FCh (508) St. Pierre and Miquelon
- 1FDh (509) Haiti
- 24Eh (590) Guadeloupe
- 24Fh (591) Bolivia
- 250h (592) Guyana
- 251h (593) Ecuador
- 252h (594) rench Guiana
- 253h (595) Paraguay
- 254h (596) Martinique / French Antilles
- 255h (597) Suriname
- 256h (598) Uruguay
- 257h (599) Netherland Antilles
- 29Eh (670) Saipan / N. Mariana Island
- 29Fh (671) Guam
- 2A0h (672) Norfolk Island (Australia) / Christmas Island/Cocos Islands / Antartica
- 2A1h (673) Brunei Darussalam
- 2A2h (674) Nauru
- 2A3h (675) Papua New Guinea
- 2A4h (676) Tonga Islands
- 2A5h (677) Solomon Islands
- 2A6h (678) Vanuatu
- 2A7h (679) Fiji
- 2A8h (680) Palau
- 2A9h (681) Wallis & Futuna
- 2AAh (682) Cook Islands
- 2ABh (683) Niue
- 2ACh (684) American Samoa
- 2ADh (685) Western Samoa
- 2AEh (686) Kiribati
- 2AFh (687) New Caledonia
- 2B0h (688) Tuvalu
- 2B1h (689) French Polynesia
- 2B2h (690) Tokealu
- 2B3h (691) Micronesia
- 2B4h (692) Marshall Islands
- 2C7h (711) ??? (currency = EA$)
- 311h (785) Arabic (Middle East/Saudi Arabia/etc.)
- 324h (804) Ukraine
- 329h (809) Antigua and Barbuda / Anguilla / Bahamas / Barbados / Bermuda
- British Virgin Islands / Cayman Islands / Dominica
- Dominican Republic / Grenada / Jamaica / Montserra
- St. Kitts and Nevis / St. Lucia / St. Vincent and Grenadines
- Trinidad and Tobago / Turks and Caicos
- 352h (850) North Korea
- 354h (852) Hong Kong
- 355h (853) Macao
- 357h (855) Cambodia
- 358h (856) Laos
- 370h (880) Bangladesh
- 376h (886) Taiwan (DOS 6.22+)
- 3C0h (960) Maldives
- 3C1h (961) Lebanon
- 3C2h (962) Jordan
- 3C3h (963) Syrian Arab Republic
- 3C4h (964) Ireq
- 3C5h (965) Kuwait
- 3C6h (966) Saudi Arabia
- 3C7h (967) Yemen
- 3C8h (968) Oman
- 3CBh (971) United Arab Emirates
- 3CCh (972) Israel (Hebrew) (DR DOS 5.0,MS-DOS 5.0+)
- 3CDh (973) Bahrain
- 3CEh (974) Qatar
- 3CFh (975) Bhutan
- 3D0h (976) Mongolia
- 3D1h (977) Nepal
- 3E3h (995) Myanmar (Burma)
- Note: not all country codes are supported by all versions of DOS
- --------D-2138--DXFFFF-----------------------
- INT 21 - DOS 3.0+ - SET COUNTRY CODE
- AH = 38h
- DX = FFFFh
- AL = 01h thru FEh for specific country with code <255
- AL = FFh for specific country with code >= 255
- BX = 16-bit country code (see #01400)
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- Note: not supported by OS/2
- SeeAlso: INT 2F/AX=1403h
- --------D-2139-------------------------------
- INT 21 - DOS 2+ - "MKDIR" - CREATE SUBDIRECTORY
- AH = 39h
- DS:DX -> ASCIZ pathname
- Return: CF clear if successful
- AX destroyed
- CF set on error
- AX = error code (03h,05h) (see #01680 at AH=59h/BX=0000h)
- Notes: all directories in the given path except the last must exist
- fails if the parent directory is the root and is full
- DOS 2.x-3.3 allow the creation of a directory sufficiently deep that
- it is not possible to make that directory the current directory
- because the path would exceed 64 characters
- under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
- SeeAlso: AH=3Ah,AH=3Bh,AH=6Dh,AX=7139h,AH=E2h/SF=0Ah,AX=43FFh/BP=5053h
- SeeAlso: INT 2F/AX=1103h,INT 60/DI=0511h
- --------D-213A-------------------------------
- INT 21 - DOS 2+ - "RMDIR" - REMOVE SUBDIRECTORY
- AH = 3Ah
- DS:DX -> ASCIZ pathname of directory to be removed
- Return: CF clear if successful
- AX destroyed
- CF set on error
- AX = error code (03h,05h,06h,10h) (see #01680 at AH=59h/BX=0000h)
- Notes: directory must be empty (contain only '.' and '..' entries)
- under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
- SeeAlso: AH=39h,AH=3Bh,AX=713Ah,AH=E2h/SF=0Bh,INT 2F/AX=1101h,INT 60/DI=0512h
- --------D-213B-------------------------------
- INT 21 - DOS 2+ - "CHDIR" - SET CURRENT DIRECTORY
- AH = 3Bh
- DS:DX -> ASCIZ pathname to become current directory (max 64 bytes)
- Return: CF clear if successful
- AX destroyed
- CF set on error
- AX = error code (03h) (see #01680 at AH=59h/BX=0000h)
- Notes: if new directory name includes a drive letter, the default drive is
- not changed, only the current directory on that drive
- changing the current directory also changes the directory in which
- FCB file calls operate
- under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
- SeeAlso: AH=47h,AX=713Bh,INT 2F/AX=1105h
- --------D-213C-------------------------------
- INT 21 - DOS 2+ - "CREAT" - CREATE OR TRUNCATE FILE
- AH = 3Ch
- CX = file attributes (see #01401)
- DS:DX -> ASCIZ filename
- Return: CF clear if successful
- AX = file handle
- CF set on error
- AX = error code (03h,04h,05h) (see #01680 at AH=59h/BX=0000h)
- Notes: if a file with the given name exists, it is truncated to zero length
- under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
- DR DOS checks the system password or explicitly supplied password at
- the end of the filename against the reserved field in the directory
- entry before allowing access
- SeeAlso: AH=16h,AH=3Dh,AH=5Ah,AH=5Bh,AH=93h,INT 2F/AX=1117h
- Bitfields for file attributes:
- Bit(s) Description (Table 01401)
- 0 read-only
- 1 hidden
- 2 system
- 3 volume label (ignored)
- 4 reserved, must be zero (directory)
- 5 archive bit
- 7 if set, file is shareable under Novell NetWare
- --------D-213D-------------------------------
- INT 21 - DOS 2+ - "OPEN" - OPEN EXISTING FILE
- AH = 3Dh
- AL = access and sharing modes (see #01402)
- DS:DX -> ASCIZ filename
- CL = attribute mask of files to look for (server call only)
- Return: CF clear if successful
- AX = file handle
- CF set on error
- AX = error code (01h,02h,03h,04h,05h,0Ch,56h) (see #01680 at AH=59h)
- Notes: file pointer is set to start of file
- if SHARE or a network is loaded, the file open may fail if the file
- is already open, depending on the combination of sharing modes
- (see #01403,#01404)
- file handles which are inherited from a parent also inherit sharing
- and access restrictions
- files may be opened even if given the hidden or system attributes
- under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
- DR DOS checks the system password or explicitly supplied password at
- the end of the filename (following a semicolon) against the reserved
- field in the directory entry before allowing access
- sharing modes are only effective on local drives if SHARE is loaded
- BUG: Novell DOS 7 SHARE v1.00 would refuse file access in the cases in
- #01403 marked with [1] (read-only open of a read-only file
- which had previously been opened in compatibility mode); this was
- fixed in SHARE v1.01 of 09/29/94
- SeeAlso: AH=0Fh,AH=3Ch,AX=4301h,AX=5D00h,INT 2F/AX=1116h,INT 2F/AX=1226h
- Bitfields for access and sharing modes:
- Bit(s) Description (Table 01402)
- 2-0 access mode
- 000 read only
- 001 write only
- 010 read/write
- 011 (DOS 5+ internal) passed to redirector on EXEC to allow
- case-sensitive filenames
- 3 reserved (0)
- 6-4 sharing mode (DOS 3.0+) (see #01403)
- 000 compatibility mode
- 001 "DENYALL" prohibit both read and write access by others
- 010 "DENYWRITE" prohibit write access by others
- 011 "DENYREAD" prohibit read access by others
- 100 "DENYNONE" allow full access by others
- 111 network FCB (only available during server call)
- 7 inheritance
- if set, file is private to current process and will not be inherited
- by child processes
- SeeAlso: #01782,#01403
- (Table 01403)
- Values of DOS 2-6.22 file sharing behavior:
- | Second and subsequent Opens
- First |Compat Deny Deny Deny Deny
- Open | All Write Read None
- |R W RW R W RW R W RW R W RW R W RW
- - - - - -| - - - - - - - - - - - - - - - - -
- Compat R |Y Y Y N N N 1 N N N N N 1 N N
- W |Y Y Y N N N N N N N N N N N N
- RW|Y Y Y N N N N N N N N N N N N
- - - - - -|
- Deny R |C C C N N N N N N N N N N N N
- All W |C C C N N N N N N N N N N N N
- RW|C C C N N N N N N N N N N N N
- - - - - -|
- Deny R |2 C C N N N Y N N N N N Y N N
- Write W |C C C N N N N N N Y N N Y N N
- RW|C C C N N N N N N N N N Y N N
- - - - - -|
- Deny R |C C C N N N N Y N N N N N Y N
- Read W |C C C N N N N N N N Y N N Y N
- RW|C C C N N N N N N N N N N Y N
- - - - - -|
- Deny R |2 C C N N N Y Y Y N N N Y Y Y
- None W |C C C N N N N N N Y Y Y Y Y Y
- RW|C C C N N N N N N N N N Y Y Y
- Legend: Y = open succeeds, N = open fails with error code 05h
- C = open fails, INT 24 generated
- 1 = open succeeds if file read-only, else fails with error code
- 2 = open succeeds if file read-only, else fails with INT 24
- SeeAlso: #01636,#01404
- (Table 01404)
- Values for DOS 7.x file sharing behavior:
- | Second and subsequent Opens
- First |Compat Deny Deny Deny Deny
- Open | All Write Read None
- |R W RW A R W RW A R W RW A R W RW A R W RW A
- - - - - -| - - - - - - - - - - - - - - - - - - - - - - - -
- Compat R |Y Y Y Y N N N N Y N N Y N N N Y Y N N Y
- W |Y Y Y C N N N N N N N N N N N Y Y N N Y
- RW|Y Y Y C N N N N N N N N N N N Y Y N N Y
- NA|Y C C Y N N N N Y N N Y N N N Y Y N N Y
- - - - - -|
- Deny R |C C C C N N N N N N N N N N N N N N N N
- All W |C C C C N N N N N N N N N N N N N N N N
- RW|C C C C N N N N N N N N N N N N N N N N
- NA|C C C C N N N N N N N N N N N N N N N N
- - - - - -|
- Deny R |Y C C Y N N N N Y N N Y N N N Y Y N N Y
- Write W |C C C C N N N N N N N N Y N N Y Y N N Y
- RW|C C C C N N N N N N N N N N N Y Y N N Y
- NA|Y C C Y N N N N Y N N Y N N N Y Y N N Y
- - - - - -|
- Deny R |C C C C N N N N N Y N N N N N N N Y N N
- Read W |C C C C N N N N N N N N N Y N N N Y N N
- RW|C C C C N N N N N N N N N N N N N Y N N
- NA|Y Y Y Y N N N N Y Y Y Y N N N Y Y Y Y Y
- - - - - -|
- Deny R |Y Y Y Y N N N N Y Y Y Y N N N Y Y Y Y Y
- None W |C C C C N N N N N N N N Y Y Y Y Y Y Y Y
- RW|C C C C N N N N N N N N N N N Y Y Y Y Y
- NA|Y Y Y Y N N N N Y Y Y Y N N N Y Y Y Y Y
- Legend: R -> reading, W -> writing, RW -> both reading & writing,
- A/NA -> reading without access time update
- Y = open succeeds, N = open fails with error code 05h
- C = open fails, INT 24 generated
- SeeAlso: #01403,#01636
- --------v-213D76-----------------------------
- INT 21 - VIRUS - "GT-SPOOF" -INSTALLATION CHECK
- AX = 3D76h
- Return: AX = 763Dh if resident
- SeeAlso: AX=357Fh,AX=3DFFh
- --------v-213DFF-----------------------------
- INT 21 - VIRUS - "JD-448" - INSTALLATION CHECK
- AX = 3DFFh
- Return: AX = 4A44h if resident
- SeeAlso: AX=3D76h,AX=4203h
- --------D-213E-------------------------------
- INT 21 - DOS 2+ - "CLOSE" - CLOSE FILE
- AH = 3Eh
- BX = file handle
- Return: CF clear if successful
- AX destroyed
- CF set on error
- AX = error code (06h) (see #01680 at AH=59h/BX=0000h)
- Notes: if the file was written to, any pending disk writes are performed, the
- time and date stamps are set to the current time, and the directory
- entry is updated
- recent versions of DOS preserve AH because some versions of Multiplan
- had a bug which depended on AH being preserved
- SeeAlso: AH=10h,AH=3Ch,AH=3Dh,INT 2F/AX=1106h,INT 2F/AX=1227h
- --------D-213F-------------------------------
- INT 21 - DOS 2+ - "READ" - READ FROM FILE OR DEVICE
- AH = 3Fh
- BX = file handle
- CX = number of bytes to read
- DS:DX -> buffer for data
- Return: CF clear if successful
- AX = number of bytes actually read (0 if at EOF before call)
- CF set on error
- AX = error code (05h,06h) (see #01680 at AH=59h/BX=0000h)
- Notes: data is read beginning at current file position, and the file position
- is updated after a successful read
- the returned AX may be smaller than the request in CX if a partial
- read occurred
- if reading from CON, read stops at first CR
- under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
- BUG: Novell NETX.EXE v3.26 and 3.31 do not set CF if the read fails due to
- a record lock (see AH=5Ch), though it does return AX=0005h; this
- has been documented by Novell
- SeeAlso: AH=27h,AH=40h,AH=93h,INT 2F/AX=1108h,INT 2F/AX=1229h
- --------G-213F-------------------------------
- INT 21 - Turbo Debug HARDWARE BREAKPOINTS - READ STATUS BLOCK
- AH = 3Fh
- BX = handle for character device "TDHDEBUG"
- CX = number of bytes to read
- DS:DX -> buffer for status block (see #01406)
- Return: CF clear if successful
- AX = number of bytes actually read
- CF set on error
- AX = error code (05h,06h) (see #01680 at AH=59h/BX=0000h)
- SeeAlso: AH=40h"Turbo Debug"
- (Table 01405)
- Values for status of Turbo Debugger command:
- 00h successful
- 01h invalid handle
- 02h no more breakpoints available
- 03h hardware does not support specified breakpoint type
- 04h previous command prevents execution
- 05h debugger hardware not found
- 06h hardware failure
- 07h invalid command
- 08h driver not initialized yet
- FEh recursive entry (hardware breakpoint inside hw bp handler)
- Format of Turbo Debugger status block:
- Offset Size Description (Table 01406)
- 00h BYTE status of command (see #01405)
- ---status for command 01h---
- 01h WORD device driver interface version number (currently 1)
- 03h WORD device driver software version
- 05h BYTE maximum simultaneous hardware breakpoints
- 06h BYTE configuration bits (see #01407)
- 07h BYTE supported breakpoint types (see #01408)
- 08h WORD supported addressing match modes (see #01409)
- 0Ah WORD supported data matches (see #01410)
- 0Ch BYTE maximum data match length (01h, 02h, or 04h)
- 0Dh WORD size of onboard memory (in KB)
- 0Fh WORD maximum number of trace-back events
- 11h WORD hardware breakpoint enable byte address segment (0000h if not
- supported)
- ---status for command 04h---
- 01h BYTE handle to use when referring to the just-set breakpoint
- Bitfields for Turbo Debugger configuration bits:
- Bit(s) Description (Table 01407)
- 0 CPU and DMA accesses are distinct
- 1 can detect DMA transfers
- 2 supports data mask
- 3 hardware pass counter on breakpoints
- 4 can match on data as well as addresses
- Bitfields for Turbo Debugger supported breakpoint types:
- Bit(s) Description (Table 01408)
- 0 memory read
- 1 memory write
- 2 memory read/write
- 3 I/O read
- 4 I/O write
- 5 I/O read/write
- 6 instruction fetch
- Bitfields for Turbo Debugger supported addressing match modes:
- Bit(s) Description (Table 01409)
- 0 any address
- 1 equal to test value
- 2 not equal
- 3 above test value
- 4 below test value
- 5 below or equal
- 6 above or equal
- 7 within range
- 8 outside range
- Bitfields for Turbo Debugger supported data matches:
- Bit(s) Description (Table 01410)
- 0 any data
- 1 equal to test value
- 2 not equal
- 3 above test value
- 4 below test value
- 5 below or equal
- 6 above or equal
- 7 within range
- 8 outside range
- --------N-213F-------------------------------
- INT 21 - PC/TCP IPCUST.SYS - READ CONFIGURATION DATA
- AH = 3Fh
- BX = handle for character device "$IPCUST"
- CX = number of bytes to read
- DS:DX -> buffer for configuration data (see #01411)
- Return: CF clear if successful
- AX = number of bytes actually read
- CF set on error
- AX = error code (05h,06h) (see #01680 at AH=59h/BX=0000h)
- Notes: if less than the entire data is read or written, the next read/write
- continues where the previous one ended; IOCTL calls AX=4402h and
- AX=4403h both reset the location at which the next operation starts
- to zero
- the data pointer is also reset to zero if the previous read or write
- reached or exceeded the end of the data, when the current function
- is read and the previous was write, or vice versa
- v2.1+ uses a new configuration method, but allows the installation
- of IPCUST.SYS for backward compatibility with other software which
- must read the PC/TCP configuration
- SeeAlso: AH=40h"IPCUST",AX=4402h"IPCUST",AX=4402h"FTPSOFT"
- Format of PC/TCP configuration data:
- Offset Size Description (Table 01411)
- 00h 12 BYTEs IPCUST.SYS device driver header (see #01646)
- 12h BYTE ???
- 13h BYTE ???
- 14h WORD ???
- 16h BYTE bit flags
- bit 0: send BS rather than DEL for BackSpace key
- bit 1: wrap long lines
- 17h BYTE ???
- 18h 64 BYTEs ASCIZ hostname
- 58h 64 BYTEs ASCIZ domain name
- (fully qualified domain name is hostname.domain-name)
- 98h 16 BYTEs ASCIZ username
- A8h 64 BYTEs ASCIZ full name
- E8h 64 BYTEs ASCIZ office address
- 128h 32 BYTEs ASCIZ phone number
- 148h WORD offset from GMT in minutes
- 14Ah 4 BYTEs ASCIZ timezone name
- 14Eh WORD number of time servers
- 150h ? DWORDs (big-endian) IP addresses for time servers
- ???
- 164h WORD number of old-style name servers
- 166h 3 DWORDs (big-endian) IP addresses for name servers
- 172h WORD number of domain name servers
- 174h 3 DWORDs (big-endian) IP addresses for domain name servers
- 180h DWORD (big-endian) IP address of default gateway
- 184h DWORD (big-endian) IP address of log server
- 188h DWORD (big-endian) IP address of cookie server
- 18Ch DWORD (big-endian) IP address of lpr server
- 190h DWORD (big-endian) IP address of imagen print server
- 194h 54 BYTEs ???
- 1E8h WORD TCP default window size in bytes
- 1EAh WORD TCP low window size
- 1ECh 64 BYTEs ASCIZ host tabel filename
- 22Ch 2 BYTEs ???
- 22Eh 80 BYTEs ASCIZ mail relay host name
- 27Eh BYTE ???
- 27Fh BYTE ??? bit flags
- 280h 44 BYTEs ???
- 2ACh WORD ???
- 2AEh 202 BYTEs ???
- --------N-213F-------------------------------
- INT 21 - WORKGRP.SYS - GET ENTRY POINT
- AH = 3Fh
- BX = file handle for device "NET$HLP$"
- CX = 0008h
- DS:DX -> buffer for entry point record (see #01485)
- Return: CF clear if successful
- AX = number of bytes actually read (0 if at EOF before call)
- CF set on error
- AX = error code (05h,06h) (see #01680 at AH=59h/BX=0000h)
- Program: WORKGRP.SYS is the portion of Microsoft's Workgroup Connection which
- permits communication with PCs running Windows for Workgroups or
- LAN Manager
- SeeAlso: AX=4402h"WORKGRP.SYS",INT 2F/AX=9400h
- --------N-213F-------------------------------
- INT 21 - BW-TCP - GET DRIVER INFO
- AH = 3Fh
- BX = file handle for device "ETHDEV27"
- CX = 002Bh
- DS:DX -> buffer for driver info (see #01412)
- Return: CF clear if successful
- AX = number of bytes actually read (0 if at EOF before call)
- CF set on error
- AX = error code (05h,06h) (see #01680 at AH=59h/BX=0000h)
- Program: BW-TCP is a TCP/IP protocol stack by Beame & Whiteside Software
- InstallCheck: for the TCP/IP stack, test for the existence of the character
- device UDP-IP10
- Note: the B&W socket library performs an INT 21/AX=4401h with DX=0060h before
- making this call to retrieve the driver information; one should also
- call the private API interrupt with AH=15h
- SeeAlso: INT 14/AH=56h,INT 62/AH=00h"ETHDEV",INT 63/AH=03h,INT 64/AH=01h
- Index: installation check;BW-TCP hardware driver
- Index: installation check;BW-TCP TCPIP.SYS
- Format of BW-TCP driver info:
- Offset Size Description (Table 01412)
- 00h WORD I/O base address
- 02h BYTE shared memory page (01h = segment 0100h, etc.)
- 03h BYTE interrupt vector for private API
- 04h BYTE IRQ used by board
- 05h WORD size of data buffer
- 07h WORD maximum transfer window
- 09h WORD time zone
- 0Bh BYTE address type (01h user, 04h RARP, 05h BOOTP)
- 0Ch DWORD internet address
- 10h WORD "value" ???
- 12h BYTE subnet mask
- 13h WORD "ether_pointer" ???
- 15h WORD offset in device driver of log server records (see #01413)
- 17h WORD offset in device driver of name server records (see #01413)
- 19h WORD offset in device driver of print server records (see #01413)
- 1Bh WORD offset in device driver of time server records (see #01413)
- 1Dh WORD offset in device driver of gateway records (see #01413)
- 1Fh WORD segment address of device driver
- 21h BYTE transfer size
- 22h 9 BYTEs network adapter board name
- ---11/21/91+ ---
- 23h BYTE ETHDEV version (major in high nybble, minor in low nybble)
- 24h BYTE ETHDEV revision
- 25h BYTE TCPIP version (major in high nybble, minor in low nybble)
- 26h BYTE TCPIP revision
- 27h BYTE BWRPC version (major in high nybble, minor in low nybble)
- 28h BYTE BWRPC revision
- 29h BYTE BWNFS version (major in high nybble, minor in low nybble)
- 2Ah BYTE BWNFS revision
- 2Bh BYTE Telnet version (major in high nybble, minor in low nybble)
- 2Ch BYTE Telnet revision
- 2Dh BYTE NETBIOS version (major in high nybble, minor in low nybble)
- 2Eh BYTE NETBIOS revision
- Note: for each driver, if version=0, the driver is not installed or does
- not support the version check
- Format of BW-TCP server records:
- Offset Size Description (Table 01413)
- 00h BYTE number of server records following
- 01h N DWORDs internet addresses of servers
- --------y-213F-------------------------------
- INT 21 - Trusted Access - NB.SYS - GET STATE
- AH = 3Fh
- BX = file handle for device "$$NB$$NB"
- CX = 0002h (size of state)
- DS:DX -> buffer for state record (see #01414)
- Return: CF clear if successful
- AX = number of bytes actually read (0 if at EOF before call)
- CF set on error
- AX = error code (05h,06h) (see #01680 at AH=59h/BX=0000h)
- Program: Trusted Access is a security and access-control package by Lassen
- Software, Inc.; NB.SYS is a device driver to prevent the user from
- terminating CONFIG.SYS or AUTOEXEC.BAT with Ctrl-Break
- SeeAlso: AH=40h"NB.SYS",AX=4101h
- Format of Trusted Access state record:
- Offset Size Description (Table 01414)
- 00h BYTE 00h off, 01h on
- 01h BYTE keys being disabled
- bit 0: Ctrl-Break
- bit 1: SysReq
- bit 2: Ctrl and Alt
- bit 3: Ctrl-Alt-Del
- bit 7: all keys (overrides other bits)
- ----------213F-------------------------------
- INT 21 U - IFSHLP.SYS - GET ENTRY POINT
- AH = 3Fh
- BX = file handle for device "IFS$HLP$"
- CX = 0008h (size of buffer in bytes)
- DS:DX -> buffer for entry point record (see #01415)
- Return: CF clear if successful
- AX = number of bytes actually read (0 if at EOF before call)
- CF set on error
- AX = error code (05h,06h) (see #01680 at AH=59h/BX=0000h)
- Program: IFSHLP.SYS is a support driver for Microsoft Windows for Workgroups
- SeeAlso: AX=4402h"IFSHLP"
- Format of IFSHLP.SYS entry point record:
- Offset Size Description (Table 01415)
- 00h 4 BYTEs (call) required signature if called via IOCTL
- 70h E9h 34h 37h for Windows 3.11
- 70h E9h 35h 37h for Windows 3.11
- (ret) signature 34h 37h 70h EFh (Windows 3.11)
- (ret) signature 35h 37h 70h EFh (Windows95)
- 04h DWORD (ret) pointer to FAR call entry point (see #01416)
- (Table 01416)
- Call IFSHLP.SYS entry point with:
- STACK: WORD function number (00h-0Ch)
- 00h get ??? data
- 01h set interrupt intercepts (trap)
- 02h remove interrupt intercepts (untrap)
- 03h ??? LPT2
- 04h ??? LPT1
- 05h revector INT 2F to trap and remove trap for others
- 06h set ??? flag
- 07h clear ??? flag
- 08h get ??? flag word
- ---Windows 3.11 only---
- 09h ???
- 0Ah ???
- 0Bh ???
- 0Ch get ???
- ---if function 00h---
- Return: DX:AX -> ??? data (see #01417)
- BX destroyed
- ---if function 01h---
- STACK: DWORD new intercept (trap) address
- Return: AX = status
- 0000h successful
- 0001h failed (already set)
- DX = 0000h
- BX destroyed
- Note: the trap handler is called with a function number in BX, and the
- original BX on top of the stack; a null handler must perform a
- POP BX and an IRET
- ---if function 02h---
- Return: AX = status
- 0000h successful
- 0001h failed (not set)
- DX = 0000h
- BX destroyed
- ---if function 03h,04h---
- STACK: WORD ???
- Return: AX = 0000h
- DX = 0000h
- BX destroyed
- ---if function 05h---
- ???
- Return: BX destroyed
- ---if function 06h---
- Return: AX = 0001h and DX = 0000h if already set
- AX,DX unchanged if successful
- BX destroyed
- ---if function 07h---
- Return: AX = 0001h and DX = 0000h if not set
- AX,DX unchanged if successful
- BX destroyed
- ---if function 08h---
- Return: DX = 0000h
- AX = flags
- bit 0: set/cleared by functions 06h and 07h
- bit 1: trap is currently set (refer to functions 01h/02h)
- BX destroyed
- ---if function 09h---
- Return: AX = status
- 0000h successful
- 0001h failed (already called)
- BX destroyed
- ---if function 0Ah---
- STACK: WORD ???
- ???
- Return: BX destroyed
- ---if function 0Bh---
- Return: AX = status
- 0000h successful
- 0001h failed (not set)
- BX destroyed
- ---if function 0Ch---
- Return: AX = 0000h
- ES:BX -> ??? data
- ---if function > 0Ch---
- Return: AX = 0001h
- DX = 0000h
- BX destroyed
- Format of IFSHLP ??? data:
- Offset Size Description (Table 01417)
- 00h DWORD -> DOS Swappable Data Area (see #01687,#01689)
- 02h WORD ??? offset in DOS data segment?
- 04h WORD offset in DOS data segment of current-PSP WORD
- 06h WORD ???
- 08h WORD ???
- 0Ah WORD ???
- 0Ch DWORD -> DOS List of Lists (see #01627)
- 10h ???
- SeeAlso: #01416
- --------v-213F--BXFEB0-----------------------
- INT 21 - VIRUS - "KYZ/LieWait" - INSTALLATION CHECK
- AH = 3Fh
- BX = FEB0h
- Return: BX = 1212h if resident
- SeeAlso: AX=3032h"VIRUS",AX=4BF1h"VIRUS"
- --------D-2140-------------------------------
- INT 21 - DOS 2+ - "WRITE" - WRITE TO FILE OR DEVICE
- AH = 40h
- BX = file handle
- CX = number of bytes to write
- DS:DX -> data to write
- Return: CF clear if successful
- AX = number of bytes actually written
- CF set on error
- AX = error code (05h,06h) (see #01680 at AH=59h/BX=0000h)
- Notes: if CX is zero, no data is written, and the file is truncated or
- extended to the current position
- data is written beginning at the current file position, and the file
- position is updated after a successful write
- for FAT32 drives, the file must have been opened with AX=6C00h with
- the "extended size" flag in order to expand the file beyond 2GB;
- otherwise the write will fail with error code 0005h (access denied)
- the usual cause for AX < CX on return is a full disk
- BUG: a write of zero bytes will appear to succeed when it actually failed
- if the write is extending the file and there is not enough disk
- space for the expanded file (DOS 5.0-6.0); one should therefore check
- whether the file was in fact extended by seeking to 0 bytes from
- the end of the file (INT 21/AX=4202h/CX=0000h/DX=0000h)
- under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
- SeeAlso: AH=28h,AH=3Fh"DOS",AH=93h,INT 2F/AX=1109h
- --------G-2140-------------------------------
- INT 21 - Turbo Debug HARDWARE BREAKPOINTS - SEND CMD TO HARDWARE BRKPNT DRIVER
- AH = 40h
- BX = handle for character device "TDHDEBUG"
- CX = number of bytes to write
- DS:DX -> hardware breakpoint command (see #01418)
- Return: CF clear if successful
- AX = number of bytes actually written
- CF set on error
- AX = error code (05h,06h) (see #01680 at AH=59h/BX=0000h)
- Note: results are retrieved by reading from the device
- SeeAlso: AH=3Fh"Turbo Debug"
- Format of Turbo Debugger hardware breakpoint commands:
- Offset Size Description (Table 01418)
- 00h BYTE command code
- 00h install interrupt vectors
- 01h get hardware capabilities
- 02h enable hardware breakpoints
- 03h disable hardware breakpoints
- 04h set hardware breakpoint
- 05h clear hardware breakpoint
- 06h set I/O base address and reset hardware
- 07h restore interrupt vectors
- ---command code 00h---
- 01h DWORD pointer to Turbo Debugger entry point to be jumped to on
- hardware breakpoint; call with CPU state the same as on
- the breakpoint except for pushing AX and placing an entry
- code (FFh if breakout button or breakpoint handle) in AH
- ---command code 04h---
- 01h BYTE breakpoint type
- 00h memory read
- 01h memory write
- 02h memory read/write
- 03h I/O read
- 04h I/O write
- 05h I/O read/write
- 06h instruction fetch
- 02h BYTE address matching mode (see #01419)
- 03h DWORD 32-bit linear low address
- 07h DWORD 32-bit linear high address
- 0Bh WORD pass count
- 0Dh BYTE data size (01h, 02h, or 04h)
- 0Eh BYTE source of matched bus cycle (01h CPU, 02h DMA, 03h either)
- 0Fh BYTE data-matching mode (see #01419)
- 10h DWORD low data value
- 14h DWORD high data value
- 18h DWORD data mask specifying which bits of the data are tested
- ---command code 05h---
- 01h BYTE handle of breakpoint to clear (breakpoint returned from command
- 04h)
- ---command code 06h---
- 01h WORD base address of hardware debugger board
- (Table 01419)
- Values for Turbo Debugger address/data matching mode:
- 00h match any
- 01h equal to test value
- 02h different from test value
- 03h above test value
- 04h below test value
- 05h below or equal to test value
- 06h above or equal to test value
- 07h within inclusive range
- 08h outside specified range
- --------N-2140-------------------------------
- INT 21 - PC/TCP IPCUST.SYS - WRITE CONFIGURATION DATA
- AH = 40h
- BX = handle for character device "$IPCUST"
- CX = number of bytes to write
- DS:DX -> buffer for configuration data (AH=3Fh"IPCUST")
- Return: CF clear if successful
- AX = number of bytes actually written
- CF set on error
- AX = error code (05h,06h) (see #01680 at AH=59h/BX=0000h)
- Notes: if less than the entire data is read or written, the next read/write
- continues where the previous one ended; IOCTL calls AX=4402h and
- AX=4403h both reset the location at which the next operation starts
- to zero
- the data pointer is also reset to zero if the previous read or write
- reached or exceeded the end of the data, when the current function
- is read and the previous was write, or vice versa
- v2.1+ uses a new configuration method, but allows the installation
- of IPCUST.SYS for backward compatibility with other software which
- must read the PC/TCP configuration
- SeeAlso: AH=3Fh"IPCUST",AX=4402h"IPCUST"
- --------y-2140-------------------------------
- INT 21 U - Trusted Access - NB.SYS - SET STATE
- AH = 40h
- BX = handle for character device "$$NB$$NB"
- DS:DX -> state record (see #01414)
- CX ignored
- Return: CF clear if successful
- AX = number of bytes actually written
- CF set on error
- AX = error code (05h,06h) (see #01680 at AH=59h/BX=0000h)
- Program: Trusted Access is a security and access-control package by Lassen
- Software, Inc.; NB.SYS is a device driver to prevent the user from
- terminating CONFIG.SYS or AUTOEXEC.BAT with Ctrl-Break
- SeeAlso: AH=3Fh"NB.SYS"
- --------j-214000BX0002-----------------------
- INT 21 - FARTBELL.EXE - INSTALLATION CHECK
- AX = 4000h
- BX = 0002h
- CX = 0000h
- DS:DX = 0000h:0000h
- Return: CF clear if installed
- AX = CS of resident code
- Program: FARTBELL is a joke program by Guenther Thiele which makes various
- noises when programs output a bell
- SeeAlso: AX=4001h
- --------j-214001BX0002-----------------------
- INT 21 - FARTBELL.EXE - FORCE NOISE
- AX = 4001h
- BX = 0002h
- CX = 0000h
- DS:DX = 0000h:0000h
- Program: FARTBELL is a joke program by Guenther Thiele which makes various
- noises when programs output a bell
- SeeAlso: AX=4000h
- --------D-2141-------------------------------
- INT 21 - DOS 2+ - "UNLINK" - DELETE FILE
- AH = 41h
- DS:DX -> ASCIZ filename (no wildcards, but see notes)
- CL = attribute mask for deletion (server call only, see notes)
- Return: CF clear if successful
- AX destroyed (DOS 3.3) AL seems to be drive of deleted file
- CF set on error
- AX = error code (02h,03h,05h) (see #01680 at AH=59h/BX=0000h)
- Notes: (DOS 3.1+) wildcards are allowed if invoked via AX=5D00h, in which case
- the filespec must be canonical (as returned by AH=60h), and only
- files matching the attribute mask in CL are deleted
- DR DOS 5.0-6.0 returns error code 03h if invoked via AX=5D00h; DR DOS
- 3.41 crashes if called via AX=5D00h with wildcards
- DOS does not erase the file's data; it merely becomes inaccessible
- because the FAT chain for the file is cleared
- deleting a file which is currently open may lead to filesystem
- corruption. Unless SHARE is loaded, DOS does not close the handles
- referencing the deleted file, thus allowing writes to a nonexistant
- file.
- under DR DOS and DR Multiuser DOS, this function will fail if the file
- is currently open
- under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
- BUG: DR DOS 3.41 crashes if called via AX=5D00h
- SeeAlso: AH=13h,AX=4301h,AX=4380h,AX=5D00h,AH=60h,AX=7141h,AX=F244h
- SeeAlso: INT 2F/AX=1113h
- --------y-214101DXFFFE-----------------------
- INT 21 - SoftLogic Data Guardian - ???
- AX = 4101h
- DX = FFFEh
- Return: AX = 0000h if installed
- Note: resident code sets several internal variables on this call
- SeeAlso: AH=3Fh"NB.SYS",INT 16/AX=FFA3h/BX=0000h
- --------D-2142-------------------------------
- INT 21 - DOS 2+ - "LSEEK" - SET CURRENT FILE POSITION
- AH = 42h
- AL = origin of move
- 00h start of file
- 01h current file position
- 02h end of file
- BX = file handle
- CX:DX = (signed) offset from origin of new file position
- Return: CF clear if successful
- DX:AX = new file position in bytes from start of file
- CF set on error
- AX = error code (01h,06h) (see #01680 at AH=59h/BX=0000h)
- Notes: for origins 01h and 02h, the pointer may be positioned before the
- start of the file; no error is returned in that case (except under
- Windows NT), but subsequent attempts at I/O will produce errors
- if the new position is beyond the current end of file, the file will
- be extended by the next write (see AH=40h); for FAT32 drives, the
- file must have been opened with AX=6C00h with the "extended size"
- flag in order to expand the file beyond 2GB
- BUG: using this method to grow a file from zero bytes to a very large size
- can corrupt the FAT in some versions of DOS; the file should first
- be grown from zero to one byte and then to the desired large size
- SeeAlso: AH=24h,INT 2F/AX=1228h
- --------v-214203-----------------------------
- INT 21 - VIRUS - "Shake" - INSTALLATION CHECK
- AX = 4203h
- Return: AX = 1234h if resident
- SeeAlso: AX=3DFFh,AX=4243h
- --------v-214243-----------------------------
- INT 21 - VIRUS - "Invader" - INSTALLATION CHECK
- AX = 4243h
- Return: AX = 5678h if resident
- SeeAlso: AX=4203h,AX=44A0h,AX=4B04h
- --------D-214300-----------------------------
- INT 21 - DOS 2+ - GET FILE ATTRIBUTES
- AX = 4300h
- DS:DX -> ASCIZ filename
- Return: CF clear if successful
- CX = file attributes (see #01420)
- AX = CX (DR DOS 5.0)
- CF set on error
- AX = error code (01h,02h,03h,05h) (see #01680 at AH=59h)
- Notes: under the FlashTek X-32 DOS extender, the filename pointer is in DS:EDX
- under DR DOS 3.41 and 5.0, attempts to change the subdirectory bit are
- simply ignored without an error
- BUG: Windows for Workgroups returns error code 05h (access denied) instead
- of error code 02h (file not found) when attempting to get the
- attributes of a nonexistent file. This causes open() with O_CREAT
- and fopen() with the "w" mode to fail in Borland C++.
- SeeAlso: AX=4301h,AX=4310h,AX=7143h,AH=B6h,INT 2F/AX=110Fh,INT 60/DI=0517h
- --------D-214301-----------------------------
- INT 21 - DOS 2+ - "CHMOD" - SET FILE ATTRIBUTES
- AX = 4301h
- CX = new file attributes (see #01420)
- DS:DX -> ASCIZ filename
- Return: CF clear if successful
- AX destroyed
- CF set on error
- AX = error code (01h,02h,03h,05h) (see #01680 at AH=59h)
- Notes: will not change volume label or directory attribute bits, but will
- change the other attribute bits of a directory (the directory
- bit must be cleared to successfully change the other attributes of a
- directory, but the directory will not be changed to a normal file as
- a result)
- MS-DOS 4.01 reportedly closes the file if it is currently open
- for security reasons, the Novell NetWare execute-only bit can never
- be cleared; the file must be deleted and recreated
- under the FlashTek X-32 DOS extender, the filename pointer is in DS:EDX
- DOS 5.0 SHARE will close the file if it is currently open in sharing-
- compatibility mode, otherwise a sharing violation critical error is
- generated if the file is currently open
- DR DOS 3.41/5.0 will silently ignore attempts to change the 'directory'
- attribute bit
- SeeAlso: AX=4300h,AX=4311h,AX=7143h,INT 2F/AX=110Eh
- Bitfields for file attributes:
- Bit(s) Description (Table 01420)
- 7 shareable (Novell NetWare)
- 7 pending deleted files (Novell DOS, OpenDOS)
- 6 unused
- 5 archive
- 4 directory
- 3 volume label
- execute-only (Novell NetWare)
- 2 system
- 1 hidden
- 0 read-only
- --------D-214302-----------------------------
- INT 21 - MS-DOS 7 - GET COMPRESSED FILE SIZE
- AX = 4302h
- DS:DX -> ASCIZ pathname for file or directory
- Return: CF clear if successful
- ??? = compressed size of file/directory in bytes
- CF set on error
- AX = error code
- Note: on volumes which do not support compression, the returned size is the
- actual file size rounded up to the next cluster boundary
- SeeAlso: AH=71h,AH=72h
- --------O-214302-----------------------------
- INT 21 - DR DOS 3.41+ internal - GET ACCESS RIGHTS
- AX = 4302h
- DS:DX -> ASCIZ pathname
- Return: CF clear if successful
- CX = access rights (see #01421)
- AX = CX (DR DOS 5.0)
- CF set on error
- AX = error code
- Desc: Determine which operations the calling program may perform on a
- specified file without being required to provide a password.
- Notes: this protection scheme has been coordinated on all current Digital
- Research/Novell operating systems (DR DOS 3.41+, DRMDOS 5.x, and
- FlexOS 2+)
- this function is documented in DR DOS 6.0 and corresponds to the
- "Get/Set File Attributes" function, subfunction 2, documented in
- Concurrent DOS.
- only FlexOS actually uses the "execution" bits; DR DOS 3.41+ treats
- them as "read" bits.
- DR DOS 3.41-5.x only use bits 0-3. Only DR DOS 6.0 using a
- DRMDOS 5.x security system allowing for users and groups uses bits
- 4-11.
- SeeAlso: AX=4303h,#01354 at INT 21/AH=11h
- Bitfields for DR DOS file access rights:
- Bit(s) Description (Table 01421)
- 0 owner delete requires password
- 1 owner execution requires password (FlexOS)
- 2 owner write requires password
- 3 owner read requires password
- 4 group delete requires password
- 5 group execution requires password (FlexOS)
- 6 group write requires password
- 7 group read requires password
- 8 world delete requires password
- 9 world execution requires password (FlexOS)
- 10 world write requires password
- 11 world read requires password
- --------O-214303-----------------------------
- INT 21 - DR DOS 3.41+ internal - SET ACCESS RIGHTS AND PASSWORD
- AX = 4303h
- CX = access rights
- bits 11-0: access rights (see #01421)
- bit 15: new password is to be set
- DS:DX -> ASCIZ pathname
- [DTA] = new password if CX bit 15 is set (blank-padded to 8 characters)
- Return: CF clear if successful
- CF set on error
- AX = error code
- Notes: if the file is already protected, the old password must be added after
- the pathname, separated by a ";". As with all password handling in
- DR DOS, the old password is processed by the kernel, not any
- applications or utilities making the call.
- this function is documented in DR DOS 6.0 and corresponds to the
- "Get/Set File Attributes" function, subfunction 3, documented in
- Concurrent DOS.
- SeeAlso: AH=0Fh,AH=17h,AX=4302h"DR DOS",AX=4305h,AX=4454h
- --------O-214304-----------------------------
- INT 21 U - DR DOS 5.0-6.0 internal - GET ENCRYPTED PASSWORD
- AX = 4304h
- DS:DX -> ASCIZ filename
- ???
- Return: CF clear if successful
- CX = AX = 0000h if no password assigned to file
- CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- Note: this function is only supported by DR DOS 5.0 and 6.0 and DRMDOS 5.1
- SeeAlso: AX=4303h,AX=4305h
- --------O-214305-----------------------------
- INT 21 U - DR DOS 5.0-6.0 internal - SET EXTENDED FILE ATTRIBUTES
- AX = 4305h
- DS:DX -> ASCIZ filename
- ???
- Return: CF clear if successful
- CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- Desc: this function allows the extended attributes, and optionally the
- encrypted password, of a file to be set.
- Note: this function is only supported by DR DOS 5.0 and 6.0 and DRMDOS 5.1
- SeeAlso: AX=4304h,AX=4311h
- --------O-214306-----------------------------
- INT 21 O - DR DOS 6.0 - GET FILE OWNER
- AX = 4306h
- DS:DX -> ASCIZ filename
- Return: CF clear if successful
- AX = CX = value set with AX=4307h
- CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- Note: no longer supported by Novell DOS 7 / OpenDOS
- SeeAlso: AX=4307h
- --------O-214307-----------------------------
- INT 21 O - DR DOS 6.0 - SET FILE OWNER
- AX = 4307h
- CX = ??? (owner identification number?)
- DS:DX -> ASCIZ filename
- Return: CF clear if successful
- CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- Note: no longer supported by Novell DOS 7 / OpenDOS
- SeeAlso: AX=4306h
- --------N-214310-----------------------------
- INT 21 - Banyan VINES 2.1+ - GET EXTENDED FILE ATTRIBUTES
- AX = 4310h
- DS:DX -> ASCIZ filename
- Return: CF clear if successful
- CH = attributes (see #01422)
- CF set on error
- AX = error code (01h,02h,03h,05h) (see #01680 at AH=59h/BX=0000h)
- Note: the filename may be a directory but must be on a VINES file service
- SeeAlso: AX=4300h,AX=4311h,AH=B6h,INT 2F/AX=110Fh
- --------N-214311-----------------------------
- INT 21 - Banyan VINES 2.1+ - SET EXTENDED FILE ATTRIBUTES
- AX = 4311h
- CH = new attributes (see #01422)
- DS:DX -> ASCIZ filename
- Return: CF clear if successful
- CF set on error
- AX = error code (01h,02h,03h,05h) (see #01680 at AH=59h/BX=0000h)
- Note: the filename may be a directory but must be on a VINES file service
- SeeAlso: AX=4301h,AX=4305h,AX=4310h,INT 2F/AX=110Eh
- Bitfields for VINES extended file attributes:
- Bit(s) Description (Table 01422)
- 7 unused
- 6 shareable
- 5 execute-only
- 4-0 unused
- --------u-214321BX0000-----------------------
- INT 21 - Q87, Q387 - INSTALLATION CHECK
- AX = 4321h
- BX = 0000h
- EAX = 87654321h (entire EAX value is required, not just AX)
- Return: EAX = 12345678h if installed
- Program: Q387 (renamed to Q87 as of v3.7) is a math coprocessor emulator from
- Quickware
- Note: this function is available only in virtual-86 mode in older versions;
- newer versions also provide it in MS Windows 16- and 32-bit protected
- mode
- SeeAlso: AX=4321h/BX=0001h,AX=4321h/BX=0002h,INT 67/AX=4321h
- --------u-214321BX0001-----------------------
- INT 21 - Q87, Q387 - ENABLE EMULATOR
- AX = 4321h
- BX = 0001h
- EAX = 87654321h (entire EAX value is required, not just AX)
- Desc: enable the emulator by setting the CPU MSW's EM bit and updating
- the BIOS equipment list
- Note: this function is available only in virtual-86 mode in older versions;
- newer versions also provide it in MS Windows 16- and 32-bit protected
- mode
- SeeAlso: AX=4321h/BX=0000h,AX=4321h/BX=0002h
- --------u-214321BX0002-----------------------
- INT 21 - Q87, Q387 - DISABLE EMULATOR
- AX = 4321h
- BX = 0002h
- EAX = 87654321h (entire EAX value is required, not just AX)
- Desc: disable the emulator by clearing the CPU MSW's EM bit and updating
- the BIOS equipment list
- Note: this function is available only in virtual-86 mode in older versions;
- newer versions also provide it in MS Windows 16- and 32-bit protected
- mode
- SeeAlso: AX=4321h/BX=0000h,AX=4321h/BX=0001h
- --------O-214380-----------------------------
- INT 21 - Novell DOS 7 - UNDELETE PENDING DELETE FILE
- AX = 4380h
- ???
- Return: ???
- SeeAlso: AH=41h,AX=4381h
- --------O-214381-----------------------------
- INT 21 - Novell DOS 7 - PURGE PENDING DELETE FILE
- AX = 4381h
- ???
- Return: ???
- SeeAlso: AH=41h,AX=4380h
- --------D-2143FFBP5053-----------------------
- INT 21 - MS-DOS 7.20 (Win98) - EXTENDED-LENGTH FILENAME OPERATIONS
- AX = 43FFh
- BP = 5053h ('PS')
- CL = function
- 39h "mkdir" create directory
- DS:DX -> ASCIZ pathname
- 56h rename file
- DS:DX -> ASCIZ filename of existing file (no wildcards)
- ES:DI -> ASCIZ new filename (no wildcards)
- Return: CF clear if successful
- AX destroyed
- CF set on error
- AX = error code (03h,05h) (see #01680 at AH=59h/BX=0000h)
- Note: these functions are equivalent to INT 21/AH=39h and INT 21/AH=56h,
- but with a maximum path length of 128 characters instead of 67;
- unlike INT 21/AX=71xxh, these functions are available under bare
- DOS and not just in a Windows DOS box
- SeeAlso: AH=39h,AH=56h,AX=7139h,AX=7156h
- --------!---Section--------------------------
- Interrupt List, part 7 of 18
- Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
- --------D-214400-----------------------------
- INT 21 - DOS 2+ - IOCTL - GET DEVICE INFORMATION
- AX = 4400h
- BX = handle
- Return: CF clear if successful
- DX = device information word (see #01423)
- AX destroyed
- CF set on error
- AX = error code (01h,05h,06h) (see #01680 at AH=59h/BX=0000h)
- Notes: value in DH corresponds to high byte of device driver's attribute word
- if handle refers to a character device
- Novell NetWare reportedly does not return a drive number in bits 5-0
- for a disk file
- this function was not supported by Digital Research's DOS-Plus
- SeeAlso: AX=4401h,INT 2F/AX=122Bh
- Bitfields for device information word:
- Bit(s) Description (Table 01423)
- character device
- 14 device driver can process IOCTL requests (see AX=4402h"DOS 2+")
- 13 output until busy supported
- 11 driver supports OPEN/CLOSE calls
- 8 ??? (set by MS-DOS 6.2x KEYB)
- 7 set (indicates device)
- 6 EOF on input
- 5 raw (binary) mode
- 4 device is special (uses INT 29)
- 3 clock device
- 2 NUL device
- 1 standard output
- 0 standard input
- disk file
- 15 file is remote (DOS 3.0+)
- 14 don't set file date/time on closing (DOS 3.0+)
- 11 media not removable
- 8 (DOS 4 only) generate INT 24 if no disk space on write or read past
- end of file
- 7 clear (indicates file)
- 6 file has not been written
- 5-0 drive number (0 = A:)
- SeeAlso: INT 29
- --------D-214401-----------------------------
- INT 21 - DOS 2+ - IOCTL - SET DEVICE INFORMATION
- AX = 4401h
- BX = handle (must refer to character device)
- DX = device information word (see #01423)
- (DH must be zero for DOS version prior to 6.x)
- Return: CF clear if successful
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Note: this function was not supported by Digital Research's DOS-Plus
- SeeAlso: AX=4400h,INT 2F/AX=122Bh
- --------D-214402-----------------------------
- INT 21 - DOS 2+ - IOCTL - READ FROM CHARACTER DEVICE CONTROL CHANNEL
- AX = 4402h
- BX = file handle referencing character device
- CX = number of bytes to read
- DS:DX -> buffer
- Return: CF clear if successful
- AX = number of bytes actually read
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Notes: format of data is driver-specific
- (also see separate entries below for some specific cases)
- this function was not supported by Digital Research's DOS-Plus
- SeeAlso: AX=4400h,AX=4403h"DOS",AX=4404h"DOS",INT 2F/AX=122Bh
- --------N-214402-----------------------------
- INT 21 - Network Driver Interface Specification (NDIS) 2.0.1 - PROTOCOL MANAGER
- AX = 4402h
- BX = file handle for device "PROTMAN$"
- CX = 000Eh (size of request block)
- DS:DX -> request block (see #01424,#01425,#01426,#01427,#01428,#01432,#01433)
- Return: CF clear if successful
- AX = number of bytes actually read
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- SeeAlso: AX=4402h"FTPSOFT"
- Format of NDIS request block for GetProtocolManagerInfo:
- Offset Size Description (Table 01424)
- 00h WORD 01h
- 02h WORD returned status (see #01434)
- 04h DWORD returned pointer to structure representing parsed user config
- 08h DWORD unused
- 0Ch WORD returned BCD version of NDIS on which Protocol Manager is based
- SeeAlso: #01425,#01426,#01427,#01428,#01429,#01430,#01431,#01432,#01433
- Format of NDIS request block for RegisterModule:
- Offset Size Description (Table 01425)
- 00h WORD 02h
- 02h WORD returned status (see #01434)
- 04h DWORD pointer to module's common characteristics table (see #01435)
- 08h DWORD pointer to list of modules to which the module is to be bound
- 0Ch WORD unused
- SeeAlso: #01424,#01426,#01427,#01428,#01429,#01430,#01431,#01432,#01433
- Format of NDIS request block for BindAndStart:
- Offset Size Description (Table 01426)
- 00h WORD 03h
- 02h WORD returned status (see #01434)
- 04h DWORD caller's virtual address in FailingModules structure
- 08h DWORD unused
- 0Ch WORD unused
- SeeAlso: #01424,#01425,#01427,#01428,#01429,#01430,#01431,#01432,#01433
- Format of NDIS request block for GetProtocolManagerLinkage:
- Offset Size Description (Table 01427)
- 00h WORD 04h
- 02h WORD returned status (see #01434)
- 04h DWORD returned dispatch point
- 08h DWORD unused
- 0Ch WORD returned protocol manager DS
- Note: the dispatch point may be called as follows instead of using this IOCTL
- STACK: WORD protocol manager DS
- DWORD pointer to request block
- Return: AX = returned status
- STACK popped
- SeeAlso: #01424,#01425,#01426,#01428,#01429,#01430,#01431,#01432,#01433
- Format of NDIS request block for GetProtocolIniPath:
- Offset Size Description (Table 01428)
- 00h WORD 05h
- 02h WORD returned status (see #01434)
- 04h DWORD pointer to a buffer for the ASCIZ pathname of PROTOCOL.INI
- 08h DWORD unused
- 0Ch WORD buffer length
- SeeAlso: #01424,#01425,#01426,#01427,#01429,#01430,#01431,#01432,#01433
- Format of NDIS request block for RegisterProtocolManagerInfo:
- Offset Size Description (Table 01429)
- 00h WORD 06h
- 02h WORD returned status (see #01434)
- 04h DWORD pointer to structure containing parsed user config file
- 08h DWORD unused
- 0Ch WORD length of structure
- SeeAlso: #01424,#01425,#01426,#01427,#01428,#01430,#01431,#01432,#01433
- Format of NDIS request block for InitAndRegister:
- Offset Size Description (Table 01430)
- 00h WORD 07h
- 02h WORD returned status (see #01434)
- 04h DWORD unused
- 08h DWORD poitner to ASCIZ name of the module to be prebind initialized
- 0Ch WORD unused
- SeeAlso: #01424,#01425,#01426,#01427,#01428,#01429,#01431,#01432,#01433
- Format of NDIS request block for UnbindAndStop:
- Offset Size Description (Table 01431)
- 00h WORD 08h
- 02h WORD returned status (see #01434)
- 04h DWORD failing modules as for BindAndStart
- 08h DWORD if not 0000h:0000h, pointer to ASCIZ name of module to unbind
- if 0000h:0000h, terminate a set of previously dynamically
- bound protocol modules
- 0Ch WORD unused
- SeeAlso: #01424,#01425,#01426,#01427,#01428,#01429,#01430,#01432,#01433
- Format of NDIS request block for BindStatus:
- Offset Size Description (Table 01432)
- 00h WORD 09h
- 02h WORD returned status (see #01434)
- 04h DWORD must be 0000h:0000h
- on return, points to root tree
- 08h DWORD 0000h:0000h
- 0Ch WORD unused under DOS
- SeeAlso: #01424,#01425,#01426,#01427,#01428,#01429,#01430,#01431,#01433
- Format of NDIS request block for RegisterStatus:
- Offset Size Description (Table 01433)
- 00h WORD 0Ah
- 02h WORD returned status (0000h, 0008h, 002Ch) (see #01434)
- 04h DWORD 0000h:0000h
- 08h DWORD pointer to 16-byte ASCIZ module name
- 0Ch WORD 0000h
- Note: not supported by the 10NET v5.0 PROTMAN$ driver
- SeeAlso: #01424,#01425,#01426,#01427,#01428,#01429,#01430,#01431,#01432
- (Table 01434)
- Values for NDIS status code:
- 0000h success
- 0001h wait for release--protocol has retained control of the data buffer
- 0002h request queued
- 0003h frame not recognized
- 0004h frame rejected
- 0005h frame should be forwarded
- 0006h out of resource
- 0007h invalid parameter
- 0008h invalid function
- 0009h not supported
- 000Ah hardware error
- 000Bh transmit error
- 000Ch unrecognized destination
- 000Dh buffer too small
- 0020h already started
- 0021h binding incomplete
- 0022h driver not initialized
- 0023h hardware not found
- 0024h hardware failure
- 0025h configuration failure
- 0026h interrupt conflict
- 0027h MAC incompatible
- 0028h initialization failed
- 0029h no binding
- 002Ah network may be disconnected
- 002Bh incompatible OS version
- 002Ch already registered
- 002Dh path not found
- 002Eh insufficient memory
- 002Fh info not found
- 00FFh general failure
- F000h-FFFFh reserved for vendor-specific codes, treated as general failure
- Format of NDIS common characteristics table:
- Offset Size Description (Table 01435)
- 00h WORD size of table in bytes
- 02h BYTE NDIS major version
- 03h BYTE NDIS minor version
- 04h WORD reserved
- 06h BYTE module major version
- 07h BYTE module minor version
- 08h DWORD module function flag bits
- bit 0: binding at upper boundary supported
- bit 1: binding at lower boundary supported
- bit 2: dynamically bound
- bits 3-31 reserved, must be 0
- 0Ch 16 BYTEs ASCIZ module name
- 1Ch BYTE upper boundary protocol level (see #01436)
- 1Dh BYTE upper boundary interface type
- for MACs: 1 = MAC
- for data links and transports: to be defined
- for session: 1 = NCB
- any level: 0 = private (ISV-defined)
- 1Eh BYTE lower boundary protocol level (see #01436)
- 1Fh BYTE lower boundary interface type
- same as offset 1Dh
- 20h WORD module ID filled in by protocol manager
- 22h WORD module DS
- 24h DWORD system request entry point
- 28h DWORD pointer to service-specific characteristics (see #01438,#01440)
- 0000h:0000h if none
- 2Ch DWORD pointer to service-specific status, or 0000h:0000h if none
- (see #01441)
- 30h DWORD pointer to upper dispatch table (see #01437)
- 0000h:0000h if none
- 34h DWORD pointer to lower dispatch table (see #01437)
- 0000h:0000h if none
- 38h 2 DWORDs reserved, must be 0
- Note: for compatibility with NDIS 1.x.x, a major version of 00h is
- interpreted as 01h
- (Table 01436)
- Values for NDIS boundary protocol level:
- 00h physical
- 01h Media Access Control
- 02h Data link
- 03h network
- 04h transport
- 05h session
- FFh not specified
- Format of NDIS dispatch table:
- Offset Size Description (Table 01437)
- 00h DWORD -> common characteristics table (see #01435)
- 04h 4 BYTEs ???
- 08h DWORD -> ??? function (called with 12 bytes of stack arguments)
- 0Ch DWORD -> ??? function (called with 10 bytes of stack arguments)
- 10h DWORD -> ??? function (called with 16 bytes of stack arguments)
- 14h DWORD -> ??? function (called with 4 bytes of stack arguments)
- 18h DWORD -> ??? function (called with 18 bytes of stack arguments)
- 1Ch DWORD -> ??? function (called with 12 bytes of stack arguments)
- Format of MAC Service-Specific Characteristics Table:
- Offset Size Description (Table 01438)
- 00h WORD length of table in bytes
- 02h 16 BYTEs ASCIZ MAC type name, "802.3", "802.4", "802.5", "802.6", "DIX",
- "DIX+802.3", "APPLETALK", "ARCNET", "FDDI", "SDLC", "BSC",
- "HDLC", or "ISDN"
- 12h WORD length of station addresses in bytes
- 14h 16 BYTEs permanent station address
- 24h 16 BYTEs current station address
- 34h DWORD current functional adapter address (00000000h if none)
- 38h DWORD pointer to multicast address list
- 3Ch DWORD link speed in bits/sec
- 40h DWORD service flags (see #01439)
- 44h WORD maximum frame size which may be both sent and received
- 46h DWORD total transmit buffer capacity in bytes
- 4Ah WORD transmit buffer allocation block size in bytes
- 4Ch DWORD total receive buffer capacity in bytes
- 50h WORD receive buffer allocation block size in bytes
- 52h 3 BYTEs IEEE vendor code
- 55h BYTE vendor adapter code
- 56h DWORD pointer to ASCIZ vendor adapter description
- 5Ah WORD IRQ used by adapter
- 5Ch WORD transmit queue depth
- 5Eh WORD maximum supported number of data blocks in buffer descriptors
- 60h N BYTEs vendor-specific info
- SeeAlso: #01440
- Bitfields for service flags:
- Bit(s) Description (Table 01439)
- 0 supports broadcast
- 1 supports multicast
- 2 supports functional/group addressing
- 3 supports promiscuous mode
- 4 station address software settable
- 5 statistics always current
- 6 supports InitiateDiagnostics
- 7 supports loopback
- 8 MAC does primarily ReceiveChain indications instead of ReceiveLookahead
- indications
- 9 supports IBM source routing
- 10 supports MAC reset
- 11 supports Open/Close adapter
- 12 supports interrupt request
- 13 supports source routing bridge
- 14 supports GDT virtual addresses (OS/2 version)
- 15 multiple TransferDatas allowed durign a single indication
- 16 MAC normally sets FrameSize = 0 in ReceiveLookahead
- 17-31 reserved, must be 0
- Format of NetBIOS Service-Specific Characteristics Table:
- Offset Size Description (Table 01440)
- 00h WORD length of table in bytes
- 02h 16 BYTEs ASCIZ type name of NetBIOS module
- 12h WORD NetBIOS module code
- 14h N BYTEs vendor-specific info
- SeeAlso: #01438
- Format of MAC Service-Specific Status Table:
- Offset Size Description (Table 01441)
- 00h WORD length of table in bytes
- 02h DWORD seconds since 0:00 1/1/70 when diagnostics last run
- (FFFFFFFFh = never)
- 06h DWORD MAC status bits (see #01442)
- 0Ah WORD current packet filter flags (see #01443)
- 0Ch DWORD pointer to media-specific status table or 0000h:0000h
- 10h DWORD seconds past 0:00 1/1/70 of last ClearStatistics
- 14h DWORD total frames received (FFFFFFFFh = not counted)
- 18h DWORD frames with CRC error (FFFFFFFFh = not counted)
- 1Ch DWORD total bytes received (FFFFFFFFh = not counted)
- 20h DWORD frames discarded--no buffer space (FFFFFFFFh = not counted)
- 24h DWORD multicast frames received (FFFFFFFFh = not counted)
- 28h DWORD broadcast frames received (FFFFFFFFh = not counted)
- 2Ch DWORD frames with errors (FFFFFFFFh = not counted)
- 30h DWORD overly large frames (FFFFFFFFh = not counted)
- 34h DWORD frames less than minimum size (FFFFFFFFh = not counted)
- 38h DWORD multicast bytes received (FFFFFFFFh = not counted)
- 3Ch DWORD broadcast bytes received (FFFFFFFFh = not counted)
- 40h DWORD frames discarded--hardware error (FFFFFFFFh = not counted)
- 44h DWORD total frames transmitted (FFFFFFFFh = not counted)
- 48h DWORD total bytes transmitted (FFFFFFFFh = not counted)
- 4Ch DWORD multicast frames transmitted (FFFFFFFFh = not counted)
- 50h DWORD broadcast frames transmitted (FFFFFFFFh = not counted)
- 54h DWORD broadcast bytes transmitted (FFFFFFFFh = not counted)
- 58h DWORD multicast bytes transmitted (FFFFFFFFh = not counted)
- 5Ch DWORD frames not transmitted--timeout (FFFFFFFFh = not counted)
- 60h DWORD frames not transmitted--hardware error (FFFFFFFFh = not countd)
- 64h N BYTEs vendor-specific info
- Bitfields for MAC status bits:
- Bit(s) Description (Table 01442)
- 0-2 operational status
- 000 hardware not installed
- 001 hardware failed startup diagnostics
- 010 hardware configuration problem
- 011 hardware fault
- 100 operating marginally due to soft faults
- 101 reserved
- 110 reserved
- 111 hardware fully operational
- 3 MAC bound
- 4 MAC open
- 5 diagnostics in progress
- 6-31 reserved
- Bitfields for packet filter flags:
- Bit(s) Description (Table 01443)
- 0 directed/multicast or group/functional
- 1 broadcast
- 2 promiscuous
- 3 all source routing
- 4-15 reserved, must be zero
- --------D-214402-----------------------------
- INT 21 U - MS-DOS 7.0+ - CONFIG$ device - GET CONFIGURATION INFORMATION
- AX = 4402h
- BX = file handle for character device "CONFIG$"
- CX = number of bytes to read (at least 5)
- DS:DX -> buffer for ??? data (see #01444)
- Return: CF clear if successful
- AX = number of bytes actually read
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- SeeAlso: AX=4403h"CONFIG$"
- Format of MS-DOS 7.0 CONFIG$ ??? data:
- Offset Size Description (Table 01444)
- 00h WORD ??? (0000h)
- 02h WORD ??? (0000h or value read from IO.SYS segment 70h)
- 04h BYTE ??? (value read from IO.SYS segment 70h)
- --------I-214402-----------------------------
- INT 21 U - IBM SYSTEM 36/38 WORKSTATION EMULATION - VDI.SYS - GET ???
- AX = 4402h
- BX = handle for character device "GDMS"
- CX = number of bytes to read (>= 4)
- DS:DX -> buffer (see #01445)
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- AX = number of bytes read
- Format of System 36/38 emulator returned data:
- Offset Size Description (Table 01445)
- 00h 4 BYTEs ???
- 04h DWORD pointer to ???
- 08h 4 BYTEs ???
- --------m-214402-----------------------------
- INT 21 U - LASTBYTE.SYS v1.19 - IOCTL - GET ??? TABLE
- AX = 4402h
- BX = handle for device "LA$TBYTE"
- CX = 0004h
- DS:DX -> DWORD to hold address of 39-byte table of ???
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- AX = number of bytes read
- Program: LASTBYTE.SYS is part of the shareware "The Last Byte" memory
- management package by Key Software Products
- SeeAlso: AX=4402h"HIGHUMM"
- --------m-214402-----------------------------
- INT 21 - HIGHUMM.SYS v1.17+ - IOCTL - GET API ADDRESS
- AX = 4402h
- BX = handle for device "KSP$UMM"
- CX = 0004h
- DS:DX -> DWORD to hold entry point (see #01446)
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- AX = number of bytes read
- Program: HIGHUMM.SYS is part of the shareware "The Last Byte" memory
- management package by Key Software Products
- SeeAlso: AX=4402h"LASTBYTE"
- (Table 01446)
- Call HIGHUMM.SYS entry point with:
- AH = 00h allocate UMB (same as XMS function 10h) (see INT 2F/AX=4310h)
- DX = size in paragraphs
- Return: BX = segment number (if successful)
- DX = size of requested block/size of largest block
- AH = 01h deallocate UMB (same as XMS func 11h) (see INT 2F/AX=4310h)
- DX = segment number of UMB
- AH = 02h request a bank-switched memory block
- DX = size in paragraphs
- Return: BX = segment number (if successful)
- DX = size of requested block/size of largest block
- AH = 03h release a bank-switched memory block
- DX = segment number
- AH = 04h transfer data to/from high memory
- DS:SI -> source
- ES:DI -> destination
- CX = length in bytes
- Note: enables bank-switched memory, does the copy, then disables
- bank-switched memory
- AH = 05h get a word from bank-switched memory
- ES:DI -> word to read
- Return: DX = word
- AH = 06h put a word to bank-switched memory
- ES:DI -> word to write
- DX = word
- AH = 07h put a byte to bank-switched memory
- ES:DI -> byte to write
- DL = byte
- AH = 08h enable bank-switched memory
- DS:SI -> 6-byte status save area
- AH = 09h disable bank-switched memory
- DS:SI -> 6-byte save area from enable call (AH=08h)
- AH = 0Ah assign name to UMB or high bank-switched block
- DX = segment number
- DS:SI -> 8-byte blank-padded name
- AH = 0Bh locate UMB block by name
- DS:SI -> 8-byte blank-padded name
- Return: BX = segment number (if successful)
- DX = size of block
- AH = 0Ch locate bank-switched block by name
- DS:SI -> 8-byte blank-padded name
- Return: BX = segment number (if successful)
- DX = size of block
- Return: AX = status code
- 0001h successful
- 0000h failed
- BL = error code
- 80h not implemented
- B0h insufficient memory, smaller block available
- B1h insufficient memory, no blocks available
- B2h invalid segment number
- Note: only functions 00h and 01h are always available; the remaining
- functions are only enabled if the proper commandline switch is given
- --------c-214402-----------------------------
- INT 21 - SMARTDRV.SYS v3.x only - IOCTL - GET CACHE STATUS
- AX = 4402h
- BX = file handle for device "SMARTAAR"
- CX = number of bytes to read (min 28h)
- DS:DX -> buffer for status record (see #01447)
- Return: CF clear if successful
- AX = number of bytes actually read
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Note: NCache2 (from the Norton Utilities v8.0) attempts to support this
- interface, but does not do so correctly, often hanging the system;
- one should use the SmartDrive v4.x or NCache private interfaces
- (see INT 2F/AX=4A10h/BX=0000h,INT 2F/AX=FE00h/DI=4E55h)
- SeeAlso: AX=4403h"SMARTDRV",INT 2F/AX=4A10h/BX=0000h
- Format of SMARTDRV status record:
- Offset Size Description (Table 01447)
- 00h BYTE write-through flag (always 01h)
- 01h BYTE writes should be buffered (always 00h)
- 02h BYTE cache enabled if 01h
- 03h BYTE driver type (01h extended memory, 02h expanded)
- 04h WORD clock ticks between cache flushes (currently unused)
- 06h BYTE cache contains locked tracks if nonzero
- 07h BYTE flush cache on INT 19 reboot if nonzero
- 08h BYTE cache full track writes if nonzero
- 09h BYTE double buffering (for VDS) state (00h off, 01h on, 02h dynamic)
- 0Ah DWORD original INT 13 vector
- 0Eh BYTE minor version number
- 0Fh BYTE major version number
- 10h WORD unused
- 12h WORD sectors read \
- 14h WORD sectors already in cache > may be scaled rather than
- 16h WORD sectors already in track buffer / absolute counts
- 18h BYTE cache hit rate in percent
- 19h BYTE track buffer hit rate in percent
- 1Ah WORD total tracks in cache
- 1Ch WORD number of tracks in use
- 1Eh WORD number of locked tracks
- 20h WORD number of dirty tracks
- 22h WORD current cache size in 16K pages
- 24h WORD original (maximum) cache size in 16K pages
- 26h WORD minimum cache size in 16K pages
- 28h DWORD pointer to byte flag to increment for locking cache contents
- --------d-214402-----------------------------
- INT 21 - CD-ROM device driver - IOCTL INPUT
- AX = 4402h
- BX = file handle referencing character device for CD-ROM driver
- CX = number of bytes to read
- DS:DX -> control block (see #01449)
- Return: CF clear if successful
- AX = number of bytes actually read
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Notes: the data returned depends on the first byte of the control block
- (two bytes for functions 01h/07h/0Bh, see #01449); the remainder of
- the control block is filled by the driver
- some device drivers support several subunits (that is more than one
- drive) but it is not possible to distinguish between them with this
- function; use INT 2F/AX=1510h or INT 2F/AX=0802h instead
- under Windows95, the "mscd$$$$" device cannot be opened so you cannot
- obtain the handle required by this function: use INT 2F/AX=1510h
- or INT 2F/AX=0802h instead
- SeeAlso: AX=4403h"CD-ROM",INT 2F/AX=0802h,INT 2F/AX=1510h
- (Table 01448)
- Values for CD-ROM data being requested:
- 00h device driver header address
- 01h drive head location
- 02h reserved
- 03h error statistics
- 04h audio channel info
- 05h raw drive bytes (uninterpreted and device-specific)
- 06h device status
- 07h sector size
- 08h volume size
- 09h media change status
- 0Ah audio disk info
- 0Bh audio track info
- 0Ch audio Q-Channel info
- 0Dh audio sub-channel info
- 0Eh UPC code
- 0Fh audio status info
- Format of CD-ROM control block:
- Offset Size Description (Table 01449)
- 00h BYTE data being requested (see #01448)
- ---function 00h---
- 01h DWORD device driver header address (see also AH=52h,#01646)
- ---function 01h---
- 01h BYTE (call) addressing mode
- 00h HSG
- 01h Red Book
- 02h DWORD current location of drive's head
- logical sector number in HSG mode
- frame/second/minute/unused in Red Book mode
- (HSG sector = minute * 4500 + second * 75 + frame - 150)
- ---function 03h---
- 01h N BYTEs undefined as of 5 Aug 88 specification
- ---function 04h---
- 01h BYTE input channel (0-3) for output channel 0
- 02h BYTE volume for output channel 0
- 03h BYTE input channel (0-3) for output channel 1
- 04h BYTE volume for output channel 1
- 05h BYTE input channel (0-3) for output channel 2
- 06h BYTE volume for output channel 2
- 07h BYTE input channel (0-3) for output channel 3
- 08h BYTE volume for output channel 3
- Notes: output channels 0 and 1 are left and right, 2 and 3 are left prime and
- right prime; a volume of 00h is off
- the default setting is for each input channel to be assigned to the
- same-numbered output channel at full (FFh) volume
- ---function 05h---
- 01h BYTE number of bytes read
- 02h 128 BYTEs buffer for drive bytes
- ---function 06h---
- 01h DWORD device parameters (see #01450)
- ---function 07h---
- 01h BYTE (call) read mode
- 00h cooked
- 01h raw
- 02h WORD (return) sector size in bytes
- ---function 08h---
- 01h DWORD volume size in sectors
- BUGS: Aztech device driver v1.10 and v1.27 (at least) return the last sector
- number, i.e. total number of sectors - 1
- Windows95 returns the total number of sectors + 150 (see the Red Book
- to HSG conversion formula at function 01h to understand why this
- happens)
- ---function 09h---
- 01h BYTE media change status
- 00h don't know
- 01h media unchanged
- FFh media has been changed
- ---function 0Ah---
- 01h BYTE lowest audio track number
- 02h BYTE highest audio track number
- 03h DWORD start address of lead-out track (Red Book format)
- --function 0Bh---
- 01h BYTE (call) track number
- 02h DWORD starting point of track (Red Book format)
- 06h BYTE track control info
- bits 15,14,12: track type (notice: bits not contiguous!)
- 000 two audio channels, no pre-emphasis
- 001 two audio channels with pre-emphasis
- 010 data track
- 100 four audio channels, no pre-emphasis
- 101 four audio channels with pre-emphasis
- other reserved
- bit 13: digital copy permitted
- ---function 0Ch---
- 01h BYTE CONTROL and ADR byte (as received from drive)
- 02h BYTE track number
- 03h BYTE point or index
- 04h BYTE minute \
- 05h BYTE second > running time within track
- 06h BYTE frame /
- 07h BYTE zero
- 08h BYTE "AMIN" or "PMIN" \
- 09h BYTE "ASEC" or "PSEC" > running time on disk
- 0Ah BYTE "AFRAME" or "PFRAME" /
- ---function 0Dh---
- 01h DWORD starting frame address (Red Book format)
- 05h DWORD transfer address
- 09h DWORD number of sectors to read
- Note: copies 96 bytes of sub-channel info per sector into buffer
- ---function 0Eh---
- 01h BYTE CONTROL and ADR byte
- 02h 7 BYTEs UPC/EAN code (13 BCD digits,low-order nybble of last byte is 0)
- 09h BYTE zero
- 0Ah BYTE "AFRAME"
- ---function 0Fh---
- ??? documentation not yet available
- 01h WORD pause status (0000h not paused, 0001h paused)
- 03h DWORD audio play start address
- 07h DWORD ??? audio play length or end address
- Bitfields for CD-ROM device parameters:
- Bit(s) Description (Table 01450)
- 0 door open
- 1 door unlocked
- 2 supports raw reading in addition to cooked
- 3 writable
- 4 can play audio/video tracks
- 5 supports interleaving
- 6 reserved
- 7 supports prefetch requests
- 8 supports audio channel control
- 9 supports Red Book addressing in addition to HSG
- 10 audio is playing
- 11 no disk in drive
- 12 supports R-W subchannels
- --------m-214402-----------------------------
- INT 21 - Quarterdeck - QEMM-386 v5+ - GET API ENTRY POINT
- AX = 4402h
- BX = file handle for device "QEMM386$"
- CX = 0004h
- DS:DX -> DWORD buffer for API entry point
- Return: CF clear if successful
- buffer filled (refer to INT 67/AH=3Fh for entry point parameters)
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Note: Quarterdeck recently (June 1993) documented this function, but the
- documentation incorrectly states that it is only available for
- QEMM 6+
- SeeAlso: AX=4402h"HOOKROM",INT 2F/AX=D201h/BX=5145h,INT 67/AH=3Fh
- --------Q-214402-----------------------------
- INT 21 U - Quarterdeck - HOOKROM.SYS - GET HOOKED VECTOR TABLE
- AX = 4402h
- BX = file handle for device "HOOKROM$"
- CX = 0004h
- DS:DX -> DWORD buffer for address of hooked vector table (see #01451)
- Return: CF clear if successful
- DS:DX buffer filled
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- SeeAlso: AX=4402h/SF=01h
- Format of HOOKROM.SYS hooked vector table entry:
- Offset Size Description (Table 01451)
- 00h 5 BYTEs FAR jump to actual interrupt handler
- (end of table if first byte is not EAh)
- 05h BYTE interrupt vector number
- --------d-214402-----------------------------
- INT 21 - Advanced SCSI Programming Interface (ASPI) - INTERFACE
- AX = 4402h
- BX = file handle for device "SCSIMGR$"
- CX = 0004h or 0005h (refer to notes below)
- DS:DX -> buffer for result (see #01452), set to zeros before call
- Return: CF clear if successful
- AX = 0004h or 0005h (refer to notes below)
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Notes: the variant of the call requesting five bytes is an UNDOCUMENTED
- extension supported by Adaptec's ASPI2DOS.SYS, ASPI4DOS.SYS, and
- ASPI7DOS.SYS; if made of a host manager which does not support the
- variant, only four bytes will be returned. If the variant is
- supported, Adaptec's WINASPI.DLL assumes that the host manager is
- an "advanced" one which operates in either real or protected mode
- (and thus does not require a DPMI INT 31/AX=0301h call to be invoked
- from protected mode). Support of the five-byte variant also appears
- to imply that an advanced ASPI host manager uses no temporary
- storage space except the SRB (see #01454) and the stack, and that it
- is fully reentrant.
- if called with a standard request for four bytes, even Adaptec's
- advanced drivers return only the requested four bytes containing the
- ASPI entry point address
- the function address is called with the address of a SCSI Request
- Block (see #01454) on the stack and the caller must clean up the
- stack
- SeeAlso: AX=440Ch"ASPITAPE",INT 11/AH=FFh"WD7000"
- Format of ASPI IOCTL result:
- Offset Size Description (Table 01452)
- 00h DWORD function address
- 04h BYTE number of SCSI host adapters supported by host manager
- (Table 01453)
- Values for ASPI request number:
- 00h "HA_INQ" host adapter inquiry / extended host adapter inquiry
- 01h "GET_TYPE" get device type
- 02h "EXEC_SIO" execute SCSI I/O
- 03h "ABORT_SRB" abort SRB
- 04h "RESET_DEV" reset SCSI device
- 05h "SET_HAPRMS" set host adapter parameters
- 06h get disk drive information
- Format of SCSI Request Block (64 bytes):
- Offset Size Description (Table 01454)
- 00h BYTE request number (see #01453)
- 01h BYTE request status (see #01455)
- 02h BYTE host adapter ID
- 03h BYTE request flags (see #01456)
- 04h DWORD reserved (0)
- ---request 00h---
- 08h BYTE (ret) number of host adapters
- 09h BYTE (ret) target adapter ID
- 0Ah 16 BYTEs (ret) SCSI manager ID
- 1Ah 16 BYTEs (ret) host adapter ID
- 2Ah 16 BYTEs (ret) host adapter-unique parameters
- ---extended request 00h---
- 04h 2 BYTEs (call) extended request signature 55h AAh
- (ret) if extended request supported, reply AAh 55h
- 06h WORD (call) length of extended buffer at offset 3Ah
- (ret) number of bytes returned in extended buffer
- 08h BYTE (ret) number of host adapters
- 09h BYTE (ret) target adapter ID
- 0Ah 16 BYTEs (ret) SCSI manager ID
- 1Ah 16 BYTEs (ret) host adapter ID
- 2Ah 16 BYTEs (ret) host adapter-unique parameters
- 3Ah N BYTEs extended buffer
- 3Ah WORD features (see #01457)
- 3Ch WORD maximum scatter/gather list length
- 3Eh DWORD maximum SCIS data transfer size (0 = unlimited)
- ---request 01h---
- 08h BYTE target ID
- 09h BYTE logical unit number
- 0Ah BYTE (ret) device type (see #01460)
- ---request 02h---
- 08h BYTE target ID
- 09h BYTE logical unit number
- 0Ah DWORD data allocation length
- (ret) residual byte length (if supported and requested)
- 0Eh BYTE sense allocation length
- 0Fh DWORD data buffer pointer
- 13h DWORD next request pointer (for linking)
- 17h BYTE CDB length
- 18h BYTE (ret) host adapter status (see #01454)
- 19h BYTE (ret) target status (see #01459)
- 1Ah DWORD post routine address (see #01466)
- 1Eh WORD real mode Post DS
- 20h DWORD SRB pointer
- 24h WORD reserved
- 26h DWORD SRB physical address
- 2Ah 22 BYTEs SCSIMGR$ workspace
- 40h N BYTEs CCB, including sense data (20-24 bytes)
- ---request 03h---
- 08h DWORD address of SRB to abort
- ---request 04h---
- 08h BYTE target ID
- 09h BYTE logical unit number
- 0Ah 14 BYTEs reserved
- 18h BYTE (ret) host adapter status (see #01458)
- 19h BYTE (ret) target status (see #01459)
- 1Ah DWORD post routine address
- 1Eh 34 BYTEs workspace
- ---request 05h---
- 08h 16 BYTEs host adapter-unique parameters
- ---request 06h---
- 08h BYTE target ID
- 09h BYTE logical unit number
- 0Ah BYTE disk drive flags (see #01461)
- 0Bh BYTE INT 13h drive number
- 0Ch BYTE preferred head number translation
- 0Dh BYTE preferred sector size translation
- 0Eh 10 BYTEs reserved
- SeeAlso: #01462
- (Table 01455)
- Values for ASPI request status:
- 00h not done yet
- 01h completed successfully
- 02h aborted by host
- 04h SCSI I/O error
- 80h invalid
- 81h no adapter
- 82h no device attached
- else status
- SeeAlso: #01454
- Bitfields for ASPI request flags:
- Bit(s) Description (Table 01456)
- 0 posting enabled
- 1 linking enabled
- 2 residual byte length reported in Data Allocation Length field
- 3 transfer from SCSI target to host
- 4 transfer from host to SCSI target
- 5 scatter/gather
- 7-6 reserved
- Note: no data is transferred if both bits 3 and 4 are set; if neither is
- set, the direction is determined by the SCSI command
- SeeAlso: #01454
- Bitfields for ASPI extended features:
- Bit(s) Description (Table 01457)
- 0 scatter/gather supported
- 1 residual byte length reported
- 2 Wide SCSI 16 host adapter
- 3 Wide SCSI 32 host adapter
- 15-4 reserved
- SeeAlso: #01454
- (Table 01458)
- Values for host adapter status:
- 00h no error detected
- 11h select timeout
- 12h data overrun
- 13h bus error
- 14h bus failure
- (Table 01459)
- Values for target status:
- 00h no status
- 02h sense data stored in SRB
- 08h target busy
- 18h reservation error
- (Table 01460)
- Values for device type:
- 00h disk drive
- 01h tape drive (streamer)
- 02h printer
- 03h processor
- 04h WORM drive
- 05h CD-ROM drive
- 06h scanner
- 07h optical drive
- 08h autochanger
- 09h communications device
- (Table 01461)
- Values for disk drive flags:
- 00h no INT 13 access
- 01h INT 13 with DOS access
- 02h INT 13 without DOS access
- 03h invalid flags
- Format of CCB:
- Offset Size Description (Table 01462)
- 00h BYTE command code (see #01463)
- 01h BYTE flags
- bits 4-0: vary by function
- bits 7-5: logical unit number
- 02h BYTE "adr_1"
- 03h BYTE "adr_0"
- 04h BYTE length
- 05h BYTE control
- ...
- 06h/0Ah 14 BYTEs buffer for sense data (see #01464)
- SeeAlso: #01454
- (Table 01463)
- Values for CCB command code:
- 00h test unit ready
- 01h rewind
- 03h request sense data
- 05h get block size limits
- 08h Group 0 read
- 0Ah Group 0 write
- 10h write file marks
- 11h SCSI Space (set position?)
- 12h SCSI Inquire
- 15h set mode information
- 16h reserve SCSI device
- 17h release SCSI device
- 19h erase
- 1Ah request mode information
- 1Bh load/unload media
- 1Dh request target self-check
- 24h set window parameters
- 25h get window parameters
- 28h Group 1 read
- 2Ah Group 1 write
- 31h document feeder control
- 34h get scan data status
- ---vendor-specific commands---
- D3h get document feeder status
- D4h set document feeder mode
- Format of sense data:
- Offset Size Description (Table 01464)
- 00h BYTE error code (bit 7 set if valid)
- 01h BYTE segment number
- 02h BYTE sense key
- bit 6: EOM
- bit 5: ILI
- bits 0-3: sense key (see #01465)
- 03h 4 BYTEs information bytes
- 07h BYTE additional sense length (0Ah)
- 08h 4 BYTEs command-specific information
- 0Ch BYTE additional sense code
- 0Dh BYTE additional sense code qualifier
- 0Eh BYTE field replaceable unit code
- 0Fh 3 BYTEs sense key specific bytes
- (Table 01465)
- Values for sense key:
- 00h no sense data
- 02h SCSI unit not ready
- 03h media error
- 04h unrecoverable hardware error
- 05h illegal parameter in CDB
- 06h target has been reset
- 0Bh target aborted command
- (Table 01466)
- Values APSI post function is called with:
- STACK: DWORD -> SRB (see #01454) which completed
- interrupts disabled
- Return: EBP, EBX, ESI, EDI must be preserved
- interrupts disabled
- Note: the post function may issue any APSI function except an abort; it
- should complete as quickly as possible
- --------m-214402-----------------------------
- INT 21 U - Qualitas 386MAX v6.00+ - IOCTL INPUT - GET STATE
- AX = 4402h
- BX = file handle for device "386MAX$$"
- CX = number of bytes to read
- DS:DX -> BYTE 03h followed by 386MAX state buffer (see #01467)
- Return: CF clear if successful
- buffer at DS:DX+1 filled
- AX = number of bytes actually copied
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Notes: if the value given in CX is less than the size of the state record
- (5Ah for v6.01, 66h for v7.00), only a partial state record will be
- returned
- the state is 40h bytes for 386MAX (actually ASTEMM) v2.20 ("386MAX$$"
- did not exist yet, use "QMMXXXX0" and then "EMMXXXX0" instead) and
- 56h bytes for v5.11.
- to invoke 386MAX API functions, push DX onto the stack, load DX with
- the word at offset 25h in the returned state, load all other
- registers as needed for the desired function, and execute an
- OUT DX,AL or OUT DX,AX; DX will be set to the pushed value on return
- if it is not otherwise modified by the API function. For safety,
- in case a function is not supported or 386MAX is not present, SP
- should be saved and restored around the API call.
- Windows 3.1 Standard mode, LAN Manager, and Windows for Workgroups all
- use the 386MAX API; LAN Manager and Windows for Workgroups reportedly
- make some calls incorrectly
- SeeAlso: AX=4403h/SF=03h"386MAX",INT 67/AH=3Fh
- Format of 386MAX v6.01+ state:
- Offset Size Description (Table 01467)
- -1 BYTE (call) 03h
- 00h 6 BYTEs signature "386MAX"
- 06h 4 BYTEs version string "N;NN" or "N.NN" (i.e. "6;01" for v6.01)
- (';' by default; apparently changed to a period when 386MAX
- has linked high RAM into DOS's memory chain)
- 0Ah WORD segment of low-memory portion of 386MAX.SYS
- 0Ch 2 BYTEs ???
- 0Eh WORD segment of ??? memory block or 0000h
- 10h WORD bit flags 1 (see #01468)
- 12h WORD starting address of video memory in KB
- 14h 2 BYTEs ???
- 16h WORD total high DOS memory in KB
- 18h 2 BYTEs ???
- 1Ah WORD available shared memory in KB
- 1Ch WORD KBytes extended memory used by 386MAX
- 1Eh 2 BYTEs ???
- 20h WORD total extended memory in KB
- 22h WORD IO port to write (OUT DX,AL) to invoke 386MAX INT 15 functions
- 24h WORD IO port to write (OUT DX,AL) to invoke 386MAX API functions
- (see #01481)
- 26h WORD ??? (depends on DOS version)
- 28h WORD size of ??? in paragraphs
- 2Ah DWORD machine type (see #01476)
- 2Eh DWORD -> first DOS memory control block
- 32h WORD system configuration flags (see #01469)
- 34h WORD debugging flags 1 (see #01470)
- 36h WORD debugging flags 2 (see #01471)
- 38h 2 BYTEs ???
- 3Ah WORD segment of first MCB in high memory chain
- 3Ch WORD feature flags 1 (see #01473)
- 3Eh WORD feature flags 2 (see #01474)
- 40h WORD feature flags 3 (see #01475)
- 42h WORD segment of first 386MAX control block??? (see #01477)
- 44h WORD amount of memory to report available on INT 15/AH=88h
- 46h 4 BYTEs ???
- 4Ah WORD number of K at start of address space swapped with fast
- extended memory (SWAP= parameter)
- 4Ch 2 BYTEs ???
- 4Eh WORD segment address of ???
- 50h WORD debugging flags 3 (see #01472)
- 52h DWORD old INT 21h
- 56h DWORD pointer to 386MAX's EMS (INT 67h) handler
- ---386MAX v7.00---
- 5Ah DWORD KB of extended memory managed by 386MAX
- 5Eh DWORD bytes of extended memory (EXT= parameter)
- 62h 4 BYTEs ???
- Bitfields for 386MAX bit flags 1:
- Bit(s) Description (Table 01468)
- 1 ???
- 2 allow A20 to be enabled/disabled???
- 3 ??? (cleared by calling INT 67 functions or starting MSWindows)
- 4 high RAM present???
- 5 386MAX in AUTO mode
- 6 386MAX enabled
- 7 386MAX is providing EMS services
- 8 ??? (affects API function 08h)
- 9 A20 gate closed (A20 disabled) (see INT 15/AX=2402h)
- 10 Weitek support enabled
- 11 ???
- 12 ROMs not shadowed???
- 13 QPMS has been used
- 14 ???
- 15 ???
- Bitfields for 386MAX system configuration flags:
- Bit(s) Description (Table 01469)
- 1 ROM compressed???
- 3 ???
- 5 386MAX loaded into high memory
- 6 Microchannel bus
- 7 Weitek math coprocessor detected
- 9 ??? (also generates INT 01 on ??? and INT 03 on ???)
- 11 PC/XT (thus only single 8259 interrupt controller present, DMA only
- in 1st megabyte, etc)
- 13 LMLTOP= specified
- 14 enable A20 control???
- 15 ???
- Bitfields for 386MAX debugging flags 1:
- Bit(s) Description (Table 01470)
- 0 DEBUG=LED
- 1 DEBUG=X67
- 2 DEBUG=INV
- 3 DEBUG=EMSPTED
- 4 DEBUG=JMP
- 5 DEBUG=CALL
- 6 DEBUG=HLT
- 7 DEBUG=PMR
- 8 DEBUG=CR3
- 9 DEBUG=CAPS or DEBUG=INT
- 10 DEBUG=RC
- 11 DEBUG=ROM
- 12 DEBUG=XM
- 13 DEBUG=SOR
- 14 DEBUG=XR
- 15 DEBUG=EMSERR (generate INT 01 on returning error from EMS call)
- Bitfields for 386MAX debugging flags 2:
- Bit(s) Description (Table 01471)
- 0 DEBUG=ROMSWAP
- 1 DEBUG=UNSHADOWROM
- 2 DEBUG=COMPROM
- 3 DEBUG=DPMIPHYS
- 4 DEBUG=ALLROM
- 5 DEBUG=VMS
- 6 DEBUG=XMS (generate INT 01 on XMS calls)
- 7 DEBUG=I06
- 8 DEBUG=VCPI
- 9 DEBUG=XDMA
- 10 DEBUG=X09
- 13 DEBUG=I67 (generate INT 01 on every INT 67 call)
- 14 DEBUG=EVM (generate INT 01 on entering V86 mode)
- 15 DEBUG=EMSSAVE or DEBUG=VDS
- Bitfields for 386MAX debugging flags 3:
- Bit(s) Description (Table 01472)
- 10 DEBUG=EPM
- 12 DEBUG=ABIOS
- 13 DEBUG=XMSPTED
- 14 DEBUG=TIME
- 15 DEBUG=SCRUB
- Bitfields for 386MAX feature flags 1:
- Bit(s) Description (Table 01473)
- 1 Weitek present
- 2 no DPMI services
- 3 NODMA
- 4 TERSE
- 5 NOROM
- 6 NOPARITY
- 8 NOFLEX (IGNOREFLEXFRAME)
- 11 don't create UMBs
- 12 don't backfill below video memory (NOLOW)
- 13 FRAME= specified
- 14 EXT= specified
- 15 NOEMS, allow prior expanded memory manager to provide EMS
- Bitfields for 386MAX feature flags 2:
- Bit(s) Description (Table 01474)
- 0 UNSHIFT specified (FORCEA20 disabled)
- 1 NOXRAM
- 2 NOSCSI specified
- 3 SCREEN specified
- 4 enabled EISADMA
- 5 slow DMA
- 6 RESETKEYB specified
- 7 ???
- 9 TOP384
- 10 ???
- 11 NOWARMBOOT
- 12 USE= specified
- 13 ROM= specified
- Bitfields for 386MAX feature flags 3:
- Bit(s) Description (Table 01475)
- 0 Windows3 support enabled
- 1 SHADOWROM
- 2 don't compress ROM (NOCOMPROM)
- 3 ??? (related to PRGREG=)
- 4 ??? (related to PRGREG=)
- 5 SHADOWRAM
- 6 DOS4 specified
- 7 NOLOADHIGH
- 8 NOPULSE
- 11 FORCEA20
- 12 DMA buffer enabled
- 13 NOSCRUB
- 15 NOFRAME
- Bitfields for 386MAX machine type:
- Bit(s) Description (Table 01476)
- 12 Amstrad
- 13 Epson
- 14 Zenith Data Systems
- 15 "ASEM"
- 16 NEC
- 17 "HPRS" model codes 69h and 6Ah
- 18 Dell
- 19 "CA"
- 20 ITT (Xtra Business Systems/Alcatel)
- 21 Toshiba 5100
- 22 Olivetti
- 23 Quadram Quad386 (BIOS model FEh, submodel A6h)
- 24 Tandy???
- 25 AST 386
- 26 INBOARD, ??? version
- 27 INBOARD, ??? version
- 28 INBOARD, ??? version
- 29 "HPRS"
- 30 Compaq 386
- 31 JET386
- Format of 386MAX control block:
- Offset Size Description (Table 01477)
- 00h WORD segment of next block (FFFFh if last)
- 02h WORD segment of previous block (FFFFh if first)
- 04h 12 BYTEs filename
- 10h WORD resident size in paragraphs
- 12h WORD environment size???
- 14h WORD real prsent environment size + 1 (0000h if ENVSAVE used)
- 16h 2 BYTEs ???
- 18h DWORD initial size or SIZE=n in 386LOAD commandline
- 1Ch DWORD SIZE=-1 ???
- 20h DWORD SIZE= ???
- 24h BYTE PRGREG= if specified, else FFh
- 25h BYTE ENVREG= if specified, else FFh
- 26h BYTE FlexFrame (00h not present, 01h present)
- 27h 3 BYTEs ???
- 2Ah BYTE GROUP= or 00h if not present
- 2Bh BYTE ???
- 2Ch WORD PSP
- Format of 386MAX high memory info record:
- Offset Size Description (Table 01478)
- 00h WORD segment address of memory region
- 02h WORD size of memory region in paragraphs
- 04h BYTE type or flags???
- 00h if locked out
- 02h if EMS page frame
- 04h if high RAM
- 42h if ROM
- 05h BYTE ???
- Format of 386MAX ROM shadowing record:
- Offset Size Description (Table 01479)
- 00h WORD logical start segment of ROM??? (may be used by BlueMAX when it
- squeezes together the ROMs to make room)
- 02h WORD physical start segment of ROM
- 04h 2 BYTEs ???
- 06h WORD size of shadowed ROM in paragraphs
- 08h 2 BYTEs ???
- 0Ah WORD flags
- bit 15: shadowing enabled for this ROM???
- bit 14: ???
- bit 13: ???
- bit 12: ???
- bit 10: ???
- (Table 01480)
- Values for 386MAX memory type:
- 00h unused by EMS
- 01h DOS
- 04h page frame overlapping ROM???
- 80h high memory
- 84h page frame???
- 87h video ROM???
- Note: the type may be 00h (unused) if the 16K page is split among different
- uses (such as ROM and high RAM)
- (Table 01481)
- Call 386MAX API (via OUT DX,AL) with:
- STACK: WORD value for DX
- AH = 00h unused
- Return: AH = 84h (unsupported function)
- AH = 01h get high memory information
- ES:DI -> buffer for array of high memory info records
- (see #01478)
- Return: CX = number of records placed in buffer
- AH = 02h get shadowed ROM info
- ES:DI -> buffer for array of ROM shadowing records (see #01479)
- Return: CX = number of records placed in buffer
- AH = 03h get 386MAX state
- ES:DI -> 90-byte buffer for state (see #01467)
- Return: AH = 00h (successful)
- buffer filled
- AH = 04h get memory types???
- ES:DI -> buffer for memory type info (array of bytes, one per
- 16K page) (see #01480)
- Return: CX = number of bytes placed in buffer
- AH = 05h get page table entries
- AL = A20 control (00h enable A20 first, 01h leave unchanged)
- CX = buffer size in bytes (0000h = enough for all memory from
- given start to end of memory managed by 386MAX)
- SI = first K to report (rounded down to 4K page)
- ES:DI -> buffer for returned page table entries
- Return: CX = number of bytes returned (four per 4K page)
- ES:DI buffer filled
- AH = 06h get memory speed info
- ES:DI -> buffer for memory speed records (see #01482)
- Return: AH = 00h (successful)
- CX = number of bytes placed in buffer
- Note: this function can take over a second to execute
- AH = 07h map/unmap multiple handle pages
- DX = EMS handle (on stack)
- STACK: DWORD -> EMS mapping record
- Return: AH = status (00h,80h,83h,8Ah,8Bh)
- Format of EMS mapping record:
- Offset Size Description
- 00h WORD function
- 0000h use physical page numbers
- 0001h use segment addresses
- 02h WORD EMS handle
- 04h WORD number of mapping entries following
- 06h 2N WORDs logical page number and physical page/segment
- logical page FFFFh means unmap physical page
- SeeAlso: INT 67/AH=50h
- AH = 08h "EMM2_GOREAL" check whether possible to disable 386MAX
- AL = ??? (00h or nonzero)
- Return: AH = status (00h OK, A4h not possible at this time)
- Note: if AL=00h, this function always returns success
- AH = 09h toggle Bit Flags 1 flags
- BX = bitmask of bit flags 1's flags to toggle (see #01468)
- Return: AH = 00h (successful)
- Note: enables A20 first
- AH = 0Ah toggle Debugging Flags 1 flags
- BX = bitmask of Debugging Flags 1's bits to toggle (see #01470)
- Return: AH = 00h (successful)
- Notes: enables A20 first
- does ??? if bit 3 on after specified bits are toggled
- AH = 0Bh toggle Debugging Flags 2 flags
- BX = bitmask of Debugging Flags 2's bits to toggle (see #01471)
- Return: AH = 00h (successful)
- Note: enables A20 first
- AH = 0Ch toggle feature flags 3
- BX = bitmask of feature flags 3's bits to toggle (see #01475)
- Return: AH = 00h (successful)
- Note: enables A20 first
- AH = 0Dh specify 386MAX high-memory location
- BX = segment address of high-memory real-mode portion of 386MAX
- CX = current segment of real-mode stub???
- Return: AH = status (00h successful)
- ???
- AH = 0Eh CRT controller register virtualization
- AL = subfunction
- 00h allow access to CRTC I/O ports 03B4h/03B5h, 03D4h/03D5h
- 01h trap accesses to CRTC I/O ports
- AH = 0Fh reboot system
- Return: never
- AH = 10h unused
- Return: AH = 84h (unsupported function)
- AH = 11h get high memory information
- ES:DI -> 96-byte buffer for high memory info
- Return: AH = 00h (successful)
- ES:DI buffer filled
- Notes: each byte in buffer contains bit flags for a 4K page in
- the A000h-FFFFh region
- bit 0: page is writeable
- bit 1: physical address same as linear address
- bit 2: EMS page frame
- bit 6: page is part of the QPMS window
- this function can take over a second to execute,
- because it does a 128K read for each page in an
- attempt to flush any RAM cache the system may have
- AH = 12h shadow RAM mapping
- AL = subfunction
- 00h unshadow ROMs (except page FFh if NOWARMBOOT set)
- 01h map shadow RAM into ROM regions???
- Return: AH = 00h (successful) if AL=00h or 01h
- AH = 8Fh otherwise
- AH = 13h shadow RAM page protection
- AL = subfunction
- 00h set all shadowed ROM 4K pages to read-only
- 01h set all shadowed ROM 4K pages to read-write
- Return: AH = 00h (successful) if AL=00h or 01h
- AH = 8Fh otherwise
- AH = 14h get Programmable Option Select info???
- ES:DI -> 54-byte buffer for POS data???
- Return: AH = 00h if successful
- AH = A4h on error
- Note: the buffer consists of nine 6-byte fields; the first
- eight for slots 1-8, the last for the system board
- AH = 15h ???
- ???
- Return: ???
- AH = 16h get 386MAX memory usage screen
- ES:DI -> buffer for memory info display
- CX = size of buffer in bytes
- Return: ES:DI buffer filled with '$'-terminated string (if
- large enough to hold entire usage screen)
- Note: the screen is 0303h bytes in v7.00
- AH = 17h Windows 3 startup/termination
- AL = subfunction
- 00h Windows3 initializing
- DX (on stack) = Windows startup flags
- DI = Windows version number (major in upper byte)
- ES:BX = 0000h:0000h
- DS:SI = 0000h:0000h
- Return: CX = 0000h if OK for Windows to load
- <> 0 if Windows should not load
- ES:BX -> startup info structure
- DS:SI -> Virtual86 mode enable/disable callback
- 01h Windows3 terminating
- ES:BX -> ???
- DX (on stack) = Windows exit flags
- Return: ???
- AH = 18h QPMS (Qualitas Protected Memory Services)
- AL = subfunction
- 00h get QPMS configuration
- Return: BX = starting segment of QPMS memory window
- CX = number of 4K pages reserved for QPMS???
- DX = number of 4K pages in QPMS window???
- 01h map QPMS memory page???
- BX = 4K page number within memory reserved for QPMS???
- CL = 4K page number within QPMS memory window???
- 02h mark all QPMS memory read-only
- 03h mark all QPMS memory read-write
- Return: AH = status (00h,8Ah,8Bh,8Fh)
- AH = 19h get linear address for physical address
- EDX = physical address (low word on stack)
- Return: AH = status
- 00h successful
- EDX = linear address at which physical address
- may be accessed
- 8Bh physical address currently not addressable
- Note: enables A20 first
- AH = 1Ah set page table entry
- EDX = new page table entry (low word on stack)
- ESI = linear address of page to map (bits 0-11 clear)
- Return: AH = status (00h,8Bh)
- Note: enables A20 first
- AH = 1Bh get ???
- Return: AH = status
- BX = ???
- CX = number of ???
- EDX = physical address of ???
- AH = 1Ch get original interrupt vector
- AL = interrupt vector (00h-7Fh)
- Return: AH = 00h (successful)
- EDX = original vector before 386MAX loaded (segment in
- high word, offset in low word)
- Note: no range checking is performed; requests for INTs 80h-
- FFh will return random values
- AH = 1Dh display string???
- SI = ???
- Return: AH = 00h (successful)
- ???
- Note: this function appears to be broken in v7.00
- AH = 1Eh get memory info
- ES:DI -> memory info (see #01483)
- Return: ???
- AH = 1Fh get DPMI host information
- Return: AX = 0000h if successful
- BX = DPMI flags (see #03152 at INT 31/AX=0400h)
- CL = CPU type (02h = 80286, 03h = 80386, etc.)
- DX = DPMI ver supported (DH=major, DL=2-digit minor)
- SI = ???
- ES???:DI -> ???
- Note: NOP if NODPMI switch specified
- AH = 20h (v7.00) get ???
- AL = index of ???
- Return: EDX = ??? for specified ???
- AH = 21h (v7.00) STACKS support
- AL = 00h get STACKS parameters
- Return: BX = ??? (0060h for v7.00)
- CX = number of stacks for hardware interrupts
- DX = size of each stack in bytes
- SI = ??? (low and high bytes are separate values)
- DI = ??? (low and high bytes are separate values)
- low byte = logical page number set by subfn 02h
- ES = ???
- AL = 01h set ??? "EMM2_DSTKS"
- EBX = ???
- ECX = ???
- AL = 02h set ???
- BL = logical page number for ??? (00h-03h)
- Return: AH = status (00h,8Ah)
- AH = 22h (v7.00) call ??? for every load module
- AL = which function to call
- 00h call ???
- else call ????
- Return: AH = 00h
- Note: if AL=00h, calls the protected-mode function pointed at by
- the DWORD at offset 22h from the start of each module installed
- by a LOAD= directive; if AL<>00h, it calls the function
- pointed at by the DWORD at offset 28h of the load module
- AH = 23h (v7.00) ???
- AL = 00h set ???
- BL = ???
- Return: AH = 00h or unchanged (depending on ???)
- AL = 01h set ???
- BL = ???
- BH = ???
- CX = ???
- DX = ??? (on top of stack)
- Return: AH = status (00h if successful, 8Fh once table full)
- Note: this call adds one entry to an internal table on each
- call, until the table is full
- AL = 02h get ???
- CX = size of buffer
- ES:DI -> buffer for ??? (60 bytes total data)
- Return: CX = number of bytes actually returned
- Note: returns the array storing the values set with AX=2301h
- Format of one entry in array:
- Offset Size Description
- 00h BYTE ??? (BL from subfn 01h)
- 01h WORD ??? (CX from subfn 01h)
- 03h BYTE ??? (BH from subfn 01h)
- 04h WORD ??? (DX from subfn 01h)
- AL = 03h set ??? name/path
- ES:DI -> buffer containing ASCIZ ???
- AL = 04h get ???
- ES:DI -> buffer for ASCIZ ???
- Note: the ASCIZ string for subfunctions 03h and 04h does not appear
- to be used by 386MAX, and may serve merely for communication
- between two other Qualitas programs
- AH = 24h (v7.00) high memory control
- AL = 00h get high memory state
- Return: BX = current state
- 00h high memory removed from DOS memory chain
- 01h high memory included in DOS memory chain
- AL = 01h set high memory state
- BX = new state
- 00h high memory removed from DOS memory chain
- 01h high memory included in DOS memory chain
- else
- Return: ??? (error, but return varies according to ???)
- AH = 25h (v7.00) remove high RAM from DOS memory chain
- AH = 26h (v7.00) ???
- BX = ???
- CX = ???
- SI = ???
- DI = ???
- Return: AH = status
- BX = ???
- CX = ???
- AH = 27h (v7.00) ???
- AL = 00h get ???
- Return: BX = number of paragraphs for ???
- AL = 01h ???
- BX = ???
- ES??? = ???
- AL = 02h ???
- ???
- AL = 03h ???
- CX = ???
- DX = ???
- ES??? = ???
- Return: ???
- AH = 28h (v7.00) get ???
- Return: AH = status (00h,8Fh) (see #03648 at INT 67/AH=40h)
- if AH=00h,
- CX = ???
- DX = ???
- AH = 29h (v7.00) get ???
- Return: AX = ???
- AH = 40h-5Dh EMS services (see INT 67/AH=40h, etc.)
- AH = DEh VCPI services (see INT 67/AX=DE00h, etc.)
- Return: AH = status (as for EMS INT 67 calls)
- 00h successful
- 80h internal error
- 81h hardware malfunction
- 83h invalid handle
- 84h undefined function
- 8Ah invalid logical page nuber
- 8Bh illegal physical page number
- 8Fh undefined subfunction
- A4h access denied
- etc.
- STACK popped (value placed in DX if no specific return value for DX)
- Format of 386MAX memory speed record:
- Offset Size Description (Table 01482)
- 00h DWORD page table entry for 4K page
- 04h WORD number of microticks (840ns units) required for REP LODSD of
- entire 4K page
- Format of 386MAX memory info [array]:
- Offset Size Description (Table 01483)
- 00h DWORD linear start address
- 04h DWORD size in bytes
- 08h WORD XMS handle (if next byte = 04h)
- ??? (if next byte = 05h)
- ??? (if next byte = 06h)
- ??? (if next byte = 13h)
- ??? (if next byte = 14h)
- ??? (if next byte = 15h)
- ??? (if next byte = 23h)
- ??? (if next byte = 24h)
- ??? (if next byte = 26h)
- else unused
- 0Ah BYTE type
- 00h = ???, 01h = VDISK,
- 02h = INT 15h extended memory, 03h = ??? extended,
- 04h = XMS handle's memory, 05h = ???, 06h = ???, 07h = ???,
- 08h = ???, 09h = ???, 0Ah = ???, 0Bh = ???,
- 11h = ???, 12h = ???, 14h = ???, 15h = ???,
- 19h = ???, 1Ah = ???, 1Bh = ???,
- 1Ch = ???, 1Dh = ???, 1Eh = ???, 1Fh = ???,
- 20h = ???, 21h = ???, 23h = ???, 24h = ???,
- 26h = ???
- 0Bh BYTE ??? (00h for types 00h-03h, 07h-0Bh, 19h-21h;
- 80h for types 04h/13h-15h/23h-26h;
- ??? for type 05h)
- --------V-214402-----------------------------
- INT 21 - PGS1600.DEV - IOCTL - GET CONFIGURATION INFO
- AX = 4402h
- BX = file handle for device "PGS1600$"
- CX = 0018h (size of buffer)
- DS:DX -> configuration buffer (see #01484)
- Return: CF clear if successful
- buffer filled
- AX = number of bytes actually copied
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Program: PGS1600.DEV is a device driver for the Cornerstone Technology PG1600
- display adapter, which provides a 1600x1200 monochrome display as
- well as one of two emulations, MDA or CGA.
- SeeAlso: AX=4403h"PGS1600"
- Format of PGS1600.DEV configuration information:
- Offset Size Description (Table 01484)
- 00h WORD version (high byte = major, low byte = minor)
- 02h WORD board initialisation mode
- 04h WORD board I/O address
- 03D0h CGA emulation
- 03B0h MDA emulation
- 0390h no emulation
- 0350h no emulation, alternate
- 06h WORD emulation buffer segment
- B800h CGA emulation
- B000h MDA emulation
- 0000h no emulation
- 08h WORD PG1600 graphics buffer segment
- 0Ah WORD number of bytes between consecutive graphic rows
- 0Ch WORD horizontal pixel size
- 0Eh WORD vertical pixel size
- 10h WORD horizontal dots per inch
- 12h WORD vertical dots per inch
- 14h WORD graphics buffer bits per pixel
- 16h WORD monitor bits per pixel
- --------N-214402-----------------------------
- INT 21 - PC/TCP IPCUST.SYS - RESET CONFIGURATION DATA READ POINTER
- AX = 4402h
- BX = file handle referencing device "$IPCUST"
- CX, DS:DX ignored
- Return: CF clear if successful
- AX destroyed
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Notes: there are a total of 378h bytes of configuration data for IPCUST.SYS
- version 2.05. If less than the entire data is read or written,
- the next read/write continues where the previous one ended; this
- call and AX=4403h both reset the location at which the next
- operation starts to zero
- v2.1+ uses a new configuration method, but allows the installation
- of IPCUST.SYS for backward compatibility with other software which
- must read the PC/TCP configuration
- SeeAlso: AH=3Fh"IPCUST",AH=40h"IPCUST",AX=4403h"IPCUST"
- --------N-214402-----------------------------
- INT 21 - WORKGRP.SYS - GET API ENTRY POINT
- AX = 4402h
- BX = file handle for device "NET$HLP$"
- CX = 0008h
- DS:DX -> buffer for entry point record (see #01485)
- Return: CF clear if successful
- AX = number of bytes actually read
- CF set on error
- AX = error code
- Program: WORKGRP.SYS is the portion of Microsoft's Workgroup Connection which
- permits communication with PCs running Windows for Workgroups or
- LAN Manager
- SeeAlso: AH=3Fh"WORKGRP.SYS"
- Format of WORKGRP.SYS entry point record:
- Offset Size Description (Table 01485)
- 00h WORD 3633h \ signature???
- 02h WORD EF6Fh /
- 04h DWORD address of entry point (see #01486)
- Note: first four bytes of buffer must be 6Fh E9h 33h 36h on entry when using
- IOCTL rather than READ to get the entry point record
- (Table 01486)
- Call WORKGRP entry point with:
- STACK: WORD function number (0000h-0009h)
- Return: STACK unchanged
- SeeAlso: #01487,#01488,#01489,#01490,#01491,#01492,#01493,#01494
- (Table 01487)
- Call WORKGRP function 00h with:
- STACK: WORD 0000h (function "get ???")
- Return: DX:AX -> data table
- (Table 01488)
- Call WORKGRP function 01h with:
- STACK: WORD 0001h (function "hook ???")
- Return: STACK: DWORD pointer to ???
- WORD 0001h (function number)
- (Table 01489)
- Call WORKGRP function 02h with:
- STACK: WORD 0002h (function "unhook ???")
- ???
- Return: ???
- (Table 01490)
- Call WORKGRP function 03h with:
- STACK: WORD 0003h (function "reenable printer port")
- WORD LPT port number
- Return: ???
- (Table 01491)
- Call WORKGRP function 04h with:
- STACK: WORD 0004h (function "disable printer port")
- WORD LPT port number
- Return: ???
- (Table 01492)
- Call WORKGRP function 05h with:
- STACK: WORD 0005h (function "???")
- ???
- Return: ???
- (Table 01493)
- Call WORKGRP function 06h with:
- STACK: WORD 0006h (function "???")
- Return: STACK unchanged
- AX = 0000h
- DX = 0000h
- (Table 01494)
- Call WORKGRP functions 07h-09h with:
- STACK: WORD 0007h-0009h (NOP functions)
- Return: STACK unchanged
- AX = 0001h
- DX = 0000h
- --------N-214402-----------------------------
- INT 21 - 10NET v5.0 - 10BEUI.DOS - API
- AX = 4402h
- BX = file handle referencing device "10BEUI$"
- DS:DX -> parameter record (see #01495)
- CX ignored
- Return: CF clear if successful
- AX destroyed
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- SeeAlso: AX=4402h"10MEMMGR",INT 6F/AH=00h"10NET"
- Format of 10NET 10BEUI.DOS parameter record:
- Offset Size Description (Table 01495)
- 00h WORD 000Ah (function number???)
- 02h WORD ???
- 04h DWORD pointer to buffer for ???
- 08h 4 BYTEs ???
- 0Ch WORD transfer size
- --------N-214402-----------------------------
- INT 21 - 10NET v5.0 - 10MEMMGR.SYS - API
- AX = 4402h
- BX = file handle referencing device "MEMMGR0$"
- DS:DX -> 6-byte buffer for interface info (see #01496)
- CX ignored
- Return: CF clear if successful
- AX destroyed
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- SeeAlso: AX=4402h"10BEUI",INT 6F/AH=00h"10NET"
- Format of 10NET 10MEMMGR.SYS interface info:
- Offset Size Description (Table 01496)
- 00h DWORD address of entry point (see #01497)
- 04h WORD version (0500h for v5.00)
- (Table 01497)
- Call 10NET 10MEMMGR.SYS entry point with:
- AL = 01h ???
- BX = ???
- Return: CF clear if successful
- CF set on error
- AX = error code
- AL = 02h ???
- ???
- AL = 03h ???
- ???
- AL = 04h set/restore memory allocation strategy
- BX = subfunction
- 0000h set strategy
- 0001h restore strategy
- Return: CF clear if successful
- CF set on error (if function disabled)
- various registers destroyed
- AL = other
- Return: CF set
- AX = 0000h
- BL = 01h
- --------V-214402-----------------------------
- INT 21 - Compaq AG1024.SYS - RGDI - GET DRIVER LOCATION
- AX = 4402h
- BX = file handle for device "$$$$RGDI"
- CX = 0006h (size of returned data)
- DS:DX -> location record (see #01498)
- Return: CF clear if successful
- buffer filled
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Program: AG1024.SYS is a device driver for the Advanced Graphics 1024 adapter
- SeeAlso: AX=4403h"RGDI"
- Format of Compaq AG1024.SYS location record:
- Offset Size Description (Table 01498)
- 00h WORD signature 55AAh
- 02h WORD segment of ???
- 04h WORD segment of device driver's code
- --------N-214402-----------------------------
- INT 21 - FTPSOFT.DOS v3.1 - GET ???
- AX = 4402h
- BX = file handle for device "FTPSOFT$"
- CX = size of buffer
- DS:DX -> buffer for data (see #01499)
- Return: CF clear if successful
- buffer filled
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Program: FTPSOFT.DOS is a device driver for Protocol Manager support from
- FTP Software, Inc.
- SeeAlso: AH=3Fh"PC/TCP",AX=4402h"NDIS"
- Format of FTPSOFT.DOS data:
- Offset Size Description (Table 01499)
- 00h WORD (call) BA98h (if different, no data returned)
- 02h DWORD -> NDIS common characteristics table
- (see #01435 at AX=4402h"NDIS")
- 06h DWORD (call) -> new dispatch table (see #01437 at AX=4402h"NDIS")
- 0Ah DWORD -> 28-byte buffer for ??? data
- 0Eh DWORD ???
- 12h DWORD -> FAR function to reset dispatch jump table to defaults
- 16h BYTE ???
- Note: the addresses in the new dispatch table are copied into an internal
- jump table which may be reset by calling the function pointed at by
- offset 12h
- --------n-214402-----------------------------
- INT 21 U - PenDOS PENDEV.SYS - GET ENTRY POINTS
- AX = 4402h
- BX = file handle for device "$$PENDOS" or "$$PD_REG"
- CX = size of buffer (4 for $$PENDOS and a 4,8,12, or 16 for $$PD_REG)
- DS:DX -> buffer for entry point record (see #01500)
- Return: CF clear if successful
- buffer filled
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Program: A limited version of PenDOS by Communication Intelligence Corporation,
- which provides pen capability to keyboard-based programs, is bundled
- with IBM DOS 6.1
- SeeAlso: AX=4403h"PENDEV.SYS"
- Format of PENDEV.SYS entry point record:
- Offset Size Description (Table 01500)
- 00h DWORD -> array of jumps
- 04h WORD offset of function to retrieve entry point (see #01501)
- 06h 2 BYTEs signature "Pe"
- 08h WORD offset of function to set entry point (see #01502)
- 0Ah 2 BYTEs signature "nD"
- 0Ch WORD offset of function to clear entry point (see #01503)
- 0Eh WORD signature "OS"
- (Table 01501)
- Call PENDEV.SYS function to retrieve entry point with:
- AX = index of entry point (0-9)
- Return: CF clear if successful
- DX:AX -> desired entry point
- CF set on error (AX out of range)
- (Table 01502)
- Call PENDEV.SYS function to set entry point with:
- AX = index of entry point (0-9)
- DX:SI -> new handler
- Return: CF clear if successful
- CF set on error (AX out of range)
- (Table 01503)
- Call PENDEV.SYS function to clear entry point with:
- AX = index of entry point (0-9)
- Return: CF clear if successful
- CF set on error (AX out of range)
- Note: resets the jump at the specified entry point to its default target,
- which simply returns
- --------N-214402-----------------------------
- INT 21 U - LAN Manager - TCPDRV.DOS - API
- AX = 4402h
- BX = file handle referencing device "TCPDRV$"
- CX = 0019h
- DS:DX -> buffer containing request block (see #01504)
- Return: CF clear if successful
- buffer filled
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Program: TCPDRV.DOS is the low-level device driver supporting LAN Manager's
- TCP/IP protocol stack
- Format of TCPDRV.DOS request block:
- Offset Size Description (Table 01504)
- 00h BYTE (call) function number
- 00h initialize ???
- 06h get ???
- 07h get ???
- 01h BYTE (call) 00h
- (ret) error code if error, unchanged if successful
- 02h WORD signature 4354h ('CT')
- ---function 00h---
- 04h DWORD (call) pointer to ??? FAR function
- function is called with ES:BX -> device driver request used to
- invoke this function
- 08h 4 BYTEs ???
- 0Ch DWORD (call) pointer to ??? record, WORD at offset 22h is read
- 10h DWORD (ret) -> ??? buffer if 0000h:0000h on call
- ---function 06h---
- 04h 4 BYTEs ???
- 08h DWORD (ret) pointer to ???
- ---function 07h---
- 04h DWORD (ret) pointer to ??? record
- --------y-214402-----------------------------
- INT 21 U - PC Tools 9 CPRLOW.EXE - GET CODE AND DATA ADDRESSES
- AX = 4402h
- BX = file handle referencing device "RECLOWLD"
- DS:DX -> buffer for address list (see #01505)
- CX ignored
- Return: CF clear if successful
- buffer filled
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Format of CPRLOW address list:
- Offset Size Description (Table 01505)
- 00h WORD segment of CPRLOW code
- 02h WORD offset in code segment of ??? entry point
- (switches into protected mode)
- 04h WORD offset in code segment of jump array (see #01506)
- 06h WORD segment of copy of interrupt vector table at CPRLOW load time
- Note: neither the entry point nor the jump array is valid until after a
- CPR /LOAD, because CPR.EXE installs the code into CPRLOW at runtime.
- Format of CPRLOW jump array:
- Offset Size Description (Table 01506)
- 00h 3 BYTEs initialize CPRLOW interrupt hooks
- 03h 3 BYTEs reset timers and enable CPR (hotkey enable)
- 06h 3 BYTEs disable CPR (hotkey disable)
- 09h 3 BYTEs clear ??? flag, hotkey disable, and ???
- 0Ch 3 BYTEs initialize delay loop counter (destroys AX,BX,CX,DX)
- 0Fh 3 BYTEs disable CPR completely (commandline /DISABLE)
- 12h 3 BYTEs enable ??? if CPR enabled by both cmdline and hotkey
- 15h 3 BYTEs enable CPR (commandline /ENABLE)
- --------s-214402-----------------------------
- INT 21 U - Creative Technology CTMMSYS.SYS v1.00.01 - API
- AX = 4402h
- BX = file handle for device "CTMMSYS$"
- CX = 0004h (size of data)
- DS:DX -> buffer for entry point (see #01507)
- Return: CF clear if successful
- buffer updated
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Program: CTMMSYS.SYS is the Creative DOS Multimedia Architecture Integration
- driver
- SeeAlso: AX=4402h"CTSB2",INT 80/BX=0000h"SBFM"
- Format of CTMMSYS.SYS entry point record:
- Offset Size Description (Table 01507)
- 00h DWORD (call) signature 4D6D7443h (ASCII "CtmM")
- (ret) pointer to CTMMSYS entry point (see #01508)
- SeeAlso: #01509
- (Table 01508)
- Call CTMMSYS.SYS entry point with:
- AX = ???
- STACK: WORD ???
- WORD ???
- WORD ??? (0001h,0002h,0005h,0006h)
- WORD ???
- DWORD -> ???
- WORD ???
- WORD ???
- Return: DX:AX = ??? or error code
- 0000h:000Bh invalid value for ???
- 0000h:000Fh API call already in progress
- SeeAlso: #01507
- --------s-214402-----------------------------
- INT 21 U - Creative Technology CTSB2.SYS v1.01.01 - API
- AX = 4402h
- BX = file handle for device "CTSOUND0"
- CX = 0004h (size of data)
- DS:DX -> buffer for entry point (see #01509)
- Return: CF clear if successful
- buffer updated
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Program: CTMMSYS.SYS is the Creative DOS Multimedia Architecture Integration
- driver
- SeeAlso: AX=4402h"CTMMSYS",INT 80/BX=0000h"SBFM"
- Format of CTSB2.SYS entry point record:
- Offset Size Description (Table 01509)
- 00h DWORD (call) signature 4D6D7443h (ASCII "CtmM")
- (ret) pointer to CTSB2 entry point (see #01510)
- SeeAlso: #01507
- (Table 01510)
- Call CTSB2.SYS entry point with:
- AX = ???
- STACK: DWORD -> ???
- WORD function number
- (0100h,0200h,0300h,0400h,0500h,0600h,0701h)
- DWORD -> ???
- WORD ???
- WORD ???
- Return: DX:AX = ??? or error code
- 0000h:0004h invalid subfunction???
- 0000h:000Bh invalid value for ???
- 0000h:000Fh API call already in progress
- SeeAlso: #01509
- --------m-214402-----------------------------
- INT 21 U - Novell DOS 7 EMM386.EXE - GET STATE RECORD???
- AX = 4402h
- BX = file handle for device "EMMXXXX0"
- CX = 003Eh (size of state record)
- DS:DX -> buffer for state record (see #01511)
- Return: CF clear if successful
- buffer filled (see #03603 at INT 67/AH=3Fh)
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Format of Novell DOS 7 EMM386.EXE state record:
- Offset Size Description (Table 01511)
- 00h WORD signature EDC0h
- 02h 60 BYTEs ???
- --------m-214402SF00-------------------------
- INT 21 U - Memory Managers - GET API ENTRY POINT
- AX = 4402h subfn 00h
- BX = file handle for device "EMMXXXX0"
- CX = 0006h (size of buffer in bytes)
- DS:DX -> buffer for API entry point record (see #01512)
- first byte must be 00h on entry
- Return: CF clear if successful
- buffer filled (see #03603 at INT 67/AH=3Fh)
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Notes: this function is supported by Microsoft EMM386.EXE v4.45+ and
- CEMM v5.10+, and is intended for use by MS Windows as it starts up
- if no other program has hooked INT 67, an alternate installation
- check for CEMM is testing for the string
- "COMPAQ EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
- handler's segment; if present, the word at offset 12h contains the
- offset of the API entry point
- SeeAlso: AX=4402h/SF=01h,AX=4402h/SF=02h,AX=4402h"EMM386",INT 67/AH=3Fh
- Format of memory manager API entry point record:
- Offset Size Description (Table 01512)
- 00h WORD ??? (0022h for CEMM 5.11, 0025h for MS EMM386 v4.45)
- 02h DWORD manager's private API entry point
- (see #01513,#03666 at INT 67/AX=FFA5h)
- (Table 01513)
- Call CEMM v5.10+ entry point with:
- AH = 00h get memory manager's state
- Return: AH = state
- bit 0: turned OFF
- bit 1: AUTO mode enabled
- AH = 01h set memory manager's state
- AL = new state (00h ON, 01h OFF, 02h AUTO)
- Return: CF clear if successful
- CF set on error
- AH = 02h Weitek coprocessor support
- AL = subfunction
- 00h get Weitek support state
- Return: AL = status
- bit 0: Weitek coprocessor is present
- bit 1: Weitek support is enabled
- 01h turn on Weitek support
- 02h turn off Weitek support
- Return: CF clear if successful
- CF set on error
- AH = error code (01h invalid subfunc, 02h no Weitek)
- AH = 05h get statistics
- ???
- AH > 06h
- Return: CF set
- AH = 01h (invalid function)
- Notes: AH=03h,04h,06h are NOPs which return CF clear, presumably for backwards
- compatibility with earlier versions of CEMM
- in v5.11, AH=05h merely prints an error message (using INT 21/AH=09h)
- stating that a different version of CEMM is installed and it is
- therefore not possible to display the statistics
- --------m-214402SF01-------------------------
- INT 21 U - Memory Managers - GET EMM IMPORT STRUCTURE ADDRESS
- AX = 4402h subfn 01h
- BX = file handle for device "EMMXXXX0"
- CX = 0006h (size of buffer in bytes)
- DS:DX -> buffer for EMM import structure record (see #01514)
- first byte must be 01h on entry
- Return: CF clear if successful
- buffer filled (see also #03603 at INT 67/AH=3Fh)
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Notes: this function is supported by Microsoft EMM386.EXE v4.45+,
- QEMM-386 v6+, and CEMM v5.10+, and is intended for use by MS Windows
- as it starts up
- for QEMM-386, this call always returns an error if Windows3 support
- has been disabled with the NW3 switch
- SeeAlso: AX=4402h/SF=00h,AX=4402h"EMM386",INT 2F/AX=D201h/BX=5145h
- SeeAlso: INT 67/AH=3Fh
- Format of EMM import structure record:
- Offset Size Description (Table 01514)
- 00h DWORD physical address of EMM import structure (see #01515)
- 04h BYTE EMM import structure major version
- 05h BYTE EMM import structure minor version
- Note: vession 1.00 contains only EMS information (Windows 3.0+)
- version 1.10 contains UMB/XMS/HMA/EMS information (Windows 3.1)
- version 1.11 is version 1.10 plus memory manager maker/product name
- SeeAlso: #03643
- Format of Global EMM Import record:
- Offset Size Description (Table 01515)
- 00h BYTE bit flags
- bit 2: ???
- bit 3: free EMM386 virtual HMA only if hma_page_table_paddr!=0
- bit 4: no UMB???
- 01h BYTE reserved (0)
- 02h WORD size of structure in bytes
- 04h WORD structure version
- 06h DWORD reserved
- 0Ah 384 BYTEs 64 EMS frame status records (see #01516), one per 16K of
- real-mode 1M address space
- 18Ah BYTE ??? (must be at least 3*number_of_EMS_frames+4)
- 18Bh BYTE number of UMB frame descriptors following
- 18Ch 4N DWORDs UMB frame descriptors
- each is 4 DWORDs giving physical page numbers for the four
- 4K pages of a 16K EMS frame (00000000h if non-UMB page)
- var BYTE number of EMS handle info records following
- 16N BYTEs EMS handle info records (see #01518)
- ---version 1.10+ ---
- DWORD realmode INT 67 vector (used by Windows to set breakpoints)
- DWORD physical address of HMA page table values
- BYTE number of free page entries following
- 2N DWORDs free page entries
- each is:
- DWORD physical page number
- DWORD number of consecutive physical pages
- BYTE number of XMS handle info records following
- 00h if memory manager does not emulate XMS or has real mode
- XMS code which can execute in the Windows environment
- 12N BYTEs XMS handle info records (see #01519)
- BYTE number of free UMB info records following
- 2N WORDs free UMB info records
- each is:
- WORD real mode start segment
- WORD size in paragraphs
- ---version 1.11---
- 20 BYTEs blank-padded maker name
- 20 BYTEs blank-padded product name
- Format of EMS frame status record:
- Offset Size Description (Table 01516)
- 00h BYTE frame type (see #01517)
- 01h BYTE owner handle (00h/FFh = none) from frame including UMB
- index to UMB frame descriptors
- 02h WORD logical page for frame, 7FFFh if none, FFFFh if non-EMS frame
- 04h BYTE EMS physical page number (FFh for non-EMS = don't care???)
- 05h BYTE flags for non-EMS frames (00h for EMS frame)
- bits 0,1 for first 4K, bits 2,3 for second 4K, etc:
- 10: direct mapping (linear address = physical address)
- 01: UMB mapping
- Bitfields for EMS frame type:
- Bit(s) Description (Table 01517)
- 0 EMS frame
- 1 (if EMS frame) in standard 64K page frame
- 2 first 4K of frame is UMB
- 3 second 4K of frame is UMB
- 4 third 4K of frame is UMB
- 5 last 4K of frame is UMB
- Format of EMS handle info record:
- Offset Size Description (Table 01518)
- 00h BYTE handle number (00h = system handle)
- 01h BYTE flags
- bit 0: normal handle rather than system handle
- bit 2: ??? (set by some EMS managers)
- 02h 8 BYTEs EMS handle's name
- 0Ah WORD number of 16K pages for handle
- 0Ch DWORD physical address of page table entries forming page map
- Note: all values should be zero for the system handle if no large frame
- support is present
- Format of XMS handle info record:
- Offset Size Description (Table 01519)
- 00h WORD handle
- 02h WORD flags
- bit 0: handle usable by Windows
- (already in use when Windows started if clear)
- bit 1: reserved (0)
- 04h DWORD size in KB (may be zero, used only if flags bit 0 set)
- 08h DWORD physical address (only if flags bit 0 set)
- --------m-214402SF02-------------------------
- INT 21 U - Memory Managers - GET MEMORY MANAGER VERSION
- AX = 4402h subfn 02h
- BX = file handle for device "EMMXXXX0"
- CX = 0002h (size of buffer in bytes)
- DS:DX -> buffer for memory manager version (see #01520)
- first byte must be 02h on entry
- Return: CF clear if successful
- buffer filled
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Note: this function is supported by Microsoft EMM386.EXE v4.45+ and
- CEMM v5.10+, and is intended for use by MS Windows as it starts up
- SeeAlso: AX=4402h/SF=00h,AX=4402h"EMM386",INT 67/AH=3Fh
- Format of memory manager version:
- Offset Size Description (Table 01520)
- 00h BYTE major version
- 01h BYTE minor version (binary)
- --------m-214402-----------------------------
- INT 21 U - Microsoft EMM386.EXE v4.45 - GET MEMORY MANAGER INFORMATION
- AX = 4402h
- BX = file handle for device "EMMXXXX0"
- CX = size of buffer in bytes (varies, see #01521)
- DS:DX -> buffer for returned data (see #01521)
- first byte must be set on entry to indicate desired data
- Return: CF clear if successful
- buffer filled
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Notes: an error is returned if the number of bytes to be read does not match
- the number of bytes returned for the specified data item
- this function is part of the interface which allows MS Windows to
- cooperate with memory managers
- SeeAlso: AX=4402h/SF=00h,AX=4402h/SF=01h,AX=4402h/SF=02h,INT 67/AX=FFA5h
- Format of EMM386.EXE data buffer:
- Offset Size Description (Table 01521)
- 00h BYTE (call) function
- 03h get ???
- 04h get ???
- ---function 03h---
- 00h WORD ???
- 02h WORD ???
- ---function 04h---
- 00h WORD segment of UMB containing EMM386 code/data
- 02h WORD number of paragraphs of EMM386 code/data in UMB
- 04h WORD ???
- ----------214402-----------------------------
- INT 21 U - IFSHLP.SYS - GET ENTRY POINT
- AX = 4402h
- BX = file handle for device "IFS$HLP$"
- CX = 0008h (size of buffer in bytes)
- DS:DX -> buffer for entry point record (see #01415 at AH=3Fh"IFSHLP")
- Return: CF clear if successful
- buffer filled
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- SeeAlso: AH=3Fh"IFSHLP"
- --------D-214403-----------------------------
- INT 21 - DOS 2+ - IOCTL - WRITE TO CHARACTER DEVICE CONTROL CHANNEL
- AX = 4403h
- BX = file handle referencing character device
- CX = number of bytes to write
- DS:DX -> data to write
- Return: CF clear if successful
- AX = number of bytes actually written
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Notes: format of data is driver-specific
- (also see separate entries below for some specific cases)
- if the file handle refers to "4DOSSTAK", the 4DOS (v2.x-3.03)
- KEYSTACK.SYS driver will push the specified characters on the
- keyboard stack; similarly for "NDOSSTAK", the NDOS KEYSTACK.SYS
- driver will push the characters onto the keyboard stack
- this function was not supported by Digital Research's DOS-Plus
- SeeAlso: AX=4400h,AX=4402h"DOS 2+",AX=4405h"DOS",INT 2F/AX=122Bh
- SeeAlso: INT 2F/AX=D44Dh,INT 2F/AX=D44Fh
- --------c-214403-----------------------------
- INT 21 - SMARTDRV.SYS v3.x only - IOCTL - CACHE CONTROL
- AX = 4403h
- BX = handle for device "SMARTAAR"
- CX = number of bytes to write
- DS:DX -> SMARTDRV control block (see #01523)
- Return: CF clear if successful
- AX = number of bytes actually written
- 0000h if control block too small for given command
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Note: NCache2 (from the Norton Utilities v8.0) attempts to support this
- interface, but does not do so correctly, often hanging the system;
- one should use the SmartDrive v4.x or NCache private interfaces
- (see INT 2F/AX=4A10h/BX=0000h,INT 2F/AX=FE00h/DI=4E55h)
- SeeAlso: AX=4402h"SMARTDRV",INT 2F/AX=4A10h/BX=0000h
- (Table 01522)
- Values for SMARTDRV function code:
- 00h flush cache
- 01h flush and discard cache
- 02h disable caching (flushes and discards cache first)
- 03h enable caching
- 04h control write caching
- 05h set flushing tick count
- 06h lock cache contents
- 07h unlock cache contents
- 08h set flush-on-reboot flag
- 09h unused
- 0Ah control full-track caching
- 0Bh reduce cache size
- 0Ch increase cache size
- 0Dh set INT 13 chain address
- Format of SMARTDRV control block:
- Offset Size Description (Table 01523)
- 00h BYTE function code (see #01522)
- ---functions 00h-03h,06h,07h---
- no additional fields
- ---function 04h---
- 01h BYTE write caching control action
- 00h turn off write-through
- 01h turn on write-through
- 02h turn off write buffering (also flushes cache)
- 03h turn on write buffering (also flushes cache)
- ---function 05h---
- 01h WORD number of timer ticks between cache flushes
- ---function 08h---
- 01h BYTE new flush-on-reboot flag (00h off, 01h on)
- ---function 0Ah---
- 01h BYTE full-track writes are
- 00h not cached
- 01h cached
- ---functions 0Bh,0Ch---
- 01h WORD number of 16K pages by which to increase/reduce cache size
- ---function 0Dh---
- 01h DWORD new address to which to chain on INT 13
- Note: the previous address is not preserved
- --------d-214403-----------------------------
- INT 21 - CD-ROM device driver - IOCTL OUTPUT
- AX = 4403h
- BX = file handle referencing character device for CD-ROM driver
- CX = number of bytes to write
- DS:DX -> control block (see #01524)
- Return: CF clear if successful
- AX = number of bytes actually written
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Notes: some device drivers support several subunits (that is more than one
- drive) but it is not possible to distinguish between them with this
- function; use INT 2F/AX=1510h or INT 2F/AX=0802h instead
- under Windows95, the "mscd$$$$" device cannot be opened so you cannot
- obtain the handle required by this function: use INT 2F/AX=1510h
- or INT 2F/AX=0802h instead
- SeeAlso: AX=4402h"CD-ROM",INT 2F/AX=0802h,INT 2F/AX=1510h
- Format of CR-ROM control block:
- Offset Size Description (Table 01524)
- 00h BYTE function code
- 00h eject disk
- 01h lock/unlock door
- 02h reset drive
- 03h control audio channel
- 04h write device control string
- 05h close tray
- ---functions 00h,02h,05h---
- no further fields
- ---function 01h---
- 01h BYTE lock function
- 00h unlock door
- 01h lock door
- ---function 03h---
- 01h BYTE input channel (0-3) for output channel 0
- 02h BYTE volume for output channel 0
- 03h BYTE input channel (0-3) for output channel 1
- 04h BYTE volume for output channel 1
- 05h BYTE input channel (0-3) for output channel 2
- 06h BYTE volume for output channel 2
- 07h BYTE input channel (0-3) for output channel 3
- 08h BYTE volume for output channel 3
- Note: output channels 0 and 1 are left and right, 2 and 3 are left prime and
- right prime; a volume of 00h is off
- ---function 04h---
- 01h N BYTEs bytes to send directly to the CD-ROM drive without
- interpretation
- --------D-214403-----------------------------
- INT 21 U - MS-DOS 7.0+ - CONFIG$ device - SET??? CONFIGURATION INFORMATION
- AX = 4403h
- BX = file handle for character device "CONFIG$"
- CX = number of bytes to write
- DS:DX -> buffer containing ???
- Return: CF clear if successful
- AX = number of bytes actually written
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Note: IOCTL Output to CONFIG$ is only available while IO.SYS is booting
- the system; once CONFIG.SYS has been processed, this call always
- succeeds, ignoring any input
- SeeAlso: AX=4403h"CONFIG$"
- --------d-214403-----------------------------
- INT 21 - Brian Antoine Seagate ST-01 SCSI.SYS - IOCTL - EXECUTE COMMANDS
- AX = 4403h
- BX = handle for device "SCSITAPE"
- CX = number of bytes to write
- DS:DX -> SCSITAPE control block (see #01525)
- Return: CF clear if successful
- AX = number of bytes actually written
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- SeeAlso: AX=4405h"ST-01",INT 78/AH=10h
- Format of SCSITAPE control block:
- Offset Size Description (Table 01525)
- 00h WORD command type
- 'F' Format (argument 1 = interleave, argument 2 = format type)
- 'E' Erase
- 'R' Rewind
- 'L' Load
- 'N' No Load
- 'S' Space (argument 1 = count, argument 2 = type)
- 'M' File Mark (argument 1 = count)
- 'A' Reassign
- 02h WORD argument 1
- 04h WORD argument 2
- 06h WORD segment of command buffer
- 08h WORD offset of command buffer
- 0Ah WORD length of command buffer
- --------E-214403-----------------------------
- INT 21 U - AI Architects - OS/x86??? - API
- AX = 4403h
- BX = handle for device "AIA_OS"
- CX = number of bytes to write (ignored)
- DS:DX -> 12-byte buffer (see #01526), first byte is command:
- 81h installation check
- 82h get API entry point
- 84h uninstall
- Return: CF clear if successful
- AX = number of bytes actually written
- DS:DX buffer filled
- CF set on error
- AX = error code (01h,05h,06h,0Ch,0Dh) (see #01680 at AH=59h)
- Notes: these functions are only available if the DOS extender was loaded as a
- device driver in CONFIG.SYS
- called by TKERNEL (a licensed version of AI Architects/Ergo OS/x86)
- SeeAlso: INT 2F/AX=FBA1h/BX=0081h,INT 2F/AX=FBA1h/BX=0082h
- Index: installation check;OS/x86|entry point;OS/x86|uninstall;OS/x86
- Format of buffer on return:
- Offset Size Description (Table 01526)
- 00h 4 BYTEs signature "IABH"
- ---if function 81h---
- (no additional fields)
- ---if function 82h---
- 04h DWORD pointer to API entry point (see INT 2F/AX=FBA1h/BX=0082h)
- ---if function 84h---
- 04h WORD success indicator
- 06h WORD segment of ???
- 08h WORD segment of ??? memory block to free if nonzero
- 0Ah WORD segment of ??? memory block to free if nonzero
- --------V-214403-----------------------------
- INT 21 - PGS1600.DEV - IOCTL - SET CONFIGURATION???
- AX = 4403h
- BX = file handle for device "PGS1600$"
- CX = 0018h (size of buffer)
- DS:DX -> configuration buffer (see #01484 at AX=4402h"PGS1600")
- Return: CF clear if successful
- AX = number of bytes actually written
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Program: PGS1600.DEV is a device driver for the Cornerstone Technology PG1600
- display adapter, which provides a 1600x1200 monochrome display as
- well as one of two emulations, MDA or CGA.
- SeeAlso: AX=4402h"PGS1600"
- --------N-214403-----------------------------
- INT 21 - PC/TCP IPCUST.SYS - RESET CONFIGURATION DATA READ POINTER
- AX = 4403h
- BX = file handle referencing device "$IPCUST"
- CX, DS:DX ignored
- Return: CF clear if successful
- AX destroyed
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Notes: there are a total of 378h bytes of configuration data for IPCUST.SYS
- version 2.05. If less than the entire data is read or written,
- the next read/write continues where the previous one ended; this
- call and AX=4402h both reset the location at which the next
- operation starts to zero
- v2.1+ uses a new configuration method, but allows the installation
- of IPCUST.SYS for backward compatibility with other software which
- must read the PC/TCP configuration
- SeeAlso: AH=3Fh"IPCUST",AH=40h"IPCUST",AX=4402h"IPCUST"
- --------V-214403-----------------------------
- INT 21 - Compaq AG1024.SYS - CPQ_MGES - IOCTL OUTPUT
- AX = 4403h
- BX = file handle referencing device "CPQ_MGES"
- DS:DX -> request packet (see #01527)
- CX ignored
- Return: CF clear if successful
- AX destroyed
- data buffer filled (if applicable)
- first word of request packet set to number of bytes of data
- available (amount returned is smaller of this and requested
- amount)
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Program: AG1024.SYS is a device driver for the Advanced Graphics 1024 adapter
- SeeAlso: AX=4403h"RGDI"
- Format of Compaq AG1024.SYS request packet:
- Offset Size Description (Table 01527)
- 00h WORD function
- 0000h get ??? (26h bytes)
- 0001h get ??? (36h bytes)
- 0002h set ??? (same as returned by function 0001h)
- 0003h get ??? (6 bytes)
- 0004h get ???
- 0005h get ???
- 0006h get ??? (10h bytes)
- 0007h set ??? (same as returned by function 0006h)
- ---functions 00h-03h,06h,07h---
- 02h WORD size of data buffer
- 04h DWORD -> buffer for function's data
- ---functions 04h,05h---
- 02h WORD ???
- 04h WORD size of data buffer
- 06h DWORD -> buffer to receive data
- --------V-214403-----------------------------
- INT 21 - Compaq AG1024.SYS - RGDI - IOCTL OUTPUT
- AX = 4403h
- BX = file handle referencing device "$$$$RGDI"
- DS:DX -> request packet (see #01528)
- CX ignored
- Return: CF clear if successful
- AX destroyed
- data buffer filled (if applicable)
- first word of request packet set to number of bytes of data
- available (amount returned is smaller of this and requested
- amount)
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Program: AG1024.SYS is a device driver for the Advanced Graphics 1024 adapter
- SeeAlso: AX=4402h"RGDI",AX=4403h"CPQ_MGES"
- Format of Compaq AG1024.SYS request packet:
- Offset Size Description (Table 01528)
- 00h WORD function
- 0000h get entry points
- 0001h get ???
- 02h DWORD address of buffer for returned data
- --------m-214403SF01-------------------------
- INT 21 U - Qualitas 386MAX v6.01+ - TURN 386MAX OFF
- AX = 4403h subfn 01h
- BX = handle for device "386MAX$$"
- DS:DX -> BYTE 01h
- CX ignored
- Return: DS:DX -> BYTE status (00h = successful)
- CF clear if successful
- AX destroyed
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Note: this function will fail if any EMS or UMBs are in use
- SeeAlso: AX=4403h/SF=02h,AX=4403h/SF=03h,AX=4403h/SF=05h
- --------m-214403SF02-------------------------
- INT 21 U - Qualitas 386MAX v6.01+ - TURN 386MAX ON
- AX = 4403h subfn 02h
- BX = handle for device "386MAX$$"
- DS:DX -> BYTE 02h
- CX ignored
- Return: DS:DX -> BYTE status (00h = successful)
- CF clear if successful
- AX destroyed
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- SeeAlso: AX=4403h/SF=01h,AX=4403h/SF=03h,AX=4403h/SF=05h
- --------m-214403SF03-------------------------
- INT 21 U - Qualitas 386MAX v6.01+ - SET STATE
- AX = 4403h subfn 03h
- BX = handle for device "386MAX$$"
- CX = number of bytes to copy (up to size of state buffer)
- DS:DX -> BYTE 03h followed by state buffer
- (see #01467 at AX=4402h"386MAX")
- Return: CF clear if successful
- AX = number of bytes actually written
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Note: the first byte of the buffer must be either 01h, 02h, or 03h
- (specifying the version of the state record) and the buffer must
- contain CX bytes AFTER the initial byte
- SeeAlso: AX=4402h"386MAX"
- --------m-214403SF05-------------------------
- INT 21 U - Qualitas 386MAX v7.00+ - LIMIT AUTOMATIC ACTIVATION TO STD EMS CALLS
- AX = 4403h subfn 05h
- BX = handle for device "386MAX$$"
- DS:DX -> BYTE 05h
- CX ignored
- Return: CF clear if successful
- AX destroyed
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Desc: specifies that 386MAX will only shift from AUTO to ON mode on standard
- EMS calls INT 67/AH=40h-5Dh
- SeeAlso: AX=4403h/SF=02h,AX=4403h/SF=03h,AX=4403h/SF=06h
- --------m-214403SF06-------------------------
- INT 21 U - Qualitas 386MAX v7.00+ - ALLOW AUTOMATIC ACTIVATION ON ANY INT 67
- AX = 4403h subfn 06h
- BX = handle for device "386MAX$$"
- DS:DX -> BYTE 06h
- CX ignored
- Return: CF clear if successful
- AX destroyed
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Desc: specified that 386MAX should shift from AUTO to ON mode on any INT 67
- call other than INT 67/AH=3Fh
- SeeAlso: AX=4403h/SF=01h,AX=4403h/SF=03h,AX=4403h/SF=05h
- --------n-214403-----------------------------
- INT 21 U - PenDOS PENDEV.SYS - ???
- AX = 4403h
- BX = file handle for device "$$PENDOS" or "$$PD_REG"
- CX = size of buffer
- DS:DX -> buffer containing ???
- Return: CF clear if successful
- buffer filled
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Program: A limited version of PenDOS by Communication Intelligence Corporation,
- which provides pen capability to keyboard-based programs, is bundled
- with IBM DOS 6.1
- Note: this call sets the WORD at offset 1Ah into the device driver request
- header used to call the driver to 0000h.
- SeeAlso: AX=4402h"PENDEV.SYS"
- --------D-214404-----------------------------
- INT 21 - DOS 2+ - IOCTL - READ FROM BLOCK DEVICE CONTROL CHANNEL
- AX = 4404h
- BL = drive number (00h = default, 01h = A:, etc.)
- CX = number of bytes to read
- DS:DX -> buffer
- Return: CF clear if successful
- AX = number of bytes actually read
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Notes: format of data is driver-specific
- this function was not supported by Digital Research's DOS-Plus
- SeeAlso: AX=4402h"DOS 2+",AX=4405h"DOS",INT 2F/AX=122Bh
- --------k-214404-----------------------------
- INT 21 - Stacker - GET DEVICE DRIVER ADDRESS AND SET VOLUME NUMBER
- AX = 4404h
- BL = drive number (00h = default, 01h = A:, etc.)
- CX = 0004h
- DS:DX -> DWORD buffer to receive device driver address
- Return: buffer filled with pointer into Stacker device driver (see #02550):
- driver + 19h if Stacker Anywhere controls this drive
- driver + 1Ah if Stacker controls this drive
- unchanged else
- Notes: in addition to returning the address of the Stacker device driver,
- this call also sets the volume number at offset 58h in the device
- driver (see #02550 at INT 25/AX=CDCDh)
- Stacker Anywhere does not link its built-in device driver into
- the standard device driver chain, but it can be found via CDS/DPB
- this call can be used as an installation check for all versions of
- Stacker and Stacker Anywhere to avoid the INT 25 call
- SeeAlso: AX=4408h,AX=440Eh,AH=52h,INT 25/AX=CDCDh
- --------k-214404-----------------------------
- INT 21 - Stacker - GET STACVOL FILE SECTORS
- AX = 4404h
- BL = drive number (0 is current drive)
- CX = byte count (i.e., 200h = 1 sector)
- DS:DX -> buffer (see #01529)
- Return: Data Buffer contains the number of sectors requested from the
- STACVOL physical file for the drive specified.
- Format of Stacker buffer:
- Offset Size Description (Table 01529)
- 00h WORD 01CDh
- 02h WORD sector count
- 04h DWORD number of starting sector
- 08h DWORD far pointer to Data Buffer
- --------k-214404-----------------------------
- INT 21 - DUBLDISK.SYS v2.6 - GET INFO
- AX = 4404h
- BL = drive number of DoubleDisk drive (00h = default, 01h = A:, etc.)
- CX = number of bytes (000Ah-0014h, call ignored otherwise)
- DS:DX -> data record (see #01530)
- Return: CF clear if successful
- AX = number of bytes read
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Program: DUBLDISK.SYS is the device driver portion of DoubleDisk, a disk
- expander by Vertisoft Systems, Inc.
- InstallCheck: for v2.6, scan memory for the signature "FAT 2.6 byte:",
- which is immediately followed by a data table (see #01531)
- BUG: VOPT (a disk optimizer by Golden Bow Software) assumes that any driver
- which returns the "correct" number of bytes when the first word of
- the buffer for the data record contains the signature value 4444h is
- DoubleDisk; a workaround is for the non-DoubleDisk driver to return
- no data if the signature is present
- SeeAlso: AX=440Dh"DOS 3.2+"
- Index: installation check;DUBLDISK.SYS
- Format of DUBLDISK data record:
- Offset Size Description (Table 01530)
- 00h WORD (call) signature 4444h
- 02h BYTE (call) function
- 00h ???
- 01h ???
- ---function 00h---
- 02h BYTE (ret) ???
- 03h BYTE (ret) ???
- ---function 01h---
- 02h WORD (ret) 4444h
- 04h WORD allocation unit size???
- 06h WORD ???
- 08h WORD ???
- 0Ah BYTE ???
- Format of DUBLDISK signature data table:
- Offset Size Description (Table 01531)
- 00h 5 BYTEs ???
- 05h BYTE first drive number
- 06h BYTE number of drives
- 07h ???
- --------k-214404-----------------------------
- INT 21 - DBLSPACE.BIN - IOCTL - FLUSH OR INVALIDATE INTERNAL CACHES
- AX = 4404h
- BL = drive number (00h = default, 01h = A:, etc)
- CX = 000Ah (size of DSPACKET structure)
- DS:DX -> DSPACKET structure (see #01532)
- Return: CF clear if IOCTL successful -- check DSPACKET for actual status
- AX = number of bytes actually transferred
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- SeeAlso: AX=4405h"DBLSPACE",INT 2F/AX=4A11h/BX=0000h
- Format of DoubleSpace DSPACKET structure:
- Offset Size Description (Table 01532)
- 00h WORD signature 444Dh ("DM")
- 02h BYTE command code
- 46h ('F') flush internal caches
- 49h ('I') flush and invalidate internal caches
- 03h WORD result code
- (ret) 4F4Bh ("OK") if successful, else unchanged
- 05h 5 BYTEs padding
- --------k-214404-----------------------------
- INT 21 - DBLSPACE.BIN v6.2 - IOCTL - GET ??? FOR SPECIFIED DRIVE
- AX = 4404h
- BL = drive number (00h = default, 01h = A:, etc)
- CX = size of DSPACKET structure (ignored in DOS 6.2)
- DS:DX -> DSPACKET structure (see #01533)
- Return: CF clear if IOCTL successful -- check DSPACKET for actual status
- AX = number of bytes actually transferred
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- SeeAlso: AX=4405h"DBLSPACE",INT 2F/AX=4A11h/BX=0000h
- Format of DoubleSpace DSPACKET structure:
- Offset Size Description (Table 01533)
- 00h WORD signature 444Dh ("DM")
- 02h BYTE command code
- 53h ('S') get ??? for specified drive
- 03h WORD result code
- (ret) 4F4Bh ("OK") if successful, else unchanged
- 05h DWORD (ret) pointer to 96-byte ??? data
- 09h DWORD (ret) pointer to ??? data
- 0Dh 3 BYTEs reserved
- --------k-214404-----------------------------
- INT 21 U - DoubleTools v1.0 - GET ???
- AX = 4404h
- BL = drive number (00h = default, 01h = A:, etc)
- CX = 0006h
- DS:DX -> DoubleTools structure (see #01534)
- Return: CF clear if IOCTL successful -- check DSPACKET for actual status
- AX = number of bytes actually transferred
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Note: the Transporter device driver has the signature 55h 61h 50h 74h
- ("DaPt") twelve bytes after it beginning
- Format of DoubleTools structure:
- Offset Size Description (Table 01534)
- 00h WORD (call) signature 55h AAh
- (ret) signature 78h 70h ("xp")
- 02h WORD (call) signature 52h 16h
- (ret) ???
- 04h WORD (ret) segment of driver's DS (same as its PSP)
- --------d-214404-----------------------------
- INT 21 U - xDISK v3.31 - CONFIGURE
- AX = 4404h
- BL = drive number (00h = default, 01h = A:, etc)
- CX = 0047h (length of version string)
- DS:DX -> 79-byte buffer for version string and ???
- DS:0081h = commandline containing new switches for driver
- Return: CF clear if successful
- AX = number of bytes actually transferred
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Program: xDISK is a shareware resizeable EMS RAMdisk by FM de Monasterio
- SeeAlso: AX=4405h"xDISK",INT 2F/AH=DDh/BX=7844h"xDISK"
- --------c-214404-----------------------------
- INT 21 - COMBI-disk v1.13 - GET DATA RECORD
- AX = 4404h
- BL = drive number (00h = default, 01h = A:, etc)
- CX = 0032h (length of data packet)
- DS:DX -> buffer for data packet (see #01535)
- Return: CF clear if successful
- AX = number of bytes actually transferred
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Program: COMBI-disk is a shareware combination cache and RAMdisk sharing a
- single pool of memory by Vadim V. Vlasov
- InstallCheck: scan the valid drives for one which returns a correctly-sized
- data packet with the proper signature in the first field
- SeeAlso: AX=4405h"COMBI"
- Index: installation check;COMBI-disk
- Format of COMBI-disk data packet:
- Offset Size Description (Table 01535)
- 00h 6 BYTEs ASCIZ signature "COMBI"
- 06h WORD version (high byte = major, low = decimal minor version)
- 08h BYTE current options
- 09h BYTE sectors per allocation block
- 0Ah WORD maximum buffer in KB
- 0Ch WORD current buffer in KB (less than max if XMS memory being lent)
- 0Eh WORD total number of allocation blocks
- 10h WORD current number of allocation blocks
- 12h WORD number of blocks being used by RAM disk
- 14h WORD number of blocks being used by cache or unused
- 16h WORD number of dirty cache blocks
- 18h WORD number of blocks which could not be written out due to errors
- 1Ah WORD total number of read requests
- 1Ch WORD total number of sectors read
- 1Eh WORD number of BIOS read requests (cache misses)
- 20h WORD number of sectors read via BIOS (cache misses)
- 22h WORD total number of write requests
- 24h WORD total number of sectors written
- 26h WORD number of BIOS write requests
- 28h WORD number of sectors written via BIOS
- 2Ah WORD number of RAM disk read requests
- 2Ch WORD number of sectors read from RAM disk
- 2Eh WORD number of RAM disk write requests
- 30h WORD number of sectors written to RAM disk
- --------d-214404-----------------------------
- INT 21 - SFS v1.00 - GET CONFIGURATION INFORMATION
- AX = 4404h
- BL = drive number (00h = default, 01h = A:, etc)
- CX = 001Ah (length of data packet)
- DS:DX -> buffer for data packet (see #01536)
- Return: CF clear if successful
- AX = number of bytes actually transferred
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Program: SFS (Secure FileSystem) is a shareware encrypting disk driver by
- Peter C. Gutmann
- SeeAlso: AX=4405h"SFS"
- Format of SFS data packet:
- Offset Size Description (Table 01536)
- 00h 4 BYTEs signature string "SFS1"
- 04h WORD SFS unit number (0-based)
- 06h WORD drive on which the SFS volume is mounted
- 08h DWORD sector offset of logical volume from start of physical volume
- 0 if logical volume = physical volume
- 0Ch WORD flag: 00h = no disk mounted, 01h = disk mounted
- 0Eh WORD flag: 00h read/write, 01h read-only
- 10h WORD quick-unmount hotkey
- (high byte = shift state, low = scan code) (see #00006)
- 12h WORD auto-unmount time in minutes, or 0000h if already expired, or
- FFFFh if not set
- 14h WORD time in minutes remaining before auto-unmount
- 16h WORD internal driver check code
- 0000h no error
- 0001h driver consistency check failed
- 0002h unit consistency check failed
- 18h WORD disk access mode
- 0000h BIOS
- 0001h IDE direct access
- 0002h SCSI direct access
- --------D-214405-----------------------------
- INT 21 - DOS 2+ - IOCTL - WRITE TO BLOCK DEVICE CONTROL CHANNEL
- AX = 4405h
- BL = drive number (00h = default, 01h = A:, etc)
- CX = number of bytes to write
- DS:DX -> data to write
- Return: CF clear if successful
- AX = number of bytes actually written
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Notes: format of data is driver-specific
- this function was not supported by Digital Research's DOS-Plus
- SeeAlso: AX=4403h"DOS",AX=4404h"DOS",INT 2F/AX=122Bh
- --------d-214405-----------------------------
- INT 21 - Brian Antoine Seagate ST-01 SCSI.SYS - IOCTL - EXECUTE COMMANDS
- AX = 4405h
- BX = drive number (00h = default, 01h = A:, etc)
- CX = number of bytes to write
- DS:DX -> SCSIDISK control block (see also #01525 at AX=4403h"ST-01")
- Return: CF clear if successful
- AX = number of bytes actually written
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- SeeAlso: AX=4403h"ST-01"
- --------k-214405-----------------------------
- INT 21 U - DBLSPACE.BIN - IOCTL - FLUSH OR INVALIDATE INTERNAL CACHES
- AX = 4405h
- BL = drive number (00h = default, 01h = A:, etc)
- CX = 000Ah (size of DSPACKET structure)
- DS:DX -> DSPACKET structure (see #01537)
- Return: CF clear if IOCTL successful -- check DSPACKET for actual status
- AX = number of bytes actually transferred
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Note: this call is identical to the documented AX=4404h
- SeeAlso: AX=4404h"DBLSPACE",INT 2F/AX=4A11h/BX=0000h
- Format of DoubleSpace DSPACKET structure:
- Offset Size Description (Table 01537)
- 00h WORD signature 444Dh ("DM")
- 02h BYTE command code
- 46h ('F') flush internal caches
- 49h ('I') flush and invalidate internal caches
- 03h WORD result code
- (ret) 4F4Bh ("OK") if successful, else unchanged
- 05h 5 BYTEs padding
- --------d-214405-----------------------------
- INT 21 U - xDISK v3.31 - ???
- AX = 4405h
- BL = drive number (00h = default, 01h = A:, etc)
- CX = number of bytes to write
- DS:DX -> buffer containing version string
- ???
- Return: CF clear if successful
- AX = number of bytes actually transferred
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Program: xDISK is a shareware resizeable EMS RAMdisk by FM de Monasterio
- SeeAlso: AX=4404h"xDISK",INT 2F/AH=DDh/BX=7844h"xDISK"
- --------d-214405-----------------------------
- INT 21 - COMBI-disk v1.13 - CONTROL COMBI-disk
- AX = 4405h
- BL = drive number (00h = default, 01h = A:, etc) for RAM disk
- CX = number of bytes to write
- DS:DX -> buffer containing command packet (see #01539)
- Return: CF clear if successful
- AX = number of bytes actually transferred
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- SeeAlso: AX=4404h"COMBI"
- (Table 01538)
- Values for COMBI-disk command code:
- 80h flush cache
- 81h change options byte
- 82h shrink memory
- 83h expand memory
- 84h get dirty block information
- 85h reset write errors
- 86h reset counters
- Format of COMBI-disk command packet:
- Offset Size Description (Table 01539)
- 00h WORD version
- 02h BYTE command code (see #01538)
- ---command code 80h---
- no additional fields
- ---command code 81h---
- 03h BYTE new options byte (see #01540)
- ---command code 82h---
- 03h WORD number of KB to release
- ---command code 83h---
- 03h WORD number of KB to expand
- ---command code 84h---
- 03h DWORD -> buffer for block info (see #01541)
- ---command code 85h---
- 03h DWORD block ID
- ---command code 86h---
- 03h BYTE which counters to reset
- bit 0: hard disk read counts
- bit 1: hard disk write counts
- bit 2: RAM disk read/write counts
- Note: multiple commands may be placed in a single packet by stringing
- together as many command/argument pairs as desired
- Bitfields for COMBI-disk options byte:
- Bit(s) Description (Table 01540)
- 0 cache off
- 1 cache frozen
- 2 write caching enabled
- 3 delayed writing disabled
- 5 fix memory allocation (no XMS lending)
- 6 no 'sector not found' error
- Format of COMBI-disk block info:
- Offset Size Description (Table 01541)
- 00h DWORD block ID
- 04h BYTE bitmask of valid sectors in block
- 05h BYTE bitmask of dirty sectors in block
- 06h BYTE last error returned by BIOS
- 07h BYTE number of errors
- --------D-214405-----------------------------
- INT 21 - SFS v1.00 - DRIVER CONTROL
- AX = 4405h
- BL = drive number (00h = default, 01h = A:, etc)
- CX = number of bytes to write
- DS:DX -> data to write (see #01543)
- Return: CF clear if successful
- AX = number of bytes actually written
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Program: SFS (Secure FileSystem) is a shareware encrypting disk driver by
- Peter C. Gutmann
- SeeAlso: AX=4404h"SFS"
- (Table 01542)
- Values for SFS control function:
- 00h "PACKET_SET_DISKINFO" set disk parameters
- 01h "PACKET_SET_KEYINFO" set keying information
- 02h "PACKET_SET_READONLY" select read/write or read-only
- 03h "PACKET_SET_DRIVENO" set drive number to mount
- 04h "PACKET_SET_MOUNTSTATUS" set mount status
- 05h "PACKET_SET_UNMOUNT" set/clear quick-unmount hotkey
- 06h "PACKET_SET_TIMEOUT" set/clear auto-unmount timeout
- Format of SFS control data packet:
- Offset Size Description (Table 01543)
- 00h WORD signature 4330h ('C0')
- 02h WORD function (see #01542)
- ---function 00h---
- 04h WORD sector size in bytes
- 06h BYTE sectors per cluster
- 07h WORD number of boot sectors
- 09h BYTE number of copies of FAT
- 0Ah WORD size of root directory in entries
- 0Ch WORD number of sectors on disk, 16-bit
- 0Eh BYTE media descriptor byte
- 0Fh WORD sectors per FAT
- 11h WORD sectors per track
- 13h WORD number of heads
- 15h DWORD number of hidden sectors
- 19h DWORD number of sectors on disk, 32-bit
- ---function 01h---
- 04h 20 BYTEs master IV for encrypted disk
- 18h 64 BYTEs NDC/SHS keying information
- ---function 02h---
- 04h WORD read-only state: 00h read-only, 01h read/write
- ---function 03h---
- 04h WORD drive number (see #01544)
- 06h DWORD sector offset of logical volume from start of physical volume
- 0 if logical volume = physical volume
- ---function 04h---
- 04h WORD mount status (00h unmounted, 01h mounted)
- ---function 05h---
- 04h WORD hotkey (high byte = shift state, low byte = scan code or 00h)
- (see #00006)
- 0000h to disable hotkey
- ---function 06h---
- 04h WORD timeout in minutes before automatic unmount
- 0000h to disable auto-unmount
- Notes: the data for function 00h corresponds to a DOS BPB (see AH=53h)
- functions 00h, 01h, and 03h automatically unmount the encrypted drive
- unmounting a drive with function 04h also destroys the encryption
- information in the driver and forces all dirty buffers to be flushed
- Bitfields for SFS drive number:
- Bit(s) Description (Table 01544)
- 15-12 drive access mode
- 0000 BIOS access
- 0001 direct IDE access
- 0010 direct SCSI access
- ---if BIOS access---
- 11-8 unused (0)
- 7-0 BIOS drive number
- ---if IDE access---
- 11-8 unused (0)
- 7-0 IDE drive number
- ---if SCSI access---
- 11-8 SCSI host number
- 7-4 SCSI target ID
- 3-0 SCSI logical unit number
- --------D-214406-----------------------------
- INT 21 - DOS 2+ - IOCTL - GET INPUT STATUS
- AX = 4406h
- BX = file handle
- Return: CF clear if successful
- AL = input status
- 00h not ready (device) or at EOF (file)
- FFh ready
- AH may be destroyed (refer to note)
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Notes: files may not register as being at EOF if positioned there by AH=42h
- under DOS 5.0, on a successful return, AH contains either the next
- character which will be read or 1Ah if at EOF; under a Windows95
- DOS box, AH seems to be either unchanged or 00h
- this function was not supported by Digital Research's DOS-Plus
- BUG: the CLOCK$ device under DR DOS 3.41 always indicates 'Ready'; this was
- corrected in v5.0
- SeeAlso: AX=4407h,INT 2F/AX=122Bh
- --------D-214407-----------------------------
- INT 21 - DOS 2+ - IOCTL - GET OUTPUT STATUS
- AX = 4407h
- BX = file handle
- Return: CF clear if successful
- AL = input status
- 00h not ready
- FFh ready
- CF set on error
- AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
- Notes: for DOS 2+, files are always ready for output, even if the disk is
- full or no media is in the drive
- this function was not supported by Digital Research's DOS-Plus
- SeeAlso: AX=4406h,INT 2F/AX=122Bh
- --------D-214408-----------------------------
- INT 21 - DOS 3.0+ - IOCTL - CHECK IF BLOCK DEVICE REMOVABLE
- AX = 4408h
- BL = drive number (00h = default, 01h = A:, etc)
- Return: CF clear if successful
- AX = media type (0000h removable, 0001h fixed)
- CF set on error
- AX = error code (01h,0Fh) (see #01680 at AH=59h/BX=0000h)
- Notes: in addition to the normal operation, if Stacker is installed, this
- call also sets the volume number at offset 58h in the Stacker
- device driver (except under DR DOS 3.41-5.0, which do not pass
- through this call to the driver; use AX=440Eh instead)
- (see AX=4404h"Stacker",AX=440Eh,INT 25/AX=CDCDh)
- this function was not supported by Digital Research's DOS-Plus
- SeeAlso: AX=4400h,AX=4404h"Stacker",AX=4409h,INT 2F/AX=122Bh
- --------D-214409-----------------------------
- INT 21 - DOS 3.1+ - IOCTL - CHECK IF BLOCK DEVICE REMOTE
- AX = 4409h
- BL = drive number (00h = default, 01h = A:, etc)
- Return: CF clear if successful
- DX = device attribute word
- bit 15: drive is SUBSTituted
- bit 13: (DR DOS 3.41/5.0 local drives only) always set
- media ID needed
- bit 12: drive is remote
- bit 9: direct I/O not allowed
- CF set on error
- AX = error code (01h,0Fh,15h) (see #01680 at AH=59h/BX=0000h)
- Notes: on local drives, DX bits not listed above are the attribute word from
- the device driver header (see #01646 at AH=52h); for remote drives,
- the other bits appear to be undefined for MS-DOS versions prior to
- 5.0 (they are all cleared in DOS 5+)
- checking whether DX=0800h on return appears to be a fairly reliable
- method for detecting Microsoft's RAMDRIVE, though not for other
- ramdisks (there appears to be no simple yet foolproof method for
- detecting ramdisks, although the presence of only a single copy of
- the FAT and only a single head on non-removable devices is a fairly
- good indicator); for Windows95, RAMDRIVE returns DX=4800h
- for non-existent remote drives, this function sometimes returns
- AX=0015h (drive not ready) instead of AX=000Fh (invalid drive) on
- the first call; a subsequent call will return the correct error
- code
- this function was not supported by Digital Research's DOS-Plus
- SeeAlso: AX=4400h,AX=4408h,AX=440Ah,INT 2F/AX=122Bh
- --------D-21440A-----------------------------
- INT 21 - DOS 3.1+ - IOCTL - CHECK IF HANDLE IS REMOTE
- AX = 440Ah
- BX = handle
- Return: CF clear if successful
- DX = attribute word (as stored in SFT)
- bit 15: set if remote
- bit 14: date/time not set on close
- CF set on error
- AX = error code (01h,06h) (see #01680 at AH=59h/BX=0000h)
- Notes: if file is remote, Novell Advanced NetWare 2.0 returns the number of
- the file server on which the handle is located in CX
- DR DOS 3.41 and 5.0 clear all bits of DX except bit 15; Novell DOS 7
- fully supports this function
- this function was not supported by Digital Research's DOS-Plus
- SeeAlso: AX=4400h,AX=4409h,AH=52h,INT 2F/AX=122Bh
- --------D-21440B-----------------------------
- INT 21 - DOS 3.1+ - IOCTL - SET SHARING RETRY COUNT
- AX = 440Bh
- CX = pause between retries (default 1)
- DX = number of retries (default 3)
- Return: CF clear if successful
- CF set on error
- AX = error code (01h) (see #01680 at AH=59h/BX=0000h)
- Notes: delay is dependent on processor speed (value in CX specifies number of
- 64K-iteration empty loops to execute)
- if DX=0000h on entry, the retry count is left unchanged
- this function was not supported by Digital Research's DOS-Plus
- SeeAlso: AH=52h,INT 2F/AX=1224h,INT 2F/AX=122Bh
- --------D-21440C-----------------------------
- INT 21 - DOS 3.2+ - IOCTL - GENERIC CHARACTER DEVICE REQUEST
- AX = 440Ch
- BX = device handle
- CH = category code (see #01545)
- CL = function number (see #01546)
- DS:DX -> parameter block (see #01547,#01548,#01549,#01550,#01551,#01552)
- SI = parameter to pass to driver (European MS-DOS 4.0, OS/2 comp box)
- DI = parameter to pass to driver (European MS-DOS 4.0, OS/2 comp box)
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- DS:DX -> iteration count if CL=65h
- SI = returned value (European MS-DOS 4.0, OS/2 comp box)
- DI = returned value (European MS-DOS 4.0, OS/2 comp box)
- Note: DR DOS 3.41 and 5.0 return error code 16h on CL=45h,65h if the device
- does not support a retry counter
- SeeAlso: AX=440Dh"DOS 3.2+",INT 2F/AX=0802h,INT 2F/AX=122Bh,INT 2F/AX=14FFh
- SeeAlso: INT 2F/AX=1A01h
- (Table 01545)
- Values for IOCTL category code:
- 00h unknown (DOS 3.3+)
- 01h COMn: (DOS 3.3+)
- 03h CON (DOS 3.3+)
- 05h LPTn:
- 9Eh Media Access Control driver (STARLITE)
- 00h-7Fh reserved for Microsoft
- 80h-FFh reserved for OEM/user-defined
- (Table 01546)
- Values for generic character IOCTL function:
- 00h MAC driver Bind (STARLITE) (see #01547)
- 45h set iteration (retry) count (see #01548)
- 4Ah select code page (see #01549)
- 4Ch start code-page preparation (see #01550)
- 4Dh end code-page preparation (see #01551)
- 5Fh set display information (DOS 4.0+) (see #01552)
- 65h get iteration (retry) count
- 6Ah query selected code page (see #01549)
- 6Bh query prepare list (see #01553)
- 7Fh get display information (DOS 4.0+) (see #01552)
- Note: bit assignments for function code:
- bit 7: set to ignore if unsupported, clear to return error
- bit 6: set if passed to driver, clear if intercepted by DOS
- bit 5: set if queries data from device, clear if sends command
- bits 4-0: subfunction
- Format of parameter block for function 00h:
- Offset Size Description (Table 01547)
- 00h 8 BYTEs ASCIZ signature "STARMAC"
- 08h WORD version
- 0Ah WORD flags
- bit 0: media requires connect or listen request before use
- bit 1: network is a LAN (broadcast/multicast supported)
- bit 2: point-to-point network
- 0Ch WORD handle for use with MAC driver's private interface (filled in
- by MAC driver)
- 0Eh WORD context
- 10h WORD approximate speed in KB/sec (filled in by MAC driver)
- 12h WORD approximate cost in cents per hour (filled in by MAC driver)
- 14h WORD maximum packet size in bytes (filled in by MAC driver)
- 16h WORD addressing format (filled in by MAC driver)
- 0000h general addressing
- 0001h Ethernet addressing
- 0002h Token Ring addressing
- 0003h Token Bus addressing
- 18h DWORD Send entry point (filled in by MAC driver)
- 1Ch DWORD RegisterEventHandler entry point (filled in by MAC driver)
- 20h DWORD SetPacketFilter entry point (filled in by MAC driver)
- 24h DWORD UnBind entry point (filled in by MAC driver)
- Format of parameter block for function 45h:
- Offset Size Description (Table 01548)
- 00h WORD number of times output is attempted before driver assumes
- device is busy
- Format of parameter block for functions 4Ah and 6Ah:
- Offset Size Description (Table 01549)
- 00h WORD length of data
- 02h WORD code page ID (see #01757 at INT 21/AX=6602h)
- 04h 2N BYTEs DCBS (double byte character set) lead byte range
- start/end for each of N ranges (DOS 4.0)
- WORD 0000h end of data (DOS 4.0)
- Format of parameter block for function 4Ch:
- Offset Size Description (Table 01550)
- 00h WORD flags
- DISPLAY.SYS = 0000h
- PRINTER.SYS bit 0 clear to prepare downloaded font, set to
- prepare cartridge selection
- 02h WORD length of remainder of parameter block
- 04h WORD number of code pages following
- 06h N WORDs code page 1,...,N
- Format of parameter block for function 4Dh:
- Offset Size Description (Table 01551)
- 00h WORD length of data
- 02h WORD code page ID (see #01757 at INT 21/AX=6602h)
- Format of parameter block for functions 5Fh and 7Fh:
- Offset Size Description (Table 01552)
- 00h BYTE level (0 for DOS 4.x-6.0)
- 01h BYTE reserved (0)
- 02h WORD length of following data (14)
- 04h WORD control flags
- bit 0 set for blink, clear for intensity
- bits 1-15 reserved
- 06h BYTE mode type (1=text, 2=graphics)
- 07h BYTE reserved (0)
- 08h WORD colors
- 0000h = monochrome
- else N bits per pixel
- 0Ah WORD pixel columns
- 0Ch WORD pixel rows
- 0Eh WORD character columns
- 10h WORD character rows
- Format of parameter block for function 6Bh:
- Offset Size Description (Table 01553)
- 00h WORD length of following data
- 02h WORD number of hardware code pages
- 04h N WORDs hardware code pages 1,...,N
- WORD number of prepared code pages
- N WORDs prepared code pages 1,...,N
- --------d-21440C-----------------------------
- INT 21 - Greg Shenaut ASPITAPE.SYS - INTERFACE
- AX = 440Ch
- BX = device handle
- CH = category code
- 07h tape (ASPITAPE.SYS)
- CL = function
- 01h "mtop" - perform tape operation
- 02h "mtget" - get tape status
- 03h ignore end-of-tape errors
- 04h enable end-of-tape errors
- DS:DX -> parameter block (see #01554,#01555)
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- DS:DX -> data block
- Notes: This device driver is a simple DOS interface to the Adaptec Advanced
- SCSI Programming Interface (ASPI). It provides the following device
- names as access to the SCSI tape, 'RMTx' (rewind on close) and
- 'NRMTx' (NO rewind on close) where x can go from 0 to 3. There may
- also be the following names 'MTx' and 'NMTx' which default to 1024
- byte blocks. The names may also have a '$' appended to try and make
- them unique from file names of 'RMT0' etc.
- once opend these devices must be put into RAW mode
- SeeAlso: AX=4402h"ASPI"
- Format of ASPITAPE.SYS mtop parameter block:
- Offset Size Description (Table 01554)
- 00h WORD operation code
- 00h "MTWEOF" - write an end-of-file record
- 01h "MTFSF" - forward space file
- 02h "MTBSF" - backward space file
- 03h "MTFSR" - forward space record
- 04h "MTBSR" - backward space record
- 05h "MTREW" - rewind
- 06h "MTOFFL" - rewind and unload
- 07h "MTNOP" - perform TEST UNIT READY
- 02h DWORD repetition count
- Format of ASPITAPE.SYS mtget parameter block:
- Offset Size Description (Table 01555)
- 00h BYTE ASPI host ID
- 01h BYTE SCSI target ID
- 02h BYTE SCSI logical unit number
- 03h BYTE device parameters
- bit 0: drive must use fixed-block read and write
- bit 7: drive is an ASPI device
- 04h BYTE current device state (see #01556)
- 05h BYTE unit number within driver
- 06h WORD fixed block blocksize
- 08h BYTE last SCSI status
- 09h BYTE last SCSI sense key
- 0Ah WORD last SCSI opcode (packed) (see #01557)
- 0Ch WORD residual bytes from SCSI opcode
- Bitfields for ASPITAPE.SYS current device state:
- Bit(s) Description (Table 01556)
- 0 device currently opened in buffered mode
- 1 drive currently opened in nonbuffered mode
- 2 rewind drive on last close
- 3 drive has been written on
- 4 drive has been read from
- 5 next read will return 0 bytes
- 6 EOM will resemble EOF
- 7 drive may be busy rewinding
- Bitfields for SCSI opcode:
- Bit(s) Description (Table 01557)
- 0-7 SCSI operation (SCSI packet byte 0)
- 8-10 SCSI flags (SCSI packet byte 1)
- 11-12 ASPI "Direction Bits" (ASPI SRB byte 3)
- --------D-21440D-----------------------------
- INT 21 - DOS 3.2+ - IOCTL - GENERIC BLOCK DEVICE REQUEST
- AX = 440Dh
- BL = drive number (00h=default,01h=A:,etc)
- CH = category code (see #01558)
- CL = minor code (function) (see #01559)
- DS:DX -> (DOS) parameter block (see #01560,#01562,#01563,#01564,#01565)
- SI:DI -> (OS/2 comp box) parameter block (see #01566,#01568,#01569,#01572)
- Return: CF set on error
- AX = error code (01h,02h,etc.) (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- DS:DX -> data block if CL=60h or CL=61h
- Notes: DOS 4.01 seems to ignore the high byte of the number of directory
- entries in the BPB for diskettes.
- functions 46h and 66h undocumented in DOS 4.x, documented for DOS 5+
- the DUBLDISK.SYS v2.6 driver only supports minor codes 60h and 67h
- DR DOS 3.41-6.0 only support minor codes 40h-42h and 60h-62h; all
- other minor codes return error code 16h
- some PCMCIA calls reportedly appear to be dangerous for MS-DOS versions
- prior to 5.0
- minor code 60h normally produces no I/O except with AutoMount=1 for
- DBLSPACE/DRVSPACE
- SeeAlso: AX=440Ch,AX=440Dh/CX=084Ah,AX=440Dh/CX=0871h,AH=69h,INT 2F/AX=0802h
- SeeAlso: INT 2F/AX=122Bh
- (Table 01558)
- Values for block device IOCTL category code:
- 08h disk drive
- 48h FAT32 disk drive
- 00h-7Fh reserved for Microsoft
- 80h-FFh reserved for OEM/user-defined
- (Table 01559)
- Values for generic block IOCTL minor code:
- 00h (OS/2) \ used to lock/unlock a drive
- 01h (OS/2) /
- 40h set device parameters (see #01560)
- 41h write logical device track (see #01562)
- 42h format and verify logical device track (see #01563)
- 46h (DOS 4.0+) set volume serial number (see #01565,AH=69h)
- 47h (DOS 4.0+) set access flag (see #01566)
- 48h (Enh. Disk Drive Spec) set media lock state (see #01567,INT 13/AH=45h)
- 49h (Enh. Disk Drive Spec) eject media in drive (see INT 13/AH=49h)
- no parameter block required
- 4Ah (MS-DOS 7.0) lock logical volume (see AX=440Dh/CX=084Ah)
- 4Bh (MS-DOS 7.0) lock physical volume (see AX=440Dh/CX=084Bh)
- 50h (PCMCIA) attribute memory write
- 51h (PCMCIA) common memory write
- 52h (PCMCIA) force media change (DOS 5+ ???) (see #01568)
- 53h (PCMCIA) erase drive
- 54h (PCMCIA) erase media
- 56h (PCMCIA) set erase status callback
- 57h (PCMCIA) append Card Information Structure (CIS) tuple
- 58h (PCMCIA) erase CIS tuples
- 60h get device parameters (see #01560)
- 61h read logical device track (see #01562)
- 62h verify logical device track (see #01564)
- 66h (DOS 4.0+) get volume serial number (see #01565,AH=69h)
- 67h (DOS 4.0+) get access flag (see #01566)
- 68h (DOS 5.0+) sense media type (see #01569)
- 6Ah (MS-DOS 7.0) unlock logical volume (see AX=440Dh/CX=086Ah)
- no parameter block required
- 6Bh (MS-DOS 7.0) unlock physical volume (see AX=440Dh/CX=086Bh)
- no parameter block required
- 6Ch (MS-DOS 7.0) get lock flag (see AX=440Dh/CX=086Ch)
- no parameter block required
- 6Dh (MS-DOS 7.0) enumerate open files (see AX=440Dh/CX=086Dh)
- 6Eh (MS-DOS 7.0) find swap file (see AX=440Dh/CX=086Eh)
- 6Fh (MS-DOS 7.0) get drive map information (see #01570)
- 70h (PCMCIA) attribute memory read
- 70h (MS-DOS 7.0) get current lock state (see AX=440Dh/CX=0870h)
- no parameter block required
- 71h (MS-DOS 7.0) get first cluster (see AX=440Dh/CX=0871h)
- 73h (PCMCIA) get memory media information (DOS 5+ ???) (see #01572)
- 76h (PCMCIA) get erase status callback
- 77h (PCMCIA) get first Card Information Structure (CIS) tuple
- 78h (PCMCIA) get next CIS tuple
- 7Fh (PCMCIA) get ??? information (see #01573,#01574)
- Format of parameter block for functions 40h, 60h:
- Offset Size Description (Table 01560)
- 00h BYTE special functions
- bit 0 set if function to use current BPB, clear if Device
- BIOS Parameter Block field contains new default BPB
- bit 1 set if function to use track layout fields only
- must be clear if CL=60h
- bit 2 set if all sectors in track same size (should be set)
- bits 3-7 reserved (MS-DOS, Novell DOS 7)
- bit 5: skip head settling time (WinDOS 2.11)
- bit 6: format access flag (WinDOS 2.11)
- 01h BYTE device type (see #01561)
- 02h WORD device attributes
- bit 0 set if nonremovable medium
- bit 1 set if door lock ("changeline") supported
- bits 2-15 reserved
- 04h WORD number of cylinders
- 06h BYTE media type
- for 1.2M drive
- 00h 1.2M disk (default)
- 01h 320K/360K disk
- F8h for DUBLDISK.SYS v2.6 expanded drives
- always 00h for other drive types
- 07h 31 BYTEs device BPB (see #01663 at AH=53h), bytes after BPB offset 1Eh
- omitted; final six bytes only transferred on function 40h
- with BYTE 00h bit 0 set for MS-DOS 5.0
- ---function 40h only---
- 26h WORD number of sectors per track (start of track layout field)
- (maximum 63)
- 28h N word pairs: number,size of each sector in track
- ---category code 48h (FAT32), function 40h---
- 07h 53 BYTEs extended BPB (see #01664)
- 3Ch 32 BYTEs reserved
- 5Ch WORD number of track table entries
- 5Eh 2N WORDs sector table (word pairs: number/size of each sector in track)
- ---category code 48h (FAT32), function 60h---
- 07h 53 BYTEs extended BPB (see #01664)
- 3Ch 32 BYTEs reserved
- (Table 01561)
- Values for device type:
- 00h 320K/360K disk
- 01h 1.2M disk
- 02h 720K disk
- 03h single-density 8-inch disk
- 04h double-density 8-inch disk
- 05h fixed disk
- 06h tape drive
- 07h (DOS 3.3+) other type of block device, normally 1.44M floppy
- 08h read/write optical disk
- 09h (DOS 5+) 2.88M floppy
- Format of parameter block for functions 41h, 61h:
- Offset Size Description (Table 01562)
- 00h BYTE special functions (reserved, must be zero)
- 01h WORD number of disk head
- 03h WORD number of disk cylinder
- 05h WORD number of first sector to read/write
- 07h WORD number of sectors
- 09h DWORD transfer address
- Note: under Windows95, a volume must be locked (see AX=440Dh/CX=084Bh) in
- order to perform direct accesses such as track reads and writes
- with this IOCTL function
- Format of parameter block for function 42h:
- Offset Size Description (Table 01563)
- 00h BYTE reserved, must be zero (DOS <3.2)
- bit 0=0: format/verify track
- 1: format status call (DOS 3.2+), don't actually format
- bit 1: format multiple tracks, require additional WORD
- (hard disks only)
- bits 2-7 reserved, must be zero
- value on return (DOS 3.3+):
- 00h specified tracks, sectors/track supported by BIOS
- 01h function not supported by BIOS
- 02h specified tracks, sectors/track not allowed for drive
- 03h no disk in drive
- 01h WORD number of disk head
- 03h WORD number of disk cylinder
- ---BYTE 00h bit 1 set---
- 05h WORD number of tracks to format
- Format of parameter block for function 62h:
- Offset Size Description (Table 01564)
- 00h BYTE reserved, must be zero (DOS <3.2)
- bit 0=0: verify single track
- 1: verify multiple tracks
- bits 1-7 reserved, must be zero
- value on return (DOS 3.3+):
- 00h specified tracks, sectors/track supported by BIOS
- 01h function not supported by BIOS
- 02h specified tracks, sectors/track not allowed for drive
- 03h no disk in drive
- 01h WORD number of disk head
- 03h WORD number of disk cylinder
- 05h WORD number of tracks to verify (equivalent to 255 or fewer sectors)
- Format of parameter block for functions 46h, 66h:
- Offset Size Description (Table 01565)
- 00h WORD (call) info level (should be 0000h)
- 02h DWORD disk serial number (binary)
- 06h 11 BYTEs volume label or "NO NAME "
- 11h 8 BYTEs filesystem type "FAT12 " or "FAT16 "
- (generally CL=66h only, but MS-DOS 5.0 will write the
- given filesystem type to the disk)
- Note: under MS-DOS 7.0 or a Windows95 DOS box, the volume label field can
- return as all blanks even when a volume label has been set (the Win95
- installation seems to blank the volume label field in the partition
- boot sector; once LABEL has been run, the volume label is reported
- correctly)
- SeeAlso: AH=69h
- Format of parameter block for functions 47h, 67h:
- Offset Size Description (Table 01566)
- 00h BYTE special-function field (must be zero)
- 01h BYTE disk-access flag, nonzero if access allowed by driver
- Format of parameter block for function 48h:
- Offset Size Description (Table 01567)
- 00h BYTE (call) locking operation
- 00h lock media in drive
- 01h unlock media
- 02h get locking status
- 01h BYTE (ret) drive's lock status (number of pending locks on drive)
- Note: also supported by MS-DOS 7.0+
- Format of parameter block for function 52h:
- 00h BYTE (call) unused??? (Table 01568)
- (ret) 00h if flash/ATA drive but no card inserted
- unchanged otherwise
- Notes: the absense of a flash card should be tested by checking the DOS error
- code rather than the returned byte
- the parameter byte is cleared to 00h erroneously by the Award
- PCDISK.EXE v1.02c PCMCIA/ATA driver if no ATA card is inserted
- (bug corrected in PCDISK.EXE v1.02h and later)
- not supported by the SystemSoft ATADRV.EXE and the Phoenix PCMATA.SYS
- PCMCIA/ATA drivers
- Format of parameter block for function 68h:
- Offset Size Description (Table 01569)
- 00h BYTE 01h for default media type, 00h for any other media type
- (see also INT 13/AH=20h"Compaq")
- 01h BYTE 02h for 720K, 07h for 1.44M, 09h for 2.88M
- Format of parameter block for function 6Fh:
- Offset Size Description (Table 01570)
- 00h BYTE (call) length of this buffer (in bytes)
- 01h BYTE (ret) number of bytes in parameter block actually used
- 02h BYTE (ret) drive flags (see #01571)
- 03h BYTE (ret) physical drive number
- 00h-7Fh floppy
- 80h-FEh hard
- FFh no physical drive
- 04h DWORD (ret) bitmap of logical drives associated with physical drive
- bit 0 = drive A:, etc.
- 08h QWORD (ret) relative block address of partition start
- Bitfields for Get Drive Map Information drive flags:
- Bit(s) Description (Table 01571)
- 0 protected-mode driver for logical drive
- 1 protected-mode driver in use for physical drive corresponding to the
- logical drive
- 2 drive available only in protected mode
- 3 protected-mode drive supports media ejection
- 4 drive issues media insertion and removal notifications
- SeeAlso: #01570
- Format of parameter block for function 73h:
- Offset Size Description (Table 01572)
- 00h BYTE ???
- 00h ATA card inserted ???
- 80h ATA card not inserted ???
- 01h BYTE length of parameter block ???
- apparently always 40h
- 02h BYTE ???
- 00h ATA card not inserted ???
- 0Dh ATA card inserted ???
- 03h 2 BYTEs ??? (apparently always 00h)
- 05h BYTE drive number (0=first) ???
- 06h BYTE total number of drives ???
- 07h BYTE ???
- 00h ATA card not inserted ???
- 01h ATA card inserted ???
- 08h 17 BYTEs ???
- 19h BYTE ???
- 00h ATA card not inserted ???
- 01h ATA card inserted ???
- 1Ah BYTE ??? (apparently always 01h)
- 1Bh BYTE ???
- 00h ATA card not inserted ???
- 01h ATA card inserted ???
- 1Ch 2 BYTEs ??? (apparently always 0015h)
- 1Eh 2 BYTEs ???
- 20h 2 BYTEs ??? (apparently always 0110h)
- 22h 15 BYTEs ???
- 31h 2 BYTEs ??? (apparently always 7000h)
- 33h 11 BYTEs driver signature
- "AWARD PDISK" for Award PCDISK.EXE PCMCIA/ATA driver
- "MS-BIOS " for HP 200LX generic ATA driver
- 3Eh 2 BYTEs ???
- Notes: parameter structure possibly depends on driver
- this function is not supported by the SystemSoft ATADRV.EXE and the
- Phoenix PCMATA.SYS PCMCIA/ATA drivers
- Format of parameter block for function 7Fh for SystemSoft ATADRV.EXE:
- Offset Size Description (Table 01573)
- 00h DWORD -> unknown location within driver
- Note: function supported by the SystemSoft ATADRV.EXE PCMCIA/ATA driver
- but not by the Award PCDISK.EXE PCMCIA/ATA driver
- SeeAlso: #01574
- Format of parameter block for function 7Fh for Phoenix PCMATA.SYS:
- Offset Size Description (Table 01574)
- 00h 8 BYTEs ???
- Note: this function supported by the Phoenix PCMATA.SYS PCMCIA/ATA driver
- but not by the Award PCDISK.EXE PCMCIA/ATA driver
- SeeAlso: #01573
- --------D-21440DCX084A-----------------------
- INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - LOCK LOGICAL VOLUME
- AX = 440Dh
- CX = 084Ah (category code 08h, minor code 4Ah)
- BL = drive number (01h=A:,02h=B:,etc)
- BH = lock level (00h-04h)
- DX = drive permissions (see #01575) for Level 1 lock or second
- Level 0 lock when formatting
- Return: CF set on error
- AX = error code (01h,02h,etc.) (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- Notes: the logical volume must be locked before direct disk accesses are
- permitted by Windows95/98
- the commandline LOCK issues a level 4 lock
- Windows98 only permits lock levels 0 and 4
- BUG: Windows98 will return an error (invalid function) if the specified
- drive number is zero or more than 32, but only allocated 26 bytes
- for recording locks, so BL=1Bh..20h will trash internal data
- structures
- SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=084Bh,AX=440Dh/CX=086Ah
- SeeAlso: AX=440Dh/CX=086Ch
- Bitfields for drive permissions:
- Bit(s) Description (Table 01575)
- 0 allow writes
- 1 disallow new file mappings
- 2 volume locked for formatting
- --------D-21440DCX084B-----------------------
- INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - LOCK PHYSICAL VOLUME
- AX = 440Dh
- CX = 084Bh (category code 08h, minor code 4Bh)
- BL = logical drive number (00h = default, 01h = A:, etc.)
- BH = lock level (00h-03h)
- DX = drive permissions (see #01575) for Level 1 lock or second
- Level 0 lock when formatting
- Return: CF set on error
- AX = error code (01h,02h,etc.) (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- Desc: lock all logical volumes on the same physical volume as the indicated
- drive
- Note: the physical volume must be locked before direct disk writes via
- INT 13 are permitted by Windows95
- SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=084Ah,AX=440Dh/CX=086Bh
- SeeAlso: AX=440Dh/CX=086Ch
- --------D-21440DCX086A-----------------------
- INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - UNLOCK LOGICAL VOLUME
- AX = 440Dh
- CX = 086Ah (category code 08h, minor code 6Ah)
- BL = drive number (00h=default,01h=A:,etc)
- Return: CF set on error
- AX = error code (01h,02h,etc.) (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- Note: the logical volume must be locked before direct disk accesses via
- INT 13 are permitted by Windows95
- BUG: Windows98 will return an error (invalid function) if the specified
- drive number is zero or more than 32, but only allocated 26 bytes
- for recording locks, so BL=1Bh..20h will trash internal data
- structures
- SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=084Ah,AX=440Dh/CX=086Bh
- --------D-21440DCX086B-----------------------
- INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - UNLOCK PHYSICAL VOLUME
- AX = 440Dh
- CX = 086Bh (category code 08h, minor code 6Bh)
- BL = logical drive number (00h = default, 01h = A:, etc.)
- Return: CF set on error
- AX = error code (01h,02h,etc.) (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- Desc: lock all logical volumes on the same physical volume as the indicated
- drive
- SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=084Bh,AX=440Dh/CX=086Ah
- --------D-21440DCX086C-----------------------
- INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - GET LOCK FLAG STATE
- AX = 440Dh
- CX = 086Ch (category code 08h, minor code 6Ch)
- BL = drive number (00h=default,01h=A:,etc)
- Return: CF set on error
- AX = error code (01h,02h,etc.) (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- AX = access flag (see #01576)
- SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=084Ah,AX=440Dh/CX=084Bh
- SeeAlso: AX=440Dh/CX=0870h
- (Table 01576)
- Values for drive access flag:
- 0000h no writes/file mappings since last call
- 0001h write operation has occurred since last call
- 0002h file mapping has occurred since last call
- Note: function 6Ch resets the access flag every time it is called
- --------D-21440DCX086D-----------------------
- INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - ENUMERATE OPEN FILES
- AX = 440Dh
- CX = 086Dh (category code 08h, minor code 6Dh)
- BL = drive number (00h=default,01h=A:,etc)
- DS:DX -> buffer for ASCIZ pathname
- SI = file index (0000h to number of open files-1)
- DI = enumeration type (0000h all files, 0001h unmovable files)
- Return: CF set on error
- AX = error code (01h,02h,12h,etc.) (see #01680 at AH=59h/BX=0000h)
- 0012h if file index is out of range
- CF clear if successful
- AX = file open mode (BX from AX=6C00h or AX=716Ch)
- CX = file type (see #01577)
- SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=084Ah,AX=440Dh/CX=086Ch
- SeeAlso: AX=440Dh/CX=086Eh,AX=6C00h,AX=716Ch
- (Table 01577)
- Values for file type:
- 0000h normal file
- 0001h memory-mapped file (unmovable)
- 0002h unmovable file
- 0004h swap file
- --------D-21440DCX086E-----------------------
- INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - FIND SWAP FILE
- AX = 440Dh
- CX = 086Eh (category code 08h, minor code 6Eh)
- BL = drive number (00h=default,01h=A:,etc)
- DS:DX -> buffer for ASCIZ pathname
- SI = file index
- DI = enumeration type
- Return: CF set on error
- AX = error code (01h,02h,etc.) (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- AX = pager type
- 0001h no pager
- 0002h paging through MS-DOS
- 0003h protected-mode pager
- CX:BX = swap file size in 4K pages
- SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=086Dh
- --------D-21440DCX0870-----------------------
- INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - GET CURRENT LOCK STATE
- AX = 440Dh
- CX = 0870h (category code 08h, minor code 70h)
- BL = drive number (00h=default,01h=A:,etc)
- Return: CF set on error
- AX = error code (01h,02h,etc.) (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- AX = current lock level (0-3) or FFFFh if not locked
- CX = lock permissions if AX<>FFFFh (see #01575)
- SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=086Ch
- --------D-21440DCX0871-----------------------
- INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - GET FIRST CLUSTER
- AX = 440Dh
- CX = 0871h (category code 08h, minor code 71h)
- BX = filename character set (see #01578)
- DS:DX -> ASCIZ pathname for file or directory
- Return: CF set on error
- AX = error code (01h,02h,etc.) (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- DX:AX = first cluster number
- Note: this function finds any file or directory regardless of attributes,
- except that it will not find volume labels
- SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=086Ch,#01352
- (Table 01578)
- Values for character set:
- 00h Windows ANSI
- 01h current OEM character set
- 02h Unicode
- --------D-21440E-----------------------------
- INT 21 - DOS 3.2+ - IOCTL - GET LOGICAL DRIVE MAP
- AX = 440Eh
- BL = drive number (00h=default,01h=A:,etc)
- Return: CF set on error
- AX = error code (01h,0Fh) (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- AL = 00h block device has only one logical drive assigned
- 1..26 the last letter used to reference the drive (1=A:,etc)
- Notes: DR DOS 3.41-5.0 DRIVER.SYS does not support drive mapping and thus
- always returns AL=00h; Windows NT 4.0 also always returns AL=00h
- in addition to the normal operation, if Stacker is installed, this
- call also sets the volume number at offset 58h in the Stacker
- device driver (DR DOS 3.41-5.0 only; use AX=4408h otherwise)
- (see AX=4404h"Stacker",INT 25/AX=CDCDh)
- SeeAlso: AX=4408h,AX=440Fh,INT 2F/AX=122Bh
- --------D-21440F-----------------------------
- INT 21 - DOS 3.2+ - IOCTL - SET LOGICAL DRIVE MAP
- AX = 440Fh
- BL = physical drive number (00h=default,01h=A:,etc))
- Return: CF set on error
- AX = error code (01h,0Fh) (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- drive now responds to next logical drive number
- Notes: maps logical drives to physical drives, similar to DOS's treatment of
- a single physical floppy drive as both A: and B:
- DR DOS 3.41-5.0 DRIVER.SYS does not support drive mapping and thus
- always returns an error on this function
- SeeAlso: AX=440Eh,INT 2F/AX=122Bh
- --------D-214410-----------------------------
- INT 21 - DOS 5+ - IOCTL - QUERY GENERIC IOCTL CAPABILITY (HANDLE)
- AX = 4410h
- BX = handle for device
- CH = category code (see #01545)
- CL = function code (see #01546)
- Return: CF clear if successful
- AX = 0000h specified IOCTL function is supported
- CF set on error
- AL = 01h IOCTL capability not available
- Note: a program which wishes to use Generic IOCTL calls beyond those in the
- standard DOS 3.2 set may use this call first to see whether a
- particular call is supported
- SeeAlso: AX=440Ch,AX=440Dh"DOS 3.2+",AX=4411h
- --------d-214410BXFFFF-----------------------
- INT 21 U - NewSpace - ENABLE DRIVER
- AX = 4410h
- BX = FFFFh
- Program: NewSpace is a TSR by Isogon Corporation which automatically compresses
- all files as they are written and decompresses them as they are read
- Note: compressed files are not accessible unless the driver is enabled
- SeeAlso: AX=4411h/BX=FFFFh
- --------D-214411-----------------------------
- INT 21 - DOS 5+ - IOCTL - QUERY GENERIC IOCTL CAPABILITY (DRIVE)
- AX = 4411h
- BL = drive number
- CH = category code (see #01558)
- CL = function code (see #01559)
- Return: CF clear if successful
- AX = 0000h specified IOCTL function is supported
- CF set on error
- AL = 01h IOCTL capability not available
- Note: a program which wishes to use Generic IOCTL calls beyond those in the
- standard DOS 3.2 set may use this call first to see whether a
- particular call is supported
- SeeAlso: AX=440Ch,AX=440Dh"DOS 3.2+",AX=4410h
- --------d-214411BXFFFF-----------------------
- INT 21 U - NewSpace - DISABLE DRIVER
- AX = 4411h
- BX = FFFFh
- Program: NewSpace is a TSR by Isogon Corporation which automatically compresses
- all files as they are written and decompresses them as they are read
- Note: compressed files are not accessible unless the driver is enabled
- SeeAlso: AX=4410h/BX=FFFFh
- --------O-214412-----------------------------
- INT 21 O - DR DOS 5.0-6.0 - DETERMINE DOS TYPE
- AX = 4412h
- CF set
- Return: CF set if not DR DOS
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if DR DOS
- DX = AX = version code (see #01580)
- Note: this obsolete call, which is no longer supported in Novell DOS 7, is
- identical to AX=4452h
- SeeAlso: AX=4452h
- --------d-214412BXFFFF-----------------------
- INT 21 U - NewSpace - INSTALLATION CHECK???
- AX = 4412h
- BX = FFFFh
- Return: AX = PSP segment of NewRes (resident driver for NewSpace)
- BX:DX -> ???
- CX = ???
- SeeAlso: AX=4411h/BX=FFFFh
- --------d-214413BXFFFF-----------------------
- INT 21 U - NewSpace - GET ???
- AX = 4413h
- BX = FFFFh
- Return: AX = code segment of NewRes (resident driver for NewSpace)
- BX = offset of ???
- SeeAlso: AX=4412h/BX=FFFFh
- --------O-214414-----------------------------
- INT 21 OU - DR DOS 5.0-6.0 - SET GLOBAL PASSWORD
- AX = 4414h
- DS:DX -> password string (blank-padded to 8 characters)
- Desc: Specify the master password for accessing files.
- Note: this obsolete call, which is no longer supported in Novell DOS 7, is
- identical to AX=4454h
- SeeAlso: AX=4454h
- --------d-214414BXFFFF-----------------------
- INT 21 U - NewSpace - DEBUGGING DUMP
- AX = 4414h
- BX = FFFFh
- Return: debugging dump written to X:\NEWSPACE.SMP
- SeeAlso: AX=4413h/BX=FFFFh,AX=44FFh/BX=FFFFh
- --------O-214416-----------------------------
- INT 21 OU - DR DOS 5.0-6.0 - HISTORY BUFFER, SHARE, AND HILOAD CONTROL
- AX = 4416h to 4418h
- Note: these obsolete subfunctions (which are no longer supported in Novell
- DOS 7) are identical to AX=4456h through 4458h
- SeeAlso: AX=4456h,AX=4457h,AX=4458h
- --------O-214451-----------------------------
- INT 21 - Concurrent DOS v3.2+ - INSTALLATION CHECK
- AX = 4451h
- Return: CF set if not Concurrent DOS
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- AH = single-user/multiuser nature (see #01581)
- 10h single-user
- AL = operating system version ID (see #01580)
- 14h multiuser
- AL = operating system version ID (see #01579)
- Notes: as of Concurrent DOS/XM 5.0 (possibly earlier), the version is stored
- in the environment variable VER
- use this function if you are looking for multiuser capabilities,
- AX=4452h for single-user
- this function should never return the single-user values
- SeeAlso: AX=4452h,AX=4459h
- (Table 01579)
- Values for Digital Research operating system version ID:
- 32h Concurrent PC DOS 3.2
- 41h Concurrent DOS 4.1
- 50h Concurrent DOS/XM 5.0 or Concurrent DOS/386 1.1
- 60h Concurrent DOS/XM 6.0 or Concurrent DOS/386 2.0
- 62h Concurrent DOS/XM 6.2 or Concurrent DOS/386 3.0
- 66h DR Multiuser DOS 5.1
- 67h Concurrent DOS 5.1
- SeeAlso: #01581,#04023
- --------O-214452-----------------------------
- INT 21 - DR DOS 3.41+ - DETERMINE DOS TYPE/GET DR DOS VERSION
- AX = 4452h ("DR")
- CF set
- Return: CF set if not DR DOS
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if DR DOS
- AX = version code
- AH = single-user/multiuser nature (see #01581)
- 10h single-user
- AL = operating system version ID (see #01580)
- 14h multiuser
- AL = operating system version ID (see #01579)
- DX modified (refer to note below)
- Notes: the DR DOS version is stored in the environment variable VER
- use this function if looking for single-user capabilities, AX=4451h
- if looking for multiuser; this call should never return multiuser
- values
- in DR DOS 3.41-6.0, DX=AX on return; for Novell DOS 7, DH=AH but DL=00h
- (reportedly, DH=00h when booting NWDOS7 from installation disks)
- Novell DOS 7 returns error code 0001h if SETVER x.255 is in effect for
- the calling program, or SETVER /G x.255 is in effect
- SeeAlso: AX=4412h,AX=4451h,AX=4459h
- (Table 01580)
- Values for Digital Research operating system version ID:
- 41h DOS Plus 1.2
- 60h DOS Plus 2.0 or 2.1
- 63h DR DOS 3.41
- 64h DR DOS 3.42
- 65h DR DOS 5.0
- 67h DR DOS 6.0
- 70h PalmDOS
- 71h DR DOS 6.0 March 1993 "business update"
- 72h Novell DOS 7.0
- 73h OpenDOS 7.02
- SeeAlso: #01579,#01581,#04023
- Bitfields for CP/M type indicator:
- Bit(s) Description (Table 01581)
- 7-4 CPU type
- 0000 = 8080
- 0001 = 8086
- 3-0 OS type
- 0000 = CP/M
- 0001 = MP/M
- 0002 = CP/Net
- 0004 = multiuser
- SeeAlso: #01580
- --------O-214454-----------------------------
- INT 21 U - DR DOS 3.41+ - SET GLOBAL PASSWORD
- AX = 4454h
- DS:DX -> password string (blank-padded to 8 characters)
- Desc: Specify the master password for accessing files.
- SeeAlso: AX=4303h,AX=4414h
- --------O-214456-----------------------------
- INT 21 U - DR DOS 5.0+ - HISTORY BUFFER CONTROL
- AX = 4456h
- DL = control flags (see #01582)
- Return: AL = previous value of state flags (see #01583)
- Note: DR DOS 6.0 only checks bit 0 and ignores the rest of DL
- SeeAlso: #01584
- Bitfields for control flags:
- Bit(s) Description (Table 01582)
- 0 whose buffer: 0=application, 1=COMMAND.COM
- ---Novell DOS 7---
- 1 toggle HISTORY usage
- 2 toggle INSERT state
- Note: only one bit at a time may be used
- Bitfields for state flags:
- Bit(s) Description (Table 01583)
- 0 HISTORY buffer enabled
- 1 INSERT enabled
- 2-5 unused
- 7 whose buffer: 0=application, 1=COMMAND.COM
- --------O-214457-----------------------------
- INT 21 U - DR DOS 5.0-6.0 - SHARE/HILOAD CONTROL
- AX = 4457h
- DH = subfunction
- 00h enable/disable SHARE
- DL = 00h disable
- = 01h enable
- else Return: AX = ???
- 01h get HILOAD status
- Return: AX = status
- 0000h off
- 0001h on
- 02h set HILOAD status
- DL = new state (00h off, 01h on)
- Return: AX = ???
- other
- Return: AX = ???
- Note: This was seen called by COMMAND.COM of DR DOS 6.0; it does not seem
- to be supported by Novell DOS 7
- SeeAlso: AX=4457h/DX=FFFFh
- --------O-214457DXFFFF-----------------------
- INT 21 OU - DR DOS 6.0 - GET SHARE STATUS
- AX = 4457h
- DX = FFFFh
- Return: AX = SHARE status
- Note: not supported by Novell DOS 7
- SeeAlso: INT 2F/AX=1000h
- --------O-214458-----------------------------
- INT 21 U - DR DOS 5.0+ internal - GET POINTER TO INTERNAL VARIABLE TABLE
- AX = 4458h
- Return: ES:BX -> internal variable table (see #01584,#01585)
- AX = ??? (0B50h for DR DOS 5.0, 0A56h for DR DOS 6.0, 0FE4h for
- Novell DOS 7)
- SeeAlso: AX=4452h
- Format of DR DOS 5.0-6.0 internal variable table:
- Offset Size Description (Table 01584)
- 00h WORD ???
- 02h WORD segment of ???
- 04h WORD offset within DOS data segment of history control structure
- for COMMAND.COM history buffer (see #01586)
- 06h WORD offset within DOS data segment of history control structure
- for application history buffer (see #01586)
- 08h BYTE initial history state flags (see #01583)
- 09h 2 BYTEs ???
- 0Bh WORD KB of extended memory at startup
- 0Dh BYTE number of far jump entry points
- 0Eh WORD segment containing far jumps to DR DOS entry points (see #01587)
- 10h WORD (only if kernel loaded in HMA) offset in HMA of first free HMA
- memory block (see #01588) or 0000h if none; segment is FFFFh
- 12h WORD pointer to segment of environment variables set in CONFIG,
- or 0000h if already used
- ---DR DOS 6.0---
- 14h WORD (only if kernel loaded in HMA) offset in HMA of first used HMA
- memory block (see #01588) or 0000h if none; segment is FFFFh
- 16h 8 BYTEs ???
- 1Eh WORD offset in DOS data segment of full COUNTRY.SYS filename
- 20h 8 BYTEs ???
- 28h WORD offset in DOS data segment of SHARE hook table
- 2Ah 2 BYTEs ???
- 2Ch WORD offset in DOS data segment of far pointer to INT 2F/AX=1000h
- handler
- Notes: the segment used for the DR DOS 6.0 CONFIG environment variables
- (excluding COMSPEC, VER and OS) is only useful for programs/drivers
- called from CONFIG.SYS. The word is set to zero later when the area
- is copied to the COMMAND.COM environment space. This allows
- CONFIG.SYS to pass information to AUTOEXEC.BAT.
- the Novell DOS 7 KEYB uses offsets 10h,14h, and 2Ch in the same was
- as for DR DOS 6.0, so it is likely that the entire table is the same
- Format of Novell DOS 7 internal variable table:
- Offset Size Description (Table 01585)
- 00h ???
- 1Eh WORD offset of COUNTRY.SYS filename
- 42h 16 DWORDs pointers to ??? entry points
- ???
- Format of history control structure:
- Offset Size Description (Table 01586)
- 00h WORD segment of buffer
- 02h WORD size of buffer in bytes
- 04h WORD ???
- Format of kernel entry jump table for DR DOS 5.0-6.0:
- Offset Size Description (Table 01587)
- 00h 5 BYTEs far jump to kernel entry point for CP/M CALL 5
- 05h 5 BYTEs far jump to kernel entry point for INT 20
- 0Ah 5 BYTEs far jump to kernel entry point for INT 21
- 0Fh 5 BYTEs far jump to kernel entry point for INT 22 (RETF)
- 14h 5 BYTEs far jump to kernel entry point for INT 23 (RETF)
- 19h 5 BYTEs far jump to kernel entry point for INT 24
- 1Eh 5 BYTEs far jump to kernel entry point for INT 25
- 23h 5 BYTEs far jump to kernel entry point for INT 26
- 28h 5 BYTEs far jump to kernel entry point for INT 27
- 2Dh 5 BYTEs far jump to kernel entry point for INT 28
- 32h 5 BYTEs far jump to kernel entry point for INT 2A (IRET)
- 37h 5 BYTEs far jump to kernel entry point for INT 2B (IRET)
- 3Ch 5 BYTEs far jump to kernel entry point for INT 2C (IRET)
- 41h 5 BYTEs far jump to kernel entry point for INT 2D (IRET)
- 46h 5 BYTEs far jump to kernel entry point for INT 2E (IRET)
- 4Bh 5 BYTEs far jump to kernel entry point for INT 2F
- Notes: all of these entry points are indirected through this jump table
- to allow the kernel to be relocated into high memory while leaving
- the actual entry addresses in low memory for maximum compatibility
- some of these entry points (22h,23h,24h,2Eh,2Fh) are replaced as soon
- as COMMAND.COM is loaded, and return immediately to the caller, some
- returning an error code (the original handler for INT 2F returns
- AL=03h [fail]).
- Format of HMA Memory Block (DR DOS 6.0 kernel loaded in HMA):
- Offset Size Description (Table 01588)
- 00h WORD offset of next HMA Memory Block (0000h if last block)
- 02h WORD size of this block in bytes (at least 10h)
- 04h BYTE type of HMA Memory Block (interpreted by MEM)
- 00h system
- 01h KEYB
- 02h NLSFUNC
- 03h SHARE
- 04h TaskMAX
- 05h COMMAND
- 05h var TSR (or system) code and data. DR DOS TSR's, such as KEYB,
- hooks interrupts using segment FFFEh instead FFFFh.
- --------O-214459-----------------------------
- INT 21 - DR Multiuser DOS 5.0 - API
- AX = 4459h
- CL = function (see #04019 at INT E0"CP/M-86")
- DS,DX = parameters
- Notes: DR DOS 5.0 and Novell DOS 7 return CF set and AX=0001h
- this API is also available on INT E0
- SeeAlso: AX=4452h,INT E0"CP/M-86"
- --------v-2144A0-----------------------------
- INT 21 - VIRUS - "Horns" - INSTALLATION CHECK
- AX = 44A0h
- Return: AH = FFh if installed
- SeeAlso: AX=4243h"VIRUS",AX=4B04h"VIRUS"
- --------N-2144E0-----------------------------
- INT 21 U - Sun PC-NFS - API???
- AX = 44E0h
- DS:DX -> ???
- SS:BP -> stack frame (see #01589)
- Return: ???
- Note: this function is also supported by Beame&Whiteside's BWPCNFS shim; the
- description presented here was derived from that shim
- Format of PC-NFS stack frame:
- Offset Size Description (Table 01589)
- 00h WORD -> previous stack frame
- 02h DWORD return address
- --------d-2144FFBXFFFF-----------------------
- INT 21 U - NewSpace - ???
- AX = 44FFh
- BX = FFFFh
- DX = ???
- Program: NewSpace is a TSR by Isogon Corporation which automatically compresses
- all files as they are written and decompresses them as they are read
- SeeAlso: AX=4414h/BX=FFFFh
- --------D-2145-------------------------------
- INT 21 - DOS 2+ - "DUP" - DUPLICATE FILE HANDLE
- AH = 45h
- BX = file handle
- Return: CF clear if successful
- AX = new handle
- CF set on error
- AX = error code (04h,06h) (see #01680 at AH=59h/BX=0000h)
- Notes: moving file pointer for either handle will also move it for the other,
- because both will refer to the same system file table
- for DOS versions prior to 3.3, file writes may be forced to disk by
- duplicating the file handle and closing the duplicate
- SeeAlso: AH=3Dh,AH=46h
- --------D-2146-------------------------------
- INT 21 - DOS 2+ - "DUP2", "FORCEDUP" - FORCE DUPLICATE FILE HANDLE
- AH = 46h
- BX = file handle
- CX = file handle to become duplicate of first handle
- Return: CF clear if successful
- CF set on error
- AX = error code (04h,06h) (see #01680 at AH=59h/BX=0000h)
- Notes: closes file with handle CX if it is still open
- DOS 3.30 hangs if BX=CX on entry
- moving file pointer for either handle will also move it for the other,
- because both will refer to the same system file table
- SeeAlso: AH=3Dh,AH=45h
- --------D-2147-------------------------------
- INT 21 - DOS 2+ - "CWD" - GET CURRENT DIRECTORY
- AH = 47h
- DL = drive number (00h = default, 01h = A:, etc)
- DS:SI -> 64-byte buffer for ASCIZ pathname
- Return: CF clear if successful
- AX = 0100h (undocumented)
- CF set on error
- AX = error code (0Fh) (see #01680 at AH=59h/BX=0000h)
- Notes: the returned path does not include a drive or the initial backslash
- many Microsoft products for Windows rely on AX being 0100h on success
- under the FlashTek X-32 DOS extender, the buffer pointer is in DS:ESI
- SeeAlso: AH=19h,AH=3Bh,AH=71h,INT 15/AX=DE25h
- --------D-2148-------------------------------
- INT 21 - DOS 2+ - ALLOCATE MEMORY
- AH = 48h
- BX = number of paragraphs to allocate
- Return: CF clear if successful
- AX = segment of allocated block
- CF set on error
- AX = error code (07h,08h) (see #01680 at AH=59h/BX=0000h)
- BX = size of largest available block
- Notes: DOS 2.1-6.0 coalesces free blocks while scanning for a block to
- allocate
- .COM programs are initially allocated the largest available memory
- block, and should free some memory with AH=49h before attempting any
- allocations
- under the FlashTek X-32 DOS extender, EBX contains a protected-mode
- near pointer to the allocated block on a successful return
- SeeAlso: AH=49h,AH=4Ah,AH=58h,AH=83h
- --------D-2149-------------------------------
- INT 21 - DOS 2+ - FREE MEMORY
- AH = 49h
- ES = segment of block to free
- Return: CF clear if successful
- CF set on error
- AX = error code (07h,09h) (see #01680 at AH=59h/BX=0000h)
- Notes: apparently never returns an error 07h, despite official docs; DOS 2.1+
- code contains only an error 09h exit
- DOS 2.1-6.0 does not coalesce adjacent free blocks when a block is
- freed, only when a block is allocated or resized
- the code for this function is identical in DOS 2.1-6.0 except for
- calls to start/end a critical section in DOS 3.0+
- SeeAlso: AH=48h,AH=4Ah
- --------D-214A-------------------------------
- INT 21 - DOS 2+ - RESIZE MEMORY BLOCK
- AH = 4Ah
- BX = new size in paragraphs
- ES = segment of block to resize
- Return: CF clear if successful
- CF set on error
- AX = error code (07h,08h,09h) (see #01680 at AH=59h/BX=0000h)
- BX = maximum paragraphs available for specified memory block
- Notes: under DOS 2.1-6.0, if there is insufficient memory to expand the block
- as much as requested, the block will be made as large as possible
- DOS 2.1-6.0 coalesces any free blocks immediately following the block
- to be resized
- SeeAlso: AH=48h,AH=49h,AH=83h
- --------v-214A--BX00B6-----------------------
- INT 21 - VIRUS???
- AH = 4Ah
- BX = 00B6h
- ES = CX
- Return: ???
- Note: this call is intercepted by the Search&Destroy SDRes v27.03 bundled
- with Novell DOS 7, and is presumably some virus's installation check
- SeeAlso: AH=0Eh/DL=ADh,AH=4Ah/BX=FFFFh,AH=D2h"VIRUS"
- --------v-214A--BXFFFF-----------------------
- INT 21 - VIRUS???
- AH = 4Ah
- BX = FFFFh
- CX = 0568h
- SI = 0129h
- DI = 0000h
- ES = BP
- Return: ???
- Note: this call is intercepted by the Search&Destroy SDRes v27.03 bundled
- with Novell DOS 7, and is presumably some virus's installation check
- SeeAlso: AH=0Eh/DL=ADh,AH=4Ah/BX=00B6h
- --------D-214B-------------------------------
- INT 21 - DOS 2+ - "EXEC" - LOAD AND/OR EXECUTE PROGRAM
- AH = 4Bh
- AL = type of load
- 00h load and execute
- 01h load but do not execute
- 03h load overlay (see #01591)
- 04h load and execute in background (European MS-DOS 4.0 only)
- "Exec & Go" (see also AH=80h)
- DS:DX -> ASCIZ program name (must include extension)
- ES:BX -> parameter block (see #01590,#01591,#01592)
- CX = mode (subfunction 04h only)
- 0000h child placed in zombie mode after termination
- 0001h child's return code discarded on termination
- Return: CF clear if successful
- BX,DX destroyed
- if subfunction 01h, process ID set to new program's PSP; get with
- INT 21/AH=62h
- CF set on error
- AX = error code (01h,02h,05h,08h,0Ah,0Bh) (see #01680 at AH=59h)
- Notes: DOS 2.x destroys all registers, including SS:SP
- under ROM-based DOS, if no disk path characters (colons or slashes)
- are included in the program name, the name is searched for in the
- ROM module headers (see #01595) before searching on disk
- for functions 00h and 01h, the calling process must ensure that there
- is enough unallocated memory available; if necessary, by releasing
- memory with AH=49h or AH=4Ah
- for function 01h, the AX value to be passed to the child program is put
- on top of the child's stack
- for function 03h, DOS assumes that the overlay is being loaded into
- memory allocated by the caller
- function 01h was undocumented prior to the release of DOS 5.0
- some versions (such as DR DOS 6.0) check the parameters and parameter
- block and return an error if an invalid value (such as an offset of
- FFFFh) is found
- background programs under European MS-DOS 4.0 must use the new
- executable format
- this function ignores the filename extension, instead checking the
- first two bytes of the file to determine whether there is a valid
- .EXE header (see #01594); if not, the file is assumed to be in .COM
- format. If present, the file may be in any of several formats which
- are extensions of the original .EXE format (see #01593)
- .COM-format executables begin running with the following register
- values:
- AL = 00h if first FCB has valid drive letter, FFh if not
- AH = 00h if second FCB has valid drive letter, FFh if not
- CS,DS,ES,SS = PSP segment
- SP = offset of last word available in first 64K segment
- (note: AX is always 0000h under DESQview)
- old-format executables begin running with the following register
- values:
- AL = 00h if first FCB has valid drive letter, FFh if not
- AH = 00h if second FCB has valid drive letter, FFh if not
- DS,ES = PSP segment
- SS:SP as defined in .EXE header
- (note: AX is always 0000h under DESQview)
- new executables begin running with the following register values
- AX = environment segment
- BX = offset of command tail in environment segment
- CX = size of automatic data segment (0000h = 64K)
- ES,BP = 0000h
- DS = automatic data segment
- SS:SP = initial stack
- the command tail corresponds to an old executable's PSP:0081h and
- following, except that the 0Dh is turned into a NUL (00h); new
- format executables have no PSP
- under the FlashTek X-32 DOS extender, only function 00h is supported
- and the pointers are passed in DS:EDX and ES:EBX
- DR DOS 6 always loads .EXE-format programs with no fixups and
- .COM-format programs starting with 9Ch 55h (PUSHF/PUSH BP) above the
- 64K mark to avoid the EXEPACK bug, by extending the memory block
- containing the program's environment; this code is disabled if the
- name of the parent program as stored in the MCB is 'WIN'.
- DR DOS 3.41 and 5.0 check for a valid filename before testing the
- subfunction number, so the otherwise invalid subfunction 02h will
- only return error code 01h if the given filename actually exists;
- otherwise, errors 02h, 03h, or 05h are returned
- BUGS: DOS 2.00 assumes that DS points at the current program's PSP
- Load Overlay (subfunction 03h) loads up to 512 bytes too many if the
- file contains additional data after the actual overlay
- Load but Do Not Execute (subfunction 01h) is reported to corrupt the
- top word of the caller's stack if the loaded module terminates with
- INT 21/AH=4Ch in some versions of MS-DOS, including v5.00.
- SeeAlso: AX=4B05h,AH=4Ch,AH=4Dh,AH=64h/BX=0025h,AH=8Ah,INT 2E,INT 60/DI=0604h
- Format of EXEC parameter block for AL=00h,01h,04h:
- Offset Size Description (Table 01590)
- 00h WORD segment of environment to copy for child process (copy caller's
- environment if 0000h)
- 02h DWORD pointer to command tail to be copied into child's PSP
- 06h DWORD pointer to first FCB to be copied into child's PSP
- 0Ah DWORD pointer to second FCB to be copied into child's PSP
- 0Eh DWORD (AL=01h) will hold subprogram's initial SS:SP on return
- 12h DWORD (AL=01h) will hold entry point (CS:IP) on return
- SeeAlso: #01591,#01592
- Format of EXEC parameter block for AL=03h:
- Offset Size Description (Table 01591)
- 00h WORD segment at which to load overlay
- 02h WORD relocation factor to apply to overlay if in .EXE format
- SeeAlso: #01590,#01592
- Format of EXEC parameter block for FlashTek X-32:
- Offset Size Description (Table 01592)
- 00h PWORD 48-bit far pointer to environment string
- 06h PWORD 48-bit far pointer to command tail string
- SeeAlso: #01590,#01591
- (Table 01593)
- Values for the executable types understood by various environments:
- MZ old-style DOS executable (see #01594)
- NE Windows or OS/2 1.x segmented ("new") executable (see #01596)
- LE Windows virtual device driver (VxD) linear executable (see #01609)
- LX variant of LE used in OS/2 2.x (see #01609)
- W3 Windows WIN386.EXE file; a collection of LE files
- W4 Windows95 VMM32.VXD file
- PE Win32 (Windows NT and Win32s) portable executable based on Unix COFF
- DL HP 100LX/200LX system manager compliant executable (.EXM)
- MP old PharLap .EXP (see #01619)
- P2 PharLap 286 .EXP (see #01620)
- P3 PharLap 386 .EXP (see #01620)
- Format of .EXE file header:
- Offset Size Description (Table 01594)
- 00h 2 BYTEs .EXE signature, either "MZ" or "ZM" (5A4Dh or 4D5Ah)
- (see also #01593)
- 02h WORD number of bytes in last 512-byte page of executable
- 04h WORD total number of 512-byte pages in executable (includes any
- partial last page)
- 06h WORD number of relocation entries
- 08h WORD header size in paragraphs
- 0Ah WORD minimum paragraphs of memory required to allocate in addition
- to executable's size
- 0Ch WORD maximum paragraphs to allocate in addition to executable's size
- 0Eh WORD initial SS relative to start of executable
- 10h WORD initial SP
- 12h WORD checksum (one's complement of sum of all words in executable)
- 14h DWORD initial CS:IP relative to start of executable
- 18h WORD offset within header of relocation table
- 40h or greater for new-format (NE,LE,LX,W3,PE,etc.) executable
- 1Ah WORD overlay number (normally 0000h = main program)
- ---new executable---
- 1Ch 4 BYTEs ???
- 20h WORD behavior bits
- 22h 26 BYTEs reserved for additional behavior info
- 3Ch DWORD offset of new executable (NE,LE,etc) header within disk file,
- or 00000000h if plain MZ executable
- ---Borland TLINK---
- 1Ch 2 BYTEs ??? (apparently always 01h 00h)
- 1Eh BYTE signature FBh
- 1Fh BYTE TLINK version (major in high nybble, minor in low nybble)
- 20h 2 BYTEs ??? (v2.0 apparently always 72h 6Ah, v3.0+ seems always 6Ah 72h)
- ---ARJ self-extracting archive---
- 1Ch 4 BYTEs signature "RJSX" (older versions, new signature is "aRJsfX" in
- the first 1000 bytes of the file)
- ---LZEXE 0.90 compressed executable---
- 1Ch 4 BYTEs signature "LZ09"
- ---LZEXE 0.91 compressed executable---
- 1Ch 4 BYTEs signature "LZ91"
- ---PKLITE compressed executable---
- 1Ch BYTE minor version number
- 1Dh BYTE bits 0-3: major version
- bit 4: extra compression
- bit 5: huge (multi-segment) file
- 1Eh 6 BYTEs signature "PKLITE" (followed by copyright message)
- ---LHarc 1.x self-extracting archive---
- 1Ch 4 BYTEs unused???
- 20h 3 BYTEs jump to start of extraction code
- 23h 2 BYTEs ???
- 25h 12 BYTEs signature "LHarc's SFX "
- ---LHA 2.x self-extracting archive---
- 1Ch 8 BYTEs ???
- 24h 10 BYTEs signature "LHa's SFX " (v2.10) or "LHA's SFX " (v2.13)
- ---TopSpeed C 3.0 CRUNCH compressed file---
- 1Ch DWORD 018A0001h
- 20h WORD 1565h
- ---PKARCK 3.5 self-extracting archive---
- 1Ch DWORD 00020001h
- 20h WORD 0700h
- ---BSA (Soviet archiver) self-extracting archive---
- 1Ch WORD 000Fh
- 1Eh BYTE A7h
- ---LARC self-extracting archive---
- 1Ch 4 BYTEs ???
- 20h 11 BYTEs "SFX by LARC "
- ---LH self-extracting archive---
- 1Ch 8 BYTEs ???
- 24h 8 BYTEs "LH's SFX "
- ---RAR self-extracting archive---
- 1Ch 4 BYTEs signature "RSFX"
- ---other linkers---
- 1Ch var optional information
- ---
- N N DWORDs relocation items
- each is the segment:offset from start of load image at which
- to add the actual load segment to the indicated WORD
- Notes: if the word at offset 02h is 4, it should be treated as 00h, since
- pre-1.10 versions of the MS linker set it that way
- if both minimum and maximum allocation (offset 0Ah/0Ch) are zero, the
- program is loaded as high in memory as possible (DOS only checks
- the maximum allocation, however)
- the maximum allocation is set to FFFFh by default
- additional data may be contained in the file beyond the end of the
- load image described by the .EXE header; this data may be overlays,
- the actual executable for newer-format executables, or debugging
- information (see #01600,#01624)
- relocations entries need not be in any particular order, although they
- are typically stored in order from beginning to end of the load
- image
- SeeAlso: #01596
- Format of ROM Module Header:
- Offset Size Description (Table 01595)
- 00h 2 BYTEs ROM signature 55h, AAh
- 02h BYTE size of ROM in 512-byte blocks
- 03h 3 BYTEs POST initialization entry point (near JMP instruction)
- 06h ROM Program Name List [array]
- Offset Size Description
- 00h BYTE length of ROM program's name (00h if end of name list)
- 01h N BYTEs program name
- N+1 3 BYTEs program entry point (near JMP instruction)
- Format of new executable header:
- Offset Size Description (Table 01596)
- 00h 2 BYTEs "NE" (4Eh 45h) signature
- 02h 2 BYTEs linker version (major, then minor)
- 04h WORD offset from start of this header to entry table (see #01603)
- 06h WORD length of entry table in bytes
- 08h DWORD file load CRC (0 in Borland's TPW)
- 0Ch BYTE program flags (see #01597)
- 0Dh BYTE application flags (see #01598)
- 0Eh WORD auto data segment index
- 10h WORD initial local heap size
- 12h WORD initial stack size (added to data seg, 0000h if SS <> DS)
- 14h DWORD program entry point (CS:IP), "CS" is index into segment table
- 18h DWORD initial stack pointer (SS:SP), "SS" is segment index
- if SS=automatic data segment and SP=0000h, the stack pointer is
- set to the top of the automatic data segment, just below the
- local heap
- 1Ch WORD segment count
- 1Eh WORD module reference count
- 20h WORD length of nonresident names table in bytes
- 22h WORD offset from start of this header to segment table (see #01601)
- 24h WORD offset from start of this header to resource table
- 26h WORD offset from start of this header to resident names table
- 28h WORD offset from start of this header to module reference table
- 2Ah WORD offset from start of this header to imported names table
- (array of counted strings, terminated with a string of length
- 00h)
- 2Ch DWORD offset from start of file to nonresident names table
- 30h WORD count of moveable entry point listed in entry table
- 32h WORD file alignment size shift count
- 0 is equivalent to 9 (default 512-byte pages)
- 34h WORD number of resource table entries
- 36h BYTE target operating system
- 00h unknown
- 01h OS/2
- 02h Windows
- 03h European MS-DOS 4.x
- 04h Windows 386
- 05h BOSS (Borland Operating System Services)
- 81h PharLap 286|DOS-Extender, OS/2
- 82h PharLap 286|DOS-Extender, Windows
- 37h BYTE other EXE flags (see #01599)
- 38h WORD offset to return thunks or start of gangload area
- 3Ah WORD offset to segment reference thunks or length of gangload area
- 3Ch WORD minimum code swap area size
- 3Eh 2 BYTEs expected Windows version (minor version first)
- Note: this header is documented in detail in the Windows 3.1 SDK Programmer's
- Reference, Vol 4.
- SeeAlso: #01594
- Bitfields for new executable program flags:
- Bit(s) Description (Table 01597)
- 0-1 DGROUP type
- 0 = none
- 1 = single shared
- 2 = multiple (unshared)
- 3 = (null)
- 2 global initialization
- 3 protected mode only
- 4 8086 instructions
- 5 80286 instructions
- 6 80386 instructions
- 7 80x87 instructions
- Bitfields for new executable application flags:
- Bit(s) Description (Table 01598)
- 0-2 application type
- 001 full screen (not aware of Windows/P.M. API)
- 010 compatible with Windows/P.M. API
- 011 uses Windows/P.M. API
- 3 is a Family Application (OS/2)
- 5 0=executable, 1=errors in image
- 6 non-conforming program (valid stack is not maintained)
- 7 DLL or driver rather than application
- (SS:SP info invalid, CS:IP points at FAR init routine called with
- AX=module handle which returns AX=0000h on failure, AX nonzero on
- successful initialization)
- Bitfields for other new .EXE flags:
- Bit(s) Description (Table 01599)
- 0 supports long filenames
- 1 2.X protected mode
- 2 2.X proportional font
- 3 gangload area
- Format of Codeview trailer (at end of executable):
- Offset Size Description (Table 01600)
- 00h WORD signature 4E42h ('NB')
- 02h WORD Microsoft debug info version number
- 04h DWORD Codeview header offset
- SeeAlso: #01624
- Format of new executable segment table record:
- Offset Size Description (Table 01601)
- 00h WORD offset in file (shift left by alignment shift to get byte offs)
- 02h WORD length of image in file (0000h = 64K)
- 04h WORD segment attributes (see #01602)
- 06h WORD number of bytes to allocate for segment (0000h = 64K)
- Note: the first segment table entry is entry number 1
- SeeAlso: #01604
- Bitfields for segment attributes:
- Bit(s) Description (Table 01602)
- 0 data segment rather than code segment
- 1 unused???
- 2 real mode
- 3 iterated
- 4 movable
- 5 sharable
- 6 preloaded rather than demand-loaded
- 7 execute-only (code) or read-only (data)
- 8 relocations (directly following code for this segment)
- 9 debug info present
- 10,11 80286 DPL bits
- 12 discardable
- 13-15 discard priority
- Format of new executable entry table item (list):
- Offset Size Description (Table 01603)
- 00h BYTE number of entry points (00h if end of entry table list)
- 01h BYTE segment number (00h if end of entry table list)
- 02h 3N BYTEs entry records
- Offset Size Description
- 00h BYTE flags
- bit 0: exported
- bit 1: single data
- bits 2-7: unused???
- 01h WORD offset within segment
- Format of new executable relocation data (immediately follows segment image):
- Offset Size Description (Table 01604)
- 00h WORD number of relocation items
- 02h 8N BYTEs relocation items
- Offset Size Description
- 00h BYTE relocation type
- 00h LOBYTE
- 02h BASE
- 03h PTR
- 05h OFFS
- 0Bh PTR48
- 0Dh OFFS32
- 01h BYTE flags
- bit 2: additive
- 02h WORD offset within segment
- 04h WORD target address segment
- 06h WORD target address offset
- SeeAlso: #01601,#01605
- Format of new executable resource data:
- Offset Size Description (Table 01605)
- 00h WORD alignment shift count for resource data
- 02h N RECORDs resources
- Format of resource record:
- Offset Size Description
- 00h WORD type ID
- 0000h if end of resource records
- >= 8000h if integer type
- else offset from start of resource table to type string
- 02h WORD number of resources of this type
- 04h DWORD reserved for runtime use
- 08h N Resources (see #01606)
- Note: resource type and name strings are stored immediately following the
- resource table, and are not null-terminated
- SeeAlso: #01606
- Format of new executable resource entry:
- Offset Size Description (Table 01606)
- 00h WORD offset in alignment units from start of file to contents of
- the resource data
- 02h WORD length of resource image in bytes
- 04h WORD flags
- bit 4: moveable
- bit 5: shareable
- bit 6: preloaded
- 06h WORD resource ID
- >= 8000h if integer resource
- else offset from start of resource table to resource string
- 08h DWORD reserved for runtime use
- Notes: resource type and name strings are stored immediately following the
- resource table, and are not null-terminated
- strings are counted strings, with a string of length 0 indicating the
- end of the resource table
- SeeAlso: #01605,#01607
- Format of new executable module reference table [one bundle of entries]:
- Offset Size Description (Table 01607)
- 00h BYTE number of records in this bundle (00h if end of table)
- 01h BYTE segment indicator
- 00h unused
- FFh movable segment, segment number is in entry
- else segment number of fixed segment
- 02h N RECORDs
- Format of segment record
- Offset Size Description
- 00h BYTE flags
- bit 0: entry is exported
- bit 1: entry uses global (shared) data
- bits 7-3: number of parameter words
- ---fixed segment---
- 01h WORD offset
- ---moveable segment---
- 01h 2 BYTEs INT 3F instruction (CDh 3Fh)
- 03h BYTE segment number
- 05h WORD offset
- Note: table entries are numbered starting from 1
- SeeAlso: #01608
- Format of new executable resident/nonresident name table entry:
- Offset Size Description (Table 01608)
- 00h BYTE length of string (00h if end of table)
- 01h N BYTEs ASCII text of string
- N+1 WORD ordinal number (index into entry table)
- Notes: the first string in the resident name table is the module name; the
- first entry in the nonresident name table is the module description
- the strings are case-sensitive; if the executable was linked with
- /IGNORECASE, all strings are in uppercase
- SeeAlso: #01607
- Format of Linear Executable (enhanced mode executable) header:
- Offset Size Description (Table 01609)
- 00h 2 BYTEs "LE" (4Ch 45h) signature (Windows)
- "LX" (4Ch 58h) signature (OS/2)
- 02h BYTE byte order (00h = little-endian, nonzero = big-endian)
- 03h BYTE word order (00h = little-endian, nonzero = big-endian)
- 04h DWORD executable format level
- 08h WORD CPU type (see also INT 15/AH=C9h)
- 01h Intel 80286 or upwardly compatible
- 02h Intel 80386 or upwardly compatible
- 03h Intel 80486 or upwardly compatible
- 04h Intel Pentium (80586) or upwardly compatible
- 20h Intel i860 (N10) or compatible
- 21h Intel "N11" or compatible
- 40h MIPS Mark I (R2000, R3000) or compatible
- 41h MIPS Mark II (R6000) or compatible
- 42h MIPS Mark III (R4000) or compatible
- 0Ah WORD target operating system
- 01h OS/2
- 02h Windows
- 03h European DOS 4.0
- 04h Windows 386
- 0Ch DWORD module version
- 10h DWORD module type (see #01610)
- 14h DWORD number of memory pages
- 18h Initial CS:EIP
- DWORD object number
- DWORD offset
- 20h Initial SS:ESP
- DWORD object number
- DWORD offset
- 28h DWORD memory page size
- 2Ch DWORD (Windows LE) bytes on last page
- (OS/2 LX) page offset shift count
- 30h DWORD fixup section size
- 34h DWORD fixup section checksum
- 38h DWORD loader section size
- 3Ch DWORD loader section checksum
- 40h DWORD offset of object table (see #01611)
- 44h DWORD object table entries
- 48h DWORD object page map table offset (see #01613)
- 4Ch DWORD object iterate data map offset
- 50h DWORD resource table offset
- 54h DWORD resource table entries
- 58h DWORD resident names table offset (see #01614)
- 5Ch DWORD entry table offset (see #01615,#01616)
- 60h DWORD module directives table offset
- 64h DWORD Module Directives entries
- 68h DWORD Fixup page table offset
- 6Ch DWORD Fixup record table offset (see #01618)
- 70h DWORD imported modules name table offset
- 74h DWORD imported modules count
- 78h DWORD imported procedures name table offset
- 7Ch DWORD per-page checksum table offset
- 80h DWORD data pages offset
- 84h DWORD preload page count
- 88h DWORD non-resident names table offset
- 8Ch DWORD non-resident names table length
- 90h DWORD non-resident names checksum
- 94h DWORD automatic data object
- 98h DWORD debug information offset
- 9Ch DWORD debug information length
- A0h DWORD preload instance pages number
- A4h DWORD demand instance pages number
- A8h DWORD extra heap allocation
- ACh 12 BYTEs reserved
- B8h DWORD offset of VERSIONINFO resource (MS-Windows VxD only)
- BCh DWORD pointer to ??? (dynamically-loadable VxDs only???)
- C0h WORD device ID (MS-Windows VxD only)
- C2h WORD DDK version (MS-Windows VxD only)
- Note: used by EMM386.EXE, QEMM, and Windows 3.0 Enhanced Mode drivers
- Bitfields for Linear Executable module type:
- Bit(s) Description (Table 01610)
- 2 initialization (only for DLLs) 0 = global, 1 = per-process
- 4 no internal fixups in executable image
- 5 no external fixups in executable image
- 8-10 API compatibility
- 0 = unknown
- 1 = incompatible with PM windowing \
- 2 = compatible with PM windowing > (only for
- 3 = uses PM windowing API / programs)
- 13 module not loadable (only for programs)
- 15-17 module type
- 000 program
- 001 library (DLL)
- 011 protected memory library module
- 100 physical device driver
- 110 virtual device driver
- 30 per-process library termination
- (requires valid CS:EIP, can't be set for .EXE)
- Format of object table entry:
- Offset Size Description (Table 01611)
- 00h DWORD virtual size in bytes
- 04h DWORD relocation base address
- 08h DWORD object flags (see #01612)
- 0Ch DWORD page map index
- 10h DWORD page map entries (see #01613)
- 14h 4 BYTEs reserved??? (apparently always zeros)
- Bitfields for object flags:
- Bit(s) Description (Table 01612)
- 0 readable
- 1 writable
- 2 executable
- 3 resource
- 4 discardable
- 5 shared
- 6 preloaded
- 7 invalid
- 8-9 type
- 00 normal
- 01 zero-filled
- 10 resident
- 11 resident and contiguous
- 10 resident and long-lockable
- 11 reserved
- 12 16:16 alias required
- 13 "BIG" (Huge: 32-bit)
- 14 conforming
- 15 "OBJECT_I/O_PRIVILEGE_LEVEL"
- 16-31 reserved
- Format of object page map table entry:
- Offset Size Description (Table 01613)
- 00h BYTE ??? (usually 00h)
- 01h WORD (big-endian) index to fixup table
- 0000h if no relocation info
- 03h BYTE type (00h hard copy in file, 03h some relocation needed)
- Format of resident names table entry:
- Offset Size Description (Table 01614)
- 00h BYTE length of name
- 01h N BYTEs name
- N+1 3 BYTEs ???
- Format of LE linear executable entry table:
- Offset Size Description (Table 01615)
- 00h BYTE number of entries in table
- 01h 10 BYTEs per entry
- Offset Size Description
- 00h BYTE bit flags
- bit 0: non-empty bundle
- bit 1: 32-bit entry
- 01h WORD object number
- 03h BYTE entry type flags
- bit 0: exported
- bit 1: uses single data rather than instance
- bit 2: reserved
- bits 3-7: number of stack parameters
- 04h DWORD offset of entry point
- 08h 2 BYTEs ???
- Note: empty bundles (bit flags at 00h = 00h) are used to skip unused indices,
- and do not contain the remaining nine bytes
- Format of LX linear executable entry table [array]:
- Offset Size Description (Table 01616)
- 00h BYTE number of bundles following (00h = end of entry table)
- 01h BYTE bundle type
- 00h empty
- 01h 16-bit entry
- 02h 286 callgate entry
- 03h 32-bit entry
- 04h forwarder entry
- bit 7 set if additional parameter typing information is present
- ---bundle type 00h---
- no additional fields
- ---bundle type 01h---
- 02h WORD object number
- 04h BYTE entry flags
- bit 0: exported
- bits 7-3: number of stack parameters
- 05h WORD offset of entry point in object (shifted by page size shift)
- ---bundle type 02h---
- 02h WORD object number
- 04h BYTE entry flags
- bit 0: exported
- bits 7-3: number of stack parameters
- 05h WORD offset of entry point in object
- 07h WORD reserved for callgate selector (used by loader)
- ---bundle type 03h---
- 02h WORD object number
- 04h BYTE entry flags
- bit 0: exported
- bits 7-3: number of stack parameters
- 05h DWORD offset of entry point in object
- ---bundle type 04h---
- 02h WORD reserved
- 04h BYTE forwarder flags
- bit 0: import by ordinal
- bits 7-1 reserved
- 05h WORD module ordinal
- (forwarder's index into Import Module Name table)
- 07h DWORD procedure name offset or import ordinal number
- Note: all fields after the first two bytes are repeated N times
- Bitfields for linear executable fixup type:
- Bit(s) Description (Table 01617)
- 7 ordinal is BYTE rather than WORD
- 6 16-rather than 8-object number/module ordinal
- 5 addition with DWORD rather than WORD
- 4 relocation info has size with new two bytes at end
- 3 reserved (0)
- 2 set if add to destination, clear to replace destination
- 1-0 type
- 00 internal fixup
- 01 external fixup, imported by ordinal
- 10 external fixup, imported by name
- 11 internal fixup via entry table
- Format of linear executable fixup record:
- Offset Size Description (Table 01618)
- 00h BYTE type
- bits 7-4: modifier (0001 single, 0011 multiple)
- bits 3-0: type
- 0000 byte offset
- 0010 word segment
- 0011 16-bit far pointer (DWORD)
- 0101 16-bit offset
- 0110 32-bit far pointer (PWORD)
- 0111 32-bit offset
- 1000 near call or jump, WORD/DWORD based on seg attrib
- 01h BYTE linear executable fixup type (see #01617)
- ---if single type---
- 02h WORD offset within page
- 04h relocation information
- ---internal fixup---
- BYTE object number
- ---external,ordinal---
- BYTE one-based module number in Import Module table
- BYTE/WORD ordinal number
- WORD/DWORD value to add (only present if modifier bit 4 set)
- ---external,name---
- BYTE one-based module number in Import Module table
- WORD offset in Import Procedure names
- WORD/DWORD value to add (only present if modifier bit 4 set)
- ---if multiple type---
- 02h BYTE number of items
- 03h var relocation info as for "single" type (above)
- N WORDs offsets of items to relocate
- Format of old Phar Lap .EXP file header:
- Offset Size Description (Table 01619)
- 00h 2 BYTEs "MP" (4Dh 50h) signature
- 02h WORD remainder of image size / page size (page size = 512h)
- 04h WORD size of image in pages
- 06h WORD number of relocation items
- 08h WORD header size in paragraphs
- 0Ah WORD minimum number of extra 4K pages to be allocated at the end
- of program, when it is loaded
- 0Ch WORD maximum number of extra 4K pages to be allocated at the end
- of program, when it is loaded
- 0Eh DWORD initial ESP
- 12h WORD word checksum of file
- 14h DWORD initial EIP
- 18h WORD offset of first relocation item
- 1Ah WORD overlay number
- 1Ch WORD ??? (wants to be 1)
- SeeAlso: #01620
- Format of new Phar Lap .EXP file header:
- Offset Size Description (Table 01620)
- 00h 2 BYTEs signature ("P2" for 286 .EXP executable, "P3" for 386 .EXP)
- 02h WORD level (01h flat-model file, 02h multisegmented file)
- 04h WORD header size
- 06h DWORD file size in bytes
- 0Ah WORD checksum
- 0Ch DWORD offset of run-time parameters within file (see #01622)
- 10h DWORD size of run-time parameters in bytes
- 14h DWORD offset of relocation table within file
- 18h DWORD size of relocation table in bytes
- 1Ch DWORD offset of segment information table within file (see #01621)
- 20h DWORD size of segment information table in bytes
- 24h WORD size of segment information table entry in bytes
- 26h DWORD offset of load image within file
- 2Ah DWORD size of load image on disk
- 2Eh DWORD offset of symbol table within file or 00000000h
- 32h DWORD size of symbol table in bytes
- 36h DWORD offset of GDT within load image
- 3Ah DWORD size of GDT in bytes
- 3Eh DWORD offset of LDT within load image
- 42h DWORD size of LDT in bytes
- 46h DWORD offset of IDT within load image
- 4Ah DWORD size of IDT in bytes
- 4Eh DWORD offset of TSS within load image
- 52h DWORD size of TSS in bytes
- 56h DWORD minimum number of extra bytes to be allocated at end of program
- (level 1 executables only)
- 5Ah DWORD maximum number of extra bytes to be allocated at end of program
- (level 1 executables only)
- 5Eh DWORD base load offset (level 1 executables only)
- 62h DWORD initial ESP
- 66h WORD initial SS
- 68h DWORD initial EIP
- 6Ch WORD initial CS
- 6Eh WORD initial LDT
- 70h WORD initial TSS
- 72h WORD flags
- bit 0: load image is packed
- bit 1: 32-bit checksum is present
- bits 4-2: type of relocation table
- 74h DWORD memory requirements for load image
- 78h DWORD 32-bit checksum (optional)
- 7Ch DWORD size of stack segment in bytes
- 80h 256 BYTEs reserved (0)
- SeeAlso: #01619,#01623
- Format of Phar Lap segment information table entry:
- Offset Size Description (Table 01621)
- 00h WORD selector number
- 02h WORD flags
- 04h DWORD base offset of selector
- 08h DWORD minimum number of extra bytes to be allocated to the segment
- Format of 386|DOS-Extender run-time parameters:
- Offset Size Description (Table 01622)
- 00h 2 BYTEs signature "DX" (44h 58h)
- 02h WORD minimum number of real-mode params to leave free at run time
- 04h WORD maximum number of real-mode params to leave free at run time
- 06h WORD minimum interrupt buffer size in KB
- 08h WORD maximum interrupt buffer size in KB
- 0Ah WORD number of interrupt stacks
- 0Ch WORD size in KB of each interrupt stack
- 0Eh DWORD offset of byte past end of real-mode code and data
- 12h WORD size in KB of call buffers
- 14h WORD flags
- bit 0: file is virtual memory manager
- bit 1: file is a debugger
- 16h WORD unprivileged flag (if nonzero, executes at ring 1, 2, or 3)
- 18h 104 BYTEs reserved (0)
- Format of Phar Lap repeat block header:
- Offset Size Description (Table 01623)
- 00h WORD byte count
- 02h BYTE repeat string length
- Format of Borland debugging information header (following load image):
- Offset Size Description (Table 01624)
- 00h WORD signature 52FBh
- 02h WORD version ID
- 04h DWORD size of name pool in bytes
- 08h WORD number of names in name pool
- 0Ah WORD number of type entries
- 0Ch WORD number of structure members
- 0Eh WORD number of symbols
- 10h WORD number of global symbols
- 12h WORD number of modules
- 14h WORD number of locals (optional)
- 16h WORD number of scopes in table
- 18h WORD number of line-number entries
- 1Ah WORD number of include files
- 1Ch WORD number of segment records
- 1Eh WORD number of segment/file correlations
- 20h DWORD size of load image after removing uninitialized data and debug
- information
- 24h DWORD debugger hook; pointer into debugged program whose meaning
- depends on program flags
- 28h BYTE program flags
- bit 0: case-sensitive link
- bit 1: pascal overlay program
- 29h WORD no longer used
- 2Bh WORD size of data pool in bytes
- 2Dh BYTE padding
- 2Eh WORD size of following header extension (currently 00h, 10h, or 20h)
- 30h WORD number of classes
- 32h WORD number of parents
- 34h WORD number of global classes (currently unused)
- 36h WORD number of overloads (currently unused)
- 38h WORD number of scope classes
- 3Ah WORD number of module classes
- 3Ch WORD number of coverage offsets
- 3Eh DWORD offset relative to symbol base of name pool
- 42h WORD number of browser information records
- 44h WORD number of optimized symbol records
- 46h WORD debugging flags
- 48h 8 BYTEs padding
- Note: additional information on the Borland debugging info may be found in
- Borland's Open Architecture Handbook
- SeeAlso: #01600
- --------U-214B-------------------------------
- INT 21 - ELRES v1.0 only - INSTALLATION CHECK
- AH = 4Bh
- DS:DX = 0000h:0000h
- Return: ES:BX -> ELRES history structure (see #01381 at AH=2Bh/CX=454Ch)
- DX = DABEh (signature, DAve BEnnett)
- Program: ELRES is an MS-DOS return code (errorlevel) recorder by David H.
- Bennett
- SeeAlso: AH=2Bh/CX=454Ch
- --------v-214B04-----------------------------
- INT 21 - VIRUS - "MG", "699"/"Thirteen Minutes" - INSTALLATION CHECK
- AX = 4B04h
- Return: CF clear if "MG" resident
- AX = 044Bh if "699"/"Thirteen Minutes" resident
- SeeAlso: AX=4243h,AH=4Ah/BX=FFFFh,AX=4B21h
- --------D-214B05-----------------------------
- INT 21 - DOS 5+ - SET EXECUTION STATE
- AX = 4B05h
- DS:DX -> execution state structure (see #01625)
- Return: CF clear if successful
- AX = 0000h
- CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- Note: used by programs which intercept AX=4B00h to prepare new programs for
- execution (including setting the DOS version number). No DOS, BIOS
- or other software interrupt may be called after return from this call
- before commencement of the child process. If DOS is running in the
- HMA, A20 is turned off on return from this call.
- SeeAlso: AH=4Bh
- Format of execution state structure:
- Offset Size Description (Table 01625)
- 00h WORD reserved (00h)
- 02h WORD type flags
- bit 0: program is an .EXE
- bit 1: program is an overlay
- 04h DWORD pointer to ASCIZ name of program file
- 08h WORD PSP segment of new program
- 0Ah DWORD starting CS:IP of new program
- 0Eh DWORD program size including PSP
- ----------214B18DX0010-----------------------
- INT 21 U - FBOOT v2.13 - PERFORM FAST BOOTSTRAP
- AX = 4B18h
- DX = 0010h
- BX = disk selector
- 0000h boot from floppy
- 0080h boot from hard disk
- Return: never if FastBoot installed
- Program: CyberWare FastBoot allows fast warm boots by skipping CMOS
- checking, ROM scan, RAM & peripheral components test
- InstallCheck: search for a character device driver called "FBOOT$$$"
- --------v-214B20-----------------------------
- INT 21 - VIRUS - "Holocaust"/"Telefonica" - ???
- AX = 4B20h
- SeeAlso: AX=4B04h,AX=4B21h
- --------v-214B21-----------------------------
- INT 21 C - VIRUS - "Holocaust"/"Telefonica" - ???
- AX = 4B21h
- Note: called at completion of virus installation
- SeeAlso: AX=4B04h,AX=4B20h,AX=4B25h
- --------v-214B25-----------------------------
- INT 21 - VIRUS - "1063"/"Mono" - INSTALLATION CHECK
- AX = 4B25h
- Return: DI = 1234h if resident
- SeeAlso: AX=4B21h,AX=4B40h
- --------v-214B40-----------------------------
- INT 21 - VIRUS - "Plastique"/"AntiCad" - INSTALLATION CHECK
- AX = 4B40h
- Return: AX = 5678h if resident
- SeeAlso: AX=4B25h,AX=4B41h,AX=4B4Ah
- --------v-214B41-----------------------------
- INT 21 - VIRUS - "Plastique"/"AntiCad" - ???
- AX = 4B41h
- ???
- Return: ???
- SeeAlso: AX=4B40h
- --------v-214B4A-----------------------------
- INT 21 - VIRUS - "Jabberwocky" - INSTALLATION CHECK
- AX = 4B4Ah
- Return: AL = 57h if resident
- SeeAlso: AX=4B40h,AX=4B4Bh
- --------v-214B4B-----------------------------
- INT 21 - VIRUS - "Horse-2" - INSTALLATION CHECK
- AX = 4B4Bh
- Return: CF clear if resident
- SeeAlso: AX=4B4Ah,AX=4B4Dh
- --------v-214B4D-----------------------------
- INT 21 - VIRUS - "Murphy-2", "Patricia"/"Smack" - INSTALLATION CHECK
- AX = 4B4Dh
- Return: CF clear if resident
- SeeAlso: AX=4B4Ah,AX=4B50h
- --------v-214B50-----------------------------
- INT 21 - VIRUS - "Plastique-2576"/"AntiCad-2576" - INSTALLATION CHECK
- AX = 4B50h
- Return: AX = 1234h if resident
- SeeAlso: AX=4B4Dh,AX=4B53h,AX=4B60h
- --------v-214B53-----------------------------
- INT 21 - VIRUS - "Horse" - INSTALLATION CHECK
- AX = 4B53h
- Return: CF clear if resident
- SeeAlso: AX=4B50h,AX=4B53h/BX=2121h,AX=4B55h
- --------v-214B53BX2121-----------------------
- INT 21 - VIRUS - "One Half" - INSTALLATION CHECK
- AX = 4B53h
- BX = 2121h
- CX = 1212h
- DX = 0236h
- Return: AX = 454Bh if installed
- SeeAlso: AX=4B50h,AX=4B53h,AX=4B55h
- --------v-214B55-----------------------------
- INT 21 - VIRUS - "Sparse" - INSTALLATION CHECK
- AX = 4B55h
- Return: AX = 1231h if resident
- SeeAlso: AX=4B53h,AX=4B59h
- --------v-214B59-----------------------------
- INT 21 - VIRUS - "Murphy-1", "Murphy-4" - INSTALLATION CHECK
- AX = 4B59h
- Return: CF clear if resident
- SeeAlso: AX=4B50h,AX=4B5Eh
- --------v-214B5E-----------------------------
- INT 21 - VIRUS - "Brothers" - INSTALLATION CHECK
- AX = 4B5Eh
- Return: CF clear if resident
- SeeAlso: AX=4B59h,AX=4B87h
- --------v-214B60-----------------------------
- INT 21 - VIRUS - "Plastique-2576"/"AntiCad-2576" - ???
- AX = 4B60h
- ???
- Return: ???
- SeeAlso: AX=4B50h
- --------O-214B80-----------------------------
- INT 21 - DR DOS v3.41 - RUN ALREADY-LOADED KERNEL FILE
- AX = 4B80h
- DS:DX -> ASCIZ name of program to EXEC
- ES = segment of PSP for kernel file
- Return: only if call failed
- Note: DR DOS uses this call after an AX=4B01h to load the kernel file into
- memory and patching the program's parent-PSP field to point at itself
- SeeAlso: AH=4Bh"EXEC"
- --------v-214B87-----------------------------
- INT 21 - VIRUS - "Shirley" - INSTALLATION CHECK
- AX = 4B87h
- Return: AX = 6663h if resident
- SeeAlso: AX=4B5Eh,AX=4B95h
- --------v-214B95-----------------------------
- INT 21 - VIRUS - "Zherkov-1882" - INSTALLATION CHECK
- AX = 4B95h
- Return: AX = 1973h if resident
- SeeAlso: AX=4B87h,AX=4BA7h
- --------v-214BA7-----------------------------
- INT 21 - VIRUS - "1876"/"Dash-em" - INSTALLATION CHECK
- AX = 4BA7h
- Return: AX = B459h if resident
- SeeAlso: AX=4B95h,AX=4BAAh
- --------v-214BAA-----------------------------
- INT 21 - VIRUS - "Nomenklatura" - INSTALLATION CHECK
- AX = 4BAAh
- Return: CF clear if resident
- SeeAlso: AX=4BA7h,AX=4BAFh
- --------v-214BAF-----------------------------
- INT 21 - VIRUS - "948"/"Screenplus1", "Magnitogorsk" - INSTALLATION CHECK
- AX = 4BAFh
- Return: AL = AFh if "Magnitogorsk" resident
- AL = FAh if "948"/"Screenplus1" resident
- SeeAlso: AX=4BAAh,AX=4BB1h"VIRUS"
- --------v-214BB1-----------------------------
- INT 21 - VIRUS - "UZZY" -INSTALLATION CHECK
- AX = 4BB1h
- Return: CL = 04h if resident
- SeeAlso: AX=4BAFh"VIRUS",AX=4BDDh"VIRUS"
- --------v-214BDD-----------------------------
- INT 21 - VIRUS - "Lozinsky"/"Zherkov" - INSTALLATION CHECK
- AX = 4BDDh
- Return: AX = 1234h
- SeeAlso: AX=4BB1h"VIRUS",AX=4BFEh
- --------v-214BEE-----------------------------
- INT 21 - F-DRIVER.SYS v1.14+ - GRAB INT 21
- AX = 4BEEh
- Return: AX = status
- 1234h grab was successful
- 2345h failed (INT 21 grabbed previously)
- Program: F-DRIVER.SYS is part of the shareware F-PROT virus/trojan protection
- package by Fridrik Skulason
- Note: when called the first time, this function moves the INT 21 monitoring
- code from its original location in the INT 21 chain to be the first
- thing called by INT 21. This is the mechanism used by F-NET.
- SeeAlso: INT 2F/AX=4653h/CX=0002h,INT 2F/AX=4653h/CX=0007h
- --------k-214BF0-----------------------------
- INT 21 - DIET v1.10+ (Overlay Mode) - INSTALLATION CHECK
- AX = 4BF0h
- Return: CF clear if installed
- AX = 899Dh
- Program: DIET is an executable-compression program by Teddy Matsumoto
- SeeAlso: AX=37D0h,AX=4BF1h
- --------k-214BF1-----------------------------
- INT 21 - DIET v1.10+ (Overlay Mode) - EXPAND PROGRAM???
- AX = 4BF1h
- Return: ???
- SeeAlso: AX=37D0h,AX=4BF0h
- --------v-214BF1-----------------------------
- INT 21 - VIRUS - "Jerusalem 2" - INSTALLATION CHECK
- AX = 4BF1h
- Return: AX = 1FB4h if resident
- SeeAlso: AH=3Fh/BX=FEB0h"VIRUS",AX=4BDDh"VIRUS",AX=4BFEh"VIRUS"
- --------v-214BFE-----------------------------
- INT 21 - VIRUS - "Hitchcock", "Dark Avenger-1028", "1193" - INSTALLATION CHECK
- AX = 4BFEh
- Return: AX = 1234h if "Hitchcock" or "Storm" resident
- AX = ABCDh if "1193"/"Copyright" resident
- DI = 55BBh if "Dark Avenger-1028" resident
- SeeAlso: AX=4BDDh,AX=4BF1h"VIRUS",AX=4BFFh"Justice"
- --------v-214BFF-----------------------------
- INT 21 - VIRUS - "USSR-707", "Justice", "Europe 92" - INSTALLATION CHECK
- AX = 4BFFh
- Return: BL = FFh if "USSR-707" resident
- DI = 55AAh if "Justice" resident
- AX = 1234h if "Hitchcock.1238" resident
- CF clear if "Europe 92" resident
- SeeAlso: AX=4BFEh,AX=4BFFh"Cascade",AX=5252h
- --------v-214BFFSI0000-----------------------
- INT 21 - VIRUS - "Cascade" - INSTALLATION CHECK
- AX = 4BFFh
- SI = 0000h
- DI = 0000h
- Return: DI = 55AAh if installed
- SeeAlso: AX=4BFFh"Justice",AX=5252h
- --------D-214C-------------------------------
- INT 21 - DOS 2+ - "EXIT" - TERMINATE WITH RETURN CODE
- AH = 4Ch
- AL = return code
- Return: never returns
- Notes: unless the process is its own parent
- (see #01378 [offset 16h] at AH=26h), all open files are closed and
- all memory belonging to the process is freed
- all network file locks should be removed before calling this function
- SeeAlso: AH=00h,AH=26h,AH=4Bh,AH=4Dh,INT 15/AH=12h/BH=02h,INT 20,INT 22
- SeeAlso: INT 60/DI=0601h
- --------m-214C57-----------------------------
- INT 21 - Headroom - ???
- AX = 4C57h
- DS:DX -> target address
- Note: jumps to target address instead of terminating program
- SeeAlso: AX=5758h
- --------D-214D-------------------------------
- INT 21 - DOS 2+ - GET RETURN CODE (ERRORLEVEL)
- AH = 4Dh
- Return: AH = termination type
- 00h normal (INT 20,INT 21/AH=00h, or INT 21/AH=4Ch)
- 01h control-C abort
- 02h critical error abort
- 03h terminate and stay resident (INT 21/AH=31h or INT 27)
- AL = return code
- CF clear
- Notes: the word in which DOS stores the return code is cleared after being
- read by this function, so the return code can only be retrieved once
- COMMAND.COM stores the return code of the last external command it
- executed as ERRORLEVEL
- this call should not be used if the child was started with AX=4B04h;
- use AH=8Ah instead
- the following sequence will close a Virtual DOS Machine under OS/2 2.0
- through OS/2 Merlin (but may change in the future):
- MOV AH,4Dh
- INT 21h
- HLT
- DB 02h,0FDh
- This sequence is the only way to close a specific VDM which was
- booted from floppy or a disk image.
- SeeAlso: AH=4Bh,AH=4Ch,AH=8Ah
- --------D-214E-------------------------------
- INT 21 - DOS 2+ - "FINDFIRST" - FIND FIRST MATCHING FILE
- AH = 4Eh
- AL = special flag for use by APPEND (refer to note below)
- CX = file attribute mask (see #01420 at AX=4301h) (bits 0 and 5 ignored)
- 0088h (Novell DOS 7) find first deleted file
- DS:DX -> ASCIZ file specification (may include path and wildcards)
- Return: CF clear if successful
- Disk Transfer Area filled with FindFirst data block (see #01626)
- CF set on error
- AX = error code (02h,03h,12h) (see #01680 at AH=59h/BX=0000h)
- Notes: for search attributes other than 08h, all files with at MOST the
- specified combination of hidden, system, and directory attributes
- will be returned. Under DOS 2.x, searching for attribute 08h
- (volume label) will also return normal files, while under DOS 3.0+
- only the volume label (if any) will be returned.
- this call also returns successfully if given the name of a character
- device without wildcards. DOS 2.x returns attribute 00h, size 0,
- and the current date and time. DOS 3.0+ returns attribute 40h and
- the current date and time.
- immediately after an INT 2F/AX=B711h (APPEND return found name), the
- name at DS:DX will be overwritten; if AL=00h on entry, the actual
- found pathname will be stored, otherwise, the actual found path
- will be prepended to the original filespec without a path.
- under LANtastic, this call may be used to obtain a list of a server's
- shared resources by searching for "\\SERVER\*.*"; a list of printer
- resources may be obtained by searching for "\\SERVER\@*.*"
- under the FlashTek X-32 DOS extender, the filespec pointer is in DS:EDX
- BUGS: under DOS 3.x and 4.x, the second and subsequent calls to this function
- with a character device name (no wildcards) and search attributes
- which include the volume-label bit (08h) will fail unless there is
- an intervening DOS call which implicitly or explicity performs a
- directory search without the volume-label bit. Such implicit
- searches are performed by CREATE (AH=3Ch), OPEN (AH=3Dh), UNLINK
- (AH=41h), and RENAME (AH=56h)
- DR DOS 3.41 and 5.0 return the Directory attribute for the volume label
- SeeAlso: AH=11h,AH=4Fh,AX=4301h,AX=714Eh,AX=71A1h,AX=F257h/SF=02h
- SeeAlso: INT 2F/AX=111Bh,INT 2F/AX=B711h
- Format of FindFirst data block:
- Offset Size Description (Table 01626)
- ---PC-DOS 3.10, PC-DOS 4.01, MS-DOS 3.2/3.3/5.0---
- 00h BYTE drive letter (bits 0-6), remote if bit 7 set
- 01h 11 BYTEs search template
- 0Ch BYTE search attributes
- ---DOS 2.x (and some DOS 3.x???)---
- 00h BYTE search attributes
- 01h BYTE drive letter
- 02h 11 BYTEs search template
- ---WILDUNIX.COM---
- 00h 12 BYTEs 15-character wildcard search pattern and drive letter (packed)
- 0Ch BYTE search attributes
- ---DOS 2.x and most 3.x---
- 0Dh WORD entry count within directory
- 0Fh DWORD pointer to DTA???
- 13h WORD cluster number of start of parent directory
- ---PC-DOS 4.01, MS-DOS 3.2/3.3/5.0---
- 0Dh WORD entry count within directory
- 0Fh WORD cluster number of start of parent directory
- 11h 4 BYTEs reserved
- ---OS/2 MVDM---
- 00h WORD "OS2_BMP_handle"
- 02h WORD "OS2_LastEnt"
- 04h DWORD "OS2_Checksum"
- 08h BYTE "OS2_usi_flag"
- 09h DWORD used by DOS emulator for second pass for volume-label searches
- 0Dh WORD (ret) "DOS_LastEnt" entry count within directory
- 0Fh BYTE OS/2 Processed-FindFirst flag
- 00h FindFirst processed by DOS
- 42h FindFirst processed by OS/2
- 10h 5 BYTEs reserved for future use
- ---all versions, documented fields---
- 15h BYTE attribute of file found
- 16h WORD file time (see #01665 at AX=5700h)
- 18h WORD file date (see #01666 at AX=5700h)
- 1Ah DWORD file size
- 1Eh 13 BYTEs ASCIZ filename+extension
- --------f-214E-------------------------------
- INT 21 - WILDUNIX.COM internal - INSTALLATION CHECK
- AH = 4Eh
- DS:DX = 0000h:0000h
- Return: AH = 99h if installed
- Program: WILDUNIX.COM is a resident Unix-style wildcard expander by Steve
- Hosgood and Terry Barnaby
- --------D-214F-------------------------------
- INT 21 - DOS 2+ - "FINDNEXT" - FIND NEXT MATCHING FILE
- AH = 4Fh
- Disk Transfer Area contains data block from previous FindFirst or
- FindNext call
- Return: CF clear if successful
- Disk Transfer Area updated
- CF set on error
- AX = error code (12h) (see #01680 at AH=59h/BX=0000h)
- Notes: under Novell DOS 7, if the FindFirst call (AH=4Eh) had CX=0088h, then
- the next matching deleted file will be returned
- since the entire state of a FindFirst/FindNext sequence is contained
- in the data block in the DTA, other disk operations such as renaming,
- moving, deleting, or creating files can cause inaccurate directory
- searches, such as finding the same file twice
- BUG: DR DOS 3.41 and 5.0 return the Directory attribute for the volume label
- SeeAlso: AH=12h,AH=4Eh,AX=714Fh,AX=71A1h
- --------D-2150-------------------------------
- INT 21 - DOS 2+ internal - SET CURRENT PROCESS ID (SET PSP ADDRESS)
- AH = 50h
- BX = segment of PSP for new process
- Notes: DOS uses the current PSP address to determine which processes own files
- and memory; it corresponds to process identifiers used by other OSs
- under DOS 2.x, this function cannot be invoked inside an INT 28h
- handler without setting the Critical Error flag
- under MS-DOS 3.0+ and DR DOS 3.41+, this function does not use any of
- the DOS-internal stacks and may thus be called at any time, even
- during another INT 21h call
- some Microsoft applications such as Quick C 2.51 use segments of 0000h
- and FFFFh and direct access to the SDA (see #01687 at AX=5D06h) to
- test whether they are running under MS-DOS rather than a compatible
- OS; although one should only call this function with valid PSP
- addresses, any program hooking it should be prepared to handle
- invalid addresses
- this function is supported by the OS/2 compatibility box
- this call was undocumented prior to the release of DOS 5.0
- SeeAlso: AH=26h,AH=51h,AH=62h
- --------v-2150FD-----------------------------
- INT 21 - VIRUS - "Predator 2" - INSTALLATION CHECK
- AX = 50FDh
- Return: AX = FD50h if resident
- SeeAlso: AX=4BFFh"VIRUS",AX=5454h"VIRUS"
- --------D-2151-------------------------------
- INT 21 - DOS 2+ internal - GET CURRENT PROCESS ID (GET PSP ADDRESS)
- AH = 51h
- Return: BX = segment of PSP for current process
- Notes: DOS uses the current PSP address to determine which processes own files
- and memory; it corresponds to process identifiers used by other OSs
- under DOS 2.x, this function cannot be invoked inside an INT 28h
- handler without setting the Critical Error flag
- under DOS 3.0+, this function does not use any of the DOS-internal
- stacks and may thus be called at any time, even during another
- INT 21h call
- supported by OS/2 compatibility box
- identical to the documented AH=62h
- this call was undocumented prior to the release of DOS 5.0
- SeeAlso: AH=26h,AH=50h,AH=62h
- --------D-2152-------------------------------
- INT 21 U - DOS 2+ internal - "SYSVARS" - GET LIST OF LISTS
- AH = 52h
- Return: ES:BX -> DOS list of lists (see #01627)
- Notes: partially supported by OS/2 v1.1 compatibility box (however, most
- pointers are FFFFh:FFFFh, LASTDRIVE is FFh, and the NUL header "next"
- pointer is FFFFh:FFFFh).
- partially supported by the Windows NT DOS box; contains only a
- rudimentary Current Directory Structure (see #01645)
- on return, ES points at the DOS data segment (see also INT 2F/AX=1203h)
- Quarterdeck's suggested check for the use of its DOSDATA.SYS or
- DOS-UP.SYS is to test whether the list-of-lists segment is greater
- than the segment of the first memory block; a better check for
- DOS-UP.SYS is INT 21/AX=2B01h/CX=444Dh
- because not all DOS workalikes support all fields in the List of Lists,
- applications should ensure that pointers are neither 0000h:0000h
- nor FFFFh:FFFFh before using them
- Windows for Workgroups 3.11 network and Windows95 set the path to
- the local drive and directory even for network drives; in that
- case the UNC form \\SERVER\SHARE can be obtained with
- INT 21/AX=5F02h or INT 21/AX=5F46h. LapLink RemoteAccess does the
- same even for INT 21/AX=5F02h
- Windows95 GUI no longer returns the true path for a SUBSTed drive,
- but MS-DOS 7.00 does; use INT 21/AH=60h to obtain the true name
- SeeAlso: INT 2F/AX=1203h
- Format of List of Lists:
- Offset Size Description (Table 01627)
- -24 WORD (DOS 3.1+) contents of CX from INT 21/AX=5E01h
- -22 WORD (DOS ???+) LRU counter for FCB caching
- -20 WORD (DOS ???+) LRU counter for FCB opens
- -18 DWORD (DOS ???+) address of OEM function handler (see INT 21/AH=F8h)
- FFFFh:FFFFh if not installed or not available
- -14 WORD (DOS ???+) offset in DOS CS of code to return from INT 21 call
- -12 WORD (DOS 3.1+) sharing retry count (see AX=440Bh)
- -10 WORD (DOS 3.1+) sharing retry delay (see AX=440Bh)
- -8 DWORD (DOS 3.0+) pointer to current disk buffer
- -4 WORD (DOS 3.0+) pointer in DOS data segment of unread CON input
- when CON is read via a handle, DOS reads an entire line,
- and returns the requested portion, buffering the rest
- for the next read. 0000h indicates no unread input
- -2 WORD segment of first memory control block (see #01628)
- 00h DWORD pointer to first Drive Parameter Block (see #01395 at AH=32h)
- 04h DWORD -> first System File Table (see #01639,#01640,#01641,#01642)
- 08h DWORD pointer to active CLOCK$ device's header (most recently loaded
- driver with CLOCK bit set)
- 0Ch DWORD pointer to active CON device's header (most recently loaded
- driver with STDIN bit set)
- ---DOS 2.x---
- 10h BYTE number of logical drives in system
- 11h WORD maximum bytes/block of any block device
- 13h DWORD pointer to first disk buffer (see #01649,#01650)
- 17h 18 BYTEs actual NUL device driver header (not a pointer!)
- NUL is always the first device on DOS's linked list of device
- drivers. (see #01646)
- ---DOS 3.0---
- 10h BYTE number of block devices
- 11h WORD maximum bytes/block of any block device
- 13h DWORD pointer to first disk buffer (see #01650,#01652)
- 17h DWORD pointer to array of current directory structures (see #01643)
- 1Bh BYTE value of LASTDRIVE command in CONFIG.SYS (default 5)
- 1Ch DWORD pointer to STRING= workspace area
- 20h WORD size of STRING area (the x in STRING=x from CONFIG.SYS)
- 22h DWORD pointer to FCB table
- 26h WORD the y in FCBS=x,y from CONFIG.SYS
- 28h 18 BYTEs actual NUL device driver header (not a pointer!)
- NUL is always the first device on DOS's linked list of device
- drivers. (see #01646)
- ---DOS 3.1-3.3---
- 10h WORD maximum bytes per sector of any block device
- 12h DWORD pointer to first disk buffer in buffer chain (see #01650)
- 16h DWORD pointer to array of current directory structures (see #01643)
- 1Ah DWORD pointer to system FCB tables (see #01640,#01641,#01642)
- 1Eh WORD number of protected FCBs (the y in the CONFIG.SYS FCBS=x,y)
- 20h BYTE number of block devices installed
- 21h BYTE number of available drive letters (largest of 5, installed
- block devices, and CONFIG.SYS LASTDRIVE=). Also size of
- current directory structure array.
- 22h 18 BYTEs actual NUL device driver header (not a pointer!)
- NUL is always the first device on DOS's linked list of device
- drivers. (see #01646)
- 34h BYTE number of JOIN'ed drives
- ---DOS 4.x---
- 10h WORD maximum bytes per sector of any block device
- 12h DWORD pointer to disk buffer info record (see #01652,#01653)
- Note: although the initialization code in IO.SYS uses this
- pointer, MSDOS.SYS does not, instead using the hardcoded
- address of the info record
- 16h DWORD pointer to array of current directory structures
- (see #01643,#01644)
- 1Ah DWORD pointer to system FCB tables (see #01640,#01641,#01642)
- 1Eh WORD number of protected FCBs (the y in the CONFIG.SYS FCBS=x,y)
- (always 00h for DOS 5.0)
- 20h BYTE number of block devices installed
- 21h BYTE number of available drive letters; also size of current
- directory structure array.
- For DOS 4.0-6.0: largest of 5, installed block devices,
- and CONFIG.SYS LASTDRIVE=
- For DOS 7.x (Windows9X), set to 32 if no LASTDRIVE= or
- LASTDRIVEHIGH=, else set to larger of installed block
- devices and LASTDRIVE(HIGH)=
- 22h 18 BYTEs actual NUL device driver header (not a pointer!)
- NUL is always the first device on DOS's linked list of device
- drivers. (see #01646)
- 34h BYTE number of JOIN'ed drives
- 35h WORD pointer within IBMDOS code segment to list of special program
- names (see #01662)
- (always 0000h for DOS 5.0)
- 37h DWORD pointer to FAR routine for resident IFS utility functions
- (see #01658)
- may be called by any IFS driver which does not wish to
- service functions 20h or 24h-28h itself
- 3Bh DWORD pointer to chain of IFS (installable file system) drivers
- 3Fh WORD the x in BUFFERS x,y (rounded up to multiple of 30 if in EMS)
- 41h WORD number of lookahead buffers (the y in BUFFERS x,y)
- 43h BYTE boot drive (1=A:)
- 44h BYTE flag: 01h to use DWORD moves (80386+), 00h otherwise
- 45h WORD extended memory size in KB
- ---DOS 5.0-6.0---
- 10h 39 BYTEs as for DOS 4.x (above)
- 37h DWORD pointer to SETVER program list or 0000h:0000h
- 3Bh WORD (DOS=HIGH) offset in DOS CS of function to fix A20 control
- when executing special .COM format
- 3Dh WORD PSP of most-recently EXECed program if DOS in HMA, 0000h if low
- used for maintaining count of INT 21 calls which disable A20
- on return
- 3Fh 8 BYTEs as for DOS 4.x (above)
- ---Windows NT DOS Box---
- 10h 6 BYTEs ???
- 16h DWORD pointer to array of current directory structures (see #01645)
- 1Ah 6 BYTEs ???
- 20h BYTE number of block devices installed
- 21h BYTE number of local drive letters (= installed block devices)
- Also size of current directory structure array.
- 22h 18 BYTEs actual NUL device driver header (not a pointer!)
- NUL is always the first device on DOS's linked list of device
- drivers. (see #01646)
- ---DOS 7.x---
- 10h 55 BYTEs as for DOS 5.0-6.0 (above)
- 47h 25 BYTEs ???
- 60h BYTE "DOS_FLAG" (see also INT 26)
- Format of DOS memory control block:
- Offset Size Description (Table 01628)
- 00h BYTE block type: 5Ah if last block in chain, otherwise 4Dh
- 01h WORD PSP segment of owner or special flag value (see #01629)
- 03h WORD size of memory block in paragraphs
- 05h 3 BYTEs unused by MS-DOS
- (386MAX) if locked-out block, region start/prev region end
- ---DOS 2.x,3.x---
- 08h 8 BYTEs unused
- ---DOS 4.0+ ---
- 08h 8 BYTEs ASCII program name if PSP memory block or DR DOS UMB,
- else garbage
- null-terminated if less than 8 characters
- Notes: the next MCB is at segment (current + size + 1)
- under DOS 3.1+, the first memory block is the DOS data segment,
- containing installable drivers, buffers, etc. Under DOS 4.0+ it is
- divided into subsegments, each with its own memory control block
- (see #01633), the first of which is at offset 0000h.
- for DOS 5+, blocks owned by DOS may have either "SC" or "SD" in bytes
- 08h and 09h. "SC" is system code or locked-out inter-UMB memory,
- "SD" is system data, device drivers, etc.
- Some versions of DR DOS use only seven characters of the program name,
- placing a NUL in the eighth byte.
- SeeAlso: #01630,#01632,#01633
- (Table 01629)
- Values for special flag PSP segments:
- 0000h free
- 0006h DR DOS XMS UMB
- 0007h DR DOS excluded upper memory ("hole")
- 0008h belongs to DOS
- FFF7h 386MAX v6.01+ ???
- FFFAh 386MAX UMB control block (see #01477 at AX=4402h"386MAX")
- FFFDh 386MAX locked-out memory
- FFFEh 386MAX UMB (normally immediately follows its control block)
- FFFFh 386MAX v6.01+ device driver
- Format of MS-DOS 5+ UMB control block:
- Offset Size Description (Table 01630)
- 00h BYTE type: 5Ah if last block in chain, 4Dh otherwise
- 01h WORD first available paragraph in UMB if control block at start
- of UMB, 000Ah if control block at end of UMB
- 03h WORD length in paragraphs of following UMB or locked-out region
- 05h 3 BYTEs unused
- 08h 8 BYTEs block type name: "UMB" if start block, "SM" if end block in UMB
- SeeAlso: #01628,#01631
- Format of MS-DOS 7.0 HMA memory control block:
- Offset Size Description (Table 01631)
- 00h WORD signature "MS" (4Dh 53h)
- 02h WORD usage flag???
- 0000h free
- else ???
- 04h WORD size of memory block in bytes (not counting MCB)
- 06h WORD offset of next memory block in HMA or 0000h
- 08h 8 BYTEs unused (0)
- SeeAlso: #01628,#01630,#01632
- Format of STARLITE (General Software's Embedded DOS) memory control block:
- Offset Size Description (Table 01632)
- 00h BYTE block type: 5Ah if last block in chain, otherwise 4Dh
- 01h WORD PSP segment of owner, 0000h if free, 0008h if belongs to DOS
- 03h WORD size of memory block in paragraphs
- 05h BYTE unused
- 06h WORD segment address of next memory control block (0000h if last)
- 08h WORD segment address of previous memory control block or 0000h
- 0Ah 6 BYTEs reserved
- Format of DOS 4.0+ data segment subsegment control blocks:
- Offset Size Description (Table 01633)
- 00h BYTE subsegment type (blocks typically appear in this order)
- "D" device driver
- "E" device driver appendage
- "I" IFS (Installable File System) driver
- (MS-DOS 7) high-loaded drive data table array (see #02603)
- "F" FILES= control block storage area (for FILES>5)
- "X" FCBS= control block storage area, if present
- "C" BUFFERS EMS workspace area (if BUFFERS /X option used)
- "B" BUFFERS= storage area
- "L" LASTDRIVE= current directory structure array storage area
- "S" STACKS= code and data area, if present (see #01634,#01635)
- "T" INSTALL= transient code
- 01h WORD paragraph of subsegment start (usually the next paragraph)
- 03h WORD size of subsegment in paragraphs
- 05h 3 BYTEs unused
- 08h 8 BYTEs for types "D" and "I", base name of file from which the driver
- was loaded (unused for other types)
- Format of data at start of STACKS code segment (if present):
- Offset Size Description (Table 01634)
- 00h WORD ???
- 02h WORD number of stacks (the x in STACKS=x,y)
- 04h WORD size of stack control block array (should be 8*x)
- 06h WORD size of each stack (the y in STACKS=x,y)
- 08h DWORD pointer to STACKS data segment
- 0Ch WORD offset in STACKS data segment of stack control block array
- 0Eh WORD offset in STACKS data segment of last element of that array
- 10h WORD offset in STACKS data segment of the entry in that array for
- the next stack to be allocated (initially same as value in
- 0Eh and works its way down in steps of 8 to the value in
- 0Ch as hardware interrupts pre-empt each other)
- Note: the STACKS code segment data may, if present, be located as follows:
- DOS 3.2: The code segment data is at a paragraph boundary fairly early
- in the IBMBIO segment (seen at 0070:0190h)
- DOS 3.3: The code segment is at a paragraph boundary in the DOS data
- segment, which may be determined by inspecting the segment
- pointers of the vectors for those of interrupts 02h, 08h-0Eh,
- 70h, 72-77h which have not been redirected by device drivers
- or TSRs.
- DOS 4.0+ Identified by sub-segment control block type "S" within the DOS
- data segment.
- SeeAlso: #01636,INT B4"STACKMAN"
- Format of array elements in STACKS data segment:
- Offset Size Description (Table 01635)
- 00h BYTE status: 00h=free, 01h=in use, 03h=corrupted by overflow of
- higher stack.
- 01h BYTE not used
- 02h WORD previous SP
- 04h WORD previous SS
- 06h WORD ptr to word at top of stack (new value for SP). The word at the
- top of the stack is preset to point back to this control
- block.
- Format of SHARE.EXE hooks (DOS 3.1-6.00):
- Offset Size Description (Table 01636)
- (offsets from first system file table--pointed at by ListOfLists+04h)
- -3Ch DWORD pointer to FAR routine for ???
- Note: not called by MS-DOS 3.3, set to 0000h:0000h by
- SHARE 3.3+
- -38h DWORD pointer to FAR routine called on opening file
- on call, internal DOS location points at filename
- (see #01687 at AX=5D06h)
- Return: CF clear if successful
- CF set on error
- AX = DOS error code (24h)
- (see #01680 at AH=59h/BX=0000h)
- Note: SHARE directly accesses DOS-internal data to get name of
- file just opened
- -34h DWORD pointer to FAR routine called on closing file
- ES:DI -> system file table
- Note: does something to every Record Lock Record for file
- -30h DWORD pointer to FAR routine to close all files for given computer
- (called by AX=5D03h)
- -2Ch DWORD pointer to FAR routine to close all files for given process
- (called by AX=5D04h)
- -28h DWORD pointer to FAR routine to close file by name
- (called by AX=5D02h)
- DS:SI -> DOS parameter list (see #01686 at AX=5D00h)
- DPL's DS:DX -> name of file to close
- Return: CF clear if successful
- CF set on error
- AX = DOS error code (03h)
- (see #01680 at AH=59h/BX=0000h)
- -24h DWORD pointer to FAR routine to lock region of file
- call with BX = file handle
- ---DOS 3.x---
- CX:DX = starting offset
- SI:AX = size
- ---DOS 4.0+ ---
- DS:DX -> lock range
- DWORD start offset
- DWORD size in bytes
- Return: CF set on error
- AL = DOS error code (21h) (see #01680 at AH=59h)
- Note: not called if file is marked as remote
- -20h DWORD pointer to FAR routine to unlock region of file
- call with BX = file handle
- ---DOS 3.x---
- CX:DX = starting offset
- SI:AX = size
- ---DOS 4.0+ ---
- DS:DX -> lock range
- DWORD start offset
- DWORD size in bytes
- Return: CF set on error
- AL = DOS error code (21h) (see #01680 at AH=59h)
- Note: not called if file is marked as remote
- -1Ch DWORD pointer to FAR routine to check if file region is locked
- call with ES:DI -> system file table entry for file
- CX = length of region from current position in file
- Return: CF set if any portion of region locked
- AX = 0021h
- -18h DWORD pointer to FAR routine to get open file list entry
- (called by AX=5D05h)
- call with DS:SI -> DOS parameter list (see #01686 at AX=5D00h)
- DPL's BX = index of sharing record
- DPL's CX = index of SFT in SFT chain of sharing rec
- Return: CF set on error or not loaded
- AX = DOS error code (12h) (see #01680 at AH=59h)
- CF clear if successful
- ES:DI -> filename
- CX = number of locks owned by specified SFT
- BX = network machine number
- DX destroyed
- -14h DWORD pointer to FAR routine for updating FCB from SFT???
- call with DS:SI -> unopened FCB
- ES:DI -> system file table entry
- Return: BL = C0h???
- Note: copies following fields from SFT to FCB:
- starting cluster of file 0Bh 1Ah
- sharing record offset 33h 1Ch
- file attribute 04h 1Eh
- -10h DWORD pointer to FAR routine to get first cluster of FCB file ???
- call with ES:DI -> system file table entry
- DS:SI -> FCB
- Return: CF set if SFT closed or sharing record offsets
- mismatched
- CF clear if successful
- BX = starting cluster number from FCB
- -0Ch DWORD pointer to FAR routine to close file if duplicate for process
- DS:SI -> system file table
- Return: AX = number of handle in JFT which already uses SFT
- Note: called during open/create of a file
- Note: if SFT was opened with inheritance enabled and sharing
- mode 111, does something to all other SFTs owned by
- same process which have the same file open mode and
- sharing record
- -08h DWORD pointer to FAR routine for closing file
- Note: closes various handles referring to file most-recently
- opened
- -04h DWORD pointer to FAR routine to update directory info in related SFT
- entries
- call with ES:DI -> system file table entry for file (see #01641)
- AX = subfunction (apply to each related SFT)
- 00h: update time stamp (offset 0Dh) and date
- stamp (offset 0Fh)
- 01h: update file size (offset 11h) and starting
- cluster (offset 0Bh). Sets last-accessed
- cluster fields to start of file if file
- never accessed
- 02h: as function 01h, but last-accessed fields
- always changed
- 03h: do both functions 00h and 02h
- Note: follows ptr at offset 2Bh in system file table entries
- Note: NOP if opened with no-inherit or via FCB
- Notes: most of the above hooks (except -04h, -14h, -18h, and -3Ch) assume
- either that SS=DOS DS or SS=DS=DOS DS and directly access
- DOS-internal data
- sharing hooks are not supported by DR DOS 5-6; they appear to be
- supported by Novell DOS 7, with a segment of 0000h indicating the
- DOS data segment
- SeeAlso: #01637,#01638
- Format of sharing record:
- Offset Size Description (Table 01637)
- 00h BYTE flag
- 00h free block
- 01h allocated block
- FFh end marker
- 01h WORD size of block
- 03h BYTE checksum of pathname (including NUL)
- if sum of ASCII values is N, checksum is (N/256 + N%256)
- 04h WORD offset in SHARE's DS of first Record Lock Record (see #01638)
- 06h DWORD pointer to start of system file table chain for file
- 0Ah WORD unique sequence number
- 0Ch var ASCIZ full pathname
- Note: not supported by DR DOS SHARE 1.1 and 2.0; will reportedly be
- supported by Novell DOS 7
- SeeAlso: #01636,#01638
- Format of SHARE.EXE Record Lock Record:
- Offset Size Description (Table 01638)
- 00h WORD offset in SHARE's DS of next lock table in list or 0000h
- 02h DWORD offset in file of start of locked region
- 06h DWORD offset in file of end of locked region
- 0Ah DWORD pointer to System File Table entry for this file
- 0Eh WORD PSP segment of lock's owner
- ---DOS 5+ ---
- 10h WORD lock type: (00h lock all, 01h lock writes only)
- SeeAlso: #01636,#01637,#01639,#01642
- Format of DOS 2.x system file tables:
- Offset Size Description (Table 01639)
- 00h DWORD pointer to next file table (offset FFFFh if last)
- 04h WORD number of files in this table
- 06h 28h bytes per file
- Offset Size Description
- 00h BYTE number of file handles referring to this file
- 01h BYTE file open mode (see #01402 at AH=3Dh)
- 02h BYTE file attribute
- 03h BYTE drive (0 = character device, 1 = A, 2 = B, etc)
- 04h 11 BYTEs filename in FCB format (no path,no period,blank-padded)
- 0Fh WORD ???
- 11h WORD ???
- 13h DWORD file size???
- 17h WORD file date in packed format (see #01666 at AX=5700h)
- 19h WORD file time in packed format (see #01665 at AX=5700h)
- 1Bh BYTE device attribute (see #01423 at AX=4400h)
- ---character device---
- 1Ch DWORD pointer to device driver
- ---block device---
- 1Ch WORD starting cluster of file
- 1Eh WORD relative cluster in file of last cluster accessed
- ------
- 20h WORD absolute cluster number of current cluster
- 22h WORD ???
- 24h DWORD current file position???
- SeeAlso: #01640,#01641,#01642
- Format of DOS 3.0 system file tables and FCB tables:
- Offset Size Description (Table 01640)
- 00h DWORD pointer to next file table (offset FFFFh if last)
- 04h WORD number of files in this table
- 06h 38h bytes per file
- Offset Size Description
- 00h-1Eh as for DOS 3.1+ (see #01641)
- 1Fh WORD byte offset of directory entry within sector
- 21h 11 BYTEs filename in FCB format (no path/period, blank-padded)
- 2Ch DWORD (SHARE.EXE) pointer to previous SFT sharing same file
- 30h WORD (SHARE.EXE) network machine number which opened file
- (Windows Enhanced mode DOSMGR uses the virtual machine
- ID as the machine number; see INT 2F/AX=1683h)
- 32h WORD PSP segment of file's owner (first three entries for
- AUX/CON/PRN contain segment of IO.SYS startup code)
- 34h WORD (SHARE.EXE) offset in SHARE code seg of share record
- 36h WORD ??? apparently always 0000h
- SeeAlso: #01639,#01641,#01642
- Format of DOS 3.1-3.3x, DR DOS 5.0-6.0 system file tables and FCB tables:
- Offset Size Description (Table 01641)
- 00h DWORD pointer to next file table (offset FFFFh if last)
- 04h WORD number of files in this table
- 06h 35h bytes per file
- Offset Size Description
- 00h WORD number of file handles referring to this file
- 02h WORD file open mode (see AX=6C00h, #01402 at AH=3Dh)
- bit 15 set if this file opened via FCB
- 04h BYTE file attribute (see #01420 at AX=4301h)
- 05h WORD device info word (see #01423 at AX=4400h)
- bit 15 set if remote file
- bit 14 set means do not set file date/time on closing
- bit 12 set means don't inherit on EXEC
- bits 5-0 drive number for disk files
- 07h DWORD pointer to device driver header if character device
- else pointer to DOS Drive Parameter Block
- (see #01395 at AH=32h)
- 0Bh WORD starting cluster of file
- 0Dh WORD file time in packed format (see #01665 at AX=5700h)
- not used for character devices in DR DOS
- 0Fh WORD file date in packed format (see #01666 at AX=5700h)
- not used for character devices in DR DOS
- 11h DWORD file size
- ---system file table---
- 15h DWORD current offset in file (may be larger than size of
- file; INT 21/AH=42h does not check new position)
- ---FCB table---
- 15h WORD counter for last I/O to FCB
- 17h WORD counter for last open of FCB
- (these are separate to determine the times of the
- latest I/O and open)
- ---
- 19h WORD relative cluster within file of last cluster accessed
- 1Bh WORD absolute cluster number of last cluster accessed
- 0000h if file never read or written???
- 1Dh WORD number of sector containing directory entry
- (see #01352)
- 1Fh BYTE number of dir entry within sector (byte offset/32)
- 20h 11 BYTEs filename in FCB format (no path/period, blank-padded)
- 2Bh DWORD (SHARE.EXE) pointer to previous SFT sharing same file
- 2Fh WORD (SHARE.EXE) network machine number which opened file
- (Windows Enhanced mode DOSMGR uses the virtual machine
- ID as the machine number; see INT 2F/AX=1683h)
- 31h WORD PSP segment of file's owner (see #01378 at AH=26h)
- (first three entries for AUX/CON/PRN contain segment
- of IO.SYS startup code)
- 33h WORD offset within SHARE.EXE code segment of
- sharing record (see #01637) 0000h = none
- SeeAlso: #01639,#01640,#01642
- Format of DOS 4.0-6.0 system file tables and FCB tables:
- Offset Size Description (Table 01642)
- 00h DWORD pointer to next file table (offset FFFFh if last)
- 04h WORD number of files in this table
- 06h 3Bh bytes per file
- Offset Size Description
- 00h WORD number of file handles referring to this file
- FFFFh if in use but not referenced
- 02h WORD file open mode (see AX=6C00h,#01402 at AH=3Dh)
- bit 15 set if this file opened via FCB
- 04h BYTE file attribute (see #01420 at AX=4301h)
- 05h WORD device info word (see also #01423 at AX=4400h)
- bit 15 set if remote file
- bit 14 set means do not set file date/time on closing
- bit 13 set if named pipe
- bit 12 set if no inherit
- bit 11 set if network spooler
- bit 7 set if device, clear if file (only if local)
- bits 6-0 as for AX=4400h
- 07h DWORD pointer to device driver header if character device
- else pointer to DOS Drive Parameter Block
- (see #01395 at AH=32h) or REDIR data
- 0Bh WORD starting cluster of file (local files only)
- not set for FAT32-capable versions of Windows95
- (since they allow 32-bit cluster numbers)
- 0Dh WORD file time in packed format (see #01665)
- 0Fh WORD file date in packed format (see #01666)
- 11h DWORD file size
- 15h DWORD current offset in file (SFT)
- LRU counters (FCB table, two WORDs)
- ---local file---
- 19h WORD relative cluster within file of last cluster accessed
- 1Bh DWORD number of sector containing directory entry
- 1Fh BYTE number of dir entry within sector (byte offset/32)
- ---network redirector---
- 19h DWORD pointer to REDIRIFS record
- 1Dh 3 BYTEs ???
- ------
- 20h 11 BYTEs filename in FCB format (no path/period, blank-padded)
- 2Bh DWORD (SHARE.EXE) pointer to previous SFT sharing same file
- 2Fh WORD (SHARE.EXE) network machine number which opened file
- (Windows Enhanced mode DOSMGR uses the virtual machine
- ID as the machine number; see INT 2F/AX=1683h)
- 31h WORD PSP segment of file's owner (see #01378 at AH=26h)
- (first three entries for AUX/CON/PRN contain segment
- of IO.SYS startup code)
- 33h WORD offset within SHARE.EXE code segment of
- sharing record (see #01595) 0000h = none
- 35h WORD (local) absolute cluster number of last clustr accessed
- (redirector) ???
- 37h DWORD pointer to IFS driver for file, 0000000h if native DOS
- Note: the OS/2 2.0 DOS Boot Session does not properly fill in the filename
- field due to incomplete support for SFTs; the OS/2 2.0 DOS Window
- does not appear to support SFTs at all
- SeeAlso: #01639,#01640,#01641
- Format of current directory structure (CDS) (array, LASTDRIVE entries):
- Offset Size Description (Table 01643)
- 00h 67 BYTEs ASCIZ path in form X:\PATH (local) or UNC form
- \\SERVER\PATH (network, see notes below)
- 43h WORD drive attributes (also see note below) (see also AX=5F07h)
- bit 15: uses network redirector \ invalid if 00, installable
- bit 14: physical drive / file system if 11
- bit 13: JOIN'ed \ path above is true path that would be
- bit 12: SUBST'ed / needed if not under SUBST or JOIN
- bit 11: removable media (WinNT4.0)
- bit 10: hard disk??? (WinNT4.0)
- bit 7: remote drive hidden from redirector's assign-list and
- exempt from network connection make/break commands;
- set for CD-ROM drives by MSCDEX (not supported by
- CORELCDX)
- 45h DWORD pointer to Drive Parameter Block for drive
- (see #01395 at AH=32h)
- ---local drives---
- 49h WORD starting cluster of current directory
- 0000h = root, FFFFh = never accessed
- 4Bh WORD ??? seems to be FFFFh always
- 4Dh WORD ??? seems to be FFFFh always
- ---network drives---
- 49h DWORD pointer to redirector or REDIRIFS record, or FFFFh:FFFFh
- (DOS 4 only) available for use by IFS driver
- 4Dh WORD stored user data from INT 21/AX=5F03h
- ------
- 4Fh WORD offset in current directory path of backslash corresponding to
- root directory for drive
- this value specifies how many characters to hide from the
- "CHDIR" and "GETDIR" calls; normally set to 2 to hide the
- drive letter and colon, SUBST, JOIN, and networks change it
- so that only the appropriate portion of the true path is
- visible to the user
- ---DOS 4.0+ ---
- 51h BYTE (DOS 4 only, remote drives) device type
- 04h network drive
- 52h DWORD pointer to IFS driver (DOS 4) or redirector block (DOS 5+) for
- this drive, 00000000h if native DOS
- 56h WORD available for use by IFS driver
- Notes: the path for invalid drives is normally set to X:\, but may be empty
- after JOIN x: /D in DR DOS 5.0 or NET USE x: /D in older LAN versions
- normally, only one of bits 13&12 may be set together with bit 14, but
- DR DOS 5.0 uses other combinations for bits 15-12: 0111 JOIN,
- 0001 SUBST, 0101 ASSIGN (see #01644)
- Windows for Workgroups 3.11 network sets the path to the local
- drive and directory even for network drives; in that case the
- UNC form \\SERVER\SHARE can be obtained with INT 21/AX=5F02h
- or INT 21/AX=5F46h. LapLink RemoteAccess does the same even for
- INT 21/AX=5F02h
- Window NT 4.0 always uses X:\PATH, even for substituted drives (i.e.
- the CDS will *not* contain the original path prior to SUBST)
- SoftWindows on the Macintosh PowerPC sets \\E for the host drive
- SeeAlso: #01644,INT 21/AX=71AAh/BL=00h
- Format of DR DOS 5.0-6.0 current directory structure entry (array):
- Offset Size Description (Table 01644)
- 00h 67 BYTEs ASCIZ pathname of actual root directory for this logical drive
- 43h WORD drive attributes
- 1000h SUBSTed drive
- 3000h??? JOINed drive
- 4000h physical drive
- 5000h ASSIGNed drive
- 7000h JOINed drive
- 8000h network drive
- 45h BYTE physical drive number (0=A:) if this logical drive is valid
- 46h BYTE ??? apparently flags for JOIN and ASSIGN
- 47h WORD cluster number of start of parent directory (0000h = root)
- 49h WORD entry number of current directory in parent directory
- 4Bh WORD cluster number of start of current directory
- 4Dh WORD used for media change detection (details not available)
- 4Fh WORD cluster number of SUBST/JOIN "root" directory
- 0000h if physical root directory
- SeeAlso: #01643
- Format of Windows NT Current Directory Structure (CDS) (array):
- Offset Size Description (Table 01645)
- 00h 67 BYTEs ASCIZ path in form X:\ (does not show either current directory
- or network path)
- 43h 4 BYTEs ???
- Note: the WinNT CDS contains only as many entries as there are local drives,
- not LASTDRIVE entries.
- Format of DOS device driver header:
- Offset Size Description (Table 01646)
- 00h DWORD pointer to next driver, offset=FFFFh if last driver
- 04h WORD device attributes (see #01647,#01648)
- 06h WORD device strategy entry point
- call with ES:BX -> request header
- (see #02597 at INT 2F/AX=0802h)
- 08h WORD device interrupt entry point
- ---character device---
- 0Ah 8 BYTEs blank-padded character device name
- ---block device---
- 0Ah BYTE number of subunits (drives) supported by driver
- 0Bh 7 BYTEs normally unused; sometimes contains signature to indicate
- specific drivers:
- "$PCMATA" PCMCIA driver PCMATA.SYS (see AX=440Dh"DOS 3.2+")
- "AHADDVR" Adaptec SCSI disk driver ASPIDISK.SYS
- "DBLSPAC" MS DoubleSpace or DriveSpace
- "DSKREET" NortonUtils v5+ Diskreet (see INT 2F/AX=FE00h)
- "GFS " LapLink III device driver DD.BIN
- "SIDExxx" PCMCIA driver ATADRV.EXE (see AX=440Dh"DOS 3.2+")
- "STAC-CD" Stacker/Stacker Anywhere (see AX=4404h"Stacker")
- ---DoubleSpace/DriveSpace---
- 12h 2 BYTEs signature ",." (2Ch 2Eh)
- 14h var preloading API entry point
- ---CD-ROM---
- 12h WORD reserved, must be 0000h
- appears to be another device chain
- 14h BYTE drive letter, 01h=A:, etc. (must initially be 00h; this byte
- is set by MSCDEX when it loads)
- 15h BYTE number of units
- 16h 6 BYTEs signature 'MSCDnn' where 'nn' is version (currently '00')
- (this field does not exist in most drivers)
- SeeAlso: #02550 at INT 25/AX=CDCDh,#02845 at INT 2F/AX=5600h
- Bitfields for device attributes (character device):
- Bit(s) Description (Table 01647)
- 15 set (indicates character device)
- 14 IOCTL supported (see AH=44h)
- 13 (DOS 3.0+) output until busy supported
- 12 reserved
- 11 (DOS 3.0+) OPEN/CLOSE/RemMedia calls supported
- 10-8 reserved
- 7 (DOS 5.0+) Generic IOCTL check call supported (driver command 19h)
- (see AX=4410h,AX=4411h)
- 6 (DOS 3.2+) Generic IOCTL call supported (driver command 13h)
- (see AX=440Ch,AX=440Dh"DOS 3.2+")
- 5 reserved
- 4 device is special (use INT 29 "fast console output")
- 3 device is CLOCK$ (all reads/writes use transfer record described
- below)
- 2 device is NUL
- 1 device is standard output
- 0 device is standard input
- Note: for European MS-DOS 4.0, bit 11 also indicates that bits 8-6 contain a
- version code (000 = DOS 3.0,3.1; 001 = DOS 3.2;
- 010 = European DOS 4.0)
- SeeAlso: #01648,#01646
- Bitfields for device attributes (block device):
- Bit(s) Description (Table 01648)
- 15 clear (indicates block device)
- 14 IOCTL supported
- 13 non-IBM format
- 12 network device (device is remote)
- 11 (DOS 3.0+) OPEN/CLOSE/RemMedia calls supported
- 10 reserved
- 9 direct I/O not allowed??? (set by DOS 3.3 DRIVER.SYS for "new" drives)
- 8 ??? set by DOS 3.3 DRIVER.SYS for "new" drives
- 7 (DOS 5.0+) Generic IOCTL check call supported (driver command 19h)
- (see AX=4410h,AX=4411h)
- 6 (DOS 3.2+) Generic IOCTL call supported (driver command 13h)
- implies support for commands 17h and 18h
- (see AX=440Ch,AX=440Dh"DOS 3.2+",AX=440Eh,AX=440Fh)
- 5-2 reserved
- 1 driver supports 32-bit sector addressing (DOS 3.31+)
- 0 reserved
- Note: for European MS-DOS 4.0, bit 11 also indicates that bits 8-6 contain a
- version code (000 = DOS 3.0,3.1; 001 = DOS 3.2;
- 010 = European DOS 4.0)
- SeeAlso: #01647,#01646
- Format of DOS 2.x disk buffer:
- Offset Size Description (Table 01649)
- 00h DWORD pointer to next disk buffer, offset = FFFFh if last
- least-recently used buffer is first in chain
- 04h BYTE drive (0=A, 1=B, etc), FFh if not in use
- 05h 3 BYTEs unused??? (seems always to be 00h 00h 01h)
- 08h WORD logical sector number
- 0Ah BYTE number of copies to write (1 for non-FAT sectors)
- 0Bh BYTE sector offset between copies if multiple copies to be written
- 0Ch DWORD pointer to DOS Drive Parameter Block (see #01395 at AH=32h)
- 10h buffered data
- SeeAlso: #01650,#01652,#01653,#01655
- Format of DOS 3.x disk buffer:
- Offset Size Description (Table 01650)
- 00h DWORD pointer to next disk buffer, offset = FFFFh if last
- least-recently used buffer is first in chain
- 04h BYTE drive (0=A,1=B, etc), FFh if not in use
- 05h BYTE buffer flags (see #01651)
- 06h WORD logical sector number
- 08h BYTE number of copies to write (1 for non-FAT sectors)
- 09h BYTE sector offset between copies if multiple copies to be written
- 0Ah DWORD pointer to DOS Drive Parameter Block (see #01395 at AH=32h)
- 0Eh WORD unused??? (almost always 0)
- 10h buffered data
- SeeAlso: #01649,#01652,#01653,#01655
- Bitfields for DOS 3.x disk buffer flags:
- Bit(s) Description (Table 01651)
- 7 ???
- 6 buffer dirty
- 5 buffer has been referenced
- 4 ???
- 3 sector in data area
- 2 sector in a directory, either root or subdirectory
- 1 sector in FAT
- 0 boot sector??? (guess)
- SeeAlso: #01656
- Format of DOS 4.00 (pre UR 25066) disk buffer info:
- Offset Size Description (Table 01652)
- 00h DWORD pointer to array of disk buffer hash chain heads (see #01654)
- 04h WORD number of disk buffer hash chains (referred to as NDBCH below)
- 06h DWORD pointer to lookahead buffer, zero if not present
- 0Ah WORD number of lookahead sectors, else zero (the y in BUFFERS=x,y)
- 0Ch BYTE 00h if buffers in EMS (/X), FFh if not
- 0Dh WORD EMS handle for buffers, zero if not in EMS
- 0Fh WORD EMS physical page number used for buffers (usually 255)
- 11h WORD ??? seems always to be 0001h
- 13h WORD segment of EMS physical page frame
- 15h WORD ??? seems always to be zero
- 17h 4 WORDs EMS partial page mapping information???
- SeeAlso: #01649,#01650,#01653,#01657
- Format of DOS 4.01 (from UR 25066 Corrctive Services Disk on) disk buffer info:
- Offset Size Description (Table 01653)
- 00h DWORD pointer to array of disk buffer hash chain heads (see #01654)
- 04h WORD number of disk buffer hash chains (referred to as NDBCH below)
- 06h DWORD pointer to lookahead buffer, zero if not present
- 0Ah WORD number of lookahead sectors, else zero (the y in BUFFERS=x,y)
- 0Ch BYTE 01h, possibly to distinguish from pre-UR 25066 format
- 0Dh WORD ??? EMS segment for BUFFERS (only with /XD)
- 0Fh WORD ??? EMS physical page number of EMS seg above (only with /XD)
- 11h WORD ??? EMS segment for ??? (only with /XD)
- 13h WORD ??? EMS physical page number of above (only with /XD)
- 15h BYTE ??? number of EMS page frames present (only with /XD)
- 16h WORD segment of one-sector workspace buffer allocated in main memory
- if BUFFERS/XS or /XD options in effect, possibly to avoid DMA
- into EMS
- 18h WORD EMS handle for buffers, zero if not in EMS
- 1Ah WORD EMS physical page number used for buffers (usually 255)
- 1Ch WORD ??? appears always to be 0001h
- 1Eh WORD segment of EMS physical page frame
- 20h WORD ??? appears always to be zero
- 22h BYTE 00h if /XS, 01h if /XD, FFh if BUFFERS not in EMS
- SeeAlso: #01649,#01650,#01652,#01657
- Format of DOS 4.x disk buffer hash chain head (array, one entry per chain):
- Offset Size Description (Table 01654)
- 00h WORD EMS logical page number in which chain is resident, -1 if not
- in EMS
- 02h DWORD pointer to least recently used buffer header. All buffers on
- this chain are in the same segment.
- 06h BYTE number of dirty buffers on this chain
- 07h BYTE reserved (00h)
- Notes: buffered disk sectors are assigned to chain N where N is the sector's
- address modulo NDBCH, 0 <= N <= NDBCH-1
- each chain resides completely within one EMS page
- this structure is in main memory even if buffers are in EMS
- Format of DOS 4.0-6.0 disk buffer:
- Offset Size Description (Table 01655)
- 00h WORD forward ptr, offset only, to next least recently used buffer
- 02h WORD backward pointer, offset only
- 04h BYTE drive (0=A,1=B, etc) if bit 7 clear
- SFT index if bit 7 set
- FFh if not in use
- 05h BYTE buffer flags (see #01656)
- 06h DWORD logical sector number (local buffers only)
- 0Ah BYTE number of copies to write
- for FAT sectors, same as number of FATs
- for data and directory sectors, usually 1
- 0Bh WORD offset in sectors between copies to write for FAT sectors
- 0Dh DWORD pointer to DOS Drive Parameter Block (see #01395 at AH=32h)
- 11h WORD size of data in buffer if remote buffer (see also #01656)
- 13h BYTE reserved (padding)
- 14h buffered data
- Note: for DOS 4.x, all buffered sectors which have the same hash value
- (computed as the sum of high and low words of the logical sector
- number divided by the number of disk buffer chains) are on the same
- doubly-linked circular chain; for DOS 5+, only a single circular
- chain exists.
- the links consist of offset addresses only, the segment being the same
- for all buffers in the chain.
- SeeAlso: #01649,#01650,#01652
- Bitfields for DOS 4.0-6.0 disk buffer flags:
- Bit(s) Description (Table 01656)
- 7 remote buffer
- 6 buffer dirty
- 5 buffer has been referenced (reserved in DOS 5+)
- 4 search data buffer (only valid if remote buffer)
- 3 sector in data area
- 2 sector in a directory, either root or subdirectory
- 1 sector in FAT
- 0 reserved
- SeeAlso: #01651
- Format of DOS 5.0-6.0 disk buffer info:
- Offset Size Description (Table 01657)
- 00h DWORD pointer to least-recently-used buffer header (may be in HMA)
- (see #01655)
- 04h WORD number of dirty disk buffers
- 06h DWORD pointer to lookahead buffer, zero if not present
- 0Ah WORD number of lookahead sectors, else zero (the y in BUFFERS=x,y)
- 0Ch BYTE buffer location
- 00h base memory, no workspace buffer
- 01h HMA, workspace buffer in base memory
- 0Dh DWORD pointer to one-segment workspace buffer in base memory
- 11h 3 BYTEs unused
- 14h WORD ???
- 16h BYTE flag: INT 24 fail while making an I/O status call
- 17h BYTE temp storage for user memory allocation strategy during EXEC
- 18h BYTE counter: number of INT 21 calls for which A20 is off
- 19h BYTE bit flags
- bit 0: ???
- bit 1: SWITCHES=/W specified in CONFIG.SYS (don't load
- WINA20.SYS when MS Windows 3.0 starts)
- bit 2: in EXEC state (INT 21/AX=4B05h)
- 1Ah WORD offset of unpack code start (used only during INT 21/AX=4B05h)
- 1Ch BYTE bit 0 set iff UMB MCB chain linked to normal MCB chain
- 1Dh WORD minimum paragraphs of memory required by program being EXECed
- 1Fh WORD segment of first MCB in upper memory blocks or FFFFh if DOS
- memory chain in base 640K only (first UMB MCB usually at
- 9FFFh, locking out video memory with a DOS-owned memory
- block)
- the MCB this word points at contains a valid link into high
- memory even if it is marked with a 'Z' indicating the last
- memory block
- 21h WORD paragraph from which to start scanning during memory allocation
- SeeAlso: #01652,#01653
- (Table 01658)
- Call IFS utility function entry point with:
- AH = 20h miscellaneous functions
- AL = 00h get date
- Return: CX = year
- DH = month
- DL = day
- AL = 01h get process ID and computer ID
- Return: BX = current PSP segment
- DX = active network machine number
- AL = 05h get file system info
- ES:DI -> 16-byte info buffer
- Return: buffer filled
- Offset Size Description
- 00h 2 BYTEs unused
- 02h WORD number of SFTs (actually counts only
- the first two file table arrays)
- 04h WORD number of FCB table entries
- 06h WORD number of proctected FCBs
- 08h 6 BYTEs unused
- 0Eh WORD largest sector size supported
- AL = 06h get machine name
- ES:DI -> 18-byte buffer for name
- Return: buffer filled with name starting at offset 02h
- AL = 08h get sharing retry count
- Return: BX = sharing retry count
- AL = other
- Return: CF set
- AH = 21h get redirection state
- BH = type (03h disk, 04h printer)
- Return: BH = state (00h off, 01h on)
- AH = 22h ??? some sort of time calculation
- AL = 00h ???
- nonzero ???
- AH = 23h ??? some sort of time calculation
- AH = 24h compare filenames
- DS:SI -> first ASCIZ filename
- ES:DI -> second ASCIZ filename
- Return: ZF set if files are same ignoring case and / vs \
- AH = 25h normalize filename
- DS:SI -> ASCIZ filename
- ES:DI -> buffer for result
- Return: filename uppercased, forward slashes changed to backslashes
- AH = 26h get DOS stack
- Return: DS:SI -> top of stack
- CX = size of stack in bytes
- AH = 27h increment InDOS flag
- AH = 28h decrement InDOS flag
- Note: IFS drivers which do not wish to implement functions 20h or 24h-28h may
- pass them on to the default handler pointed at by [LoL+37h]
- SeeAlso: #01659,#01660
- Format of IFS driver list:
- Offset Size Description (Table 01659)
- 00h DWORD pointer to next driver header
- 04h 8 BYTEs IFS driver name (blank padded), as used by FILESYS command
- 0Ch 4 BYTEs ???
- 10h DWORD pointer to IFS utility function entry point (see #01658)
- call with ES:BX -> IFS request (see #01660)
- 14h WORD offset in header's segment of driver entry point
- ???
- SeeAlso: #01658,#01660
- Format of IFS request block:
- Offset Size Description (Table 01660)
- 00h WORD total size in bytes of request
- 02h BYTE class of request
- 02h ???
- 03h redirection
- 04h ???
- 05h file access
- 06h convert error code to string
- 07h ???
- 03h WORD returned DOS error code
- 05h BYTE IFS driver exit status
- 00h success
- 01h ???
- 02h ???
- 03h ???
- 04h ???
- FFh internal failure
- 06h 16 BYTEs ???
- ---request class 02h---
- 16h BYTE function code
- 04h ???
- 17h BYTE unused???
- 18h DWORD pointer to ???
- 1Ch DWORD pointer to ???
- 20h 2 BYTEs ???
- ---request class 03h---
- 16h BYTE function code
- 17h BYTE ???
- 18h DWORD pointer to ???
- 1Ch DWORD pointer to ???
- 22h WORD returned ???
- 24h WORD returned ???
- 26h WORD returned ???
- 28h BYTE returned ???
- 29h BYTE unused???
- ---request class 04h---
- 16h DWORD pointer to ???
- 1Ah DWORD pointer to ???
- ---request class 05h---
- 16h BYTE function code
- 01h flush disk buffers
- 02h get disk space
- 03h MKDIR
- 04h RMDIR
- 05h CHDIR
- 06h delete file
- 07h rename file
- 08h search directory
- 09h file open/create
- 0Ah LSEEK
- 0Bh read from file
- 0Ch write to file
- 0Dh lock region of file
- 0Eh commit/close file
- 0Fh get/set file attributes
- 10h printer control
- 11h ???
- 12h process termination
- 13h ???
- ---class 05h function 01h---
- 17h 7 BYTEs ???
- 1Eh DWORD pointer to ???
- 22h 4 BYTEs ???
- 26h BYTE ???
- 27h BYTE ???
- ---class 05h function 02h---
- 17h 7 BYTEs ???
- 1Eh DWORD pointer to ???
- 22h 4 BYTEs ???
- 26h WORD returned total clusters
- 28h WORD returned sectors per cluster
- 2Ah WORD returned bytes per sector
- 2Ch WORD returned available clusters
- 2Eh BYTE returned ???
- 2Fh BYTE ???
- ---class 05h functions 03h,04h,05h---
- 17h 7 BYTEs ???
- 1Eh DWORD pointer to ???
- 22h 4 BYTEs ???
- 26h DWORD pointer to directory name
- ---class 05h function 06h---
- 17h 7 BYTEs ???
- 1Eh DWORD pointer to ???
- 22h 4 BYTEs ???
- 26h WORD attribute mask
- 28h DWORD pointer to filename
- ---class 05h function 07h---
- 17h 7 BYTEs ???
- 1Eh DWORD pointer to ???
- 22h 4 BYTEs ???
- 26h WORD attribute mask
- 28h DWORD pointer to source filespec
- 2Ch DWORD pointer to destination filespec
- ---class 05h function 08h---
- 17h 7 BYTEs ???
- 1Eh DWORD pointer to ???
- 22h 4 BYTEs ???
- 26h BYTE 00h FINDFIRST
- 01h FINDNEXT
- 28h DWORD pointer to FindFirst search data + 01h if FINDNEXT
- 2Ch WORD search attribute if FINDFIRST
- 2Eh DWORD pointer to filespec if FINDFIRST
- ---class 05h function 09h---
- 17h 7 BYTEs ???
- 1Eh DWORD pointer to ???
- 22h DWORD pointer to IFS open file structure (see #01661)
- 26h WORD ??? \ together, specify open vs. create, whether or
- 28h WORD ??? / not to truncate
- 2Ah 4 BYTEs ???
- 2Eh DWORD pointer to filename
- 32h 4 BYTEs ???
- 36h WORD file attributes on call
- returned ???
- 38h WORD returned ???
- ---class 05h function 0Ah---
- 17h 7 BYTEs ???
- 1Eh DWORD pointer to ???
- 22h DWORD pointer to IFS open file structure (see #01661)
- 26h BYTE seek type (02h = from end)
- 28h DWORD offset on call
- returned new absolute position
- ---class 05h functions 0Bh,0Ch---
- 17h 7 BYTEs ???
- 1Eh DWORD pointer to ???
- 22h DWORD pointer to IFS open file structure (see #01661)
- 28h WORD number of bytes to transfer
- returned bytes actually transferred
- 2Ah DWORD transfer address
- ---class 05h function 0Dh---
- 17h 7 BYTEs ???
- 1Eh DWORD pointer to ???
- 22h DWORD pointer to IFS open file structure (see #01661)
- 26h BYTE file handle???
- 27h BYTE unused???
- 28h WORD ???
- 2Ah WORD ???
- 2Ch WORD ???
- 2Eh WORD ???
- ---class 05h function 0Eh---
- 17h 7 BYTEs ???
- 1Eh DWORD pointer to ???
- 22h DWORD pointer to IFS open file structure (see #01661)
- 26h BYTE 00h commit file
- 01h close file
- 27h BYTE unused???
- ---class 05h function 0Fh---
- 17h 7 BYTEs ???
- 1Eh DWORD pointer to ???
- 22h 4 BYTEs ???
- 26h BYTE 02h GET attributes
- 03h PUT attributes
- 27h BYTE unused???
- 28h 12 BYTEs ???
- 34h WORD search attributes???
- 36h DWORD pointer to filename
- 3Ah WORD (GET) returned ???
- 3Ch WORD (GET) returned ???
- 3Eh WORD (GET) returned ???
- 40h WORD (GET) returned ???
- 42h WORD (PUT) new attributes
- (GET) returned attributes
- ---class 05h function 10h---
- 17h 7 BYTEs ???
- 1Eh DWORD pointer to ???
- 22h DWORD pointer to IFS open file structure (see #01661)
- 26h WORD ???
- 28h DWORD pointer to ???
- 2Ch WORD ???
- 2Eh BYTE ???
- 2Fh BYTE subfunction
- 01h get printer setup
- 03h ???
- 04h ???
- 05h ???
- 06h ???
- 07h ???
- 21h set printer setup
- ---class 05h function 11h---
- 17h 7 BYTEs ???
- 1Eh DWORD pointer to ???
- 22h DWORD pointer to IFS open file structure (see #01661)
- 26h BYTE subfunction
- 27h BYTE unused???
- 28h WORD ???
- 2Ah WORD ???
- 2Ch WORD ???
- 2Eh BYTE ???
- 2Fh BYTE ???
- ---class 05h function 12h---
- 17h 15 BYTEs unused???
- 26h WORD PSP segment
- 28h BYTE type of process termination
- 29h BYTE unused???
- ---class 05h function 13h---
- 17h 15 BYTEs unused???
- 26h WORD PSP segment
- ---request class 06h---
- 16h DWORD returned pointer to string corresponding to error code at 03h
- 1Ah BYTE returned ???
- 1Bh BYTE unused
- ---request class 07h---
- 16h DWORD pointer to IFS open file structure (see #01661)
- 1Ah BYTE ???
- 1Bh BYTE unused???
- SeeAlso: #01659,#01658,#01661
- Format of IFS open file structure:
- Offset Size Description (Table 01661)
- 00h WORD ???
- 02h WORD device info word
- 04h WORD file open mode
- 06h WORD ???
- 08h WORD file attributes
- 0Ah WORD owner's network machine number
- 0Ch WORD owner's PSP segment
- 0Eh DWORD file size
- 12h DWORD current offset in file
- 16h WORD file time
- 18h WORD file date
- 1Ah 11 BYTEs filename in FCB format
- 25h WORD ???
- 27h WORD hash value of SFT address
- (low word of linear address + segment&F000h)
- 29h 3 WORDs network info from SFT
- 2Fh WORD ???
- Format of one item in DOS 4.0+ list of special program names:
- Offset Size Description (Table 01662)
- 00h BYTE length of name (00h = end of list)
- 01h N BYTEs name in format name.ext
- N 2 BYTEs DOS version to return for program (major,minor)
- (see AH=30h,INT 2F/AX=122Fh)
- ---DOS 4 only---
- N+2 BYTE number of times to return fake version number (FFh = always)
- Note: if the name of the executable for the program making the DOS "get
- version" call matches one of the names in this list, DOS returns the
- specified version rather than the true version number
- --------v-215252-----------------------------
- INT 21 - VIRUS - "516"/"Leapfrog" - INSTALLATION CHECK
- AX = 5252h
- Return: BX = FFEEh if resident
- SeeAlso: AX=4BFFh"Cascade",AX=58CCh
- --------D-2153-------------------------------
- INT 21 - DOS 2+ internal - TRANSLATE BIOS PARAMETER BLOCK TO DRIVE PARAM BLOCK
- AH = 53h
- DS:SI -> BIOS Parameter Block (see #01663)
- ES:BP -> buffer for Drive Parameter Block (see #01395 at AH=32h)
- DBP drive byte must be set to valid drive (Windows95-OSR2)
- ---Windows95---
- CX = signature 4558h ('EX') for FAT32 extended BPB/DPB (see #01664)
- DX = signature 4152h ('AR') for FAT32 extended BPB/DPB
- Return: ES:BP buffer filled
- Notes: for DOS 3.0+, the cluster at which to start searching is set to 0000h
- and the number of free clusters is set to FFFFh (unknown)
- if the number of sectors per cluster is set to zero, MS-DOS will hang
- at startup because it computes the internally-used shift count by
- shifting this value right until the carry flag is set; since this
- will never happen when the field is zero, MS-DOS hangs
- not supported by Windows NT 3.1
- Format of BIOS Parameter Block:
- Offset Size Description (Table 01663)
- 00h WORD number of bytes per sector
- 02h BYTE number of sectors per cluster
- 03h WORD number of reserved sectors at start of disk
- 05h BYTE number of FATs
- 06h WORD number of entries in root directory
- 08h WORD total number of sectors
- for DOS 4.0+, set to zero if partition >32M, then set DWORD at
- 15h to actual number of sectors
- 0Ah BYTE media ID byte (see #01356)
- 0Bh WORD number of sectors per FAT
- ---DOS 2.13---
- 0Dh WORD number of sectors per track
- 0Fh WORD number of heads
- 11h WORD number of hidden sectors
- ---DOS 3.0+ ---
- 0Dh WORD number of sectors per track
- 0Fh WORD number of heads
- 11h DWORD number of hidden sectors
- 15h 11 BYTEs reserved
- ---DOS 4.0+ ---
- 15h DWORD total number of sectors if word at 08h contains zero
- 19h 6 BYTEs ???
- 1Fh WORD number of cylinders
- 21h BYTE device type
- 22h WORD device attributes (removable or not, etc)
- ---DR DOS 5+ ---
- 15h DWORD total number of sectors if word at 08h contains zero
- 19h 6 BYTEs reserved
- ---European MS-DOS 4.00---
- 15h DWORD total number of sectors if word at 08h contains zero
- (however, this DOS does not actually implement >32M partitions)
- SeeAlso: #01395,#01664
- Format of Extended BIOS Parameter Block:
- Offset Size Description (Table 01664)
- 00h 25 BYTEs same as standard DOS 4-6 BPB (see #01663)
- 19h DWORD sectors per FAT if WORD at 0Bh is 0000h
- 1Dh WORD extended flags
- bit 7: do not mirror active FAT to inactive FATs
- bits 6-4: reserved (0)
- bits 3-0: the 0-based FAT number of the active FAT
- (if mirroring disabled)
- 1Fh WORD file system version (high byte=major, low byte=minor)
- 0000h = Win95-OSR2
- 21h DWORD starting cluster number of root directory
- 25h WORD file system information sector number (see also #01788)
- FFFFh if none
- 27h WORD sector number of backup boot sector (FFFFh if none)
- 29h 6 WORDs reserved
- SeeAlso: #01560,#01787
- --------D-2154-------------------------------
- INT 21 - DOS 2+ - GET VERIFY FLAG
- AH = 54h
- Return: AL = verify flag
- 00h off
- 01h on (all disk writes verified after writing)
- SeeAlso: AH=2Eh
- --------v-2154--BX4475-----------------------
- INT 21 - VIRUS - "Dual_GtM"/"Ganeu" - INSTALLATION CHECK
- AH = 54h
- BX = 4475h ("Du")
- CX = 616Ch ("al")
- Return: BX = 4774h ("Gt") and CX = 4D21h ("M!") if resident
- SeeAlso: AX=50FDh"VIRUS",AX=5454h"VIRUS"
- --------v-215454-----------------------------
- INT 21 - VIRUS - "Dudley" - INSTALLATION CHECK
- AX = 5454h
- Return: AX = 0000h if resident
- SeeAlso: AX=50FDh"VIRUS",AH=54h/BX=4475h"VIRUS",AX=7BCEh"VIRUS"
- --------D-2155-------------------------------
- INT 21 - DOS 2+ internal - CREATE CHILD PSP
- AH = 55h
- DX = segment at which to create new PSP
- SI = (DOS 3.0+) value to place in memory size field at DX:[0002h]
- Return: AL destroyed
- Notes: creates a "child" PSP rather than making an exact copy of the current
- PSP; the new PSP's parent pointer is set to the current PSP and the
- reference count for each inherited file is incremented
- (DOS 2.0+) sets current PSP to DX
- (DOS 3.0+) marks "no inherit" file handles as closed in child PSP
- this function is implemented using the same code as AH=26h, so unlike
- other DOS 2+ functions, it does not return status in CF, instead
- returning status in AL as DOS 1.x functions do (but it never puts an
- explicit return value in AL)
- SeeAlso: AH=26h,AH=50h
- --------D-2156-------------------------------
- INT 21 - DOS 2+ - "RENAME" - RENAME FILE
- AH = 56h
- DS:DX -> ASCIZ filename of existing file (no wildcards, but see below)
- ES:DI -> ASCIZ new filename (no wildcards)
- CL = attribute mask (server call only, see below)
- Return: CF clear if successful
- CF set on error
- AX = error code (02h,03h,05h,11h) (see #01680)
- Notes: allows move between directories on same logical volume
- this function does not set the archive attribute
- (see #01420 at AX=4301h), which results in incremental backups not
- backing up the file under its new name
- open files should not be renamed
- (DOS 2.x only) this function renames file by creating a new directory
- entry with the new name, then marking the old entry deleted
- (DOS 3.0+) allows renaming of directories
- (DOS 3.1+) wildcards are allowed if invoked via AX=5D00h, in which case
- error 12h (no more files) is returned on success, and both source and
- destination specs must be canonical (as returned by AH=60h).
- Wildcards in the destination are replaced by the corresponding char
- of each source file being renamed. Under DOS 3.x, the call will fail
- if the destination wildcard is *.* or equivalent; under DR DOS 5.0,
- the call will fail with error code 03h if any wildcards are used.
- When invoked via AX=5D00h, only those files matching the attribute
- mask in CL are renamed.
- under the FlashTek X-32 DOS extender, the old-name pointer is in DS:EDX
- and the new-name pointer is in ES:EDI (DS must equal ES)
- BUG: (DR DOS 3.41) when invoked via AX=5D00h, this function will generate
- a new directory entry with the new name (including any wildcards)
- which can only be removed with a sector editor
- SeeAlso: AH=17h,AX=4301h,AX=43FFh/BP=5053h,AX=5D00h,AH=60h,AX=7156h
- SeeAlso: AX=F257h/SF=04h
- --------v-215643------------------------
- INT 21 - VIRUS - "PS-MPC.Gold" - INSTALLATION CHECK
- AX = 5643h ('VC')
- Return: AX = 5053h ('PS') if resident
- SeeAlso: AX=33E0h"VIRUS",AX=5741h"VIRUS",AX=6303h"VIRUS"
- --------D-215700-----------------------------
- INT 21 - DOS 2+ - GET FILE'S LAST-WRITTEN DATE AND TIME
- AX = 5700h
- BX = file handle
- Return: CF clear if successful
- CX = file's time (see #01665)
- DX = file's date (see #01666)
- CF set on error
- AX = error code (01h,06h) (see #01680)
- Note: under DR DOS 3.41 and 5.0, this function returns 0 (no date/time) for
- character devices; MS-DOS returns date and time of opening
- SeeAlso: AX=5701h,AX=5704h"Windows95"
- Bitfields for file time:
- Bit(s) Description (Table 01665)
- 15-11 hours (0-23)
- 10-5 minutes
- 4-0 seconds/2
- Bitfields for file date:
- Bit(s) Description (Table 01666)
- 15-9 year - 1980
- 8-5 month
- 4-0 day
- --------D-215701-----------------------------
- INT 21 - DOS 2+ - SET FILE'S LAST-WRITTEN DATE AND TIME
- AX = 5701h
- BX = file handle
- CX = new time (see #01665)
- DX = new date (see #01666)
- Return: CF clear if successful
- CF set on error
- AX = error code (01h,06h) (see #01680)
- SeeAlso: AX=5700h,AX=5705h"Windows95",AX=5707h"Windows95"
- --------D-215702-----------------------------
- INT 21 - DOS 4.x only - GET EXTENDED ATTRIBUTES FOR FILE
- AX = 5702h
- BX = file handle
- CX = size of result buffer or 0000h
- DS:SI -> EAP list (see #01667)
- ES:DI -> buffer for returned EAV list (see #01670)
- Return: CF clear if successful
- CX = size of returned data
- CF set on error
- AX = error code (see #01680)
- Desc: get the current value of one or more extended attributes
- Notes: if CX=0000h on entry, ES:DI is ignored and no data is actually
- returned, only the amount of data which is available
- the default DOS 4 behavior is to return a single word of 0000h (no
- structures) in the result buffer if CX>=0002h on entry; this
- functionality was apparently never released to the public
- SeeAlso: AX=5703h,AX=5704h,AH=6Eh,INT 2F/AX=112Dh
- Format of EAP (extended attribute properties) list:
- Offset Size Description (Table 01667)
- 00h WORD number of EAP structures following
- 02h var array of EAP structures (see #01668)
- SeeAlso: #01670
- Format of EAP (extended attribute property) structure:
- Offset Size Description (Table 01668)
- 00h BYTE attribute type
- 01h boolean (either 00h or 01h)
- 02h number (BYTE, WORD, or DWORD)
- 03h string
- 04h date stamp
- 05h time stamp
- 01h WORD EAP flags (see #01669)
- 03h BYTE size of reference string (name)
- 04h N BYTEs reference string
- Bitfields for EAP flags:
- Bit(s) Description (Table 01669)
- 12 unchangeable
- 13 ignore
- 14 unchangeable
- 15 used by COMMAND.COM for code page, but not understood by ATTRIB
- Format of EAV (extended attribute value) list:
- Offset Size Description (Table 01670)
- 00h WORD number of EAV structures following
- 02h var array of Extended Attribute Value structures (see #01671)
- SeeAlso: #01667
- Format of Extended Attribute Value structures:
- Offset Size Description (Table 01671)
- 00h 4 BYTEs ???
- 04h BYTE size of reference string
- 05h WORD size of value
- 07h var reference string
- var value
- --------O-215702-----------------------------
- INT 21 - OS/2 v1.1+ Family API - DosQFileInfo
- AX = 5702h
- BX = file handle
- CX = size of buffer for information
- DX = level of information
- 0001h standard file information (see #01672)
- 0002h Query EA Size (see #01672)
- 0003h Query EAs from List (see #01673)
- 0004h Query All EAs (see #01673)
- ES:DI -> buffer for information (see #01672,#01673)
- Return: CF clear if successful
- CF set on error
- AX = error code
- SeeAlso: AX=5702h/BX=FFFFh,AX=5703h"OS/2",AH=6Dh"OS/2"
- Format of OS/2 DosQFileInfo:
- Offset Size Description (Table 01672)
- 00h WORD creation date
- 02h WORD creation time
- 04h WORD last access date
- 06h WORD last access time
- 08h WORD last write date
- 0Ah WORD last write time
- 0Ch DWORD file size in bytes
- 10h DWORD allocated space in bytes
- 14h WORD file attributes
- ---level 2 only---
- 16h DWORD size of Extended Attributes in byte
- SeeAlso: #01673,#01676
- Format of OS/2 DosQFileInfo, EAOP structure:
- Offset Size Description (Table 01673)
- 00h DWORD pointer to general EA list (see #01674)
- 04h DWORD pointer to buffer for full EA list, with length field set
- 08h DWORD (ret) error
- Note: for info level 3, the first pointer must contain the address of a
- list of the Extended Attributes to be retrieved; for info level 4,
- it should be 0000h:0000h
- SeeAlso: #01672,#01676
- Format of OS/2 DosQFileInfo, General EA List:
- Offset Size Description (Table 01674)
- 00h DWORD (call) total size of list in bytes (including this field)
- (ret) number of bytes actually used (including this field)
- 04h var Extended Attribute entries (see #01675) [packed arrray]
- Format of OS/2 DosQFileInfo, General EA entry:
- Offset Size Description (Table 01675)
- 00h BYTE length of Extended Attribute name (excluding terminating NUL)
- 01h N BYTEs EA name
- BYTE 00h
- SeeAlso: #01674
- Format of OS/2 DosQFileInfo, Full EA List:
- Offset Size Description (Table 01676)
- 00h DWORD (call) total size of list in bytes (including this field)
- (ret) number of bytes actually used (including this field)
- 04h var Extended Attribute data (see #01677) [packed array]
- SeeAlso: #01672,#01673
- Format of OS/2 Extended Attribute data (struct FEA):
- Offset Size Description (Table 01677)
- 00h BYTE flags
- bit 7: critical EA
- 01h BYTE length of Extended Attribute name (excluding terminating NUL)
- 02h WORD length of Extended Attribute value
- 04h N BYTEs EA name
- BYTE 00h
- M BYTEs EA value
- --------O-215702BXFFFF-----------------------
- INT 21 - OS/2 v1.1+ Compatibility Box Family API - DosQPathInfo
- AX = 5702h
- BX = FFFFh
- CX = size of buffer for information
- DX = level of information (0002h)
- DS:SI -> filename
- ES:DI -> buffer for FAPI path information (see #01678)
- Return: CF clear if successful
- AL = 00h
- CF set on error
- AX = error code
- SeeAlso: AX=5702h"OS/2",AX=5703h/BX=FFFFh
- Format of FAPI path information:
- Offset Size Description (Table 01678)
- 00h 22 BYTEs ???
- 16h DWORD extended attribute size (none present if less than 5)
- --------D-215703-----------------------------
- INT 21 - DOS 4.x only - GET EXTENDED ATTRIBUTE PROPERTIES
- AX = 5703h
- BX = file handle
- CX = size of result buffer or 0000h
- ES:DI -> result buffer
- Return: CF clear if successful
- CX = size of returned data
- CF set on error
- AX = error code (see #01680)
- ES:DI -> zero word (DOS 4.0) if CX >= 2 on entry
- Desc: get a list of the extended attributes which are defined for the
- specified file
- Notes: if CX=0000h on entry, ES:DI is ignored and no data is actually
- returned, only the amount of data which is available
- the default DOS 4 behavior is to return a trivial EAP list consisting
- of the single word 0000h (no EAP structures) if CX>=0002h on entry;
- this functionality was apparently never released to the public
- SeeAlso: AX=5702h,AX=5704h,AH=6Eh,INT 2F/AX=112Dh
- --------O-215703-----------------------------
- INT 21 - OS/2 v1.1+ Family API - DosSetFileInfo
- AX = 5703h
- BX = file handle
- CX = size of information buffer
- DX = level of information
- ES:DI -> information buffer
- Return: CF clear if successful
- CF set on error
- AX = error code
- SeeAlso: AX=5702h"OS/2",AX=5703h/BX=FFFFh
- --------O-215703BXFFFF-----------------------
- INT 21 - OS/2 v1.1+ Family API - DosSetPathInfo
- AX = 5703h
- BX = FFFFh
- CX = size of information buffer
- DX = level of information
- DS:SI -> filename
- ES:DI -> information buffer
- Return: CF clear if successful
- CF set on error
- AX = error code
- SeeAlso: AX=5702h/BX=FFFFh,AX=5703h"OS/2"
- --------D-215704-----------------------------
- INT 21 - DOS 4.x only - SET EXTENDED ATTRIBUTES
- AX = 5704h
- BX = file handle
- ES:DI -> EAV list (see #01670)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #01680)
- Note: the default DOS 4 behavior is to do nothing and return successfully;
- this functionality was apparently never released to the public
- SeeAlso: AX=5702h,AX=5703h,INT 2F/AX=112Dh
- --------D-215704-----------------------------
- INT 21 - MS-DOS 7/Windows95 - GET LAST ACCESS DATE AND TIME
- AX = 5704h
- BX = file handle
- Return: CF clear if successful
- DX = last access date (see #01666)
- CX = last access time (currently always 0000h)
- CF set on error
- AX = error code
- SeeAlso: AX=5701h,AX=5705h,AX=5706h
- --------D-215705-----------------------------
- INT 21 - MS-DOS 7/Windows95 - SET LAST ACCESS DATE AND TIME
- AX = 5705h
- BX = file handle
- CX = new last-access time (currently not supported, must be 0000h)
- DX = new last-access date (see #01666)
- Return: CF clear if successful
- CF set on error
- AX = error code
- SeeAlso: AX=5700h,AX=5704h"Windows95",AX=5707h
- --------D-215706-----------------------------
- INT 21 - MS-DOS 7/Windows95 - GET CREATION DATE AND TIME
- AX = 5706h
- BX = file handle
- Return: CF clear if successful
- CX = creation time (see #01665)
- DX = creation date (see #01666)
- SI = number of 10-millisecond units past time in CX (0-199)
- CF set on error
- AX = error code
- SeeAlso: AX=5701h,AX=5704h"Windows95",AX=5707h
- --------D-215707-----------------------------
- INT 21 - MS-DOS 7/Windows95 - SET CREATION DATE AND TIME
- AX = 5707h
- BX = file handle
- CX = new creation time (see #01665)
- DX = new creation date (see #01666)
- SI = new creation time: 10-millisecond units past time in CX (0-199)
- Return: CF clear if successful
- CF set on error
- AX = error code
- SeeAlso: AX=5700h,AX=5705h,AX=5706h
- --------v-215741-----------------------------
- INT 21 - VIRUS - "WARP" -INSTALLATION CHECK
- AX = 5741h
- Return: AX = 5250h if resident
- SeeAlso: AX=5643h"VIRUS",AX=58CCh"VIRUS"
- --------U-215757BX5757-----------------------
- INT 21 U - IBM Genie - Resident Manager - INSTALLATION CHECK
- AX = 5757h
- BX = 5757h
- Return: AX = 0000h if installed
- BX = ???
- DX = ???
- DS:SI -> list of 27 DWORD entry point addresses
- Program: IBM Genie is a set of utility TSRs by Helix Software
- Note: other functions possible if BX <> 5757h, but details not yet available
- ----------215758-----------------------------
- INT 21 U - Headroom - API
- AX = 5758h
- BL = function
- 00h ???
- 01h get Headroom location
- Return: CF clear if installed
- AX = PSP segment of Headroom TSR
- BX = paragraphs of memory used by Headroom
- CF set if not (normal DOS return)
- Note: this function is also used as an installation check
- 02h get INT 21 handler
- Return: CF clear
- ES:BX -> Headroom's INT 21 handler
- Note: also sets unknown flag
- 03h launch application???
- DS:SI -> 233-byte application record
- Return: ???
- 04h ???
- ???
- Return: CF clear
- 05h get swap directory
- Return: CF clear
- DX:AX -> ASCIZ swap directory name
- 06h ???
- DX = ???
- Return: CF clear
- 07h ???
- 08h ???
- 09h get current application
- Return: BX = application number
- 0Ah ???
- DX = application number
- DS:SI = ???
- Return: ???
- 0Bh ???
- 0Ch ???
- DX = application number
- ???
- Return: ???
- 0Dh ???
- DX = application number
- ???
- Return: ???
- 0Eh get ???
- Return: CF clear
- AX = ???
- 0Fh set ??? flag
- 10h clear ??? flag
- 11h find application by name
- DS:SI -> ASCIZ application name
- Return: CF clear
- AX = application number or FFFFh if not loaded
- 12h ???
- DX = application number
- Return: CF clear
- ???
- 13h ???
- Return: CF clear
- 14h ???
- same as function 13h
- 15h set ???
- DX = ???
- 16h get ???
- Return: AX = ??? set by function 15h
- 17h get ???
- Return: BX = ???
- CX = ??? (may be pointer in BX:CX)
- 18h BUG: branches incorrectly due to fencepost error
- Program: Headroom is a TSR/task switcher by Helix Software
- SeeAlso: AX=4C57h,AX=5757h,INT 2F/AX=5758h
- --------D-2158-------------------------------
- INT 21 - DOS 2.11+ - GET OR SET MEMORY ALLOCATION STRATEGY
- AH = 58h
- AL = subfunction
- 00h get allocation strategy
- Return: AX = current strategy (see #01679)
- 01h set allocation strategy
- BL = new allocation strategy (see #01679)
- BH = 00h (DOS 5+)
- Return: CF clear if successful
- CF set on error
- AX = error code (01h) (see #01680)
- Notes: the Set subfunction accepts any value in BL for DOS 3.x and 4.x;
- 2 or greater means last fit
- the Get subfunction returns the last value set
- setting an allocation strategy involving high memory does not
- automatically link in the UMB memory chain; this must be done
- explicitly with AX=5803h in order to actually allocate high memory
- a program which changes the allocation strategy should restore it
- before terminating
- Toshiba MS-DOS v2.11 supports subfunctions 00h and 01h, as does the
- TI Professional MS-DOS v2.13
- DR DOS 3.41 reportedly reverses subfunctions 00h and 01h
- SeeAlso: AH=48h,AH=49h,AH=4Ah,INT 2F/AX=4310h"XMS",INT 67/AH=3Fh
- (Table 01679)
- Values for DOS memory allocation strategy:
- 00h low memory first fit
- 01h low memory best fit
- 02h low memory last fit
- ---DOS 5+ ---
- 40h high memory first fit
- 41h high memory best fit
- 42h high memory last fit
- 80h first fit, try high then low memory
- 81h best fit, try high then low memory
- 82h last fit, try high then low memory
- --------D-2158-------------------------------
- INT 21 - DOS 5+ - GET OR SET UMB LINK STATE
- AH = 58h
- AL = subfunction
- 02h get UMB link state
- Return: AL = current link state
- 00h UMBs not part of DOS memory chain
- 01h UMBs in DOS memory chain
- 03h set UMB link state
- BX = new link state
- 0000h remove UMBs from DOS memory chain
- 0001h add UMBs to DOS memory chain
- Return: CF clear if successful
- CF set on error
- AX = error code (01h) (see #01680)
- Notes: a program which changes the UMB link state should restore it before
- terminating
- UMBs will only be available if CONFIG.SYS contains the line DOS=UMB,
- the UMBs have been linked into the memory chain with AX=5803h, and
- the allocation strategy has been set to include high memory with
- AX=5801h
- SeeAlso: #01687,#02766 at INT 2F/AX=4310h
- --------v-2158CC-----------------------------
- INT 21 - VIRUS - "1067"/"Headcrash" - INSTALLATION CHECK
- AX = 58CCh
- Return: CF clear if resident
- SeeAlso: AX=5741h"VIRUS",AX=5643h,AX=5252h,AX=58DDh,AX=6303h"VIRUS",AX=6969h
- --------v-2158DD-----------------------------
- INT 21 - VIRUS - "1067"/"Headcrash" - GET ORIGINAL INT 21h VECTOR
- AX = 58DDh
- Return: CX = code segment of virus
- ES:BX = old INT 21h vector
- SeeAlso: AX=5252h,AX=58CCh,AX=6969h
- --------D-2159--BX0000-----------------------
- INT 21 - DOS 3.0+ - GET EXTENDED ERROR INFORMATION
- AH = 59h
- BX = 0000h
- Return: AX = extended error code (see #01680)
- BH = error class (see #01682)
- BL = recommended action (see #01683)
- CH = error locus (see #01684)
- ES:DI may be pointer (see #01681, #01680)
- CL, DX, SI, BP, and DS destroyed
- Notes: functions available under DOS 2.x map the true DOS 3.0+ error code into
- one supported under DOS 2.x
- you should call this function to retrieve the true error code when an
- FCB or DOS 2.x call returns an error
- under DR DOS 5.0, this function does not use any of the DOS-internal
- stacks and may thus be called at any time
- SeeAlso: AH=59h/BX=0001h,AX=5D0Ah,INT 2F/AX=122Dh
- (Table 01680)
- Values for DOS extended error code:
- 00h (0) no error
- 01h (1) function number invalid
- 02h (2) file not found
- 03h (3) path not found
- 04h (4) too many open files (no handles available)
- 05h (5) access denied
- 06h (6) invalid handle
- 07h (7) memory control block destroyed
- 08h (8) insufficient memory
- 09h (9) memory block address invalid
- 0Ah (10) environment invalid (usually >32K in length)
- 0Bh (11) format invalid
- 0Ch (12) access code invalid
- 0Dh (13) data invalid
- 0Eh (14) reserved
- 0Fh (15) invalid drive
- 10h (16) attempted to remove current directory
- 11h (17) not same device
- 12h (18) no more files
- ---DOS 3.0+ ---
- 13h (19) disk write-protected
- 14h (20) unknown unit
- 15h (21) drive not ready
- 16h (22) unknown command
- 17h (23) data error (CRC)
- 18h (24) bad request structure length
- 19h (25) seek error
- 1Ah (26) unknown media type (non-DOS disk)
- 1Bh (27) sector not found
- 1Ch (28) printer out of paper
- 1Dh (29) write fault
- 1Eh (30) read fault
- 1Fh (31) general failure
- 20h (32) sharing violation
- 21h (33) lock violation
- 22h (34) disk change invalid (ES:DI -> media ID structure)(see #01681)
- 23h (35) FCB unavailable
- 24h (36) sharing buffer overflow
- 25h (37) (DOS 4.0+) code page mismatch
- 26h (38) (DOS 4.0+) cannot complete file operation (out of input)
- 27h (39) (DOS 4.0+) insufficient disk space
- 28h-31h reserved
- 32h (50) network request not supported
- 33h (51) remote computer not listening
- 34h (52) duplicate name on network
- 35h (53) network name not found
- 36h (54) network busy
- 37h (55) network device no longer exists
- 38h (56) network BIOS command limit exceeded
- 39h (57) network adapter hardware error
- 3Ah (58) incorrect response from network
- 3Bh (59) unexpected network error
- 3Ch (60) incompatible remote adapter
- 3Dh (61) print queue full
- 3Eh (62) queue not full
- 3Fh (63) not enough space to print file
- 40h (64) network name was deleted
- 41h (65) network: Access denied
- 42h (66) network device type incorrect
- 43h (67) network name not found
- 44h (68) network name limit exceeded
- 45h (69) network BIOS session limit exceeded
- 46h (70) temporarily paused
- 47h (71) network request not accepted
- 48h (72) network print/disk redirection paused
- 49h (73) network software not installed
- (LANtastic) invalid network version
- 4Ah (74) unexpected adapter close
- (LANtastic) account expired
- 4Bh (75) (LANtastic) password expired
- 4Ch (76) (LANtastic) login attempt invalid at this time
- 4Dh (77) (LANtastic v3+) disk limit exceeded on network node
- 4Eh (78) (LANtastic v3+) not logged in to network node
- 4Fh (79) reserved
- 50h (80) file exists
- 51h (81) reserved
- 52h (82) cannot make directory
- 53h (83) fail on INT 24h
- 54h (84) (DOS 3.3+) too many redirections
- 55h (85) (DOS 3.3+) duplicate redirection
- 56h (86) (DOS 3.3+) invalid password
- 57h (87) (DOS 3.3+) invalid parameter
- 58h (88) (DOS 3.3+) network write fault
- 59h (89) (DOS 4.0+) function not supported on network
- 5Ah (90) (DOS 4.0+) required system component not installed
- 5Bh (91) (NetWare4) timer server table overflowed
- 5Ch (92) (NetWare4) duplicate in timer service table
- 5Dh (93) (NetWare4) no items to work on
- 5Fh (95) (NetWare4) invalid interrupt
- 64h (100) (MSCDEX) unknown error
- 64h (100) (NetWare4) open semaphore limit exceeded
- 65h (101) (MSCDEX) not ready
- 65h (101) (NetWare4) exclusive semaphore is already owned
- 66h (102) (MSCDEX) EMS memory no longer valid
- 66h (102) (NetWare4) semaphore was set when close attempted
- 67h (103) (MSCDEX) not High Sierra or ISO-9660 format
- 67h (103) (NetWare4) too many exclusive semaphore requests
- 68h (104) (MSCDEX) door open
- 68h (104) (NetWare4) operation invalid from interrupt handler
- 69h (105) (NetWare4) semaphore owner died
- 6Ah (106) (NetWare4) semaphore limit exceeded
- 6Bh (107) (NetWare4) insert drive B: disk into drive A:
- 6Ch (108) (NetWare4) drive locked by another process
- 6Dh (109) (NetWare4) broken pipe
- 6Eh (110) (NetWare4) pipe open/create failed
- 6Fh (111) (NetWare4) pipe buffer overflowed
- 70h (112) (NetWare4) disk full
- 71h (113) (NetWare4) no more search handles
- 72h (114) (NetWare4) invalid target handle for dup2
- 73h (115) (NetWare4) bad user virtual address
- 74h (116) (NetWare4) error on console I/O
- 75h (117) (NetWare4) unknown category code for IOCTL
- 76h (118) (NetWare4) invalid value for verify flag
- 77h (119) (NetWare4) level four driver not found
- 78h (120) (NetWare4) invalid function number
- 79h (121) (NetWare4) semaphore timeout
- 7Ah (122) (NetWare4) buffer too small
- 7Bh (123) (NetWare4) invalid character or bad file-system name
- 7Ch (124) (NetWare4) unimplemented information level
- 7Dh (125) (NetWare4) no volume label found
- 7Eh (126) (NetWare4) module handle not found
- 7Fh (127) (NetWare4) procedure address not found
- 80h (128) (NetWare4) CWait found no children
- 81h (129) (NetWare4) CWait children still running
- 82h (130) (NetWare4) invalid operation for direct disk-access handle
- 83h (131) (NetWare4) attempted seek to negative offset
- 84h (132) (NetWare4) attempted to seek on device or pipe
- 85h (133) (NetWare4) drive already has JOINed drives
- 86h (134) (NetWare4) drive is already JOINed
- 87h (135) (NetWare4) drive is already SUBSTed
- 88h (136) (NetWare4) can not delete drive which is not JOINed
- 89h (137) (NetWare4) can not delete drive which is not SUBSTed
- 8Ah (138) (NetWare4) can not JOIN to a JOINed drive
- 8Bh (139) (NetWare4) can not SUBST to a SUBSTed drive
- 8Ch (140) (NetWare4) can not JOIN to a SUBSTed drive
- 8Dh (141) (NetWare4) can not SUBST to a JOINed drive
- 8Eh (142) (NetWare4) drive is busy
- 8Fh (143) (NetWare4) can not JOIN/SUBST to same drive
- 90h (144) (NetWare4) directory must not be root directory
- 91h (145) (NetWare4) can only JOIN to empty directory
- 92h (146) (NetWare4) path is already in use for SUBST
- 93h (147) (NetWare4) path is already in use for JOIN
- 94h (148) (NetWare4) path is in use by another process
- 95h (149) (NetWare4) directory previously SUBSTituted
- 96h (150) (NetWare4) system trace error
- 97h (151) (NetWare4) invalid event count for DosMuxSemWait
- 98h (152) (NetWare4) too many waiting on mutex
- 99h (153) (NetWare4) invalid list format
- 9Ah (154) (NetWare4) volume label too large
- 9Bh (155) (NetWare4) unable to create another TCB
- 9Ch (156) (NetWare4) signal refused
- 9Dh (157) (NetWare4) segment discarded
- 9Eh (158) (NetWare4) segment not locked
- 9Fh (159) (NetWare4) invalid thread-ID address
- A0h (160) (NetWare4) bad environment pointer
- A1h (161) (NetWare4) invalid name passed to EXEC
- A2h (162) (NetWare4) signal already pending
- A3h (163) (NetWare4) ERROR_124 mapping
- A4h (164) (NetWare4) no more process slots
- A5h (165) (NetWare4) ERROR_124 mapping
- B0h (176) (MS-DOS 7.0) volume is not locked
- B1h (177) (MS-DOS 7.0) volume is locked in drive
- B2h (178) (MS-DOS 7.0) volume is not removable
- B4h (180) (MS-DOS 7.0) lock count has been exceeded
- B4h (180) (NetWare4) invalid segment number
- B5h (181) (MS-DOS 7.0) a valid eject request failed
- B5h (181) (NetWare4) invalid call gate
- B6h (182) (NetWare4) invalid ordinal
- B7h (183) (NetWare4) shared segment already exists
- B8h (184) (NetWare4) no child process to wait for
- B9h (185) (NetWare4) NoWait specified and child still running
- BAh (186) (NetWare4) invalid flag number
- BBh (187) (NetWare4) semaphore does not exist
- BCh (188) (NetWare4) invalid starting code segment
- BDh (189) (NetWare4) invalid stack segment
- BEh (190) (NetWare4) invalid module type (DLL can not be used as application)
- BFh (191) (NetWare4) invalid EXE signature
- C0h (192) (NetWare4) EXE marked invalid
- C1h (193) (NetWare4) bad EXE format (e.g. DOS-mode program)
- C2h (194) (NetWare4) iterated data exceeds 64K
- C3h (195) (NetWare4) invalid minimum allocation size
- C4h (196) (NetWare4) dynamic link from invalid Ring
- C5h (197) (NetWare4) IOPL not enabled
- C6h (198) (NetWare4) invalid segment descriptor privilege level
- C7h (199) (NetWare4) automatic data segment exceeds 64K
- C8h (200) (NetWare4) Ring2 segment must be moveable
- C9h (201) (NetWare4) relocation chain exceeds segment limit
- CAh (202) (NetWare4) infinite loop in relocation chain
- CBh (203) (NetWare4) environment variable not found
- CCh (204) (NetWare4) not current country
- CDh (205) (NetWare4) no signal sent
- CEh (206) (NetWare4) file name not 8.3
- CFh (207) (NetWare4) Ring2 stack in use
- D0h (208) (NetWare4) meta expansion is too long
- D1h (209) (NetWare4) invalid signal number
- D2h (210) (NetWare4) inactive thread
- D3h (211) (NetWare4) file system information not available
- D4h (212) (NetWare4) locked error
- D5h (213) (NetWare4) attempted to execute non-family API call in DOS mode
- D6h (214) (NetWare4) too many modules
- D7h (215) (NetWare4) nesting not allowed
- E6h (230) (NetWare4) non-existent pipe, or bad operation
- E7h (231) (NetWare4) pipe is busy
- E8h (232) (NetWare4) no data available for nonblocking read
- E9h (233) (NetWare4) pipe disconnected by server
- EAh (234) (NetWare4) more data available
- FFh (255) (NetWare4) invalid drive
- SeeAlso: #01682,#01683,#01684,#01961
- Format of media ID structure:
- Offset Size Description (Table 01681)
- 00h 12 BYTEs ASCIZ volume label of required disk
- 0Ch DWORD serial number (DOS 4.0+)
- (Table 01682)
- Values for DOS Error Class:
- 01h (1) out of resource (storage space or I/O channels)
- 02h (2) temporary situation (file or record lock)
- 03h (3) authorization (denied access)
- 04h (4) internal (system software bug)
- 05h (5) hardware failure
- 06h (6) system failure (configuration file missing or incorrect)
- 07h (7) application program error
- 08h (8) not found
- 09h (9) bad format
- 0Ah (10) locked
- 0Bh (11) media error
- 0Ch (12) already exists
- 0Dh (13) unknown
- SeeAlso: #01680,#01683,#01684
- (Table 01683)
- Values for DOS Suggested Action:
- 01h retry
- 02h delayed retry
- 03h prompt user to reenter input
- 04h abort after cleanup
- 05h immediate abort
- 06h ignore
- 07h retry after user intervention
- SeeAlso: #01680,#01682,#01684
- (Table 01684)
- Values for DOS Error Locus:
- 01h unknown or not appropriate
- 02h block device (disk error)
- 03h network related
- 04h serial device (timeout)
- 05h memory related
- SeeAlso: #01680,#01682,#01683
- --------D-2159--BX0001-----------------------
- INT 21 - European MS-DOS 4.0 - GET HARD ERROR INFORMATION
- AH = 59h
- BX = 0001h
- Return: ES:DI -> hard error information packet (see #01685) for most recent
- hard (critical) error
- SeeAlso: AH=59h/BX=0000h,AH=95h,INT 24
- Format of European MS-DOS 4.0 hard error information packet:
- Offset Size Description (Table 01685)
- 00h WORD contents of AX at system entry
- 02h WORD Process ID which encountered error
- 04h WORD contents of AX at time of error
- 06h BYTE error type
- 00h physical I/O error
- 01h disk change request
- 02h file sharing violation
- 03h FCB problem
- 04h file locking violation
- 05h bad FAT
- 06h network detected error
- 07h BYTE INT 24 error code
- 08h WORD extended error code (see #01680)
- 0Ah DWORD pointer to associated device
- --------D-215A-------------------------------
- INT 21 - DOS 3.0+ - CREATE TEMPORARY FILE
- AH = 5Ah
- CX = file attribute (see #01420 at AX=4301h)
- DS:DX -> ASCIZ path ending with a '\' + 13 zero bytes to receive the
- generated filename
- Return: CF clear if successful
- AX = file handle opened for read/write in compatibility mode
- DS:DX pathname extended with generated name for temporary file
- CF set on error
- AX = error code (03h,04h,05h) (see #01680)
- Desc: creates a file with a unique name which must be explicitly deleted
- Notes: under the FlashTek X-32 DOS extender, the path pointer is in DS:EDX
- MS-DOS 3.0-4.0 and DR DOS 3.4-5.0 generate the filename as a sequence
- of hex digits based on the current date and time; MS-DOS 6+,
- DR DOS 6, and Novell DOS 7 use letters A-P in place of hex digits
- MS-DOS 5.0 and DR DOS 3.41/5.0 will insert a missing trailing backslash
- before appending the generated filename, but due to this, an empty
- string results in a file in the root directory
- BUGS: COMPAQ DOS 3.31 hangs if the pathname is at XXXXh:0000h; it apparently
- wraps around to the end of the segment
- MS-DOS 5.00 revisions A and B and PC-DOS 5.00 revision A reportedly
- hang the system if the specified path is the root directory and the
- root directory is full (no free directory entries)
- Mark Incley <mincley@krisalis.demon.co.uk> reports that this function
- hangs in MS-DOS 6.2x if the name includes two consecutive path
- separators (e.g. C:\\ )
- SeeAlso: AH=3Ch,AH=5Bh
- --------D-215B-------------------------------
- INT 21 - DOS 3.0+ - CREATE NEW FILE
- AH = 5Bh
- CX = file attribute (see #01420 at AX=4301h)
- DS:DX -> ASCIZ filename
- Return: CF clear if successful
- AX = file handle opened for read/write in compatibility mode
- CF set on error
- AX = error code (03h,04h,05h,50h) (see #01680)
- Notes: unlike AH=3Ch, this function will fail if the specified file exists
- rather than truncating it; this permits its use in creating semaphore
- files because it is an atomic "test and set" operation
- under the FlashTek X-32 DOS extender, the filename pointer is in DS:EDX
- SeeAlso: AH=3Ch,AH=5Ah
- --------D-215C-------------------------------
- INT 21 - DOS 3.0+ - "FLOCK" - RECORD LOCKING
- AH = 5Ch
- AL = subfunction
- 00h lock region of file
- 01h unlock region of file
- BX = file handle
- CX:DX = start offset of region within file
- SI:DI = length of region in bytes
- Return: CF clear if successful
- CF set on error
- AX = error code (01h,06h,21h,24h) (see #01680)
- Notes: error returned unless SHARE or network installed
- an unlock call must specify the same region as some prior lock call
- locked regions become entirely inaccessible to other processes
- duplicate handles created with AH=45h or AH=46h inherit locks, but
- handles inherited by child processes (see AH=4Bh) do not
- under DR DOS 3.41 and 5.0, if a process opens a file without the no-
- inherit flag and then starts a child, any locks set by the parent
- are ignored, and the child will only get an error if it tries to
- lock an area previously locked by the parent process. Under Novell
- DOS 7, this function is fully supported as in MS-DOS.
- SeeAlso: AX=440Bh,AH=BCh,AH=BEh,INT 2F/AX=110Ah,INT 2F/AX=110Bh
- --------D-215D00-----------------------------
- INT 21 U - DOS 3.1+ internal - SERVER FUNCTION CALL
- AX = 5D00h
- DS:DX -> DOS parameter list (see #01686)
- DPL contains all register values for a call to INT 21h
- Return: as appropriate for function being called
- Notes: does not check AH. Out of range values will crash the system
- executes using specified computer ID and process ID
- sharing delay loops skipped
- a special sharing mode is enabled to handle FCBs opened across network
- wildcards are enabled for DELETE (AH=41h) and RENAME (AH=56h) under
- MS-DOS; under DR DOS 3.41, wildcards corrupt the filesystem; and
- under DR DOS 5.0-6.0, the call returns error code 03h due to improper
- support for the server function call (refer to BUGS: section below)
- an extra file attribute parameter is enabled for OPEN (AH=3Dh),
- DELETE (AH=41h), and RENAME (AH=56h)
- functions which take filenames require canonical names (as returned
- by AH=60h); this is apparently to prevent multi-hop file forwarding
- BUGS: the OS/2 2.0 DOS Boot Session incorrectly maps DOS drive letters,
- seemingly ignoring HPFS drives
- DR DOS 5.0-6.0 merely recursively call INT 21 after loading the
- registers from the DPL, leading to problems for peer-to-peer
- networks
- SeeAlso: AH=3Dh,AH=41h,AH=56h,AH=60h
- Format of DOS parameter list:
- Offset Size Description (Table 01686)
- 00h WORD AX
- 02h WORD BX
- 04h WORD CX
- 06h WORD DX
- 08h WORD SI
- 0Ah WORD DI
- 0Ch WORD DS
- 0Eh WORD ES
- 10h WORD reserved (0)
- 12h WORD computer ID (0 = current system)
- 14h WORD process ID (PSP segment on specified computer)
- Note: under Windows Enhanced mode, the computer ID is normally the virtual
- machine ID (see INT 2F/AX=1683h), though this can reportedly be
- changed by setting UniqueDOSPSP= in SYSTEM.INI
- --------D-215D01-----------------------------
- INT 21 U - DOS 3.1+ internal - COMMIT ALL FILES FOR SPECIFIED COMPUTER/PROCESS
- AX = 5D01h
- DS:DX -> DOS parameter list (see #01686), only computer ID and
- process ID fields used
- Return: CF set on error
- AX = error code (see #01680)
- CF clear if successful
- Notes: flushes buffers and updates directory entries for each file which has
- been written to; if remote file, calls INT 2F/AX=1107h
- the computer ID and process ID are stored but ignored under DOS 3.3
- not supported by DR DOS 3.41 and 5.0; returns error code 01h. Fully
- supported by Novell DOS 7
- SeeAlso: AH=0Dh,AH=68h,INT 2F/AX=1107h
- --------D-215D02-----------------------------
- INT 21 U - DOS 3.1+ internal - SHARE.EXE - CLOSE FILE BY NAME
- AX = 5D02h
- DS:DX -> DOS parameter list (see #01686), only fields DX, DS,
- computer ID, and process ID used
- DPL's DS:DX -> ASCIZ name of file to close
- Return: CF set on error
- AX = error code (see #01680)
- CF clear if successful
- Notes: error unless SHARE is loaded (calls [SysFileTable-28h])
- (see #01636 at AH=52h)
- name must be canonical fully-qualified, such as returned by AH=60h
- not supported by DR DOS 3.41 and 5.0; returns error code 01h
- not supported by Novell DOS 7, although in Update 15 it is reported
- to no longer return an error code
- SeeAlso: AX=5D03h,AX=5D04h,AH=3Eh,AH=60h
- --------D-215D03-----------------------------
- INT 21 U - DOS 3.1+ internal - SHARE.EXE - CLOSE ALL FILES FOR GIVEN COMPUTER
- AX = 5D03h
- DS:DX -> DOS parameter list (see #01686), only computer ID used
- Return: CF set on error
- AX = error code (see #01680)
- CF clear if successful
- Notes: error unless SHARE is loaded (calls [SysFileTable-30h])
- (see #01636 at AH=52h)
- not supported by DR DOS 3.41 and 5.0; returns error code 01h
- not supported by Novell DOS 7 (at least through Update 4; may be
- supported in Update 15)
- SeeAlso: AX=5D02h,AX=5D04h
- --------D-215D04-----------------------------
- INT 21 U - DOS 3.1+ internal - SHARE.EXE - CLOSE ALL FILES FOR GIVEN PROCESS
- AX = 5D04h
- DS:DX -> DOS parameter list (see #01686), only computer ID and
- process ID fields used
- Return: CF set on error
- AX = error code (see #01680)
- CF clear if successful
- Notes: error unless SHARE is loaded (calls [SysFileTable-2Ch])
- (see #01636 at AH=52h)
- not supported by DR DOS 3.41 and 5.0; returns error code 01h
- not supported by Novell DOS 7
- SeeAlso: AX=5D02h,AX=5D03h,INT 2F/AX=111Dh
- --------D-215D05-----------------------------
- INT 21 U - DOS 3.1+ internal - SHARE.EXE - GET OPEN FILE LIST ENTRY
- AX = 5D05h
- DS:DX -> DOS parameter list (see #01686)
- DPL's BX = index of sharing record (see #01637 at AH=52h)
- DPL's CX = index of SFT in sharing record's SFT list
- Return: CF clear if successful
- ES:DI -> ASCIZ filename
- BX = network machine number of SFT's owner
- CX = number of locks held by SFT's owner
- CF set if either index out of range
- AX = 0012h (no more files)
- Notes: error unless SHARE is loaded (calls [SysFileTable-18h])
- (see #01636 at AH=52h)
- names are always canonical fully-qualified, such as returned by AH=60h
- not supported by DR DOS 3.41 and 5.0 and Novell DOS 7, but does not
- return an error, instead destroying AX
- SeeAlso: AH=5Ch,AH=60h
- --------D-215D06-----------------------------
- INT 21 U - DOS 3.0+ internal - GET ADDRESS OF DOS SWAPPABLE DATA AREA
- AX = 5D06h
- Return: CF set on error
- AX = error code (see #01680)
- CF clear if successful
- DS:SI -> nonreentrant data area (includes all three DOS stacks)
- (critical error flag is first byte) (see #01687)
- CX = size in bytes of area which must be swapped while in DOS
- DX = size in bytes of area which must always be swapped
- Notes: the Critical Error flag is used in conjunction with the InDOS flag
- (see AH=34h) to determine when it is safe to enter DOS from a TSR
- setting CritErr flag allows use of functions 50h/51h from INT 28h under
- DOS 2.x by forcing use of correct stack
- swapping the data area allows reentering DOS unless DOS is in a
- critical section delimited by INT 2A/AH=80h and INT 2A/AH=81h,82h
- under DOS 4.0, AX=5D0Bh should be used instead of this function
- SHARE and other DOS utilities consult the byte at offset 04h in the
- DOS data segment (see INT 2F/AX=1203h) to determine the SDA format
- in use: 00h = DOS 3.x, 01h = DOS 4.0-6.0, other = error.
- DR DOS 3.41+ supports this function, but the SDA format beyond the
- first 18h bytes is completely different from MS-DOS
- BUG: calling this function with certain values in DX crashes Novell DOS 7.0
- prior to Update 14
- SeeAlso: AX=5D0Bh,INT 2A/AH=80h,INT 2A/AH=81h,INT 2A/AH=82h
- Format of DOS 3.10-3.30 Swappable Data Area:
- Offset Size Description (Table 01687)
- -34 BYTE (DOS 3.10+) printer echo flag (00h off, FFh active)
- -31 BYTE (DOS 3.30) current switch character
- -30 BYTE current memory allocation strategy (see AH=58h)
- -28 BYTE (DOS 3.30) incremented on each INT 21/AX=5E01h call
- -27 16 BYTEs (DOS 3.30) machine name set by INT 21/AX=5E01h
- -11 5 WORDs zero-terminated list of offsets which need to be patched to
- enable critical-section calls (see INT 2A/AH=80h)
- -1 BYTE unused padding
- ---start of actual SDA---
- 00h BYTE critical error flag ("ErrorMode")
- 01h BYTE InDOS flag (count of active INT 21 calls)
- 02h BYTE drive on which current critical error occurred, or FFh
- (DR DOS sets to drive number during INT 24, 00h otherwise)
- 03h BYTE locus of last error
- 04h WORD extended error code of last error
- 06h BYTE suggested action for last error
- 07h BYTE class of last error
- 08h DWORD ES:DI pointer for last error
- 0Ch DWORD current DTA (Disk Transfer Address)
- note: may point into SDA during the DOS EXEC function
- (see AH=4Bh), so programs which swap the SDA must be
- prepared to move the DTA to a private buffer if they
- might be invoked during an EXEC
- 10h WORD current PSP
- 12h WORD stores SP across an INT 23
- 14h WORD return code from last process termination (zerod after reading
- with AH=4Dh)
- 16h BYTE current drive
- 17h BYTE extended break flag
- ---remainder need only be swapped if in DOS---
- 18h WORD value of AX on call to INT 21
- 1Ah WORD PSP segment for sharing/network
- 1Ch WORD network machine number for sharing/network (0000h = us)
- 1Eh WORD first usable memory block found when allocating memory
- 20h WORD best usable memory block found when allocating memory
- 22h WORD last usable memory block found when allocating memory
- 24h WORD memory size in paragraphs (used only during initialization)
- 26h WORD last entry checked during directory search
- 28h BYTE flag: INT 24 returned Fail
- 29h BYTE flags: allowable INT 24 actions (passed to INT 24 in AH)
- 2Ah BYTE directory flag (00h directory, 01h file)
- 2Bh BYTE flag: FFh if Ctrl-Break termination, 00h otherwise
- 2Ch BYTE flag: allow embedded blanks in FCB
- 2Dh BYTE padding (unused)
- 2Eh BYTE day of month
- 2Fh BYTE month
- 30h WORD year - 1980
- 32h WORD number of days since 01jan1980
- 34h BYTE day of week (0 = Sunday)
- 35h BYTE flag: console swapped during read from device
- 36h BYTE flag: safe to call INT 28 if nonzero
- 37h BYTE flag: if nonzero, INT 24 Abort turned into INT 24 Fail
- (set only during process termination)
- 38h 26 BYTEs device driver request header (see #02597 at INT 2F/AX=0802h)
- 52h DWORD pointer to device driver entry point (used in calling driver)
- 56h 22 BYTEs device driver request header for I/O calls
- 6Ch 14 BYTEs device driver request header for disk status check
- 7Ah DWORD pointer to device I/O buffer???
- 7Eh WORD ???
- 80h WORD ???
- 82h BYTE type of PSP copy (00h=simple for INT 21/AH=26h, FFh=make child)
- 83h BYTE padding (unused)
- 84h 3 BYTEs 24-bit user number (see AH=30h)
- 87h BYTE OEM number (see #01394 at AH=30h)
- 88h WORD offset to error code conversion table for INT 25/INT 26
- 8Ah 6 BYTEs CLOCK$ transfer record (see #01688)
- 90h BYTE device I/O buffer for single-byte I/O functions
- 91h BYTE padding??? (unused)
- 92h 128 BYTEs buffer for filename
- 112h 128 BYTEs buffer for filename
- 192h 21 BYTEs findfirst/findnext search data block (see #01626 at AH=4Eh)
- 1A7h 32 BYTEs directory entry for found file (see #01352 at AH=11h)
- 1C7h 81 BYTEs copy of current directory structure for drive being accessed
- 218h 11 BYTEs FCB-format filename for device name comparison
- 223h BYTE terminating NUL for above filename
- 224h 11 BYTEs wildcard destination specification for rename (FCB format)
- 22Fh BYTE terminating NUL for above spec
- 230h BYTE ???
- 231h WORD destination file/directory starting sector
- 233h 5 BYTEs ???
- 238h BYTE extended FCB file attribute
- 239h BYTE type of FCB (00h regular, FFh extended)
- 23Ah BYTE directory search attributes
- 23Bh BYTE file open/access mode
- 23Ch BYTE file found/delete flag
- bit 0: file found
- bit 4: file deleted
- 23Dh BYTE flag: device name found on rename, or file not found
- 23Eh BYTE splice flag (file name and directory name together)
- 23Fh BYTE flag indicating how DOS function was invoked
- (00h = direct INT 20/INT 21, FFh = server call AX=5D00h)
- 240h BYTE sector position within cluster
- 241h BYTE flag: translate sector/cluster (00h no, 01h yes)
- 242h BYTE flag: 00h if read, 01h if write
- 243h BYTE current working drive number
- 244h BYTE cluster factor
- 245h BYTE flag: cluster split mode
- 246h BYTE line edit (AH=0Ah) insert mode flag (nonzero = on)
- 247h BYTE canonicalized filename referred to existing file/dir if FFh
- 248h BYTE volume ID flag
- 249h BYTE type of process termination (00h-03h) (see AH=4Dh)
- 24Ah BYTE file create flag (00h = no, search only)
- 24Bh BYTE value with which to replace first byte of deleted file's name
- (normally E5h, but 00h as described under INT 21/AH=13h)
- 24Ch DWORD pointer to Drive Parameter Block for critical error invocation
- temp: used during process termination
- 250h DWORD pointer to stack frame containing user registers on INT 21
- 254h WORD stores SP across INT 24
- 256h DWORD pointer to DOS Drive Parameter Block for ???
- 25Ah WORD saving partial cluster number
- 25Ch WORD temp: sector of work current cluster
- 25Eh WORD high part of cluster number (only low byte referenced)
- 260h WORD ??? temp
- 262h BYTE Media ID byte returned by AH=1Bh,1Ch
- 263h BYTE padding (unused)
- 264h DWORD pointer to device header when filename is character device
- 268h DWORD pointer to current SFT
- 26Ch DWORD pointer to current directory structure for drive being accessed
- 270h DWORD pointer to caller's FCB
- 274h WORD number of SFT to which file being opened will refer
- 276h WORD temporary storage for file handle
- 278h DWORD pointer to a JFT entry in process handle table
- (see #01378 at AH=26h)
- 27Ch WORD offset in DOS DS of first filename argument
- 27Eh WORD offset in DOS DS of second filename argument
- 280h WORD offset of last component in pathname or FFFFh
- 282h WORD offset of transfer address to add
- 284h WORD last relative cluster within file being accessed
- 286h WORD temp: absolute cluster number being accessed
- 288h WORD directory sector number
- 28Ah WORD ??? current cluster number
- 28Ch WORD current relative sector number within file
- 28Eh WORD current sector number
- 290h WORD current byte offset within sector
- 292h DWORD current offset in file
- 296h DWORD temp: file byte count
- 29Ah WORD temp: file byte count
- 29Ch WORD free file cluster entry
- 29Eh WORD last file cluster entry
- 2A0h WORD next file cluster number
- 2A2h DWORD number of bytes appended to file
- 2A6h DWORD pointer to current work disk buffer
- 2AAh DWORD pointer to working SFT
- 2AEh WORD used by INT 21 dispatcher to store caller's BX
- 2B0h WORD used by INT 21 dispatcher to store caller's DS
- 2B2h WORD temporary storage while saving/restoring caller's registers
- 2B4h DWORD pointer to prev call frame (offset 250h) if INT 21 reentered
- also switched to for duration of INT 24
- 2B8h 21 BYTEs FindFirst search data for source file(s) of a rename operation
- (see #01626 at AH=4Eh)
- 2CDh 32 BYTEs directory entry for file being renamed (see #01352 at AH=11h)
- 2EDh 331 BYTEs critical error stack
- 403h 35 BYTEs scratch SFT
- 438h 384 BYTEs disk stack (functions greater than 0Ch, INT 25,INT 26)
- 5B8h 384 BYTEs character I/O stack (functions 01h through 0Ch)
- ---DOS 3.2,3.3x only---
- 738h BYTE device driver lookahead flag (usually printer)
- (see AH=64h"DOS 3.2+")
- 739h BYTE volume change flag
- 73Ah BYTE flag: virtual open
- 73Bh BYTE ???
- Note: the only fields which remain valid BETWEEN calls to INT 21h are those
- in the initial "swap-always" portion of the SDA
- SeeAlso: #01690
- Format of CLOCK$ transfer record:
- Offset Size Description (Table 01688)
- 00h WORD number of days since 1-Jan-1980
- 02h BYTE minutes
- 03h BYTE hours
- 04h BYTE hundredths of second
- 05h BYTE seconds
- --------D-215D07-----------------------------
- INT 21 U - DOS 3.1+ network - GET REDIRECTED PRINTER MODE
- AX = 5D07h
- Return: DL = mode
- 00h redirected output is combined
- 01h redirected output in separate print jobs
- Note: MS-DOS and DR DOS 3.41/5.0 simply push AX on the stack and call
- INT 2F/AX=1125h
- SeeAlso: AX=5D08h,AX=5D09h,INT 2F/AX=1125h
- --------D-215D08-----------------------------
- INT 21 U - DOS 3.1+ network - SET REDIRECTED PRINTER MODE
- AX = 5D08h
- DL = mode
- 00h redirected output is combined
- 01h redirected output placed in separate jobs, start new print job
- now
- Return: nothing
- Note: MS-DOS and DR DOS 3.41/5.0 simply push AX on the stack and call
- INT 2F/AX=1125h
- SeeAlso: AX=5D07h,AX=5D09h,INT 2F/AX=1125h
- --------D-215D09-----------------------------
- INT 21 U - DOS 3.1+ network - FLUSH REDIRECTED PRINTER OUTPUT
- AX = 5D09h
- Return: nothing
- Desc: forces redirected printer output to be printed, and starts a new print
- job
- Notes: MS-DOS and DR DOS 3.41/5.0 simply push AX on the stack and call
- INT 2F/AX=1125h
- this function is also supported by 10Net, which calls it Terminate All
- Spool Jobs, and does not flush if in "combine" mode
- SeeAlso: AX=5D07h,AX=5D08h,INT 2F/AX=1125h
- --------D-215D0A-----------------------------
- INT 21 - DOS 3.1+ - SET EXTENDED ERROR INFORMATION
- AX = 5D0Ah
- DS:DX -> 11-word DOS parameter list (see #01686)
- Return: nothing. next call to AH=59h will return values from fields AX,BX,CX,
- DX,DI, and ES in corresponding registers
- Notes: documented for DOS 5+, but undocumented in earlier versions
- the MS-DOS Programmer's Reference incorrectly states that this call was
- introduced in DOS 4, and fails to mention that the ERROR structure
- passed to this function is a DOS parameter list.
- BUGS: DR DOS 3.41 and 5.0 read the value for ES from the DS field of the
- DPL; fortunately, MS-DOS ignores the DS field, allowing a generic
- routine which sets both DS and ES fields to the same value
- Novell DOS 7 (through at least Update 4) does not save the pointer,
- which is always reported as 0000h:0000h by AH=59h; Update 15 fully
- supports this function
- SeeAlso: AH=59h/BX=0000h
- --------D-215D0B-----------------------------
- INT 21 OU - DOS 4.x only - internal - GET DOS SWAPPABLE DATA AREAS
- AX = 5D0Bh
- Return: CF set on error
- AX = error code (see #01680)
- CF clear if successful
- DS:SI -> swappable data area list (see #01689)
- Notes: copying and restoring the swappable data areas allows DOS to be
- reentered unless it is in a critical section delimited by calls to
- INT 2A/AH=80h and INT 2A/AH=81h,82h
- SHARE and other DOS utilities consult the byte at offset 04h in the
- DOS data segment (see INT 2F/AX=1203h) to determine the SDA format
- in use: 00h = DOS 3.x, 01h = DOS 4.0-6.0, other = error.
- DOS 5+ use the SDA format listed below, but revert back to the DOS 3.x
- call for finding the SDA (see #01687); Novell DOS 7 does not support
- this function, either.
- SeeAlso: AX=5D06h,INT 2A/AH=80h,INT 2A/AH=81h,INT 2A/AH=82h,INT 2F/AX=1203h
- Format of DOS 4.x swappable data area list:
- Offset Size Description (Table 01689)
- 00h WORD count of data areas
- 02h N BYTEs "count" copies of data area record
- Offset Size Description
- 00h DWORD address
- 04h WORD length and type
- bit 15 set if swap always, clear if swap in DOS
- bits 14-0: length in bytes
- SeeAlso: #01690
- Format of DOS 4.0-6.0 swappable data area:
- Offset Size Description (Table 01690)
- -34 BYTE printer echo flag (00h off, FFh active)
- -31 BYTE current switch character (ignored by DOS 5+)
- -30 BYTE current memory allocation strategy (see AH=58h)
- -28 BYTE incremented on each INT 21/AX=5E01h call
- -27 16 BYTEs machine name set by INT 21/AX=5E01h
- -11 5 WORDs zero-terminated list of offsets which need to be patched to
- enable critical-section calls (see INT 2A/AH=80h)
- (all offsets are 0D0Ch, but this list is still present for
- DOS 3.x compatibility)
- -1 BYTE unused padding
- Note: the above data is not actually part of the SDA, and is much more likely
- to change between DOS versions/OEMs than data in the SDA itself
- ---start of actual SDA---
- 00h BYTE critical error flag ("ErrorMode")
- 01h BYTE InDOS flag (count of active INT 21 calls)
- 02h BYTE drive on which current critical error occurred or FFh
- (DR DOS 3.41/5.0 set this to 00h when no critical error)
- 03h BYTE locus of last error
- 04h WORD extended error code of last error
- 06h BYTE suggested action for last error
- 07h BYTE class of last error
- 08h DWORD ES:DI pointer for last error
- 0Ch DWORD current DTA (Disk Transfer Address)
- note: may point into SDA during the DOS EXEC function
- (see AH=4Bh), so programs which swap the SDA must be
- prepared to move the DTA to a private buffer if they
- might be invoked during an EXEC
- 10h WORD current PSP
- 12h WORD stores SP across an INT 23
- 14h WORD return code from last process termination (zerod after reading
- with AH=4Dh)
- 16h BYTE current drive
- 17h BYTE extended break flag
- 18h BYTE flag: code page switching
- 19h BYTE flag: copy of previous byte in case of INT 24 Abort
- ---remainder need only be swapped if in DOS---
- 1Ah WORD value of AX on call to INT 21
- Note: does not contain correct value on functions 00h-0Ch,
- 50h, 51h, 59h, or 62h
- 1Ch WORD PSP segment for sharing/network (0000h = local)
- 1Eh WORD network machine number for sharing/network (0000h = local)
- 20h WORD first usable memory block found when allocating memory
- 22h WORD best usable memory block found when allocating memory
- 24h WORD last usable memory block found when allocating memory
- 26h WORD memory size in paragraphs (used only during initialization)
- 28h WORD last entry checked during directory search
- 2Ah BYTE flag: nonzero if INT 24 Fail
- 2Bh BYTE flags: allowable INT 24 responses (passed to INT 24 in AH)
- 2Ch BYTE flag: do not set directory if nonzero
- 2Dh BYTE flag: program aborted by ^C
- 2Eh BYTE flag: allow embedded blanks in FCB
- may also allow use of "*" wildcard in FCBs
- 2Fh BYTE padding (unused)
- 30h BYTE day of month
- 31h BYTE month
- 32h WORD year - 1980
- 34h WORD number of days since 01jan1980
- 36h BYTE day of week (0 = Sunday)
- 37h BYTE flag: console swapped during read from device
- 38h BYTE flag: safe to call INT 28 if nonzero
- 39h BYTE flag: abort currently in progress, turn INT 24 Abort into Fail
- 3Ah 30 BYTEs device driver request header (see #02597 at INT 2F/AX=0802h) for
- device calls
- 58h DWORD pointer to device driver entry point (used in calling driver)
- 5Ch 22 BYTEs device driver request header for I/O calls
- 72h 14 BYTEs device driver request header for disk status check (also
- includes following eight bytes for some calls)
- 80h DWORD pointer to device I/O buffer
- 84h WORD part of request header at 72h
- 86h WORD part of request header at 72h (0)
- 88h BYTE type of PSP copy (00h=simple for INT 21/AH=26h, FFh=make child)
- 89h DWORD start offset of file region to lock/unlock
- 8Dh DWORD length of file region to lock/unlock
- 91h BYTE padding (unused)
- 92h 3 BYTEs 24-bit user number (see AH=30h)
- 95h BYTE OEM number (see #01394 at AH=30h)
- 96h 6 BYTEs CLOCK$ transfer record (see #01688 at AX=5D06h)
- 9Ch BYTE device I/O buffer for single-byte I/O functions
- 9Dh BYTE padding
- 9Eh 128 BYTEs buffer for filename
- 11Eh 128 BYTEs buffer for filename (rename destination name)
- 19Eh 21 BYTEs findfirst/findnext search data block (see #01626 at AH=4Eh)
- 1B3h 32 BYTEs directory entry for found file (see #01394 at AH=11h)
- 1D3h 88 BYTEs copy of current directory structure for drive being accessed
- 22Bh 11 BYTEs FCB-format filename for device name comparison
- 236h BYTE terminating NUL for above filename
- 237h 11 BYTEs wildcard destination specification for rename (FCB format)
- 242h BYTE terminating NUL for above filespec
- 243h BYTE padding???
- 244h WORD destination starting sector (cluster???)
- 246h 5 BYTEs extra space to allow a directory entry to be stored starting
- at offset 22Bh
- 24Bh BYTE extended FCB file attributes
- 24Ch BYTE type of FCB (00h regular, FFh extended)
- 24Dh BYTE directory search attributes
- 24Eh BYTE file open/access mode
- 24Fh BYTE flag: nonzero if file was deleted
- 250h BYTE flag: device name found on rename, or file not found
- 251h BYTE flag: splice file name and directory name together
- 252h BYTE flag indicating how DOS function was invoked
- (00h = direct INT 20/INT 21, FFh = server call AX=5D00h)
- 253h BYTE sector position within cluster
- 254h BYTE flag: translating sector/cluster
- 255h BYTE flag: 00h if read, 01h if write
- 256h BYTE current working drive number
- 257h BYTE cluster factor
- 258h BYTE "sda_CLUSSPLIT" flag: cluster split between two FAT sectors
- 259h BYTE line edit (AH=0Ah) insert mode flag (nonzero = on)
- 25Ah BYTE canonicalized filename referred to existing file/dir if FFh
- 25Bh BYTE volume ID flag
- 25Ch BYTE type of process termination (00h-03h) (see AH=4Dh)
- 25Dh BYTE unused (padding for alignment)
- 25Eh BYTE file create flag (00h = no, search only)
- 25Fh BYTE value for deleted file's first byte: 00h to delete all, else E5
- 260h DWORD pointer to Drive Parameter Block for critical error invocation
- 264h DWORD pointer to stack frame containing user registers on INT 21
- 268h WORD stores SP across INT 24
- 26Ah DWORD pointer to DOS Drive Parameter Block for ???
- 26Eh WORD segment of disk buffer
- 270h DWORD saving partial cluster number
- 274h WORD "sda_PREREAD" 00h if preread, 01h if optional
- 276h WORD temporary used in allocating disk space
- 278h BYTE Media ID byte returned by AH=1Bh,1Ch
- 279h BYTE unused
- 27Ah DWORD pointer to device header if filename is character device
- 27Eh DWORD pointer to current SFT
- 282h DWORD pointer to current directory structure for drive being accessed
- 286h DWORD pointer to caller's FCB
- 28Ah WORD SFT index to which file being opened will refer
- 28Ch WORD temporary storage for file handle
- 28Eh DWORD pointer to JFT entry (for file being opened) in process handle
- table (see #01378 at AH=26h)
- 292h WORD "sda_WFP_START" offset in DOS DS of first filename argument
- 294h WORD "sda_REN_WFP" offset in DOS DS of second filename argument
- 296h WORD offset of last component in pathname or FFFFh
- 298h WORD offset of transfer address to add
- 29Ah WORD last relative cluster within file being accessed
- 29Ch WORD temp: absolute cluster number being accessed
- 29Eh DWORD directory sector number
- 2A2h WORD directory cluster number
- 2A4h DWORD current relative sector number within file
- 2A8h DWORD current sector number (number of previously written sectors)
- 2ACh WORD current byte offset within sector
- 2AEh DWORD current offset in file
- 2B2h WORD number of bytes in first sector
- 2B4h WORD bytes in partial last sector
- 2B6h WORD number of whole sectors
- 2B8h WORD free file cluster entry
- 2BAh WORD last file cluster entry
- 2BCh WORD next file cluster number
- 2BEh DWORD number of bytes appended to file
- 2C2h DWORD pointer to current work disk buffer
- 2C6h DWORD pointer to working SFT
- 2CAh WORD used by INT 21 dispatcher to store caller's BX
- 2CCh WORD used by INT 21 dispatcher to store caller's DS
- 2CEh WORD temporary storage while saving/restoring caller's registers
- 2D0h DWORD pointer to prev call frame (offset 264h) if INT 21 reentered
- also switched to for duration of INT 24
- 2D4h WORD open mode/action for INT 21/AX=6C00h
- 2D6h BYTE extended open conditional flag
- set to 00h by INT 21h dispatcher, 02h when a read is
- performed, and 01h or 03h by INT 21/AX=6C00h
- 2D7h WORD extended open I/O mode
- 2D9h DWORD stored ES:DI for AX=6C00h
- 2DDh WORD extended file open action code (see #01770 at AX=6C00h)
- 2DFh WORD extended file open attributes (see #01769 at AX=6C00h)
- 2E1h WORD extended file open file mode (see AX=6C00h)
- 2E3h DWORD pointer to filename to open (see AX=6C00h)
- 2E7h WORD high word of 32-bit sector number, or temp data buffer size
- from disk buffer
- 2E9h WORD "sda_OffsetMagicPatch"
- 2EBh BYTE disk full on >32M partition when set to 01h
- 2ECh WORD stores DS during call to [List-of-Lists + 37h]
- 2EEh WORD temporary storage (various uses)
- 2F0h BYTE storage for drive error
- 2F1h WORD DOS 3.4 (European MS-DOS 4.00) bit flags
- 2F3h DWORD pointer to user-supplied filename
- 2F7h DWORD pointer to user-supplied rename destination filename
- 2FBh WORD stores SS during call to [List-of-Lists + 37h] and INT 25,26
- 2FDh WORD stores SP during call to [List-of-Lists + 37h] and INT 25,26
- 2FFh BYTE flag, nonzero if stack switched in calling [List-of-Lists+37h]
- 300h 21 BYTEs FindFirst search data for source file(s) of a rename operation
- (see #01626 at AH=4Eh)
- 315h 32 BYTEs directory entry for file being renamed (see #01352 at AH=11h)
- 335h 331 BYTEs critical error stack
- 480h 384 BYTEs disk stack (functions greater than 0Ch, INT 25,INT 26)
- 600h 384 BYTEs character I/O stack (functions 01h through 0Ch)
- 780h BYTE device driver lookahead flag (usually printer)
- (see AH=64h"DOS 3.2+")
- 781h BYTE volume change flag
- 782h BYTE flag: virtual file open
- 783h BYTE fastseek drive
- 784h WORD fastseek first cluster number
- 786h WORD fastseek logical cluster number
- 788h WORD fastseek returned logical cluster number
- 78Ah WORD temporary location of DOS@SYSINIT
- ---MSDOS 7.1+ (FAT32)---
- 78Ch 47 BYTEs ???
- 7BBh BYTE flag: absolute disk read/write type
- 00h = INT 25/INT 26
- 01h = INT 21/AX=7305h
- 7BCh WORD high word of directory cluster number at offset 2A2h
- 7BEh WORD high word of cluster number at offset 29Ch
- 7C0h WORD high word of next file cluster number at offset 2BCh
- 7C2h WORD high word of last relative cluster number at offset 29Ah
- 7C4h WORD high word of temp at offset 276h
- 7C6h WORD high word of offset 244h
- 7C8h WORD high word of EBX
- 7CAh WORD high word of EDX used by "PACK"
- 7CCh WORD high word of EDI used by "UNPACK"
- 7CEh WORD high word of EBX used by "SETDIRSRCH"
- 7D0h WORD high word of ECX used by "FREECLUSTER"
- 7D2h WORD high word of EDI used by "GETEOF"
- 7D4h 3 WORDs ???
- Note: the only fields which remain valid BETWEEN calls to INT 21h are those
- in the initial "swap-always" portion of the SDA
- SeeAlso: #01687,#01689
- --------D-215E00-----------------------------
- INT 21 - DOS 3.1+ network - GET MACHINE NAME
- AX = 5E00h
- DS:DX -> 16-byte buffer for ASCII machine name
- Return: CF clear if successful
- CH = validity
- 00h name invalid
- nonzero valid
- CL = NetBIOS number for machine name
- DS:DX buffer filled with blank-paded name
- CF set on error
- AX = error code (01h) (see #01680 at AH=59h)
- Note: supported by OS/2 v1.3+ compatibility box, PC-NFS
- SeeAlso: AX=5E01h
- --------N-215E00-----------------------------
- INT 21 - 10NET v5.0 - GET MACHINE NAME
- AX = 5E00h
- Return: CL = redirector's NetBIOS name number
- ES:DI -> network node ID
- SeeAlso: AX=5E01h"10NET"
- --------D-215E01CH00-------------------------
- INT 21 - DOS 3.1+ network - SET MACHINE NAME
- AX = 5E01h
- CH = 00h undefine name (make it invalid)
- <> 0 define name
- CL = name number
- DS:DX -> 15-character blank-padded ASCIZ name
- SeeAlso: AX=5E00h
- --------N-215E01-----------------------------
- INT 21 - 10NET v5.0 - GET LOCAL 10NET CONFIGURATION TABLE
- AX = 5E01h
- CX = length of buffer
- DS:DX -> buffer for 10Net configuration table (see #01691)
- Return: DS:DX buffer filled
- SeeAlso: AX=5E00h"10NET",INT 6F/AH=02h,INT 6F/AH=03h
- Format of 10Net Configuration Table:
- Offset Size Description (Table 01691)
- 00h 8 BYTEs user name
- 08h 15 BYTEs node ID
- 17h 3 BYTEs unique portion of Ethernet address
- 1Ah BYTE Who group number
- 1Bh WORD services mask (see #01693)
- 1Dh DWORD serial number
- 21h BYTE maximum concurrent users with same serial number allowed on net
- 22h BYTE chat mask (see #01694)
- 23h BYTE internal system bits (see #01695)
- 24h 9 BYTEs version number in format MM.mm.xxx
- 2Dh BYTE flag: 01h if machine is a PS/2
- 2Eh BYTE flag: 03h if 80386
- 2Fh BYTE spool termination mode: 01h concatenate, 02h truncate
- (see AX=5D09h)
- 30h WORD autospool timeout in clock ticks
- 32h WORD monitor timeout in clock ticks
- 34h WORD unused
- 36h WORD chat timeout in clock ticks
- 38h WORD netBIOS session timeout in half-seconds
- 3Ah WORD datagram send timeout in seconds
- 3Ch WORD keyboard value for initiating chat mode
- 3Eh WORD Who timeout in clock ticks
- 40h BYTE flag: 01h if server should process rom NetBIOS Post return
- 41h BYTE flag: 01h if FCBs should be recycled
- 42h 3 BYTEs signature "DBG"
- 45h BYTE last interrupt (21h or 6Fh)
- 46h BYTE last INT 21 AH value
- 47h BYTE last INT 6F AH value
- 48h WORD last item posted
- 4Ah WORD last item free-posted
- 4Ch WORD last item handled by server
- 4Eh WORD last redirector send NCB
- 50h WORD last redirector receive NCB
- 52h 4 BYTEs signature "TABL"
- 56h WORD offset of datagram buffer table header (see #01692)
- 58h WORD offset of chat buffer table header (see #01692)
- 5Ah WORD offset of Raw buffer table header (see #01692)
- 5Ch WORD offset of Workstation buffer table header (see #01692)
- 5Eh WORD offset of server receive-any table header (see #01692)
- 60h WORD offset of Tiny buffer table header (see #01692)
- 62h WORD offset of zero-length buffer table (NCBs) (see #01692)
- 64h WORD offset of Rdr (Redirector Mount) table header (see #01692)
- 66h WORD offset of Ntab (Redirector Session) table header (see #01692)
- 68h WORD offset of FCB table header (see #01692)
- 6Ah WORD offset of user file handle table header (see #01692)
- 6Ch WORD offset of workstation printer RDR extension table header
- 6Eh WORD offset of server shared device table header (see #01692)
- 70h WORD offset of server connection table header (see #01692)
- 72h WORD offset of server login table header (see #01692)
- 74h WORD offset of server file table header (see #01692)
- 76h WORD offset of server shared file table header (see #01692)
- 78h WORD offset of server record lock table header (see #01692)
- 7Ah WORD offset of remote printer claim table header (see #01692)
- 7Ch WORD offset of remote printer device table header (see #01692)
- 7Eh WORD offset of print server mount table header (see #01692)
- 80h WORD offset of print server sessions table header (see #01692)
- 82h WORD offset of print server print job structure table header
- 84h WORD offset of print server pooled device table header (see #01692)
- 86h WORD size of workstation buffer
- 88h WORD size of server receive-any buffer
- 8Ah WORD size of server raw I/O buffer
- 8Ch 6 BYTEs reserved
- 92h DWORD pointer to profile pathname
- 96h BYTE datagram retry count
- 97h BYTE NetBIOS LAN adapter number
- 98h 6 BYTEs physical Ethernet address
- 9Eh BYTE NetBIOS server name number
- 9Fh BYTE NetBIOS redirector name number
- A0h BYTE 10Net interrupt number
- A1h BYTE flag: chat is loaded
- A2h BYTE flag: INT 6F APIs permanently loaded
- A3h BYTE flag: file security present
- A4h WORD reserved
- A6h BYTE fixed mount bitmask for drives A:-H:
- A7h BYTE reserved
- A8h WORD 10Net system flags (see #01696)
- AAh BYTE monitor flags (see #01697)
- ABh 5 BYTEs reserved
- B0h WORD offset of monitor timer block
- B2h WORD offset of server timer block
- B4h WORD offset of chat timer block
- B6h WORD timer chain
- B8h 4 BYTEs signature "TALS"
- BCh WORD number of 10Net sends
- BEh WORD number of 10Net receives
- C0h WORD number of no-buffer conditions
- C2h WORD number of dropped posted messages
- C4h WORD number of server NCB errors
- C6h WORD number of redirector NCB errors
- C8h WORD number of datagram send/receive errors
- CAh WORD number of dropped Whos
- CCh WORD number of dropped submits
- CEh WORD number of session aborts
- D0h BYTE number of NetBIOS interface-busy errors
- D1h BYTE last NetBIOS bad post command
- D2h BYTE last NetBIOS bad redirector command
- D3h BYTE do send datagram send/receive error command
- D4h DWORD -> DOS system parameter table
- D8h WORD number of DOS physical drives
- DAh WORD offset of DOS PSP field in DOS data segment
- DCh WORD offset of in-DOS flag in DOS data segment
- DEh WORD DOS data segment
- E0h WORD offset of DOS SFT in DOS data segment
- E2h WORD offset of number-of-physical-units field in DOS data segment
- E4h WORD 10Net code segment
- E6h WORD 10Net data segment
- E8h WORD 10Net common server segment
- EAh WORD 10Net file server segment
- ECh WORD 10Net print server segment
- EEh WORD 10Net remote printer segment
- Note: documentation lists field at offset D0h as a WORD, but all following
- offsets are as though it were a BYTE; if it is indeed a WORD, all
- offsets after D0h must be increased by one byte
- Format of 10Net Table Header:
- Offset Size Description (Table 01692)
- -16 4 BYTEs table identifier
- -12 WORD peak number of tables allocated
- -10 WORD number of tables currently in use
- -8 WORD total number of tables
- -6 WORD size of each table
- -4 WORD offset of first allocated table
- -2 WORD offset of first free table
- Bitfields for 10NET services mask:
- Bit(s) Description (Table 01693)
- 0 workstation
- 1 file server
- 2 print queue server
- 3 de-spool server
- Bitfields for 10NET chat mask:
- Bit(s) Description (Table 01694)
- 0 chat permitted
- 1 bell enabled
- 2 chat keyboard initiated
- 3 in INT 16 handler
- 4 in Get Input
- 5 display has timed out
- 6 chat is idle
- Bitfields for 10NET internal system bits:
- Bit(s) Description (Table 01695)
- 0 submit permitted
- 1 submit initiated
- 2 submit executing
- 3 internal client call/chat/spool/autospool
- 4 in spool termination
- 5 print permitted
- 6 waiting for keyboard input
- Bitfields for 10NET System Flags:
- Bit(s) Description (Table 01696)
- 0 in NetBIOS
- 1 processing INT 28
- 2 is server
- 3 in net user-DOS function
- 4 in DOS user-DOS function
- 5 in net for user non-DOS function
- 6 in server DOS function
- 7 in server non-DOS function
- 8 in terminate
- 10 in user on server request
- 13 in DOS for user on server
- 14 disable critical error handler
- Bitfields for Monitor Flags:
- Bit(s) Description (Table 01697)
- 0 waiting for monitor response
- 4 in monitor get-input routine
- 5 monitor display timeout
- 6 sensing for escape key
- --------D-215E02-----------------------------
- INT 21 - DOS 3.1+ network - SET NETWORK PRINTER SETUP STRING
- AX = 5E02h
- BX = redirection list index (see AX=5F02h)
- CX = length of setup string
- DS:SI -> setup string
- Return: CF clear if successful
- CF set on error
- AX = error code (01h) (see #01680 at AH=59h/BX=0000h)
- Note: also supported by 10NET v5.0
- SeeAlso: AX=5E03h,INT 2F/AX=111Fh
- --------D-215E03-----------------------------
- INT 21 - DOS 3.1+ network - GET NETWORK PRINTER SETUP STRING
- AX = 5E03h
- BX = redirection list index (see AX=5F02h)
- ES:DI -> 64-byte buffer for setup string
- Return: CF clear if successful
- CX = length of setup string
- ES:DI buffer filled
- CF set on error
- AX = error code (01h) (see #01680 at AH=59h/BX=0000h)
- Note: also supported by 10NET v5.0, but 10NET is documented as using DS:SI
- instead of ES:DI
- SeeAlso: AX=5E02h,INT 2F/AX=111Fh
- --------D-215E04-----------------------------
- INT 21 - DOS 3.1+ network - SET PRINTER MODE
- AX = 5E04h
- BX = redirection list index (see AX=5F02h)
- DX = mode
- bit 0: set if binary, clear if text (tabs expanded to blanks)
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- Notes: calls INT 2F/AX=111Fh with 5E04h on stack
- supported by DR DOS 3.41+
- SeeAlso: AX=5E05h"DOS",INT 2F/AX=111Fh
- --------N-215E04-----------------------------
- INT 21 - 10NET v5.0 - INITIATE PRINT JOB
- AX = 5E04h
- BX = zero-based redirection list index (see AX=5F02h)
- DS:DX -> extended workstation printer setup structure (see #01698)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- SeeAlso: AX=5E05h"10NET",AX=5E06h"10NET"
- Format of 10NET extended workstation printer setup structure:
- Offset Size Description (Table 01698)
- 00h BYTE notification flags (see #01699)
- 01h BYTE job control mask (see #01700)
- 02h WORD days to retain file
- 04h WORD test print length
- 06h BYTE number of copies to print
- 07h BYTE compression algorithm
- 08h BYTE tab width (00h = don't expand)
- 09h BYTE initiation type (00h normal, 01h non-spooled)
- 0Ah 38 BYTEs job start operation notification instructions
- 30h 32 BYTEs comment for job
- 50h 64 BYTEs output filename or non-spooled file
- Bitfields for 10NET notification flags:
- Bit(s) Description (Table 01699)
- 0 user at print start
- 1 operator at start, with reply
- 2 user at print completion
- 3 operator at completion, with reply
- 4 user on queue switch
- 5 operator on queue switch, with reply
- 6 user on print error
- Bitfields for 10NET job control mask:
- Bit(s) Description (Table 01700)
- 0 print banner page
- 1 eject page at end of job
- 2 mark as "held" (queue but don't print)
- 3 rush job (queue at top)
- 4 overwrite file with zeros before deletion
- 5 hyperspool if possible
- --------D-215E05-----------------------------
- INT 21 - DOS 3.1+ network - GET PRINTER MODE
- AX = 5E05h
- BX = redirection list index (see AX=5F02h)
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- DX = printer mode (see AX=5E04h)
- Notes: calls INT 2F/AX=111Fh with 5E05h on stack
- supported by DR DOS 3.41+
- SeeAlso: AX=5E04h"DOS",INT 2F/AX=111Fh
- --------N-215E05-----------------------------
- INT 21 - 10NET v5.0 - TERMINATE PRINT JOB
- AX = 5E05h
- BX = zero-based redirection list index (see AX=5F02h)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- Note: this call resets the spool termination mode to "truncate"
- (see AX=5D08h)
- SeeAlso: AX=5E04h"10NET",AX=5E06h
- --------N-215E06-----------------------------
- INT 21 - 10NET v5.0 - GET/SET 10NET WORKSTATION PRINTER SETUP STRUCTURE
- AX = 5E06h
- BX = zero-based redirection list index (see AX=5F02h)
- CX = operation (06h set, 07h get)
- DS:DX -> buffer for setup structure (same as first nine bytes of
- workstation printer setup) (see #01698)
- Return: CF clear if successful
- DS:DX buffer updated on get
- CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- SeeAlso: AX=5E04h"10NET",AX=5E05h"10NET"
- --------!---Section--------------------------
- Interrupt List, part 8 of 18
- Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
- --------D-215F00-----------------------------
- INT 21 - DOS 3.1+ network - GET REDIRECTION MODE
- AX = 5F00h
- BL = redirection type
- 03h printer
- 04h disk drive
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- BH = redirection state
- 00h off
- 01h on
- Note: calls INT 2F/AX=111Eh with AX on top of the stack
- SeeAlso: AX=5F01h,INT 2F/AX=111Eh
- --------D-215F01-----------------------------
- INT 21 - DOS 3.1+ network - SET REDIRECTION MODE
- AX = 5F01h
- BL = redirection type
- 03h printer
- 04h disk drive
- BH = redirection state
- 00h off
- 01h on
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- Notes: when redirection is off, the local device (if any) rather than the
- remote device is used
- calls INT 2F/AX=111Eh with AX on top of the stack
- SeeAlso: AX=5F00h,INT 2F/AX=111Eh,INT 60/AX=0002h
- --------D-215F02-----------------------------
- INT 21 - DOS 3.1+ network - GET REDIRECTION LIST ENTRY
- AX = 5F02h
- BX = zero-based redirection list index
- CX = driver signature
- 0000h LANtastic
- 4E57h ('NW') NetWare
- DS:SI -> 16-byte buffer for ASCIZ local device name or drive letter
- followed by colon
- ES:DI -> 128-byte buffer for ASCIZ network name
- Return: CF clear if successful
- BH = device status
- 00h valid
- 01h invalid
- 02h valid (connected from inside Windows for Workgroups v3.11)
- BL = device type
- 03h printer
- 04h disk drive
- CX = user data previously set with AX=5F03h
- DS:SI and ES:DI buffers filled
- DX,BP destroyed
- CF set on error
- AX = error code (01h,12h) (see #01680 at AH=59h/BX=0000h)
- Notes: this function is passed through to INT 2F/AX=111Eh by the DOS kernel
- error code 12h is returned if BX is greater than the size of the list
- also supported by Banyan VINES, PC-NFS, LANtastic, and 10NET
- supported by LapLink RemoteAccess but returns the local drive letter;
- the remote drive letter can be obtained with INT 2F/AX=Cxxxh
- (see INT 2F/AX=C000h"LapLink")
- the returned device name may or may not include a colon, depending on
- the network software
- SeeAlso: AX=5F03h,AX=5F46h,INT 2F/AX=111Eh,INT 2F/AX=C000h"LapLink"
- --------D-215F03-----------------------------
- INT 21 - DOS 3.1+ network - REDIRECT DEVICE
- AX = 5F03h
- BL = device type
- 03h printer
- 04h disk drive
- CX = user data to save
- 0000h for LANtastic
- 4E57h ("NW") for NetWare 4.0 requester
- DS:SI -> ASCIZ local device name (16 bytes max)
- ES:DI -> ASCIZ network name + ASCIZ password (128 bytes max total)
- Return: CF clear if successful
- CF set on error
- AX = error code (01h,03h,05h,08h,0Fh,12h) (see #01680 at AH=59h)
- Notes: if device type is disk drive, DS:SI must point at either a null string
- or a string consisting the drive letter followed by a colon; if a
- null string, the network attempts to access the destination without
- redirecting a local drive
- the DOS kernel calls INT 2F/AX=111Eh with AX on top of the stack
- also supported by Banyan VINES, LANtastic, and 10NET
- SeeAlso: AX=5F02h,AX=5F04h,INT 2F/AX=111Eh,INT 60/AX=0002h
- --------D-215F04-----------------------------
- INT 21 - DOS 3.1+ network - CANCEL REDIRECTION
- AX = 5F04h
- DS:SI -> ASCIZ local device name or path
- CX = 4E57h ("NW") for NetWare 4.0 requester
- Return: CF clear if successful
- CF set on error
- AX = error code (01h,03h,05h,08h,0Fh,12h) (see #01680 at AH=59h)
- Notes: the DS:SI string must be either a local device name, a drive letter
- followed by a colon, or a network directory beginning with two
- backslashes
- the DOS kernel calls INT 2F/AX=111Eh with AX on top of the stack
- also supported by Banyan VINES, LANtastic, and 10NET
- for NetWare, if only a server name is specified (i.e. "\\SERVER"),
- the connection to that server will be closed
- SeeAlso: AX=5F03h,INT 2F/AX=111Eh,INT 60/AX=0003h
- --------D-215F05-----------------------------
- INT 21 - DOS 4.0+ network - GET EXTENDED REDIRECTION LIST ENTRY
- AX = 5F05h
- BX = redirection list index
- DS:SI -> buffer for ASCIZ source device name
- ES:DI -> buffer for destination ASCIZ network path
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- AX = server's network process ID handle (10NET)
- BH = device status flag (bit 0 clear if valid)
- BL = device type (03h if printer, 04h if drive)
- CX = stored parameter value (user data) from AX=5F03h
- BP = NETBIOS local session number
- DS:SI buffer filled
- ES:DI buffer filled
- Notes: the local session number allows sharing the redirector's session number
- if an error is caused on the NETBIOS LSN, the redirector may be unable
- to correctly recover from errors
- the DOS kernel calls INT 2F/AX=111Eh with AX on top of the stack
- supported by DR DOS 5.0
- also supported by 10NET v5.0
- SeeAlso: AX=5F06h"Network",INT 2F/AX=111Eh
- --------O-215F05-----------------------------
- INT 21 - STARLITE architecture - MAP LOCAL DRIVE LETTER TO REMOTE FILE SYSTEM
- AX = 5F05h
- DL = drive number (0=A:)
- DS:SI -> ASCIZ name of the object to map the drive to
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- SeeAlso: AX=5F06h"STARLITE",INT 60/AX=0002h
- --------N-215F06-----------------------------
- INT 21 U - Network - GET FULL REDIRECTION LIST
- AX = 5F06h
- ???
- Return: ???
- Notes: similar to AX=5F02h and AX=5F05h, but also returns redirections
- excluded from those calls for various reasons
- calls INT 2F/AX=111Eh with AX on top of the stack
- SeeAlso: AX=5F05h"DOS",INT 2F/AX=111Eh
- --------O-215F06-----------------------------
- INT 21 - STARLITE architecture - UNMAP DRIVE LETTER
- AX = 5F06h
- DL = drive to be unmapped (0=A:)
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- SeeAlso: AX=5F05h"STARLITE",INT 60/AX=0003h
- --------D-215F07-----------------------------
- INT 21 - DOS 5+ - ENABLE DRIVE
- AX = 5F07h
- DL = drive number (0=A:)
- Return: CF clear if successful
- CF set on error
- AX = error code (0Fh) (see #01680 at AH=59h/BX=0000h)
- Notes: simply sets the "valid" bit in the drive's CDS
- this function is not supported by Novell DOS 7 through at least
- Update 4, but support was added by Update 13
- SeeAlso: AH=52h,AX=5F08h"DOS"
- --------O-215F07-----------------------------
- INT 21 - STARLITE architecture - MAKE NAMED OBJECT AVAILABLE ON NETWORK
- AX = 5F07h
- DS:SI -> ASCIZ name of object to offer to network
- ES:DI -> ASCIZ name under which object will be known on the network
- MUST begin with three slashes
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- SeeAlso: AX=5F08h"STARLITE"
- --------D-215F08-----------------------------
- INT 21 - DOS 5+ - DISABLE DRIVE
- AX = 5F08h
- DL = drive number (0=A:)
- Return: CF clear if successful
- CF set on error
- AX = error code (0Fh) (see #01680 at AH=59h/BX=0000h)
- Notes: simply clears the "valid" bit in the drive's CDS
- this function is not supported by Novell DOS 7 through at least
- Update 4, but support was added by Update 13
- SeeAlso: AH=52h,AX=5F07h"DOS"
- --------O-215F08-----------------------------
- INT 21 - STARLITE architecture - REMOVE GLOBAL NETWORK NAME OF OBJECT
- AX = 5F08h
- DS:SI -> ASCIZ network name (not local name) of object to unshare
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- SeeAlso: AX=5F07h"STARLITE"
- --------O-215F09-----------------------------
- INT 21 - STARLITE architecture - BIND TO NETWORK DEVICE
- AX = 5F09h
- DS:DX -> ASCIZ name of the device driver to attach to
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- Note: the STARLITE distributed file system can attach to multiple networks
- simultaneously
- SeeAlso: AX=5F0Ah
- --------O-215F0A-----------------------------
- INT 21 - STARLITE architecture - DETACH FROM NETWORK DEVICE
- AX = 5F0Ah
- DS:DX -> ASCIZ name of device driver to detach from
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- SeeAlso: AX=5F09h
- --------N-215F30-----------------------------
- INT 21 U - LAN Manager Enhanced DOS - GET REDIRECTOR VERSION
- AX = 5F30h
- Return: AX = version (AH=major,AL=minor)
- --------N-215F32-----------------------------
- INT 21 u - Named Pipes - LOCAL DosQNmPipeInfo
- AX = 5F32h
- BX = handle
- CX = size of _PIPEINFO structure
- DX = level (must be 0001h)
- DS:SI -> _PIPEINFO structure (see #01701)
- Return: CF clear if successful
- _PIPEINFO structure filled in
- CF set on error
- AX = error code
- Note: this function was introduced by LAN Manager but is also supported by
- the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
- Machines, and others
- SeeAlso: AX=5F33h,AX=5F34h
- Format of Named Pipes _PIPEINFO structure:
- Offset Size Description (Table 01701)
- 00h WORD size of outgoing buffer
- 02h WORD size of incoming buffer
- 04h BYTE maximum number of instances allowed
- 05h BYTE current number of instances
- 06h BYTE length of the name (including terminating NUL)
- 07h N BYTEs name
- --------N-215F33-----------------------------
- INT 21 u - Named Pipes - LOCAL DosQNmPHandState
- AX = 5F33h
- BX = handle
- Return: CF clear if successful
- AH = pipe mode bit mask (see #01702)
- AL = maximum number of instances
- CF set on error
- AX = error code
- Note: this function was introduced by LAN Manager but is also supported by
- the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
- Machines, and others
- SeeAlso: AX=5F32h,AX=5F34h
- Bitfields for Named Pipes pipe mode:
- Bit(s) Description (Table 01702)
- 7 set if nonblocking, clear if blocking
- 6 set if server end, clear if client end
- 2 set if write in message mode, clear if write in byte mode
- 0 set if read in message mode, clear if read in byte mode
- --------N-215F34-----------------------------
- INT 21 u - Named Pipes - LOCAL DosSetNmPHandState
- AX = 5F34h
- BX = handle
- CX = pipe mode bit mask
- bit 15: set if nonblocking, clear if blocking
- bit 8: set if read in message mode, clear if read in byte mode
- Return: CF clear if successful
- CF set if error
- AX = error code
- Note: this function was introduced by LAN Manager but is also supported by
- the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
- Machines, and others
- SeeAlso: AX=5F32h,AX=5F33h,AX=5F36h
- --------N-215F35-----------------------------
- INT 21 u - Named Pipes - LOCAL DosPeekNmPipe
- AX = 5F35h
- BX = handle
- CX = buffer length
- DS:SI -> buffer
- Return: CF set on error
- AX = error code
- CF clear if successful (LAN Manager v1-v2)
- AX = 0000h if successful (LAN Manager 3.x)
- ---if successful---
- CX = bytes read
- SI = bytes left in the pipe
- DX = bytes left in the current message
- AX = pipe status (v1-v2) (see #01703)
- DI = pipe status (v3.x)
- Note: this function was introduced by LAN Manager but is also supported by
- the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
- Machines, and others
- SeeAlso: AX=5F38h,AX=5F39h,AX=5F51h
- (Table 01703)
- Values for pipe status:
- 0001h disconnected
- 0002h listening
- 0003h connected
- 0004h closing
- --------N-215F36-----------------------------
- INT 21 u - Named Pipes - LOCAL DosTransactNmPipe
- AX = 5F36h
- BX = handle
- CX = in buffer length
- DS:SI -> in buffer
- DX = out buffer length
- ES:DI -> out buffer
- Return: CF clear if successful
- CX = bytes read
- CF set on error
- AX = error code
- Note: this function was introduced by LAN Manager but is also supported by
- the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
- Machines, and others
- SeeAlso: AX=5F34h,AX=5F37h
- --------N-215F37-----------------------------
- INT 21 u - Named Pipes - DosCallNmPipe
- AX = 5F37h
- DS:SI -> DosCallNmPipe stack frame (see #01704)
- Return: CF clear if successful
- CX = bytes read
- CF set on error
- AX = error code
- Note: this function was introduced by LAN Manager but is also supported by
- the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
- Machines, and others
- SeeAlso: AX=5F36h,AX=5F38h
- Format of Named Pipes DosCallNmPipe stack frame:
- Offset Size Description (Table 01704)
- 00h DWORD timeout
- 04h DWORD -> bytes read WORD (not used!)
- 08h WORD out buffer length
- 0Ah DWORD address of out buffer
- 0Eh WORD in buffer length
- 10h DWORD address of in buffer
- 14h DWORD address of pipe name
- --------N-215F38-----------------------------
- INT 21 u - Named Pipes - LOCAL DosWaitNmPipe - AWAIT AVAIL. OF PIPE INSTANCE
- AX = 5F38h
- DS:DX -> pipe name
- BX:CX = timeout value
- Return: CF clear if successful
- CF set if error
- AX = error code
- Notes: when a client gets a return code of ERROR_PIPE_BUSY on attempting to
- open a pipe, it should issue this call to wait until the pipe
- instance becomes available again; on return from this call, the
- client must attempt to open the pipe once again
- this function was introduced by LAN Manager but is also supported by
- the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
- Machines, and others
- SeeAlso: AX=5F37h,AX=5F39h
- --------N-215F39-----------------------------
- INT 21 U - Named Pipes - LOCAL DosRawReadNmPipe
- AX = 5F39h
- BX = handle
- CX = buffer length
- DS:DX -> buffer
- Return: CF clear if successful
- CX = bytes read
- CF set if error
- AX = error code
- Notes: this function was introduced by LAN Manager but is also supported by
- the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
- Machines, and others
- not documented in the LAN Manager Toolkit
- SeeAlso: AX=5F35h,AX=5F3Ah,INT 2F/AX=1186h
- --------N-215F3A-----------------------------
- INT 21 U - Named Pipes - LOCAL DosRawWriteNmPipe
- AX = 5F3Ah
- BX = handle
- CX = buffer length
- DS:DX -> buffer
- Return: CF clear if successful
- CX = bytes written
- CF set if error
- AX = error code
- Notes: this function was introduced by LAN Manager but is also supported by
- the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
- Machines, and others
- not documented in the LAN Manager Toolkit
- SeeAlso: AX=5F39h,AX=5F3Bh,INT 2F/AX=118Fh
- --------N-215F3B-----------------------------
- INT 21 u - LAN Manager Enhanced DOS - NetHandleSetInfo
- AX = 5F3Bh
- BX = handle
- CX = handle_info_1 structure length or sizeof DWORD
- DI = parameter number to set
- 0000h all
- 0001h number of milliseconds
- 0002h number of characters
- DS:DX -> handle_info_1 structure (DI=0000h) (see #01705)
- or DWORD (DI=0001h or 0002h)
- SI = level of information (0001h)
- Return: CF clear if successful
- CX = total bytes available
- CF set if error
- AX = error code
- SeeAlso: AX=5F3Ch
- Format of LAN Manager handle_info_1 structure:
- Offset Size Description (Table 01705)
- 00h DWORD number of milliseconds which workstation collects data before
- it sends the data to the named pipe
- 04h DWORD number of characters which workstation collects before it
- sends the data to the named pipe
- --------N-215F3C-----------------------------
- INT 21 u - LAN Manager Enhanced DOS - NetHandleGetInfo
- AX = 5F3Ch
- BX = handle
- CX = length of handle_info_1 structure
- DS:DX -> handle_info_1 structure (see #01705)
- SI = level of information (must be 0001h)
- Return: CF clear if successful
- CX = total bytes available
- CF set if error
- AX = error code
- SeeAlso: AX=5F3Bh
- --------N-215F3D-----------------------------
- INT 21 U - LAN Manager Enhanced DOS - WRITE MAILSLOT???
- AX = 5F3Dh
- ???
- Return: ???
- --------N-215F3E-----------------------------
- INT 21 u - LAN Manager Enhanced DOS - LOCAL NetSpecialSMB
- AX = 5F3Eh
- ???
- Return: ???
- Note: This function is not documented anywhere in the LAN Manager 2.x Toolkit
- but was documented in LAN Manager 1.x manuals.
- --------N-215F3F-----------------------------
- INT 21 U - LAN Manager Enhanced DOS - REMOTE API CALL
- AX = 5F3Fh
- CX = api number
- ES:DI -> data descriptor
- ES:SI -> parameter descriptor
- ES:DX -> auxiliary descriptor (if DX <> 0)
- ???
- Return: ???
- --------N-215F40-----------------------------
- INT 21 u - LAN Manager Enhanced DOS - LOCAL NetMessageBufferSend
- AX = 5F40h
- DS:DX -> NetMessageBufferSend parameter structure (see #01706)
- Return: AX = error code
- Format of LAN Manager NetMessageBufferSend parameter structure:
- Offset Size Description (Table 01706)
- 00h DWORD -> recipient name (name for specific user, name* for domain
- wide name, * for broadcast)
- 04h DWORD -> buffer
- 08h WORD length of buffer
- --------N-215F41-----------------------------
- INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServiceEnum
- AX = 5F41h
- BL = level of detail (0000h, 0001h or 0002h)
- CX = buffer length
- ES:DI -> buffer of service_info_0, service_info_1, or service_info_2
- (see #01707,#01708,#01709)
- Return: CF clear if successful
- CX = entries read
- DX = total available
- CF set on error
- AX = error code
- Format of LAN Manager service_info_0 structure:
- Offset Size Description (Table 01707)
- 00h 16 BYTEs name
- SeeAlso: #01708,#01709
- Format of service_info_1 structure:
- Offset Size Description (Table 01708)
- 00h 16 BYTEs name
- 10h WORD status bitmask (see #01710)
- 12h DWORD status code (see #01711)
- (also see Microsoft LAN Manager Programmer's Reference)
- 16h WORD process id
- SeeAlso: #01707,#01709
- Format of service_info_2 structure:
- Offset Size Description (Table 01709)
- 00h 16 BYTEs name
- 10h WORD status bitmask (see #01710)
- 12h DWORD status code (see #01711)
- 16h WORD process id
- 18h 64 BYTEs text
- SeeAlso: #01707,#01708
- Bitfields for LAN Manager status bitmask:
- Bit(s) Description (Table 01710)
- 0,1 00 uninstall
- 01 install pending
- 10 uninstall pending
- 11 installed
- 2,3 00 active
- 01 Continue pending
- 10 Pause pending
- 11 paused
- 4 uninstallable
- 5 pausable
- 8 disk redirector paused
- 9 spooled device redirector paused (printing)
- 10 communication device redirector paused
- (Table 01711)
- Values for LAN Manager status code:
- high word
- 3051 Bad parameter value
- 3052 A parameter is missing
- 3053 An unknown parameter was specified
- 3054 The resource is insufficient
- 3055 Configuration is faulty
- 3056 An MS-DOS or MS OS/2 error occured
- 3057 An internal error occured
- 3058 An ambiguous parameter name was given
- 3059 A duplicate parameter exists
- 3060 The service was terminated by NetSeviceControl when it did not respond
- 3061 The service program file could not be executed
- 3062 The subservice failed to start
- 3063 There is a conflict in the value or use of these parameters
- 3064 There is a problem with the file
- low word
- 3070 There is insufficient memory
- 3071 There is insufficeient disk space
- 3072 Unable to create thread
- 3073 Unable to create process
- 3074 A security failure occured
- 3075 There is bad or missing default path
- 3076 Network software is not installed
- 3077 Server software is not installed
- 3078 The server could not access the UAS database
- 3079 The action requires user-level security
- 3080 The log directory is invalid
- 3081 The LAN group specificed could not be used
- 3082 The computername is being used as a message alias on another computer
- 3083 The workstation failed to announce the servername
- 3084 The user accounts system is not configured properly
- --------N-215F42-----------------------------
- INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServiceControl
- AX = 5F42h
- DH = opcode
- 00h interrogate status
- 01h pause
- 02h continue
- 03h uninstall
- DL = argument
- 01h disk resource
- 02h print resource
- 04h communications resource (not implemented for DOS)
- ES:BX -> NetServiceControl parameter structure (see #01712)
- Return: CF clear if successful
- CF set on error
- AX = error code
- Format of LAN Manager NetServiceControl parameter structure:
- Offset Size Description (Table 01712)
- 00h DWORD -> service name
- 04h WORD result buffer size
- 06h DWORD -> result buffer as service_info_2 structure
- --------N-215F43-----------------------------
- INT 21 u - LAN Manager Enhanced DOS - LOCAL DosPrintJobGetId
- AX = 5F43h
- BX = handle of remote print job
- CX = size of PRIDINFO struture
- ES:DI -> PRIDINFO structure (see #01713)
- Return: CF clear if successful
- PRIDINFO filled in
- CF set on error
- AX = error code
- Format of LAN Manager PRIDINFO structure:
- Offset Size Description (Table 01713)
- 00h WORD job id
- 02h 16 BYTEs server name
- 12h 13 BYTEs queue name
- 1Fh 1 BYTE pad
- --------N-215F44-----------------------------
- INT 21 - LAN Manager Enhanced DOS - LOCAL NetWkstaGetInfo
- AX = 5F44h
- BX = information level (00h, 01h, or 0Ah)
- CX = buffer size
- DX = 0000h
- ES:DI -> buffer in which to store info (see #01714,#01715,#01716),
- including any returned strings
- Return: AX = error code
- DX = amount of buffer required, unchanged if supplied buffer large
- enough to hold data
- SeeAlso: AX=5F45h,AX=5F49h
- Format of LAN Manager wksta_info_0 structure:
- Offset Size Description (Table 01714)
- 00h WORD reserved (0)
- 02h DWORD reserved (0)
- 06h DWORD -> path to computer's LANMAN directory
- 0Ah DWORD -> computername of the workstation
- 0Eh DWORD -> username of user logged onto workstation
- 12h DWORD -> domain to which workstation belongs
- 16h WORD LAN Manager version number (2 bytes, Major, Minor)
- 18h DWORD reserved (0)
- 1Ch WORD number of seconds workstation waits for resource availability
- 1Eh DWORD delay (in millsecs) before sending data to resource
- 22h WORD reserved (0)
- 24h WORD reserved (0)
- 26h WORD ???
- 28h WORD number of seconds to maintain an inactive connection
- 2Ah WORD number of seconds an inactive search continues
- 2Ch WORD threads to dedicate to network (not supported in MSDOS)
- 2Eh WORD number of simultaneous commands sent to network
- 30h WORD reserved6 (must be 0)
- 32h WORD number of internal buffers
- 34h WORD size (in bytes) of each internal buffer
- 36h WORD max size (in bytes) of an internal cache buffer (not MSDOS)
- 38h WORD seconds before disconnecting inactive session (not MSDOS)
- 3Ah WORD size (in bytes) of an internal error buffer (not MSDOS)
- 3Ch WORD number of clients that can receive alert messages (not MSDOS)
- 3Eh WORD number of services that can be started on workstation
- 40h WORD max size (in kilobytes) of error log (not MSDOS)
- 42h WORD number of secs before closing inactive print jobs (not MSDOS)
- 44h WORD number of character buffers for workstation
- 46h WORD max size (in bytes) of character buffer
- 48h DWORD -> name of server that validated logon
- 4Ch DWORD -> workstation heuristics
- 50h WORD number of mailslots allowed
- Note: pointers to strings are set to 0000h:0000h if there is insufficient
- space in the buffer to hold them
- SeeAlso: #01715,#01716
- Format of LAN Manager wksta_info_1 structure:
- Offset Size Description (Table 01715)
- 00h 82 BYTEs wksta_info_0 structure (see #01714)
- 52h DWORD -> name of domain which user is logged on to
- 56h DWORD -> all domains in which computer is enlisted
- 5Ah WORD number of buffers to allocate for receiving datagrams
- SeeAlso: #01716
- Format of LAN Manager wksta_info_10 structure:
- Offset Size Description (Table 01716)
- 00h DWORD -> computername of the workstation
- 04h DWORD -> username of user logged onto workstation
- 08h DWORD -> domain to which workstation belongs
- 0Ch WORD LAN Manager version number (2 bytes, Major, Minor)
- 0Eh DWORD -> name of domain which user is loggod on to
- 12h DWORD -> all domains in which computer is enlisted
- Note: pointers to strings are set to 0000h:0000h if there is insufficient
- space in the buffer to hold them
- SeeAlso: #01714,#01715
- --------N-215F45-----------------------------
- INT 21 u - LAN Manager Enhanced DOS - LOCAL NetWkstaSetInfo
- AX = 5F45h
- BX = level (0000h or 0001h)
- CX = buffer size
- DX = parameter to set
- ES:DI -> buffer
- Return: CF clear if successful
- CF set if error
- AX = error code
- SeeAlso: AX=5F44h
- --------N-215F46-----------------------------
- INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseEnum
- AX = 5F46h
- BX = level (0000h or 0001h)
- CX = size of buffer
- ES:DI -> buffer of use_info_0 or use_info_1 structures
- (see #01717,#01718)
- Return: CF clear if successful
- CX = entries read
- DX = total available entries
- CF set if error
- AX = error code
- SeeAlso: AX=5F47h,AX=5F48h,AX=5F4Ch
- Format of LAN Manager use_info_0 structure:
- Offset Size Description (Table 01717)
- 00h 9 BYTEs local device name
- 09h BYTE padding
- 0Ah DWORD -> remote device name in UNC form \\server\share
- SeeAlso: #01718
- Format of LAN Manager use_info_1 structure:
- Offset Size Description (Table 01718)
- 00h 9 BYTEs Local device name
- 09h BYTE padding
- 0Ah DWORD -> remote device name in UNC form \\server\share
- 0Eh DWORD -> password
- 12h WORD network link status
- (00h OK, 02h disconnected, else unsure)
- 14h WORD use type (-1 wildcard, 0 disk, 1 print, 2 com, 3 ipc)
- 16h WORD ignored
- 18h WORD ignored
- SeeAlso: #01717
- --------N-215F47-----------------------------
- INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseAdd
- AX = 5F47h
- BX = level (0001h)
- CX = size of use_info_1 structure
- ES:DI -> use_info_1 structure (see #01718)
- Return: CF clear on success
- CF set on error
- AX = error code
- SeeAlso: AX=5F46h,AX=5F48h
- --------N-215F48-----------------------------
- INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseDel
- AX = 5F48h
- BX = force level
- 0000h no force
- 0001h force
- 0002h lots of force
- ES:DI -> buffer as either the local device name or UNC remote name
- Return: CF clear on success
- CF set on error
- AX = error code
- SeeAlso: AX=5F46h,AX=5F48h,AX=5F49h
- --------N-215F49-----------------------------
- INT 21 u - LAN Manager Enhanced DOS - NetUseGetInfo
- AX = 5F49h
- DS:DX -> NetUseGetInfo parameter structure (see #01719)
- Return: CF clear on success
- DX = total available
- CF set on error
- AX = error code
- SeeAlso: AX=5F44h,AX=5F47h
- Format of LAN Manager NetUseGetInfo parameter structure:
- Offset Size Description (Table 01719)
- 00h DWORD pointer to either the local device name or UNC remote name
- 04h WORD level of information (0000h or 0001h)
- 06h DWORD pointer to buffer of use_info_0 or use_info_1 structures
- 0Ah WORD length of buffer
- --------N-215F4A-----------------------------
- INT 21 u - LAN Manager Enhanced DOS - LOCAL NetRemoteCopy
- AX = 5F4Ah
- DS:DX -> NetRemoteCopy parameter structure (see #01720)
- Return: CF clear if successful
- CF set on error
- AX = error code
- SeeAlso: AX=5F4Bh
- Format of LAN Manager NetRemoteCopy parameter structure:
- Offset Size Description (Table 01720)
- 00h DWORD -> source name as UNC
- 04h DWORD -> destination name as UNC
- 08h DWORD -> source password
- 0Ch DWORD -> destination password
- 10h WORD destination open bitmap
- if destination path exists
- 0000h open fails
- 0001h file is appended
- 0002h file is overwritten
- if destination path doesn't exist
- 0000h open fails
- 0010h file is created
- 12h WORD copy control bitmap (see #01721)
- 14h DWORD -> copy_info buffer
- 18h WORD length of copy_info buffer
- Bitfields for LAN Manager copy control:
- Bit(s) Description (Table 01721)
- 0 destination must be a file
- 1 destination must be a directory
- 2 destination is opened in ascii mode instead of binary
- 3 source is opened in ascii mode instead of binary
- 4 verify all write operations
- --------N-215F4B-----------------------------
- INT 21 u - LAN Manager Enhanced DOS - LOCAL NetRemoteMove
- AX = 5F4Bh
- DS:DX -> NetRemoteMove parameter structure (see #01722)
- Return: CF clear if successful
- CF set on error
- AX = error code
- SeeAlso: AX=5F4Ah
- Format of LAN Manager NetRemoteMove parameter structure:
- Offset Size Description (Table 01722)
- 00h DWORD -> source name as UNC
- 04h DWORD -> destination name as UNC
- 08h DWORD -> source password
- 0Ch DWORD -> destination password
- 10h WORD destination open bitmap
- if destination path exists
- 0000h open fails
- 0001h file is appended
- 0002h file is overwritten
- if destination path doesn't exist
- 0000h open fails
- 0010h file is created
- 12h WORD move control bitmap
- 0001h destination must be a file
- 0002h destination must be a directory
- 14h DWORD -> move_info buffer
- 18h WORD length of move_info buffer
- --------N-215F4C-----------------------------
- INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServerEnum
- AX = 5F4Ch
- BX = level (0000h or 0001h)
- CX = buffer length
- ES:DI -> buffer in which to store information
- Return: CF clear if successful
- ES:DI -> server_info_X structures (depending on level)
- (see #01723,#01724)
- BX = entries read
- CX = total entries available
- CF set on error
- AX = error code
- Notes: this function is also supported by the Novell DOS Named Pipe Extender
- this function has been obseleted by NetServerEnum2
- SeeAlso: AX=5F53h
- Format of LAN Manager server_info_0 structure:
- Offset Size Description (Table 01723)
- 00h 16 BYTEs name
- SeeAlso: #01724
- Format of LAN Manager server_info_1 structure:
- Offset Size Description (Table 01724)
- 00h 16 BYTEs name
- 10h BYTE major version in lower nibble
- 11h BYTE minor version
- 12h DWORD server type bitmask (see #01725)
- 16h DWORD -> comment string
- SeeAlso: #01723
- Bitfields for LAN Manager server type:
- Bit(s) Description (Table 01725)
- 0 workstation
- 1 server
- 2 SQL server
- 3 primary domain controller
- 4 backup domain controller
- 5 time server
- 6 Apple File Protocol (AFP) server
- 7 Novell server
- 8 Domain Member (v2.1+)
- 9 Print Queue server (v2.1+)
- 10 Dialin server (v2.1+)
- 11 Unix server (v2.1+)
- Note: set all (FFFFFFFFh) for All Types
- --------N-215F4D-----------------------------
- INT 21 u - LAN Manager Enhanced DOS - DosMakeMailslot
- AX = 5F4Dh
- BX = message size
- CX = mailslot size (must be bigger than message size by at least 1)
- (minimum 1000h, maximum FFF6h)
- (buffer must be 9 bytes bigger than this)
- DS:SI -> name
- ES:DI -> memory buffer
- Return: CF clear if successful
- AX = handle
- CF set on error
- AX = error code
- SeeAlso: AX=5F4Eh,AX=5F4Fh,AX=5F50h,AX=5F51h
- --------N-215F4E-----------------------------
- INT 21 u - LAN Manager Enhanced DOS - DosDeleteMailslot
- AX = 5F4Eh
- BX = handle
- Return: CF clear if successful
- ES:DI -> memory to be freed (allocated during DosMakeMailslot)
- CF set on error
- AX = error code
- SeeAlso: AX=5F4Dh,AX=5F4Fh
- --------N-215F4F-----------------------------
- INT 21 u - LAN Manager Enhanced DOS - DosMailslotInfo
- AX = 5F4Fh
- BX = handle
- Return: CF clear if successful
- AX = max message size
- BX = mailslot size
- CX = next message size
- DX = next message priority
- SI = number of messages waiting
- CF set on error
- AX = error code
- SeeAlso: AX=5F4Dh,AX=5F4Eh,AX=5F50h
- --------N-215F50-----------------------------
- INT 21 u - LAN Manager Enhanced DOS - DosReadMailslot
- AX = 5F50h
- BX = handle
- DX:CX = timeout
- ES:DI -> buffer
- Return: CF clear if successful
- AX = bytes read
- CX = next item's size
- DX = next item's priority
- CF set on error
- AX = error code
- SeeAlso: AX=5F4Dh,AX=5F4Fh,AX=5F51h,AX=5F52h
- --------N-215F51-----------------------------
- INT 21 u - LAN Manager Enhanced DOS - DosPeekMailslot
- AX = 5F51h
- BX = handle
- ES:DI -> buffer
- Return: CF clear if successful
- AX = bytes read
- CX = next item's size
- DX = next item's priority
- CF set on error
- AX = error code
- SeeAlso: AX=5F35h,AX=5F4Fh,AX=5F50h,AX=5F52h
- --------N-215F52-----------------------------
- INT 21 u - LAN Manager Enhanced DOS - DosWriteMailslot
- AX = 5F52h
- BX = class
- CX = length of buffer
- DX = priority
- ES:DI -> DosWriteMailslot parameter structure (see #01726)
- DS:SI -> mailslot name
- Return: CF clear if successful
- CF set on error
- AX = error code
- SeeAlso: AX=5F4Fh,AX=5F50h,AX=5F51h
- Format of LAN Manager DosWriteMailslot parameter structure:
- Offset Size Description (Table 01726)
- 00h DWORD timeout
- 04h DWORD -> buffer
- --------N-215F53-----------------------------
- INT 21 u - LAN Manager Enhanced DOS - NetServerEnum2
- AX = 5F53h
- DS:SI -> NetServerEnum2 parameter structure (see #01727)
- Return: CF clear if successful
- BX = entries read
- CX = total entries available
- CF set on error
- AX = error code
- SeeAlso: AX=5F4Ch
- Format of LAN Manager NetServerEnum2 parameter structure:
- Offset Size Description (Table 01727)
- 00h WORD level (0000h or 0001h)
- 02h DWORD -> buffer as array of server_info_??? structures (see #01723)
- 06h WORD length of buffer
- 08h DWORD server type bitmask (see #01725)
- 0Ch DWORD -> Domain name (may be 0000h:0000h for all local domains)
- --------N-215F55----------------------------
- INT 21 U - LAN Manager Enhanced DOS - KILL ALL CONNECTIONS???
- AX = 5F55h
- BX = ???
- Return: CF clear if successful
- CF set on error
- AX = error code
- --------N-215F80-----------------------------
- INT 21 - LANtastic - GET LOGIN ENTRY
- AX = 5F80h
- BX = login entry index (0-based)
- ES:DI -> 16-byte buffer for machine name
- Return: CF clear if successful
- buffer filled with machine name ("\\" prefix removed)
- DL = adapter number (v3+)
- CF set on error
- AX = error code
- Note: the login entry index corresponds to the value BX used in AX=5F83h
- SeeAlso: AX=5F83h
- --------N-215F81-----------------------------
- INT 21 - LANtastic - LOGIN TO SERVER
- AX = 5F81h
- ES:DI -> ASCIZ login path followed immediately by ASCIZ password
- BL = adapter number
- FFh try all valid adapters
- 00h-07h try only specified adapter
- Return: CF clear if successful
- CF set on error
- AX = error code
- Notes: login path is of form "\\machine\username"
- if no password is used, the string at ES:DI must be terminated with
- three NULs for compatibility with LANtastic v3.0.
- SeeAlso: AX=5F82h,AX=5F84h
- --------N-215F82-----------------------------
- INT 21 - LANtastic - LOGOUT FROM SERVER
- AX = 5F82h
- ES:DI -> ASCIZ server name (in form "\\machine")
- Return: CF clear if successful
- CF set on error
- AX = error code
- SeeAlso: AX=5F81h,AX=5F88h,AX=5FCBh
- --------N-215F83-----------------------------
- INT 21 - LANtastic - GET USERNAME ENTRY
- AX = 5F83h
- BX = login entry index (0-based)
- ES:DI -> 16-byte buffer for username currently logged into
- Return: CF clear if successful
- DL = adapter number (v3+)
- CF set on error
- AX = error code
- Note: the login entry index corresponds to the value BX used in AX=5F80h
- SeeAlso: AX=5F80h
- --------N-215F84-----------------------------
- INT 21 - LANtastic - GET INACTIVE SERVER ENTRY
- AX = 5F84h
- BX = server index not currently logged into
- ES:DI -> 16-byte buffer for server name which is available for logging
- in to ("\\" prefix omitted)
- Return: CF clear if successful
- DL = adapter number to non-logged in server is on
- CF set on error
- AX = error code
- SeeAlso: AX=5F81h
- --------N-215F85-----------------------------
- INT 21 - LANtastic - CHANGE PASSWORD
- AX = 5F85h
- ES:DI -> buffer containing "\\machine\oldpassword" 00h "newpassword"00h
- Return: CF clear if successful
- CF set on error
- AX = error code
- Notes: must be logged into the named machine
- this function is illegal for group accounts
- --------N-215F86-----------------------------
- INT 21 - LANtastic - DISABLE ACCOUNT
- AX = 5F86h
- ES:DI -> ASCIZ machine name and password in form "\\machine\password"
- Return: CF clear if successful
- CF set on error
- AX = error code
- Note: must be logged into the named machine and concurrent logins set to 1
- by NET_MGR. Requires system manager to re-enable account.
- --------N-215F87-----------------------------
- INT 21 - LANtastic v3+ - GET ACCOUNT
- AX = 5F87h
- DS:SI -> 128-byte buffer for account information (see #01728)
- ES:DI -> ASCIZ machine name in form "\\machine"
- Return: CF clear if successful
- CF set on error
- AX = error code
- BX destroyed
- Note: must be logged into the specified machine
- Format of LANtastic user account structure:
- Offset Size Description (Table 01728)
- 00h 16 BYTEs blank-padded username (zero-padded for v4.x)
- 10h 16 BYTEs reserved (00h)
- 20h 32 BYTEs user description
- 40h BYTE privilege bits (see #01729)
- 41h BYTE maximum concurrent users
- 42h 42 BYTEs bit map for disallowed half hours, beginning on Sunday
- (bit set if half-hour not an allowed time)
- 6Ch WORD internal (0002h)
- 6Eh 2 WORDs last login time
- 72h 2 WORDs account expiration date (MS-DOS-format year/month:day)
- 76h 2 WORDs password expiration date (0 = none)
- 7Ah BYTE number of days to extend password after change (1-31)
- 00h if no extension required
- ---v3.x---
- 7Bh 5 BYTEs reserved
- ---v4.x---
- 7Bh BYTE storage for first letter of user name when deleted (first
- character is changed to 00h when deleting account)
- 7Ch BYTE extended privileges
- 7Dh 3 BYTEs reserved
- Bitfields for LANtastic privilege bits:
- Bit(s) Description (Table 01729)
- 7 bypass access control lists
- 6 bypass queue protection
- 5 treat as local process
- 4 bypass mail protection
- 3 allow audit entry creation
- 2 system manager
- 0 user cannot change password
- --------N-215F88-----------------------------
- INT 21 - LANtastic v4.0+ - LOGOUT FROM ALL SERVERS
- AX = 5F88h
- Return: CF clear if successful
- CF set on error
- AX = error code
- SeeAlso: AX=5F82h
- --------N-215F97-----------------------------
- INT 21 - LANtastic - COPY FILE
- AX = 5F97h
- CX:DX = number of bytes to copy (FFFFFFFFh = entire file)
- SI = source file handle
- DI = destination file handle
- Return: CF clear if successful
- DX:AX = number of bytes copied
- CF set on error
- AX = error code
- Note: copy is performed by server
- --------N-215F98-----------------------------
- INT 21 - LANtastic - SEND UNSOLICITED MESSAGE
- AX = 5F98h
- DS:SI -> message buffer (see #01730)
- Return: CF clear if successful
- CF set on error
- AX = error code
- Note: v4.1- return no errors
- SeeAlso: AX=5F99h
- Format of LANtastic message buffer:
- Offset Size Description (Table 01730)
- 00h BYTE reserved
- 01h BYTE message type
- 00h general
- 01h server warning
- 02h-7Fh reserved
- 80h-FFh user-defined
- 02h 16 BYTEs ASCIZ destination machine name
- 12h 16 BYTEs ASCIZ server name which user must be logged into
- 22h 16 BYTEs ASCIZ user name
- 32h 16 BYTEs ASCIZ originating machine name (filled in when received)
- 42h 80 BYTEs message text
- --------N-215F99-----------------------------
- INT 21 - LANtastic - GET LAST RECEIVED UNSOLICITED MESSAGE
- AX = 5F99h
- ES:DI -> messsage buffer (see #01730)
- Return: CF clear if successful
- CF set on error
- AX = error code
- SeeAlso: AX=5F98h
- --------N-215F9A-----------------------------
- INT 21 - LANtastic - GET MESSAGE PROCESSING FLAGS
- AX = 5F9Ah
- Return: CF clear if successful
- DL = bits describing processing of received messages (see #01731)
- CF set on error
- AX = error code
- SeeAlso: AX=5F9Bh,AX=5F9Ch,AX=5F9Dh
- Bitfields for unsolicited message processing flags:
- Bit(s) Description (Table 01731)
- 0 beep before message is delivered
- 1 deliver message to message service
- 2 pop up message automatically (v3+)
- --------N-215F9B-----------------------------
- INT 21 - LANtastic - SET MESSAGE PROCESSING FLAGS
- AX = 5F9Bh
- DL = bits describing processing for received unsolicited messages
- (see #01731)
- Return: CF clear if successful
- CF set on error
- AX = error code
- SeeAlso: AX=5F9Ah,AX=5F9Eh
- --------N-215F9C-----------------------------
- INT 21 - LANtastic v3+ - POP UP LAST RECEIVED MESSAGE
- AX = 5F9Ch
- CX = time to leave on screen in clock ticks
- DH = 0-based screen line on which to place message
- Return: CF clear if successful
- CF set on error
- AX = error code (0Bh)
- Notes: the original screen contents are restored when the message is removed
- the message will not appear, and an error will be returned, if the
- screen is in a graphics mode
- SeeAlso: AX=5F9Ah
- --------N-215F9D-----------------------------
- INT 21 - LANtastic v4.1+ - GET REDIRECTOR CONTROL BITS
- AX = 5F9Dh
- Return: DL = redirector control bits
- bit 7: set to notify on print job completion
- SeeAlso: AX=5F9Ah,AX=5F9Eh
- --------N-215F9E-----------------------------
- INT 21 - LANtastic v4.1+ - SET REDIRECTOR CONTROL BITS
- AX = 5F9Eh
- DL = redirector control bits (see AX=5F9Dh)
- Return: nothing
- SeeAlso: AX=5F9Bh,AX=5F9Dh
- --------N-215FA0-----------------------------
- INT 21 - LANtastic - GET QUEUE ENTRY
- AX = 5FA0h
- BX = queue entry index (0000h is first entry)
- DS:SI -> buffer for queue entry (see #01732)
- ES:DI -> ASCIZ server name in form "\\name"
- Return: CF clear if successful
- CF set on error
- AX = error code
- BX = entry index for next queue entry (BX-1 is current index)
- SeeAlso: AX=5FA1h,AX=5FA2h
- Format of LANtastic queue entry:
- Offset Size Description (Table 01732)
- 00h BYTE status of entry (see #01733)
- 01h DWORD size of spooled file
- 05h BYTE type of entry (see #01734)
- 06h BYTE output control (see #01735)
- 07h WORD number of copies
- 09h DWORD sequence number of queue entry
- 0Dh 48 BYTEs pathname of spooled file
- 3Dh 16 BYTEs user who spooled file
- 4Dh 16 BYTEs name of machine from which file was spooled
- 5Dh WORD date file was spooled (see #01666 at AX=5700h)
- 5Fh WORD time file was spooled (see #01665 at AX=5700h)
- 61h 17 BYTEs ASCIZ destination device or user name
- 72h 48 BYTEs comment field
- (Table 01733)
- Values for status of LANtastic queue entry:
- 00h empty
- 01h being updated
- 02h being held
- 03h waiting for despool
- 04h being despooled
- 05h canceled
- 06h spooled file could not be accessed
- 07h destination could not be accessed
- 08h rush job
- (Table 01734)
- Values for type of LANtastic queue entry:
- 00h printer queue file
- 01h message
- 02h local file
- 03h remote file
- 04h to remote modem
- 05h batch processor file
- Bitfields for output control:
- Bit(s) Description (Table 01735)
- 6 don't delete (for mail)
- 5 mail file contains voice mail (v3+)
- 4 mail message has been read
- 3 response has been requested for this mail
- --------N-215FA1-----------------------------
- INT 21 - LANtastic - SET QUEUE ENTRY
- AX = 5FA1h
- BX = handle of opened queue entry
- DS:SI -> queue entry (see #01732)
- Return: CF clear if successful
- CF set on error
- AX = error code
- Notes: the only queue entry fields which may be changed are output control,
- number of copies, destination device, and comment
- the handle in BX is that from a create or open (INT 21/AH=3Ch,3Dh)
- call on the file "\\server\\@MAIL" or "\\server\@name" (for
- printer queue entries)
- SeeAlso: AX=5FA0h,AX=5FA2h,AX=5FA9h
- --------N-215FA2-----------------------------
- INT 21 - LANtastic - CONTROL QUEUE
- AX = 5FA2h
- BL = control command
- 00h start despooling (privileged)
- 01h halt despooling (privileged)
- 02h halt despooling at end of job (privileged)
- 03h pause despooler at end of job (privileged)
- 04h print single job (privileged)
- 05h restart current job (privileged)
- 06h cancel the current job
- 07h hold queue entry
- 08h release a held queue entry
- 09h make queue entry a rushed job (privileged)
- CX:DX = sequence number to control (commands 06h-09h)
- DX = physical printer number (commands 00h-05h)
- 00h-02h LPT1-LPT3
- 03h,04h COM1,COM2
- other all printers
- ES:DI -> ASCIZ server name in form "\\machine"
- Return: CF clear if successful
- CF set on error
- AX = error code
- --------N-215FA3-----------------------------
- INT 21 - LANtastic v3+ - GET PRINTER STATUS
- AX = 5FA3h
- BX = physical printer number (00h-02h = LPT1-LPT3, 03h-04h = COM1-COM2)
- DS:SI -> buffer for printer status (see #01736)
- ES:DI -> ASCIZ server name in form "\\machine"
- Return: CF clear if successful
- CF set on error
- AX = error code
- BX = next physical printer number
- Note: you must be logged in to the specified server
- Format of LANtastic printer status:
- Offset Size Description (Table 01736)
- 00h BYTE printer state (see #01737)
- 01h WORD queue index of print job being despooled
- FFFFh if not despooling--ignore all following fields
- 03h WORD actual characters per second being output
- 05h DWORD number of characters actually output so far
- 09h DWORD number of bytes read from spooled file so far
- 0Dh WORD copies remaining to print
- Bitfields for LANtastic printer state:
- Bit(s) Description (Table 01737)
- 7 printer paused
- 0-6 0 printer disabled
- 1 will stop at end of job
- 2 print multiple jobs
- --------N-215FA4-----------------------------
- INT 21 - LANtastic v3+ - GET STREAM INFO
- AX = 5FA4h
- BX = 0-based stream index number
- DS:SI -> buffer for stream information (see #01738)
- ES:DI -> ASCIZ machine name in form "\\machine"
- Return: CF clear if successful
- CF set on error
- AX = error code
- BX = next stream number
- SeeAlso: AX=5FA5h
- Format of LANtastic stream information:
- Offset Size Description (Table 01738)
- 00h BYTE queueing of jobs for logical printer (0=disabled,other=enabled)
- 01h 11 BYTEs logical printer resource template (may contain ? wildcards)
- --------N-215FA5-----------------------------
- INT 21 - LANtastic v3+ - SET STREAM INFO
- AX = 5FA5h
- BX = 0-based stream index number
- DS:SI -> buffer containing stream information (see #01738)
- ES:DI -> ASCIZ machine name in form "\\machine"
- Return: CF clear if successful
- CF set on error
- AX = error code
- SeeAlso: AX=5FA4h
- --------N-215FA7-----------------------------
- INT 21 - LANtastic - CREATE USER AUDIT ENTRY
- AX = 5FA7h
- DS:DX -> ASCIZ reason code (max 8 bytes)
- DS:SI -> ASCIZ variable reason string (max 128 bytes)
- ES:DI -> ASCIZ machine name in form "\\machine"
- Return: CF clear if successful
- CF set on error
- AX = error code
- Note: you must be logged in to the specified server and have the "U"
- privilege to execute this call
- --------N-215FA9-----------------------------
- INT 21 - LANtastic v4.1+ - SET EXTENDED QUEUE ENTRY
- AX = 5FA9h
- BX = handle of opened queue entry
- DS:SI -> queue entry (see #01732)
- Return: CF clear if successful
- CF set on error
- AX = error code
- Note: functions exactly the same as AX=5FA1h except the spooled filename is
- also set. This call supports direct despooling.
- SeeAlso: AX=5FA1h
- --------N-215FB0-----------------------------
- INT 21 - LANtastic - GET ACTIVE USER INFORMATION
- AX = 5FB0h
- BX = server login entry index
- DS:SI -> buffer for active user entry (see #01739)
- ES:DI -> ASCIZ machine name in form "\\server"
- Return: CF clear if successful
- CF set on error
- AX = error code
- BX = next login index
- SeeAlso: AX=5FB2h
- Format of LANtastic active user entry:
- Offset Size Description (Table 01739)
- 00h WORD virtual circuit number
- 02h BYTE login state (see #01740)
- 03h BYTE last command issued (see #01741)
- 04h 5 BYTEs number of I/O bytes (40-bit unsigned number)
- 09h 3 BYTEs number of server requests (24-bit unsigned)
- 0Ch 16 BYTEs name of user who is logged in
- 1Ch 16 BYTEs name of remote logged in machine
- 2Ch BYTE extended privileges (v4+???)
- bit 0: user cannot change his password
- 2Dh WORD time left in minutes (0000h = unlimited) (v4+???)
- Bitfields for login state:
- Bit(s) Description (Table 01740)
- 0 fully logged in
- 1 remote program load login
- 2 user has system manager privileges
- 3 user can create audit entries
- 4 bypass mail protection
- 5 treat as local process
- 6 bypass queue protection
- 7 bypass access control lists
- (Table 01741)
- Values for last LANtastic command:
- 00h login
- 01h process termination
- 02h open file
- 03h close file
- 04h create file
- 05h create new file
- 06h create unique file
- 07h commit data to disk
- 08h read file
- 09h write file
- 0Ah delete file
- 0Bh set file attributes
- 0Ch lock byte range
- 0Dh unlock byte range
- 0Eh create subdirectory
- 0Fh remove subdirectory
- 10h rename file
- 11h find first matching file
- 12h find next matching file
- 13h get disk free space
- 14h get a queue entry
- 15h set a queue entry
- 16h control the queue
- 17h return login information
- 18h return link description
- 19h seek on file
- 1Ah get server's time
- 1Bh create audit entry
- 1Ch open file in multitude of modes
- 1Dh change password
- 1Eh disable account
- 1Fh local server file copy
- ---v3+---
- 20h get username from account file
- 21h translate server's logical path
- 22h make indirect file
- 23h get indirect file contents
- 24h get physical printer status
- 25h get logical print stream info
- 26h set logical print stream info
- 27h get user's account record
- ---v4+---
- 28h request server shutdown
- 29h cancel server shutdown
- 2Ah stuff server's keyboard
- 2Bh write then commit data to disk
- 2Ch set extended queue entry
- 2Dh terminate user from server
- 2Eh enable/disable logins
- 2Fh flush server caches
- 30h change username
- 31h get extended queue entry
- (same as get queue, but can return named fields blanked)
- --------N-215FB1-----------------------------
- INT 21 - LANtastic - GET SHARED DIRECTORY INFORMATION
- AX = 5FB1h
- DS:SI -> 64-byte buffer for link description
- ES:DI -> ASCIZ machine and shared directory name in form
- "\\machine\shared-resource"
- Return: CF clear if successful
- CX = access control list privileges for requesting user (see #01742)
- CF set on error
- AX = error code
- Bitfields for LANtastic access control list:
- Bit(s) Description (Table 01742)
- 4 (I) allow expansion of indirect files
- 5 (A) allow attribute changing
- 6 (P) allow physical access to device
- 7 (E) allow program execution
- 8 (N) allow file renaming
- 9 (K) allow directory deletion
- 10 (D) allow file deletion
- 11 (L) allow file/directory lookups
- 12 (M) allow directory creation
- 13 (C) allow file creation
- 14 (W) allow open for write and writing
- 15 (R) allow open for read and reading
- --------N-215FB2-----------------------------
- INT 21 - LANtastic v3+ - GET USERNAME FROM ACCOUNT FILE
- AX = 5FB2h
- BX = username entry index (0 for first)
- DS:SI -> 16-byte buffer for username
- ES:DI -> ASCIZ server name in form "\\machine"
- Return: CF clear if successful
- CF set on error
- AX = error code
- BX = next queue entry index
- SeeAlso: AX=5FB0h
- --------N-215FB3-----------------------------
- INT 21 - LANtastic v3+ - TRANSLATE PATH
- AX = 5FB3h
- DS:SI -> 128-byte buffer for ASCIZ result
- ES:DI -> full ASCIZ path, including server name
- DX = types of translation to be performed
- bit 0: expand last component as indirect file
- bit 1: return actual path relative to server's physical disk
- Return: CF clear if successful
- CF set on error
- AX = error code
- Note: always expands any indirect files along the path
- SeeALso: AX=5FB4h,INT 21/AH=60h
- --------N-215FB4-----------------------------
- INT 21 - LANtastic v3+ - CREATE INDIRECT FILE
- AX = 5FB4h
- DS:SI -> 128-byte buffer containing ASCIZ contents of indirect file
- ES:DI -> full ASCIZ path of indirect file to create, incl machine name
- Return: CF clear if successful
- CF set on error
- AX = error code
- Note: the contents of the indirect file may be any valid server-relative path
- SeeAlso: AX=5FB3h,AX=5FB5h
- --------N-215FB5-----------------------------
- INT 21 - LANtastic v3+ - GET INDIRECT FILE CONTENTS
- AX = 5FB5h
- DS:SI -> 128-byte buffer for ASCIZ indirect file contents
- ES:DI -> full ASCIZ path of indirect file
- Return: CF clear if successful
- CF set on error
- AX = error code
- SeeAlso: AX=5FB4h
- --------N-215FB6-----------------------------
- INT 21 - LANtastic v4.1+ - SET AUTO-LOGIN DEFAULTS
- AX = 5FB6h
- ES:DI -> pointer to ASCIZ default user name, immediately followed by
- ASCIZ password
- BL = adapter number to use for default login attempt
- FFh try all valid adapters
- 00h-05h try adapter 0-5 explicitly
- Return: CF clear if successful
- CF set on error
- AX = error code
- Notes: call with ES:DI -> two nulls to disable auto-login
- SeeAlso: AX=5FB7h
- --------N-215FB7-----------------------------
- INT 21 - LANtastic v4.1+ - GET AUTO-LOGIN DEFAULTS
- AX = 5FB7h
- ES:DI -> pointer to 16-byte buffer to store ASCIZ auto-login user name
- Return: CF clear if successful
- DL = adapter number used for default login attempt
- FFh all valid adapters will be tried
- 00h-05h specified adapter will be tried explicitly
- CF set on error
- AX = error code
- SeeAlso: AX=5F81h,AX=5FB6h
- --------N-215FC0-----------------------------
- INT 21 - LANtastic - GET TIME FROM SERVER
- AX = 5FC0h
- DS:SI -> time block (see #01743)
- ES:DI -> ASCIZ server name to get time from
- Return: CF clear if successful
- CF set on error
- AX = error code
- SeeAlso: AH=E7h"Novell"
- Format of LANtastic time block:
- Offset Size Description (Table 01743)
- 00h WORD year
- 02h BYTE day
- 03h BYTE month
- 04h BYTE minutes
- 05h BYTE hour
- 06h BYTE hundredths of second
- 07h BYTE second
- --------N-215FC8-----------------------------
- INT 21 - LANtastic v4.0+ - SCHEDULE SERVER SHUTDOWN
- AX = 5FC8h
- ES:DI -> ASCIZ server name in form "\\machine"
- DS:SI -> ASCIZ reason string (80 characters)
- CX = number of minutes until shutdown (0 = immediate)
- DX = option flags (see #01744)
- Return: CF clear if successful
- CF set on error
- AX = error code
- SeeAlso: AX=5FC9h
- Bitfields for LANtastic option flags:
- Bit(s) Description (Table 01744)
- 0 auto reboot
- 1 do not notify users
- 2 halt after shutdown
- 3 shutdown due to power fail (used by UPS)
- 4-7 reserved
- 8-14 user definable
- 15 reserved
- --------N-215FC9-----------------------------
- INT 21 - LANtastic v4.0+ - CANCEL SERVER SHUTDOWN
- AX = 5FC9h
- ES:DI -> ASCIZ server name in form "\\machine"
- Return: CF clear if successful
- CF set on error
- AX = error code
- Note: you must have the "S" privilege to use this call
- SeeAlso: AX=5FC8h
- --------N-215FCA-----------------------------
- INT 21 - LANtastic v4.0+ - STUFF SERVER KEYBOARD BUFFER
- AX = 5FCAh
- ES:DI -> ASCIZ server name in form "\\machine"
- DS:SI -> ASCIZ string to stuff (128 bytes)
- Return: CF clear if successful
- CF set on error
- AX = error code
- Note: you must have the "S" privilege to use this call
- maximum number of characters that can be stuffed is determined by the
- server's RUN BUFFER SIZE.
- SeeAlso: INT 16/AH=05h
- --------N-215FCB-----------------------------
- INT 21 - LANtastic v4.1+ - TERMINATE USER
- AX = 5FCBh
- ES:DI -> ASCIZ server name in form "\\machine"
- DS:SI -> blank-padded username. A null char = wildcard.
- DS:DX -> blank-padded machine name. A null char = wildcard.
- CX = minutes until termination (0 = immediate)
- Return: CF clear if successful
- CF set on error
- AX = error code
- Note: you must have the "S" privilege to use this call
- you cannot log yourself out using this call
- SeeAlso: AX=5F82h
- --------N-215FCC-----------------------------
- INT 21 - LANtastic v4.1+ - GET/SET SERVER CONTROL BITS
- AX = 5FCCh
- ES:DI -> ASCIZ server name in form "\\machine"
- CX = bit values (value of bits you want to set) (see #01745)
- DX = bit mask (bits you are interested in, 0 = get only) (see #01745)
- Return: CF clear if successful
- CX = control bits after call (see #01745)
- CF set on error
- AX = error code
- Note: you must have the "S" privilege to SET, anyone can GET.
- Bitfields for control bits:
- Bit(s) Description (Table 01745)
- 0 disable logins
- --------N-215FCD-----------------------------
- INT 21 - LANtastic v4.1+ - FLUSH SERVER CACHES
- AX = 5FCDh
- ES:DI -> ASCIZ server name in form "\\machine"
- Return: CF clear if successful
- CF set on error
- AX = error code
- Note: you must have the "S" privilege to use this call.
- --------N-215FD0-----------------------------
- INT 21 - LANtastic - GET REDIRECTED PRINTER TIMEOUT
- AX = 5FD0h
- Return: CF clear if successful
- CX = redirected printer timeout in clock ticks of 55ms
- 0000h if timeout disabled
- CF set on error
- AX = error code
- SeeAlso: AX=5FD1h
- --------N-215FD1-----------------------------
- INT 21 - LANtastic - SET REDIRECTED PRINTER TIMEOUT
- AX = 5FD1h
- CX = printer timeout in clock ticks of 55ms, 0000h to disable timeouts
- Return: CF clear if successful
- CF set on error
- AX = error code
- SeeAlso: AX=5FD0h
- --------N-215FE0-----------------------------
- INT 21 C - LANtastic - GET DOS SERVICE VECTOR
- AX = 5FE0h
- Return: CF clear if successful
- ES:BX -> current FAR service routine
- CF set on error
- AX = error code
- Note: the service routine is called by the LANtastic redirector whenever DOS
- may safely be called, permitting external TSRs and drivers to hook
- into LANtastic's DOS busy flag checking
- SeeAlso: AX=5FE1h,INT 28,INT 2A/AH=84h
- --------N-215FE1-----------------------------
- INT 21 - LANtastic - SET DOS SERVICE VECTOR
- AX = 5FE1h
- ES:BX -> FAR routine to call when DOS services are available
- Return: CF clear if successful
- CF set on error
- AX = error code
- Note: new handler must chain to previous handler as its first action
- SeeAlso: AX=5FE0h
- --------N-215FE2-----------------------------
- INT 21 - LANtastic - GET MESSAGE SERVICE VECTOR
- AX = 5FE2h
- Return: CF clear if successful
- ES:BX -> current FAR message service routine
- CF set on error
- AX = error code
- SeeAlso: AX=5FE0h,AX=5FE3h
- --------N-215FE3-----------------------------
- INT 21 - LANtastic - SET MESSAGE SERVICE VECTOR
- AX = 5FE3h
- ES:BX -> FAR routine for processing network messages
- Return: CF clear if successful
- CF set on error
- AX = error code
- Notes: handler must chain to previous handler as its first action
- on invocation, ES:BX -> just-received message
- SeeAlso: AX=5FE2h
- --------D-2160-------------------------------
- INT 21 - DOS 3.0+ - "TRUENAME" - CANONICALIZE FILENAME OR PATH
- AH = 60h
- DS:SI -> ASCIZ filename or path
- ES:DI -> 128-byte buffer for canonicalized name
- Return: CF set on error
- AX = error code
- 02h invalid component in directory path or drive letter only
- 03h malformed path or invalid drive letter
- ES:DI buffer unchanged
- CF clear if successful
- AH = 00h or 3Ah (DOS 6.1/6.2 for character device)
- AL = destroyed (00h or 2Fh or 5Ch or last character of current
- directory on drive)
- buffer filled with qualified name of form D:\PATH\FILE.EXT or
- \\MACHINE\PATH\FILE.EXT
- Desc: determine the canonical name of the specified filename or path,
- corresponding to the undocumented TRUENAME command in COMMAND.COM
- Notes: the input path need not actually exist
- letters are uppercased, forward slashes converted to backslashes,
- asterisks converted to appropriate number of question marks, and
- file and directory names are truncated to 8.3 if necessary. (DR DOS
- 3.41 and 5.0 do not expand asterisks)
- '.' and '..' in the path are resolved
- filespecs on local drives always start with "d:", those on network
- drives always start with "\\"
- if path string is on a JOINed drive, the returned name is the one that
- would be needed if the drive were not JOINed; similarly for a
- SUBSTed, ASSIGNed, or network drive letter. Because of this, it is
- possible to get a qualified name that is not legal under the current
- combination of SUBSTs, ASSIGNs, JOINs, and network redirections
- under DOS 3.3 through 6.00, a device name is translated differently if
- the device name does not have an explicit directory or the directory
- is \DEV (relative directory DEV from the root directory works
- correctly). In these cases, the returned string consists of the
- unchanged device name and extension appended to the string X:/
- (forward slash instead of backward slash as in all other cases) where
- X is the default or explicit drive letter.
- under MS-DOS 7.0, this call returns the short name for any
- long-filename portions of the provided pathname or filename
- functions which take pathnames require canonical paths if invoked via
- INT 21/AX=5D00h
- supported by OS/2 v1.1 compatibility box
- NetWare 2.1x does not support characters with the high bit set; early
- versions of NetWare 386 support such characters except in this call.
- In addition, NetWare returns error code 3 for the path "X:\"; one
- should use "X:\." instead.
- Novell DOS 7 reportedly has difficulty with non-MS-DOS filenames on
- network drives, and can return "D:" instead of "SERVER/VOLUME"
- for DOS 3.3-6.0, the input and output buffers may be the same, as the
- canonicalized name is built in an internal buffer and copied to the
- specified output buffer as the very last step
- for DR DOS 6.0, this function is not automatically called when on a
- network. Device drivers reportedly cannot make this call from their
- INIT function. Using the same pointer for both input and output
- buffers is not supported in the April 1992 and earlier versions of
- DR DOS
- Windows for Workgroups 3.11, Windows95 and even MS-DOS 7.00 only
- return the local drive path; to obtain network paths use
- INT 21/AX=5F02h or INT 21/AX=5F46h instead
- Corel's CORELCDX and MSCDEX without the /S switch return canonical
- names of the form "\\D.\A.\path", where "D" is the CD-ROM drive
- letter and "A" appears to indicate the first physical CD-ROM drive;
- MSCDEX with the /S switch returns a canonical name with embedded
- blanks. Novell DOS 7 NWCDEX as of the 11/16/94 update returns the
- same canonical path as MSCDEX; earlier revisions returned
- "Cdex. D:\path", where "D" is the CD-ROM drive letter
- the Windows95 MSCDEX-replacement VxD returns "D:\path", even though the
- MS-DOS 7.00 MSCDEX behaves identically to older versions (above)
- BUG: Windows95 incorrectly treats filenames where the first two characters
- after the drive letter and colon are both slashes (either forward
- or backward) as a UNC (network name) and requires several seconds
- to attempt to resolve the name before returning an unchanged
- string
- SeeAlso: AX=5F02h,AX=5FB3h,AX=7160h/CL=00h,INT 2F/AX=1123h,INT 2F/AX=1221h
- --------D-2161-------------------------------
- INT 21 - DOS 3.0+ - UNUSED (RESERVED FOR NETWORK USE)
- AH = 61h
- Return: AL = 00h
- Note: this function does nothing and returns immediately
- --------O-2161--BP6467-----------------------
- INT 21 U - OS/2 v1.x FAPI - OS/2 FILE SYSTEM JOIN/SUBST
- AH = 61h
- BP = 6467h ("dg")
- AL = function
- 00h list (i.e. get)
- 01h add
- 02h delete
- BX = drive number
- CX = size of buffer
- SI = type (0002h JOIN, 0003h SUBST)
- ES:DI -> buffer
- Return: CF clear if successful
- AX = 0000h
- ES:DI buffer filled, if appropriate
- CF set on error
- AX = error code
- Notes: used by JOIN and SUBST to communicate with the OS/2 file system
- for function 00h (list), the ES:DI buffer is filled with the ASCIZ
- JOIN/SUBST path or an empty string if the drive is not JOINed/SUBSTed
- also supported by OS/2 v2.0+ Virtual DOS Machines
- --------D-2162-------------------------------
- INT 21 - DOS 3.0+ - GET CURRENT PSP ADDRESS
- AH = 62h
- Return: BX = segment of PSP for current process
- Notes: this function does not use any of the DOS-internal stacks and may
- thus be called at any time, even during another INT 21h call
- the current PSP is not necessarily the caller's PSP
- identical to the undocumented AH=51h
- SeeAlso: AH=50h,AH=51h
- --------U-216262SI1994-----------------------
- INT 21 - ENVLOCK - INSTALLATION CHECK
- AX = 6262h
- SI = 1994h
- Return: AX = 1994h if installed
- ES = ENVLOCK's resident segment
- Notes: to deactivate ENVLOCK, zero out the byte at ES:[0102h]
- Program: ENVLOCK is a TSR by Alexander Yanovsky (aka PC Hawk) that forces
- other TSRs to deallocate their environment when they stay resident
- --------D-216300-----------------------------
- INT 21 - DOS 2.25 only - GET LEAD BYTE TABLE ADDRESS
- AX = 6300h
- Return: CF clear if successful
- DS:SI -> lead byte table (see #01746)
- CF set on error
- AX = error code (01h) (see #01680 at AH=59h/BX=0000h)
- Notes: does not preserve any registers other than SS:SP
- the US version of MS-DOS 3.30 treats this as an unused function,
- setting AL=00h and returning immediately
- SeeAlso: AX=6301h,AH=07h,AH=08h,AH=0Bh
- Format of double-byte character set lead byte table entry:
- Offset Size Description (Table 01746)
- 00h 2 BYTEs low/high ends of a range of leading byte of double-byte chars
- 02h 2 BYTEs low/high ends of a range of leading byte of double-byte chars
- ...
- N 2 BYTEs 00h,00h end flag
- --------D-216300-----------------------------
- INT 21 - DOS 3.2+ - GET DOUBLE BYTE CHARACTER SET LEAD-BYTE TABLE
- AX = 6300h
- Return: AL = error code
- 00h successful
- DS:SI -> DBCS table (see #01746)
- all other registers except CS:IP and SS:SP destroyed
- FFh not supported
- Notes: probably identical to AH=63h/AL=00h for DOS 2.25
- the US version of MS-DOS 3.30 treats this as an unused function,
- setting AL=00h and returning immediately, WITHOUT setting DS:SI;
- only the Far East versions of MS-DOS 3.2 and 3.3 supported this call
- the US version of DOS 4.0+ accepts this function, but returns an empty
- list
- IBM DOS 6.1 SYS.COM assumes that CF is set on error
- SeeAlso: AX=6300h"DOS 2.25"
- --------D-216301-----------------------------
- INT 21 - DOS 2.25, DOS 3.2+ - SET KOREAN (HANGEUL) INPUT MODE
- AX = 6301h
- DL = new mode
- 00h return only full characters on DOS keyboard input functions
- 01h return partially-formed (interim) characters also
- Return: AL = status
- 00h successful
- FFh invalid mode
- Notes: Novell DOS 7 simply stores DL in the caller's PSP (see #01378 at AH=26h)
- the US version of MS-DOS 3.30 treats this as an unused function,
- setting AL=00h and returning immediately; only the Far East versions
- of MS-DOS 3.2 and 3.3 supported this call
- SeeAlso: AH=07h,AH=08h,AH=0Bh,AX=6300h,AX=6302h
- --------D-216302-----------------------------
- INT 21 - DOS 2.25, DOS 3.2+ - GET KOREAN (HANGEUL) INPUT MODE
- AX = 6302h
- Return: AL = status
- 00h successful
- DL = current input mode
- 00h return only full characters (clears interim flag)
- 01h return partial characters (sets interim flag)
- FFh not supported
- Notes: Novell DOS 7 simply reads the value out of the caller's PSP, so it
- can return values other than 00h or 01h if the last call to AX=6301h
- used another value
- the US version of MS-DOS 3.30 treats this as an unused function,
- setting AL=00h and returning immediately, WITHOUT setting DL; only
- the Far East versions of MS-DOS 3.2 and 3.3 supported this call
- SeeAlso: AH=07h,AH=08h,AH=0Bh,AX=6300h,AX=6301h
- --------v-216303------------------------
- INT 21 - VIRUS - "DOS IDLE" - INSTALLATION CHECK
- AX = 6303h
- Return: BX = 6303h if resident
- SeeAlso: AX=5643h"VIRUS",AX=6304h"VIRUS",AX=9AD5h"VIRUS"
- --------v-216304------------------------
- INT 21 - VIRUS - "Replicator" - INSTALLATION CHECK
- AX = 6304h
- Return: BX = 6304h if resident
- SeeAlso: AX=6303h"VIRUS",AX=6969h"VIRUS"
- --------D-2164-------------------------------
- INT 21 - DOS 3.2+ internal - SET DEVICE DRIVER LOOKAHEAD FLAG
- AH = 64h
- AL = flag
- 00h (default) call device driver function 5 (non-dest read)
- before INT 21/AH=01h,08h,0Ah
- nonzero don't call driver function 5
- Return: nothing (MS-DOS)
- CF set, AX=error code??? (DR DOS 5.0, which does not support this call)
- Notes: this function is called by the DOS 3.3+ PRINT.COM
- under MS-DOS, this function does not use any of the DOS-internal stacks
- and may thus be called at any time, even during another DOS call
- SeeAlso: AH=01h,AH=08h,AH=0Ah,AX=5D06h
- --------O-2164--DX0000-----------------------
- INT 21 U - OS/2 v2.0+ Virtual DOS Machine - ENABLE AUTOMATIC TITLE SWITCH
- AH = 64h
- DX = 0000h (function number)
- CX = 636Ch (magic value, "cl")
- BX = 0000h (indicates special request)
- Note: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
- in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
- SeeAlso: AH=64h/DX=0001h,INT 21/AH=4Bh
- --------O-2164--DX0001-----------------------
- INT 21 U - OS/2 v2.0+ Virtual DOS Machine - SET SESSION TITLE
- AH = 64h
- DX = 0001h (function number)
- CX = 636Ch (magic value, "cl")
- BX = 0000h (indicates special request)
- ES:DI -> new ASCIZ title (max 12 char) or "" to restore default title
- Note: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
- in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
- SeeAlso: AH=64h/DX=0000h,AH=64h/DX=0002h,INT 15/AH=12h/BH=05h
- --------O-2164--DX0002-----------------------
- INT 21 U - OS/2 v2.0+ Virtual DOS Machine - GET SESSION TITLE
- AH = 64h
- DX = 0002h (function number)
- CX = 636Ch (magic value, "cl")
- BX = 0000h (indicates special request)
- ES:DI -> 13-byte buffer for current title
- Return: buffer filled (single 00h if title never changed)
- Note: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
- in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
- SeeAlso: AH=64h/DX=0000h,AH=64h/DX=0001h,INT 15/AH=12h/BH=05h
- --------O-2164--DX0003-----------------------
- INT 21 U - OS/2 v2.1 Virtual DOS Machine - GET LASTDRIVE
- AH = 64h
- DX = 0003h (function number)
- CX = 636Ch (magic value, "cl")
- BX = 0000h (indicates special request)
- Return: AL = highest drive supported
- Notes: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
- in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
- used by WinOS2
- not supported by OS/2 Warp 3.0, check list of lists instead (see #01627)
- SeeAlso: AH=52h
- --------O-2164--DX0004-----------------------
- INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET SIZE OF PTDA JFT
- AH = 64h
- DX = 0004h (function number)
- CX = 636Ch (magic value, "cl")
- BX = 0000h (indicates special request)
- Return: AX = number of entries in OS/2 JFT for VDM
- Notes: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
- in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
- in an OS/2 VDM, the DOS Job File Table in the PSP contains an index
- into the OS/2 JFT in the Per-Task Data Area rather than an SFT index
- because the OS/2 SFT can contain more than 255 entries
- --------O-2164--DX0005-----------------------
- INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET SECOND SFT FLAGS WORD
- AH = 64h
- DX = 0005h (function number)
- CX = 636Ch (magic value, "cl")
- BX = 0000h (indicates special request)
- DI = DOS file handle
- Return: AX = value of second flags word from OS/2 SFT entry for file
- Notes: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
- in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
- the OS/2 SFT has two flags words rather than DOS's one word, and this
- function provides access to the word which is not present in DOS
- --------O-2164--DX0006-----------------------
- INT 21 U - OS/2 v2.1+ Virtual DOS Machine - UNLOAD DOSKRNL SYMBOLS & LOAD PROGR
- AH = 64h
- DX = 0006h (function number)
- CX = 636Ch (magic value, "cl")
- BX = 0000h (indicates special request)
- ES:DI -> ASCIZ filespec
- DS = base address for loading
- Notes: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
- in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
- this function is only supported by the kernel debugging version of
- OS2KRNL
- --------O-2164--DX0007-----------------------
- INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET WinOS2 CALL GATE ADDRESS
- AH = 64h
- DX = 0007h (function number)
- CX = 636Ch (magic value, "cl")
- BX = 0000h (indicates special request)
- Return: AX = call gate address
- Notes: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
- in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
- used by WinOS2 to make direct calls to OS2KRNL, bypassing the overhead
- of DOSKRNL
- --------O-2164--DX0008-----------------------
- INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET LOADING MESSAGE
- AH = 64h
- DX = 0008h (function number)
- CX = 636Ch (magic value, "cl")
- BX = 0000h (indicates special request)
- Return: DS:DX -> '$'-terminated message "Loading. Please wait."
- Notes: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
- in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
- this function permits National Language Support for the initial message
- displayed while WinOS2 starts a full-screen session
- --------O-2164--CX636C-----------------------
- INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API support
- AH = 64h
- CX = 636Ch ("cl")
- BX = API ordinal (see #01747)
- other registers as appropriate for API call
- Return: as appropriate for API call
- SeeAlso: AH=64h/BX=0025h,AH=64h/BX=00B6h,AH=64h/BX=00CBh
- (Table 01747)
- Values for OS/2 API ordinal:
- 0025h DOS32StartSession
- 0082h DosGetCP
- 00B6h DosQFSAttach
- 00BFh DosEditName
- 00CBh DosForceDelete
- 0144h Dos32CreateEventSem
- 0145h Dos32OpenEvenSem
- 0146h Dos32CloseEventSem
- 0147h Dos32ResetEventSem
- 0148h Dos32PostEventSem
- 0149h Dos32WaitEventSem
- 014Ah Dos32QueryEventSem
- 014Bh Dos32CreateMutexSem
- 014Ch Dos32OpenMutexSem
- 014Dh Dos32CloseMutexSem
- 014Eh Dos32RequestMutexSem
- 014Fh Dos32ReleaseMutexSem
- 0150h Dos32QueryMutexSem
- 0151h Dos32CreateMuxWaitSem
- 0152h Dos32OpenMuxWaitSem
- 0153h Dos32CloseMuxWaitSem
- 0154h Dos32WaitMuxWaitSem
- 0155h Dos32AddMuxWaitSem
- 0156h Dos32DeleteMuxWaitSem
- 0157h Dos32QueryMuxWaitSem
- --------O-2164--BX0025-----------------------
- INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DOS32StartSession
- AH = 64h
- BX = 0025h (API ordinal)
- CX = 636Ch ("cl")
- DS:SI -> STARTDATA structure (see #01748)
- Return: AX = return code
- SeeAlso: AH=64h/CX=636Ch,AH=64h/BX=00B6h
- Format of OS/2 Virtual DOS Machine STARTDATA structure:
- Offset Size Description (Table 01748)
- 00h WORD length of structure (must be 0018h,001Eh,0020h,0032h,or 003Ch)
- 02h WORD relation of new process to caller (00h independent, 01h child)
- 04h WORD fore/background (00h foreground, 01h background)
- 06h WORD trace options (00h-02h, 00h = no trace)
- 08h DWORD pointer to ASCIZ program title (max 62 chars) or 0000h:0000h
- 0Ch DWORD pointer to ASCIZ program name (max 128 chars) or 0000h:0000h
- 10h DWORD pointer to ASCIZ program args (max 144 chars) or 0000h:0000h
- 14h DWORD "TermQ" (currently reserved, must be 00000000h)
- 18h DWORD pointer to environment (max 486 bytes) or 0000h:0000h
- 1Ch WORD inheritance (00h or 01h)
- 1Eh WORD session type
- 00h OS/2 session manager determines type (default)
- 01h OS/2 full-screen
- 02h OS/2 window
- 03h PM
- 04h VDM full-screen
- 07h VDM window
- 20h DWORD pointer to ASCIZ icon filename (max 128 chars) or 0000h:0000h
- 24h DWORD "PgmHandle" (currently reserved, must be 00000000h)
- 28h WORD "PgmControl"
- 2Ah WORD initial column
- 2Ch WORD initial row
- 2Eh WORD initial width
- 30h WORD initial height
- 32h WORD reserved (0)
- 34h DWORD "ObjectBuffer" (currently reserved, must be 00000000h)
- 38h DWORD "ObjectBufferLen" (currently reserved, must be 00000000h)
- --------O-2164--BX00B6-----------------------
- INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DosQFSAttach
- AH = 64h
- BX = 00B6h (API ordinal)
- CX = 636Ch (magic value "cl")
- DS = user's data segment
- ES:DI -> FSQAttachStruc (see #01749)
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- AX = 0000h
- data buffer filled
- SeeAlso: AH=64h/CX=636Ch
- Format of OS/2 Virtual DOS Machine FSQAttachStruc:
- Offset Size Description (Table 01749)
- 00h DWORD reserved
- 04h DWORD pointer to the offset of the data buffer length
- 08h DWORD pointer to the offset of the data buffer
- 0Ch WORD FSA Info level
- 0Eh WORD ordinal index into table
- 10h DWORD pointer to the offset of the device name
- Notes: The segment value of the buffer, buffer length, and device
- name MUST all be the same. It is defined on entry in the DS
- register. The details of each info level are defined in the
- OS/2 CP Reference.
- --------O-2164--BX00CB-----------------------
- INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DosForceDelete
- AH = 64h
- BX = 00CBh (API ordinal)
- CX = 636Ch (magic value "cl")
- DS:DX -> ASCIZ filename
- Return: CF clear if successful
- AX destroyed
- CF set on error
- AX = error code (02h,03h,05h) (see #01680 at AH=59h/BX=0000h)
- Desc: delete a file without saving it to the undelete directory
- SeeAlso: AH=41h,AH=64h/CX=636Ch
- ----------216500-----------------------------
- INT 21 - Windows95 (OSR2) - SET GENERAL INTERNATIONALIZATION INFO
- AX = 6500h
- ES:DI -> buffer containing internationalization info (see #01750)
- CX = size of buffer (>= 7)
- Return: CF clear if successful
- AX = system code page
- CX = number of bytes copied from supplied buffer
- CF set on error
- AX = error code
- Note: this function will not overwrite the country or code-page numbers,
- but can be used to modify all other data about the country and
- code page
- SeeAlso: AH=65h"GET EXTENDED",AH=70h
- --------D-2165-------------------------------
- INT 21 - DOS 3.3+ - GET EXTENDED COUNTRY INFORMATION
- AH = 65h
- AL = info ID
- 01h get general internationalization info (see also AX=6500h)
- 02h get pointer to uppercase table
- 03h (DOS 6.2+ COUNTRY.SYS) get pointer to lowercase table
- 04h get pointer to filename uppercase table
- 05h get pointer to filename terminator table
- 06h get pointer to collating sequence table
- 07h (DOS 4.0+) get pointer to Double-Byte Character Set table
- BX = code page (FFFFh=global code page) (see #01757)
- DX = country ID (FFFFh=current country)
- ES:DI -> country information buffer (see #01750)
- CX = size of buffer (>= 5)
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- CX = size of country information returned
- ES:DI -> country information (see #01750)
- Notes: AL=05h appears to return same info for all countries and codepages; it
- has been documented for DOS 5+, but was undocumented in earlier
- versions
- NLSFUNC must be installed to get info for countries other than the
- default
- subfunctions 02h and 04h are identical under OS/2
- subfunction 03h apparently supports only codepage 866 in DOS 6.2x
- SeeAlso: AH=38h,AH=70h"MS-DOS 7",INT 2F/AX=1401h,INT 2F/AX=1402h
- SeeAlso: INT 2F/AX=14FEh
- Format of country information:
- Offset Size Description (Table 01750)
- 00h BYTE info ID
- ---if info ID = 01h---
- 01h WORD size of following info in bytes
- 03h WORD country ID (see #01400 at AH=38h)
- 05h WORD code page (see #01757)
- 07h 34 BYTEs country-dependent info (see #01399 at AH=38h)
- ---if info ID = 02h---
- 01h DWORD pointer to uppercase table (see #01751)
- ---if info ID = 03h---
- 01h DWORD pointer to lowercase table (see #01752)
- ---if info ID = 04h---
- 01h DWORD pointer to filename uppercase table (see #01753)
- ---if info ID = 05h---
- 01h DWORD pointer to filename character table (see #01754)
- ---if info ID = 06h---
- 01h DWORD pointer to collating table (see #01755)
- ---if info ID = 07h (DOS 4.0+)---
- 01h DWORD pointer to DBCS lead byte table (see #01756)
- SeeAlso: #01775
- Format of uppercase table:
- Offset Size Description (Table 01751)
- 00h WORD table size (0080h)
- 02h 128 BYTEs uppercase equivalents (if any) of chars 80h to FFh
- SeeAlso: #01750,#01753
- Format of lowercase table:
- Offset Size Description (Table 01752)
- 00h WORD table size (0100h)
- 02h 256 BYTEs lowercase equivalents (if any) of chars 00h to FFh
- SeeAlso: #01750,#01753
- Format of filename uppercase table:
- Offset Size Description (Table 01753)
- 00h WORD table size (0080h)
- 02h 128 BYTEs uppercase equivalents (if any) of chars 80h to FFh
- SeeAlso: #01750,#01751
- Format of filename terminator table:
- Offset Size Description (Table 01754)
- 00h WORD table size (not counting this word)
- 02h BYTE ??? (01h for MS-DOS 3.30-6.00)
- 03h BYTE lowest permissible character value for filename
- 04h BYTE highest permissible character value for filename
- 05h BYTE ??? (00h for MS-DOS 3.30-6.00)
- 06h BYTE first excluded character in range \ all characters in this
- 07h BYTE last excluded character in range / range are illegal
- 08h BYTE ??? (02h for MS-DOS 3.30-6.00)
- 09h BYTE number of illegal (terminator) characters
- 0Ah N BYTEs characters which terminate a filename: ."/\[]:|<>+=;,
- Note: partially documented for DOS 5+, but undocumented for earlier versions
- SeeAlso: #01750
- Format of collating table:
- Offset Size Description (Table 01755)
- 00h WORD table size (0100h)
- 02h 256 BYTEs values used to sort characters 00h to FFh
- SeeAlso: #01750
- Format of DBCS lead byte table:
- Offset Size Description (Table 01756)
- 00h WORD length of table in ranges
- 02h 2N BYTEs start/end for N lead byte ranges
- WORD 0000h (end of table)
- SeeAlso: #01750
- --------D-2165-------------------------------
- INT 21 - DOS 4.0+ - COUNTRY-DEPENDENT CHARACTER CAPITALIZATION
- AH = 65h
- AL = function
- 20h capitalize character
- DL = character to capitalize
- Return: DL = capitalized character
- 21h capitalize string
- DS:DX -> string to capitalize
- CX = length of string
- 22h capitalize ASCIZ string
- DS:DX -> ASCIZ string to capitalize
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- Note: these calls have been documented for DOS 5+, but were undocumented in
- DOS 4.x.
- BUG: Novell DOS 7 Update 15 crashes on AX=6521h when CX=0000h
- --------D-216523-----------------------------
- INT 21 U - DOS 4.0+ - DETERMINE IF CHARACTER REPRESENTS YES/NO RESPONSE
- AX = 6523h
- DL = character
- DH = second character of double-byte character (if applicable)
- Return: CF set on error
- CF clear if successful
- AX = type
- 00h no
- 01h yes
- 02h neither yes nor no
- Note: supported by Novell DOS 7, though prior to Update 14, the results
- depended on the kernel variant rather than the YESCHAR= or COUNTRY=
- setting in CONFIG.SYS
- BUG: Novell DOS commands and tools all use internal settings rather than
- this function, so the Yes/No responses are dependent on the specific
- country's variant being run rather than on the COUNTRY= setting
- --------D-2165-------------------------------
- INT 21 U - DOS 4.0+ internal - COUNTRY-DEPENDENT FILENAME CAPITALIZATION
- AH = 65h
- AL = function
- A0h capitalize filename character
- DL = character to capitalize
- Return: DL = capitalized character
- A1h capitalize counted filename string
- DS:DX -> filename string to capitalize
- CX = length of string
- A2h capitalize ASCIZ filename
- DS:DX -> ASCIZ filename to capitalize
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- Note: nonfunctional in MS-DOS 4.00 through 6.00 due to a bug (the code sets a
- pointer depending on the high bit of AL, but doesn't clear the
- bit before branching by function number). Supported and
- functional(!) in Novell DOS 7 (Update 15)
- --------D-216601-----------------------------
- INT 21 - DOS 3.3+ - GET GLOBAL CODE PAGE TABLE
- AX = 6601h
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- BX = active code page (see #01757)
- DX = system code page (see #01757)
- SeeAlso: AX=6602h
- --------D-216602-----------------------------
- INT 21 - DOS 3.3+ - SET GLOBAL CODE PAGE TABLE
- AX = 6602h
- BX = active code page (see #01757)
- DX = system code page (active page at boot time)
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- AX = EB41h (Novell NWDOS v7.0 when NLSFUNC not installed and
- request was for previously-active code page)
- SeeAlso: AX=6601h,INT 2F/AX=14FFh
- (Table 01757)
- Values for code page:
- 0 Reduced 7-bit ASCII [NetWare]
- 37 EBCDIC: US/Canada English (CECP) [Windows NT 3.51+]
- 38 EBCDIC: International (old)
- 111 Greek
- 112 Turkish
- 113 Yugoslavian
- 161 Arabic [Linux]
- 162 Arabic [Linux]
- 163 Arabic [Linux]
- 164 Arabic [Linux]
- 165 Arabic [Linux]
- 237 EBCDIC: Germany (CECP)
- 273 EBCDIC: ??? (CECP)
- 274 EBCDIC: Belgium
- 275 EBCDIC: Brazilian
- 277 EBCDIC: Danish/Norwegian (CECP)
- 278 EBCDIC: Finnish/Swedish (CECP)
- 280 EBCDIC: Italian (CECP)
- 281 EBCDIC: Japanese-E
- 284 EBCDIC: Latin-American/Spanish (CECP)
- 285 EBCDIC: UK English (CECP)
- 290 EBCDIC: Japanese Kana
- 297 EBCDIC: French (CECP)
- 367 US-ASCII (ISO 646-US, 7-bit)
- 420 EBCDIC: Arabic 1
- 423 EBCDIC: Greek
- 424 EBCDIC: Hebrew
- 437 US / English / PC-8 / IBM-2
- 500 EBCDIC: Belgium/Switzerland (CECP)
- 500 EBCDIC: International
- 646 (??? reserved for ISO 646 7-bit codepages)
- 667 Eastern Europe (Polish)
- 668 Eastern Europe (Slavic)
- 708 Arabic/Middle East
- 737 Greek (2)
- 775 Baltic / Baltic Rim
- 819 Latin-1 (ISO 8859-1)
- 850 Multilingual (Latin-1)
- 851 Greek
- 852 Slavic/Easter Europe (Latin-2) [DOS 5+]
- 853 Turkish (Latin-2)
- 854 Spanish
- 855 Cyrilic (1)
- 857 Turkish
- 860 Portugese
- 861 Icelandic
- 862 Hebrew
- 863 French Canadian
- 864 Arabic/Middle East
- 865 Nordic (Norwegian/Danish)
- 866 Russian (Cyrillic 2)
- 867 Czech
- 868 Arabic
- 869 Greek (1)
- 870 EBCDIC: Yugoslavia (Roece)
- 871 EBCDIC: Icelandic
- 874 Thailand
- 875 EBCDIC: Greek
- 880 Russian (Cyrillic GOST)
- 880 EBCDIC: Cyrillic
- 881 Latin 1 (ISO 8859-1)
- 882 Latin 2 (ISO 8859-2)
- 883 Latin 3 (ISO 8859-3)
- 884 Latin 4 (ISO 8859-4)
- 885 Latin 5 (ISO 8859-5)
- 891 unknown
- 897 Japanese (Shift-JIS)
- 903 unknown
- 904 unknown
- 905 EBCDIC: Turkish
- 912 Latin 2 (ISO 8859-2: Eastern Europe)
- 913 (??? reserved for Latin 3)
- 914 (??? reserved for Latin 4)
- 915 Cyrillic (ISO 8859-5: Latin/Cyrillic)
- 916 (??? reserved for ISO 8859-6: Latin/Arabic)
- 917 (??? reserved for ISO 8859-7: Latin/Greek)
- 918 EBCDIC: Arabic 2
- 919 (??? reserved for ISO 8859-9: Latin 5)
- 920 (??? reserved for ISO 8859-10: Latin 6/Sami)
- 932 DBCS: Japanese (Shift-JIS)
- 934 DBCS: Korean
- 936 DBCS: Chinese (PRC/ROC, Simplified/xGB)
- 938 DBCS: Taiwan
- 938 DBCS: Chinese (PRC/ROC)
- 942 DBCS: Japanese SAA
- 944 DBCS: Korean SAA
- 948 DBCS: Chinese SAA (PRC/ROC)
- 949 Korean (Unified Hangul; Extended Wansung)
- 950 Chinese Traditional, Big5 (Taiwan, Hong Kong)
- 966 Saudi Arabian
- 972 Hebrew (Israeli VT100)
- 999 reserved for user-definable codepages
- 1004 Desktop Publishing
- 1026 EBCDIC: Turkish (Latin 5)
- 1047 EBCDIC: International (CECP, de-facto EBCDIC-US)
- 1250 MSWIN: Eastern Europe (Latin 2)
- 1251 MSWIN: Cyrillic
- 1252 MSWIN: English/W. Europe/Standard (Latin 1)
- 1253 MSWIN: Greek (GRC)
- 1254 MSWIN: Turkish
- 1255 MSWIN: Hebrew
- 1256 MSWIN: Arabic
- 1257 MSWIN: Baltic (Estonian, Latvian, Lithuanian)
- 1258 MSWIN: Vietnamese
- 1361 ANSI???: Korean (Johab)
- 10000 MAC: International/Standard (Roman)
- 10006 MAC: Greek
- 10007 MAC: Cyrillic
- 10029 MAC: Latin 2
- 10079 MAC: Icelandic
- 10081 MAC: Turkish
- 10646 (should be reserved for the future ISO 10646 32-bit codepage???)
- 65400 OS/2: reserved for Glyphs
- Notes: not all code pages are available in all versions of DOS or
- DOS-compatibles, and many (particularly EBCDIC) have not been
- implemented for *any* DOS to date
- CECP = 'Country Extended CodePage' by IBM.
- Unicode (UCS-2) is a 16-bit character codeset, covering all commonly
- used characters from almost any language. Not all definitions are
- fixed at the time of this writing. Unicode will be the future of
- character coding for the foreseeable future, but is only the
- "basic multilingual plane" (BMP) subset of 32-bit ISO 10646 codes
- (UCS-4), a single character set standard covering requirements for
- all countries and languages, which is still under construction.
- The MS Windows 'ANSI' codepage 1252 (based on the MS Windows 3.0+
- implementation) appears to be 100% compatible with the code sets
- used by Amiga OS and Acorn Archimedes RISC-OS and is also a linear
- subset of the 16bit UniCode code set (UCS-2); the actual ANSI
- codepage is defined by ISO 8859-1 (Latin 1).
- At least applications for OS/2 Warp 3 Presentation Manager can use
- EBCDIC codepages, but the codepage ID assignments for EBCDIC
- codepages are not known for OS/2. OS/2 SAA codepages are not
- supported in CONFIG.SYS. Codepage 65400 "Glyphs" is not actually a
- codepage, but a way to directly access the first 256 of the 383
- glyphs from the current font set.
- Novell DOS 7/DR DOS 6/Caldera OpenDOS undocumented codepage 853
- does not necessarily match with MS-DOS' undocumented codepage 853.
- Undocumented codepages 667 and 668 can be found in Russian's PTS/DOS
- 6.51 and S/DOS 1.x DISPLAY.CPI and contain some Eastern European
- characters.
- Novell NetWare 3.xx clients support UniCode and codepages 437, 850,
- 860, 863, 865, 897, 932, and 1252 (possibly more). NetWare 4.xx
- clients also support 1250, 1251, 1256. Personal NetWare 1.0 (PNW),
- as it was distributed in Europe, supports UniCode and codepages 437,
- 850 and 1252. Novell's Client32 for DOS/Windows supports 874, 932,
- 936, 949, 950, 1250 - 1257. For codesets not yet available, Novell
- offers a reduced ASCII 7-bit support through a codepage 0 used as a
- translation table to UniCode, that supports characters 32-127 except
- 92 ('\').
- Format of DOS .CPI (Code Page Information) file header:
- Offset Size Description (Table 01758)
- 00h BYTE ID tag
- FFh FONT file (Standard for generic display or
- printer font files used by MS-DOS, PC-DOS, DR DOS
- and Novell DOS)
- 7Fh DRFONT file (Used by DR DOS 6.0 / Novell DOS 7 for
- enhanced & compressed display font files. DR DOS 6.0
- and Novell DOS 7 still support the standard FONT
- files, thus allowing leaning of .CPI files from
- MS-DOS to DR DOS / Novell DOS!)
- 01h 7 BYTEs ID string
- "FONT " = FONT file (Standard for display or printer)
- "DRFONT " = DRFONT file (Enhanced compressed format used
- by DR DOS 6.0 / Novell DOS 7 for display fonts)
- 08h 8 BYTEs reserved (0)
- 10h WORD number of pointers (1)
- 12h BYTE type of pointers (1)
- 13h DWORD pointer to file offset of FontInfoHeader
- (Generally pointing to the byte just after FontFileHeader,
- that is 0000h:0017h. Due to extra data at offset 17h, this
- value has changed with DR DOS 6.0 / Novell DOS 7 DRFONTs!
- "MS-DOS 4.0 programmers reference" claimed word offset
- +15h as an endmarker (0000h), but actually it is the
- High-Word of the pointer.)
- --- Extended FontFileHeader with DR DOS 6.0 / Novell DOS 7 DRFONTs: ---
- 17h BYTE number of fonts per codepage supported by this file
- (N=4 with both DR DOS 6.0 / Novell DOS 7 DRFONT files)
- 18h N BYTEs cellsize (Height) of fonts 1..N
- the cellsize corresponds with the character boxes height,
- but is also the count of bytes used for each of the
- characters inside the font data (as currently all fonts
- are organized heightx8 and 8 pixel width is just one byte).
- var N DWORDs file offsets of DisplayFontData.
- Format of DOS .CPI file Font Information Header:
- Offset Size Description (Table 01759)
- 00h WORD number of codepage entries
- var N codepage entry headers (see #01760)
- SeeAlso: #01758
- Format of DOS .CPI file CodePage Entry Header:
- Offset Size Description (Table 01760)
- 00h WORD size of this header (normally 1Ch)
- 02h DWORD offset of next entry, or 0000h:0000h or FFFFh:FFFFh if last
- (if a valid "next" pointer but all of the fonts indicated in
- the .CPI header have been processed, this field normally
- points at an optional text area at the end of the .CPI file
- containing copyright information)
- 06h WORD device type
- 01h display (FONT or DRFONT)
- 02h printer (FONT)
- 08h 8 BYTEs blank-padded device name string
- 10h WORD code page (see #01757)
- 12h 3 WORDs reserved (0)
- 18h DWORD pointer to Font Data Header (see #00222)
- normally immediately follows this header
- SeeAlso: #01758
- Format of DOS .CPI file Font Data Header:
- Offset Size Description (Table 01761)
- 00h WORD record type
- 0001h FONT
- 0002h DRFONT (DR DOS 6.0/Novell DOS 7 display font)
- 02h WORD number of fonts
- 04h WORD length of font data (display fonts)
- ??? (printer fonts)
- 06h var font data (#fonts * fontlength) bytes
- SeeAlso: #01758
- Format of DOS .CPI file ScreenFONT Header:
- Offset Size Description (Table 01762)
- 00h 6 BYTEs display-font header (see #01764)
- 06h var display font data
- SeeAlso: #01758
- Format of .CPI file DRFONT Header:
- Offset Size Description (Table 01763)
- 00h 6N BYTEs DisplayFONT headers for N fonts (see #01764)
- M WORDs character index table for cell offsets in font data
- currently 256 words in length
- SeeAlso: #01758
- Format of .CPI file DisplayFONT header:
- Offset Size Description (Table 01764)
- 00h BYTE height of character cell
- 01h BYTE width of character cell (currently always 08h)
- 02h BYTE aspect ratio (height) (currently 00h, unused)
- 03h BYTE aspect ratio (width) (currently 00h, unused)
- 04h WORD number of characters per font (256)
- SeeAlso: #01758
- Format of .CPI file PrinterFONT header:
- Offset Size Description (Table 01765)
- 00h WORD type of printer
- 0001h (4201.CPI, 1050.CPI, EPS.CPI)
- 0002h (4208.CPI, 5202.CPI, PPDS.CPI)
- 02h WORD bytes per hardware/download codepage-select escape sequence
- (max 31, typically 12)
- 04h N BYTEs escape sequence to select hardware codepage
- N BYTEs escape sequence to select download codepage
- var download data for printer font (including escape sequence to
- transfer data)
- SeeAlso: #01758
- --------D-2167-------------------------------
- INT 21 - DOS 3.3+ - SET HANDLE COUNT
- AH = 67h
- BX = size of new file handle table for process
- Return: CF clear if successful
- CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- Desc: adjust the size of the per-process open file table, thus raising or
- lowering the limit on the number of files the caller can open
- simultaneously
- Notes: if BX <= 20, no action is taken if the handle limit has not yet been
- increased, and the table is copied back into the PSP if the limit
- is currently > 20 handles
- for file handle tables of > 20 handles, DOS 3.30 never reuses the
- same memory block, even if the limit is being reduced; this can lead
- to memory fragmentation as a new block is allocated and the existing
- one freed
- only the first 20 handles are copied to child processes in DOS 3.3-6.0
- increasing the file handles here will not, in general, increase the
- number of files that can be opened using the runtime library of a
- high-level language such as C
- Novell DOS 7 reportedly terminates the calling program if the JFT is
- being reduced in size and there are any open file handles beyond
- the portion of the JFT being retained
- BUGS: the original release of DOS 3.30 allocates a full 64K for the handle
- table on requests for an even number of handles
- DR DOS 3.41 and 5.0 will lose track of any open file handles beyond
- the portion of the JFT retained after the call; MS-DOS will indicate
- error 04h if any of the JFT entries to be removed are open
- SeeAlso: AH=26h,AH=86h
- --------D-2168-------------------------------
- INT 21 - DOS 3.3+ - "FFLUSH" - COMMIT FILE
- AH = 68h
- BX = file handle
- Return: CF clear if successful
- all data still in DOS disk buffers is written to disk immediately,
- and the file's directory entry is updated
- CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- SeeAlso: AX=5D01h,AH=6Ah,INT 2F/AX=1107h
- --------D-2169-------------------------------
- INT 21 U - DOS 4.0+ internal - GET/SET DISK SERIAL NUMBER
- AH = 69h
- AL = subfunction
- 00h get serial number
- 01h set serial number
- BL = drive (0=default, 1=A, 2=B, etc)
- BH = info level (00h only for DOS; OS/2 allows other levels)
- DS:DX -> disk info (see #01766)
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- AX destroyed
- (AL = 00h) buffer filled with appropriate values from extended BPB
- (AL = 01h) extended BPB on disk set to values from buffer
- Notes: does not generate a critical error; all errors are returned in AX
- error 0005h given if no extended BPB on disk
- does not work on network drives (error 0001h)
- buffer after first two bytes is exact copy of bytes 27h thru 3Dh of
- extended BPB on disk
- this function is supported under Novell NetWare versions 2.0A through
- 3.11; the returned serial number is the one a DIR would display,
- the volume label is the NetWare volume label, and the file system
- is set to "FAT16".
- this function is not supported by Novell DOS 7 through Update 13, but
- Personal NetWare 1.0 and Update 15 do support this function
- the serial number is computed from the current date and time when the
- disk is created; the first part is the sum of the seconds/hundredths
- and month/day, the second part is the sum of the hours/minutes and
- year
- the volume label which is read or set is the one stored in the extended
- BPB on disks formatted with DOS 4.0+, rather than the special root
- directory entry used by the DIR command in COMMAND.COM (use AH=11h
- to find that volume label)
- SeeAlso: AX=440Dh"DOS 3.2+"
- Format of disk info:
- Offset Size Description (Table 01766)
- 00h WORD 0000h (info level)
- 02h DWORD disk serial number (binary)
- 06h 11 BYTEs volume label or "NO NAME " if none present
- 11h 8 BYTEs (AL=00h only) filesystem type (see #01767)
- Note: under MS-DOS 7.0 or a Windows95 DOS box, the volume label field can be
- all blanks even when a volume label has been set (the Win95
- installation seems to blank the volume label field in the partition
- boot sector; once LABEL has been run, the volume label is reported
- correctly)
- SeeAlso: AH=4Eh
- (Table 01767)
- Values for filesystem type:
- "FAT12 " 12-bit FAT
- "FAT16 " 16-bit FAT
- "CDROM " High-Sierra CD-ROM filesystem
- "CD001 " ISO 9660 CD-ROM filesystem
- "CDAUDIO " audio CD
- SeeAlso: #01766
- --------O-2169-------------------------------
- INT 21 - DR DOS 5.0 - NULL FUNCTION
- AH = 69h
- Return: AL = 00h
- SeeAlso: AH=18h
- --------v-216969-----------------------------
- INT 21 - VIRUS - "Rape-747" - INSTALLATION CHECK
- AX = 6969h
- Return: AX = 0666h if resident
- SeeAlso: AX=58CCh,AX=6304h"VIRUS",AH=71h"VIRUS"
- --------d-2169FFDX0000-----------------------
- INT 21 U - CUBIT v4.00 - GET CUBIT INT 21 HANDLER
- AX = 69FFh
- DX = 0000h
- BX = CB00h (magic value)
- Return: ES:BX -> CUBITR.EXE handler for INT 21
- InstallCheck: test that the first eight bytes at the returned interrupt
- handler are EBh 07h "CUBITR" (a short jump around the signature
- followed by the signature)
- Note: the byte following the signature (i.e. ES:[BX+8]) indicates whether
- CUBITR is active (01h) or disabled (00h)
- SeeAlso: AX=69FFh/DX=CFBFh
- Index: installation check;CUBIT
- --------d-2169FFDXCFBF-----------------------
- INT 21 U - CUBIT v4.00 - UNINSTALL
- AX = 69FFh
- DX = CFBFh
- CX = EFCFh
- BX = CB00h (magic value)
- Return: ES:BX -> CUBITR.EXE handler for INT 21
- CX = status
- 2020h successful
- 2222h failed
- Note: if DX is neither 0000h nor CFBFh on entry, some other code is executed
- SeeAlso: AX=69FFh/DX=0000h
- --------D-216A-------------------------------
- INT 21 U - DOS 4.0+ - COMMIT FILE
- AH = 6Ah
- BX = file handle
- Return: CF clear if successful
- AH = 68h
- CF set on error
- AX = error code (06h) (see #01680 at AH=59h/BX=0000h)
- Note: identical to AH=68h in DOS 5.0-6.0; not known whether this is the case
- in DOS 4.x
- SeeAlso: AH=68h
- --------D-216B-------------------------------
- INT 21 U - DOS 4.0 internal - IFS IOCTL
- AH = 6Bh
- AL = subfunction
- 00h ???
- DS:SI -> Current Directory Structure???
- CL = drive (1=A:)
- 01h ???
- DS:SI -> ???
- CL = file handle???
- 02h ???
- DS:SI -> Current Directory Structure???
- DI = ???
- CX = drive (1=A:)
- Return: CF set on error
- AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
- CF clear if successful
- Notes: passed through to INT 2F/AX=112Fh with AX on top of stack
- Novell DOS 7 Update 15 returns CF set/AX=0001h (invalid function)
- SeeAlso: AH=6Bh"DOS 5",INT 2F/AX=112Fh
- --------D-216B-------------------------------
- INT 21 U - DOS 5+ - NULL FUNCTION
- AH = 6Bh
- Return: AL = 00h
- Note: this function does nothing and returns immediately
- SeeAlso: AH=6Bh"DOS 4"
- --------D-216C00-----------------------------
- INT 21 - DOS 4.0+ - EXTENDED OPEN/CREATE
- AX = 6C00h
- BL = open mode as in AL for normal open (see also AH=3Dh)
- bit 7: inheritance
- bits 4-6: sharing mode
- bit 3 reserved
- bits 0-2: access mode
- 100 read-only, do not modify file's last-access time (DOS 7.0)
- BH = flags
- bit 6 = auto commit on every write (see also AH=68h)
- bit 5 = return error rather than doing INT 24h
- bit 4 = (FAT32) extended size (allow 4GB files instead of 2GB)
- CX = create attribute (see #01769)
- DL = action if file exists/does not exist (see #01770)
- DH = 00h (reserved)
- DS:SI -> ASCIZ file name
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- AX = file handle
- CX = status (see #01768)
- Notes: the PC LAN Program only supports existence actions (in DL) of 01h,
- 10h with sharing=compatibility, and 12h
- DR DOS reportedly does not support this function and does not return
- an "invalid function call" error when this function is used.
- the documented bits of BX are stored in the SFT when the file is opened
- (see #01641,#01642)
- BUG: this function has bugs (at least in DOS 5.0 and 6.2) when used with
- drives handled via the network redirector (INT 2F/AX=112Eh):
- - CX (attribute) is not passed to the redirector if DL=11h,
- - CX does not return the status, it is returned unchanged because
- DOS does a PUSH CX/POP CX when calling the redirector.
- SeeAlso: AH=3Ch,AH=3Dh,AX=6C01h,AX=7160h/CL=00h,INT 2F/AX=112Eh
- (Table 01768)
- Values for extended open function status:
- 01h file opened
- 02h file created
- 03h file replaced
- Bitfields for file create attribute:
- Bit(s) Description (Table 01769)
- 6-15 reserved
- 5 archive
- 4 reserved
- 3 volume label
- 2 system
- 1 hidden
- 0 readonly
- Bitfields for action:
- Bit(s) Description (Table 01770)
- 7-4 action if file does not exist
- 0000 fail
- 0001 create
- 3-0 action if file exists
- 0000 fail
- 0001 open
- 0010 replace/open
- --------O-216C01-----------------------------
- INT 21 U - OS/2 v2.0 - "DosOpen2"
- AX = 6C01h
- BL = open mode as in AL for normal open (see also AH=3Dh)
- bit 7: inheritance
- bits 4-6: sharing mode
- bit 3 reserved
- bits 0-2: access mode
- BH = flags
- bit 6 = auto commit on every write (see also AH=68h)
- bit 5 = return error rather than doing INT 24h
- CX = create attribute (see #01769)
- DL = action if file exists/does not exist (see #01770)
- DH = 00h (reserved)
- DS:SI -> ASCIZ file name
- ES:DI -> EAOP structure
- Return: CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- AX = file handle
- CX = status (see #01768)
- Note: this function is virtually identical to AX=6C00h, but supports OS/2's
- extended attributes
- SeeAlso: AX=5704h,AX=6C00h,AH=6Fh"OS/2"
- --------D-216D-------------------------------
- INT 21 U - DOS 5+ ROM - FIND FIRST ROM PROGRAM
- AH = 6Dh
- DS:DX -> ASCIZ program name (may contain wildcrds)
- Return: CF clear if found
- Disk Transfer Area filled with ROM search structure (see #01771)
- CF set if not found
- AX = error code
- 0002h name not found in ROM
- 0003h name contains colon or backslash
- ---if not supported (DOS <5, MS-DOS 5+ non-ROM versions)---
- AL = 00h
- Notes: the '*' wildcard matches all remaining characters in a ROM program's
- name; any following characters in the search mask are ignored up to
- another asterisk, which must be matched by an asterisk in the
- found program's name.
- the search mask and program names may contain multiple periods
- SeeAlso: AH=1Ah,AH=4Eh,AH=6Eh,AX=6F00h,AX=6F02h,INT 2F/AX=160Ch
- Format of ROM search structure:
- Offset Size Description (Table 01771)
- 00h 13 BYTEs ASCIZ name of found ROM program
- 0Dh DWORD address at which to resume search (do not modify)
- 11h var ASCIZ search mask passed in (do not modify)
- --------O-216D-------------------------------
- INT 21 U - OS/2 v1.x FAPI - "DosMkDir2"
- AH = 6Dh
- ???
- Return: ???
- Desc: create a new directory, with extended attribute information
- Note: also supported by OS/2 v2.0+ Virtual DOS Machines
- BUG: does not work under OS/2 v2.0 because MVDM does not translate the
- real-mode segment pointer in the Extended Attribute structure
- (see #01673) into a protected-mode selector; use AH=39h followed by
- AX=5703h instead
- SeeAlso: AH=39h,AX=5702h"OS/2",AX=5703h"OS/2"
- --------O-216D-------------------------------
- INT 21 U - Novell DOS 7 - NOP
- AH = 6Dh
- Return: AX = 0000h
- Note: this function invokes the same code as other NOP functions such as
- AH=18h and AH=61h
- --------D-216E-------------------------------
- INT 21 U - DOS 5+ ROM - FIND NEXT ROM PROGRAM
- AH = 6Eh
- Disk Transfer Area contains result of previous FindFirst ROM
- (see AH=6Dh)
- Return: CF clear if found
- Disk Transfer Area filled with updated ROM search structure
- (see #01771)
- CF set if not found
- AX = 0012h (no more matches)
- ---if not supported (DOS <5, MS-DOS 5+ non-ROM versions)---
- AL = 00h
- SeeAlso: AH=4Fh,AH=6Dh
- --------O-216E-------------------------------
- INT 21 U - OS/2 v1.x FAPI - "DosEnumAttrib"
- AH = 6Eh
- DS:SI -> parameter packet (see #01772)
- Return: CF clear if successful
- AX = 0000h
- DS:SI buffer updated
- CF set on error
- AX = error code
- Note: also supported by OS/2 v2.0+ Virtual DOS Machines
- SeeAlso: AX=5703h,AH=6Fh"OS/2",INT 2F/AX=112Dh
- Format of OS/2 DosEnumAttrib parameter packet:
- Offset Size Description (Table 01772)
- 00h DWORD reserved (0)
- 04h DWORD info level (always 00000001h)
- 08h DWORD (call) number of entries requested
- (ret) actual number of entries returned
- 0Ch DWORD length of buffer
- 10h DWORD pointer to buffer for results
- 14h DWORD number of first entry to return
- 18h DWORD -> file handle or ASCIZ pathname
- 1Ch WORD flag: 00h = previous field is file handle, 01h = pathname
- --------D-216F00-----------------------------
- INT 21 U - DOS 5+ ROM - GET ROM SCAN START ADDRESS
- AX = 6F00h
- Return: CF clear
- AL = 00h
- BX = current ROM scan starting segment if function supported
- SeeAlso: AH=6Dh,AX=6F01h,AX=6F02h
- --------O-216F00-----------------------------
- INT 21 U - OS/2 v1.x FAPI - "DosQMaxEASize" - GET MAXIMUM SIZE OF EXTENDED ATTR
- AX = 6F00h
- DS:SI -> DWORD buffer for maximum size of an extended attribute
- Return: CF clear if successful
- AX = 0000h
- buffer filled
- CF set on error
- AX = error code
- Note: also supported by OS/2 v2.0+ Virtual DOS Machines
- SeeAlso: AX=5703h,AX=6C01h,AH=6Eh"OS/2"
- --------D-216F01-----------------------------
- INT 21 U - DOS 5+ ROM - SET ROM SCAN START ADDRESS
- AX = 6F01h
- BX = new ROM scan starting address
- Return: CF clear
- AL = 00h
- SeeAlso: AX=6F00h,AX=6F03h
- --------D-216F02-----------------------------
- INT 21 U - DOS 5+ ROM - GET EXCLUSION REGION LIST
- AX = 6F02h
- ES:BX -> buffer for exclusion region list (see #01773)
- Return: CF clear
- AL = 00h
- ES:BX = 0000h:0000h on error, unchanged if buffer filled
- Note: for DOS versions which do not support this function, the return value
- is AL=00h, CF unchanged, ES:BX unchanged, and the ES:BX buffer
- unchanged
- SeeAlso: AX=6F00h,AX=6F03h
- Format of ROM exclusion region list:
- Offset Size Description (Table 01773)
- 00h WORD number of entries
- 02h 2N WORDs start/end segments of N excluded regions
- --------D-216F03-----------------------------
- INT 21 U - DOS 5+ ROM - SET EXCLUSION REGION LIST
- AX = 6F03h
- DS:DX -> new exclusion region list (see #01773)
- Return: CF clear
- AL = 00h
- Notes: DOS saves only the pointer and assumes that the contents of the list
- are never changed, and that regions do not overlap
- if AL > 03h on entry, DOS returns CF set/AL=01h
- SeeAlso: AX=6F01h,AX=6F02h
- --------D-2170-------------------------------
- INT 21 - MS-DOS 7 (Windows95) - GET/SET INTERNATIONALIZATION INFORMATION
- AH = 70h
- AL = subfunction
- 00h get ??? info
- CX = buffer size (3Ah bytes needed)
- ES:DI -> buffer
- 01h set above info
- CX = number of bytes to set
- DS:SI -> buffer containing ??? info (see #01774)
- 02h set general internationalization info (see also AX=6500h)
- DS:SI -> buffer containing info (see #01775)
- CX = buffer size in bytes (up to 26h bytes used)
- first three bytes are skipped, the rest is copied to somewhere
- in the DOS data segment
- Return: CF clear if successful
- ES:DI buffer filled (func 00h) (see #01774)
- CX = number of bytes actually set or returned
- (max 003Ah for functions 00h and 01h under v7.00, 0026h for
- function 02h)
- CF set on error
- AX = error code
- 7000h if function not supported
- SeeAlso: AH=38h,AH=65h
- Format of MS-DOS v7.0 ??? table:
- Offset Size Description (Table 01774)
- 00h 58 BYTEs ??? country-specific information
- returned was (among others) "ENU USA GR"..."AM PM M/d/yy"...
- "dddd,MMMMdd,yyyy" in the German Preview version, and "US"
- instead of "GR" in the US build 450 version (with German
- country setting) and the US build 950a version with US
- country settings
- SeeAlso: #01775
- Format of MS-DOS v7.0 internationalization table:
- Offset Size Description (Table 01775)
- 00h 3 BYTEs unused (and ignored by DOS)
- 03h WORD country ID (see #01400 at AH=38h)
- 05h WORD code page (see #01757)
- 07h WORD date format
- 09h 5 BYTEs ASCIZ current symbol string
- 07h 2 BYTEs ASCIZ thousands separator
- 09h 2 BYTEs ASCIZ decimal separator
- 0Bh 2 BYTEs ASCIZ date separator
- 0Dh 2 BYTEs ASCIZ time separator
- 0Fh BYTE currency format
- bit 2 = set if currency symbol replaces decimal point
- bit 1 = number of spaces between value and currency symbol
- bit 0 = 0 if currency symbol precedes value
- 1 if currency symbol follows value
- 10h BYTE number of digits after decimal in currency
- 11h BYTE time format
- bit 0 = 0 if 12-hour clock
- 1 if 24-hour clock
- 12h DWORD address of case map routine
- (FAR CALL, AL = character to map to upper case [>= 80h])
- 16h 2 BYTEs ASCIZ data-list separator
- 18h 10 BYTEs reserved
- Note: this table has the identical format to the extended country information
- retrieved via AH=65h with info ID = 01h
- SeeAlso: #01399,#01750
- ----------217070BX6060-----------------------
- INT 21 - PCW Weather Card interface - GET DATA SEGMENT
- AX = 7070h
- BX = 6060h
- CX = 7070h
- DX = 7070h
- SI = 7070h
- DI = 7070h
- Return: AX = segment of data structure (see #01776)
- Notes: the data structure is at offset 516 from this segment
- the update byte is at offset 514 from this segment. Updates are
- once per second while this byte is nonzero and it is decremented
- once per second. While this byte is 0 updates are once per minute.
- SeeAlso: AX=7070h/BX=7070h
- Format of PCW Weather Card data structure:
- Offset Type Description (Table 01776)
- 00h WORD hour
- 02h WORD minute
- 04h WORD second
- 06h WORD day
- 08h WORD month
- 0Ah WORD year
- 0Ch WORD ???
- 0Eh WORD relative barometric pressure (in 1/100 inches)
- 10h WORD ???
- 12h WORD ???
- 14h WORD temperature 1 (in 1/10 degrees F)
- 16h WORD temperature 1 lowest (in 1/10 degrees F)
- 18h WORD temperature 1 highest (in 1/10 degrees F)
- 1Ah WORD temperature 2 (in 1/10 degrees F)
- 1Ch WORD temperature 2 lowest (in 1/10 degrees F)
- 1Eh WORD temperature 2 highest (in 1/10 degrees F)
- 20h WORD wind speed (in MPH)
- 22h WORD average of 60 wind speed samples (in MPH)
- 24h WORD highest wind speed (in MPH)
- 26h WORD wind chill factor (in 1/10 degrees F)
- 28h WORD lowest wind chill factor (in 1/10 degrees F)
- 2Ah WORD ???
- 2Ch WORD wind direction (in degrees)
- 2Eh WORD accumulated daily rainfall (in 1/10 inches)
- 30h WORD accumulated annual rainfall (in 1/10 inches)
- ----------217070BX7070-----------------------
- INT 21 - PCW Weather Card interface - INSTALLATION CHECK
- AX = 7070h
- BX = 7070h
- CX = 7070h
- DX = 7070h
- SI = 7070h
- DI = 7070h
- Return: AX = 0070h
- BX = 0070h
- CX = 0070h
- DX = 0070h
- SI = 0070h
- DI = 0070h
- SeeAlso: AX=7070h/BX=6060h,AX=8080h
- --------D-2171-------------------------------
- INT 21 - Windows95 - LONG FILENAME FUNCTIONS
- AH = 71h
- AL = function
- 0Dh reset drive (see AX=710Dh)
- 39h create directory (see AX=7139h)
- 3Ah remove directory (see AX=713Ah)
- 3Bh set current directory (see AX=713Bh)
- 41h delete file (see AX=7141h)
- 43h get/set file attributes (see AX=7143h)
- 47h get current directory (see AX=7147h)
- 4Eh find first file (see AX=714Eh)
- 4Fh find next file (see AX=714Fh)
- 56h move (rename) file (see AX=7156h)
- 60h truename (see AX=7160h/CL=00h,AX=7160h/CL=02h)
- 6Ch create/open file (see AX=716Ch)
- A0h get volume information (see AX=71A0h)
- A1h terminate FindFirst/FindNext (see AX=71A1h)
- A6h get file information (see AX=71A6h)
- A7h time conversion (see AX=71A7h/BL=00h,AX=71A7h/BL=01h)
- A8h generate short filename (see AX=71A8h)
- A9h server create/open file (see AX=71A9h)
- AAh create/terminate SUBST (see AX=71AAh/BH=00h,AX=71AAh/BH=02h)
- Return: CF set on error
- AX = error code (see #01680)
- 7100h if function not supported
- CF clear if successful
- other registers as for corresponding "old" DOS function
- Notes: if error 7100h is returned, the old-style function should be called
- AX=714Eh returns a "search handle" which must be passed to AX=714Fh;
- when the search is complete, AX=71A1h must be called to terminate
- the search
- for compatibility with DOS versions prior to v7.00, the carry flag
- should be set on call to ensure that it is set on exit
- SeeAlso: AH=39h,AH=3Ah,AH=3Bh,AH=41h,AX=4300h,AX=4301h,AX=4304h,AX=4306h
- SeeAlso: AX=4307h,AH=47h,AH=4Eh,AH=4Fh,AH=56h,AH=6Ch,AX=714Eh,AX=714Fh
- --------v-2171-------------------------------
- INT 21 - VIRUS - "1205" - INSTALLATION CHECK
- AH = 71h
- Return: AH = 17h if "1205" is resident
- SeeAlso: AX=6969h"VIRUS",AH=76h"VIRUS"
- --------D-21710D-----------------------------
- INT 21 - Windows95 - RESET DRIVE
- AX = 710Dh
- CX = action (see #01777)
- DX = drive number
- Return: CF clear
- Note: for compatibility with DOS versions prior to v7.00, the carry flag
- should be set on call to ensure that it is set on exit
- SeeAlso: AH=0Dh
- (Table 01777)
- Values for drive reset action:
- 0000h flush filesystem buffers for drive, and reset drive
- 0001h flush filesystem buffers and cache for drive, and reset drive
- 0002h remount DriveSpace volume
- --------D-217139-----------------------------
- INT 21 - Windows95 - LONG FILENAME - MAKE DIRECTORY
- AX = 7139h
- DS:DX -> ASCIZ long directory name (including path)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #01680)
- 7100h if function not supported
- Note: for compatibility with DOS versions prior to v7.00, the carry flag
- should be set on call to ensure that it is set on exit
- SeeAlso: AH=39h,AX=713Ah,AX=713Bh,AX=43FFh/BP=5053h
- --------D-21713A-----------------------------
- INT 21 - Windows95 - LONG FILENAME - REMOVE DIRECTORY
- AX = 713Ah
- DS:DX -> ASCIZ long name of directory to remove
- Return: CF clear if successful
- CF set on error
- AX = error code (see #01680)
- 7100h if function not supported
- Note: for compatibility with DOS versions prior to v7.00, the carry flag
- should be set on call to ensure that it is set on exit
- SeeAlso: AH=3Ah,AX=7139h
- --------D-21713B-----------------------------
- INT 21 - Windows95 - LONG FILENAME - CHANGE DIRECTORY
- AX = 713Bh
- DS:DX -> ASCIZ long name of directory to make current
- Return: CF clear if successful
- CF set on error
- AX = error code (see #01680)
- 7100h if function not supported
- Note: for compatibility with DOS versions prior to v7.00, the carry flag
- should be set on call to ensure that it is set on exit
- SeeAlso: AH=0Eh,AH=3Bh,AX=7139h
- --------D-217141-----------------------------
- INT 21 - Windows95 - LONG FILENAME - DELETE FILE
- AX = 7141h
- DS:DX -> ASCIZ long name of file to delete
- SI = wildcard and attributes flag
- 0000h wildcards are not allowed, and search attributes are
- ignored
- 0001h wildcards are allowed, and only files with matching
- names and attributes are deleted
- CL = search attributes
- CH = must-match attributes
- Return: CF clear if successful
- CF set on error
- AX = error code (see #01680)
- 7100h if function not supported
- Note: for compatibility with DOS versions prior to v7.00, the carry flag
- should be set on call to ensure that it is set on exit
- SeeAlso: AH=41h
- --------D-217143-----------------------------
- INT 21 - Windows95 - LONG FILENAME - EXTENDED GET/SET FILE ATTRIBUTES
- AX = 7143h
- DS:DX -> ASCIZ filename
- BL = action
- 00h retrieve attributes
- Return: CX = file attributes (see #01420)
- 01h set attributes
- CX = attributes
- 02h get physical size of compressed file
- Return: DX:AX = actual disk usage of file, in bytes
- 03h set last write date/time
- DI = new last-write date (see #01666)
- CX = new last-write time (see #01665)
- 04h get last write date/time
- Return: CX = last write time (see #01665)
- DI = last write date (see #01666)
- 05h set last access date
- DI = new last-access date (see #01666)
- 06h get last access date
- Return: DI = last access date (see #01666)
- 07h set creation date/time
- DI = new creation date (see #01666)
- CX = new creation time (see #01665)
- SI = hundredths (10-millisecond units past time in CX, 0-199)
- 08h get creation date/time
- Return: CX = creation time (see #01665)
- DI = creation date (see #01666)
- SI = hundredths (10-millisecond units past time in CX)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #01680)
- 7100h if function not supported
- Note: for compatibility with DOS versions prior to v7.00, the carry flag
- should be set on call to ensure that it is set on exit
- SeeAlso: AX=4300h,AX=4301h
- --------D-217147-----------------------------
- INT 21 - Windows95 - LONG FILENAME - GET CURRENT DIRECTORY
- AX = 7147h
- DL = drive number (00h = current, 01h = A:, etc.)
- DS:SI -> buffer for ASCIZ directory name
- Return: CF clear if successful
- CF set on error
- AX = error code (see #01680)
- 7100h if function not supported
- Notes: the returned pathname does not include the drive letter, colon, or
- leading backslash, and is not necessarily a long filename -- this
- function returns whatever path was used when changing to the
- current directory, and may include a mixture of long and short
- components
- the provided buffer must be at least as large as the value indicated
- by AX=71A0h
- for compatibility with DOS versions prior to v7.00, the carry flag
- should be set on call to ensure that it is set on exit
- SeeAlso: AH=47h,AX=713Bh,AX=7160h,AX=71A0h
- --------D-21714E-----------------------------
- INT 21 - Windows95 - LONG FILENAME - FIND FIRST MATCHING FILE
- AX = 714Eh
- CL = allowable-attributes mask (see #01420 at AX=4301h)
- (bits 0 and 5 ignored)
- CH = required-attributes mask (see #01420)
- SI = date/time format (see #01778)
- DS:DX -> ASCIZ filespec (both "*" and "*.*" match any filename)
- ES:DI -> FindData record (see #01779)
- Return: CF clear if successful
- AX = filefind handle (needed to continue search)
- CX = Unicode conversion flags (see #01780)
- CF set on error
- AX = error code
- 7100h if function not supported
- Notes: this function is only available when IFSMgr is running, not under bare
- MS-DOS 7
- the application should close the filefind handle with AX=71A1h as soon
- as it has completed its search
- for compatibility with DOS versions prior to v7.00, the carry flag
- should be set on call to ensure that it is set on exit
- SeeAlso: AH=4Eh,AX=714Fh,AX=71A1h
- (Table 01778)
- Values for Windows95 date/time format:
- 0000h use 64-bit file time format
- 0001h use MS-DOS date/time values (see #01665,#01666) in low double-word of
- file time QWORD (date is high word, time is low word of double-word)
- SeeAlso: #01779
- Format of Windows95 long filename FindData record:
- Offset Size Description (Table 01779)
- 00h DWORD file attributes
- bits 0-6 standard DOS attributes (see #01420 at INT 21/AX=4301h)
- bit 8: temporary file
- 04h QWORD file creation time (number of 100ns intervals since 1/1/1601)
- 0Ch QWORD last access time
- 14h QWORD last modification time
- 1Ch DWORD file size (high 32 bits)
- 20h DWORD file size (low 32 bits)
- 24h 8 BYTEs reserved (apparently unused)
- 2Ch 260 BYTEs ASCIZ full filename
- 130h 14 BYTEs ASCIZ short filename (for backward compatibility)
- Note: under Windows95B, the ASCIZ short filename will be the empty string
- if the directory does not contain a long filename entry for the
- file; in that case, the application should use the full filename
- SeeAlso: #01780
- Bitfields for Windows95 Unicode conversion flags:
- Bit(s) Description (Table 01780)
- 0 the returned full filename contains underscores for un-convertable
- Unicode characters
- 1 the returned short filename contains underscores for un-convertable
- Unicode characters
- SeeAlso: #01779
- --------D-21714F-----------------------------
- INT 21 - Windows95 - LONG FILENAME - FIND NEXT MATCHING FILE
- AX = 714Fh
- BX = filefind handle (from AX=714Eh)
- SI = date/time format (see #01778)
- ES:DI -> buffer for FindData record (see #01779)
- Return: CF clear if successful
- AH = 4Fh (undocumented)
- AL destroyed (becomes low byte of filefind handle in Win95B)
- CX = Unicode conversion flags (see #01780)
- CF set on error
- AX = error code
- 7100h if function not supported
- Notes: this function is only available when IFSMgr is running, not under bare
- MS-DOS 7
- for compatibility with DOS versions prior to v7.00, the carry flag
- should be set on call to ensure that it is set on exit
- SeeAlso: AH=4Eh,AX=714Eh,AX=71A1h,AX=71A2h
- --------D-217156-----------------------------
- INT 21 - Windows95 - LONG FILENAME - RENAME FILE
- AX = 7156h
- DS:DX -> ASCIZ old file or directory name (long names allowed)
- ES:DI -> ASCIZ new name (long names allowed)
- Return: CF clear if successful
- CF set on error
- AX = error code
- 7100h if function not supported
- Note: the file may be renamed into a different directory, but not across
- disks
- SeeAlso: AH=56h,AX=7141h,AX=43FFh/BP=5053h
- --------D-217160CL00-------------------------
- INT 21 - Windows95 - LONG FILENAME - "TRUENAME" - CANONICALIZE PATH
- AX = 7160h
- CL = 00h
- CH = SUBST expansion flag
- 00h return a path containing true path for a SUBSTed drive letter
- 80h return a path containing the SUBSTed drive letter
- DS:SI -> ASCIZ filename or path (either long name or short name)
- ES:DI -> 261-byte buffer for canonicalized name
- Return: CF set on error
- AX = error code
- 02h invalid component in directory path or drive letter only
- 03h malformed path or invalid drive letter
- ES:DI buffer unchanged
- CF clear if successful
- ES:DI buffer filled with fully qualified name
- AX destroyed
- Desc: determine the canonical name of the specified filename or path,
- corresponding to the undocumented TRUENAME command in COMMAND.COM
- Notes: if a complete path is given, the result will be a short-form complete
- path; otherwise, the given relative path is appended to the
- short-form current directory name, '.'/'..'/'...'/etc. are resolved,
- and the final result uppercased without converting any remaining
- long-form names to short-form
- for compatibility with DOS versions prior to v7.00, the carry flag
- should be set on call to ensure that it is set on exit
- BUG: Windows95 incorrectly treats filenames where the first two characters
- after the drive letter and colon are both slashes (either forward
- or backward) as a UNC (network name) and requires several seconds
- to attempt to resolve the name before returning an unchanged
- string
- SeeAlso: AH=60h,AX=7160h/CL=01h
- --------D-217160CL01-------------------------
- INT 21 - Windows95 - LONG FILENAME - GET SHORT (8.3) FILENAME FOR FILE
- AX = 7160h
- CL = 01h
- CH = SUBST expansion flag
- 00h return a path containing true path for a SUBSTed drive letter
- 80h return a path containing the SUBSTed drive letter
- DS:SI -> ASCIZ long filename or path
- ES:DI -> 67-byte (possibly 128-byte) buffer for short filename
- Return: CF set on error
- AX = error code
- 02h invalid component in directory path or drive letter only
- 03h malformed path or invalid drive letter
- ES:DI buffer unchanged
- CF clear if successful
- ES:DI buffer filled with equivalent short filename (full path,
- even if relative path given, and all uppercase)
- Note: this call returns the short name for any long-filename portions of
- the provided pathname or filename
- SeeAlso: AH=60h,AX=7160h/CL=00h,AX=7160h/CL=02h
- --------D-217160CL02-------------------------
- INT 21 - Windows95 - LONG FILENAME - GET CANONICAL LONG FILENAME OR PATH
- AX = 7160h
- CL = 02h
- CH = SUBST expansion flag
- 00h return a path containing true path for a SUBSTed drive letter
- 80h return a path containing the SUBSTed drive letter
- DS:SI -> ASCIZ short filename or path
- ES:DI -> 261-byte buffer for canonicalized long name
- Return: CF set on error
- AX = error code
- 02h invalid component in directory path or drive letter only
- 03h malformed path or invalid drive letter
- ES:DI buffer unchanged
- CF clear if successful
- ES:DI buffer filled with qualified long name (can contain
- lowercase letters)
- Desc: determine the canonical name of the specified filename or path,
- corresponding to the undocumented TRUENAME command in COMMAND.COM
- BUGS: even though the maximum length of a complete long pathname is 260
- characters, Windows95 returns CF set/AX=0003h even if the file
- exists whenever the full pathname is more than 255 characters
- Windows95 incorrectly treats filenames where the first two characters
- after the drive letter and colon are both slashes (either forward
- or backward) as a UNC (network name) and requires several seconds
- to attempt to resolve the name before returning an unchanged
- string
- SeeAlso: AH=60h,AX=7160h/CL=00h,AX=7160h/CL=01h
- --------D-21716C-----------------------------
- INT 21 - Windows95 - LONG FILENAME - CREATE OR OPEN FILE
- AX = 716Ch
- BX = access mode and sharing flags (see #01782,also AX=6C00h)
- CX = attributes
- DX = action (see #01781)
- DS:SI -> ASCIZ filename
- DI = alias hint (number to append to short filename for disambiguation)
- Return: CF clear if successful
- AX = file handle
- CX = action taken
- 0001h file opened
- 0002h file created
- 0003h file replaced
- CF set on error
- AX = error code (see #01680)
- 7100h if function not supported
- SeeAlso: AX=6C00h,AX=7141h,AX=7156h,AX=71A9h
- Bitfields for Windows95 long-name open action:
- Bit(s) Description (Table 01781)
- 0 open file (fail if file does not exist)
- 1 truncate file if it already exists (fail if file does not exist)
- 4 create new file if file does not already exist (fail if exists)
- Note: the only valid combinations of multiple flags are bits 4&0 and 4&1
- Bitfields for Windows95 file access/sharing modes:
- Bit(s) Description (Table 01782)
- 2-0 file access mode
- 000 read-only
- 001 write-only
- 010 read-write
- 100 read-only, do not modify file's last-access time
- 6-4 file sharing modes
- 7 no-inherit flag
- 8 do not buffer data (requires that all reads/writes be exact physical
- sectors)
- 9 do not compress file even if volume normally compresses files
- 10 use alias hint in DI as numeric tail for short-name alias
- 12-11 unused??? (0)
- 13 return error code instead of generating INT 24h if critical error
- while opening file
- 14 commit file after every write operation
- SeeAlso: #01402
- --------D-2171A0-----------------------------
- INT 21 - Windows95 - LONG FILENAME - GET VOLUME INFORMATION
- AX = 71A0h
- DS:DX -> ASCIZ root name (e.g. "C:\")
- ES:DI -> buffer for file system name
- CX = size of ES:DI buffer
- Return: CF clear if successful
- AX destroyed (0000h and 0200h seen)
- BX = file system flags (see #01783)
- CX = maximum length of file name [usually 255]
- DX = maximum length of path [usually 260]
- ES:DI buffer filled (ASCIZ, e.g. "FAT","NTFS","CDFS")
- CF set on error
- AX = error code
- 7100h if function not supported
- Notes: for the file system name buffer, 32 bytes should be sufficient; that's
- what is used in some sample code by Walter Oney from Microsoft.
- this function accesses the disk the first time it is called
- BUG: this function returns DX=0000h for CD-ROM drives under Win95 SP1
- SeeAlso: AX=714Eh,AX=7160h/CL=00h
- Bitfields for long filename volume information flags:
- Bit(s) Description (Table 01783)
- 0 searches are case sensitive
- 1 preserves case in directory entries
- 2 uses Unicode characters in file and directory names
- 3-13 reserved (0)
- 14 supports DOS long filename functions
- 15 volume is compressed
- --------D-2171A1-----------------------------
- INT 21 - Windows95 - LONG FILENAME - "FindClose" - TERMINATE DIRECTORY SEARCH
- AX = 71A1h
- BX = filefind handle (from AX=714Eh)
- Return: CF clear if successful
- CF set on error
- AX = error code
- 7100h if function not supported
- Notes: this function must be called after starting a search with AX=714Eh,
- to indicate that the search handle returned by that function will
- no longer be used
- this function is only available when IFSMgr is running, not under bare
- MS-DOS 7
- SeeAlso: AH=4Eh,AX=714Eh,AX=714Fh
- --------D-2171A2-----------------------------
- INT 21 U - Windows95 - internal - LONG FILENAME - FIND NEXT MATCHING FILE
- AX = 71A2h
- BX = filefind handle (from AX=714Eh)
- SI = date/time format (see #01778)
- ES:DI -> buffer for FindData record (see #01779)
- Return: CF clear if successful
- AX = 71A2h
- CX = Unicode conversion flags (see #01780)
- CF set on error
- AX = error code
- 7100h if function not supported
- Notes: this function is only available when IFSMgr is running, not under bare
- MS-DOS 7; it is functionally identical to AX=714Fh
- documented as "for internal use by Windows 95 only"
- --------D-2171A3-----------------------------
- INT 21 U - Windows95 - internal
- AX = 71A3h
- ???
- Return: ???
- Note: documented as "for internal use by Windows 95 only"
- --------D-2171A4-----------------------------
- INT 21 U - Windows95 - internal
- AX = 71A4h
- ???
- Return: ???
- Note: documented as "for internal use by Windows 95 only"
- --------D-2171A5-----------------------------
- INT 21 U - Windows95 - internal
- AX = 71A5h
- ???
- Return: ???
- Note: documented as "for internal use by Windows 95 only"
- --------D-2171A6-----------------------------
- INT 21 - Windows95 - LONG FILENAME - GET FILE INFO BY HANDLE
- AX = 71A6h
- BX = file handle
- DS:DX -> buffer for file information (see #01784)
- CF set
- Return: CF clear if successful
- file information record filled
- CF set on error
- AX = error code
- 7100h if function not supported
- SeeAlso: AX=71A7h/BL=00h
- Format of Windows95 file information:
- Offset Size Description (Table 01784)
- 00h DWORD file attributes
- 04h QWORD creation time (0 = unsupported)
- 0Ch QWORD last access time (0 = unsupported)
- 14h QWORD last write time
- 1Ch DWORD volume serial number
- 20h DWORD high 32 bits of file size
- 24h DWORD low 32 bits of file size
- 28h DWORD number of links to file
- 2Ch DWORD unique file identifier (high 32 bits)
- 30h DWORD unique file identifier (low 32 bits)
- Note: the file identifer and volume serial number together uniquely identify
- a file while it is open; the identifier may change when the system
- is restarted or the file is first opened
- --------D-2171A7BL00-------------------------
- INT 21 - Windows95 - LONG FILENAME - FILE TIME TO DOS TIME
- AX = 71A7h
- BL = 00h
- DS:SI -> QWORD file time
- Return: CF clear if successful
- CX = DOS time (see #01665)
- DX = DOS date (see #01666)
- BH = hundredths (10-millisecond units past time in CX)
- CF set on error
- AX = error code
- 7100h if function not supported
- Desc: convert Win95 64-bit file time (UTC) into DOS-style date and time
- (local timezone)
- Note: the conversion fails if the file time's value is outside the range
- 01jan1980 and 31dec2107
- SeeAlso: AX=71A6h,AX=71A7h/BL=01h
- --------D-2171A7BL01-------------------------
- INT 21 - Windows95 - LONG FILENAME - DOS TIME TO FILE TIME
- AX = 71A7h
- BL = 01h
- CX = DOS time (see #01665)
- DX = DOS date (see #01666)
- BH = hundredths (10-millisecond units past time in CX)
- ES:DI -> buffer for QWORD file time
- Return: CF clear if successful
- ES:DI buffer filled
- CF set on error
- AX = error code
- 7100h if function not supported
- Desc: convert DOS-style date and time (local timezone) into Win95 64-bit
- file time (UTC)
- SeeAlso: AX=71A6h,AX=71A7h/BL=00h
- --------D-2171A8-----------------------------
- INT 21 - Windows95 - LONG FILENAME - GENERATE SHORT FILENAME
- AX = 71A8h
- DS:SI -> ASCIZ long filename (no path allowed!)
- ES:DI -> buffer for ASCIZ short filename
- DH = short name's format
- 00h 11-char directory entry/FCB filename format
- 01h DOS 8.3
- DL = character sets
- bits 7-4: short name's character set (see #01785)
- bits 3-0: long name's character set (see #01785)
- Return: CF clear if successful
- ES:DI buffer filled
- CF set on error
- AX = error code
- 7100h if function not supported
- Note: this function uses the same algorithm as the filesystem except that
- the returned name never has a numeric tail for disambiguation
- SeeAlso: AX=7160h/CL=00h,AX=7160h/CL=02h,AX=71A7h/BL=00h
- (Table 01785)
- Values for Windows95 filename character set:
- 00h Windows ANSI
- 01h current OEM character set
- 02h Unicode
- --------D-2171A9-----------------------------
- INT 21 - Windows95 - LONG FILENAME - SERVER CREATE OR OPEN FILE
- AX = 71A9h
- BX = access mode and sharing flags (see #01782,also AX=6C00h)
- CX = attributes
- DX = action (see #01781)
- DS:SI -> ASCIZ filename
- DI = alias hint (number to append to short filename for disambiguation)
- Return: CF clear if successful
- AX = global file handle
- CX = action taken
- 0001h file opened
- 0002h file created
- 0003h file replaced
- CF set on error
- AX = error code (see #01680)
- 7100h if function not supported
- Note: for use by real-mode servers only
- SeeAlso: AX=6C00h,AX=716Ch
- --------D-2171AABH00-------------------------
- INT 21 - Windows95 - LONG FILENAME - CREATE SUBST
- AX = 71AAh
- BH = 00h
- BL = drive number (00h = default, 01h = A:, etc.)
- DS:DX -> ASCIZ pathname to associate with drive letter
- Return: CF clear if successful
- CF set on error
- AX = error code (see #01680)
- 7100h if function not supported
- SeeAlso: AX=71AAh/BH=01h,AX=71AAh/BH=02h,INT 2F/AX=1000h,#01643
- --------D-2171AABH01-------------------------
- INT 21 - Windows95 - LONG FILENAME - TERMINATE SUBST
- AX = 71AAh
- BH = 01h
- BL = drive number (01h = A:, etc.)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #01680)
- 7100h if function not supported
- Note: the specified drive number may not be 00h (default), and presumably not
- the current drive either
- SeeAlso: AX=71AAh/BH=00h,AX=71AAh/BH=02h,INT 2F/AX=1000h,#01643
- --------D-2171AABH02-------------------------
- INT 21 - Windows95 - LONG FILENAME - QUERY SUBST
- AX = 71AAh
- BH = 02h
- BL = drive number (01h = A:, etc.)
- DS:DX -> buffer for ASCIZ pathname associated with drive letter
- Return: CF clear if successful
- DS:DX buffer filled
- CF set on error
- AX = error code (see #01680)
- 7100h if function not supported
- Note: the specified drive number may not be 00h (default drive)
- SeeAlso: AX=71AAh/BH=00h,AX=71AAh/BH=01h,INT 2F/AX=1000h,#01643
- --------D-2172-------------------------------
- INT 21 - Windows95 beta - LFN-FindClose
- AH = 72h
- details not available
- Return: CF clear if successful
- CF set on error
- AX = error code (see #01680)
- 7200h if function not supported (e.g. under bare MS-DOS 7)
- Note: this function was present in beta versions of Windows95, but is
- probably not present in the release version
- SeeAlso: AX=71A1h
- --------D-2173-------------------------------
- INT 21 - MS-DOS 7 - DRIVE LOCKING ???
- AH = 73h
- DL = drive (0=current, 1=A:, etc.)
- CL = which flag to get or set
- 00h drive flag???
- 01h ???
- AL = subfunction
- 00h get ???
- 01h set ???
- CH = new values for ??? flags
- bit 1: ??? (CL=00h only)
- bit 3: ??? (CL=01h only)
- Return: CF clear if successful
- for AL=00h:
- AL = value of CL on entry
- for CL=00h: AH = new flag and 06h (i.e. bits 1 and 2 used)
- for CL=01h: AH = new flag and 08h (i.e. bit 3 used)
- (flag being taken from a table of bytes)
- CF set on error
- AX = error code (01h,0Fh,etc.) (see #01680)
- 7300h if function not supported
- Note: these two subfunctions are available even when only the MS-DOS kernel
- is running
- --------D-217302-----------------------------
- INT 21 - Windows95 - FAT32 - "Get_ExtDPB" - GET EXTENDED DPB
- AX = 7302h
- DL = drive number (00h=default, 01h=A:, etc.)
- ES:DI -> buffer for returned data (see #01786)
- CX = length of buffer (003Fh for Windows95)
- SI = signature (undocumented, must be F1A6h to get device driver
- address and next-DBP pointer) (see #01787)
- Return: CF clear if successful
- ES:DI buffer filled
- CF set on error
- AX = error code
- 0018h bad buffer length
- SeeAlso: AX=7303h,AX=7304h,AH=1Fh,AH=32h
- Format of Get_ExtDPB data buffer:
- Offset Size Description (Table 01786)
- 00h WORD (call) length of following data (003Dh)
- 02h 61 BYTEs (ret) drive parameter block (DPB) (see #01787)
-
- Format of Extended Drive Parameter Block:
- Offset Size Description (Table 01787)
- 00h 24 BYTEs standard DOS 4+ DPB
- 18h BYTE "dpb_flags" (undocumented)
- FFh force media check
- 19h DWORD pointer to next DPB (see note)
- 1Dh WORD cluster at which to start search for free space when writing,
- usually the last cluster allocated
- 1Fh WORD number of free clusters on drive, FFFFh = unknown
- 21h WORD high word of free cluster count
- 23h WORD active FAT/mirroring
- bit 7: do not mirror active FAT to inactive FATs
- bits 6-4: reserved (0)
- bits 3-0: the 0-based FAT number of the active FAT
- (only meaningful if mirroring disabled)
- 25h WORD sector number of file system information sector, or
- FFFFh for none (see also #01788)
- 27h WORD sector number of backup boot sector, or FFFFh for none
- 29h DWORD first sector number of the first cluster
- 2Dh DWORD maximum cluster number
- 31h DWORD number of sectors occupied by FAT
- 35h DWORD cluster number of start of root directory
- 39h DWORD cluster number at which to start searching for free space
- Notes: except for offset 18h, all of the first 33 bytes are identical to
- the standard DOS 4-6 DPB
- unless the proper value is given in SI on entry to "Get_ExtDBP", the
- next-DPB pointer and device driver address are set to 0000h:0000h
- SeeAlso: #01786,#01395 at AH=32h,#01664
- Format of File System Information structure:
- Offset Size Description (Table 01788)
- 00h DWORD signature 61417272h
- 04h DWORD number of free clusters (FFFFFFFFh if unknown)
- 08h DWORD most recently allocated cluster
- 0Ch 12 BYTEs reserved
- SeeAlso: #01787
- --------D-217303-----------------------------
- INT 21 - Windows95 - FAT32 - GET EXTENDED FREE SPACE ON DRIVE
- AX = 7303h
- DS:DX -> ASCIZ string for drive ("C:\" or "\\SERVER\Share")
- ES:DI -> buffer for extended free space structure (see #01789)
- CX = length of buffer for extended free space
- Return: CF clear if successful
- ES:DI buffer filled
- CF set on error
- AX = error code
- Notes: this function reportedly returns a maximum of 2GB free space even on
- an FAT32 partition larger than 2GB under some versions of Win95,
- apparently by limiting the number of reported free clusters to no
- more than 64K
- on DOS versions which do not support the FAT32 calls, this function
- returns CF clear/AL=00h (which is the DOS v1+ method for reporting
- unimplemented functions)
- SeeAlso: AX=7302h,AX=7304h,AX=7305h,AH=36h
- Format of extended free space structure:
- Offset Size Description (Table 01789)
- 00h WORD (ret) size of returned structure
- 02h WORD (call) structure version (0000h)
- (ret) actual structure version (0000h)
- 04h DWORD number of sectors per cluster (with adjustment for compression)
- 08h DWORD number of bytes per sector
- 0Ch DWORD number of available clusters
- 10h DWORD total number of clusters on the drive
- 14h DWORD number of physical sectors available on the drive, without
- adjustment for compression
- 18h DWORD total number of physical sectors on the drive, without
- adjustment for compression
- 1Ch DWORD number of available allocation units, without adjustment
- for compression
- 20h DWORD total allocation units, without adjustment for compression
- 24h 8 BYTEs reserved
- --------D-217304-----------------------------
- INT 21 - Windows95 - FAT32 - Set DPB TO USE FOR FORMATTING
- AX = 7304h
- DL = drive number (00h=default, 01h=A:, etc.)
- ES:DI -> buffer for Set_DPBforFormat structure (see #01790)
- Return: CF clear if successful
- ES:DI buffer updated
- CF set on error
- AX = error code
- SeeAlso: AX=7302h,AX=7303h,AX=7305h
- Format of Set_DPBforFormat structure:
- Offset Size Description (Table 01790)
- 00h WORD (call) size
- 02h WORD (call) structure version??? (0000h)
- (ret) ???
- 04h DWORD (call) function number
- 00h invalidate DPB counts
- 01h rebuild DPB from BPB
- 02h force media change (next access to drive rebuild DPB)
- 03h get/set active FAT number and mirroring
- 04h get/set root directory cluster number
- ---function 00h---
- 08h DWORD new DPB free count (00000000h=no change, FFFFFFFFh=unknown)
- 0Ch DWORD new DPB next-free (00000000h=no change, FFFFFFFFh=unknown)
- 10h DWORD unused
- 14h DWORD unused
- ---function 01h---
- 08h DWORD unused???
- 0Ch DWORD (call) -> BIOS Parameter Block from which to rebuild DPB
- 10h DWORD unused
- 14h DWORD unused
- ---function 02h---
- 08h DWORD unused
- 0Ch DWORD unused
- 10h DWORD unused
- 14h DWORD unused
- ---function 03h---
- 08h DWORD (call) new active FAT/mirroring state, or FFFFFFFFh to get
- bits 3-0: the 0-based FAT number of the active FAT
- bits 6-4: reserved (0)
- bit 7: do not mirror active FAT to inactive FATs
- 0Ch DWORD (ret) previous active FAT/mirroring state (as above)
- 10h DWORD unused
- 14h DWORD unused
- ---function 04h---
- 08h DWORD (call) new root directory cluster number
- FFFFFFFFh to get current
- 0Ch DWORD (ret) previous root directory cluster number
- 10h DWORD unused
- 14h DWORD unused
- --------D-217305CXFFFF-----------------------
- INT 21 - Windows95 - FAT32 - EXTENDED ABSOLUTE DISK READ/WRITE
- AX = 7305h
- CX = FFFFh
- DL = drive number (01h=A:, etc.)
- SI = read/write mode flags (see #01791)
- DS:BX -> disk I/O packet (see #02548 at INT 25)
- Return: CF clear if successful
- CF set on error
- AX = error code
- Note: one can not specify the default drive (DL=00h) for this function.
- SeeAlso: AX=7302h,AX=7304h,INT 25,INT 26
- Bitfields for Extended Absolute Disk Read/Write mode flags:
- Bit(s) Description (Table 01791)
- 0 direction (0=read, 1=write)
- 12-1 reserved (0)
- 14-13 write type (should be 00 on reads)
- 00 unknown data
- 01 FAT data
- 10 directory data
- 11 file data
- 15 reserved (0)
- --------v-217575-----------------------------
- INT 21 - VIRUS - "LEGO" -INSTALLATION CHECK
- AX = 7575h
- Return: AX = 4321h if resident
- SeeAlso: AX=6969h,AH=76h"VIRUS"
- --------v-2176-------------------------------
- INT 21 - VIRUS - "Klaeren"/"Hate" - INSTALLATION CHECK
- AH = 76h
- Return: AL = 48h if resident
- SeeAlso: AX=7575h,AX=7700h"VIRUS"
- --------v-217700-----------------------------
- INT 21 - VIRUS - "Growing Block" - INSTALLATION CHECK
- AX = 7700h
- Return: AX = 0920h if resident
- SeeAlso: AH=76h,AX=7BCEh,AH=7Fh
- --------V-217734-----------------------------
- INT 21 U - SCROLLit v1.7 - INSTALLATION CHECK
- AX = 7734h
- Return: DX = 3477h if installed
- AX = segment of resident code
- Program: ScrollIt is a shareware backscroll utility by Bromfield Software
- Products
- --------U-217761-----------------------------
- INT 21 - WATCH.COM v3.2+ - INSTALLATION CHECK
- AX = 7761h ('wa')
- Return: AX = 6177h
- Note: WATCH.COM is part of the "TSR" package by TurboPower Software
- SeeAlso: INT 16/AX=7761h
- --------v-217BCE-----------------------------
- INT 21 - VIRUS - "Whisper"/"Taipan" - INSTALLATION CHECK
- AX = 7BCEh
- Return: AX = 7BCEh if resident (???)
- SeeAlso: AX=5454h"VIRUS",AX=7700h,AX=7BCFh,AH=7Fh"VIRUS"
- --------v-217BCF-----------------------------
- INT 21 - VIRUS - "Tai-Pan.666"/"Doom II Death" - INSTALLATION CHECK
- AX = 7BCFh
- Return: AX = 7BCFh if resident
- SeeAlso: AX=7BCEh"VIRUS",AH=7Dh"VIRUS"
- --------v-217D-------------------------------
- INT 21 - VIRUS - "OffSpring" - INSTALLATION CHECK
- AH = 7Dh
- Return: AH = FAh if installed
- SeeAlso: AX=7BCFh"VIRUS",AH=7Fh"VIRUS"
- --------v-217F-------------------------------
- INT 21 - VIRUS - "Squeaker","ASeXual" - INSTALLATION CHECK
- AH = 7Fh
- Return: AH = 80h if resident
- SeeAlso: AX=7BCEh,AH=83h"VIRUS"
- --------D-2180-------------------------------
- INT 21 - European MS-DOS 4.0 - "AEXEC" - EXECUTE PROGRAM IN BACKGROUND
- AH = 80h
- CX = mode
- 0000h place child in zombie mode on exit to preserve exit code
- 0001h discard child process and exit code on termination
- DS:DX -> ASCIZ full program name
- ES:BX -> parameter block (as for AX=4B00h)
- Return: CF clear if successful
- AX = Command Subgroup ID (CSID)
- CF set on error
- AX = error code (see #01680 at AH=59h/BX=0000h)
- Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
- by several other European OEMs; its release falls between mainstream
- versions 3.2 and 3.3
- Desc: asynchronously execute a program, creating a new process for it
- Notes: this function is called by the DETACH command
- there is a system-wide limit of 32 processes
- the CSID is used to identify all processes that have been spawned by
- a given process, whether directly or indirectly
- programs to be run in the background must use the new executable format
- (see #01596 at AH=4Bh)
- background processes may only perform asynchronous (background) EXECs,
- either this function or AX=4B04h
- background processes may execute INT 11, INT 12, INT 21, INT 2A, and
- INT 2F at any time; they may execute INT 10 and INT 16 only while
- they have opened a popup screen via INT 2F/AX=1401h; no other
- interrupts may be executed from the background
- background processes may not use drive B: or overlay their code
- segments
- see AX=8700h for an installation check
- the "NE" new executable format made its first appearance in European
- MS-DOS 4.0
- SeeAlso: AH=4Bh,AH=87h,INT 2F/AX=1400h"POPUP"
- ----------218080-----------------------------
- INT 21 - PCW Weather Card interface - UNINSTALL PCW.COM AND FREE MEMORY
- AX = 8080h
- Return: ???
- SeeAlso: AX=7070h/BX=7070h
- --------D-2181-------------------------------
- INT 21 - European MS-DOS 4.0 - "FREEZE" - STOP A PROCESS
- AH = 81h
- BX = flag (00h freeze command subtree, 01h only specified process)
- CX = Process ID of head of command subtree
- Return: CF clear if successful
- CF set on error
- AX = error code (no such process)
- Desc: temporarily suspend a process or a process and all of its children
- Note: if BX=0001h, this call will not return until the process is actually
- frozen, which may not be until after it unblocks from an I/O
- operation
- SeeAlso: AH=82h,AH=89h,AX=8E00h,INT 15/AX=101Dh
- --------D-2182-------------------------------
- INT 21 - European MS-DOS 4.0 - "RESUME" - RESTART A PROCESS
- AH = 82h
- BX = flag (00h resume command subtree, 01h only specified process)
- CX = Process ID of head of command subtree
- Return: CF clear if successful
- CF set on error
- AX = error code (no such process)
- Desc: restart a previously-suspended process or a process and all of its
- children
- SeeAlso: AH=81h,INT 15/AX=101Eh
- --------D-2183-------------------------------
- INT 21 - European MS-DOS 4.0 - "PARTITION" - GET/SET FOREGROUND PARTITION SIZE
- AH = 83h
- AL = function
- 00h get size
- 01h set new size
- BX = new size in paragraphs
- Return: CF clear if successful
- BX = current size (function 00h) or old size (function 01h)
- CF set on error
- AX = error code (01h,07h,0Dh)(see #01680 at AH=59h/BX=0000h)
- Desc: specify or determine how much memory may be allocated by the foreground
- process
- Note: if the partition size is set to 0000h, no partition management is done
- and all memory allocation is compatible with DOS 3.2.
- the partition size can be changed regardless of what use is being made
- of the changed memory; subsequent allocations will follow the
- partition rules (foreground processes may allocate only foreground
- memory; background processes allocate background memory first, then
- foreground memory)
- SeeAlso: AH=48h,AH=4Ah
- --------v-2183-------------------------------
- INT 21 - VIRUS - "SVC" - INSTALLATION CHECK
- AH = 83h
- Return: DX = 1990h if resident
- SeeAlso: AH=76h,AH=84h"VIRUS"
- --------v-2184-------------------------------
- INT 21 - VIRUS - "SVC 5.0" or "SVC 6.0" - INSTALLATION CHECK
- AH = 84h
- Return: DX = 1990h if resident
- BH = version number (major in high nybble, minor in low)
- SeeAlso: AH=83h"VIRUS",AH=89h"VIRUS"
- --------D-218400-----------------------------
- INT 21 - European MS-DOS 4.0 - "CREATMEM" - CREATE A SHARED MEMORY AREA
- AX = 8400h
- BX = size in bytes (0000h = 65536)
- CX = flags
- bit 6: zero-initialize segment
- DS:DX -> ASCIZ name (must begin with "\SHAREMEM\")
- Return: CF clear if successful
- AX = segment address of shared memory global object
- CF set on error
- AX = error code (06h,08h) (see #01680 at AH=59h/BX=0000h)
- Desc: create an area of memory which may be accessed by multiple processes
- Notes: shared memory objects are created as special files (thus the
- restriction on the name)
- on successful creation, the reference count is set to 1
- SeeAlso: AX=8401h,AX=8402h,INT 15/AX=DE19h
- --------D-218401-----------------------------
- INT 21 - European MS-DOS 4.0 - "GETMEM" - OBTAIN ACCESS TO SHARED MEMORY AREA
- AX = 8401h
- CX = flags
- bit 7: writable segment (ignored by MS-DOS 4.0)
- DS:DX -> ASCIZ name (must begin with "\SHAREMEM\")
- Return: CF clear if successful
- AX = segment address of shared memory global object
- CX = size in bytes
- CF set on error
- AX = error code (invalid name)
- Desc: get address of a previously-created area of memory which may be
- accessed by multiple processes
- Note: this call increments the reference count for the shared memory area
- SeeAlso: AX=8400h,AX=8402h
- --------D-218402-----------------------------
- INT 21 - European MS-DOS 4.0 - "RELEASEMEM" - FREE SHARED MEMORY AREA
- AX = 8402h
- BX = handle (segment address of shared memory object)
- Return: CF clear if successful
- CF set on error
- AX = error code (no such name)
- Desc: indicate that the specified area of shared memory will no longer be
- used by the caller
- Note: the reference count is decremented and the shared memory area is
- deallocated if the new reference count is zero
- SeeAlso: AX=8400h,AX=8401h,INT 15/AX=DE19h
- --------D-2185-------------------------------
- INT 21 U - European MS-DOS 4.0 - ???
- AH = 85h
- ???
- Return: ???
- --------D-2186-------------------------------
- INT 21 - European MS-DOS 4.0 - "SETFILETABLE" - INSTALL NEW FILE HANDLE TABLE
- AH = 86h
- BX = total number of file handles in new table
- Return: CF clear if successful
- CF set on error
- AX = error code (06h,08h) (see #01680 at AH=59h/BX=0000h)
- Desc: adjust the size of the per-process open file table, thus raising or
- lowering the limit on the number of files the caller can open
- simultaneously
- Notes: any currently-open files are copied to the new table
- if the table is increased beyond the default 20 handles, only the
- first 20 will be inherited by child processes
- error 06h is returned if the requested number of handles exceeds
- system limits or would require closing currently-open files
- SeeAlso: AH=26h,AH=67h
- --------D-2187-------------------------------
- INT 21 - European MS-DOS 4.0 - "GETPID" - GET PROCESS IDENTIFIER
- AH = 87h
- Return: AX = PID
- BX = parent process's PID
- CX = Command Subgroup ID (CSID)
- Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
- by several other European OEMs; its release falls between mainstream
- versions 3.2 and 3.3
- Desc: determine an identifier by which to access the calling process
- Notes: called by MS C v5.1 getpid() function
- this function apparently must return AX=0001h for INT 21/AH=80h to
- succeed
- one possible check for European MS-DOS 4.0 is to issue this call with
- AL=00h and check whether AL is nonzero on return
- SeeAlso: AH=30h,AH=62h,AH=80h
- Index: installation check;European MS-DOS 4.0
- --------D-2188-------------------------------
- INT 21 U - European MS-DOS 4.0 - ???
- AH = 88h
- ???
- Return: ???
- SeeAlso: AH=87h
- --------D-2189-------------------------------
- INT 21 - European MS-DOS 4.0 - SLEEP
- AH = 89h
- CX = time in milliseconds or 0000h to give up time slice
- Return: CF clear if successful
- CX = 0000h
- CF set on error
- AX = error code (interrupted system call)
- CX = sleep time remaining
- Desc: suspend the calling process for the specified duration
- Notes: the sleep interval is rounded up to the next higher increment of the
- scheduler clock, and may be extended further if other processes are
- running
- this call may be interrupted by signals (see AH=8Dh)
- reportedly called by Microsoft C 4.0 startup code
- background processes have higher priority than the foreground process,
- and should thus periodically yield the CPU
- SeeAlso: AH=81h,INT 15/AX=1000h,INT 2F/AX=1680h,INT 7A/BX=000Ah
- --------v-2189-------------------------------
- INT 21 - VIRUS - "Vriest" - INSTALLATION CHECK
- AH = 89h
- Return: AX = 0123h if resident
- SeeAlso: AH=84h"VIRUS",AH=90h"VIRUS"
- --------D-218A-------------------------------
- INT 21 - European MS-DOS 4.0 - "CWAIT" - WAIT FOR CHILD TO TERMINATE
- AH = 8Ah
- BL = range (00h command subtree, 01h any child)
- BH = suspend flag
- 00h suspend if children exist but none are dead
- 01h return if no dead children
- CX = Process ID of head of command subtree
- Return: CF clear if successful
- AH = termination type (see #01792)
- AL = return code from child or aborting signal
- BX = PID of child (0000h if no dead children)
- CF set on error
- AX = error code (no child,interrupted system call)
- Desc: get return code from an asynchronously-executed child program,
- optionally waiting if no return code is available
- SeeAlso: AH=4Bh,AH=4Dh,AH=80h,AH=8Dh
- (Table 01792)
- Values for termination type:
- 00h normal termination
- 01h aborted by Control-C
- 02h aborted by I/O error
- 03h terminate and stay resident
- 04h aborted by signal
- 05h aborted by program error
- --------D-218B-------------------------------
- INT 21 U - European MS-DOS 4.0 - ???
- AH = 8Bh
- ???
- Return: ???
- SeeAlso: AH=87h
- --------D-218C-------------------------------
- INT 21 - European MS-DOS 4.0 - SET SIGNAL HANDLER
- AH = 8Ch
- AL = signal number (see #01793)
- BL = action (see #01794)
- DS:DX -> signal handler (see #01795)
- Return: CF clear if successful
- AL = previous action
- ES:BX -> previous signal handler
- CF set on error
- AX = error code (01h,invalid SigNumber or Action)
- (see #01680 at AH=59h/BX=0000h)
- Desc: set the routine which will be invoked on a number of exceptional
- conditions
- Note: all signals will be sent to the most recently installed handler
- SeeAlso: AH=8Dh
- (Table 01793)
- Values for European MS-DOS 4.0 signal number:
- 01h SIGINTR Control-C or user defined interrupt key
- 08h SIGTERM program termination
- 09h SIGPIPE broken pipe
- 0Dh SIGUSER1 reserved for user definition
- 0Eh SIGUSER2 reserved for user definition
- (Table 01794)
- Values for signal action:
- 00h SIG_DFL terminate process on receipt
- 01h SIG_IGN ignore signal
- 02h SIG_GET signal is accepted
- 03h SIG_ERR sender gets error
- 04h SIG_ACK acknowledge received signal and clear it, but don't
- change current setting
- (Table 01795)
- Values signal handler is called with:
- AL = signal number (see #01793)
- AH = signal argument
- Return: RETF, CF set: terminate process
- RETF, CF clear, ZF set: abort any interrupted system call with an error
- RETF, CF clear, ZF clear: restart any interrupted system call
- IRET: restart any interrupted system call
- Note: the signal handler may also perform a nonlocal GOTO by resetting the
- stack pointer and jumping; before doing so, it should dismiss the
- signal by calling this function with BL=04h
- --------D-218D-------------------------------
- INT 21 - European MS-DOS 4.0 - SEND SIGNAL
- AH = 8Dh
- AL = signal number (see #01793)
- BH = signal argument
- BL = action
- 00h send to entire command subtree
- 01h send only to specified process
- DX = Process ID
- Return: CF clear if successful
- CF set on error
- AX = error code (01h,06h)(see #01680 at AH=59h/BX=0000h)
- Desc: invoke the exceptional-condition handler for the specified process
- Note: error 06h may be returned if one or more of the affected processes
- have an error handler for the signal
- SeeAlso: AH=8Ch
- --------D-218E00BH00-------------------------
- INT 21 - European MS-DOS 4.0 - "SETPRI" - GET/SET PROCESS PRIORITY
- AX = 8E00h
- BH = 00h
- BL = action
- 00h set priority for command subtree
- 01h set priority for specified process only
- CX = Process ID
- DH = 00h
- DL = change in priority (00h to get priority)
- Return: CF clear if successful
- DL = process priority
- DH destroyed
- CF set on error
- AX = error code (01h,no such process)(see #01680 at AH=59h)
- Desc: specify or determine the execution priority of the specified process
- or the process and all of its children
- SeeAlso: AH=81h
- --------D-218F-------------------------------
- INT 21 U - European MS-DOS 4.0 - ???
- AH = 8Fh
- ???
- Return: ???
- SeeAlso: AH=87h
- --------D-2190-------------------------------
- INT 21 U - European MS-DOS 4.0 - ???
- AH = 90h
- ???
- Return: ???
- SeeAlso: AH=87h
- --------v-2190-------------------------------
- INT 21 - VIRUS - "Carioca" - INSTALLATION CHECK
- AH = 90h
- Return: AH = 01h if resident
- SeeAlso: AH=89h"VIRUS",AX=9753h"VIRUS"
- --------D-2191-------------------------------
- INT 21 U - European MS-DOS 4.0 - ???
- AH = 91h
- ???
- Return: ???
- SeeAlso: AH=87h
- --------D-2192-------------------------------
- INT 21 U - European MS-DOS 4.0 - ???
- AH = 92h
- ???
- Return: ???
- SeeAlso: AH=87h
- --------D-2193-------------------------------
- INT 21 - European MS-DOS 4.0 - "PIPE" - CREATE A NEW PIPE
- AH = 93h
- CX = size in bytes
- Return: CF clear if successful
- AX = read handle
- BX = write handle
- CF set on error
- AX = error code (08h) (see #01680 at AH=59h/BX=0000h)
- Desc: create a communications channel which may be used for interprocess
- data and command exchanges
- SeeAlso: AH=3Ch,AH=3Fh"DOS",AH=40h"DOS",AH=84h
- --------D-2194-------------------------------
- INT 21 U - European MS-DOS 4.0 - ???
- AH = 94h
- ???
- Return: ???
- SeeAlso: AH=87h
- --------D-2195-------------------------------
- INT 21 - European MS-DOS 4.0 - HARD ERROR PROCESSING
- AH = 95h
- AL = new state
- 00h enabled
- 01h disabled, automatically fail hard errors
- Return: AX = previous setting
- Desc: specify whether hard (critical) errors should automatically fail the
- system call or invoke an INT 24
- SeeAlso: INT 24
- --------D-2196-------------------------------
- INT 21 U - European MS-DOS 4.0 - ???
- AH = 96h
- ???
- Return: ???
- --------D-2197-------------------------------
- INT 21 U - European MS-DOS 4.0 - ???
- AH = 97h
- ???
- Return: ???
- --------v-219753-----------------------------
- INT 21 - VIRUS - "Nina" - INSTALLATION CHECK
- AX = 9753h
- Return: never (executes original program) if virus resident
- SeeAlso: AH=90h"VIRUS",AX=A1D5h"VIRUS",AX=9AD5h"VIRUS"
- --------D-2198-------------------------------
- INT 21 U - European MS-DOS 4.0 - ???
- AH = 98h
- ???
- Return: ???
- --------D-2199-------------------------------
- INT 21 u - European MS-DOS 4.0 - "PBLOCK" - BLOCK A PROCESS
- AH = 99h
- DS:BX -> memory location to block on
- CX = timeout in milliseconds
- DH = nonzero if interruptable
- Return: CF clear if awakened by event
- AX = 0000h
- CF set if unusual wakeup
- ZF set if timeout, clear if interrupted by signal
- AX = nonzero
- Desc: suspend calling process until another process sends a "restart" signal
- or a timeout occurs
- SeeAlso: AH=9Ah,INT 2F/AX=0802h
- --------D-219A-------------------------------
- INT 21 u - European MS-DOS 4.0 - "PRUN" - UNBLOCK A PROCESS
- AH = 9Ah
- DS:BX -> memory location processes may have blocked on
- Return: AX = number of processes awakened
- ZF set if no processes awakened
- Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
- by several other European OEMs; its release falls between mainstream
- versions 3.2 and 3.3
- Desc: restart all processes waiting for the specified "restart" signal
- SeeAlso: AH=99h,INT 2F/AX=0802h
- --------v-219AD5------------------------
- INT 21 - VIRUS - "Massacre/Beavis" - INSTALLATION CHECK
- AX = 9AD5h
- Return: AX = 9AD4h if resident
- SeeAlso: AX=6969h"VIRUS",AX=A1D5h"VIRUS"
- --------I-21A0-------------------------------
- INT 21 - Attachmate Extra! - GET 3270 DISPLAY STATE
- AH = A0h
- Return: AL = display status (see #01796)
- BX = host window status (see #01797)
- Program: Attachmate Extra! is a 3270 emulator by Attachmate Corporation
- SeeAlso: AH=A1h
- Bitfields for Attachmate Extra! display status:
- Bit(s) Description (Table 01796)
- 7 0=windowed, 1=enlarged
- 6-3 current screen profile number 0-9
- 2-0 active window number (0=PC, 1-4=host B-E, 5-6=notepad F-G)
- Bitfields for host window status:
- Bit(s) Description (Table 01797)
- 15 reserved
- 14 0=host E window installed, 1=not
- 13 0=host E terminal on, 1=off
- 12 0=host E window displayed, 1=not
- 11 reserved
- 10 0=host D window installed, 1=not
- 9 0=host D terminal on, 1=off
- 8 0=host D window displayed, 1=not
- 7 reserved
- 6 0=host C window installed, 1=not
- 5 0=host C terminal on, 1=off
- 4 0=host C window displayed, 1=not
- 3 reserved
- 2 0=host B window installed, 1=not
- 1 0=host B terminal on, 1=off
- 0 0=host B window displayed, 1=not
- --------I-21A1-------------------------------
- INT 21 - Attachmate Extra! - SET 3270 DISPLAY STATE
- AH = A1h
- AL = new display status byte (see #01796)
- SeeAlso: AH=A0h,AH=A2h
- --------v-21A1D5-----------------------------
- INT 21 - VIRUS - "789"/"Filehider" - INSTALLATION CHECK
- AX = A1D5h
- Return: AX = 900Dh if resident
- SeeAlso: AX=9753h,AX=9AD5h,AX=A55Ah
- --------I-21A2-------------------------------
- INT 21 - Attachmate Extra! - SET HOST WINDOW STATE
- AH = A2h
- AL = new host window status byte (see #01798)
- SeeAlso: AH=A1h
- Bitfields for Attachmate Extra! host window status:
- Bit(s) Description (Table 01798)
- 7 0=power off, 1=power on
- 6 0=not installed, 1=installed
- 5-3 reserved
- 2-0 window number 1-4=host B-E
- --------I-21A3-------------------------------
- INT 21 - Attachmate Extra! - SEND KEYSTROKES TO HOST WINDOW
- AH = A3h
- AL = window number (1-4=host B-E)
- CX = 0001h
- DS:BX -> keystroke buffer
- DL = zero if keystroke buffer contains host function code (see #01799),
- non-zero if keystroke buffer contains ASCII character
- Return: CX = zero if character sent, non-zero if not
- BX incremented if CX=0
- (Table 01799)
- Values for Attachmate Extra! host function code:
- 00h=reserved 10h=PF16 20h=Clear 30h=SysReq
- 01h=PF1 11h=PF17 21h=Print 31h=ErInp
- 02h=PF2 12h=PF18 22h=Left 32h=ErEof
- 03h=PF3 13h=PF19 23h=Right 33h=Ident
- 04h=PF4 14h=PF20 24h=Up 34h=Test
- 05h=PF5 15h=PF21 25h=Down 35h=Reset
- 06h=PF6 16h=PF22 26h=Home 36h=DevCncl
- 07h=PF7 17h=PF23 27h=Fast Left 37h=Dup
- 08h=PF8 18h=PF24 28h=Fast Right 38h=FldMark
- 09h=PF9 19h=Alt on 29h=Bksp 39h=Enter
- 0Ah=PF10 1Ah=Alt off 2Ah=Insert 3Ah=CrSel
- 0Bh=PF11 1Bh=Shift on 2Bh=Delete
- 0Ch=PF12 1Ch=Shift off 2Ch=Backtab
- 0Dh=PF13 1Dh=PA1 2Dh=Tab
- 0Eh=PF14 1Eh=PA2 2Eh=Newline
- 0Fh=PF15 1Fh=PA3 2Fh=Attn
- --------I-21A4-------------------------------
- INT 21 - Attachmate Extra! - GET HOST WINDOW BUFFER ADDRESS
- AH = A4h
- AL = window number (1-4=host B-E)
- Return: DS:BX -> 3270 display buffer
- SeeAlso: AH=A5h,AH=B8h
- --------I-21A5-------------------------------
- INT 21 - Attachmate Extra! - GET HOST WINDOW CURSOR POSITION
- AH = A5h
- AL = window number (1-4=host B-E)
- Return: BX = cursor position (80 * row + column, where 0:0 is upper left)
- Note: if the host window is configured with the Extended Attribute (EAB)
- feature, multiply the cursor position by 2 to obtain the byte offset
- into the display buffer
- SeeAlso: AH=A4h
- --------v-21A55A-----------------------------
- INT 21 - VIRUS - "Eddie-2" - INSTALLATION CHECK
- AX = A55Ah
- Return: AX = 5AA5h if resident
- SeeAlso: AX=A1D5h,AX=AA00h
- --------v-21AA00-----------------------------
- INT 21 - VIRUS - "Blinker" - INSTALLATION CHECK
- AX = AA00h
- Return: AX = 00AAh if resident
- SeeAlso: AX=A55Ah,AX=AA03h
- --------v-21AA03-----------------------------
- INT 21 - VIRUS - "Backtime" - INSTALLATION CHECK
- AX = AA03h
- Return: AX = 03AAh if resident
- SeeAlso: AX=AA00h,AH=ABh
- --------v-21AB-------------------------------
- INT 21 - VIRUS - "600" or "Voronezh"-family - INSTALLATION CHECK
- AH = ABh
- Return: AX = 5555h if resident
- SeeAlso: AX=AA03h,AX=ABCDh,AX=BBBBh"VIRUS"
- --------v-21ABCD-----------------------------
- INT 21 - VIRUS - Major BBS - INSTALLATION CHECK
- AX = ABCDh
- Return: AX = 1234h if installed
- SeeAlso: AH=ABh"VIRUS",AX=ABCDh"SuperVirus"
- --------v-21ABCD------------------------
- INT 21 - VIRUS - "SuperVirus 2" - INSTALLATION CHECK
- AX = ABCDh
- Return: AX = DCBAh if resident
- SeeAlso: AX=ABCDh"VIRUS",AX=BBBBh"VIRUS"
- --------I-21AF-------------------------------
- INT 21 - Attachmate Extra! - GET TRANSLATE TABLE ADDRESS
- AH = AFh
- Return: DS:BX -> translate tables (see #01800)
- Format of Attachmate Extra! translate tables:
- Offset Size Description (Table 01800)
- 00h 256 BYTEs ASCII to 3270 buffer code translate table
- 100h 256 BYTEs 3270 buffer code to ASCII translate table
- 200h 256 BYTEs 3270 buffer code to EBCDIC translate table
- 300h 256 BYTEs EBCDIC to 3270 buffer code translate table
- --------v-21B3-------------------------------
- INT 21 - VIRUS - "Requires" - INSTALLATION CHECK
- AH = B3h
- Return: AX = 9051h if resident
- SeeAlso: AH=7Fh"VIRUS",AX=B974h"VIRUS"
- --------N-21B300-----------------------------
- INT 21 U - Novell NetWare - CHECK LIP/PACKET SIGNING/IPX CHECKSUM SUPPORT???
- AX = B300h
- Return: AX = 0000h if supported???
- Note: this function appeared with the packet signing/Large Internet Packets/
- IPX Checksum-aware NetWare shells
- SeeAlso: AX=B301h,AX=B302h
- --------N-21B301-----------------------------
- INT 21 U - Novell NetWare - CHECK SIGNATURE LEVEL???
- AX = B301h
- Return: AX = 0000h if supported???
- BX:CX indicate signature level (see #01801)
- Note: this function appeared with the packet signing/Large Internet Packets/
- IPX Checksum-aware NetWare shells
- SeeAlso: AX=B300h,AX=B304h,#02875 at INT 2F/AX=7A20h/BX=0000h
- (Table 01801)
- Values for signature level indicator:
- 0000h:0000h = signature level 0
- 0002h:0000h = signature level 1
- 0202h:0000h = signature level 2
- 0202h:0202h = signature level 3
- --------N-21B302-----------------------------
- INT 21 U - Novell NetWare - START PACKET SIGNING
- AX = B302h
- CX = server connection (1-8)
- DS:SI -> 24-byte buffer containing ???
- Return: ???
- Notes: this function appeared with the packet signing/Large Internet Packets/
- IPX Checksum-aware NetWare shells
- if packet signing is active, this call is required if and only if the
- last call successfully authenticated the workstation to the server
- SeeAlso: AX=B300h,#02875
- --------N-21B304-----------------------------
- INT 21 U - Novell NetWare - SET SIGNATURE LEVEL
- AX = B304h
- BX:CX = new signature level (see AX=B301h)
- Return: ???
- Note: this function appeared with the packet signing/Large Internet Packets/
- IPX Checksum-aware NetWare shells
- SeeAlso: AX=B300h,AX=B301h,AX=B306h,#02875
- --------N-21B306-----------------------------
- INT 21 - Novell NetWare - RENEGOTIATE SECURITY LEVEL
- AX = B306h
- CX = server connection number (01h-08h)
- Return: ???
- Note: this function appeared with the packet signing/Large Internet Packets/
- IPX Checksum-aware NetWare shells
- SeeAlso: AX=B300h,AX=B304h,#02875
- --------N-21B4-------------------------------
- INT 21 U - Novell NetWare - "AttachHandle"
- AH = B4h
- DS:SI -> input buffer (see #01802)
- Return: AX = DOS file handle or return code
- Note: this is an interface provided by NetWare to give DOS file access to
- NetWare files on non-DOS systems such as Macintosh, OS/2, and Unix
- SeeAlso: AX=E909h
- Format of Novell NetWare input buffer:
- Offset Size Description (Table 01802)
- 00h BYTE "WorkFileServer"
- 01h BYTE access code
- 02h DWORD "OpenHandle"
- 06h WORD "OpenHandleCount"
- 08h DWORD "OpenFileSize"
- Note: the six bytes at 02h-07h appear to be the six-byte NetWare handle
- returned by AX=E909h
- --------N-21B500-----------------------------
- INT 21 U - Novell NetWare - VNETWARE.386 API - GET INSTANCE DATA
- AX = B500h
- Return: ES:BX -> data
- CX = length
- SeeAlso: AX=B501h,AX=B502h
- --------N-21B501-----------------------------
- INT 21 U - Novell NetWare - VNETWARE.386 API - END VIRTUAL MACHINE
- AX = B501h
- SeeAlso: AX=B500h,AX=B502h
- --------N-21B502-----------------------------
- INT 21 U - Novell NetWare - VNETWARE.386 API - START VIRTUAL MACHINE
- AX = B502h
- SeeAlso: AX=B500h,AX=B501h
- --------N-21B5-------------------------------
- INT 21 - Novell NetWare shell 3.01 - TASK MODE CONTROL
- AH = B5h
- AL = subfunction
- 03h get task mode
- Return: AH = 00h
- AL = current task mode byte (see #01803)
- 04h get task mode pointer
- Return: ES:BX -> task mode byte
- Notes: the task mode byte specifies how task cleanup should be performed, but
- is declared to be version-dependent
- allows a program to disable the automatic cleanup for programs managing
- task swapping, etc.
- (Table 01803)
- Values for NetWare task mode byte in version 3.01:
- 00h-03h reserved
- 04h no task cleanup
- --------N-21B505-----------------------------
- INT 21 U - Novell NetWare - VNETWARE.386 API - SET VIRTUAL MACHINE ID
- AX = B505h
- ???
- Return: ???
- SeeAlso: AX=B502h,AX=B506h
- --------N-21B506-----------------------------
- INT 21 U - Novell NetWare - VNETWARE.386 API - GET VIRTUAL MACH SUPPORT LEVEL
- AX = B506h
- Return: AX = ??? (0002h)
- SeeAlso: AX=B505h
- --------N-21B507-----------------------------
- INT 21 - Novell NetWare - NetWare Shell - GET NUMBER OF PACKET BURST BUFFERS
- AX = B507h
- Return: AL = number of packet burst buffers (configured at shell load time)
- --------N-21B6-------------------------------
- INT 21 - Novell NetWare - FILE SERVICES - EXTENDED FILE ATTRIBUTES
- AH = B6h
- AL = subfunction
- 00h get extended file attributes
- 01h set extended file attributes
- CL = extended file attributes (see #01804)
- DS:DX -> ASCIZ pathname (max 255 bytes)
- Return: CF set on error
- AL = error code
- 8Ch caller lacks privileges
- FEh not permitted to search directory
- FFh file not found
- CF clear if successful
- AL = 00h (success)
- CL = current extended file attributes (see #01804)
- Note: this function is supported by Advanced NetWare 2.1+
- SeeAlso: AX=4300h,AH=E3h/SF=0Fh
- Bitfields for NetWare extended file attributes:
- Bit(s) Description (Table 01804)
- 2-0 search mode (executables only)
- 000 none (use shell's default search)
- 001 search on all opens without path
- 010 do not search
- 011 search on read-only opens without path
- 100 reserved
- 101 search on all opens
- 110 reserved
- 111 search on all read-only opens
- 3 reserved
- 4 transactions on file tracked
- 5 file's FAT indexed
- 6 read audit (to be implemented)
- 7 write audit (to be implemented)
- --------N-21B7-------------------------------
- INT 21 U - Novell NetWare - "HoldFileModeSet" (obsolete)
- AH = B7h
- AL = new value for HoldFileFlag
- Return: AL = previous value of HoldFileFlag
- Note: this function provided backward compatibility with a bug in early
- DOS versions and CP/M, but is no longer used or supported
- --------I-21B8-------------------------------
- INT 21 - Attachmate Extra! - DISABLE HOST BUFFER UPDATES
- AH = B8h
- AL = window number (1-4=host B-E)
- DL = 01h
- Notes: only valid in CUT mode
- next AID keystroke (eg Enter) enables host buffer updates
- SeeAlso: AH=A4h
- --------N-21B800-----------------------------
- INT 21 - Novell NetWare - PRINT SERVICES - GET DEFAULT CAPTURE FLAGS
- AX = B800h
- CX = size of reply buffer (01h-3Fh)
- ES:BX -> reply buffer for capture flags table (see #01805)
- Return: AL = status
- 00h successful
- Note: this function is supported by Advanced NetWare 2.0+
- SeeAlso: AX=B801h,AX=B802h,AH=DFh/DL=00h,AH=DFh/DL=04h
- Format of NetWare capture flags table:
- Offset Size Description (Table 01805)
- 00h BYTE status (used internally, should be set to 00h)
- 01h BYTE print flags (see #01806)
- 02h BYTE tab size (01h-12h, default 08h)
- 03h BYTE printer number on server (00h-04h, default 00h)
- 04h BYTE number of copies to print (00h-FFh, default 01h)
- 05h BYTE form type required in printer (default 00h)
- 06h BYTE reserved
- 07h 13 BYTEs text to be placed on banner page
- 14h BYTE reserved
- 15h BYTE default local printer (00h = LPT1)
- 16h WORD (big-endian) timeout in clock ticks for flushing capture file
- on inactivity, or 0000h to disable timeout
- 18h BYTE flush capture file on LPT close if nonzero
- 19h WORD (big-endian) maximum lines per page
- 1Bh WORD (big-endian) maximum characters per line
- 1Dh 13 BYTEs name of form required in printer
- 2Ah BYTE LPT capture flag
- 00h inactive, FFh LPT device is being captured
- 2Bh BYTE file capture flag
- 00h if no file specified, FFh if capturing to file
- 2Ch BYTE timing out (00h if no timeout in effect, FFh if timeout counter
- running)
- 2Dh DWORD (big-endian) address of printer setup string
- 31h DWORD (big-endian) address of printer reset string
- 35h BYTE target connection ID
- 36h BYTE capture in progress if FFh
- 37h BYTE job queued for printing if FFh
- 38h BYTE print job valid if FFh
- 39h DWORD bindery object ID of print queue if previous byte FFh
- 3Dh WORD (big-endian) print job number (1-999)
- Bitfields for NetWare print flags:
- Bit(s) Description (Table 01806)
- 2 print capture file if interrupted by loss of connection
- 3 no automatic form feed after print job
- 6 printing control sequences interpreted by print service
- 7 print banner page before capture file
- --------N-21B801-----------------------------
- INT 21 - Novell NetWare - PRINT SERVICES - SET DEFAULT CAPTURE FLAGS
- AX = B801h
- CX = size of buffer (01h-3Fh)
- ES:BX -> buffer containing capture flags table (see #01805)
- Return: AL = status
- 00h successful
- Note: this function is supported by Advanced NetWare 2.0+
- SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
- --------N-21B802-----------------------------
- INT 21 - Novell NetWare - PRINT SERVICES - GET SPECIFIC CAPTURE FLAGS
- AX = B802h
- CX = size of reply buffer (01h-3Fh)
- DH = LPT port (00h-02h)
- ES:BX -> reply buffer for capture flags table (see #01805)
- Return: AL = status
- 00h successful
- Note: this function is supported by Advanced NetWare 2.1+
- SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
- --------N-21B803-----------------------------
- INT 21 - Novell NetWare - PRINT SERVICES - SET SPECIFIC CAPTURE FLAGS
- AX = B803h
- CX = size of buffer (01h-3Fh)
- DH = LPT port (00h-02h)
- ES:BX -> buffer containing capture flags table (see #01805)
- Return: AL = status
- 00h successful
- Note: this function is supported by Advanced NetWare 2.1+
- SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
- --------N-21B804-----------------------------
- INT 21 - Novell NetWare - PRINT SERVICES - GET DEFAULT LOCAL PRINTER
- AX = B804h
- Return: DH = default LPT port (00h-02h)
- Note: this function is supported by Advanced NetWare 2.1+
- SeeAlso: AX=B800h,AX=B805h,AH=DFh/DL=00h
- --------N-21B805-----------------------------
- INT 21 - Novell NetWare - PRINT SERVICES - SET DEFAULT LOCAL PRINTER
- AX = B805h
- DH = new default LPT port (00h-02h)
- Return: AL = status
- 00h successful
- Note: this function is supported by Advanced NetWare 2.1+
- SeeAlso: AX=B800h,AX=B804h,AH=DFh/DL=00h
- --------N-21B806-----------------------------
- INT 21 - Novell NetWare - PRINT SERVICES - SET CAPTURE PRINT QUEUE
- AX = B806h
- DH = LPT port (00h-02h)
- BX:CX = print queue's object ID
- Return: AL = status
- 00h successful
- FFh job already set
- Desc: specify the print queue on which a print job is to be placed the next
- time a capture is started on the given printer port
- Note: this function is supported by Advanced NetWare 2.1+
- SeeAlso: AX=B801h,AX=B807h,AH=E0h/SF=09h
- --------N-21B807-----------------------------
- INT 21 - Novell NetWare - PRINT SERVICES - SET CAPTURE PRINT JOB
- AX = B807h
- DH = LPT port (00h-02h)
- BX = job number (see AH=E3h/SF=68h)
- SI:DI:CX = NetWare file handle (see AH=E3h/SF=68h)
- Return: AL = status
- 00h successful
- FFh job already queued
- Desc: specify the capture file and print job to be used for subsequent
- output to the given printer port
- Note: this function is supported by Advanced NetWare 2.1+
- SeeAlso: AX=B801h,AX=B806h,AH=E0h/SF=09h,AH=E3h/SF=68h
- --------N-21B808-----------------------------
- INT 21 - Novell NetWare - PRINT SERVICES - GET BANNER USER NAME
- AX = B808h
- ES:BX -> 12-byte buffer for user name
- Return: AL = status
- 00h successful
- Desc: get the user name which is printed on the banner page
- Notes: this function is supported by Advanced NetWare 2.1+
- the default name is the login name of the user
- SeeAlso: AX=B809h
- --------N-21B809-----------------------------
- INT 21 - Novell NetWare - PRINT SERVICES - SET BANNER USER NAME
- AX = B809h
- ES:BX -> 12-byte buffer containing user name
- Return: AL = status
- 00h successful
- Desc: specify the user name which is printed on the banner page
- Notes: this function is supported by Advanced NetWare 2.1+
- the default name is the login name of the user
- SeeAlso: AX=B808h
- --------N-21B9-------------------------------
- INT 21 U - Novell NetWare - "SpecialAttachableFunction"
- AH = B9h
- AL = FFh to hook this function
- ES:BX -> function to invoke on AH=B9h when AL<>FFh
- Note: this function is no longer used or supported by current versions of
- NetWare
- --------v-21B974-----------------------------
- INT 21 - VIRUS - "Tracker" - INSTALLATION CHECK
- AX = B974h
- Return: AX = 2888h if resident
- SeeAlso: AH=B3h"VIRUS",AH=D0h"VIRUS"
- --------N-21BA-------------------------------
- INT 21 U - Novell NetWare - "ReturnCommandComPointers"
- AH = BAh
- Return: DX = environment segment
- ES:DI -> COMMAND.COM drive
- Desc: used to edit the COMSPEC and PATH variables in the master environment
- when mapping network drives
- Note: this function was documented in older Novell documents which are no
- longer available
- --------N-21BB-------------------------------
- INT 21 - Novell NetWare - WORKSTATION - SET END OF JOB STATUS
- AH = BBh
- AL = new EOJ flag
- 00h disable EOJs
- 01h enable EOJs
- Return: AL = old EOJ flag
- Desc: specify whether the network shell should automatically generate an
- End of Job call when the root command processor regains control
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=19h,AH=D6h
- --------v-21BBBB-----------------------------
- INT 21 - VIRUS - "Hey You" - INSTALLATION CHECK
- AX = BBBBh
- Return: AX = 6969h
- SeeAlso: AH=ABh"VIRUS",AH=BEh"VIRUS"
- --------N-21BC-------------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG PHYSICAL RECORD
- AH = BCh
- AL = flags (see #01808)
- BX = file handle
- CX:DX = starting offset in file
- SI:DI = length of region to lock
- BP = timeout in timer ticks (1/18 sec)
- 0000h = don't wait if already locked
- Return: AL = status (see #01807)
- Desc: add the specified physical record to the log table, optionally locking
- it
- Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=5Ch,AH=BDh,AH=BEh,AH=BFh,AH=C2h,AH=D0h
- (Table 01807)
- Values for NetWare status:
- 00h successful
- 96h no dynamic memory for file
- FEh timed out
- FFh failed
- Bitfields for NetWare flags:
- Bit(s) Description (Table 01808)
- 0 lock as well as log record
- 1 non-exclusive lock
- --------N-21BD-------------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE PHYSICAL RECORD
- AH = BDh
- BX = file handle
- CX:DX = starting offset in file
- SI:DI = length of record
- Return: AL = status
- 00h successful
- FFh record not locked
- Desc: unlock the specified physical record but do not remove it from log
- table
- Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=BCh,AH=BEh"NetWare",AH=C0h,AH=C3h,AH=D2h
- --------N-21BE-------------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR PHYSICAL RECORD
- AH = BEh
- BX = file handle
- CX:DX = starting offset within file
- SI:DI = record length in bytes
- Return: AL = status
- 00h successful
- FFh specified record not locked
- Desc: unlock the physical record and remove it from the log table
- Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=5Ch,AH=BCh,AH=BDh,AH=C1h,AH=C4h,AH=D4h
- --------v-21BE-------------------------------
- INT 21 - VIRUS - "Datalock" - INSTALLATION CHECK
- AH = BEh
- Return: AX = 1234h if resident
- SeeAlso: AX=BBBBh,AX=BE00h
- --------v-21BE00-----------------------------
- INT 21 - VIRUS - "USSR-1049" - INSTALLATION CHECK
- AX = BE00h
- CF set
- Return: CF clear if resident
- SeeAlso: AH=BEh"VIRUS",AH=C0h"VIRUS"
- --------N-21BF-------------------------------
- INT 21 O - Novell NetWare, Alloy NTNX - LOG/LOCK RECORD (FCB)
- AH = BFh
- AL = flags (see #01808)
- DS:DX -> opened FCB (see #01345 at AH=0Fh)
- BX:CX = offset
- BP = lock timeout in timer ticks (1/18 sec) if AL nonzero
- SI:DI = length
- Return: AL = error code (see #01807)
- Note: this function was added in NetWare 4.6, but was removed some time prior
- to Advanced NetWare 2.15, and is no longer listed in current Novell
- documentation
- SeeAlso: AH=BCh,AH=C0h"NetWare",AH=C2h"NetWare"
- --------N-21C0-------------------------------
- INT 21 O - Novell NetWare, Alloy NTNX - RELEASE RECORD (FCB)
- AH = C0h
- DS:DX -> non-extended FCB (see #01345 at AH=0Fh)
- BX:CX = offset
- Return: AL = error code (see #01807)
- Notes: unlocks record but does not remove it from log table
- this function was added in NetWare 4.6, but was removed some time prior
- to Advanced NetWare 2.15, and is no longer listed in current Novell
- documentation
- SeeAlso: AH=BDh,AH=BFh,AH=C1h"NetWare",AH=C3h
- --------v-21C0-------------------------------
- INT 21 - VIRUS - "Slow"/"Zerotime", "Solano" - INSTALLATION CHECK
- AH = C0h
- Return: AX = 0300h if "Slow"/"Zerotime" resident
- AX = 1234h if "Solano" resident
- SeeAlso: AX=BE00h,AX=C000h"VIRUS",AX=C301h"VIRUS"
- --------v-21C000-----------------------------
- INT 21 - VIRUS - "QUICKY" - INSTALLATION CHECK
- AX = C000h
- BX = most files infected by any other infected file
- Return: AX = 76F3h if resident
- SeeAlso: AH=C0h"VIRUS",AX=C001h,AX=C002h,AH=C1h"VIRUS"
- --------v-21C001-----------------------------
- INT 21 - VIRUS - "QUICKY" - TURN INFECTION OFF
- AX = C001h
- Return: nothing
- Note: if the virus is already memory resident this call disables any
- further infections
- SeeAlso: AX=C000h,AX=C002h
- --------v-21C002-----------------------------
- INT 21 - VIRUS - "QUICKY" - TURN INFECTION ON
- AX = C002h
- Return: nothing
- Note: if the virus is already memory resident and infection is disabled,
- this call re-enables it
- SeeAlso: AX=C000h,AX=C001h
- --------N-21C1-------------------------------
- INT 21 O - Novell NetWare, Alloy NTNX - CLEAR RECORD (FCB)
- AH = C1h
- DS:DX -> opened FCB (see #01345 at AH=0Fh)
- BX:CX = offset
- Return: AL = error code (see #01807)
- Note: unlocks record and removes it from log table
- this function was added in NetWare 4.6, but was removed some time prior
- to Advanced NetWare, and is no longer listed in current Novell
- documentation
- SeeAlso: AH=BEh,AH=C0h"NetWare",AH=C4h
- --------v-21C1-------------------------------
- INT 21 - VIRUS - "Solano" - ???
- AH = C1h
- ???
- Return: ???
- SeeAlso: AH=C0h"VIRUS"
- --------N-21C2-------------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK PHYSICAL RECORD SET
- AH = C2h
- AL = flags
- bit 1: non-exclusive lock
- BP = lock timeout in timer ticks (1/18 sec) 0000h = no wait
- Return: AL = status
- 00h successful
- FEh timed out
- FFh failed
- Desc: attempt to lock all physical records listed in the log table
- Notes: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
- Alloy NTNX
- status FFh will be returned if one or more physical records have been
- exclusively locked by another process
- SeeAlso: AH=BFh,AH=C3h,AH=D1h
- --------v-21C2-------------------------------
- INT 21 - VIRUS - "Scott's Valley" - ???
- AH = C2h
- ???
- Return: ???
- SeeAlso: AH=C0h"VIRUS"
- --------N-21C3-------------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE PHYS RECORD SET
- AH = C3h
- Desc: unlock all currently-locked physical records in the log table, but do
- not remove them from the table
- Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=BDh,AH=C0h,AH=C2h"NetWare",AH=C4h,AH=D3h
- --------v-21C301DXF1F1-----------------------
- INT 21 - VIRUS - "905"/"Backfont" - INSTALLATION CHECK
- AX = C301h
- DX = F1F1h
- Return: DX = 0E0Eh if resident
- SeeAlso: AH=C0h"VIRUS",AX=C500h"VIRUS"
- --------N-21C4-------------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR PHYSICAL RECORD SET
- AH = C4h
- Desc: unlock all physical records in the log table and remove them from the
- log table
- Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=BEh,AH=C1h,AH=D5h
- --------N-21C500-----------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - OPEN SEMAPHORE
- AX = C500h
- DS:DX -> semaphore name (counted string, max 127 bytes)
- CL = initial value for semaphore
- Return: AL = status
- 00h successful
- BL = number of processes having semaphore open
- CX:DX = semaphore handle
- 03h name length greater than 127
- (refer to Novell document FYI.A.4611)
- FEh invalid name length
- FFh invalid semaphore value
- Notes: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
- Alloy NTNX
- the semaphore's value is incremented by AX=C503h and decremented by
- AX=C502h
- SeeAlso: AX=C501h,AX=C502h,AX=C503h,AX=C504h,AX=F220h/SF=00h
- --------v-21C500-----------------------------
- INT 21 - VIRUS - "Sverdlov" - INSTALLATION CHECK
- AX = C500h
- Return: AX = 6731h if resident
- SeeAlso: AX=C301h"VIRUS",AH=C6h"VIRUS"
- --------N-21C501-----------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - EXAMINE SEMAPHORE
- AX = C501h
- CX:DX = semaphore handle
- Return: AL = status
- 00h successful
- CX = semaphore value (-127 to 127)
- DL = count of processes which have the semaphore open
- FFh invalid handle
- Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AX=C500h"NetWare",AX=C502h,AX=C504h,AX=F220h/SF=01h
- --------N-21C502-----------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - WAIT ON SEMAPHORE
- AX = C502h
- CX:DX = semaphore handle
- BP = timeout limit in timer ticks (1/18 sec)
- 0000h return immediately if semaphore already zero or negative
- Return: AL = status
- 00h successful
- FEh timeout
- FFh invalid handle
- Desc: decrement the semaphore's value, optionally waiting until its value
- becomes positive before decrementing
- Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AX=C500h"NetWare",AX=C501h,AX=C503h,AX=F220h/SF=02h
- --------N-21C503-----------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - SIGNAL SEMAPHORE
- AX = C503h
- CX:DX = semaphore handle
- Return: AL = status
- 00h successful
- 01h semaphore value overflowed
- FFh invalid handle
- Desc: increment the semaphore's value and signal the first process (if any)
- in the queue waiting on the semaphore
- Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AX=C500h"NetWare",AX=C502h,AX=F220h/SF=03h
- --------N-21C504-----------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLOSE SEMAPHORE
- AX = C504h
- CX:DX = semaphore handle
- Return: AL = status
- 00h successful
- FFh invalid handle
- Desc: decrement the semaphore's open count, and delete the semaphore if the
- count reaches zero
- Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AX=C500h"NetWare",AX=C501h,AX=F220h/SF=04h
- --------N-21C6-------------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - GET OR SET LOCK MODE
- AH = C6h
- AL = subfunction
- 00h set old "compatibility" mode (default)
- 01h set new extended locks mode
- 02h get lock mode
- Return: AL = current lock mode
- Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
- Alloy NTNX
- the locking mode should be 01h for NetWare 4.61+ and Advanced
- NetWare 1.0+ locking calls, and 00h for all older calls
- SeeAlso: AH=BCh,AH=C4h,AH=D0h
- --------v-21C6-------------------------------
- INT 21 - VIRUS - "Socha" - INSTALLATION CHECK
- AH = C6h
- Return: AL = 55h if resident
- SeeAlso: AX=C500h"VIRUS",AX=C603h
- --------v-21C603-----------------------------
- INT 21 - VIRUS - "Yankee Doodle" or "MLTI" - INSTALLATION CHECK
- AX = C603h
- BX = version number (002Ch or 002Dh)
- CF set
- Return: CF clear if resident
- ZF set if resident and input BX matches version
- SeeAlso: AX=C500h"VIRUS",AX=C700h"VIRUS"
- --------N-21C700-----------------------------
- INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - BEGIN TRANSACTION
- AX = C700h
- Return: CF clear if successful
- AL = 00h
- CF set on error
- AL = error code
- 96h out of memory
- FEh implicit transaction already active, converted to explicit
- FFh explicit transaction already active
- Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
- SeeAlso: AX=C701h,AX=C702h,AX=C703h,AX=F222h/SF=01h
- --------v-21C700-----------------------------
- INT 21 - VIRUS - "MH-757" - INSTALLATION CHECK
- AX = C700h
- Return: AL = 07h if resident
- SeeAlso: AX=C603h"VIRUS",AH=CBh"VIRUS"
- --------N-21C701-----------------------------
- INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - END TRANSACTION
- AX = C701h
- Return: AL = status (00h,FDh-FFh) (see #01809)
- 00h successful
- CX:DX = transaction number
- CF clear except when AL=FFh
- Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
- SeeAlso: AX=C700h"NetWare",AX=C703h,AX=F222h/SF=02h
- (Table 01809)
- Values for NetWare TTS status:
- 00h successful
- FDh transaction tracking disabled
- FEh transaction ended records locked
- FFh no explicit transaction active
- --------N-21C702-----------------------------
- INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - INSTALLATION CHECK
- AX = C702h
- Return: AL = status
- 00h not available
- 01h available
- FDh available but disabled
- Desc: determine whether the default file server supports TTS
- Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
- SeeAlso: AX=C700h,AX=C701h,AX=C703h,AX=F222h/SF=00h
- --------N-21C703-----------------------------
- INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - ABORT TRANSACTION
- AX = C703h
- Return: CF clear if successful
- AL = 00h
- CF set on error
- AL = error code (FDh-FFh) (see #01809)
- Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
- SeeAlso: AX=C700h"NetWare",AX=C701h,AX=C704h,AX=F222h/SF=03h
- --------N-21C704-----------------------------
- INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - TRANSACTION STATUS
- AX = C704h
- CX:DX = transaction number (see AX=C701h)
- Return: AL = status
- 00h successful
- FFh not yet written to disk
- Desc: verify that a transaction has actually been written to disk
- Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
- transactions are written to disk in the order in which they are ended,
- but it may take as much as five seconds for the data to be written
- SeeAlso: AX=C700h"NetWare",AX=C701h,AX=C703h,AX=F222h/SF=04h
- --------N-21C705-----------------------------
- INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - GET APPLICTN THRESHOLDS
- AX = C705h
- Return: AL = status
- 00h successful
- CL = maximum logical record locks (default 0)
- CH = maximum physical record locks (default 0)
- Desc: get the per-application limits on record locks allowed before an
- implicit transaction is begun
- Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
- if either limit is FFh, implicit transactions are disabled for the
- corresponding lock type
- SeeAlso: AX=C706h,AX=C707h,AX=F222h/SF=05h
- --------N-21C706-----------------------------
- INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - SET APPLICTN THRESHOLDS
- AX = C706h
- CL = maximum logical record locks (default 0)
- CH = maximum physical record locks (default 0)
- Return: AL = status
- 00h successful
- Desc: specify the per-application limits on record locks allowed before an
- implicit transaction is begun
- Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
- if either limit is set to FFh, implicit transactions are disabled for
- the corresponding lock type
- SeeAlso: AX=C705h,AX=C708h,AX=F222h/SF=06h
- --------N-21C707-----------------------------
- INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - GET WORKSTN THRESHOLDS
- AX = C707h
- Return: AL = status
- 00h successful
- CL = maximum logical record locks (default 0)
- CH = maximum physical record locks (default 0)
- Desc: get the per-workstation limits on record locks allowed before an
- implicit transaction is begun
- Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
- if either limit is FFh, implicit transactions are disabled for the
- corresponding lock type
- SeeAlso: AX=C705h,AX=C708h,AX=F222h/SF=07h
- --------N-21C708-----------------------------
- INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - SET WORKSTN THRESHOLDS
- AX = C708h
- CL = maximum logical record locks (default 0)
- CH = maximum physical record locks (default 0)
- Return: AL = status
- 00h successful
- Desc: specify the per-workstation limits on record locks allowed before an
- implicit transaction is begun
- Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
- if either limit is set to FFh, implicit transactions are disabled for
- the corresponding lock type
- SeeAlso: AX=C706h,AX=C707h,AX=F222h/SF=08h
- --------N-21C8-------------------------------
- INT 21 O - Novell NetWare - BEGIN LOGICAL FILE LOCKING
- AH = C8h
- if function C6h lock mode 00h:
- DL = mode
- 00h no wait
- 01h wait
- if function C6h lock mode 01h:
- BP = timeout in timer ticks (1/18 sec)
- Return: AL = error code
- Desc: used to provide TTS support for applications which are not aware of
- Novell's Transaction Tracking System
- Note: this function was added in NetWare 4.0, but was removed some time prior
- to Advanced NetWare 2.15, and is no longer listed in current Novell
- documentation
- SeeAlso: AH=C9h
- --------N-21C9-------------------------------
- INT 21 O - Novell NetWare - END LOGICAL FILE LOCKING
- AH = C9h
- Return: AL = error code
- Desc: used to provide TTS support for applications which are not aware of
- Novell's Transaction Tracking System
- Note: this function was added in NetWare 4.0, but was removed some time prior
- to Advanced NetWare 2.15, and is no longer listed in current Novell
- documentation
- SeeAlso: AH=C8h
- --------N-21CA-------------------------------
- INT 21 O - Novell NetWare, Alloy NTNX - LOG/LOCK PERSONAL FILE (FCB)
- AH = CAh
- DS:DX -> FCB (see #01345 at AH=0Fh)
- if function C6h lock mode 01h:
- AL = log and lock flag
- 00h log file only
- 01h lock as well as log file
- BP = lock timeout in timer ticks (1/18 sec)
- Return: AL = error code
- 00h successful
- 96h no dynamic memory for file
- FEh timeout
- FFh failed
- Desc: provides file locking support for FCBs
- Note: this function was added in NetWare 4.0, but was removed some time prior
- to Advanced NetWare 2.15, and is no longer listed in current Novell
- documentation
- SeeAlso: AH=CBh
- --------v-21CA15-----------------------------
- INT 21 - VIRUS - "Piter" - ???
- AX = CA15h
- ???
- Return: ???
- SeeAlso: AH=CCh"VIRUS"
- --------N-21CB-------------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK FILE SET
- AH = CBh
- if function C6h lock mode 00h:
- DL = mode (00h no wait, 01h wait)
- if function C6h lock mode 01h:
- BP = lock timeout in timer ticks (1/18 sec), 0000h = no wait
- Return: AL = status (00h,FEh,FFh) (see #01810)
- Desc: attempt to lock all files listed in the log table
- Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- status FFh will be returned if one or more of the files have already
- been exclusively locked by another process
- SeeAlso: AH=CAh,AH=CDh,AH=D1h,AH=EBh
- (Table 01810)
- Values for NetWare status:
- 00h successful
- FEh timed out
- FFh failed
- --------v-21CB-------------------------------
- INT 21 - VIRUS - "Milous" - INSTALLATION CHECK
- AH = CBh
- Return: AL = 07h if resident
- SeeAlso: AX=C700h"VIRUS",AX=CB02h
- --------v-21CB02-----------------------------
- INT 21 - VIRUS - "Witcode" - INSTALLATION CHECK
- AX = CB02h
- Return: AX = 02CBh if resident
- SeeAlso: AH=CBh"VIRUS",AH=CCh"VIRUS"
- --------N-21CC-------------------------------
- INT 21 O - Novell NetWare, Alloy NTNX - RELEASE FILE (FCB)
- AH = CCh
- DS:DX -> FCB (see #01345 at AH=0Fh)
- Return: none
- Desc: unlocks file, but does not remove it from the log table or close it
- Note: this function was added in NetWare 4.0, but was removed some time prior
- to Advanced NetWare 2.15, and is no longer listed in current Novell
- documentation
- SeeAlso: AH=CAh,AH=CDh
- --------v-21CC-------------------------------
- INT 21 - VIRUS - "Westwood" - INSTALLATION CHECK
- AH = CCh
- Return: AX = 0700h if resident
- SeeAlso: AX=CB02h,AH=CDh"VIRUS",AX=D000h"VIRUS"
- --------N-21CD-------------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE FILE SET
- AH = CDh
- Return: none
- Desc: unlock all files listed in the log table, but don't remove them from
- the table
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=CBh,AH=CCh,AH=CFh,AH=D3h
- --------v-21CD-------------------------------
- INT 21 - VIRUS - "Westwood" - ???
- AH = CDh
- ???
- Return: ???
- SeeAlso: AH=CCh"VIRUS"
- --------N-21CE-------------------------------
- INT 21 O - Novell NetWare, Alloy NTNX - CLEAR FILE (FCB)
- AH = CEh
- DS:DX -> FCB (see #01345 at AH=0Fh)
- Return: AL = error code
- Desc: unlocks file and removes it from log table, then closes all opened and
- logged occurrences
- Note: this function was added in NetWare 4.0, but was removed some time prior
- to Advanced NetWare 2.15, and is no longer listed in current Novell
- documentation
- SeeAlso: AH=CAh,AH=CFh,AH=EDh"NetWare"
- --------N-21CF-------------------------------
- INT 21 - LANstep - ???
- AH = CFh
- ???
- Return: ???
- Program: LANstep is a redesign of the Waterloo Microsystems PORT network
- --------N-21CF-------------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR FILE SET
- AH = CFh
- Return: AL = 00h
- Desc: unlock and remove all files from log table
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=CAh,AH=CEh,AH=EBh"NetWare"
- --------N-21D0-------------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG LOGICAL RECORD
- AH = D0h
- DS:DX -> record string (counted string, max 99 data bytes)
- if function C6h lock mode 01h: (Novell, NTNX only)
- AL = flags
- bit 0: lock as well as log the record
- bit 1: non-exclusive lock
- BP = lock timeout in timer ticks (1/18 sec)
- Return: AL = status
- 00h successful
- 96h no dynamic memory for file
- FEh timed out
- FFh unsuccessful
- Desc: add the specified logical record name to the log table, and optionally
- lock the record
- Notes: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+,
- Banyan VINES, and Alloy NTNX
- locks on logical record names are advisory and may be ignored by other
- applications
- SeeAlso: AH=BCh,AH=D1h,AH=D2h,AH=D4h,AH=EBh
- --------v-21D0-------------------------------
- INT 21 - VIRUS - "MALAGA" - INSTALLATION CHECK
- AH = D0h
- Return: AX = 00D0h if resident
- SeeAlso: AH=B3h"VIRUS",AH=D0h"ANTIARJ",AX=D000h"VIRUS"
- --------v-21D0-----------------------------
- INT 21 - VIRUS - "ANTIARJ" -INSTALLATION CHECK
- AH = D0h
- Return: AH = D1h if resident
- SeeAlso: AH=D0h"MALAGA"
- --------v-21D000-----------------------------
- INT 21 - VIRUS - "Fellowship" - INSTALLATION CHECK
- AX = D000h
- Return: BX = 1234h if resident
- SeeAlso: AH=CCh"VIRUS",AH=D0h"ANTIARJ",AX=D000h"Warlock",AH=D5h"VIRUS",AX=D5AAh
- --------v-21D000-----------------------------
- INT 21 - VIRUS - "Warlock" - INSTALLATION CHECK
- AX = D000h
- CF clear
- Return: CF set if resident (normal DOS return would be CF clear)
- SeeAlso: AX=D000h"VIRUS",AH=D5h"VIRUS"
- --------N-21D1-------------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK LOGICAL RECORD SET
- AH = D1h
- AL = lock type (00h exclusive, 01h shareable)
- if function C6h lock mode 00h:
- DL = mode (00h no wait, 01h wait)
- if function C6h lock mode 01h: (Novell only)
- BP = lock timeout in timer ticks (1/18 sec), 0000h no wait
- Return: AL = status (see #01810)
- Desc: attempt to lock all logical record names listed in the log table
- Notes: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+,
- Banyan VINES, and Alloy NTNX
- status FFh will be returned if one or more logical records have been
- exclusively locked by another process
- locks on logical record names are advisory and may be ignored by other
- applications
- SeeAlso: AH=C2h,AH=CBh,AH=D0h,AH=D3h,AH=D5h
- --------N-21D2-------------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE LOGICAL RECORD
- AH = D2h
- DS:DX -> semaphore identifier (counted string up to 99 chars long)
- Return: AL = status
- 00h successful
- FFh no such record
- Desc: unlock the logical record name but do not remove it from the log table
- Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
- Banyan VINES, and Alloy NTNX
- locks on logical record names are advisory and may be ignored by other
- applications
- SeeAlso: AH=BDh,AH=D0h,AH=D3h,AH=D4h
- --------v-21D2-------------------------------
- INT 21 - VIRUS???
- AH = D2h
- ???
- Return: ???
- Note: this call is intercepted by the Search&Destroy SDRes v27.03 bundled
- with Novell DOS 7, and is presumably some virus's installation check
- SeeAlso: AH=4Ah/BX=00B6h
- --------N-21D3-------------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE LOGICAL RECORD SET
- AH = D3h
- Desc: unlock all currently-locked logical record names in the log table, but
- do not remove them from the table
- Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
- Banyan VINES, and Alloy NTNX
- locks on logical record names are advisory and may be ignored by other
- applications
- SeeAlso: AH=C3h,AH=CDh,AH=D1h,AH=D2h,AH=D5h
- --------N-21D4-------------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR LOGICAL RECORD
- AH = D4h
- DS:DX -> logical record name (counted string up to 99 chars long)
- Return: AL = status (00h,FFh) (see #01811)
- Desc: unlock and remove the logical record name from the log table
- Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
- Banyan VINES, and Alloy NTNX
- locks on logical record names are advisory and may be ignored by other
- applications
- SeeAlso: AH=BEh,AH=D0h,AH=D2h,AH=D5h
- (Table 01811)
- Values for NetWare status:
- 00h successful
- FFh no such record name
- --------N-21D5-------------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR LOGICAL RECORD SET
- AH = D5h
- Return: AL = error code (00h,FFh) (see #01811)
- Desc: unlock and remove all logical record name from the log table
- Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
- Banyan VINES, and Alloy NTNX
- locks on logical record names are advisory and may be ignored by other
- applications
- SeeAlso: AH=D1h,AH=D3h,AH=D4h
- --------v-21D5-------------------------------
- INT 21 - VIRUS - "Carfield" - ???
- AH = D5h
- ???
- Return: ???
- SeeAlso: AX=D5AAh,AH=F3h"Carfield"
- --------v-21D5AA-----------------------------
- INT 21 - VIRUS - "Diamond-A", "Diamond-B" - INSTALLATION CHECK
- AX = D5AAh
- Return: AX = 2A55h if "Diamond-A" resident
- AX = 2A03h if "Diamond-B"-family virus resident
- SeeAlso: AX=D000h,AH=D5h"VIRUS",AX=D5AAh/BP=DEAAh
- --------v-21D5AABPDEAA-----------------------
- INT 21 - VIRUS - "Dir" - INSTALLATION CHECK
- AX = D5AAh
- BP = DEAAh
- Return: SI = 4321h if resident
- SeeAlso: AX=D5AAh,AX=DADAh"VIRUS"
- --------N-21D6-------------------------------
- INT 21 - Novell NetWare - WORKSTATION - END OF JOB
- AH = D6h
- BX = job flag (0000h current job, FFFFh all processes on workstation)
- Return: AL = error code
- Desc: unlocks and clears all locked or logged files and records held by the
- process(es), closes all files, resets error and lock modes, and
- releases all network resources
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=BBh"NetWare",AH=D7h
- --------N-21D7-------------------------------
- INT 21 - Novell NetWare - CONNECTION SERVICES - SYSTEM LOGOUT
- AH = D7h
- Return: AL = error code
- Desc: this function closes the caller's open files, logs it out from all
- file servers, detaches the workstation from all non-default file
- servers, and maps a drive to the default server's SYS:LOGIN directory
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=D6h,AH=E3h/SF=14h,AH=F1h"NetWare"
- --------N-21D8-------------------------------
- INT 21 - Novell NetWare, Banyan VINES - ALLOCATE RESOURCE
- AH = D8h
- DL = resource number
- Return: AL = status (00h successful, FFh unsucessful)
- Note: this function is no longer used or supported by NetWare, and is not
- documented in Novell documents
- SeeAlso: AH=D9h
- --------N-21D9-------------------------------
- INT 21 - Novell NetWare, Banyan VINES - DEALLOCATE RESOURCE
- AH = D9h
- DL = resource number
- Return: AL = status (00h successful, FFh unsucessful)
- Note: this function is no longer used or supported by NetWare, and is not
- documented in Novell documents
- SeeAlso: AH=D8h
- --------N-21DA-------------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFO WITH NUMBER
- AH = DAh
- DL = volume number
- ES:DI -> reply buffer (see #01812)
- Return: AL = 00h
- Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
- operator console rights are not required to make this call
- reported total blocks and total unused blocks include the Hot Fix
- Table; the NetWare shell's implementation of INT 21/AH=36h will
- report values larger than 268MB as 268MB.
- SeeAlso: AH=36h,AH=E2h/SF=15h,AH=E3h/SF=E9h
- Format of NetWare reply buffer:
- Offset Size Description (Table 01812)
- 00h WORD sectors/block
- 02h WORD total blocks on volume
- 04h WORD unused blocks
- 06h WORD total directory entries
- 08h WORD unused directory entries
- 0Ah 16 BYTEs volume name, null padded
- 1Ah WORD removable flag, 0000h = not removable
- Note: all words are big-endian
- --------v-21DADA-----------------------------
- INT 21 - VIRUS - "Gotcha" - INSTALLATION CHECK
- AX = DADAh
- Return: AH = A5h
- SeeAlso: AX=D5AAh,AX=DAFEh"VIRUS"
- --------v-21DAFE-----------------------------
- INT 21 - VIRUS - "Plovdiv 1.3" - INSTALLATION CHECK
- AX = DAFEh
- Return: AX = 1234h if resident
- SeeAlso: AX=DADAh,AH=DDh"VIRUS",AH=DEh"VIRUS"
- --------N-21DB-------------------------------
- INT 21 - Novell NetWare - WORKSTATION - GET NUMBER OF LOCAL DRIVES
- AH = DBh
- Return: AL = number of local disks as set by LASTDRIVE in CONFIG.SYS
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=0Eh
- --------N-21DC-------------------------------
- INT 21 - Novell NetWare - CONNECTION SERVICES - GET CONNECTION NUMBER
- AH = DCh
- Return: AL = logical connection number
- 00h if NetWare not loaded or this machine is a non-dedicated server
- CX = station number in ASCII (CL = first digit)
- Notes: this function is supported by NetWare 4.0+, Banyan VINES, and Alloy
- NTNX
- station number only unique for those PCs connected to same semaphore
- service
- SeeAlso: AH=F2h"NetWare"
- --------d-21DC-------------------------------
- INT 21 - PCMag PCMANAGE/DCOMPRES - TURN ON/OFF
- AH = DCh
- DX = state
- 0000h turn on
- 0001h turn off
- SeeAlso: AX=FEDCh
- --------v-21DC28-----------------------------
- INT 21 - VIRUS - "Monika" - INSTALLATION CHECK
- AX = DC28h
- Return: AX = 1973h if resident
- SeeAlso: AX=D000h"VIRUS",AX=DCBAh"VIRUS"
- --------v-21DCBA-----------------------------
- INT 21 - VIRUS - "Red Spider" - INSTALLATION CHECK
- AX = DCBAh
- Return: AX = ABCDh if resident
- SeeAlso: AX=DC28h"VIRUS",AX=DEFEh"VIRUS"
- --------N-21DD-------------------------------
- INT 21 - Novell NetWare - WORKSTATION - SET NetWare ERROR MODE
- AH = DDh
- DL = error mode
- 00h invoke INT 24 on critical I/O errors (default)
- 01h return NetWare extended error code in AL
- 02h return error code in AL, mapped to standard DOS error codes
- Return: AL = previous error mode
- Note: this function is supported by Advanced NetWare 2.0+
- SeeAlso: INT 24
- --------v-21DD-------------------------------
- INT 21 - VIRUS - "Jerusalem"-family - RELOCATE VIRUS???
- AH = DDh
- CX = number of bytes to copy
- DS:SI -> source of copy
- ES:DI -> destination of copy
- Return: does not return normally; return address is caller's CS:0100h with
- AX = ???
- SeeAlso: AX=DDEFh,AH=E0h"VIRUS",AH=EEh"VIRUS"
- --------v-21DDEF------------------------
- INT 21 - VIRUS- "GOLGI" - INSTALLATION CHECK
- AX = DDEFh
- Return: AX = EFDDh if resident
- SeeAlso: AH=DDh"VIRUS",AH=DEh"VIRUS"
- --------v-21DE-------------------------------
- INT 21 - VIRUS - "Durban" - INSTALLATION CHECK
- AH = DEh
- Return: AH = DFh if resident
- SeeAlso: AX=DAFEh,AX=DDEFh,AH=DEh"April 1st",AX=DEADh"90210"
- --------v-21DE-------------------------------
- INT 21 - VIRUS - "April 1st EXE" - ???
- AH = DEh
- ???
- Return: ???
- SeeAlso: AH=DEh"Durban",AX=DEADh"90210"
- --------N-21DE-------------------------------
- INT 21 - Novell NetWare - MESSAGE SERVICES - SET BROADCAST MODE
- AH = DEh
- DL = broadcast mode
- 00h receive server and workstation broadcasts (default)
- 01h receive server broadcasts, discard user messages
- 02h store server broadcasts for retrieval
- 03h store all broadcasts for retrieval
- Return: AL = new broadcast mode
- Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
- --------N-21DE--DL04-------------------------
- INT 21 - Novell NetWare - MESSAGE SERVICES - GET BROADCAST MODE
- AH = DEh
- DL = 04h
- Return: AL = current broadcast mode
- 00h receive server and workstation broadcasts (default)
- 01h receive server broadcasts, discard user message
- 02h store server broadcasts for retrieval
- 03h store all broadcasts for retrieval
- Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
- --------N-21DE-------------------------------
- INT 21 - Novell NetWare - SHELL TIMER INTERRUPT CHECKS
- AH = DEh
- DL = function
- 05h disable shell timer interrupt checks
- 06h enable shell timer interrupt checks
- Return: ???
- Note: this function was added in NetWare 4.0, but is not listed in current
- Novell documentation and is probably no longer supported
- --------v-21DEAD------------------------
- INT 21 - VIRUS - "90210" - INSTALLATION CHECK
- AX = DEADh
- Return: AX = AAAAh if resident
- SeeAlso: AH=DEh"April 1st",AX=DEADh"Shifting",AX=DEDEh"VIRUS"
- --------v-21DEAD------------------------
- INT 21 - VIRUS - "Shifting Objective" - RELOCATE CODE ???
- AX = DEADh
- SeeAlso: AX=FEADh
- SeeAlso: AX=DEADh"90210",AX=DEDEh"VIRUS"
- --------v-21DEDE-----------------------------
- INT 21 - VIRUS - "Brothers" - INSTALLATION CHECK
- AX = DEDEh
- Return: AH = 41h if resident
- SeeAlso: AX=DEADh"Shifting",AX=DEFEh"VIRUS"
- --------v-21DEFE-----------------------------
- INT 21 - VIRUS - "Maze" - INSTALLATION CHECK
- AX = DEFEh
- Return: AX = ABCDh if resident
- SeeAlso: AX=DCBAh"VIRUS",AX=DEDEh"VIRUS",AH=E0h"VIRUS"
- --------N-21DF--DL00-------------------------
- INT 21 - Novell NetWare - PRINT SERVICES - START LPT CAPTURE
- AH = DFh
- DL = 00h
- Return: AL = status
- 00h successful
- Desc: this function redirects the default LPT to a capture file on the file
- server
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
- a print job is queued when the first character of output is captured
- SeeAlso: AX=B800h,AX=B804h,AH=DFh/DL=01h,AH=DFh/DL=02h,AH=DFh/DL=03h
- SeeAlso: AH=DFh/DL=04h,AX=F003h
- --------N-21DF--DL01-------------------------
- INT 21 - Novell NetWare - PRINT SERVICES - END LPT CAPTURE
- AH = DFh
- DL = 01h
- Return: AL = status
- 00h successful
- Desc: stop redirecting the default LPT, close the capture file, and release
- the job in the print queue for printing
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
- after this call, the default LPT defaults to local printing
- SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=02h,AH=DFh/DL=03h,AH=DFh/DL=05h
- --------N-21DF--DL02-------------------------
- INT 21 - Novell NetWare - PRINT SERVICES - CANCEL LPT CAPTURE
- AH = DFh
- DL = 02h
- Return: AL = status
- 00h successful
- Desc: this function ends the capture of the default LPT, removes the job from
- the print queue, and deletes the capture file unless it is a
- permanent capture file
- Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
- after this call, the default LPT defaults to local printing
- SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=06h
- --------N-21DF--DL03-------------------------
- INT 21 - Novell NetWare - PRINT SERVICES - FLUSH LPT CAPTURE
- AH = DFh
- DL = 03h
- Return: AL = status
- 00h successful
- Desc: this function closes the current capture file for the default LPT
- and starts printing it if it is not a permanent capture file
- Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
- if more data is sent to the LPT port after this call, a new capture
- file will be opeend
- SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=01h,AH=DFh/DL=02h,AH=DFh/DL=07h
- --------N-21DF--DL04-------------------------
- INT 21 - Novell NetWare - PRINT SERVICES - START SPECIFIC LPT CAPTURE
- AH = DFh
- DL = 04h
- DH = LPT port (00h-02h)
- Return: AL = status
- 00h successful
- Desc: this function redirects the specified LPT to a capture file on the file
- server
- Notes: this function is supported by Advanced NetWare 2.1+
- a print job is queued when the first character of output is captured
- SeeAlso: AX=B800h,AH=DFh/DL=00h,AH=DFh/DL=05h,AH=DFh/DL=06h,AH=DFh/DL=07h
- SeeAlso: AX=F003h
- --------N-21DF--DL05-------------------------
- INT 21 - Novell NetWare - PRINT SERVICES - END SPECIFIC LPT CAPTURE
- AH = DFh
- DL = 05h
- DH = LPT port (00h-02h)
- Return: AL = status
- 00h successful
- Desc: stop redirecting the specified LPT, close the capture file, and release
- the job in the print queue for printing
- Notes: this function is supported by Advanced NetWare 2.1+
- after this call, the specified LPT defaults to local printing
- SeeAlso: AH=DFh/DL=01h,AH=DFh/DL=04h,AH=DFh/DL=06h,AH=DFh/DL=07h
- --------N-21DF--DL06-------------------------
- INT 21 - Novell NetWare - PRINT SERVICES - CANCEL SPECIFIC LPT CAPTURE
- AH = DFh
- DL = 06h
- DH = LPT port (00h-02h)
- Return: AL = status
- 00h successful
- Desc: this function ends the capture of the specified LPT, removes the job
- from the print queue, and deletes the capture file unless it is a
- permanent capture file
- Notes: this function is supported by Advanced NetWare 2.1+
- after this call, the specified LPT defaults to local printing
- SeeAlso: AH=DFh/DL=02h,AH=DFh/DL=04h,AH=DFh/DL=05h,AH=DFh/DL=07h
- --------N-21DF--DL07-------------------------
- INT 21 - Novell NetWare - PRINT SERVICES - FLUSH SPECIFIC LPT CAPTURE
- AH = DFh
- DL = 07h
- DH = LPT port (00h-02h)
- Return: AL = status
- 00h successful
- Desc: this function closes the current capture file for the specified LPT
- and starts printing it if it is not a permanent capture file
- Notes: this function is supported by Advanced NetWare 2.1+
- if more data is sent to the LPT port after this call, a new capture
- file will be opeend
- SeeAlso: AH=DFh/DL=03h,AH=DFh/DL=04h,AH=DFh/DL=05h,AH=DFh/DL=06h
- --------T-21DF00DX534C-----------------------
- INT 21 U - Software Carousel - INSTALLATION CHECK
- AX = DF00h
- DX = 534Ch ("SL")
- DI = 534Ch ("SL")
- Return: AX = 00FFh if installed
- ???
- Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
- --------T-21DF01-----------------------------
- INT 21 - Software Carousel - SWITCH TO ANOTHER TASK
- AX = DF01h
- BL = task number (00h = next task)
- Return: AL = status
- 00h Carousel not running
- 01h successful
- FFh unsucessful
- AH = error code (01h,02h) (see #01813)
- (Table 01813)
- Values for Software Carousel error code:
- 00h invalid subfunction in AL
- 01h invalid task number
- 02h tried to switch to task with no memory size
- 03h tried to kill program in partition with no program running
- 04h tried to change size of an active memory partition
- 05h invalid memory size
- 06h tried to send command to task with a pending previous command
- --------T-21DF02-----------------------------
- INT 21 - Software Carousel - KILL PROGRAM IN MEMORY PARTITION
- AX = DF02h
- BL = task number
- Return: AL = status
- 00h Carousel not running
- 01h successful
- FFh unsucessful
- AH = error code (01h,03h) (see #01813)
- --------T-21DF03-----------------------------
- INT 21 - Software Carousel - GET PARTITION SIZE AND PROGRAM STATUS
- AX = DF03h
- BL = task number
- Return: AL = status
- 00h Carousel not running
- 01h successful
- BL = partition state (00h no program running, 01h prog running)
- DX = partition size in KB
- FFh unsucessful
- AH = error code (01h) (see #01813)
- SeeAlso: AX=DF05h
- --------T-21DF04-----------------------------
- INT 21 - Software Carousel - GET PARTITION NAME
- AX = DF04h
- BL = task number
- Return: AL = status
- 00h Carousel not running
- 01h successful
- CX = length of name (00h if default partition name)
- ES:BX -> partition name (if CX nonzero)
- FFh unsucessful
- AH = error code (01h) (see #01813)
- SeeAlso: AX=DF06h
- --------T-21DF05-----------------------------
- INT 21 - Software Carousel - CHANGE PARTITION SIZE
- AX = DF05h
- BL = task number
- DX = new size in KB
- Return: AL = status
- 00h Carousel not running
- 01h successful
- FFh unsucessful
- AH = error code (01h,04h,05h) (see #01813)
- BX = minimum size allowed
- CX = maximum size available
- SeeAlso: AX=DF03h
- --------T-21DF06-----------------------------
- INT 21 - Software Carousel - CHANGE PARTITION NAME
- AX = DF06h
- BL = task number
- CX = length of new name (00h to use default, max 18h)
- DS:SI -> new name
- Return: AL = status
- 00h Carousel not running
- 01h successful
- FFh unsucessful
- AH = error code (01h) (see #01813)
- SeeAlso: AX=DF04h
- --------T-21DF07-----------------------------
- INT 21 - Software Carousel - SEND COMMAND TO MEMORY SECTION
- AX = DF07h
- BL = task number
- CX = length of command (max 8 chars)
- DS:SI -> command line
- Return: AL = status
- 00h Carousel not running
- 01h successful
- FFh unsucessful
- AH = error code (01h,06h) (see #01813)
- Note: the maximum length seems too small and may be a typo for 80 characters
- --------T-21DF08-----------------------------
- INT 21 - Software Carousel - SELECTIVELY ENABLE/DISABLE MENU AND SWITCHING
- AX = DF08h
- BL = new state of keyboard (00h disabled, 01h enabled)
- Return: AL = status
- 00h Carousel not running
- 01h successful
- Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
- Note: when the keyboard is is disabled, the user may neither access the
- Carousel menu nor switch to another memory section
- --------T-21DF09-----------------------------
- INT 21 - Software Carousel - BOOT THE SYSTEM
- AX = DF09h
- Return: AL = status
- 00h Carousel not running
- FFh unsucessful
- AH = error code (01h,03h) (see #01813)
- Note: this function never returns if successful
- --------T-21DF0A-----------------------------
- INT 21 - Software Carousel - GET MEMORY SIZE/PARTITION NUMBER OF CURRENT TASK
- AX = DF0Ah
- Return: AL = status
- 00h Carousel not running
- 01h successful
- BL = task number
- DX = memory size in KB
- FFh unsucessful
- AH = error code (01h,03h) (see #01813)
- --------T-21DF0B-----------------------------
- INT 21 - Software Carousel - SET TASK SWITCH CALLBACK
- AX = DF0Bh
- BH = interrupt number or 00h
- BL = function number to invoke on partition switch
- CL = function number to call when it is safe for resident programs
- to perform DOS calls
- DS:DX -> FAR function to call if BH=00h
- Return: AL = status
- 00h Carousel not running
- 01h successful
- FFh unsucessful
- AH = error code (01h,03h) (see #01813)
- Notes: the specified interrupt or FAR function is called with AH set to the
- appropriate one of the values specified in BL and CL, and BL set to
- the new task number
- the function specified by CL will not be called until the notification
- is enabled with AX=DF0Ch
- SeeAlso: AX=DF0Ch
- --------T-21DF0C-----------------------------
- INT 21 - Software Carousel - ENABLE DOS-CALL SAFETY NOTIFICATION
- AX = DF0Ch
- Return: AL = status
- 00h Carousel not running
- 01h successful
- Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
- SeeAlso: AX=DF0Bh
- --------O-21E0-------------------------------
- INT 21 - Digital Research DOS Plus - CALL BDOS
- AH = E0h
- CL = BDOS function number (see #04019 at INT E0"CP/M-86")
- other registers as appropriate for function
- Return: as appropriate for function
- SeeAlso: AX=4459h,INT E0"CP/M-86"
- --------E-21E0-------------------------------
- INT 21 - OS/286, OS/386 - INITIALIZE REAL PROCEDURE
- AH = E0h
- ???
- Return: ???
- SeeAlso: AH=E1h"OS/286"
- --------T-21E0-------------------------------
- INT 21 - DoubleDOS - MENU CONTROL
- AH = E0h
- AL = subfunction
- 01h exchange tasks
- 73h resume invisible job if suspended
- 74h kill other job
- 75h suspend invisible job
- Note: identical to AH=F0h
- SeeAlso: AH=F0h"DoubleDOS"
- --------v-21E0-------------------------------
- INT 21 - VIRUS - "Jerusalem", "Armagedon" - INSTALLATION CHECK
- AH = E0h
- Return: AX = 0300h if "Jerusalem" resident
- AX = DADAh if "Armagedon" resident
- SeeAlso: AH=DEh"VIRUS",AX=DEDEh"VIRUS",AX=E00Fh
- --------N-21E0-------------------------------
- INT 21 - Novell NetWare, Alloy NTNX - PRINT SPOOLING
- AH = E0h
- DS:SI -> request buffer (see #01814)
- ES:DI -> reply buffer
- Return: AL = status
- Note: this function was added in NetWare 4.0, but is no longer listed in
- current Novell documentation and may no longer be supported
- SeeAlso: AH=E3h/SF=68h,AX=F211h/SF=06h,AX=F211h/SF=0Ah
- Format of NetWare print spooling request buffer:
- Offset Size Description (Table 01814)
- 00h WORD length of following data
- 02h BYTE subfunction
- 00h spool data to a capture file
- 01h close and queue capture file
- 02h set spool flags
- 03h spool existing file
- 04h get spool queue entry
- 05h remove entry from spool queue
- 03h ???
- SeeAlso: #02101
- --------N-21E0--SF06-------------------------
- INT 21 - Novell NetWare - PRINT SERVICES - GET PRINTER STATUS
- AH = E0h subfn 06h
- DS:SI -> request buffer (see #01815)
- ES:DI -> reply buffer (see #01816)
- Return: AL = status
- 00h successful
- FFh no such printer
- Desc: get current state of specified printer attached to the server
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- Format of NetWare "Get Printer Status" request buffer:
- Offset Size Description (Table 01815)
- 00h WORD 0002h (length of following data)
- 02h BYTE 06h (subfunction "Get Printer Status")
- 03h BYTE printer number (00h-04h)
- SeeAlso: #01816
- Format of NetWare "Get Printer Status" reply buffer:
- Offset Size Description (Table 01816)
- 00h WORD (call) 0004h (size of following results buffer)
- 02h BYTE flag: 00h printer active, FFh printer halted
- 03h BYTE flag: 00h printer online, 01h printer offline
- 04h BYTE current form type
- 05h BYTE target printer number (00h-04h)
- same as number in request buffer unless rerouted by server
- console
- SeeAlso: #01815
- --------N-21E0--SF09-------------------------
- INT 21 - Novell NetWare - PRINT SERVICES - SPECIFY CAPTURE FILE
- AH = E0h subfn 09h
- DS:SI -> request buffer (see #01817)
- ES:DI -> reply buffer (see #01818)
- Return: AL = status
- 00h successful
- 9Ch invalid path
- Desc: create a permanent capture file for the next print capture to be
- started
- Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- the caller must have read, write, and create rights for the directory
- containing the capture file
- Format of NetWare "Specify Capture File" request buffer:
- Offset Size Description (Table 01817)
- 00h WORD length of following data (max 102h)
- 02h BYTE 09h (subfunction "Specify Capture File")
- 03h BYTE directory handle or 00h
- 04h BYTE length of filename
- 05h N BYTEs name of capture file
- SeeAlso: #01818
- Format of NetWare reply buffer:
- Offset Size Description (Table 01818)
- 00h WORD (call) 0000h (no results returned)
- SeeAlso: #01817
- --------v-21E00F-----------------------------
- INT 21 - VIRUS - "8-tunes" - INSTALLATION CHECK
- AX = E00Fh
- Return: AX = 4C31h if resident
- SeeAlso: AH=E0h"VIRUS",AH=E1h"VIRUS"
- --------E-21E1-------------------------------
- INT 21 - OS/286, OS/386 - ISSUE REAL PROCEDURE CALL
- AH = E1h
- ???
- Return: ???
- Note: protected mode only???
- SeeAlso: AH=E0h"OS/286",AH=E2h"OS/286",AH=E3h"OS/286",AX=250Eh,INT 31/AX=0301h
- --------T-21E1-------------------------------
- INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
- AH = E1h
- SeeAlso: AH=E2h"DoubleDOS",AH=E3h"DoubleDOS",AH=E8h"DoubleDOS"
- SeeAlso: AH=F1h"DoubleDOS"
- --------v-21E1-------------------------------
- INT 21 - VIRUS - "Mendoza", "Fu Manchu" - INSTALLATION CHECK
- AH = E1h
- Return: AX = 0300h if "Mendoza" resident
- AX = 0400h if "Fu Manchu" resident
- SeeAlso: AX=E00Fh,AH=E4h"VIRUS"
- --------N-21E1--SF00-------------------------
- INT 21 - Novell NetWare - MESSAGE SERVICES - SEND BROADCAST MESSAGE
- AH = E1h subfn 00h
- DS:SI -> request buffer (see #01819)
- ES:DI -> reply buffer (see #01820)
- Return: AL = status
- 00h successful
- FEh I/O error or out of dynamic workspace
- Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
- SeeAlso: AH=DEh"NetWare",AH=DEh/DL=04h,AH=E1h/SF=01h,AH=E1h/SF=04h
- SeeAlso: AH=E1h/SF=09h
- Format of NetWare "Send Broadcast Message" request buffer:
- Offset Size Description (Table 01819)
- 00h WORD length of following data (max 9Eh)
- 02h BYTE 00h (subfunction "Send Broadcast Message")
- 03h BYTE number of connections (01h-64h)
- 04h N BYTEs list of connections to receive broadcast message
- BYTE length of message (01h-37h)
- N BYTEs broadcast message (no control characters or characters > 7Eh)
- SeeAlso: #01820
- Format of NetWare "Send Broadcast Message" reply buffer:
- Offset Size Description (Table 01820)
- 00h WORD (call) size of following results buffer (max 65h)
- 02h BYTE number of connections
- 03h N BYTEs list of per-connection results
- 00h successful
- FCh message rejected due to lack of buffer space
- FDh invalid connection number
- FFh blocked (see also AH=E1h/SF=02h)
- SeeAlso: #01819
- --------N-21E1--SF01-------------------------
- INT 21 - Novell NetWare - MESSAGE SERVICES - GET BROADCAST MESSAGE (OLD)
- AH = E1h subfn 01h
- DS:SI -> request buffer (see #01821)
- ES:DI -> reply buffer (see #01822)
- Return: AL = status
- 00h successful
- FCh full message queue
- FEh out of dynamic workspace
- Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
- SeeAlso: AH=DEh/DL=04h,AH=E1h/SF=00h,AH=E1h/SF=05h,AH=E1h/SF=09h
- SeeAlso: AX=F215h/SF=01h,AX=F215h/SF=0Bh
- Format of NetWare "Get Broadcast Message" request buffer:
- Offset Size Description (Table 01821)
- 00h WORD 0001h (length of following data)
- 02h BYTE 01h (subfunction "Get Broadcast Message")
- SeeAlso: #01822,#02109
- Format of NetWare "Get Broadcast Message" reply buffer:
- Offset Size Description (Table 01822)
- 00h WORD (call) size of following results buffer (max 38h)
- 02h BYTE length of message (00h-37h)
- 00h if no broadcast messages pending
- 03h N BYTEs message (no control characters or characters > 7Eh)
- SeeAlso: #01821,#02107,#02110
- --------N-21E1--SF02-------------------------
- INT 21 - Novell NetWare - MESSAGE SERVICES - DISABLE BROADCAST MESSAGES
- AH = E1h subfn 02h
- DS:SI -> request buffer (see #01824)
- ES:DI -> reply buffer (see #01825)
- Return: AL = error code
- Note: these functions are supported by NetWare 4.0+ but are not listed in
- _NetWare_System_Calls--DOS_; they may be obsolete
- SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=03h,AH=E1h/SF=04h,AH=E1h/SF=09h
- SeeAlso: AX=F215h/SF=02h
- Format of NetWare "Disable Broadcasts" request packet:
- Offset Size Description (Table 01823)
- 00h WORD 0001h (length of following data)
- 02h BYTE 02h (subfunction "Enable Broadcast Messages")
- SeeAlso: #01824,#01825
- --------N-21E1--SF03-------------------------
- INT 21 - Novell NetWare - MESSAGE SERVICES - ENABLE BROADCAST MESSAGES
- AH = E1h subfn 03h
- DS:SI -> request buffer (see #01824)
- ES:DI -> reply buffer (see #01825)
- Return: AL = error code
- Note: these functions are supported by NetWare 4.0+ but are not listed in
- _NetWare_System_Calls--DOS_; they may be obsolete
- SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=02h,AH=E1h/SF=04h,AH=E1h/SF=09h
- SeeAlso: AX=F215h/SF=03h
- Format of NetWare "Enable Broadcast Messages" request buffer:
- Offset Size Description (Table 01824)
- 00h WORD 0001h (length of following data)
- 02h BYTE 03h (subfunction "Enable Broadcast Messages")
- SeeAlso: #01825,#01823
- Format of NetWare "Enable/Disable Broadcast Messages" reply buffer:
- Offset Size Description (Table 01825)
- 00h WORD (call) 0000h (no data returned)
- SeeAlso: #01824,#01823
- --------N-21E1--SF04-------------------------
- INT 21 O - Novell NetWare - MESSAGE SERVICES - SEND PERSONAL MESSAGE
- AH = E1h subfn 04h
- DS:SI -> request buffer (see #01826)
- ES:DI -> reply buffer (see #01827)
- Return: AL = status
- 00h successful
- FEh I/O error or out of dynamic workspace
- Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
- message pipes use CPU time on the file server; IPX, SPX, or NetBIOS
- connections should be used for peer-to-peer communications as these
- protocols do not use file server time
- SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=08h
- Format of NetWare "Send Personal Message" request buffer:
- Offset Size Description (Table 01826)
- 00h WORD length of following data (max E5h)
- 02h BYTE 04h (subfunction "Send Personal Message")
- 03h BYTE number of connections (01h-64h)
- 04h N BYTEs list of connections to receive broadcast message
- BYTE length of message (01h-7Eh)
- N BYTEs message (no control characters or characters > 7Eh)
- SeeAlso: #01827
- Format of NetWare "Send Personal Message" reply buffer:
- Offset Size Description (Table 01827)
- 00h WORD (call) size of following results buffer (max 65h)
- 02h BYTE number of connections
- 03h N BYTEs list of per-connection results
- 00h successful
- FCh message rejected because queue is full (contains 6 msgs)
- FDh incomplete pipe
- FFh failed
- SeeAlso: #01826
- --------N-21E1--SF05-------------------------
- INT 21 O - Novell NetWare - MESSAGE SERVICES - GET PERSONAL MESSAGE
- AH = E1h subfn 05h
- DS:SI -> request buffer (see #01828)
- ES:DI -> reply buffer (see #01829)
- Return: AL = status
- 00h successful
- FEh out of dynamic workspace
- Desc: return the oldest message in the default file server's message queue
- for the calling workstation
- Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
- SeeAlso: AH=E1h/SF=01h,AH=E1h/SF=04h,AH=E1h/SF=06h,AH=E1h/SF=08h
- Format of NetWare "Get Personal Message" request buffer:
- Offset Size Description (Table 01828)
- 00h WORD 0001h (length of following data)
- 02h BYTE 05h (subfunction "Get Personal Message")
- SeeAlso: #01829
- Format of NetWare "Get Personal Message" reply buffer:
- Offset Size Description (Table 01829)
- 00h WORD (call) size of following results buffer (max 80h)
- 02h BYTE connection number of sending station
- 03h BYTE length of message (00h-7Eh)
- 00h if no personal messages pending
- 04h N BYTEs message (no control characters or characters > 7Eh)
- SeeAlso: #01828
- --------N-21E1--SF06-------------------------
- INT 21 O - Novell NetWare - MESSAGE SERVICES - OPEN MESSAGE PIPE
- AH = E1h subfn 06h
- DS:SI -> request buffer (see #01830)
- ES:DI -> reply buffer (see #01831)
- Return: AL = status
- 00h successful
- FEh out of dynamic workspace
- Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
- SeeAlso: AH=E1h/SF=04h,AH=E1h/SF=07h,AH=E1h/SF=08h
- Format of NetWare "Open Message Pipe" request buffer:
- Offset Size Description (Table 01830)
- 00h WORD length of following data (max 66h)
- 02h BYTE 06h (subfunction "Open Message Pipe")
- 03h BYTE number of pipes to open (01h-64h)
- 04h N BYTEs list of connection numbers
- SeeAlso: #01831,#01832,#01835
- Format of NetWare "Open Message Pipe" reply buffer:
- Offset Size Description (Table 01831)
- 00h WORD (call) size of following results buffer (max 65h)
- 02h BYTE number of connections
- 03h N BYTEs list of results
- 00h successful
- FEh incomplete (target half not yet created)
- FFh failed
- SeeAlso: #01830,#01833,#01836
- --------N-21E1--SF07-------------------------
- INT 21 O - Novell NetWare - MESSAGE SERVICES - CLOSE MESSAGE PIPE
- AH = E1h subfn 07h
- DS:SI -> request buffer (see #01832)
- ES:DI -> reply buffer (see #01833)
- Return: AL = status
- 00h successful
- FCh full message queue
- FEh out of dynamic workspace
- Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
- SeeAlso: AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=08h
- Format of NetWare "Close Mesage Pipe" request buffer:
- Offset Size Description (Table 01832)
- 00h WORD length of following data (max 66h)
- 02h BYTE 07h (subfunction "Close Message Pipe")
- 03h BYTE number of pipes to close (01h-64h)
- 04h N BYTEs list of connection numbers
- SeeAlso: #01830,#01833
- Format of NetWare "Close Message Pipe" reply buffer:
- Offset Size Description (Table 01833)
- 00h WORD (call) size of following results buffer (max 65h)
- 02h BYTE number of connections
- 03h N BYTEs list of results
- 00h successful
- FDh failed
- FFh no such pipe
- SeeAlso: #01831,#01832
- --------N-21E1--SF08-------------------------
- INT 21 O - Novell NetWare - MESSAGE SERVICES - CHECK PIPE STATUS
- AH = E1h subfn 08h
- DS:SI -> request buffer (see #01835)
- ES:DI -> reply buffer (see #01836)
- Return: AL = status (see #01834)
- Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
- SeeAlso: AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=07h,AX=F215h/SF=08h
- (Table 01834)
- Values for NetWare function status:
- 00h successful
- FCh full message queue
- FEh out of dynamic workspace
- SeeAlso: #01839
- Format of NetWare "Check Pipe Status" request buffer:
- Offset Size Description (Table 01835)
- 00h WORD length of following data (max 66h)
- 02h BYTE 08h (subfunction "Check Pipe Status")
- 03h BYTE number of pipes to monitor (01h-64h)
- 04h N BYTEs list of connection numbers
- SeeAlso: #01830,#01836
- Format of NetWare "Check Pipe Status" reply buffer:
- Offset Size Description (Table 01836)
- 00h WORD (call) size of following results buffer (max 65h)
- 02h BYTE number of connections
- 03h N BYTEs list of pipe statuses
- 00h open
- FEh incomplete
- FFh closed
- SeeAlso: #01831,#01835,#02108
- --------N-21E1--SF09-------------------------
- INT 21 - Novell NetWare - MESSAGE SERVICES - BROADCAST TO CONSOLE
- AH = E1h subfn 09h
- DS:SI -> request buffer (see #01837)
- ES:DI -> reply buffer (see #01838)
- Return: AL = status (see #01834)
- Desc: send a one-line message to the system console on the default file
- server
- Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
- SeeAlso: AH=DEh/DL=04h,AH=E1h/SF=00h,AH=E1h/SF=01h,AH=E3h/SF=D1h
- SeeAlso: AX=F215h/SF=09h
- Format of NetWare "Broadcast to Console" request buffer:
- Offset Size Description (Table 01837)
- 00h WORD length of following data (max 3Eh)
- 02h BYTE 09h (subfunction "Broadcast to Console")
- 03h BYTE length of message (01h-3Ch)
- 04h N BYTEs message (no control characters or characters > 7Eh)
- SeeAlso: #01838
- Format of NetWare reply buffer:
- Offset Size Description (Table 01838)
- 00h WORD (call) 0000h (no results returned)
- SeeAlso: #01837
- --------E-21E2-------------------------------
- INT 21 - OS/286, OS/386 - SET REAL PROCEDURE SIGNAL HANDLER
- AH = E2h
- ???
- Return: ???
- SeeAlso: AH=E0h"OS/286",AH=E1h"OS/286",AH=E6h"OS/286"
- --------N-21E2-------------------------------
- INT 21 - DoubleDOS - SEND CHARACTER TO KEYBOARD BUFFER OF OTHER JOB
- AH = E2h
- AL = character
- Return: AL = 00h successful
- 01h buffer full (128 characters)
- SeeAlso: AH=E1h"DoubleDOS",AH=E3h"DoubleDOS",AH=E8h"DoubleDOS"
- SeeAlso: AH=F2h"DoubleDOS"
- --------N-21E2--SF00-------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - SET DIRECTORY HANDLE
- AH = E2h subfn 00h
- DS:SI -> request buffer (see #01840)
- ES:DI -> reply buffer (see #01841)
- Return: AL = status (00h,98h,9Bh,9Ch) (see #01839)
- Desc: set the target handle to reference the directory specified by the
- source handle and the source path; both handles must refer to the
- same file server
- Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- the target handle is not changed if this function fails
- SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=12h,AH=E2h/SF=13h,AX=F216h/SF=00h
- (Table 01839)
- Values for NetWare function status:
- 00h successful
- 84h not permitted to create
- 8Ah not permitted to delete
- 8Bh not permitted to rename
- 8Ch not permitted to modify
- 98h nonexistent volume
- 9Bh invalid directory handle
- 9Ch invalid path
- 9Eh invalid filename
- 9Fh directory currently in use
- A0h directory not empty
- C6h no console rights
- FCh no such bindery object
- SeeAlso: #01834,#01866
- Format of NetWare "Set Directory Handle" request buffer:
- Offset Size Description (Table 01840)
- 00h WORD length of following data (max 103h)
- 02h BYTE 00h (subfunction "Set Directory Handle")
- 03h BYTE directory handle of target
- 04h BYTE directory handle of source
- 05h BYTE length of source directory path (01h-FFh)
- 06h N BYTEs source directory path
- SeeAlso: #01841
- Format of NetWare reply buffer:
- Offset Size Description (Table 01841)
- 00h WORD (call) 0000h (no results returned)
- SeeAlso: #01840
- --------N-21E2--SF01-------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - GET DIRECTORY PATH
- AH = E2h subfn 01h
- DS:SI -> request buffer (see #01842)
- ES:DI -> reply buffer (see #01843)
- Return: AL = status (00h,9Bh) (see #01839)
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=E2h/SF=02h,AH=E2h/SF=03h,AH=E2h/SF=1Ah,AH=E9h,AX=F216h/SF=01h
- Format of NetWare "Get Directory Path" request buffer:
- Offset Size Description (Table 01842)
- 00h WORD 0002h (length of following data)
- 02h BYTE 01h (subfunction "Get Directory Path")
- 03h BYTE directory handle
- SeeAlso: #01843,#01844
- Format of NetWare "Get Directory Path" reply buffer:
- Offset Size Description (Table 01843)
- 00h WORD (call) length of following data buffer
- 02h BYTE length of directory path (01h-FFh)
- 03h N BYTEs full directory path including volume
- SeeAlso: #01842,#01845
- --------N-21E2--SF02-------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN DIRECTORY INFORMATION
- AH = E2h subfn 02h
- DS:SI -> request buffer (see #01844)
- ES:DI -> reply buffer (see #01845)
- Return: AL = status (00h,98h,9Bh,9Ch) (see #01839)
- Desc: get information about the first or next subdirectory of the specified
- directory
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=03h,AH=E2h/SF=19h,AX=F216h/SF=02h
- Format of NetWare "Scan Directory Information" request buffer:
- Offset Size Description (Table 01844)
- 00h WORD length of following data (max 104h)
- 02h BYTE 02h (subfunction "Scan Directory Information")
- 03h BYTE directory handle
- 04h WORD (big-endian) subdirectory number
- 0000h for first call, returned subdir number + 1 on next call
- 06h BYTE length of directory path
- 07h N BYTEs directory path
- SeeAlso: #01842,#01845
- Format of NetWare "Scan Directory Information" reply buffer:
- Offset Size Description (Table 01845)
- 00h WORD (call) 001Ch (length of following data buffer)
- 02h 16 BYTEs subdirectory name
- 12h DWORD (big-endian) date and time of creation (see #01846)
- 16h DWORD (big-endian) object ID of owner
- 1Ah BYTE maximum directory rights (see #01849)
- 1Bh BYTE unused
- 1Ch WORD (big-endian) subdirectory number
- SeeAlso: #01843,#01844,#02111 at AX=F216h/SF=02h
- Bitfields for NetWare date and time:
- Bit(s) Description (Table 01846)
- 31-25 year-1980
- 24-21 month
- 20-16 day
- 15-11 hour
- 10-5 minute
- 4-0 second
- --------N-21E2--SF03-------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - GET EFFECTIVE DIRECTORY RIGHTS
- AH = E2h subfn 03h
- DS:SI -> request buffer (see #01847)
- ES:DI -> reply buffer (see #01848)
- Return: AL = status (00h,98h,9Bh) (see #01839)
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=02h,AX=F216h/SF=03h
- Format of NetWare "Get Effective Directory Rights (old)" request buffer:
- Offset Size Description (Table 01847)
- 00h WORD length of following data (max 102h)
- 02h BYTE 03h (subfunction "Get Effective Directory Rights (old)")
- 03h BYTE directory handle
- 04h BYTE length of directory path (00h-FFh)
- 05h N BYTEs directory path
- SeeAlso: #01848,#01850
- Format of NetWare "Get Effective Directory Rights" reply buffer:
- Offset Size Description (Table 01848)
- 00h WORD (call) 0001h (length of following data buffer)
- 02h BYTE effective directory rights (see #01849)
- SeeAlso: #01847
- Bitfields for NetWare directory rights:
- Bit(s) Description (Table 01849)
- 0 reading allowed
- 1 writing allowed
- 2 opens allowed
- 3 file creation allowed
- 4 deletion allowed
- 5 "parental" may create/delete subdirectories and grant/revoke trustee
- rights
- 6 directory search allowed
- 7 file attributes may be changed
- SeeAlso: #01848,#01850
- --------N-21E2--SF04-------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - MODIFY MAXIMUM RIGHTS MASK
- AH = E2h subfn 04h
- DS:SI -> request buffer (see #01850)
- ES:DI -> reply buffer (see #01851)
- Return: AL = status (00h,8Ch,98h,9Ch) (see #01839)
- Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=E2h/SF=03h,AH=E2h/SF=0Ah,AH=E2h/SF=0Dh,AX=F216h/SF=04h
- Format of NetWare "Modify Maximum Rights Mask" request buffer:
- Offset Size Description (Table 01850)
- 00h WORD length of following data (max 104h)
- 02h BYTE 04h (subfunction "Modify Maximum Rights Mask")
- 03h BYTE directory handle
- 04h BYTE rights to grant (see #01849)
- 05h BYTE rights to revoke (see #01849)
- 06h BYTE length of directory path (00h-FFh)
- 07h N BYTEs directory path
- Note: the rights specified at offset 05h are revoked first, and then the
- rights specified at offset 04h are added to the resulting rights
- mask
- SeeAlso: #01847,#01851
- Format of NetWare reply buffer:
- Offset Size Description (Table 01851)
- 00h WORD (call) 0000h (no results returned)
- SeeAlso: #01850
- --------N-21E2--SF05-------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME NUMBER
- AH = E2h subfn 05h
- DS:SI -> request buffer (see #01852)
- ES:DI -> reply buffer (see #01853)
- Return: AL = status (00h,98h) (see #01839)
- Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=05h,AH=E2h/SF=15h,AH=E3h/SF=E9h
- SeeAlso: AX=F216h/SF=05h
- Format of NetWare "Get Volume Number" request buffer:
- Offset Size Description (Table 01852)
- 00h WORD length of following data (max 12h)
- 02h BYTE 05h (subfunction "Get Volume Number")
- 03h BYTE length of volume name (01h-10h)
- 04h N BYTEs volume name
- SeeAlso: #01853,#02113 at AX=F216h/SF=05h
- Format of NetWare "Get Volume Number" reply buffer:
- Offset Size Description (Table 01853)
- 00h WORD (call) 0001h (length of following results buffer)
- 02h BYTE volume number
- SeeAlso: #01852,#02113 at AX=F216h/SF=05h
- --------N-21E2--SF06-------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME NAME
- AH = E2h subfn 06h
- DS:SI -> request buffer (see #01854)
- ES:DI -> reply buffer (see #01855)
- Return: AL = status (00h,98h) (see #01839)
- Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=05h,AH=E2h/SF=15h,AH=E2h/SF=1Ah
- SeeAlso: AH=E3h/SF=E9h,AX=F216h/SF=06h
- Format of NetWare "Get Volume Name" request buffer:
- Offset Size Description (Table 01854)
- 00h WORD 0002h (length of following data)
- 02h BYTE 06h (subfunction "Get Volume Name")
- 03h BYTE volume number
- SeeAlso: #01855,#02114 at AX=F216h/SF=06h
- Format of NetWare "Get Volume Name" reply buffer:
- Offset Size Description (Table 01855)
- 00h WORD (call) 0011h (length of following results buffer)
- 02h BYTE length of volume name
- 03h 16 BYTEs NUL-padded volume name
- SeeAlso: #01854,#02114 at AX=F216h/SF=06h
- --------N-21E2--SF0A-------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - CREATE DIRECTORY
- AH = E2h subfn 0Ah
- DS:SI -> request buffer (see #01856)
- ES:DI -> reply buffer (see #01857)
- Return: AL = status (00h,84h,98h,FCh) (see #01839)
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=39h,AH=E2h/SF=0Bh,AH=E2h/SF=0Fh,AX=F216h/SF=0Ah
- Format of NetWare "Create Directory" request buffer:
- Offset Size Description (Table 01856)
- 00h WORD length of following data (max 103h)
- 02h BYTE 0Ah (subfunction "Create Directory")
- 03h BYTE directory handle
- 04h BYTE maximum directory rights (see #01849)
- 05h BYTE length of directory path (00h-FFh)
- 06h N BYTEs directory path
- SeeAlso: #01857,#01858
- Format of NetWare reply buffer:
- Offset Size Description (Table 01857)
- 00h WORD (call) 0000h (no data returned)
- SeeAlso: #01856,#01858
- --------N-21E2--SF0B-------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - DELETE DIRECTORY
- AH = E2h subfn 0Bh
- DS:SI -> request buffer (see #01858)
- ES:DI -> reply buffer (see #01857)
- Return: AL = status (00h,8Ah,98h,9Bh,9Ch,9Fh,A0h) (see #01839)
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=3Ah,AH=E2h/SF=0Ah,AH=E2h/SF=0Fh,AX=F216h/SF=0Bh
- Format of NetWare "Delete Directory" request buffer:
- Offset Size Description (Table 01858)
- 00h WORD length of following data (max 103h)
- 02h BYTE 0Bh (subfunction "Delete Directory")
- 03h BYTE directory handle
- 04h BYTE unused
- 05h BYTE length of directory path (00h-FFh)
- 06h N BYTEs directory path
- SeeAlso: #01856,#01857
- --------N-21E2--SF0C-------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN DIRECTORY FOR TRUSTEES
- AH = E2h subfn 0Ch
- DS:SI -> request buffer (see #01859)
- ES:DI -> reply buffer (see #01860)
- Return: AL = status (00h,9Ch) (see also #01839)
- 9Ch no more trustees
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AH=E2h/SF=0Dh,AH=E2h/SF=0Eh,AH=E3h/SF=47h,AX=F216h/SF=0Ch
- Format of NetWare "Scan Directory For Trustees" request buffer:
- Offset Size Description (Table 01859)
- 00h WORD length of following data (max 103h)
- 02h BYTE 0Ch (subfunction "Scan Directory For Trustees")
- 03h BYTE directory handle
- 04h BYTE sequence number
- 00h on first call, increment for each subsequent call
- 05h BYTE length of directory path (00h-FFh)
- 06h N BYTEs directory path
- SeeAlso: #01860,#01861,#02115 at AX=F216h/SF=0Ch
- Format of NetWare "Scan Directory For Trustees" reply buffer:
- Offset Size Description (Table 01860)
- 00h WORD (call) 0031h (length of following results buffer)
- 02h 16 BYTEs directory name
- 12h 4 BYTEs date and time of creation
- 16h DWORD (big-endian) object ID of owner
- 1Ah 5 DWORDs (big-endian) object IDs of Trustees 0 through 4
- 00000000h = end of group
- 2Eh 5 BYTEs directory rights for Trustees 0 through 4 (see #01849)
- SeeAlso: #01859,#01863,#02115 at AX=F216h/SF=0Ch
- --------N-21E2--SF0D-------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - ADD TRUSTEE TO DIRECTORY
- AH = E2h subfn 0Dh
- DS:SI -> request buffer (see #01861)
- ES:DI -> reply buffer (see #01863)
- Return: AL = status (00h,8Ch,FCh) (see #01839)
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=E2h/SF=0Ch,AH=E2h/SF=0Eh,AH=E3h/SF=47h,AX=F216h/SF=0Dh
- Format of NetWare "Add Trustee To Directory" request buffer:
- Offset Size Description (Table 01861)
- 00h WORD length of following data (max 107h)
- 02h BYTE 0Dh (subfunction "Add Trustee To Directory")
- 03h BYTE directory handle
- 04h DWORD (big-endian) object ID of trustee
- 08h BYTE trustee directory rights (see #01849)
- 09h BYTE length of directory path (00h-FFh)
- 0Ah N BYTEs directory path
- SeeAlso: #01863
- --------N-21E2--SF0E-------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - DELETE TRUSTEE FROM DIRECTORY
- AH = E2h subfn 0Eh
- DS:SI -> request buffer (see #01862)
- ES:DI -> reply buffer (see #01863)
- Return: AL = status (00h,98h,9Bh,9Ch) (see #01839)
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=E2h/SF=0Ch,AH=E2h/SF=0Dh,AX=F216h/SF=0Eh
- Format of NetWare "Delete Trustee From Directory" request buffer:
- Offset Size Description (Table 01862)
- 00h WORD length of following data (max 107h)
- 02h BYTE 0Eh (subfunction "Delete Trustee From Directory")
- 03h BYTE directory handle
- 04h DWORD (big-endian) object ID of trustee
- 08h BYTE unused
- 09h BYTE length of directory path (00h-FFh)
- 0Ah N BYTEs directory path
- SeeAlso: #01863
- Format of NetWare reply buffer:
- Offset Size Description (Table 01863)
- 00h WORD (call) 0000h (no data returned)
- SeeAlso: #01862,#01864,#01865
- --------N-21E2--SF0F-------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - RENAME DIRECTORY
- AH = E2h subfn 0Fh
- DS:SI -> request buffer (see #01864)
- ES:DI -> reply buffer (see #01863)
- Return: AL = status (00h,8Bh,9Bh,9Ch,9Eh) (see #01839)
- Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- directories SYS:LOGIN, SYS:MAIL, and SYS:PUBLIC must not be renamed
- SeeAlso: AH=56h,AH=E2h/SF=0Ah,AH=E2h/SF=0Bh,AX=F216h/SF=0Fh
- Format of NetWare "Rename Directory" request buffer:
- Offset Size Description (Table 01864)
- 00h WORD length of following data (max 111h)
- 02h BYTE 0Fh (subfunction "Rename Directory")
- 03h BYTE directory handle
- 04h BYTE length of directory path (00h-FFh)
- 05h N BYTEs directory path
- BYTE length of new directory name (01h-0Eh)
- N BYTEs new directory name
- SeeAlso: #01863
- --------N-21E2--SF10-------------------------
- INT 21 - Novell NetWare - FILE SERVICES - PURGE ERASED FILES (OLD)
- AH = E2h subfn 10h
- DS:SI -> request buffer (see #01865)
- ES:DI -> reply buffer (see #01863)
- Return: AL = status (00h,C6h) (see #01866)
- Desc: purges files marked for deletion on the file server by the calling
- workstation
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=13h,AH=41h,AH=E2h/SF=11h,AH=E3h/SF=CEh,AX=F244h,AX=F216h/SF=10h
- Format of NetWare "Purge Erased Files" request buffer:
- Offset Size Description (Table 01865)
- 00h WORD 0001h (length of following data)
- 02h BYTE 10h (subfunction "Purge Erased Files")
- SeeAlso: #01863
- --------N-21E2--SF11-------------------------
- INT 21 - Novell NetWare - FILE SERVICES - RESTORE ERASED FILE (OLD)
- AH = E2h subfn 11h
- DS:SI -> request buffer (see #01867)
- ES:DI -> reply buffer (see #01868)
- Return: AL = status (00h,98h,FFh) (see #01866)
- Desc: restores one file marked for deletion which has not yet been purged
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=13h,AH=41h,AH=E2h/SF=10h,AH=E3h/SF=CEh,AX=F244h
- (Table 01866)
- Values for NetWare function status:
- 00h successful
- 98h nonexistent volume
- 9Ch invalid path
- C6h no console rights
- FFh no more erased files
- SeeAlso: #01839,#01899
- Format of NetWare "Restore Erased File" request buffer:
- Offset Size Description (Table 01867)
- 00h WORD length of following data (max 13h)
- 02h BYTE 11h (subfunction "Restore Erased File")
- 03h BYTE directory handle or 00h
- 04h BYTE length of volume name
- 05h N BYTEs volume name (including colon)
- Note: if both a directory handle and a volume name are specified, the volume
- name overrides the handle
- SeeAlso: #01868,#02116
- Format of NetWare "Restore Erased File" reply buffer:
- Offset Size Description (Table 01868)
- 00h WORD (call) 001Eh (size of following results buffer)
- 02h 15 BYTEs ASCIZ name of erased file
- 11h 15 BYTEs ASCIZ name under which file was restored
- SeeAlso: #01867,#02116
- --------N-21E2--SF12-------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - ALLOC PERMANENT DIRECTORY HANDLE
- AH = E2h subfn 12h
- DS:SI -> request buffer (see #01869)
- ES:DI -> reply buffer (see #01870)
- Return: AL = status (00h,98h,9Ch) (see #01866)
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=E2h/SF=00h,AH=E2h/SF=13h,AH=E2h/SF=14h,AX=F216h/SF=12h
- Format of NetWare "Allocate Permanent Directory Handle" request buffer:
- Offset Size Description (Table 01869)
- 00h WORD length of following data (max 103h)
- 02h BYTE 12h (subfunction "Allocate Permanent Directory Handle")
- 03h BYTE directory handle
- 04h BYTE drive ('A'-'Z')
- 05h BYTE length of directory path
- 06h N BYTEs directory path
- SeeAlso: #01870,#01871,#02118
- Format of NetWare reply buffer:
- Offset Size Description (Table 01870)
- 00h WORD (call) 0002h (size of following results buffer)
- 02h BYTE new directory handle
- 03h BYTE effective directory rights (see #01849)
- SeeAlso: #01869,#02118
- --------N-21E2--SF13-------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - ALLOC TEMPORARY DIRECTORY HANDLE
- AH = E2h subfn 13h
- DS:SI -> request buffer (see #01871)
- ES:DI -> reply buffer (see #01870)
- Return: AL = status (00h,98h,9Ch) (see #01866)
- Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- this call is the same as AH=E2h/SF=12h except that the directory handle
- will be automatically deallocated when the calling application
- executes an End of Job call (AH=D6h) or terminates
- SeeAlso: AH=D6h,AH=E2h/SF=00h,AH=E2h/SF=12h,AH=E2h/SF=14h,AH=E2h/SF=16h
- SeeAlso: AX=F216h/SF=13h
- Format of NetWare "Allocate Temporary Directory Handle" request buffer:
- Offset Size Description (Table 01871)
- 00h WORD length of following data (max 103h)
- 02h BYTE 13h (subfunction "Allocate Temporary Directory Handle")
- 03h BYTE directory handle
- 04h BYTE drive ('A'-'Z')
- 05h BYTE length of directory path
- 06h N BYTEs directory path
- SeeAlso: #01869,#01872
- --------N-21E2--SF14-------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - DEALLOCATE DIRECTORY HANDLE
- AH = E2h subfn 14h
- DS:SI -> request buffer (see #01872)
- ES:DI -> reply buffer (see #01873)
- Return: AL = status (00h,9Bh) (see #01839)
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=13h,AX=F216h/SF=14h
- Format of NetWare "Deallocate Directory Handle" request buffer:
- Offset Size Description (Table 01872)
- 00h WORD 0002h (length of following data)
- 02h BYTE 14h (subfunction "Deallocate Directory Handle")
- 03h BYTE directory handle
- SeeAlso: #01873
- Format of NetWare reply buffer:
- Offset Size Description (Table 01873)
- 00h WORD (call) 0000h (no returned data)
- SeeAlso: #01872
- --------N-21E2--SF15-------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFO WITH HANDLE
- AH = E2h subfn 15h
- DS:SI -> request buffer (see #01874)
- ES:DI -> reply buffer (see #01875)
- Return: AL = status
- 00h successful
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=06h,AH=E2h/SF=19h,AH=E3h/SF=E9h
- SeeAlso: AX=F216h/SF=15h
- Format of NetWare "Get Volume Info with Handle" request buffer:
- Offset Size Description (Table 01874)
- 00h WORD 0002h (length of following data)
- 02h BYTE 15h (subfunction "Get Volume Info With Handle")
- 03h BYTE directory handle
- SeeAlso: #01875,#02119
- Format of NetWare "Get Volume Info with Handle" reply buffer:
- Offset Size Description (Table 01875)
- 00h WORD (call) 001Ch (length of following results buffer)
- 02h WORD (big-endian) sectors per block
- 04h WORD (big-endian) total blocks on volume
- 06h WORD (big-endian) blocks available on volume
- 08h WORD (big-endian) total directory slots
- 0Ah WORD (big-endian) directory slots available
- 0Ch 16 BYTEs NUL-padded volume name
- 1Ch WORD (big-endian) flag: volume removable if nonzero
- SeeAlso: #01874,#02119
- --------N-21E2--SF16-------------------------
- INT 21 u - Novell NetWare - DIRECTORY SERVICES - ALLOC SPECIAL TEMP DIR HANDLE
- AH = E2h subfn 16h
- DS:SI -> request buffer (see #01876)
- ES:DI -> reply buffer (see #01873)
- Return: AL = status
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX,
- but is not described in _NetWare_System_Calls--DOS_
- SeeAlso: AH=E2h/SF=13h,AH=E2h/SF=14h,AX=F216h/SF=16h
- Format of NetWare "Alloc Special Temporary Directory Handle" request buffer:
- Offset Size Description (Table 01876)
- 00h WORD length of following data
- 02h BYTE 16h (subfunction "Allocate Special Temporary Directory Handle")
- 03h BYTE source directory handle
- 04h BYTE drive name ('A'-'Z')
- 05h BYTE path length
- 06h N BYTEs directory path
- SeeAlso: #01873
- --------N-21E2--SF17-------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - SAVE DIRECTORY HANDLE
- AH = E2h subfn 17h
- DS:SI -> request buffer (see #01877)
- ES:DI -> reply buffer (see #01878)
- Return: AL = status
- 00h successful
- else network error code
- Note: this function is supported by Advanced NetWare 2.0+ and Alloy NTNX
- SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=17h,AX=F216h/SF=17h
- Format of NetWare "Save Directory Handle" request buffer:
- Offset Size Description (Table 01877)
- 00h WORD 0002h (length of following data)
- 02h BYTE 17h (subfunction "Save Directory Handle")
- 03h BYTE directory handle
- SeeAlso: #01878,#01879
- Format of NetWare "Save Directory Handle" reply buffer:
- Offset Size Description (Table 01878)
- 00h WORD (call) 0010h (length of following results buffer)
- 02h 16 BYTEs save buffer
- SeeAlso: #01877,#01880
- --------N-21E2--SF18-------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - RESTORE DIRECTORY HANDLE
- AH = E2h subfn 18h
- DS:SI -> request buffer (see #01879)
- ES:DI -> reply buffer (see #01880)
- Return: AL = status
- 00h successful
- else network error code
- Desc: restore a previously saved directory handle to reproduce an executing
- environment, possibly on a different execution site
- Note: this function is supported by Advanced NetWare 2.0+ and Alloy NTNX
- SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=17h,AX=F216h/SF=18h
- Format of NetWare "Restore Directory Handle" request buffer:
- Offset Size Description (Table 01879)
- 00h WORD 0011h (length of following data)
- 02h BYTE 18h (subfunction "Restore Directory Handle")
- 03h 16 BYTEs save buffer
- SeeAlso: #01877,#01880
- Format of NetWare "Restore Directory Handle" reply buffer:
- Offset Size Description (Table 01880)
- 00h WORD (call) 0002h (length of following results buffer)
- 02h BYTE new directory handle
- 03h BYTE effective rights (see #01849)
- SeeAlso: #01879
- --------N-21E2--SF19-------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - SET DIRECTORY INFORMATION
- AH = E2h subfn 19h
- DS:SI -> request buffer (see #01881)
- ES:DI -> reply buffer (see #01882)
- Return: AL = status (00h,9Bh,9Ch) (see #01839)
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AH=E2h/SF=02h,AH=E2h/SF=0Fh,AX=F216h/SF=19h
- Format of NetWare "Set Directory Information" request buffer:
- Offset Size Description (Table 01881)
- 00h WORD length of following data (max 10Bh)
- 02h BYTE 19h (subfunction "Set Directory Information")
- 03h BYTE directory handle
- 04h DWORD (big-endian) date and time of creation
- 08h DWORD (big-endian) object ID of owner
- 0Ch BYTE maximum directory rights (see #01849)
- 0Dh BYTE length of directory path
- 0Eh N BYTEs directory path
- SeeAlso: #01882
- Format of NetWare reply buffer:
- Offset Size Description (Table 01882)
- 00h WORD (call) 0000h (no results returned)
- SeeAlso: #01881
- --------N-21E2--SF1A-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET PATH FROM DIRECTORY ENTRY
- AH = E2h subfn 1Ah
- DS:SI -> request buffer (see #01883)
- ES:DI -> reply buffer (see #01884)
- Return: AL = status
- 00h successful
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=06h,AH=E3h/SF=D7h,AX=F216h/SF=1Ah
- Format of NetWare "Get Path from Directory Entry" request buffer:
- Offset Size Description (Table 01883)
- 00h WORD 0004h (length of following data)
- 02h BYTE 1Ah (subfunction "Get Path From Directory Entry")
- 03h BYTE volume number (00h-1Fh)
- 04h WORD (big-endian) directory entry number
- SeeAlso: #01884,#02122
- Format of NetWare "Get Path from Directory Entry" reply buffer:
- Offset Size Description (Table 01884)
- 00h WORD (call) size of following results record (max 200h)
- 02h 256 BYTEs path
- SeeAlso: #01883,#02122
- --------!---Section--------------------------
- Interrupt List, part 9 of 18
- Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
- --------E-21E3-------------------------------
- INT 21 - OS/286, OS/386 - ISSUE REAL INTERRUPT
- AH = E3h
- AL = interrupt number
- ???
- Return: ???
- Note: protected mode only???
- SeeAlso: AH=E1h"OS/286",INT 31/AX=0300h
- --------T-21E3-------------------------------
- INT 21 - DoubleDOS - ADD CHARACTER TO KEYBOARD BUFFER OF CURRENT JOB
- AH = E3h
- AL = character
- Return: AL = status
- 00h successful
- 01h buffer full (128 characters)
- SeeAlso: AH=E1h"DoubleDOS",AH=E2h"DoubleDOS",AH=E8h"DoubleDOS"
- SeeAlso: AH=F3h"DoubleDOS"
- --------N-21E3-------------------------------
- INT 21 - Novell NetWare - CONNECTION CONTROL
- AH = E3h
- DS:SI -> request buffer (see #01885)
- ES:DI -> reply buffer (see #01886)
- Return: AL = status
- 00h successful
- else error code
- Note: supported by NetWare 4.0+, Advanced NetWare 1.0+, and Alloy NTNX
- SeeAlso: AH=E3h/SF=0Ah,AH=E3h/SF=32h,AH=E3h/SF=64h,AH=E3h/SF=C8h
- Format of NetWare request buffer:
- Offset Size Description (Table 01885)
- 00h WORD length of following data
- 02h BYTE subfunction number (see also AH=E3h/SF=01h,AH=E3h/SF=02h)
- 00h login
- 03h map object to number
- 04h map number to object
- 05h get station's logged information
- 06h get station's root mask (obsolete)
- 07h map group name to number
- 08h map number to group name
- 09h get memberset M of group G
- var depends on subfunction
- Notes: the above subfunctions are not described in _NetWare_System_Calls--DOS_
- see separate entries below for other subfunctions
- SeeAlso: #01886,#01887,#01890
- Format of NetWare reply buffer:
- Offset Size Description (Table 01886)
- 00h WORD (call) length of following buffer space for results
- var depends on subfunction
- SeeAlso: #01885
- Format of NetWare object property:
- Offset Size Description (Table 01887)
- 00h 1-16 BYTEs property name (see also #01888)
- N BYTE flags
- bit 0: property is dynamic
- bit 1: property is a set rather than an item
- N+1 BYTE security levels (see #01889)
- ???
- (Table 01888)
- Values for names of well-known NetWare properties:
- ACCOUNT_BALANCE
- ACCOUNT_SERVERS
- GROUP_MEMBERS
- GROUPS_I'M_IN
- IDENTIFICATION user's name
- LOGIN_CONTROL
- NET_ADDRESS
- OPERATORS
- PASSWORD
- SECURITY_EQUALS
- (Table 01889)
- Values for NetWare security levels:
- 00h "anyone" everyone may access
- 01h "logged" only logged-in clients may access
- 02h "object" only clients logged-in with object's name, type, and password
- 03h "supervisor" only clients logged-in with supervisor privileges
- 04h "NetWare" only NetWare may access
- Note: the above values are stored in a nybble; the high half-byte is write
- access and the low half-byte is read access
- (Table 01890)
- Values for NetWare object type:
- 0000h unknown
- 0001h user
- 0002h user group
- 0003h print queue / print server
- 0004h file server
- 0005h job server
- 0006h gateway
- 0007h print server
- 0008h archive queue
- 0009h archive server
- 000Ah job queue
- 000Bh administration
- 0021h NAS SNA gateway
- 0024h remote bridge server???
- 0026h remote bridge server
- 0027h TCPIP gateway
- 002Dh time synchronization server
- 002Eh archive server dynamic SAP
- 0047h advertising print server
- 0053h print queue uwer
- 0048h-8000h reserved
- FFFFh wild (used only for finding objects)
- --------N-21E3--SF01-------------------------
- INT 21 - Novell NetWare - CONNECTION SERVICES - CHANGE USER PASSWORD (OLD)
- AH = E3h subfn 01h
- DS:SI -> request buffer (see #01891)
- ES:DI -> reply buffer (see #01895)
- Return: AL = status
- 00h successful
- else error code
- Note: supported by NetWare 4.0+, Advanced NetWare 1.0+, and Alloy NTNX
- SeeAlso: AH=E3h/SF=0Ah,AH=E3h/SF=32h,AH=E3h/SF=64h,AH=E3h/SF=C8h
- Format of NetWare "Change User Password (old)" request packet:
- Offset Size Description (Table 01891)
- 00h WORD length of following data
- 02h BYTE 01h (subfunction "Change User Password (old)")
- 03h BYTE length of user name
- 04h N BYTEs user name
- BYTE length of old password
- N BYTEs old password
- BYTE length of new password
- N BYTEs new password
- SeeAlso: #01895
- --------N-21E3--SF02-------------------------
- INT 21 - Novell NetWare - CONNECTION SERVICES - CHANGE USER PASSWORD (OLD)
- AH = E3h subfn 02h
- DS:SI -> request buffer (see #01892)
- ES:DI -> reply buffer (see #01893)
- Return: AL = status
- 00h successful
- else error code
- Note: supported by NetWare 4.0+, Advanced NetWare 1.0+, and Alloy NTNX
- SeeAlso: AH=E3h/SF=01h,AH=E3h/SF=03h,AH=E3h/SF=0Ah
- Format of NetWare "Get User Connection List (old)" request packet:
- Offset Size Description (Table 01892)
- 00h WORD length of following data
- 02h BYTE 02h (subfunction "Get User Connection List (old)")
- 03h BYTE length of user name
- 04h N BYTEs user name
- SeeAlso: #01893,#02162
- Format of NetWare "Get User Connection List (old)" reply packet:
- Offset Size Description (Table 01893)
- 00h WORD (call) length of following buffer
- 02h BYTE length of connection list
- 03h BYTE number of bytes in connection list
- 04h N BYTEs list of connection numbers in use by user
- SeeAlso: #01892,#02162
- --------N-21E3--SF03-------------------------
- INT 21 - Novell NetWare - CONNECTION SERVICES - MAP OBJECT TO NUMBER (OLD)
- AH = E3h subfn 03h
- DS:SI -> request buffer
- ES:DI -> reply buffer
- Return: AL = status
- 00h successful
- else error code
- Note: supported by NetWare 4.0+, Advanced NetWare 1.0+, and Alloy NTNX
- SeeAlso: AH=E3h/SF=01h,AH=E3h/SF=02h,AH=E3h/SF=0Ah
- --------N-21E3--SF0A-------------------------
- INT 21 - Novell NetWare - CONNECTION SERVICES - ENTER LOGIN AREA
- AH = E3h subfn 0Ah
- DS:SI -> request buffer (see #01894)
- ES:DI -> reply buffer (see #01895)
- Return: AL = status
- 00h successful
- Desc: change the login directory for the calling workstation
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=D7h,AH=E3h/SF=14h
- Format of NetWare "Enter Login Area" request buffer:
- Offset Size Description (Table 01894)
- 00h WORD length of following data (max 102h)
- 02h BYTE 0Ah (subfunction "Enter Login Area")
- 03h BYTE number of local drives
- 04h BYTE length of subdirectory name (00h-FFh)
- 05h N BYTEs name of subdirectory under SYS:LOGIN where to find the login
- utility
- SeeAlso: #01895
- Format of NetWare reply buffer:
- Offset Size Description (Table 01895)
- 00h WORD (call) 0000h (no data returned)
- SeeAlso: #01891,#01894,#01898
- --------N-21E3--SF0C-------------------------
- INT 21 U - Novell NetWare - VERIFY NETWORK SERIAL NUMBER
- AH = E3h subfn 0Ch
- DS:SI -> request buffer (see #01896)
- ES:DI -> reply buffer (see #01897)
- Return: AL = status
- 00h successful
- Note: if the network serial number to be verified is correct, the reply
- buffer will contain the corresponding application number
- SeeAlso: AH=E3h/SF=12h,AX=F217h/SF=0Ch
- Format of NetWare "Verify Network Serial Number" request buffer:
- Offset Size Description (Table 01896)
- 00h WORD 0005h (length of following data)
- 02h BYTE 0Ch (subfunction "Verify Network Serial Number")
- 03h DWORD (big-endian) network serial number to verify
- SeeAlso: #01897,#02163
- Format of NetWare "Verify Network Serial Number" reply buffer:
- Offset Size Description (Table 01897)
- 00h WORD (call) 0002h (size of following results buffer)
- 02h WORD (big-endian) application number
- SeeAlso: #01896,#02163
- --------N-21E3--SF0D-------------------------
- INT 21 - Novell NetWare - MESSAGE SERVICES - LOG NETWORK MESSAGE
- AH = E3h subfn 0Dh
- DS:SI -> request buffer (see #01898)
- ES:DI -> reply buffer (see #01895)
- Return: AL = status
- 00h successful
- Desc: append a line to the default file server's NET$LOG.MSG file
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=E1h/SF=09h
- Format of NetWare "Log Network Message" request buffer:
- Offset Size Description (Table 01898)
- 00h WORD length of following data (max 52h)
- 02h BYTE 0Dh (subfunction "Log Network Message")
- 03h BYTE length of message (01h-50h)
- 04h N BYTEs message (no control characters or characters > 7Eh)
- SeeAlso: #01895
- --------N-21E3--SF0E-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET DISK UTILIZATION
- AH = E3h subfn 0Eh
- DS:SI -> request buffer (see #01900)
- ES:DI -> reply buffer (see #01901)
- Return: AL = status (00h,98h,F2h) (see #01899)
- Notes: this function is supported by Advanced NetWare 2.1+
- the caller must have bindery object read privileges
- SeeAlso: AH=E3h/SF=11h,AH=E3h/SF=D6h,AH=E3h/SF=D9h,AH=E3h/SF=E6h,AH=E3h/SF=E9h
- SeeAlso: AX=F217h/SF=0Eh
- (Table 01899)
- Values for NetWare function status:
- 00h successful
- 98h nonexistent volume
- F2h not permitted to read object
- SeeAlso: #01866,#01902
- Format of NetWare "Get Disk Utilization" request buffer:
- Offset Size Description (Table 01900)
- 00h WORD 0005h (length of following data)
- 02h BYTE 0Eh (subfunction "Get Disk Utilization")
- 03h BYTE volume number (00h-1Fh)
- 04h DWORD (big-endian) object ID
- SeeAlso: #01901,#02164
- Format of NetWare "Get Disk Utilization" reply buffer:
- Offset Size Description (Table 01901)
- 00h WORD (call) 000Bh (size of following results buffer)
- 02h BYTE volume number (00h-1Fh)
- 03h DWORD (big-endian) object ID
- 07h WORD (big-endian) directories used by object
- 09h WORD (big-endian) files created by object
- 0Bh WORD (big-endian) disk blocks used by object-created files
- SeeAlso: #01900,#02164
- --------N-21E3--SF0F-------------------------
- INT 21 - Novell NetWare - FILE SERVICES - SCAN FILE INFORMATION
- AH = E3h subfn 0Fh
- DS:SI -> request buffer (see #01903)
- ES:DI -> reply buffer (see #01904)
- Return: AL = status (see #01902)
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AH=B6h,AH=E3h/SF=10h,AX=F217h/SF=0Fh
- (Table 01902)
- Values for NetWare function status:
- 00h successful
- 89h not permitted to search directory
- FFh no more matching files
- SeeAlso: #01899,#01920
- Format of NetWare "Scan File Information" request buffer:
- Offset Size Description (Table 01903)
- 00h WORD length of following data (max 105h)
- 02h BYTE 0Fh (subfunction "Scan File Information")
- 03h WORD (big-endian) sequence number
- FFFFh on first call
- 05h BYTE directory handle or 00h
- 06h BYTE search attributes (see #01420 at AX=4301h)
- 07h BYTE length of filespec
- 08h N BYTEs ASCIZ uppercase filespec
- SeeAlso: #01904,#02165
- Format of NetWare "Scan File Information" reply buffer:
- Offset Size Description (Table 01904)
- 00h WORD (call) 005Eh (size of following results buffer)
- 02h WORD next sequence number (place in request buffer for next call)
- 04h 14 BYTEs ASCIZ filename
- 12h BYTE file attributes (see #01420 at AX=4301h)
- 13h BYTE extended file attributes (see #01804 at AH=B6h)
- 14h DWORD (big-endian) file size in bytes
- 18h WORD (big-endian) file's creation date (see #01666 at AX=5700h)
- 1Ah WORD (big-endian) date of last access (see #01665 at AX=5700h)
- 1Ch DWORD (big-endian) date and time of last update (see #01846)
- 20h DWORD (big-endian) object ID of owner
- 24h DWORD (big-endian) date and time last archived (see #01846)
- 28h 55 BYTEs reserved
- Note: the official documentation erroneously lists the field at offset 04h as
- 15 bytes and thus shifts the remaining fields by one byte
- SeeAlso: #01903,#02165
- --------N-21E3--SF10-------------------------
- INT 21 - Novell NetWare - FILE SERVICES - SET FILE INFORMATION
- AH = E3h subfn 10h
- DS:SI -> request buffer (see #01905)
- ES:DI -> reply buffer (see #01906)
- Return: AL = status
- 00h successful
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- the caller must have modify privileges on the directory containing the
- file
- SeeAlso: AH=B6h,AH=E3h/SF=0Fh,AX=F217h/SF=10h
- Format of NetWare "Set File Information" request buffer:
- Offset Size Description (Table 01905)
- 00h WORD length of following data (max 151h)
- 02h BYTE 10h (subfunction "Set File Information")
- 03h BYTE file attributes (see #01420 at AX=4301h)
- 04h BYTE extended file attributes (see #01804 at AH=B6h)
- 05h 4 BYTEs reserved
- 09h WORD (big-endian) file's creation date (see #01666 at AX=5700h)
- 0Bh WORD (big-endian) date of last access (see #01665 at AX=5700h)
- 0Dh DWORD (big-endian) date and time of last update (see #01846)
- 11h DWORD (big-endian) object ID of owner
- 15h DWORD (big-endian) date and time last archived (see #01846)
- 19h 56 BYTEs reserved
- 51h BYTE directory handle or 00h
- 52h BYTE search attributes (see #01420 at AX=4301h)
- 53h BYTE length of filename
- 54h N BYTEs filename
- SeeAlso: #01906
- Format of NetWare reply buffer:
- Offset Size Description (Table 01906)
- 00h WORD (call) 0000h (no results returned)
- SeeAlso: #01905
- --------N-21E3--SF11-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER INFORMATION
- AH = E3h subfn 11h
- DS:SI -> request buffer (see #01907)
- ES:DI -> reply buffer (see #01908)
- Return: AL = status
- 00h successful
- Desc: determine the version of software installed on the file server and
- how it is configured
- Note: this function is supported by Advanced NetWare 2.1+
- SeeAlso: AH=E3h/SF=0Eh,AH=E3h/SF=12h,AH=E3h/SF=CDh,AH=E3h/SF=D3h,AH=E3h/SF=E7h
- SeeAlso: AH=E7h"Novell",AX=F217h/SF=11h
- Format of NetWare "Get File Server Information" request buffer:
- Offset Size Description (Table 01907)
- 00h WORD 0001h (length of following data)
- 02h BYTE 11h (subfunction "Get File Server Information")
- SeeAlso: #01908,#02166 at AX=F217h/SF=11h
- Format of NetWare "Get File Server Information" reply buffer:
- Offset Size Description (Table 01908)
- 00h WORD (call) 0080h (size of following results buffer)
- 02h 48 BYTEs server's name
- 32h BYTE NetWare version
- 33h BYTE NetWare subversion (0-99)
- 34h WORD (big-endian) number of connections supported
- NetWare 4.01 reportedly returns maximum simulataneously-used
- connections
- 36h WORD (big-endian) number of connections in use
- 38h WORD (big-endian) maximum connected volumes
- ---Advanced NetWare 2.1+ ---
- 3Ah BYTE operating system revision number
- 3Bh BYTE fault tolerance (SFT) level
- 3Ch BYTE TTS level
- 3Dh WORD (big-endian) maximum simultaneously-used connections
- NetWare 4.01 reportedly returns number of connections in use
- 3Fh BYTE accounting version
- 40h BYTE VAP version
- 41h BYTE queueing version
- 42h BYTE print server version
- 43h BYTE virtual console version
- 44h BYTE security restrictions level
- 45h BYTE internetwork bridge version
- 46h 60 BYTEs reserved
- SeeAlso: #01907,#02166
- --------N-21E3--SF12-------------------------
- INT 21 - Novell NetWare - GET NETWORK SERIAL NUMBER
- AH = E3h subfn 12h
- AL = 00h
- BX = CX = DX = 0000h
- DS:SI -> request buffer (see #01909)
- ES:DI -> reply buffer (see #01910)
- Return: AL = status
- 00h successful
- Desc: return the serial number and application number for the software
- installed on the file server
- Notes: this function is supported by Advanced NetWare 2.1+
- reportedly, the workstation crashes if AL,BX,CX, and DX are not all
- zero
- SeeAlso: AH=E3h/SF=0Ch,AH=E3h/SF=11h,AX=F217h/SF=12h
- Format of NetWare "Get Serial Number" request buffer:
- offset size description (Table 01909)
- 00h WORD 0001h (length of following data)
- 02h BYTE 12h (subfunction "Get Serial Number")
- SeeAlso: #01910,#02167
- Format of NetWare "Get Serial Number" reply buffer:
- offset size description (Table 01910)
- 00h WORD (call) 0006h (size of following results buffer)
- 02h 4 BYTEs (big-endian) NetWare server serial number
- 06h 2 BYTEs (big-endian) NetWare application serial number
- SeeAlso: #01909,#02167
- --------N-21E3--SF13-------------------------
- INT 21 - Novell NetWare - CONNECTION SERVICES - GET INTERNET ADDRESS (OLD)
- AH = E3h subfn 13h
- DS:SI -> request buffer (see #01911)
- ES:DI -> reply buffer (see #01912)
- Return: AL = status
- 00h successful
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AH=DCh"NetWare",AH=E3h/SF=16h,AH=EEh"NetWare",AX=F217h/SF=13h
- Format of NetWare "Get Internet Address (old)" request buffer:
- Offset Size Description (Table 01911)
- 00h WORD 0002h (length of following data)
- 02h BYTE 13h (subfunction "Get Internet Address")
- 03h BYTE logical connection number (01h-64h)
- SeeAlso: #01912,#02168
- Format of NetWare "Get Internet Address (old)" reply buffer:
- Offset Size Description (Table 01912)
- 00h WORD (call) 000Ch (length of following results buffer)
- 02h 4 BYTEs network number
- 06h 6 BYTEs physical node address
- 0Ch 2 BYTEs socket number
- SeeAlso: #01911,#02168 at AX=F217h/SF=13h
- --------N-21E3--SF14-------------------------
- INT 21 - Novell NetWare - CONNECTION SERVICES - LOGIN TO FILE SERVER
- AH = E3h subfn 14h
- DS:SI -> request buffer (see #01913)
- ES:DI -> reply buffer (see #01914)
- Return: AL = status
- 00h successful
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AH=D7h"NetWare",AH=F1h"NetWare",AX=F217h/SF=14h
- Format of NetWare "Login to File Server" request buffer:
- Offset Size Description (Table 01913)
- 00h WORD length of following data (max B3h)
- 02h BYTE 14h (subfunction "Login To File Server")
- 03h WORD (big-endian) type of object
- 05h BYTE length of object's name (01h-2Fh)
- 06h N BYTEs object's name
- BYTE length of password
- N BYTEs password
- SeeAlso: #01914
- Format of NetWare reply buffer:
- Offset Size Description (Table 01914)
- 00h WORD (call) 0000h (no data returned)
- SeeAlso: #01913
- --------N-21E3--SF15-------------------------
- INT 21 - Novell NetWare - CONNECTION SERVICES - GET OBJECT CONNECTION LIST(OLD)
- AH = E3h subfn 15h
- DS:SI -> request buffer (see #01915)
- ES:DI -> reply buffer (see #01916)
- Return: AL = status
- 00h successful
- Desc: this function retrieves a list indicating the connection numbers under
- which a bindery object is logged into the default file server
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AH=DCh"NetWare",AH=E3h/SF=16h,AX=F217h/SF=15h
- Format of NetWare "Get Object Connection Numbers" request buffer:
- Offset Size Description (Table 01915)
- 00h WORD length of following data (max 33h)
- 02h BYTE 15h (subfunction "Get Object Connection Numbers")
- 03h WORD (big-endian) type of object
- 05h BYTE length of object's name (01h-2Fh)
- 06h N BYTEs object's name
- SeeAlso: #01916,#02169
- Format of NetWare "Get Object Connection Numbers" reply buffer:
- Offset Size Description (Table 01916)
- 00h WORD (call) length of following results buffer (max 65h)
- 02h BYTE number of connections
- 03h N BYTEs connection list
- SeeAlso: #01915,#02169
- --------N-21E3--SF16-------------------------
- INT 21 - Novell NetWare - CONNECTION SERVICES - GET CONNECTION INFORMATION
- AH = E3h subfn 16h
- DS:SI -> request buffer (see #01917)
- ES:DI -> reply buffer (see #01918)
- Return: AL = status
- 00h successful
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AH=D7h,AH=DCh"NetWare",AH=E3h/SF=14h
- Format of NetWare "Get Connection Information" request buffer:
- Offset Size Description (Table 01917)
- 00h WORD 0002h (length of following data)
- 02h BYTE 16h (subfunction "Get Connection Information")
- 03h BYTE logical connection number (01h-64h)
- Format of NetWare "Get Connection Information" reply buffer:
- Offset Size Description (Table 01918)
- 00h WORD (call) 003Eh (length of following results buffer)
- 02h DWORD (big-endian) object ID for object logged in on the connection
- 00000000h if no object logged in
- 06h WORD (big-endian) type of object
- 08h 48 BYTEs name of object
- 38h 7 BYTEs login time (see #01919)
- Note: much of the Novell documentation incorrectly states the reply buffer
- length as 3Fh instead of 40h, which corresponds to a results length
- of 3Dh (61) bytes instead of the correct 3Eh (62) bytes
- Format of NetWare login time:
- Offset Size Description (Table 01919)
- 00h BYTE year (80-99 = 1980-1999, 00-79 = 2000-2079)
- 01h BYTE month (1-12)
- 02h BYTE day (1-31)
- 03h BYTE hour (0-23)
- 04h BYTE minute (0-59)
- 05h BYTE second (0-59)
- 06h BYTE day of week (0 = Sunday)
- --------N-21E3--SF32-------------------------
- INT 21 - Novell NetWare - BINDERY SERVICES - CREATE BINDERY OBJECT
- AH = E3h subfn 32h
- DS:SI -> request buffer (see #01921)
- ES:DI -> reply buffer (see #01922)
- Return: AL = status (see #01920)
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AH=E3h/SF=33h,AH=E3h/SF=34h,AH=E3h/SF=38h,AH=E3h/SF=39h
- SeeAlso: AX=F217h/SF=32h
- (Table 01920)
- Values for NetWare function status:
- 00h successful
- 96h server out of memory
- EEh object already exists
- EFh invalid name
- F0h wildcard not allowed
- F1h invalid bindery security level
- F3h not permitted to rename object
- F4h not permitted to delete objects
- F5h not permitted to create objects
- FCh no such object
- FEh server bindery locked
- FFh bindery failure
- SeeAlso: #01902,#01927
- Format of NetWare "Create Bindery Object" request buffer:
- Offset Size Description (Table 01921)
- 00h WORD length of following data (max 35h)
- 02h BYTE 32h (subfunction "Create Bindery Object")
- 03h BYTE object flag (00h static, 01h dynamic)
- 04h BYTE object security levels
- 05h WORD (big-endian) type of object
- 07h BYTE length of object's name
- 08h N BYTEs object's name
- SeeAlso: #01922
- Format of NetWare reply buffer:
- Offset Size Description (Table 01922)
- 00h WORD 0000h (no data returned)
- SeeAlso: #01921,#01923,#01924
- --------N-21E3--SF33-------------------------
- INT 21 - Novell NetWare - BINDERY SERVICES - DELETE BINDERY OBJECT
- AH = E3h subfn 33h
- DS:SI -> request buffer (see #01923)
- ES:DI -> reply buffer (see #01922)
- Return: AL = status (see #01920)
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=34h,AX=F217h/SF=33h
- Format of NetWare "Delete Bindery Object" request buffer:
- Offset Size Description (Table 01923)
- 00h WORD length of following data (max 33h)
- 02h BYTE 33h (subfunction "Delete Bindery Object")
- 03h WORD (big-endian) type of object
- 05h BYTE length of object's name (01h-2Fh)
- 06h N BYTEs object's name
- SeeAlso: #01922
- --------N-21E3--SF34-------------------------
- INT 21 - Novell NetWare - BINDERY SERVICES - RENAME BINDERY OBJECT
- AH = E3h subfn 34h
- DS:SI -> request buffer (see #01924)
- ES:DI -> reply buffer (see #01922)
- Return: AL = status (see #01920)
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=33h,AX=F217h/SF=34h
- Format of NetWare "Rename Bindery Object" request buffer:
- Offset Size Description (Table 01924)
- 00h WORD length of following data (max 63h)
- 02h BYTE 34h (subfunction "Rename Bindery Object")
- 03h WORD (big-endian) type of object
- 05h BYTE length of object's name (01h-2Fh)
- 06h N BYTEs object's name
- BYTE length of new name (01h-2Fh)
- N BYTEs new name
- SeeAlso: #01922
- --------N-21E3--SF35-------------------------
- INT 21 - Novell NetWare - BINDERY SERVICES - GET BINDERY OBJECT ID
- AH = E3h subfn 35h
- DS:SI -> request buffer (see #01925)
- ES:DI -> reply buffer (see #01926)
- Return: AL = status (00h,96h,FCh,FEh,FFh) (see #01927)
- Notes: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- the requesting workstation must be logged into the file server with
- read access to the bindery object
- SeeAlso: AH=E3h/SF=36h,AH=E3h/SF=44h,AX=F217h/SF=35h
- Format of NetWare "Get Bindery Object ID" request buffer:
- Offset Size Description (Table 01925)
- 00h WORD length of following data (max 33h)
- 02h BYTE 35h (subfunction "Get Bindery Object ID")
- 03h WORD (big-endian) type of object
- 05h BYTE length of object's name
- 06h N BYTEs object's name
- SeeAlso: #01926,#02184
- Format of NetWare "Get Bindery Object ID" reply buffer:
- Offset Size Description (Table 01926)
- 00h WORD (call) 0036h (length of following buffer space)
- 02h DWORD (big-endian) object ID
- 06h WORD (big-endian) type of object
- 08h 48 BYTEs object name
- SeeAlso: #01925,#02184 at AX=F217h/SF=35h
- --------N-21E3--SF36-------------------------
- INT 21 - Novell NetWare - BINDERY SERVICES - GET BINDERY OBJECT NAME
- AH = E3h subfn 36h
- DS:SI -> request buffer (see #01928)
- ES:DI -> reply buffer (see #01929)
- Return: AL = status (see #01927)
- Notes: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- the requesting workstation must be logged into the file server with
- read access to the bindery object
- SeeAlso: AH=E3h/SF=35h,AH=E3h/SF=44h,AX=F217h/SF=36h
- (Table 01927)
- Values for NetWare function status:
- 00h successful
- 96h server out of memory
- EFh invalid name
- F0h wildcard not allowed
- FCh no such object
- FEh server bindery locked
- FFh bindery failure
- SeeAlso: #01920,#01933
- Format of NetWare "Get Bindery Object Name" request buffer:
- Offset Size Description (Table 01928)
- 00h WORD 0005h (length of following data)
- 02h BYTE 36h (subfunction "Get Bindery Object Name")
- 03h DWORD (big-endian) object ID
- SeeAlso: #01929,#02185 at AX=F217h/SF=36h
- Format of NetWare "Get Bindery Object Name" reply buffer:
- Offset Size Description (Table 01929)
- 00h WORD (call) 0036h (length of following buffer space)
- 02h DWORD (big-endian) object ID
- 06h WORD (big-endian) type of object
- 08h 48 BYTEs object name
- SeeAlso: #01928,#02185
- --------N-21E3--SF37-------------------------
- INT 21 - Novell NetWare - BINDERY SERVICES - SCAN BINDERY OBJECT
- AH = E3h subfn 37h
- DS:SI -> request buffer (see #01930)
- ES:DI -> reply buffer (see #01931)
- Return: AL = status (see #01927)
- Notes: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- the requesting workstation must be logged into the file server with
- read access to the bindery object
- SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=33h,AH=E3h/SF=38h,AH=E3h/SF=3Ch
- SeeAlso: AX=F217h/SF=37h
- Format of NetWare "Scan Bindery Object" request buffer:
- Offset Size Description (Table 01930)
- 00h WORD length of following data (max 37h)
- 02h BYTE 37h (subfunction "Scan Bindery Object")
- 03h DWORD (big-endian) last object ID
- 07h WORD (big-endian) type of object
- 09h BYTE length of object's name
- 0Ah N BYTEs object's name
- SeeAlso: #01931,#02186
- Format of NetWare "Scan Bindery Object" reply buffer:
- Offset Size Description (Table 01931)
- 00h WORD (call) 0039h (length of following buffer space)
- 02h DWORD (big-endian) object ID
- FFFFFFFFh for first call
- 06h WORD (big-endian) type of object
- 08h 48 BYTEs object name (counted string)
- 38h BYTE object flag (00h static, 01h dynamic)
- 39h BYTE object's security levels
- 3Ah BYTE object properties flag (00h no, FFh yes)
- SeeAlso: #01930,#02186
- --------N-21E3--SF38-------------------------
- INT 21 - Novell NetWare - BINDERY SERVICES - CHANGE BINDERY OBJECT SECURITY
- AH = E3h subfn 38h
- DS:SI -> request buffer (see #01932)
- ES:DI -> reply buffer (see #01935)
- Return: AL = status (00h,96h,F0h,F1h,FBh,FCh,FEh,FFh) (see #01933)
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=3Bh,AX=F217h/SF=38h
- Format of NetWare "Change Bindery Object Security" request buffer:
- Offset Size Description (Table 01932)
- 00h WORD length of following data (max 34h)
- 02h BYTE 38h (subfunction "Change Bindery Object Security")
- 03h BYTE new security levels
- 04h WORD (big-endian) type of object
- 06h BYTE length of object's name (01h-2Fh)
- 07h N BYTEs object name
- Note: the object type may not be WILD (FFFFh)
- SeeAlso: #01935
- --------N-21E3--SF39-------------------------
- INT 21 - Novell NetWare - BINDERY SERVICES - CREATE PROPERTY
- AH = E3h subfn 39h
- DS:SI -> request buffer (see #01934)
- ES:DI -> reply buffer (see #01935)
- Return: AL = status (see #01933)
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=3Bh,AX=F217h/SF=39h
- (Table 01933)
- Values for NetWare function status:
- 00h successful
- 96h server out of memory
- EDh property already exists
- EFh invalid name
- F0h wildcard not allowed
- F1h invalid bindery security level
- F6h not permitted to delete properties
- F7h not permitted to create properties
- FBh no such property
- FCh no such object
- FEh server bindery locked
- FFh bindery failure
- SeeAlso: #01927,#01937
- Format of NetWare "Create Property" request buffer:
- Offset Size Description (Table 01934)
- 00h WORD length of following data (max 45h)
- 02h BYTE 39h (subfunction "Create Property")
- 03h WORD (big-endian) type of object
- 05h BYTE length of object's name (01h-2Fh)
- 06h N BYTEs object's name
- BYTE property flags
- BYTE property security levels
- BYTE length of property's name (01h-0Fh)
- N BYTEs property's name
- SeeAlso: #01935
- Format of NetWare reply buffer:
- Offset Size Description (Table 01935)
- 00h WORD (call) 0000h (no data returned)
- SeeAlso: #01932,#01935,#01936
- --------N-21E3--SF3A-------------------------
- INT 21 - Novell NetWare - BINDERY SERVICES - DELETE PROPERTY
- AH = E3h subfn 3Ah
- DS:SI -> request buffer (see #01936)
- ES:DI -> reply buffer (see #01935)
- Return: AL = status (see #01933)
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=39h,AX=F217h/SF=3Ah
- Format of NetWare "Delete Property" request buffer:
- Offset Size Description (Table 01936)
- 00h WORD length of following data (max 43h)
- 02h BYTE 3Ah (subfunction "Delete Property")
- 03h WORD (big-endian) type of object
- 05h BYTE length of object's name (01h-2Fh)
- 06h N BYTEs object's name
- BYTE length of property's name (01h-0Fh)
- N BYTEs property's name
- SeeAlso: #01935
- --------N-21E3--SF3B-------------------------
- INT 21 - Novell NetWare - BINDERY SERVICES - CHANGE PROPERTY SECURITY
- AH = E3h subfn 3Bh
- DS:SI -> request buffer (see #01938)
- ES:DI -> reply buffer (see #01935)
- Return: AL = status (see #01937)
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AH=E3h/SF=38h,AX=F217h/SF=3Bh
- (Table 01937)
- Values for NetWare function status:
- 00h successful
- 96h server out of memory
- F0h wildcard not allowed
- F1h invalid bindery security level
- FBh no such property
- FCh no such object
- FEh server bindery locked
- FFh bindery failure
- SeeAlso: #01933,#01941
- Format of NetWare "Change Property Security" request buffer:
- Offset Size Description (Table 01938)
- 00h WORD length of following data (max 44h)
- 02h BYTE 3Bh (subfunction "Change Property Security")
- 03h WORD (big-endian) type of object
- 05h BYTE length of object's name (01h-2Fh)
- 06h N BYTEs object name
- BYTE new property security levels
- BYTE length of property's name
- N BYTEs property name
- Note: the object type may not be WILD (FFFFh)
- --------N-21E3--SF3C-------------------------
- INT 21 - Novell NetWare - BINDERY SERVICES - SCAN PROPERTY
- AH = E3h subfn 3Ch
- DS:SI -> request buffer (see #01939)
- ES:DI -> reply buffer (see #01940)
- Return: AL = status (00h,96h,F1h,FBh,FCh,FEh,FFh) (see #01937)
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AH=E3h/SF=37h,AH=E3h/SF=3Bh,AX=F217h/SF=3Ch
- Format of NetWare "Scan Property" request buffer:
- Offset Size Description (Table 01939)
- 00h WORD length of following data (max 47h)
- 02h BYTE 3Ch (subfunction "Scan Property")
- 03h WORD (big-endian) type of object
- 05h BYTE length of object's name (01h-2Fh)
- 06h N BYTEs object name
- DWORD (big-endian) sequence number
- FFFFFFFFh for first call
- BYTE length of property's name (01h-0Fh)
- N BYTEs property's name
- SeeAlso: #01940,#02187
- Format of NetWare "Scan Property" reply buffer:
- Offset Size Description (Table 01940)
- 00h WORD (call) 0018h (length of following results buffer)
- 02h 16 BYTEs property name
- 12h BYTE property flags
- 13h BYTE property security levels
- 14h DWORD (big-endian) sequence number
- 18h BYTE property value flag (00h no, FFh yes)
- 19h BYTE more properties (00h no, FFh yes)
- SeeAlso: #01939,#02187
- --------N-21E3--SF3D-------------------------
- INT 21 - Novell NetWare - BINDERY SERVICES - READ PROPERTY VALUE
- AH = E3h subfn 3Dh
- DS:SI -> request buffer (see #01942)
- ES:DI -> reply buffer (see #01943)
- Return: AL = status (see #01941)
- Desc: retrieve one 128-byte segment of the specified property's value
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AH=E3h/SF=39h,AH=E3h/SF=3Ch,AH=E3h/SF=3Eh,AX=F217h/SF=3Dh
- (Table 01941)
- Values for NetWare function status:
- 00h successful
- 96h server out of memory
- E8h not item property
- ECh no such segment
- F0h wildcard not allowed
- F1h invalid bindery security level
- F8h not permitted to write property
- F9h not permitted to read property
- FBh no such property
- FCh no such object
- FEh server bindery locked
- FFh bindery failure
- SeeAlso: #01937,#01946
- Format of NetWare "Read Property Value" request buffer:
- Offset Size Description (Table 01942)
- 00h WORD length of following data (max 44h)
- 02h BYTE 3Dh (subfunction "Read Property Value")
- 03h WORD (big-endian) type of object
- 05h BYTE length of object's name (01h-2Fh)
- 06h N BYTEs object name
- BYTE segment number (01h on first call, increment until done)
- BYTE length of property's name (01h-0Fh)
- N BYTEs property name
- SeeAlso: #01943,#02188
- Format of NetWare "Read Property Value" reply buffer:
- Offset Size Description (Table 01943)
- 00h WORD (call) 0082h (length of following results buffer)
- 02h 128 BYTEs property's value
- 82h BYTE more segments (00h no, FFh yes)
- 83h BYTE property's flags
- SeeAlso: #01942,#02188
- --------N-21E3--SF3E-------------------------
- INT 21 - Novell NetWare - BINDERY SERVICES - WRITE PROPERTY VALUE
- AH = E3h subfn 3Eh
- DS:SI -> request buffer (see #01944)
- ES:DI -> reply buffer (see #01945)
- Return: AL = status (see #01941)
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AH=E3h/SF=39h,AH=E3h/SF=3Ch,AH=E3h/SF=3Dh,AX=F217h/SF=3Eh
- Format of NetWare "Write Property Value" request buffer:
- Offset Size Description (Table 01944)
- 00h WORD length of following data (max C5h)
- 02h BYTE 3Eh (subfunction "Write Property Value")
- 03h WORD (big-endian) type of object
- 05h BYTE length of object's name (01h-2Fh)
- 06h N BYTEs object name
- BYTE segment number (01h on first call, increment until done)
- BYTE erase remaining segments (00h no, FFh yes)
- BYTE length of property's name (01h-0Fh)
- N BYTEs property name
- 128 BYTEs property value segment
- SeeAlso: #01945
- Format of NetWare reply buffer:
- Offset Size Description (Table 01945)
- 00h WORD (call) 0000h (no data returned)
- SeeAlso: #01944,#01947
- --------N-21E3--SF3F-------------------------
- INT 21 - Novell NetWare - BINDERY SERVICES - VERIFY BINDERY OBJECT PASSWORD
- AH = E3h subfn 3Fh
- DS:SI -> request buffer (see #01947)
- ES:DI -> reply buffer (see #01945)
- Return: AL = status (see #01946)
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AH=E3h/SF=40h,AX=F217h/SF=3Fh
- (Table 01946)
- Values for NetWare function status:
- 00h successful
- 96h server out of memory
- F0h wildcard not allowed
- FBh no such property
- FCh no such object
- FEh server bindery locked
- FFh bindery failure: no such object, bad password, no password for object,
- or invalid old password
- SeeAlso: #01941,#01950
- Format of NetWare "Verify Bindery Object Password" request buffer:
- Offset Size Description (Table 01947)
- 00h WORD length of following data (max 133h)
- 02h BYTE 3Fh (subfunction "Verify Bindery Object Password")
- 03h WORD (big-endian) type of object
- 05h BYTE length of object's name (01h-2Fh)
- 06h N BYTEs object name
- BYTE length of password (00h-7Fh)
- N BYTEs password
- SeeAlso: #01945
- --------N-21E3--SF40-------------------------
- INT 21 - Novell NetWare - BINDERY SERVICES - CHANGE BINDERY OBJECT PASSWORD
- AH = E3h subfn 40h
- DS:SI -> request buffer (see #01948)
- ES:DI -> reply buffer (see #01949)
- Return: AL = status (see #01946)
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AH=E3h/SF=3Fh,AH=E3h/SF=41h,AX=F217h/SF=40h
- Format of NetWare "Change Bindery Object Password" request buffer:
- Offset Size Description (Table 01948)
- 00h WORD length of following data (max 133h)
- 02h BYTE 40h (subfunction "Change Bindery Object Password")
- 03h WORD (big-endian) type of object
- 05h BYTE length of object's name (01h-2Fh)
- 06h N BYTEs object name
- BYTE length of old password (00h-7Fh)
- N BYTEs old password
- BYTE length of new password (00h-7Fh)
- N BYTEs new password
- SeeAlso: #01949,#02195
- Format of NetWare reply buffer:
- Offset Size Description (Table 01949)
- 00h WORD (call) 0000h (no data returned)
- SeeAlso: #01948,#01951
- --------N-21E3--SF41-------------------------
- INT 21 - Novell NetWare - BINDERY SERVICES - ADD BINDERY OBJECT TO SET
- AH = E3h subfn 41h
- DS:SI -> request buffer (see #01951)
- ES:DI -> reply buffer (see #01949)
- Return: AL = status (see #01950)
- Desc: add the specified object to an object's group property
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AH=E3h/SF=40h,AH=E3h/SF=42h,AH=E3h/SF=43h,AX=F217h/SF=41h
- (Table 01950)
- Values for NetWare function status:
- 00h successful
- 96h server out of memory
- E9h member already exists
- EAh member does not exist
- EBh not a group property
- F0h wildcard not allowed
- F8h can't write property
- F9h not permitted to read property
- FBh no such property
- FCh no such object
- FEh server bindery locked
- FFh bindery failure
- SeeAlso: #01946,#01961
- Format of NetWare "Add Bindery Object to Set" request buffer:
- Offset Size Description (Table 01951)
- 00h WORD length of following data (max 75h)
- 02h BYTE 41h (subfunction "Add Bindery Object to Set")
- 03h WORD (big-endian) type of object
- 05h BYTE length of object's name
- 06h N BYTEs object name
- BYTE length of property name (01h-0Fh)
- N BYTEs property name
- WORD (big-endian) type of member object
- BYTE length of member object's name
- N BYTEs member object's name
- SeeAlso: #01949
- --------N-21E3--SF42-------------------------
- INT 21 - Novell NetWare - BINDERY SERVICES - DELETE BINDERY OBJECT FROM SET
- AH = E3h subfn 42h
- DS:SI -> request buffer (see #01952)
- ES:DI -> reply buffer (see #01953)
- Return: AL = status (see #01950)
- Desc: delete the specified object from a set property
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AH=E3h/SF=40h,AH=E3h/SF=42h,AH=E3h/SF=43h,AX=F217h/SF=42h
- Format of NetWare "Delete Bindery Object from Set" request buffer:
- Offset Size Description (Table 01952)
- 00h WORD length of following data (max 75h)
- 02h BYTE 42h (subfunction "Delete Bindery Object from Set")
- 03h WORD (big-endian) type of object
- 05h BYTE length of object's name
- 06h N BYTEs object name
- BYTE length of property name (01h-0Fh)
- N BYTEs property name
- WORD (big-endian) type of member object
- BYTE length of member object's name
- N BYTEs member object's name
- SeeAlso: #01953
- Format of NetWare reply buffer:
- Offset Size Description (Table 01953)
- 00h WORD (call) 0000h (no data returned)
- SeeAlso: #01952,#01954,#01955,#01956
- --------N-21E3--SF43-------------------------
- INT 21 - Novell NetWare - BINDERY SERVICES - IS BINDERY OBJECT IN SET
- AH = E3h subfn 43h
- DS:SI -> request buffer (see #01954)
- ES:DI -> reply buffer (see #01953)
- Return: AL = status (see #01950)
- Desc: determine whether the specified object is a member of the given set
- property
- Notes: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- the caller must have read access to the property
- SeeAlso: AH=E3h/SF=41h,AH=E3h/SF=42h,AX=F217h/SF=43h
- Format of NetWare "Is Bindery Object in Set?" request buffer:
- Offset Size Description (Table 01954)
- 00h WORD length of following data (max 75h)
- 02h BYTE 43h (subfunction "Is Bindery Object In Set")
- 03h WORD (big-endian) type of object
- 05h BYTE length of object's name
- 06h N BYTEs object's name
- BYTE length of property's name
- N BYTEs property's name
- WORD (big-endian) type of member object
- BYTE length of member object's name
- N BYTEs member object's name
- SeeAlso: #01953
- --------N-21E3--SF44-------------------------
- INT 21 - Novell NetWare - BINDERY SERVICES - CLOSE BINDERY
- AH = E3h subfn 44h
- DS:SI -> request buffer (see #01955)
- ES:DI -> reply buffer (see #01953)
- Return: AL = status
- 00h successful
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AH=E3h/SF=45h,AX=F217h/SF=44h
- Format of NetWare "Close Bindery" request buffer:
- Offset Size Description (Table 01955)
- 00h WORD 0001h (length of following data)
- 02h BYTE 44h (subfunction "Close Bindery")
- SeeAlso: #01953,#01956
- --------N-21E3--SF45-------------------------
- INT 21 - Novell NetWare - BINDERY SERVICES - OPEN BINDERY
- AH = E3h subfn 45h
- DS:SI -> request buffer (see #01956)
- ES:DI -> reply buffer (see #01953)
- Return: AL = status
- 00h successful
- Notes: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- the bindery may only be opened by the supervisor or an object with
- equivalent privileges
- SeeAlso: AH=E3h/SF=44h,AX=F217h/SF=45h
- Format of NetWare "Open Bindery" request buffer:
- Offset Size Description (Table 01956)
- 00h WORD 0001h (length of following data)
- 02h BYTE 45h (subfunction "Open Bindery")
- SeeAlso: #01953,#01955
- --------N-21E3--SF46-------------------------
- INT 21 - Novell NetWare - BINDERY SERVICES - GET BINDERY ACCESS LEVEL
- AH = E3h subfn 46h
- DS:SI -> request buffer (see #01957)
- ES:DI -> reply buffer (see #01958)
- Return: AL = status
- 00h successful
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AX=F217h/SF=46h
- Format of NetWare "Get Bindery Access Level" request buffer:
- Offset Size Description (Table 01957)
- 00h WORD 0001h (length of following data)
- 02h BYTE 46h (subfunction "Get Bindery Access Level")
- SeeAlso: #01958,#02189
- Format of NetWare "Get Bindery Access Level" reply buffer:
- Offset Size Description (Table 01958)
- 00h WORD 0005h (length of following buffer)
- 02h BYTE security levels
- 03h DWORD (big-endian) object ID
- SeeAlso: #01957,#02189
- --------N-21E3--SF47-------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN BINDERY OBJ TRUSTEE PATHS
- AH = E3h subfn 47h
- DS:SI -> request buffer (see #01959)
- ES:DI -> reply buffer (see #01960)
- Return: AL = status (00h,96h,F0h,F1h,FCh,FEh,FFh) (see #01961)
- Desc: iterate through the directories to which an object is a trustee
- Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
- SeeAlso: AH=E2h/SF=0Ch,AH=E2h/SF=0Dh,AH=E2h/SF=0Eh,AX=F217h/SF=47h
- Format of NetWare "Scan Bindery Object Trustee Paths" request buffer:
- Offset Size Description (Table 01959)
- 00h WORD 0008h (length of following data)
- 02h BYTE 47h (subfunction "Scan Bindery Object Trustee Paths")
- 03h BYTE volume number (00h-1Fh)
- 04h WORD (big-endian) last sequence number (FFFFh on first call)
- 06h DWORD (big-endian) object ID
- SeeAlso: #01960,#02190
- Format of NetWare "Scan Bindery Object Trustee Paths" reply buffer:
- Offset Size Description (Table 01960)
- 00h WORD (call) length of following results buffer (max 107h)
- 02h WORD (big-endian) next sequence number
- 04h DWORD (big-endian) object ID
- 08h BYTE trustee directory rights (see #01849 at AH=E2h/SF=03h)
- 09h BYTE length of trustee path
- 0Ah N BYTEs trustee path
- SeeAlso: #01959,#02190
- --------N-21E3--SF64-------------------------
- INT 21 - Novell NetWare - QUEUE SERVICES - CREATE QUEUE
- AH = E3h subfn 64h
- DS:SI -> request buffer (see #01962)
- ES:DI -> reply buffer (see #01963)
- Return: AL = status (00h,96h,99h,9Bh,9Ch,EDh-F1h,F5h,F7h,FCh,FEh,FFh)
- (see #01961)
- Notes: this function is supported by Advanced NetWare 2.1+
- caller must be on a workstation with supervisor privileges
- SeeAlso: AH=E3h/SF=65h,AH=E3h/SF=66h,AH=E3h/SF=68h,AH=E3h/SF=6Bh
- SeeAlso: AX=F217h/SF=64h
- (Table 01961)
- Values for NetWare function status:
- 00h (0) successful
- 96h (150) server out of memory
- 99h (153) directory full
- 9Bh (155) invalid directory handle
- 9Ch (156) invalid path
- D0h (208) queue error
- D1h (209) no such queue
- D2h (210) no server for queue
- D3h (211) no queue rights
- D4h (212) queue full
- D5h (213) no queue job
- D6h (214) no job rights
- D7h (215) queue servicing error
- D8h (216) queue not active
- D9h (217) station is not a server
- DAh (218) queue halted
- DBh (219) too many queue servers
- EDh (237) property already exists
- EEh (238) object already exists
- EFh (239) invalid name
- F0h (240) wildcard not allowed
- F1h (241) invalid bindery security level
- F5h (245) not permitted to create object
- F7h (247) not permitted to create property
- FCh (252) no such object
- FEh (254) server bindery locked
- FFh (255) bindery failure
- SeeAlso: #01950,#02002,#01680,#02860 at INT 2F/AX=7A20h/BX=0000h
- Format of NetWare "Create Queue" request buffer:
- Offset Size Description (Table 01962)
- 00h WORD length of following data (max ABh)
- 02h BYTE 64h (subfunction "Create Queue")
- 03h WORD (big-endian) queue type
- 05h BYTE length of queue's name (01h-2Fh)
- 06h N BYTEs queue's name
- BYTE directory handle or 00h
- BYTE length of path name (01h-76h)
- N BYTEs path name of directory in which to create queue subdirectory
- SeeAlso: #01963,#02198
- Format of NetWare "Create Queue" reply buffer:
- Offset Size Description (Table 01963)
- 00h WORD (call) 0004h (size of following results buffer)
- 02h DWORD (big-endian) object ID of queue
- SeeAlso: #01962,#02198
- --------N-21E3--SF65-------------------------
- INT 21 - Novell NetWare - QUEUE SERVICES - DESTROY QUEUE
- AH = E3h subfn 65h
- DS:SI -> request buffer (see #01964)
- ES:DI -> reply buffer (see #01969)
- Return: AL = status (00h,96h,9Ch,D0h,D1h,FFh) (see also AH=E3h/SF=64h)
- FFh hardware failure
- Desc: abort all active jobs, detach all job servers, remove all job entries,
- delete all job files, remove the queue object and its properties
- from the bindery, and delete the queue's subdirectory
- Notes: this function is supported by Advanced NetWare 2.1+
- caller must have SUPERVISOR privileges
- SeeAlso: AH=E3h/SF=64h,AH=E3h/SF=66h,AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=70h
- SeeAlso: AX=F217h/SF=65h
- Format of NetWare "Destroy Queue" request buffer:
- Offset Size Description (Table 01964)
- 00h WORD 0005h (length of following data)
- 02h BYTE 65h (subfunction "Destroy Queue")
- 03h DWORD (big-endian) object ID of queue
- SeeAlso: #01969
- --------N-21E3--SF66-------------------------
- INT 21 - Novell NetWare - QUEUE SERVICES - READ QUEUE CURRENT STATUS (OLD)
- AH = E3h subfn 66h
- DS:SI -> request buffer (see #01965)
- ES:DI -> reply buffer (see #01966)
- Return: AL = status (00h,96h,9Ch,D1h-D3h,F1h,FCh,FEh,FFh) (see #01961)
- Notes: this function is supported by Advanced NetWare 2.1+
- caller must be on a workstation which is security-equivalent to a
- member of the queue's Q_USERS or Q_OPERATORS properties
- SeeAlso: AH=E3h/SF=64h,AH=E3h/SF=67h,AH=E3h/SF=6Fh,AH=E3h/SF=76h
- SeeAlso: AX=F217h/SF=66h
- Format of NetWare "Read Queue Current Status (old)" request buffer:
- Offset Size Description (Table 01965)
- 00h WORD 0005h (length of following data)
- 02h BYTE 66h (subfunction "Read Queue Current Status")
- 03h DWORD (big-endian) object ID of queue
- SeeAlso: #01966,#02199 at AX=F217h/SF=66h
- Format of NetWare "Read Queue Current Status (old)" reply buffer:
- Offset Size Description (Table 01966)
- 00h WORD (call) 0085h (size of following results)
- 02h DWORD (big-endian) object ID of queue
- 06h BYTE status of queue (see #01967)
- 07h BYTE number of jobs in queue (00h-FAh)
- 08h BYTE number of servers attached to queue (00h-19h)
- 09h 25 DWORDs list of object IDs of attached servers
- 6Dh 25 BYTEs list of attached servers' stations
- 86h BYTE (call) maximum number of servers to return
- SeeAlso: #01965,#02199 at AX=F217h/SF=66h
- Bitfields for NetWare queue status:
- Bit(s) Description (Table 01967)
- 0 operator disabled addition of new jobs
- 1 operator refuses additional job servers attaching
- 2 operator disabled job servicing
- SeeAlso: #01966,#01968
- --------N-21E3--SF67-------------------------
- INT 21 - Novell NetWare - QUEUE SERVICES - SET QUEUE CURRENT STATUS (OLD)
- AH = E3h subfn 67h
- DS:SI -> request buffer (see #01968)
- ES:DI -> reply buffer (see #01969)
- Return: AL = status (00h,96h,9Ch,D0h,D1h,D3h,FEh,FFh) (see #01961)
- Notes: this function is supported by Advanced NetWare 2.1+
- caller must have operator privileges
- SeeAlso: AH=E3h/SF=64h,AH=E3h/SF=66h,AH=E3h/SF=6Fh,AH=E3h/SF=76h
- SeeAlso: AX=F217h/SF=67h
- Format of NetWare "Set Queue Current Status (old)" request buffer:
- Offset Size Description (Table 01968)
- 00h WORD 0006h (length of following data)
- 02h BYTE 67h (subfunction "Set Queue Current Status")
- 03h DWORD (big-endian) object ID of queue
- 07h BYTE queue status (see #01967)
- SeeAlso: #01969
- Format of NetWare reply buffer:
- Offset Size Description (Table 01969)
- 00h WORD (call) 0000h (no results returned)
- --------N-21E3--SF68-------------------------
- INT 21 - Novell NetWare - QUEUE SERVICES - CREATE QUEUE JOB AND FILE
- AH = E3h subfn 68h
- DS:SI -> request buffer (see #01970)
- ES:DI -> reply buffer (see #01972)
- Return: AL = status (00h,96h,99h,9Ch,D0h-D4h,DAh,EDh,EFh-F1h,F7h,FCh,FEh,FFh)
- (see #01961)
- Notes: this function is supported by Advanced NetWare 2.1+
- caller must be on a workstation which is security-equivalent to a
- member of the queue's Q_USER property
- SeeAlso: AX=B807h,AH=E0h"SPOOLING",AH=E3h/SF=69h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh
- SeeAlso: AX=F217h/SF=68h
- Format of NetWare "Create Queue Job and File" request buffer:
- Offset Size Description (Table 01970)
- 00h WORD 0107h (length of following data)
- 02h BYTE 68h (subfunction "Close File and Start Queue Job")
- 03h DWORD (big-endian) object ID of queue
- 07h 256 BYTEs job structure (see #01971)
- SeeAlso: #01972,#02200
- Format of NetWare old-style job structure:
- Offset Size Description (Table 01971)
- 00h BYTE client station
- 01h BYTE client task number
- 02h DWORD (big-endian) object ID of client
- 06h DWORD (big-endian) object ID of target server
- FFFFFFFh if any server acceptable
- 0Ah 6 BYTEs target execution time (year,month,day,hour,minute,second)
- FFFFFFFFFFFFh to execute as soon as possible
- 10h 6 BYTEs job entry time (year,month,day,hour,minute,second)
- 16h WORD (big-endian) job number
- 18h WORD (big-endian) job type
- 1Ah BYTE job position
- 1Bh BYTE job control flags (see #01980)
- 1Ch 14 BYTEs ASCIZ job file name
- 2Ah 6 BYTEs job file handle
- 30h BYTE server station
- 31h BYTE server task number
- 32h DWORD (big-endian) object ID of server
- 36h 50 BYTEs ASCIZ job description string
- 68h 152 BYTEs client record area
- SeeAlso: #01970,#02210
- Format of NetWare "Create Queue Job and File" reply buffer:
- Offset Size Description (Table 01972)
- 00h WORD (call) 0036h (size of following results buffer)
- 02h BYTE client station
- 03h BYTE client task number
- 04h DWORD (big-endian) object ID of client
- 08h DWORD (big-endian) object ID of target server
- 0Ch 6 BYTEs target execution time (year,month,day,hour,minute,second)
- 12h 6 BYTEs job entry time (year,month,day,hour,minute,second)
- 18h WORD (big-endian) job number
- 1Ah WORD (big-endian) job type
- 1Ch BYTE job position
- 1Dh BYTE job control flags (see #01980)
- 1Eh 14 BYTEs ASCIZ job file name
- 2Ch 6 BYTEs job file handle
- 32h BYTE server station
- 33h BYTE server task number
- 34h DWORD (big-endian) object ID of server or 00000000h
- SeeAlso: #01970,#02200
- --------N-21E3--SF69-------------------------
- INT 21 - Novell NetWare - QUEUE SERVICES - CLOSE FILE AND START QUEUE JOB (OLD)
- AH = E3h subfn 69h
- DS:SI -> request buffer (see #01973)
- ES:DI -> reply buffer (see #01974)
- Return: AL = status (00h,96h,D0h,D1h,D3h,D5h,D6h,FEh,FFh) (see #01961)
- Notes: this function is supported by Advanced NetWare 2.1+
- caller must be on the workstation which created the job
- SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh,AX=F217h/SF=69h
- Format of NetWare "Close File and Start Queue Job (old)" request buffer:
- Offset Size Description (Table 01973)
- 00h WORD 0007h (length of following data)
- 02h BYTE 69h (subfunction "Close File and Start Queue Job")
- 03h DWORD (big-endian) object ID of queue
- 07h WORD (big-endian) job number
- SeeAlso: #01974
- Format of NetWare reply buffer:
- Offset Size Description (Table 01974)
- 00h WORD (call) 0000h (no results returned)
- SeeAlso: #01973,#01975
- --------N-21E3--SF6A-------------------------
- INT 21 - Novell NetWare - QUEUE SERVICES - REMOVE JOB FROM QUEUE (OLD)
- AH = E3h subfn 6Ah
- DS:SI -> request buffer (see #01975)
- ES:DI -> reply buffer (see #01974)
- Return: AL = status (00h,96h,D0h,D1h,D5h,D6h,FEh,FFh) (see #01961)
- Notes: this function is supported by Advanced NetWare 2.1+
- caller must have created the job or be an operator
- SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh,AX=F217h/SF=6Ah
- Format of NetWare "Remove Job From Queue (old)" request buffer:
- Offset Size Description (Table 01975)
- 00h WORD 0007h (length of following data)
- 02h BYTE 6Ah (subfunction "Remove Job From Queue (old)")
- 03h DWORD (big-endian) object ID of queue
- 07h WORD (big-endian) job number
- --------N-21E3--SF6B-------------------------
- INT 21 - Novell NetWare - QUEUE SERVICES - GET QUEUE JOB LIST (OLD)
- AH = E3h subfn 6Bh
- DS:SI -> request buffer (see #01976)
- ES:DI -> reply buffer (see #01977)
- Return: AL = status (00h,96h,9Ch,D0h-D3h,FCh,FEh,FFh) (see #01961)
- Notes: this function is supported by Advanced NetWare 2.1+
- caller must be on a workstation which is security-equivalent to a
- member of the Q_USERS or Q_OPERATORS properties
- SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh,AX=F217h/SF=6Bh
- Format of NetWare "Get Queue Job List (old)" request buffer:
- Offset Size Description (Table 01976)
- 00h WORD 0005h (length of following data)
- 02h BYTE 6Bh (subfunction "Get Queue Job List (old)")
- 03h DWORD (big-endian) object ID of queue
- SeeAlso: #01977
- Format of NetWare "Get Queue Job List (old)" reply buffer:
- Offset Size Description (Table 01977)
- 00h WORD (call) size of following results buffer (max 1F6h)
- 02h WORD (big-endian) job count
- 04h N WORDs (big-endian) list of job numbers by position in queue
- WORD maximum job numbers
- SeeAlso: #01976
- --------N-21E3--SF6C-------------------------
- INT 21 - Novell NetWare - QUEUE SERVICES - READ QUEUE JOB ENTRY (OLD)
- AH = E3h subfn 6Ch
- DS:SI -> request buffer (see #01978)
- ES:DI -> reply buffer (see #01979)
- Return: AL = status (00h,96h,D0h-D3h,D5h,FCh,FEh,FFh) (see #01961)
- Notes: this function is supported by Advanced NetWare 2.1+
- caller must be on a workstation which is security-equivalent to a
- member of the Q_USERS, Q_OPERATORS, or Q_SERVERS properties
- SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh,AX=F217h/SF=6Ch
- Format of NetWare "Read Queue Job Entry (old)" request buffer:
- Offset Size Description (Table 01978)
- 00h WORD 0007h (length of following data)
- 02h BYTE 6Ch (subfunction "Read Queue Job Entry (old)")
- 03h DWORD (big-endian) object ID of queue
- 07h WORD (big-endian) job number
- SeeAlso: #01979
- Format of NetWare "Read Queue Job Entry (old)" reply buffer:
- Offset Size Description (Table 01979)
- 00h WORD (call) 0100h (size of following results)
- 02h BYTE client station number
- 03h BYTE client task number
- 04h DWORD object ID of client
- 08h DWORD (big-endian) object ID of target server
- FFFFFFFFh if any server acceptable
- 0Ch 6 BYTEs target execution time (year,month,day,hour,minute,second)
- FFFFFFFFFFFFh if serviced as soon as possible
- 12h 6 BYTEs job entry time (year,month,day,hour,minute,second)
- 18h WORD (big-endian) job number
- 1Ah WORD (big-endian) job type
- 1Ch BYTE job position
- 1Dh BYTE job control flags (see #01980)
- 1Eh 14 BYTEs ASCIZ job filename
- 2Ch 6 BYTEs job file handle
- 32h BYTE server station
- 33h BYTE server task number
- 34h DWORD object ID of server
- 38h 50 BYTEs ASCIZ job description string
- 6Ah 152 BYTEs client record area
- SeeAlso: #01978
- Bitfields for NetWare job control flags:
- Bit(s) Description (Table 01980)
- 3 job will be serviced automatically if connection broken
- 4 job remains in queue after server aborts job
- 5 client has not filled associated job file
- 6 User Hold--job advances, but cannot be serviced until this is
- cleared by user or operator
- 7 Operator Hold--job advances, but cannot be serviced until this is
- cleared by an operator
- SeeAlso: #01979
- --------N-21E3--SF6D-------------------------
- INT 21 - Novell NetWare - QUEUE SERVICES - CHANGE QUEUE JOB ENTRY (OLD)
- AH = E3h subfn 6Dh
- DS:SI -> request buffer (see #01981)
- ES:DI -> reply buffer (see #01983)
- Return: AL = status (00h,96h,D0h,D1h,D5h,D7h,FEh,FFh) (see #01961)
- Notes: this function is supported by Advanced NetWare 2.1+
- caller must be an operator or the user who created the job
- SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Ch,AH=E3h/SF=6Eh
- SeeAlso: AX=F217h/SF=6Dh
- Format of NetWare "Change Queue Job Entry" request buffer:
- Offset Size Description (Table 01981)
- 00h WORD 0105h (length of following data)
- 02h BYTE 6Dh (subfunction "Change Queue Job Entry")
- 03h DWORD (big-endian) object ID of queue
- 07h 256 BYTEs job structure (see #01971)
- SeeAlso: #01983
- --------N-21E3--SF6E-------------------------
- INT 21 - Novell NetWare - QUEUE SERVICES - CHANGE QUEUE JOB POSITION
- AH = E3h subfn 6Eh
- DS:SI -> request buffer (see #01982)
- ES:DI -> reply buffer (see #01983)
- Return: AL = status (00h,96h,D0h,D1h,D5h,D6h,FEh,FFh) (see #01961)
- Notes: this function is supported by Advanced NetWare 2.1+
- caller must be an operator
- if the specified position is greater than the number of jobs in the
- queue, the job is placed at the end of the queue
- SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Ch,AH=E3h/SF=6Dh
- SeeAlso: AX=F217h/SF=6Eh
- Format of NetWare "Change Queue Job Position" request buffer:
- Offset Size Description (Table 01982)
- 00h WORD 0008h (length of following data)
- 02h BYTE 6Eh (subfunction "Change Queue Job Position")
- 03h DWORD (big-endian) object ID of queue
- 07h WORD (big-endian) job number
- 09h BYTE new position in queue
- (01h = first, FAh [250] = last position in full queue)
- SeeAlso: #01983
- Format of NetWare reply buffer:
- Offset Size Description (Table 01983)
- 00h WORD (call) 0000h (no results returned)
- SeeAlso: #01981,#01982,#01984
- --------N-21E3--SF6F-------------------------
- INT 21 - Novell NetWare - QUEUE SERVICES - ATTACH QUEUE SERVER TO QUEUE
- AH = E3h subfn 6Fh
- DS:SI -> request buffer (see #01984)
- ES:DI -> reply buffer (see #01983)
- Return: AL = status (00h,96h,9Ch,D0h,D1h,D3h,DAh,DBh,FEh,FFh)
- (see also AH=E3h/SF=64h)
- FFh bindery failure, or no such property, or no such member
- Desc: attach the calling job server to the specified queue
- Notes: this function is supported by Advanced NetWare 2.1+
- a queue may have up to 25 job servers attached
- the calling workstation must be security-equivalent to a member of the
- queue's Q_SERVERS property
- SeeAlso: AH=E3h/SF=70h,AH=E3h/SF=71h,AH=E3h/SF=72h,AH=E3h/SF=73h,AH=E3h/SF=76h
- SeeAlso: AX=F217h/SF=6Fh
- Format of NetWare "Attach Queue Server to Queue" request buffer:
- Offset Size Description (Table 01984)
- 00h WORD 0005h (length of following data)
- 02h BYTE 6Fh (subfunction "Attach Queue Server To Queue")
- 03h DWORD (big-endian) object ID of queue
- SeeAlso: #01983,#01985
- --------N-21E3--SF70-------------------------
- INT 21 - Novell NetWare - QUEUE SERVICES - DETACH QUEUE SERVER FROM QUEUE
- AH = E3h subfn 70h
- DS:SI -> request buffer (see #01985)
- ES:DI -> reply buffer (see #01983)
- Return: AL = status (00h,96h,9Ch,D0h,D1h,D2h,FEh,FFh) (see #01961)
- Desc: remove the calling job server from the specified queue's list of
- servers
- Notes: this function is supported by Advanced NetWare 2.1+
- the caller must have previously attached itself to the queue
- SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=72h,AH=E3h/SF=73h,AH=E3h/SF=76h
- SeeAlso: AX=F217h/SF=70h
- Format of NetWare "Detach Queue Server From Queue" request buffer:
- Offset Size Description (Table 01985)
- 00h WORD 0005h (length of following data)
- 02h BYTE 70h (subfunction "Detach Queue Server From Queue")
- 03h DWORD (big-endian) object ID of queue
- SeeAlso: #01983,#01984
- --------N-21E3--SF71-------------------------
- INT 21 - Novell NetWare - QUEUE SERVICES - SERVICE QUEUE JOB AND OPEN FILE
- AH = E3h subfn 71h
- DS:SI -> request buffer (see #01986)
- ES:DI -> reply buffer (see #01972)
- Return: AL = status (00h,96h,9Ch,D0h,D1h,D3h,D5h,D9h,DAh,FEh,FFh)
- (see #01961)
- Notes: this function is supported by Advanced NetWare 2.1+
- the caller must be on a workstation which is security-equivalent to a
- member of the queue's Q_USERS, Q_OPERATORS, or Q_SERVERS properties
- SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=72h,AH=E3h/SF=73h,AH=E3h/SF=76h
- SeeAlso: AX=F217h/SF=71h
- Format of NetWare "Service Queue Job and Open File" request buffer:
- Offset Size Description (Table 01986)
- 00h WORD 0007h (length of following data)
- 02h BYTE 71h (subfunction "Service Queue Job and Open File")
- 03h DWORD (big-endian) object ID of queue
- 07h WORD (big-endian) target job type
- FFFFh any
- SeeAlso: #01972,#01987
- --------N-21E3--SF72-------------------------
- INT 21 - Novell NetWare - QUEUE SERVICES - FINISH SERVICING QUEUE JOB AND FILE
- AH = E3h subfn 72h
- DS:SI -> request buffer (see #01987)
- ES:DI -> reply buffer (see #01989)
- Return: AL = status (00h,96h,D0h,D1h,D6h) (see #01961)
- Desc: inform the Queue Management System (QMS) that the queue server has
- completed a job
- Notes: this function is supported by Advanced NetWare 2.1+
- the caller must be a job server which has previously obtained a job
- for servicing
- SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=71h,AH=E3h/SF=73h,AH=E3h/SF=76h
- SeeAlso: AX=F217h/SF=72h
- Format of NetWare "Finish Servicing Queue Job and File (old)" request buffer:
- Offset Size Description (Table 01987)
- 00h WORD 000Bh (length of following data)
- 02h BYTE 72h (subfunction "Finish Servicing Queue Job and File (old)")
- 03h DWORD (big-endian) object ID of queue
- 07h WORD (big-endian) job number
- 09h DWORD (big-endian) charge
- SeeAlso: #01989,#01986,#01998
- --------N-21E3--SF73-------------------------
- INT 21 - Novell NetWare - QUEUE SERVICES - ABORT SERVICING QUEUE JOB AND FILE
- AH = E3h subfn 73h
- DS:SI -> request buffer (see #01988)
- ES:DI -> reply buffer (see #01989)
- Return: AL = status (00h,96h,D0h,D1h,D6h,D9h) (see #01961)
- Desc: inform the Queue Management System (QMS) that the queue server is
- unable to service a previously-accepted job
- Notes: this function is supported by Advanced NetWare 2.1+
- this is an old version of the call (see AH=E3h/SF=84h)
- only a job server which previously accepted a job for servicing may
- call this function
- SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=71h,AH=E3h/SF=72h,AH=E3h/SF=76h,AH=E3h/SF=84h
- SeeAlso: AX=F217h/SF=73h
- Format of NetWare "Abort Servicing Queue Job and File (old)" request buffer:
- Offset Size Description (Table 01988)
- 00h WORD 0007h (length of following data)
- 02h BYTE 73h (subfunction "Abort Servicing Queue Job and File (old)")
- 03h DWORD (big-endian) object ID of queue
- 07h WORD (big-endian) job number
- SeeAlso: #01989,#01987
- Format of NetWare reply buffer:
- Offset Size Description (Table 01989)
- 00h WORD (call) 0000h (no results returned)
- SeeAlso: #01987,#01988,#01990,#01991
- --------N-21E3--SF74-------------------------
- INT 21 - Novell NetWare - QUEUE SERVICES - CHANGE TO CLIENT RIGHTS (OLD)
- AH = E3h subfn 74h
- DS:SI -> request buffer (see #01990)
- ES:DI -> reply buffer (see #01989)
- Return: AL = status (00h,96h,D0h,D1h,D5h,D9h) (see #01961)
- Desc: temporarily assume the login identity of the client submitting the
- job being serviced
- Notes: this function is supported by Advanced NetWare 2.1+
- caller must be a job server which has obtained a job for servicing
- SeeAlso: AH=E3h/SF=75h,AX=F217h/SF=74h
- Format of NetWare "Change to Client Rights (old)" request buffer:
- Offset Size Description (Table 01990)
- 00h WORD 0007h (length of following data)
- 02h BYTE 74h (subfunction "Change To Client Rights (old)")
- 03h DWORD (big-endian) object ID of queue
- 07h WORD (big-endian) job number
- SeeAlso: #01989,#01991
- --------N-21E3--SF75-------------------------
- INT 21 - Novell NetWare - QUEUE SERVICES - RESTORE QUEUE SERVER RIGHTS
- AH = E3h subfn 75h
- DS:SI -> request buffer (see #01991)
- ES:DI -> reply buffer (see #01989)
- Return: AL = status (00h,96h,9Ch,D0h,D1h,D3h,D5h,D9h,DAh,FEh,FFh) (see #01961)
- Desc: restore server's own identity after assuming the login identity of the
- client submitting the job being serviced
- Notes: this function is supported by Advanced NetWare 2.1+
- caller must be a job server which has previously changed its identity
- SeeAlso: AH=E3h/SF=74h,AX=F217h/SF=75h
- Format of NetWare "Restore Queue Server Rights" request buffer:
- Offset Size Description (Table 01991)
- 00h WORD 0001h (length of following data)
- 02h BYTE 75h (subfunction "Change To Client Rights")
- SeeAlso: #01989,#01990
- --------N-21E3--SF76-------------------------
- INT 21 - Novell NetWare - QUEUE SERVICES - READ QUEUE SERVER CURRENT STATUS OLD
- AH = E3h subfn 76h
- DS:SI -> request buffer (see #01992)
- ES:DI -> reply buffer (see #01993)
- Return: AL = status (00h,96h,9Ch,D1h-D3h,F1h,FCh,FEh,FFh) (see #01961)
- Notes: this function is supported by Advanced NetWare 2.1+
- caller must be on a workstation which is security-equivalent to a
- member of the Q_USERS or Q_OPERATORS properties
- SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ch,AH=E3h/SF=6Fh,AH=E3h/SF=77h,AH=E3h/SF=78h
- SeeAlso: AX=F217h/SF=76h
- Format of NetWare "Read Queue Server Current Status (old)" request buffer:
- Offset Size Description (Table 01992)
- 00h WORD 000Ah (length of following data)
- 02h BYTE 76h (subfunction "Read Queue Server Current Status (old)")
- 03h DWORD (big-endian) object ID of queue
- 07h DWORD (big-endian) object ID of server
- 0Bh BYTE server station
- SeeAlso: #01993
- Format of NetWare "Read Queue Server Current Status (old)" reply buffer:
- Offset Size Description (Table 01993)
- 00h WORD (call) 0040h (size of following results)
- 02h 64 BYTEs server status record (format depends on server)
- first four bytes should contain estimated "price" for an
- average job
- SeeAlso: #01992,#02203
- --------N-21E3--SF77-------------------------
- INT 21 - Novell NetWare - QUEUE SERVICES - SET QUEUE SERVER CURRENT STATUS
- AH = E3h subfn 77h
- DS:SI -> request buffer (see #01994)
- ES:DI -> reply buffer (see #01995)
- Return: AL = status (00h,96h,9Ch,D0h,D1h,FEh,FFh) (see #01961)
- Notes: this function is supported by Advanced NetWare 2.1+
- caller must be a job server which has attached itself to the queue
- SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ch,AH=E3h/SF=6Fh,AH=E3h/SF=76h,AH=E3h/SF=78h
- SeeAlso: AX=F217h/SF=77h
- Format of NetWare "Set Queue Server Current Status" request buffer:
- Offset Size Description (Table 01994)
- 00h WORD 0045h (length of following data)
- 02h BYTE 77h (subfunction "Set Queue Server Current Status")
- 03h DWORD (big-endian) object ID of queue
- 07h 64 BYTEs server status record (format depends on server)
- first four bytes should contain estimated "price" for an
- average job
- SeeAlso: #01995
- Format of NetWare "Set Queue Server Current Status" reply buffer:
- Offset Size Description (Table 01995)
- 00h WORD (call) 0000h (no results returned)
- SeeAlso: #01994
- --------N-21E3--SF78-------------------------
- INT 21 - Novell NetWare - QUEUE SERVICES - GET QUEUE JOB'S FILE SIZE (OLD)
- AH = E3h subfn 78h
- DS:SI -> request buffer (see #01996)
- ES:DI -> reply buffer (see #01997)
- Return: AL = status (see also #01961)
- 00h successful
- Notes: this function is supported by Advanced NetWare 2.1+
- caller must be on a workstation which is security-equivalent to a
- member of the queue's Q_USERS, Q_OPERATORS, or Q_SERVERS properties
- SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ch,AH=E3h/SF=71h,AX=F217h/SF=78h
- Format of NetWare "Get Queue Job's File Size (old)" request buffer:
- Offset Size Description (Table 01996)
- 00h WORD 0007h (length of following data)
- 02h BYTE 78h (subfunction "Get Queue Job's File Size (old)")
- 03h DWORD (big-endian) object ID of queue
- 07h WORD (big-endian) job number
- SeeAlso: #01997,#02204 at AX=F217h/SF=78h
- Format of NetWare "Get Queue Job's File Size (old)" reply buffer:
- Offset Size Description (Table 01997)
- 00h WORD (call) 000Ah (size of following results)
- 02h DWORD (big-endian) object ID of queue
- 06h WORD (big-endian) job number
- 08h DWORD (big-endian) size of job file in bytes
- SeeAlso: #01996,#02204 at AX=F217h/SF=78h
- --------N-21E3--SF83-------------------------
- INT 21 - Novell NetWare - QUEUE SERVICES - FINISH SERVICING QUEUE JOB
- AH = E3h subfn 83h
- DS:SI -> request buffer (see #01998)
- ES:DI -> reply buffer (see #01999)
- Return: AL = status (00h,96h,D0h,D1h,D6h,D9h) (see #01961)
- Desc: inform the Queue Management System (QMS) that the queue server has
- completed servicing a previously-accepted job
- Notes: this function is supported by Advanced NetWare 3.1+
- this variant of Abort Servicing Queue Job allows use of the high
- connection byte in the NCP packet header, unlike AH=E3h/SF=73h
- SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=71h,AH=E3h/SF=72h,AH=E3h/SF=73h,AH=E3h/SF=84h
- SeeAlso: AX=F217h/SF=83h
- Format of NetWare "Finish Servicing Queue Job" request buffer:
- Offset Size Description (Table 01998)
- 00h WORD 0007h (length of following data)
- 02h BYTE 84h (subfunction "Abort Servicing Queue Job")
- 03h DWORD (big-endian) object ID of queue
- 07h WORD (big-endian) job number
- 09h DWORD (big-endian) charge for job
- SeeAlso: #01999,#01987
- Format of NetWare "Finish Servicing Queue Job" reply buffer:
- Offset Size Description (Table 01999)
- 00h WORD (call) 0000h (no results returned)
- SeeAlso: #01998
- --------N-21E3--SF84-------------------------
- INT 21 - Novell NetWare - QUEUE SERVICES - ABORT SERVICING QUEUE JOB
- AH = E3h subfn 84h
- DS:SI -> request buffer (see #02000)
- ES:DI -> reply buffer (see #02001)
- Return: AL = status (00h,96h,D0h,D1h,D6h,D9h) (see #01961)
- Desc: inform the Queue Management System (QMS) that the queue server is
- unable to service a previously-accepted job
- Notes: this function is supported by Advanced NetWare 3.1+
- this variant of Abort Servicing Queue Job allows use of the high
- connection byte in the NCP packet header, unlike AH=E3h/SF=73h
- SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=71h,AH=E3h/SF=72h,AH=E3h/SF=73h,AH=E3h/SF=76h
- SeeAlso: AX=F217h/SF=84h
- Format of NetWare "Abort Servicing Queue Job" request buffer:
- Offset Size Description (Table 02000)
- 00h WORD 0007h (length of following data)
- 02h BYTE 84h (subfunction "Abort Servicing Queue Job")
- 03h DWORD (big-endian) object ID of queue
- 07h WORD (big-endian) job number
- SeeAlso: #02001
- Format of NetWare "Abort Servicing Queue Job" reply buffer:
- Offset Size Description (Table 02001)
- 00h WORD (call) 0000h (no results returned)
- SeeAlso: #02000
- --------N-21E3--SF96-------------------------
- INT 21 - Novell NetWare - ACCOUNTING SERVICES - GET ACCOUNT STATUS
- AH = E3h subfn 96h
- DS:SI -> request buffer (see #02003)
- ES:DI -> reply buffer (see #02004)
- Return: AL = status (00h,C0h,C1h) (see #02002)
- Note: this function is supported by Advanced NetWare 2.1+
- SeeAlso: AH=E3h/SF=97h,AH=E3h/SF=98h,AH=E3h/SF=99h,AX=F217h/SF=96h
- (Table 02002)
- Values for NetWare function status:
- 00h successful
- C0h no account privileges
- C1h no account balance
- C2h credit limit exceeded
- C3h too many holds on account
- C6h no console rights
- SeeAlso: #01961
- Format of NetWare "Get Account Status" request buffer:
- Offset Size Description (Table 02003)
- 00h WORD length of following data (max 33h)
- 02h BYTE 96h (subfunction "Get Account Status")
- 03h WORD (big-endian) type of bindery object
- 05h BYTE length of object name (01h to 2Fh)
- 06h N BYTEs object name
- SeeAlso: #02004,#02224 at AX=F217h/SF=96h
- Format of NetWare "Get Account Status" reply buffer:
- Offset Size Description (Table 02004)
- 00h WORD (call) length of following buffer space
- 02h DWORD (big-endian) account balance
- 06h DWORD (big-endian) credit limit
- signed number indicating lowest allowable account balance
- 0Ah 120 BYTEs reserved
- 82h DWORD (big-endian) object ID, server 1
- 86h DWORD (big-endian) hold amount, server 1
- ...
- F8h DWORD (big-endian) object ID, server 16
- FCh DWORD (big-endian) hold amount, server 16
- Note: the reply buffer lists the servers which have placed holds on a portion
- of the account balance, and the amount reserved by each
- SeeAlso: #02003,#02224 at AX=F217h/SF=96h
- --------N-21E3--SF97-------------------------
- INT 21 - Novell NetWare - ACCOUNTING SERVICES - SUBMIT ACCOUNT CHARGE
- AH = E3h subfn 97h
- DS:SI -> request buffer (see #02005)
- ES:DI -> reply buffer (see #02007)
- Return: AL = status (00h,C0h-C2h) (see #02002)
- Note: this function is supported by Advanced NetWare 2.1+
- SeeAlso: AH=E3h/SF=96h,AH=E3h/SF=98h,AX=F217h/SF=97h
- Format of NetWare "Submit Account Charge" request buffer:
- Offset Size Description (Table 02005)
- 00h WORD length of following data (max 13Fh)
- 02h BYTE 97h (subfunction "Submit Account Charge")
- 03h WORD (big-endian) service type
- 05h DWORD (big-endian) amount to be charged to account
- 09h DWORD (big-endian) amount of prior hold to be cancelled
- 0Dh WORD (big-endian) type of bindery object
- 0Fh WORD (big-endian) type of comment
- 8000h-FFFFh reserved for experimental use
- 11h BYTE length of object's name
- 12h N BYTEs object name
- BYTE length of comment
- N BYTEs comment
- SeeAlso: #02007
- --------N-21E3--SF98-------------------------
- INT 21 - Novell NetWare - ACCOUNTING SERVICES - SUBMIT ACCOUNT HOLD
- AH = E3h subfn 98h
- DS:SI -> request buffer (see #02006)
- ES:DI -> reply buffer (see #02007)
- Return: AL = status (00h,C0h-C3h) (see #02002)
- Note: this function is supported by Advanced NetWare 2.1+
- SeeAlso: AH=E3h/SF=96h,AH=E3h/SF=97h,AX=F217h/SF=98h
- Format of NetWare "Submit Account Hold" request buffer:
- Offset Size Description (Table 02006)
- 00h WORD length of following data (max 37h)
- 02h BYTE 98h (subfunction "Submit Account Hold")
- 03h DWORD (big-endian) amount of account balance to reserve
- 07h WORD (big-endian) type of bindery object
- 09h BYTE length of object's name
- 0Ah N BYTEs object name
- SeeAlso: #02007
- Format of NetWare reply buffer:
- Offset Size Description (Table 02007)
- 00h WORD 0000h (no data returned)
- SeeAlso: #02005,#02006,#02008,#02009
- --------N-21E3--SF99-------------------------
- INT 21 - Novell NetWare - ACCOUNTING SERVICES - SUBMIT ACCOUNT NOTE
- AH = E3h subfn 99h
- DS:SI -> request buffer (see #02008)
- ES:DI -> reply buffer (see #02007)
- Return: AL = status (00h,C0h) (see #02002)
- Note: this function is supported by Advanced NetWare 2.1+
- SeeAlso: AH=E3h/SF=96h,AX=F217h/SF=99h
- Format of NetWare "Submit Account Note" request buffer:
- Offset Size Description (Table 02008)
- 00h WORD length of following data (max 137h)
- 02h BYTE 99h (subfunction "Submit Account Note")
- 03h WORD (big-endian) type of service
- 05h WORD (big-endian) type of bindery object
- 07h WORD (big-endian) type of comment
- 8000h-FFFFh reserved for experimental use
- 09h BYTE length of object's name
- 0Ah N BYTEs object name
- BYTE length of comment
- N BYTEs comment
- SeeAlso: #02007
- --------N-21E3--SFC8-------------------------
- INT 21 - Novell NetWare - FILE SERVER - CHECK CONSOLE PRIVILEGES
- AH = E3h subfn C8h
- DS:SI -> request buffer (see #02009)
- ES:DI -> reply buffer (see #02007)
- Return: AL = status (00h,C6h) (see #02002)
- Desc: determine whether the caller is a console operator
- Notes: this function is supported by Advanced NetWare 2.1+
- NetWare determines console privileges by checking the file server's
- OPERATOR property for the caller's object ID
- SeeAlso: AH=E3h/SF=C9h,AH=E3h/SF=D1h,AX=F217h/SF=C8h
- Format of NetWare "Check Console Privileges" request buffer:
- Offset Size Description (Table 02009)
- 00h WORD 0001h (length of following data)
- 02h BYTE C8h (subfunction "Check Console Privileges")
- SeeAlso: #02007
- --------N-21E3--SFC9-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER DESCRIPTION STRINGS
- AH = E3h subfn C9h
- DS:SI -> request buffer (see #02010)
- ES:DI -> reply buffer (see #02011)
- Return: AL = status
- 00h successful
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must be attached to the file server
- SeeAlso: AH=E3h/SF=11h,AH=E3h/SF=CDh,AH=E3h/SF=E8h,AX=F217h/SF=C9h
- Format of NetWare "Get File Server Description Strings" request buffer:
- Offset Size Description (Table 02010)
- 00h WORD 0001h (length of following data)
- 02h BYTE C9h (subfunction "Get File Server Description Strings")
- SeeAlso: #02011,#02225 at AX=F217h/SF=C9h
- Format of NetWare "Get File Server Description Strings" reply buffer:
- Offset Size Description (Table 02011)
- 00h WORD (call) 0200h (size of following results buffer)
- 02h var ASCIZ name of company distributing this copy of NetWare
- var ASCIZ version and revision
- 9 BYTEs ASCIZ revision date (mm/dd/yy)
- var ASCIZ copyright notice
- SeeAlso: #02010,#02225 at AX=F217h/SF=C9h
- --------N-21E3--SFCA-------------------------
- INT 21 - Novell NetWare - FILE SERVER - SET FILE SERVER DATE AND TIME
- AH = E3h subfn CAh
- DS:SI -> request buffer (see #02012)
- ES:DI -> reply buffer (see #02014)
- Return: AL = status (00h,C6h) (see #02002)
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have console operator privileges
- SeeAlso: AH=2Bh"DATE",AH=2Dh"TIME",AH=E3h/SF=C8h,AH=E7h"Novell",AX=F217h/SF=CAh
- SeeAlso: AX=F214h
- Format of NetWare "Set File Server Date and Time" request buffer:
- Offset Size Description (Table 02012)
- 00h WORD 0007h (length of following data)
- 02h BYTE CAh (subfunction "Set File Server Date And Time")
- 03h BYTE year (00-79 = 2000-2079, 80-99 = 1980-1999)
- 04h BYTE month (1-12)
- 05h BYTE day (1-31)
- 06h BYTE hour (0-23)
- 07h BYTE minute
- 08h BYTE second
- SeeAlso: #02014,#02106 at AX=F214h
- --------N-21E3--SFCB-------------------------
- INT 21 - Novell NetWare - FILE SERVER - DISABLE FILE SERVER LOGIN
- AH = E3h subfn CBh
- DS:SI -> request buffer (see #02013)
- ES:DI -> reply buffer (see #02014)
- Return: AL = status (00h,C6h) (see #02002)
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have console operator privileges
- SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CCh,AH=E3h/SF=D3h,AX=F217h/SF=CBh
- Format of NetWare "Disable File Server Login" request buffer:
- Offset Size Description (Table 02013)
- 00h WORD 0001h (length of following data)
- 02h BYTE CBh (subfunction "Disable File Server Login")
- SeeAlso: #02014,#02015
- Format of NetWare reply buffer:
- Offset Size Description (Table 02014)
- 00h WORD (call) 0000h (no results returned)
- SeeAlso: #02012,#02013,#02015
- --------N-21E3--SFCC-------------------------
- INT 21 - Novell NetWare - FILE SERVER - ENABLE FILE SERVER LOGIN
- AH = E3h subfn CCh
- DS:SI -> request buffer (see #02015)
- ES:DI -> reply buffer (see #02014)
- Return: AL = status (00h,C6h) (see #02002)
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have console operator privileges
- SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CBh,AX=F217h/SF=CCh
- Format of NetWare "Enable File Server Login" request buffer:
- Offset Size Description (Table 02015)
- 00h WORD 0001h (length of following data)
- 02h BYTE CCh (subfunction "Enable File Server Login")
- SeeAlso: #02014
- --------N-21E3--SFCD-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER LOGIN STATUS
- AH = E3h subfn CDh
- DS:SI -> request buffer (see #02016)
- ES:DI -> reply buffer (see #02017)
- Return: AL = status (00h,C6h) (see #02002)
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have console operator privileges
- SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CBh,AH=E3h/SF=CCh
- Format of NetWare "Get File Server Login Status" request buffer:
- Offset Size Description (Table 02016)
- 00h WORD 0001h (length of following data)
- 02h BYTE CDh (subfunction "Get File Server Login Status")
- SeeAlso: #02017,#02226 at AX=F217h/SF=CDh
- Format of NetWare "Get File Server Login Status" reply buffer:
- Offset Size Description (Table 02017)
- 00h WORD (call) 0001h (size of following results buffer)
- 02h BYTE login state (00h disabled, 01h enabled)
- SeeAlso: #02016,#02226 at AX=F217h/SF=CDh
- --------N-21E3--SFCE-------------------------
- INT 21 - Novell NetWare - FILE SERVICES - PURGE ALL ERASED FILES
- AH = E3h subfn CEh
- DS:SI -> request buffer (see #02018)
- ES:DI -> reply buffer (see #02020)
- Return: AL = status (00h,C6h) (see #02002)
- Desc: all files marked for deletion on the file server are purged, regardless
- of which workstation actually erased them
- Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- the calling workstation must have console operator privileges
- SeeAlso: AH=13h,AH=E2h/SF=10h,AH=E3h/SF=C8h,AX=F217h/SF=CEh,AX=F244h
- Format of NetWare "Purge All Erased Files" request buffer:
- Offset Size Description (Table 02018)
- 00h WORD 0001h (length of following data)
- 02h BYTE CEh (subfunction "Purge All Erased Files")
- SeeAlso: #02020
- --------N-21E3--SFCF-------------------------
- INT 21 - Novell NetWare - FILE SERVER - DISABLE TRANSACTION TRACKING
- AH = E3h subfn CFh
- DS:SI -> request buffer (see #02019)
- ES:DI -> reply buffer (see #02020)
- Return: AL = status (00h,C6h) (see #02002)
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have console operator privileges
- SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D0h
- Format of NetWare "Disable Transaction Tracking" request buffer:
- Offset Size Description (Table 02019)
- 00h WORD 0001h (length of following data)
- 02h BYTE CFh (subfunction "Disable Transaction Tracking")
- SeeAlso: #02020,#02021
- Format of NetWare reply buffer:
- Offset Size Description (Table 02020)
- 00h WORD (call) 0000h (no results returned)
- SeeAlso: #02018,#02019,#02021
- --------N-21E3--SFD0-------------------------
- INT 21 - Novell NetWare - FILE SERVER - ENABLE TRANSACTION TRACKING
- AH = E3h subfn D0h
- DS:SI -> request buffer (see #02021)
- ES:DI -> reply buffer (see #02020)
- Return: AL = status (00h,C6h) (see #02025)
- Desc: restart transaction tracking after being stopped either explicitly by
- AH=E3h/SF=CFh or automatically due to a full transaction volume
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have console operator privileges
- SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CFh,AX=F217h/SF=D0h
- Format of NetWare "Enable Transaction Tracking" request buffer:
- Offset Size Description (Table 02021)
- 00h WORD 0001h (length of following data)
- 02h BYTE D0h (subfunction "Enable Transaction Tracking")
- SeeAlso: #02020,#02019
- --------N-21E3--SFD1-------------------------
- INT 21 - Novell NetWare - FILE SERVER - SEND CONSOLE BROADCAST
- AH = E3h subfn D1h
- DS:SI -> request buffer (see #02022)
- ES:DI -> reply buffer (see #02024)
- Return: AL = status (00h,C6h) (see #02025)
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have console operator privileges
- the broadcast message will not be received by workstations which have
- disabled broadcasts with AH=E1h/SF=02h
- SeeAlso: AH=E1h/SF=02h,AH=E1h/SF=09h,AH=E3h/SF=C8h,AH=E3h/SF=D3h
- SeeAlso: AX=F217h/SF=D1h
- Format of NetWare "Send Console Broadcast" request buffer:
- Offset Size Description (Table 02022)
- 00h WORD length of following data (max A2h)
- 02h BYTE D1h (subfunction "Send Console Broadcast")
- 03h BYTE number of connections to receive message
- 00h = all, else specific list below
- 04h N BYTEs connection list
- BYTE length of message (max 3Ch)
- N BYTEs message
- SeeAlso: #02024
- --------N-21E3--SFD2-------------------------
- INT 21 - Novell NetWare - FILE SERVER - CLEAR CONNECTION NUMBER
- AH = E3h subfn D2h
- DS:SI -> request buffer (see #02023)
- ES:DI -> reply buffer (see #02024)
- Return: AL = status (00h,C6h) (see #02025)
- Desc: close the open files and release all file locks for a connection,
- abort transactions if a TTS file server, and detach from the file
- server
- Notes: this function is supported by Advanced NetWare 2.1+
- the caller must have SUPERVISOR privileges
- SeeAlso: AH=E3h/SF=C9h,AH=E3h/SF=D1h,AX=F217h/SF=D2h,AX=F217h/SF=FEh
- Format of NetWare "Clear Connection Number" request buffer:
- Offset Size Description (Table 02023)
- 00h WORD 0002h (length of following data)
- 02h BYTE D2h (subfunction "Clear Connection Number")
- 03h BYTE connection number
- SeeAlso: #02024,#02277
- Format of NetWare reply buffer:
- Offset Size Description (Table 02024)
- 00h WORD (call) 0000h (no results returned)
- SeeAlso: #02022,#02023,#02026
- --------N-21E3--SFD3-------------------------
- INT 21 - Novell NetWare - FILE SERVER - DOWN FILE SERVER
- AH = E3h subfn D3h
- DS:SI -> request buffer (see #02026)
- ES:DI -> reply buffer (see #02024)
- Return: AL = status (00h,C6h,FFh) (see #02025)
- Desc: take down the file server
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have SUPERVISOR privileges
- SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CBh,AH=E3h/SF=CFh,AH=E3h/SF=D1h
- (Table 02025)
- Values for NetWare function status:
- 00h successful
- C6h no console rights
- FFh files open
- SeeAlso: #02002,#02053
- Format of NetWare "Down File Server" request buffer:
- Offset Size Description (Table 02026)
- 00h WORD 0002h (length of following data)
- 02h BYTE D3h (subfunction "Down File Server")
- 03h BYTE flag: force down even if files open if nonzero
- SeeAlso: #02024
- --------N-21E3--SFD4-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET FILE SYSTEM STATISTICS
- AH = E3h subfn D4h
- DS:SI -> request buffer (see #02027)
- ES:DI -> reply buffer (see #02028)
- Return: AL = status (00h,C6h) (see #02025)
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have console operator privileges
- SeeAlso: AH=E3h/SF=0Eh,AH=E3h/SF=C8h,AH=E3h/SF=D9h,AH=E3h/SF=E7h,AH=E3h/SF=E8h
- SeeAlso: AX=F217h/SF=D4h
- Format of NetWare "Get File System Statistics" request buffer:
- Offset Size Description (Table 02027)
- 00h WORD 0001h (length of following data)
- 02h BYTE D4h (subfunction "Get File System Statistics")
- SeeAlso: #02028,#02227 at AX=F217h/SF=D4h
- Format of NetWare "Get File System Statistics" reply buffer:
- Offset Size Description (Table 02028)
- 00h WORD (call) 0028h (size of following results buffer)
- 02h DWORD clock ticks since system started
- 06h WORD maximum open files set by configuration
- 08h WORD maximum files open concurrently
- 0Ah WORD current number of open files
- 0Ch DWORD total files opened
- 10h DWORD total file read requests
- 14h DWORD total file write requests
- 18h WORD current changed FATs
- 1Ah WORD total changed FATs
- 1Ch WORD number of FAT write errors
- 1Eh WORD number of fatal FAT write errors
- 20h WORD number of FAT scan errors
- 22h WORD maximum concurrently-indexed files
- 24h WORD current number of indexed files
- 26h WORD number of attached indexed files
- 28h WORD number of indexed files available
- Note: all fields except the first are big-endian
- SeeAlso: #02027,#02227 at AX=F217h/SF=D4h
- --------N-21E3--SFD5-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET TRANSACTION TRACKING STATISTICS
- AH = E3h subfn D5h
- DS:SI -> request buffer (see #02029)
- ES:DI -> reply buffer (see #02030)
- Return: AL = status (00h,C6h) (see #02025)
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have console operator privileges
- SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CFh,AH=E3h/SF=D0h,AH=E3h/SF=E8h
- SeeAlso: AX=F217h/SF=D5h
- Format of NetWare "Get Transaction Tracking Statistics" request buffer:
- Offset Size Description (Table 02029)
- 00h WORD 0001h (length of following data)
- 02h BYTE D5h (subfunction "TTS Get Statistics")
- SeeAlso: #02030,#02228 at AX=F217h/SF=D5h
- Format of NetWare "Get Transaction Tracking Statistics" reply buffer:
- Offset Size Description (Table 02030)
- 00h WORD (call) length of following results buffer (max 1BCh)
- 02h DWORD (big-endian) clock ticks since system started
- 06h BYTE transaction tracking supported if nonzero
- (all following fields are invalid if zero)
- 07h BYTE transaction tracking enabled
- 08h WORD (big-endian) transaction volume number
- 0Ah WORD (big-endian) maximum simultaneous transactions configured
- 0Ch WORD (big-endian) maximum simultaneous transactions since startup
- 0Eh WORD (big-endian) current transactions in progress
- 10h DWORD (big-endian) total transactions performed
- 14h DWORD (big-endian) total write transactions
- 18h DWORD (big-endian) total transactions backed out
- 1Ch WORD (big-endian) number of unfilled backout requests
- 1Eh WORD (big-endian) disk blocks used for transaction tracking
- 20h DWORD (big-endian) blocks allocated for tracked-file FATs
- 24h DWORD (big-endian) number of file size changes during a transaction
- 28h DWORD (big-endian) number of file truncations during a transaction
- 2Ch BYTE number of records following
- 2Dh Active Transaction Records [array]
- Offset Size Description
- 00h BYTE logical connection number
- 01h BYTE task number
- SeeAlso: #02029,#02228 at AX=F217h/SF=D5h
- --------N-21E3--SFD6-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET DISK CACHE STATISTICS
- AH = E3h subfn D6h
- DS:SI -> request buffer (see #02031)
- ES:DI -> reply buffer (see #02032)
- Return: AL = status (00h,C6h) (see #02025)
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have console operator privileges
- SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D5h,AH=E3h/SF=D8h,AH=E3h/SF=D9h,AH=E3h/SF=E6h
- SeeAlso: AX=F217h/SF=D6h
- Format of NetWare "Get Disk Cache Statistics" request buffer:
- Offset Size Description (Table 02031)
- 00h WORD 0001h (length of following data)
- 02h BYTE D6h (subfunction "Get Disk Cache Statistics")
- SeeAlso: #02032,#02229 at AX=F217h/SF=D6h
- Format of NetWare "Get Disk Cache Statistics" reply buffer:
- Offset Size Description (Table 02032)
- 00h WORD (call) 004Eh (length of following results buffer)
- 02h DWORD clock ticks since system started
- 06h WORD number of cache buffers
- 08h WORD size of cache buffer in bytes
- 0Ah WORD number of dirty cache buffers
- 0Ch DWORD number of cache read requests
- 10h DWORD number of cache write requests
- 14h DWORD number of cache hits
- 18h DWORD number of cache misses
- 1Ch DWORD number of physical read requests
- 20h DWORD number of physical write requests
- 24h WORD number of physical read errors
- 26h WORD number of physical write errors
- 28h DWORD cache get requests
- 2Ch DWORD cache full write requests
- 30h DWORD cache partial write requests
- 34h DWORD background dirty writes
- 38h DWORD background aged writes
- 3Ch DWORD total cache writes
- 40h DWORD number of cache allocations
- 44h WORD thrashing count
- 46h WORD number of times LRU block was dirty
- 48h WORD number of reads on cache blocks not yet filled by writes
- 4Ah WORD number of times a fragmented write occurred
- 4Ch WORD number of cache hits on unavailable block
- 4Eh WORD number of times a cache block was scrapped
- Note: all fields except the first are big-endian
- SeeAlso: #02031,#02229 at AX=F217h/SF=D6h
- --------N-21E3--SFD7-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET DRIVE MAPPING TABLE
- AH = E3h subfn D7h
- DS:SI -> request buffer (see #02033)
- ES:DI -> reply buffer (see #02034)
- Return: AL = status (00h,C6h) (see #02025)
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have console operator privileges
- SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D6h,AH=E3h/SF=D9h,AH=E3h/SF=E6h,AH=E3h/SF=E9h
- SeeAlso: AX=F217h/SF=D7h
- Format of NetWare "Get Drive Mapping Table" request buffer:
- Offset Size Description (Table 02033)
- 00h WORD 0001h (length of following data)
- 02h BYTE D7h (subfunction "Get Drive Mapping Table")
- SeeAlso: #02034,#02230 at AX=F217h/SF=D7h
- Format of NetWare "Get Drive Mapping Table" reply buffer:
- Offset Size Description (Table 02034)
- 00h WORD (call) 00ECh (length of following results buffer)
- 02h DWORD (big-endian) clock tick elapsed since system started
- 06h BYTE fault tolerance (SFT) level
- 07h BYTE number of logical drives attached to server
- 08h BYTE number of physical drives attached to server
- 09h 5 BYTEs disk channel types (00h none, 01h XT, 02h AT, 03h SCSI,
- 04h disk coprocessor drive, 32h-FFh value-added drive types)
- 0Eh WORD (big-endian) number of outstanding controller commands
- 10h 32 BYTEs drive mapping table (FFh = no such drive)
- 30h 32 BYTEs drive mirror table (secondary physical drive, FFh = none)
- 50h 32 BYTEs dead mirror table (last drive mapped to, FFh if never mirrored)
- 70h BYTE physical drive being remirrored (FFh = none)
- 71h BYTE reserved
- 72h DWORD (big-endian) remirrored block
- 76h 60 BYTEs SFT error table (internal error counters)
- SeeAlso: #02033,#02230 at AX=F217h/SF=D7h
- --------N-21E3--SFD8-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET PHYSICAL DISK STATISTICS
- AH = E3h subfn D8h
- DS:SI -> request buffer (see #02035)
- ES:DI -> reply buffer (see #02036)
- Return: AL = status (00h,C6h) (see #02025)
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have console operator privileges
- SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D9h,AH=E3h/SF=E9h,AX=F217h/SF=D8h
- Format of NetWare "Get Physical Disk Statistics" request buffer:
- Offset Size Description (Table 02035)
- 00h WORD 0002h (length of following data)
- 02h BYTE D8h (subfunction "Get Physical Disk Statistics")
- 03h BYTE physical disk number
- SeeAlso: #02036,#02231 at AX=F217h/SF=D8h
- Format of NetWare "Get Physical Disk Statistics" reply buffer:
- Offset Size Description (Table 02036)
- 00h WORD (call) 005Dh (size of following results record)
- 02h DWORD (big-endian) clock ticks since system started
- 06h BYTE physical disk channel
- 07h BYTE flag: drive removable if nonzero
- 08h BYTE physical drive type
- 09h BYTE drive number within controller
- 0Ah BYTE controller number
- 0Bh BYTE controller type
- 0Ch DWORD (big-endian) size of drive in 4K disk blocks
- 10h WORD (big-endian) number of cylinders on drive
- 12h BYTE number of heads
- 13h BYTE number of sectors per track
- 14h 64 BYTEs ASCIZ drive make and model
- 54h WORD (big-endian) number of I/O errors
- 56h DWORD (big-endian) start of Hot Fix table
- 5Ah WORD (big-endian) size of Hot Fix table
- 5Ch WORD (big-endian) number of Hot Fix blocks available
- 5Eh BYTE flag: Hot Fix disabled if nonzero
- SeeAlso: #02035,#02231 at AX=F217h/SF=D8h
- --------N-21E3--SFD9-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET DISK CHANNEL STATISTICS
- AH = E3h subfn D9h
- DS:SI -> request buffer (see #02037)
- ES:DI -> reply buffer (see #02038)
- Return: AL = status (00h,C6h) (see #02025)
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have console operator privileges
- SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D8h,AH=E3h/SF=E6h,AH=E3h/SF=E9h
- SeeAlso: AX=F217h/SF=D9h
- Format of NetWare "Get Disk Channel Statistics" request buffer:
- Offset Size Description (Table 02037)
- 00h WORD 0002h (length of following data)
- 02h BYTE D9h (subfunction "Get Disk Channel Statistics")
- 03h BYTE channel number
- SeeAlso: #02038,#02232 at AX=F217h/SF=D9h
- Format of NetWare "Get Disk Channel Statistics" reply buffer:
- Offset Size Description (Table 02038)
- 00h WORD (call) 00A8h (size of following results record)
- 02h DWORD (big-endian) clock ticks since system started
- 06h WORD (big-endian) channel run state (see #02039)
- 08h WORD (big-endian) channel synchronization state (see #02040)
- 0Ah BYTE driver type
- 0Bh BYTE major version of driver
- 0Ch BYTE minor version of driver
- 0Dh 65 BYTEs ASCIZ driver description
- 4Eh WORD (big-endian) first I/O address used
- 50h WORD (big-endian) length of first I/O address
- 52h WORD (big-endian) second I/O address used
- 54h WORD (big-endian) length of second I/O address
- 56h 3 BYTEs first shared memory address
- 59h 2 BYTEs length of first shared memory address
- 5Bh 3 BYTEs second shared memory address
- 5Eh 2 BYTEs length of second shared memory address
- 60h BYTE first interrupt number in-use flag
- 61h BYTE first interrupt number used
- 62h BYTE second interrupt number in-use flag
- 63h BYTE second interrupt number used
- 64h BYTE first DMA channel in-use flag
- 65h BYTE first DMA channel used
- 66h BYTE second DMA channel in-use flag
- 67h BYTE second DMA channel used
- 68h BYTE flags
- 69h BYTE reserved
- 6Ah 80 BYTEs ASCIZ configuration description
- SeeAlso: #02037,#02232 at AX=F217h/SF=D9h
- (Table 02039)
- Values for channel run state:
- 0000h running
- 0001h being stopped
- 0002h stopped
- 0003h nonfunctional
- SeeAlso: #02038,#02040
- (Table 02040)
- Values for channel synchronization state:
- 0000h not in use
- 0002h used by NetWare, no other requests
- 0004h used by NetWare, other requests
- 0006h in use, not needed by NetWare
- 0008h in use, needed by NetWare
- 000Ah channel released, NetWare should use it
- SeeAlso: #02038,#02039
- --------N-21E3--SFDA-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S TASK INFORMATION
- AH = E3h subfn DAh
- DS:SI -> request buffer (see #02041)
- ES:DI -> reply buffer (see #02042)
- Return: AL = status (00h,C6h) (see #02053)
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have console operator privileges
- SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DBh,AH=E3h/SF=DFh,AH=E3h/SF=E1h,AH=E3h/SF=E5h
- SeeAlso: AX=F217h/SF=DAh
- Format of NetWare "Get Connection's Task Information" request buffer:
- Offset Size Description (Table 02041)
- 00h WORD 0003h (length of following data)
- 02h BYTE DAh (subfunction "Get Connection's Task Information")
- 03h WORD (big-endian) logical connection number
- SeeAlso: #02042,#02233 at AX=F217h/SF=DAh
- Format of NetWare "Get Connection's Task Information" reply buffer:
- Offset Size Description (Table 02042)
- 00h WORD (call) size of following results record (max 1FEh)
- 02h BYTE lock status of connection (see #02043)
- 03h var Lock Status Information (see #02044)
- N BYTE number of records following
- N+1 Active Task Information Records [array]
- Offset Size Description
- 00h BYTE task number (01h-FFh)
- 01h BYTE task state
- 01h in TTS explicit transaction
- 02h in TTS implicit transaction
- 04h shared fileset lock active
- SeeAlso: #02041,#02233 at AX=F217h/SF=DAh
- (Table 02043)
- Values for lock status of connection:
- 00h no locks
- 01h waiting on physical record lock
- 02h waiting on file lock
- 03h waiting on logical record lock
- 04h waiting on semaphore
- SeeAlso: #02042,#02044
- Format of Lock Status Information:
- Offset Size Description (Table 02044)
- ---lock status 00h---
- no fields
- ---lock status 01h---
- 00h BYTE number of waiting task
- 01h DWORD start address
- 05h DWORD end address
- 09h BYTE volume number
- 0Ah WORD directory entry number
- 0Ch 14 BYTEs ASCIZ filename
- ---lock status 02h---
- 00h BYTE number of waiting task
- 01h BYTE volume number
- 02h WORD directory entry number
- 04h 14 BYTEs ASCIZ filename
- ---lock status 03h---
- 00h BYTE number of waiting task
- 01h BYTE length of record name
- 02h N BYTEs ASCIZ record name
- ---lock status 04h---
- 00h BYTE number of waiting task
- 01h BYTE length of semaphore's name
- 02h N BYTEs ASCIZ semaphore name
- SeeAlso: #02042,#02043
- --------N-21E3--SFDB-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S OPEN FILES (OLD)
- AH = E3h subfn DBh
- DS:SI -> request buffer (see #02045)
- ES:DI -> reply buffer (see #02046)
- Return: AL = status (00h,C6h) (see #02053)
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have console operator privileges
- SeeAlso: AH=E2h/SF=1Ah,AH=E3h/SF=C8h,AH=E3h/SF=DAh,AH=E3h/SF=DCh,AH=E3h/SF=DFh
- SeeAlso: AH=E3h/SF=E1h,AX=F217h/SF=DBh
- Format of NetWare "Get Connection's Open Files (old)" request buffer:
- Offset Size Description (Table 02045)
- 00h WORD 0005h (length of following data)
- 02h BYTE DBh (subfunction "Get Connection's Open Files")
- 03h WORD (big-endian) logical connection number
- 05h WORD (big-endian) last record seen (0000h on first call)
- SeeAlso: #02046,#02234 at AX=F217h/SF=DBh
- Format of NetWare "Get Connection's Open Files (old)" reply buffer:
- Offset Size Description (Table 02046)
- 00h WORD (call) size of following results record (max 1FEh)
- 02h WORD next request record (place in "last record" field on next call)
- 0000h if no more records
- 04h BYTE number of records following
- 05h var array of File Information Records (see #02047)
- SeeAlso: #02045,#02234 at AX=F217h/SF=DBh
- Format of NetWare File Information Record:
- Offset Size Description (Table 02047)
- 00h BYTE task number
- 01h BYTE lock flags (see #02048)
- 02h BYTE access flags (see #02049)
- 03h BYTE lock type
- 00h no lock
- FEh file lock
- FFh locked by Begin Share File Set
- 04h BYTE volume number (00h-1Fh)
- 05h WORD (big-endian) directory entry number
- 07h 14 BYTEs ASCIZ filename
- SeeAlso: #02046
- Bitfields for lock flags:
- Bit(s) Description (Table 02048)
- 0 file is locked
- 1 file opened Shareable
- 2 logged
- 3 file opened Normal
- 6 TTS holding lock
- 7 Transaction Flag set on file
- SeeAlso: #02047,#02049
- Bitfields for access flags:
- Bit(s) Description (Table 02049)
- 0 file open for reading by calling station
- 1 file open for writing by calling station
- 2 deny reads by other stations
- 3 deny writes by other stations
- 4 file detached
- 5 TTS Holding Detach
- 6 TTS Holding Open
- SeeAlso: #02047,#02048
- --------N-21E3--SFDC-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET CONNECTIONS USING A FILE
- AH = E3h subfn DCh
- DS:SI -> request buffer (see #02050)
- ES:DI -> reply buffer (see #02051)
- Return: AL = status (00h,C6h) (see #02053)
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have console operator privileges
- SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DAh,AH=E3h/SF=DBh,AH=E3h/SF=DFh,AH=E3h/SF=E1h
- SeeAlso: AX=F217h/SF=DCh
- Format of NetWare "Get Connections Using a File" request buffer:
- Offset Size Description (Table 02050)
- 00h WORD length of following data (max 104h)
- 02h BYTE DCh (subfunction "Get Connections Using a File")
- 03h WORD (big-endian) last record (0000h on first call)
- 05h BYTE directory handle
- 06h BYTE length of file path
- 07h N BYTEs ASCIZ file path
- SeeAlso: #02051,#02235 at AX=F217h/SF=DCh
- Format of NetWare "Get Connections Using a File" reply buffer:
- Offset Size Description (Table 02051)
- 00h WORD (call) size of following results record (max 1FEh)
- 02h WORD (big-endian) count of tasks which have opened or logged file
- 04h WORD (big-endian) count of tasks which have opened file
- 06h WORD (big-endian) count of opens for reading
- 08h WORD (big-endian) count of opens for writing
- 0Ah WORD (big-endian) deny read count
- 0Ch WORD (big-endian) deny write count
- 0Eh WORD next request record (place in "last record" field on next call)
- 0000h if no more records
- 10h BYTE locked flag
- 00h not locked exclusively
- else locked exclusively
- 11h BYTE number of records following
- 12h var array of File Usage Information Records (see #02052)
- SeeAlso: #02050,#02235 at AX=F217h/SF=DCh
- Format of NetWare File Usage Information Record:
- Offset Size Description (Table 02052)
- 00h WORD (big-endian) logical connection number
- 02h BYTE task number
- 03h BYTE lock flags (see #02048)
- 04h BYTE access flags (see #02049)
- 05h BYTE lock type
- 00h no lock
- FEh file lock
- FFh locked by Begin Share File Set
- --------N-21E3--SFDD-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET PHYSICAL RECORD LOCKS BY CONN&FILE
- AH = E3h subfn DDh
- DS:SI -> request buffer (see #02054)
- ES:DI -> reply buffer (see #02055)
- Return: AL = status (00h,C6h,FFh) (see #02053)
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have console operator privileges
- SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DEh,AH=E3h/SF=DFh,AX=F217h/SF=DDh
- (Table 02053)
- Values for NetWare function status:
- 00h successful
- C6h no console rights
- FFh file not open
- SeeAlso: #02025,#02094
- Format of NetWare "Get Phys Record Locks by Conn and File" request buffer:
- Offset Size Description (Table 02054)
- 00h WORD 0016h (length of following data)
- 02h BYTE DDh (subfunction "Get Physical Record Locks by Connection and
- File")
- 03h WORD (big-endian) logical connection number
- 05h WORD (big-endian) last record seen (0000h on first call)
- 07h BYTE volume number (00h-1Fh)
- 08h WORD (big-endian) directory handle
- 0Ah 14 BYTEs ASCIZ filename
- SeeAlso: #02055,#02236 at AX=F217h/SF=DDh
- Format of NetWare "Get Phys Record Locks by Conn and File" reply buffer:
- Offset Size Description (Table 02055)
- 00h WORD (call) size of following results record (max 1FEh)
- 02h WORD next request record (place in "last record" on next call)
- 0000h if no more records
- 04h BYTE number of physical record locks
- 05h BYTE number of records following
- 06h var array of Physical Record Lock Info records (see #02056)
- SeeAlso: #02054,#02236 at AX=F217h/SF=DDh
- Format of NetWare Physical Record Lock Info:
- Offset Size Description (Table 02056)
- 00h BYTE task number
- 01h BYTE lock status (see #02057)
- 02h DWORD (big-endian) starting offset of record in file
- 06h DWORD (big-endian) ending offset of record in file
- SeeAlso: #02055
- Bitfields for lock status:
- Bit(s) Description (Table 02057)
- 0 exclusive lock
- 1 shareable lock
- 2 logged
- 6 lock held by TTS
- SeeAlso: #02056
- --------N-21E3--SFDE-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET PHYSICAL RECORD LOCKS BY FILE
- AH = E3h subfn DEh
- DS:SI -> request buffer (see #02058)
- ES:DI -> reply buffer (see #02059)
- Return: AL = status (00h,C6h,FFh) (see #02053)
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have console operator privileges
- SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DDh,AH=E3h/SF=DFh,AX=F217h/SF=DEh
- Format of NetWare "Get Physical Record Locks by File" request buffer:
- Offset Size Description (Table 02058)
- 00h WORD length of following data (max 104h)
- 02h BYTE DEh (subfunction "Get Physical Record Locks by File")
- 03h WORD (big-endian) last record seen (0000h on first call)
- 05h BYTE directory handle
- 06h BYTE length of filename
- 07h N BYTEs ASCIZ filename
- SeeAlso: #02059,#02237 at AX=F217h/SF=DEh
- Format of NetWare "Get Physical Record Locks by File" reply buffer:
- Offset Size Description (Table 02059)
- 00h WORD (call) size of following results record (max 1FEh)
- 02h WORD next request record (place in "last record" on next call)
- 0000h if no more records
- 04h BYTE number of physical record locks
- 05h BYTE number of records following
- 06h var array of Physical Record Lock Info records (see #02060)
- SeeAlso: #02058,#02237 at AX=F217h/SF=DEh
- Format of NetWare Physical Record Lock Info:
- Offset Size Description (Table 02060)
- 00h WORD (big-endian) number of tasks logging record
- 02h WORD (big-endian) number of tasks with shareable lock
- 04h DWORD (big-endian) starting offset of record in file
- 08h DWORD (big-endian) ending offset of record in file
- 0Ch WORD (big-endian) logical connection number
- 0Eh BYTE task number
- 0Fh BYTE lock type
- 00h none
- FEh file lock
- FFh Begin Share File Set lock
- SeeAlso: #02059
- --------N-21E3--SFDF-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET LOGICAL RECORDS BY CONNECTION
- AH = E3h subfn DFh
- DS:SI -> request buffer (see #02061)
- ES:DI -> reply buffer (see #02062)
- Return: AL = status (00h,C6h) (see #02053)
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have console operator privileges
- SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DDh,AH=E3h/SF=E0h,AH=E3h/SF=E2h
- SeeAlso: AX=F217h/SF=DFh
- Format of NetWare "Get Logical Records by Connection" request buffer:
- Offset Size Description (Table 02061)
- 00h WORD 0005h (length of following data)
- 02h BYTE DFh (subfunction "Get Logical Records By Connection")
- 03h WORD (big-endian) logical connection number
- 05h WORD (big-endian) last record seen (0000h on first call)
- SeeAlso: #02062,#02238 at AX=F217h/SF=DFh
- Format of NetWare "Get Logical Records by Connection" reply buffer:
- Offset Size Description (Table 02062)
- 00h WORD (call) size of following results record (max 1FEh)
- 02h WORD next request record (place in "last record" field on next call)
- 0000h if no more locked records
- 04h BYTE number of records following
- 05h var array of Logical Lock Information Records (see #02063)
- SeeAlso: #02061,#02238 at AX=F217h/SF=DFh
- Format of NetWare Logical Lock Information Record:
- Offset Size Description (Table 02063)
- 00h BYTE task number
- 01h BYTE lock status (see #02057)
- 02h BYTE length of logical lock's name
- 03h N BYTEs logical lock's name
- SeeAlso: #02062
- --------N-21E3--SFE0-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET LOGICAL RECORD INFORMATION
- AH = E3h subfn E0h
- DS:SI -> request buffer (see #02064)
- ES:DI -> reply buffer (see #02065)
- Return: AL = status (00h,C6h) (see #02053)
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have console operator privileges
- SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DDh,AH=E3h/SF=DFh,AH=E3h/SF=E2h
- SeeAlso: AX=F217h/SF=E0h
- Format of NetWare "Get Logical Record Information" request buffer:
- Offset Size Description (Table 02064)
- 00h WORD length of following data (max 67h)
- 02h BYTE E0h (subfunction "Get Logical Record Information")
- 03h WORD (big-endian) last record seen (0000h on first call)
- 05h BYTE length of logical record's name
- 06h N BYTEs logical record's name
- SeeAlso: #02065,#02239 at AH=E3h/SF=E0h
- Format of NetWare "Get Logical Record Information" reply buffer:
- Offset Size Description (Table 02065)
- 00h WORD (call) size of following results record (max 200h)
- 02h WORD (big-endian) number of logical connections logging the record
- 04h WORD (big-endian) number of logical connections with shareable lock
- 06h WORD (big-endian) next request record (place in "last record" field
- on next call)
- 08h BYTE locked exclusively if nonzero
- 09h BYTE number of records following
- 0Ah var array of Task Information Records (see #02066)
- SeeAlso: #02064,#02239 at AH=E3h/SF=E0h
- Format of NetWare Task Information Record:
- Offset Size Description (Table 02066)
- 00h WORD (big-endian) logical connection number
- 02h BYTE task number
- 03h BYTE lock status (see #02057)
- SeeAlso: #02065
- --------N-21E3--SFE1-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S SEMAPHORES
- AH = E3h subfn E1h
- DS:SI -> request buffer (see #02067)
- ES:DI -> reply buffer (see #02068)
- Return: AL = status (00h,C6h) (see #02053)
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have console operator privileges
- SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DBh,AH=E3h/SF=DFh,AH=E3h/SF=E2h
- SeeAlso: AX=F217h/SF=E1h
- Format of NetWare "Get Connection's Semaphores" request buffer:
- Offset Size Description (Table 02067)
- 00h WORD 0005h (length of following data)
- 02h BYTE E1h (subfunction "Get Connection's Semaphores")
- 03h WORD (big-endian) logical connection number
- 05h WORD (big-endian) last record seen (0000h on first call)
- SeeAlso: #02068,#02240 at AX=F217h/SF=E1h
- Format of NetWare "Get Connection's Semaphores" reply buffer:
- Offset Size Description (Table 02068)
- 00h WORD (call) size of following results record (max 1FEh)
- 02h WORD next request record (place in "last record" field on next call)
- 04h BYTE number of records following
- 05h var array of Semaphore Information Records (see #02069)
- SeeAlso: #02067,#02240 at AX=F217h/SF=E1h
- Format of NetWare Semaphore Information Record:
- Offset Size Description (Table 02069)
- 00h WORD (big-endian) open count
- 02h BYTE semaphore value (-128 to 127)
- 03h BYTE task number
- 04h BYTE lock type
- 05h BYTE length of semaphore's name
- 06h N BYTEs semaphore's name
- 14 BYTEs filename
- SeeAlso: #02068
- --------N-21E3--SFE2-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET SEMAPHORE INFORMATION
- AH = E3h subfn E2h
- DS:SI -> request buffer (see #02070)
- ES:DI -> reply buffer (see #02071)
- Return: AL = status (00h,C6h) (see #02053)
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have console operator privileges
- SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=E1h,AX=F217h/SF=E2h
- Format of NetWare "Get Semaphore Information" request buffer:
- Offset Size Description (Table 02070)
- 00h WORD length of following data (max 83h)
- 02h BYTE E2h (subfunction "Get LAN Driver's Configuration Information")
- 03h WORD (big-endian) last record seen (0000h on first call)
- 05h BYTE length of semaphore's name (01h-7Fh)
- 06h N BYTEs semaphore's name
- SeeAlso: #02071,#02241 at AX=F217h/SF=E2h
- Format of NetWare "Get Semaphore Information" reply buffer:
- Offset Size Description (Table 02071)
- 00h WORD (call) size of following results buffer (max 1FEh)
- 02h WORD next request record (place in "last record" on next call)
- 0000h if no more
- 04h WORD (big-endian) number of logical connections opening semaphore
- 06h BYTE semaphore value (-127 to 128)
- 07h BYTE number of records following
- 08h var array of Semaphore Information records (see #02072)
- SeeAlso: #02071,#02241 at AX=F217h/SF=E2h
- Format of NetWare Semaphore Information:
- Offset Size Description (Table 02072)
- 00h WORD (big-endian) logical connection number
- 02h BYTE task number
- SeeAlso: #02071
- --------N-21E3--SFE3-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET LAN DRIVER'S CONFIGURATION INFO
- AH = E3h subfn E3h
- DS:SI -> request buffer (see #02073)
- ES:DI -> reply buffer (see #02074)
- Return: AL = status (00h,C6h) (see #02053)
- Notes: this function is supported by Advanced NetWare 2.1+
- the calling workstation must have console operator privileges
- SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=E7h,AH=E3h/SF=E8h,AX=F217h/SF=E3h
- Format of NetWare "Get LAN Driver's Configuration Info" request buffer:
- Offset Size Description (Table 02073)
- 00h WORD 0002h (length of following data)
- 02h BYTE E3h (subfunction "Get LAN Driver's Configuration Information")
- 03h BYTE LAN board (00h-03h)
- SeeAlso: #02074,#02242 at AX=F217h/SF=E3h
- Format of NetWare "Get LAN Driver's Configuration Info" reply buffer:
- Offset Size Description (Table 02074)
- 00h WORD (call) 00ACh (size of following results buffer)
- 02h 4 BYTEs network number
- 06h 6 BYTEs node number
- 0Ch BYTE LAN driver installed (00h no--remaining fields invalid)
- 0Dh BYTE option number selected at configuration time
- 0Eh 160 BYTEs configuration text
- ASCIZ hardware type
- ASCIZ hardware settings
- SeeAlso: #02073,#02242 at AX=F217h/SF=E3h
- --------N-21E3--SFE5-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S USAGE STATISTICS
- AH = E3h subfn E5h
- DS:SI -> request buffer (see #02075)
- ES:DI -> reply buffer (see #02076)
- Return: AL = status (00h,C6h) (see #02053)
- Notes: this function is supported by Advanced NetWare 2.1+
- one must have console operator privileges to get statistics for logical
- connections other than one's own
- SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DAh,AH=E3h/SF=DBh,AH=E3h/SF=E1h
- SeeAlso: AX=F217h/SF=E5h
- Format of NetWare "Get Connection's Usage Statistics" request buffer:
- Offset Size Description (Table 02075)
- 00h WORD 0003h (length of following data)
- 02h BYTE E5h (subfunction "Get Connection's Usage Statistics")
- 03h WORD (big-endian) logical connection number
- SeeAlso: #02076,#02243 at AX=F217h/SF=E5h
- Format of NetWare "Get Connection's Usage Statistics" reply buffer:
- Offset Size Description (Table 02076)
- 00h WORD (call) 0014h (size of following results record)
- 02h DWORD (big-endian) clock ticks since server started
- 06h 6 BYTEs bytes read
- 0Ch 6 BYTEs bytes written
- 12h DWORD (big-endian) total request packets
- SeeAlso: #02075,#02243 at AX=F217h/SF=E5h
- --------N-21E3--SFE6-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET BINDERY OBJECT DISK SPACE LEFT
- AH = E3h subfn E6h
- DS:SI -> request buffer (see #02077)
- ES:DI -> reply buffer (see #02078)
- Return: AL = status (00h,C6h) (see #02053)
- Notes: this function is supported by Advanced NetWare 2.1+
- one must have console operator privileges to get the free space for
- other bindery objects
- SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=E8h,AH=E3h/SF=E9h
- Format of NetWare "Get Bindery Object Disk Space Left" request buffer:
- Offset Size Description (Table 02077)
- 00h WORD 0005h (length of following data)
- 02h BYTE E6h (subfunction "Get Bindery Object Disk Space Left")
- 03h DWORD (big-endian) object ID
- SeeAlso: #02078,#02244 at AX=F217h/SF=E6h
- Format of NetWare "Get Bindery Object Disk Space Left" reply buffer:
- Offset Size Description (Table 02078)
- 00h WORD (call) 000Fh (size of following results buffer)
- 02h DWORD (big-endian) clock ticks elapsed since server started
- 06h DWORD (big-endian) object ID
- 0Ah DWORD (big-endian) 4K disk blocks available to user
- 0Eh BYTE restrictions (00h enforced, FFh not enforced)
- SeeAlso: #02077,#02244 at AX=F217h/SF=E6h
- --------N-21E3--SFE7-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER LAN I/O STATISTICS
- AH = E3h subfn E7h
- DS:SI -> request buffer (see #02079)
- ES:DI -> reply buffer (see #02080)
- Return: AL = status
- 00h successful
- Note: this function is supported by Advanced NetWare 2.1+
- SeeAlso: AH=E3h/SF=0Eh,AH=E3h/SF=11h,AH=E3h/SF=D3h,AH=E3h/SF=E8h
- SeeAlso: AH=E7h"Novell",AX=F217h/SF=E7h
- Format of NetWare "Get File Server LAN I/O Statistics" request buffer:
- Offset Size Description (Table 02079)
- 00h WORD 0001h (length of following data)
- 02h BYTE E7h (subfunction "Get File Server LAN I/O Statistics")
- SeeAlso: #02080,#02245 at AX=F217h/SF=E7h
- Format of NetWare "Get File Server LAN I/O Statistics" reply buffer:
- Offset Size Description (Table 02080)
- 00h WORD (call) 0042h (size of following results buffer)
- 02h DWORD clock ticks since system started
- 06h WORD total routing buffers
- 08h WORD maximum routing buffers used
- 0Ah WORD current routing buffers used
- 0Ch DWORD total file service packets
- 10h WORD number of file service packets buffered
- 12h WORD number of invalid connection packets
- 14h WORD packets with bad logical connection numbers
- 16h WORD number of packets received during processing
- 18h WORD number of requests reprocessed
- 1Ah WORD packets with bad sequence numbers
- 1Ch WORD number of duplicate replies sent
- 1Eh WORD number of acknowledgements sent
- 20h WORD number of packets with bad request types
- 22h WORD requests to attach to ws for which a request is being processed
- 24h WORD requests to attach from ws which is already attaching
- 26h WORD number of forged detach requests
- 28h WORD detach requests with bad connection number
- 2Ah WORD requests to detach from ws for which requests pending
- 2Ch WORD number of cancelled replies
- 2Eh WORD packets discarded due to excessive hop count
- 30h WORD packets discarded due to unknown net
- 32h WORD incoming packets discarded for lack of DGroup buffer
- 34h WORD outgoing packets discarded due to lack of buffer
- 36h WORD received packets destined for B,C, or D side drivers
- 38h DWORD number of NetBIOS packets propagated through net
- 3Ch DWORD total number of non-file-service packets
- 40h DWORD total number of routed packets
- Note: all fields except the first are big-endian
- SeeAlso: #02080,#02245 at AX=F217h/SF=E7h
- --------N-21E3--SFE8-------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER MISC INFORMATION
- AH = E3h subfn E8h
- DS:SI -> request buffer (see #02081)
- ES:DI -> reply buffer (see #02082)
- Return: AL = status (00h,C6h) (see #02053)
- Note: this function is supported by Advanced NetWare 2.1+
- SeeAlso: AH=E3h/SF=0Eh,AH=E3h/SF=11h,AH=E3h/SF=CDh,AH=E3h/SF=E7h
- SeeAlso: AX=F217h/SF=E8h
- Format of NetWare "Get File Server Misc Information" request buffer:
- Offset Size Description (Table 02081)
- 00h WORD 0001h (length of following data)
- 02h BYTE E8h (subfunction "Get File Server Misc Information")
- SeeAlso: #02082,#02246 at AX=F217h/SF=E8h
- Format of NetWare "Get File Server Misc Information" reply buffer:
- Offset Size Description (Table 02082)
- 00h WORD (call) size of following results buffer (max 0048h)
- 02h DWORD (big-endian) clock ticks since system started
- 06h BYTE CPU type
- 00h Motorola 68000
- 01h Intel 8086, 8088, or V20
- 02h Intel 80286+
- 07h BYTE reserved
- 08h BYTE number of service processes in server
- 09h BYTE server utilization in percent
- 0Ah WORD (big-endian) maximum bindery objects set by configuration
- 0000h = unlimited
- 0Ch WORD (big-endian) maximum number of bindery objects used
- 0Eh WORD (big-endian) current number of bindery objects in use
- 10h WORD (big-endian) total server memory in KB
- 12h WORD (big-endian) wasted server memory in KB
- normally 0000h
- 14h WORD number of records following (01h-03h)
- 16h var array of Dynamic Memory Information records (see #02083)
- SeeAlso: #02081,#02246 at AX=F217h/SF=E8h
- Format of NetWare Dynamic Memory Information:
- Offset Size Description (Table 02083)
- 00h DWORD (big-endian) total dynamic space
- 04h DWORD (big-endian) maximum dynamic space used
- 08h DWORD (big-endian) current dynamic space usage
- --------N-21E3--SFE9-------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFORMATION
- AH = E3h subfn E9h
- DS:SI -> request buffer (see #02084)
- ES:DI -> reply buffer (see #02085)
- Return: AL = status
- 00h successful
- Notes: this function is supported by Advanced NetWare 2.1+
- SeeAlso: AH=DAh,AH=E2h/SF=15h,AX=F217h/SF=E9h
- Format of NetWare "Get Volume Information" request buffer:
- Offset Size Description (Table 02084)
- 00h WORD 0002h (length of following data)
- 02h BYTE E9h (subfunction "Get Volume Information")
- 03h BYTE directory handle
- SeeAlso: #02085,#02247 at AX=F217h/SF=E9h
- Format of NetWare "Get Volume Information" reply buffer:
- Offset Size Description (Table 02085)
- 00h WORD (call) 0028h (length of following results buffer)
- 02h DWORD (big-endian) elapsed system time
- 06h BYTE volume number
- 07h BYTE logical drive number
- 08h WORD (big-endian) sectors per block
- 0Ah WORD (big-endian) starting block
- 0Ch WORD (big-endian) total blocks on volume
- 0Eh WORD (big-endian) blocks available on volume
- 10h WORD (big-endian) total directory slots
- 12h WORD (big-endian) directory slots available
- 14h WORD (big-endian) maximum directory entries actually used
- 16h BYTE flag: volume hashed if nonzero
- 17h BYTE flag: volume cached if nonzero
- 18h BYTE flag: volume removable if nonzero
- 19h BYTE flag: volume mounted if nonzero
- 1Ah 16 BYTEs NUL-padded volume name
- SeeAlso: #02084,#02247 at AX=F217h/SF=E9h
- --------N-21E4-------------------------------
- INT 21 O - Novell NetWare - SET FILE ATTRIBUTES (FCB)
- AH = E4h
- CL = file attributes (see #02086)
- DX:DX -> FCB (see #01345 at AH=0Fh)
- Return: AL = error code
- Note: this function was added in NetWare 4.0, but was removed some time prior
- to Advanced NetWare 2.15, and is no longer listed in current Novell
- documentation
- SeeAlso: AX=4301h
- Bitfields for NetWare file attributes:
- Bit(s) Description (Table 02086)
- 0 read only
- 1 hidden
- 2 system
- 7 shareable
- --------v-21E4-------------------------------
- INT 21 - VIRUS - "Anarkia" - INSTALLATION CHECK
- AH = E4h
- Return: AH = 04h if resident
- SeeAlso: AH=E1h"VIRUS",AH=E7h"VIRUS"
- --------T-21E400-----------------------------
- INT 21 - DoubleDOS - INSTALLATION CHECK/PROGRAM STATUS
- AX = E400h
- Return: AL = program status
- 00h if DoubleDOS not present
- 01h if running in visible DoubleDOS partition
- 02h if running in the invisible DoubleDOS partition
- SeeAlso: AH=E5h"DoubleDOS",AX=F400h
- --------E-21E400-----------------------------
- INT 21 - OS/286, OS/386 - CHAIN TO REAL-MODE HANDLER
- AX = E400h
- ???
- Return: ???
- Note: protected mode only???
- --------E-21E402-----------------------------
- INT 21 - OS/286, OS/386 - SET PROTECTED-MODE TASK GATE
- AX = E402h
- ???
- Return: ???
- Note: protected mode only???
- SeeAlso: AX=E403h
- --------E-21E403-----------------------------
- INT 21 - OS/286, OS/386 - REMOVE PROTECTED-MODE TASK GATE
- AX = E403h
- ???
- Return: ???
- Note: protected mode only???
- SeeAlso: AX=E402h
- --------N-21E5-------------------------------
- INT 21 O - Novell NetWare - UPDATE FILE SIZE (FCB)
- AH = E5h
- DS:DX -> FCB (see #01345 at AH=0Fh)
- Return: AL = (unreliable) return code
- Notes: this function was added in NetWare 4.0, but was removed some time prior
- to Advanced NetWare 2.15, and is no longer listed in current Novell
- documentation
- on success, NetWare sets AL to zero; on errors it restores AL
- --------T-21E5-------------------------------
- INT 21 - DoubleDOS - OTHER PROGRAM STATUS
- AH = E5h
- Return: AL = status
- 00h no program in other partition
- 01h program in other partition is running
- 02h program in other partition is suspended
- SeeAlso: AX=E400h"DoubleDOS",AH=F5h"DoubleDOS"
- --------E-21E500-----------------------------
- INT 21 - OS/286, OS/386 - HEAP MANAGEMENT STRATEGY
- AX = E500h
- ???
- Return: ???
- SeeAlso: AX=E501h
- --------E-21E501-----------------------------
- INT 21 - OS/286, OS/386 - FORCE HEAP COMPACTION
- AX = E501h
- ???
- Return: ???
- SeeAlso: AX=E500h
- --------N-21E6-------------------------------
- INT 21 O - Novell NetWare - COPY FILE TO FILE (FCB)
- AH = E6h
- CX:DX = number of bytes to copy
- DS:SI -> opened source FCB
- ES:DI -> opened destination FCB
- Return: AL = error code
- CX = ???
- DX = ???
- Note: this function was added in NetWare 4.0, but was removed some time prior
- to Advanced NetWare 2.15, and is no longer listed in current Novell
- documentation
- --------E-21E6-------------------------------
- INT 21 P - OS/286, OS/386 - ISSUE REAL PROCEDURE SIGNAL FROM PROTECTED MODE
- AH = E6h
- ???
- Return: ???
- SeeAlso: AH=E2h"OS/286"
- --------N-21E7-------------------------------
- INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER DATE AND TIME
- AH = E7h
- DS:DX -> date/time buffer (see #02087)
- Return: AL = error code
- 00h successful
- FFh unsuccessful
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
- Alloy NTNX, and Banyan VINES
- SeeAlso: AH=2Ah,AH=2Ch,AX=5FC0h,AH=E3h/SF=CAh,AX=F214h
- Format of NetWare date/time buffer:
- Offset Size Description (Table 02087)
- 00h BYTE year (80-99 = 1980-1999, 0-79 = 2000-2079)
- 01h BYTE month (1=Jan)
- 02h BYTE day
- 03h BYTE hours
- 04h BYTE minutes
- 05h BYTE seconds
- 06h BYTE day of week (0 = Sunday) (Novell and NTNX only)
- SeeAlso: #02106
- --------E-21E7-------------------------------
- INT 21 - OS/286, OS/386 - CREATE CODE SEGMENT
- AH = E7h
- ???
- Return: ???
- SeeAlso: AH=E8h"OS/286",AH=E9h"OS/286",AH=EAh"OS/286"
- --------v-21E7-------------------------------
- INT 21 - VIRUS - "Spyer"/"Kiev" - INSTALLATION CHECK
- AH = E7h
- Return: AH = 78h if resident
- SeeAlso: AH=E4h"VIRUS",AX=EC59h
- --------N-21E8-------------------------------
- INT 21 O - Novell NetWare, Alloy NTNX - SET FCB RE-OPEN MODE
- AH = E8h
- DL = mode
- 00h no automatic re-open
- 01h auto re-open
- Return: AL = error code
- Desc: provided backward compatibility with a bug in CP/M and early DOS vers
- Note: this function was added in NetWare 4.6, but was removed some time prior
- to Advanced NetWare 2.15, and is no longer listed in current Novell
- documentation
- --------E-21E8-------------------------------
- INT 21 - OS/286, OS/386 - SEGMENT CREATION
- AH = E8h
- AL = type
- 00h data segment
- 01h data window/alias
- 02h real segment
- 03h real window/alias
- CX:DX = size in bytes
- SI:BX -> start of desired memory block
- Return: AX = selector
- 06h shareable segment
- ???
- Return: ???
- SeeAlso: AH=E7h"OS/286",AH=E9h"OS/286"
- --------T-21E8-------------------------------
- INT 21 - DoubleDOS - SET/RESET KEYBOARD CONTROL FLAGS
- AH = E8h
- AL = program for which to set flags (00h this program, 01h other)
- DX = keyboard control flags (see #02088)
- Return: DX = previous flags
- Notes: disabling Ctrl-PrtSc will allow the program to intercept the keystroke;
- disabling any of the other keystrokes disables them completely
- identical to AH=F8h
- SeeAlso: AH=E1h"DoubleDOS",AH=E2h"DoubleDOS",AH=E3h"DoubleDOS"
- SeeAlso: AH=F8h"DoubleDOS"
- Bitfields for DoubleDOS keyboard control flags:
- Bit(s) Description (Table 02088)
- 0 menu
- 1 exchange
- 2 entire keyboard enable/disable
- 3 Ctrl-C
- 4 Ctrl-PrtSc
- 5 Alt/Erase
- 6 Ctrl-Break
- 7 Ctrl-NumLock
- 8 shift-PrtSc
- 9-13 undefined
- 14 cancel key (clear keyboard buffer)
- 15 suspend key
- Note: setting a enables the corresponding key or operatin, clearing a
- disables it
- --------E-21E9-------------------------------
- INT 21 P - OS/286, OS/386 - CHANGE SEGMENTS
- AH = E9h
- AL = function
- 01h change code segment parameters
- 02h change data segment parameters
- 05h adjust segment limit
- 06h change segment base address
- ???
- Return: ???
- SeeAlso: AH=E7h"OS/286",AH=E8h"OS/286",AH=EAh"OS/286",AH=EDh"OS/286"
- SeeAlso: INT 31/AX=0007h,INT 31/AX=0008h
- --------T-21E9-------------------------------
- INT 21 - DoubleDOS - SET TIMESHARING PRIORITY
- AH = E9h
- AL = new priority (see #02089)
- Return: AL = priority setting if AL=05h on entry
- Note: identical to AH=F9h
- SeeAlso: AH=EAh"DoubleDOS",AH=EBh"DoubleDOS",AH=F9h"DoubleDOS"
- (Table 02089)
- Values for DoubleDOS timesharing priority:
- 00h visible program gets 70%, invisible gets 30% (default)
- 01h visible program gets 50%, invisible gets 50%
- 02h visible program gets 30%, invisible gets 70%
- 03h Top program gets 70%, bottom program gets 30%
- 04h Top program gets 30%, bottom program gets 70%
- 05h get current priority
- --------N-21E900-----------------------------
- INT 21 - Novell NetWare - DIRECTORY SERVICES - GET DIRECTORY HANDLE
- AX = E900h
- DX = drive number to check (0 = A:, ..., 25 = Z:, 26 ... 31)
- Return: AL = directory handle
- AH = flags (drive not mapped if none set)
- bit 0: permanent handle
- bit 1: temporary handle
- bit 7: mapped to local drive
- Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=E2h/SF=00h,AH=E2h/SF=01h,AH=E2h/SF=0Ah
- --------v-21E900-----------------------------
- INT 21 - VIRUS - "Dark End" - INSTALLATION CHECK
- AX = E900h
- Return: AX = 1234h if resident
- SeeAlso: AX=DEFEh"VIRUS",AX=EC27h"VIRUS"
- --------N-21E905-----------------------------
- INT 21 - Novell NetWare shell 3.01 - MAP A FAKE ROOT DIRECTORY
- AX = E905h
- BL = drive number (0=default, 1=A:, ...)
- DS:DX -> ASCIZ path for fake root (may include server name or be empty)
- Return: CF set on error
- AL = error code (03h,0Fh,11h) (see #01680 at AH=59h/BX=0000h)
- CF clear if successful
- Note: if drive is not currently mapped, a drive mapping will be created
- SeeAlso: AX=E906h
- --------N-21E906-----------------------------
- INT 21 - Novell NetWare shell 3.01 - DELETE FAKE ROOT DIRECTORY
- AX = E906h
- BL = drive number (0=default, 1=A:, ...)
- Return: AL = completion code
- Note: drive remains mapped
- SeeAlso: AX=E905h
- --------N-21E907-----------------------------
- INT 21 - Novell NetWare shell 3.01 - GET RELATIVE DRIVE DEPTH
- AX = E907h
- BL = drive number (0=default, 1=A:, ...)
- Return: AL = number of directories below the fake root
- FFh if no fake root assigned
- SeeAlso: AX=E905h
- --------N-21E908BL00-------------------------
- INT 21 - Novell NetWare shell 3.01 - SET SHOW DOTS
- AX = E908h
- BL = 00h don't return '.' or '..' during directory scans
- = nonzero directory scans will return '.' or '..' entries
- Return: BL = previous show-dots setting
- --------N-21E909-----------------------------
- INT 21 - Novell NetWare - NetWare shell - CONVERT DOS FILE HANDLE TO NETWARE
- AX = E909h
- BX = DOS file handle
- Return: AX = 0000h if successful
- BX:CX:DX = NetWare file handle
- Notes: this function is partially a reverse of "AttachHandle" (AH=B4h)
- many NetWare 3.x functions use a four-byte file handle, which appears
- to be the high four bytes of the six-byte NetWare handle
- SeeAlso: AH=B4h"NetWare"
- --------N-21EA-------------------------------
- INT 21 - Novell NetWare, Alloy NTNX - RETURN SHELL VERSION
- AH = EAh
- AL = return version environment string
- 00h don't return string
- nonzero get environment string
- ES:DI -> 40-byte buffer for string
- Return: buffer filled with three null-terminated entries:
- major operating system
- version
- hardware type
- Return: AH = operating system (00h = MS-DOS)
- AL = hardware type
- 00h IBM PC
- 01h Victor 9000
- BH = major shell version
- BL = minor shell version
- CH = (v3.01+) shell type
- 00h conventional memory
- 01h expanded memory
- 02h extended memory
- CL = shell revision number
- Note: this function is supported by NetWare 4.6 and Advanced NetWare 1.0+
- SeeAlso: INT DF"Victor"
- --------T-21EA-------------------------------
- INT 21 - DoubleDOS - TURN OFF TASK SWITCHING
- AH = EAh
- Return: task switching turned off
- SeeAlso: AH=E9h"DoubleDOS",AH=EBh"DoubleDOS",AH=FAh"DoubleDOS"
- SeeAlso: INT FA"DoubleDOS"
- --------E-21EA-------------------------------
- INT 21 - OS/286, OS/386 - ALLOCATE HUGE SEGMENT
- AH = EAh
- ???
- Return: ???
- Note: protected mode only???
- SeeAlso: AH=E7h"OS/286",AH=E8h"OS/286",AH=E9h"OS/286"
- --------N-21EB-------------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG FILE
- AH = EBh
- DS:DX -> ASCIZ filename
- if function C6h lock mode 01h:
- AL = flags
- 00h log file only
- 01h lock as well as log file
- BP = lock timeout in timer ticks (1/18 second)
- 0000h = don't wait if file already locked
- Return: AL = status (see #02090)
- Desc: add the location and size of the specified file to the log table and
- optionally lock the file
- Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=BCh"NetWare",AH=CAh,AH=D0h,AH=ECh"NetWare",AH=EDh"NetWare"
- (Table 02090)
- Values for NetWare status:
- 00h successful
- 96h no dynamic memory for file
- FEh timed out
- FFh failed
- SeeAlso: #02053
- --------T-21EB-------------------------------
- INT 21 - DoubleDOS - TURN ON TASK SWITCHING
- AH = EBh
- Return: task switching turned on
- SeeAlso: AH=E9h"DoubleDOS",AH=EAh"DoubleDOS",AH=FBh"DoubleDOS"
- SeeAlso: INT FB"DoubleDOS"
- --------E-21EB00-----------------------------
- INT 21 - OS/386 VMM - GET A PAGE TABLE ENTRY BY LINEAR ADDRESS
- AX = EB00h
- ???
- Return: ???
- Note: protected mode only???
- SeeAlso: AX=EB02h,AX=EB04h,INT 31/AX=0506h
- --------E-21EB02-----------------------------
- INT 21 - OS/386 VMM - GET A PAGE TABLE ENTRY BY 16-BIT SEGMENT:OFFSET
- AX = EB02h
- ???
- Return: ???
- Note: protected mode only???
- SeeAlso: AX=EB00h,AX=EB04h
- --------E-21EB03-----------------------------
- INT 21 - OS/386 VMM - FREE MAPPED PAGES
- AX = EB03h
- ???
- Return: ???
- Note: protected mode only???
- SeeAlso: AX=EB05h,INT 31/AX=0801h
- --------E-21EB04-----------------------------
- INT 21 - OS/386 VMM - GET A PAGE TABLE ENTRY BY 32-BIT SEGMENT:OFFSET
- AX = EB04h
- ???
- Return: ???
- Note: protected mode only???
- SeeAlso: AX=EB00h,AX=EB02h
- --------E-21EB05-----------------------------
- INT 21 - OS/386 VMM - MAP PAGES
- AX = EB05h
- ???
- Return: ???
- Note: protected mode only???
- SeeAlso: AX=EB03h,INT 31/AX=0800h
- --------E-21EB06-----------------------------
- INT 21 - OS/386 VMM - LOCK PAGES IN MEMORY
- AX = EB06h
- ???
- Return: ???
- Note: protected mode only???
- SeeAlso: AX=EB07h,INT 31/AX=0600h
- --------E-21EB07-----------------------------
- INT 21 - OS/386 VMM - UNLOCK MEMORY PAGES
- AX = EB07h
- ???
- Return: ???
- Note: protected mode only???
- SeeAlso: AX=EB06h,INT 31/AX=0601h
- --------N-21EC-------------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE FILE
- AH = ECh
- DS:DX -> ASCIZ filename
- Return: AL = status
- 00h successful
- FFh file not found
- Desc: unlock the specified file but retain it in the log table
- Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=CDh,AH=EBh"NetWare",AH=EDh"NetWare"
- --------T-21EC-------------------------------
- INT 21 - DoubleDOS - GET VIRTUAL SCREEN ADDRESS
- AH = ECh
- Return: ES = segment of virtual screen
- Desc: determine the address of the virtual screen to which the program
- should write instead of the actual video memory, so that the
- multitasked programs do not interfere with each other's output
- Notes: screen address can change if task-switching is on!
- identical to AH=FCh
- SeeAlso: INT 10/AH=FEh,AH=FCh"DoubleDOS",INT FC"DoubleDOS"
- --------E-21EC-------------------------------
- INT 21 - OS/286, OS/386 - BLOCK TRANSFER
- AH = ECh
- ???
- Return: ???
- --------v-21EC27-----------------------------
- INT 21 - VIRUS - "Halloween.1839" - INSTALLATION CHECK
- AX = EC27h
- Return: AX = 4A52h ("JR") if resident
- SeeAlso: AH=E7h"VIRUS",AX=E900h"VIRUS",AX=EC59h"VIRUS"
- --------v-21EC59-----------------------------
- INT 21 - VIRUS - "Terror" - INSTALLATION CHECK
- AX = EC59h
- Return: BP = EC59h if resident
- SeeAlso: AX=EC27h"VIRUS",AH=EEh"VIRUS"
- --------N-21ED-------------------------------
- INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR FILE
- AH = EDh
- DS:DX -> ASCIZ filename
- Return: AL = status
- 00h successful
- FFh no files found
- Desc: unlock the file and remove it from the log table
- Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=CBh"NetWare",AH=CEh,AH=CFh,AH=EBh"NetWare",AH=ECh"NetWare"
- --------E-21ED-------------------------------
- INT 21 - OS/286, OS/386 - GET SEGMENT OR WINDOW DESCRIPTOR
- AH = EDh
- ???
- Return: ???
- Note: protected mode only???
- SeeAlso: AH=E9h"OS/286"
- --------N-21EE-------------------------------
- INT 21 - Novell NetWare - CONNECTION SERVICES - GET PHYSICAL STATION ADDRESS
- AH = EEh
- Return: CX:BX:AX = six-byte physical address
- Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
- Alloy NTNX
- SeeAlso: AH=E3h/SF=13h
- --------T-21EE-------------------------------
- INT 21 - DoubleDOS - GIVE AWAY TIME TO OTHER TASKS
- AH = EEh
- AL = number of 55ms time slices to give away
- Return: returns after giving away time slices
- SeeAlso: AH=FEh"DoubleDOS",INT FE"DoubleDOS"
- --------v-21EE-------------------------------
- INT 21 - VIRUS - "Jerusalem-G", "Pregnant", "Barrotes" - INSTALLATION CHECK
- AH = EEh
- Return: AX = 0300h if "Jerusalem-G" resident
- AL = 05h if "Pregnant" resident
- AL = FEh if "Barrotes" resident
- SeeAlso: AH=DDh"VIRUS",AX=EC59h,AX=EEE7h"VIRUS"
- --------v-21EEE7-----------------------------
- INT 21 - VIRUS - "GingerBread" - INSTALLATION CHECK
- AX = EEE7h
- Return: AX = D703h if installed
- SeeAlso: AH=EEh"VIRUS",AH=EFh"VIRUS"
- --------v-21EF-------------------------------
- INT 21 - VIRUS - "Mabuhay"/"June 12th" - INSTALLATION CHECK
- AH = EFh
- Return: AX = 025Bh if resident
- SeeAlso: AX=EC27h"VIRUS",AH=EEh"VIRUS",AH=F0h"VIRUS"
- --------N-21EF00-----------------------------
- INT 21 - Novell NetWare - WORKSTATION - GET DRIVE HANDLE TABLE
- AX = EF00h
- Return: ES:SI -> network shell's 32-byte drive handle table
- AX = 0000h
- Notes: this function is supported by Advanced NetWare 1.0+
- each byte in the drive handle table contains the directory handle for
- the corresponding drive, or 00h if not mapped to a directory
- SeeAlso: AX=EF01h,AX=EF02h,AX=EF03h,AX=EF04h
- --------N-21EF01-----------------------------
- INT 21 - Novell NetWare - WORKSTATION - GET DRIVE FLAG TABLE
- AX = EF01h
- Return: ES:SI -> network shell's 32-byte drive flag table (see #02091)
- AX = 0000h
- Notes: this function is supported by Advanced NetWare 1.0+
- each byte in the drive flag table corresponds to a drive
- SeeAlso: AX=EF00h,AX=EF02h,AX=EF03h
- (Table 02091)
- Values in NetWare drive flag table:
- 00h drive is not mapped
- 01h permanent network drive
- 02h temporary network drive
- 80h mapped to local drive
- 81h local drive used as permanent network drive
- 82h local drive used as temporary network drive
- --------N-21EF02-----------------------------
- INT 21 - Novell NetWare - WORKSTATION - GET DRIVE CONNECTION ID TABLE
- AX = EF02h
- Return: ES:SI -> network shell's 32-byte drive conection ID table
- AX = 0000h
- Notes: this function is supported by Advanced NetWare 1.0+
- each byte in the connection ID table corresponds to a drive and
- contains either the connection ID (1-8) of the server for that drive
- or 00h if the drive is not mapped to a file server
- SeeAlso: AX=EF01h,AX=EF03h,AX=F002h
- --------N-21EF03-----------------------------
- INT 21 - Novell NetWare - WORKSTATION - GET CONNECTION ID TABLE
- AX = EF03h
- Return: ES:SI -> network shell's connection ID table (see #02092)
- AX = 0000h
- Note: this function is supported by Advanced NetWare 1.0+
- SeeAlso: AX=EF00h,AX=EF02h,AX=EF04h,AX=F002h
- Format of NetWare connection ID table [one entry of eight-element array]:
- Offset Size Description (Table 02092)
- 00h BYTE in-use flag
- E0h AES temporary
- F8h IPX in critical section
- FAh processing
- FBh holding
- FCh AES waiting
- FDh waiting
- FEh receiving
- FFh sending
- 01h BYTE order number assigned to server (1-8)
- 02h DWORD (big-endian) file server's network address
- 06h 6 BYTEs (big-endian) file server's node address
- 0Ch WORD (big-endian) socket number
- 0Eh WORD (big-endian) base receive timeout in clock ticks
- 10h 6 BYTEs (big-endian) preferred routing node
- 16h BYTE packet sequence number
- 17h BYTE connection number (FFh = no connection)
- 18h BYTE connection status (00h if active)
- 19h WORD (big-endian) maximum receive timeout in clock ticks
- 1Bh WORD connection number (if > FAh)
- 1Dh BYTE major version of NetWare
- 1Eh BYTE minor version of NetWare
- 1Fh BYTE server flags
- bit 0: server is burst enabled
- --------N-21EF04-----------------------------
- INT 21 - Novell NetWare - WORKSTATION - GET FILE SERVER NAME TABLE
- AX = EF04h
- Return: ES:SI -> network shell's file server name table (see #02093)
- AX = 0000h
- Note: this function is supported by Advanced NetWare 1.0+
- SeeAlso: AX=EF03h
- Format of file server name table:
- Offset Size Description (Table 02093)
- 00h 48 BYTEs ASCIZ server name for first entry in connection ID table
- 30h 48 BYTEs ASCIZ server name for second entry in connection ID table
- ...
- 150h 48 BYTEs ASCIZ server name for eighth entry in connection ID table
- --------T-21F0-------------------------------
- INT 21 - DoubleDOS - MENU CONTROL
- AH = F0h
- AL = subfunction
- 01h exchange tasks
- 73h resume invisible job if suspended
- 74h kill other job
- 75h suspend invisible job
- Note: identical to AH=E0h
- SeeAlso: AH=E0h"DoubleDOS"
- --------v-21F0-------------------------------
- INT 21 - VIRUS - "Frere Jacques" - INSTALLATION CHECK
- AH = F0h
- Return: AX = 0300h if resident
- SeeAlso: AH=EEh"VIRUS",AX=F078h"VIRUS"
- --------N-21F000-----------------------------
- INT 21 - Novell NetWare - WORKSTATION - SET PREFERRED CONNECTION ID
- AX = F000h
- DL = connection ID of prefered file server (1-8) or 00h for none
- Notes: this function is supported by Advanced NetWare 1.0+
- the preferred connection ID is set to 00h by the shell on EOJ
- SeeAlso: AH=D6h,AX=EF03h,AX=F001h,AX=F002h,AX=F005h
- --------N-21F001-----------------------------
- INT 21 - Novell NetWare - WORKSTATION - GET PREFERRED CONNECTION ID
- AX = F001h
- Return: AL = connection ID of preferred file server (1-8), 00h if not set
- Notes: this function is supported by Advanced NetWare 1.0+
- the preferred connection ID is set to 00h by the shell on EOJ
- SeeAlso: AH=D6h,AX=EF03h,AX=F000h,AX=F002h,AX=F005h
- --------N-21F002-----------------------------
- INT 21 - Novell NetWare - WORKSTATION - GET DEFAULT CONNECTION ID
- AX = F002h
- Return: AL = connection ID of current default file server (1-8) (see AX=EF03h)
- Note: this function is supported by Advanced NetWare 1.0+
- SeeAlso: AX=EF03h,AX=F000h,AX=F004h
- --------N-21F003-----------------------------
- INT 21 - Novell NetWare - PRINT SERVICES - GET LPT CAPTURE STATUS
- AX = F003h
- Return: AH = status
- 00h not active
- FFh active
- AL = connection ID (01h-08h)
- Note: this function is supported by Advanced NetWare 1.0+
- SeeAlso: AX=B800h,AX=B804h,AH=DFh/DL=00h,AH=DFh/DL=04h
- --------N-21F004-----------------------------
- INT 21 - Novell NetWare - WORKSTATION - SET PRIMARY CONNECTION ID
- AX = F004h
- DL = connection ID of primary file server (1-8) or 00h for none
- Note: this function is supported by Advanced NetWare 2.0+
- SeeAlso: AH=D6h,AX=EF03h,AX=F000h,AX=F002h,AX=F005h
- --------N-21F005-----------------------------
- INT 21 - Novell NetWare - WORKSTATION - GET PRIMARY CONNECTION ID
- AX = F005h
- Return: AL = connection ID of primary file server (1-8), 00h if not set
- Notes: this function is supported by Advanced NetWare 2.0+
- by default, the primary file server is the one from which the login
- script executed; it is set to 00h if the workstation is not logged in
- and when it detaches from its primary file server
- SeeAlso: AH=D6h,AX=EF03h,AX=F000h,AX=F002h,AX=F004h
- --------v-21F078-----------------------------
- INT 21 - VIRUS - "Burgler/H" - INSTALLATION CHECK
- AX = F078h
- Return: AX = 0000h if installed
- SeeAlso: AH=F0h"VIRUS",AH=F1h"VIRUS"
- --------N-21F1-------------------------------
- INT 21 - Novell NetWare - CONNECTION SERVICES - FILE SERVER CONNECTION
- AH = F1h
- AL = subfunction
- 00h attach to file server
- DL = preferred file server (01h-08h)
- 01h detach from file server
- DL = connection ID
- 02h logout from file server
- DL = connection ID
- Return: AL = status (see #02094)
- Note: these functions are supported by Advanced NetWare 1.0+
- SeeAlso: AH=D7h"NetWare",AH=E3h/SF=14h
- (Table 02094)
- Values for NetWare function status:
- 00h successful
- F8h already attached to server
- F9h connection table full
- FAh no more server slots
- FCh unknown file server
- FEh server bindery locked
- FFh no response from server, or connection does not exist
- SeeAlso: #02053,#02350
- --------T-21F1-------------------------------
- INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
- AH = F1h
- SeeAlso: AH=E1h"DoubleDOS",AH=F2h"DoubleDOS",AH=F3h"DoubleDOS"
- SeeAlso: AH=F8h"DoubleDOS"
- --------v-21F1-------------------------------
- INT 21 - VIRUS - "F1-337" - ???
- AH = F1h
- ???
- Return: ???
- SeeAlso: AH=F0h"VIRUS",AX=F1E9h
- --------v-21F1E9-----------------------------
- INT 21 - VIRUS - "Tremor" - INSTALLATION CHECK
- AX = F1E9h
- Return: AX = installation state
- CADEh installed, and calling program is infected
- F100h not installed (normal DOS return value)
- else installed, but calling program is not infected
- SeeAlso: AH=F1h"VIRUS",AX=F2AAh
- --------!---Section--------------------------
- Interrupt List, part 10 of 18
- Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
- --------N-21F2-------------------------------
- INT 21 u - Novell NetWare v3.01+ shell interface - MULTIPLEXOR
- AH = F2h
- AL = function (see #02095)
- (subfunction stored in various places in the request packet,
- depending on function number; see individual entries)
- CX = length of request buffer
- DX = length of reply buffer (0000h if no reply packet)
- DS:SI -> request buffer
- ES:DI -> reply buffer (ignored if DX=0000h)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled as appropriate for function
- Note: this is a multiplexor providing a "raw" interface to the underlying
- NetWare Core Protocol. Many functions which were accessed via a
- separate AH function in older versions can also be accessed here,
- but some NetWare 3.x calls appear to be available only here.
- SeeAlso: AX=F244h,AX=F268h/SF=3Dh,#02875
- (Table 02095)
- Values for NetWare Core Protocol functions:
- Fnc/Subfn Description
- 01h File Set Lock
- 02h File Release Lock
- 03h Log File (old) (see AX=F203h)
- 04h Lock File Set (old) (see AX=F204h)
- 05h Release File (see AH=CCh,AH=ECh"NetWare")
- 06h Release File Set (see AH=CDh"NetWare")
- 07h Clear File (see AH=CEh,AX=F207h)
- 08h Clear File Set (see AX=F208h)
- 09h Log Logical Record (old) (see AH=D0h"NetWare")
- 0Ah Lock Logical Record Set (old) (see AX=F20Ah)
- 0Bh Clear Logical Record (see AX=F20Bh)
- 0Ch Release Logical Record (see AH=D2h"NetWare")
- 0Dh Release Logical Record Set (see AH=D3h"NetWare")
- 0Eh Clear Logical Record Set (see AX=F20Eh)
- 0Fh Allocate Resource (see AH=D8h"NetWare")
- 10h Deallocate Resource (see AH=D9h"NetWare")
- 11h/xxh print spooling (see AH=E0h"NetWare")
- 11h/06h Get Printer Status
- 11h/0Ah Get Printer Queue
- 12h Get Volume Info with Number (see AH=DAh"NetWare")
- 13h Get Station Number (see AH=DCh"NetWare")
- 14h Get File Server Date and Time (NW v2.2+) (see AH=E7h"NetWare")
- 15h/01h Get Broadcast Message (old) (see AX=F215h/SF=01h)
- 15h/02h Disable Broadcasts (see AX=F215h/SF=02h)
- 15h/03h Enable Broadcasts (see AX=F215h/SF=03h)
- 15h/08h Check Pipe Status (see AH=E1h/SF=08h,AX=F215h/SF=08h)
- 15h/09h Broadcast to Console (see AH=E1h/SF=09h,AX=F215h/SF=09h)
- 15h/0Bh Get Broadcast Message (see AX=F215h/SF=0Bh)
- 16h/00h Set Directory Handle (see AX=F216h/SF=00h)
- 16h/01h Get Directory Path (see AX=F216h/SF=01h)
- 16h/02h Scan Directory Information (see AX=F216h/SF=02h)
- 16h/03h Get Effective Directory Rights (old) (see AX=F216h/SF=03h)
- 16h/04h Modify Maximum Rights Mask (see AX=F216h/SF=04h)
- 16h/05h Get Volume Number (see AX=F216h/SF=05h)
- 16h/06h Get Volume Name (see AX=F216h/SF=06h)
- 16h/0Ah Create Directory (see AX=F216h/SF=0Ah)
- 16h/0Bh Delete Directory (see AX=F216h/SF=0Bh)
- 16h/0Ch Scan Directory for Trustees (see AX=F216h/SF=0Ch)
- 16h/0Dh Add Trustee to Directory (see AX=F216h/SF=0Dh)
- 16h/0Eh Delete Trustee from Directory (see AX=F216h/SF=0Eh)
- 16h/0Fh Rename Directory (see AX=F216h/SF=0Fh)
- 16h/10h Purge Erased Files (old) (see AX=F216h/SF=10h)
- 16h/11h Recover Erased File (old) (see AX=F216h/SF=11h)
- 16h/12h Alloc Permanent Directory Handle (see AX=F216h/SF=12h)
- 16h/13h Alloc Temporary Directory Handle (see AX=F216h/SF=13h)
- 16h/14h Deallocate Directory Handle (see AX=F216h/SF=14h)
- 16h/15h Get Volume Info with Handle (see AX=F216h/SF=15h)
- 16h/16h Alloc Special Temporary Directory Handle (see AX=F216h/SF=16h)
- 16h/19h Set Directory Information (see AX=F216h/SF=19h)
- 16h/1Ah Get Path Name of Volume-Directory Number Pair (see AX=F216h/SF=1Ah)
- 16h/1Bh Scan Salvageable Files (old) (see AX=F216h/SF=1Bh)
- 16h/1Ch Recover Salvageable File (old) (see AX=F216h/SF=1Ch)
- 16h/1Dh Purge Salvageable File (old) (see AX=F216h/SF=1Dh)
- 16h/1Eh Scan a Directory (see AX=F216h/SF=1Eh)
- 16h/1Fh Get Directory Entry (see AX=F216h/SF=1Fh)
- 16h/20h Scan Volume's User Disk Restrictions (see AX=F216h/SF=20h)
- 16h/21h Add User Disk Space Restriction (see AX=F216h/SF=21h)
- 16h/22h Remove User Disk Space Restrictions (see AX=F216h/SF=22h)
- 16h/23h Scan Directory Space Restrictions (see AX=F216h/SF=23h)
- 16h/24h Set Directory Disk Space Restriction (see AX=F216h/SF=24h)
- 16h/25h Set Directory File Information (see AX=F216h/SF=25h)
- 16h/26h Scan File or Directory For Extended Trustees (see AX=F216h/SF=26h)
- 16h/27h Add Extended Trustee to Directory or File (see AX=F216h/SF=27h)
- 16h/28h Scan Directory Disk Space (see AX=F216h/SF=28h)
- 16h/29h Get Object Disk Usage and Restrictions (see AX=F216h/SF=29h)
- 16h/2Ah Get Effective Rights (see AX=F216h/SF=2Ah)
- 16h/2Bh Remove Extended Trustee from Dir or File (see AX=F216h/SF=2Bh)
- 16h/2Ch Get Volume Usage (see AX=F216h/SF=2Ch)
- 16h/2Dh Get Directory Information (see AX=F216h/SF=2Dh)
- 16h/2Eh Rename or Move (see AX=F216h/SF=2Eh)
- 16h/2Fh Get Name Space Information (see AX=F216h/SF=2Fh)
- 16h/30h Get Name Space Directory Entry (see AX=F216h/SF=30h)
- 16h/31h Open Data Stream (see AX=F216h/SF=31h)
- 16h/32h Get Object Effective Rights (see AX=F216h/SF=32h)
- 16h/33h Get Extended Volume Info (see AX=F216h/SF=33h)
- 17h/01h Change User Password (old) (see AX=F217h/SF=01h)
- 17h/02h Get User Connection List (old) (see AX=F217h/SF=02h)
- 17h/0Ch Verify Serialization (see AX=F217h/SF=0Ch)
- 17h/0Eh Get Disk Utilization (see AX=F217h/SF=0Eh)
- 17h/0Fh Scan File Information (see AX=F217h/SF=0Fh)
- 17h/10h Set File Information (see AX=F217h/SF=10h)
- 17h/11h Get File Server Information (see AX=F217h/SF=11h)
- 17h/12h Get Network Serial Number (see AX=F217h/SF=12h)
- 17h/13h Get Internet Address (old) (see AX=F217h/SF=13h)
- 17h/14h Login Object (see AX=F217h/SF=14h)
- 17h/15h Get Object Connection List (old) (see AX=F217h/SF=15h)
- 17h/16h Get Connection Information (old) (see AX=F217h/SF=1Ch)
- 17h/17h Get Encryption Key (see AX=F217h/SF=17h)
- 17h/18h Login Object Encrypted (see AX=F217h/SF=18h)
- 17h/1Ah Get Internet Address (see AX=F217h/SF=1Ah)
- 17h/1Bh Get Object Connection List (see AX=F217h/SF=1Bh)
- 17h/1Ch Get Connection Information (see AX=F217h/SF=1Ch)
- 17h/1Fh Get Connection List from Object (see AX=F217h/SF=1Fh)
- 17h/32h Create Bindery Object (see AX=F217h/SF=32h)
- 17h/33h Delete Bindery Object (see AX=F217h/SF=33h)
- 17h/34h Rename Bindery Object (see AX=F217h/SF=34h)
- 17h/35h Get Bindery Object ID (see AX=F217h/SF=35h)
- 17h/36h Get Bindery Object Name (see AX=F217h/SF=36h)
- 17h/37h Scan Bindery Object (see AX=F217h/SF=37h)
- 17h/38h Change Bindery Object Security (see AX=F217h/SF=38h)
- 17h/39h Create Property (see AX=F217h/SF=39h)
- 17h/3Ah Delete Property (see AX=F217h/SF=3Ah)
- 17h/3Bh Change Property Security (see AX=F217h/SF=3Bh)
- 17h/3Ch Scan Property (see AX=F217h/SF=3Ch)
- 17h/3Dh Read Property Value (see AX=F217h/SF=3Dh)
- 17h/3Eh Write Property Value (see AX=F217h/SF=3Eh)
- 17h/3Fh Verify Bindery Object Password (see AX=F217h/SF=3Fh)
- 17h/40h Change Bindery Object Password (see AX=F217h/SF=40h)
- 17h/41h Add Bindery Object to Set (see AX=F217h/SF=41h)
- 17h/42h Delete Bindery Object from Set (see AX=F217h/SF=42h)
- 17h/43h Is Bindery Object in Set (see AX=F217h/SF=43h)
- 17h/44h Close Bindery (see AX=F217h/SF=44h)
- 17h/45h Open Bindery (see AX=F217h/SF=45h)
- 17h/46h Get Bindery Access Level (see AX=F217h/SF=46h)
- 17h/47h Scan Bindery Object Trustee Paths (see AX=F217h/SF=47h)
- 17h/48h Get Bindery Object Access Level (see AX=F217h/SF=48h)
- 17h/49h Is Station a Manager? (see AX=F217h/SF=49h)
- 17h/4Ah Keyed Verify Bindery Object Password (see AX=F217h/SF=4Ah)
- 17h/4Bh Keyed Change Bindery Object Password (see AX=F217h/SF=4Bh)
- 17h/4Ch List Relations of an Object (see AX=F217h/SF=4Ch)
- 17h/64h Create Queue (see AX=F217h/SF=64h)
- 17h/65h Destroy Queue (see AX=F217h/SF=65h)
- 17h/66h Read Queue Current Status (old) (see AX=F217h/SF=66h)
- 17h/67h Set Queue Current Status (old) (see AX=F217h/SF=67h)
- 17h/68h Create Queue Job and File (old) (see AX=F217h/SF=68h)
- 17h/69h Close File and Start Queue Job (old) (see AX=F217h/SF=69h)
- 17h/6Ah Remove Job From Queue (old) (see AX=F217h/SF=6Ah)
- 17h/6Bh Get Queue Job List (old) (see AX=F217h/SF=6Bh)
- 17h/6Ch Read Queue Job Entry (old) (see AX=F217h/SF=6Ch)
- 17h/6Dh Change Queue Job Entry (old) (see AX=F217h/SF=6Dh)
- 17h/6Eh Change Queue Job Position (see AX=F217h/SF=6Eh)
- 17h/6Fh Attach Queue Server to Queue (see AX=F217h/SF=6Fh)
- 17h/70h Detach Queue Server from Queue (see AX=F217h/SF=70h)
- 17h/72h Finish Servicing Queue Job (old) (see AX=F217h/SF=72h)
- 17h/74h Change to Client Rights (old) (see AX=F217h/SF=74h)
- 17h/75h Restore Queue Server Rights (see AX=F217h/SF=75h)
- 17h/76h Read Queue Server Current Status (old) (see AX=F217h/SF=76h)
- 17h/77h Set Queue Server Current Status (see AX=F217h/SF=77h)
- 17h/78h Get Queue Job File Size (old) (see AX=F217h/SF=78h)
- 17h/79h Create Queue Job and File (see AX=F217h/SF=79h)
- 17h/7Ah Read Queue Job Entry (see AX=F217h/SF=7Ah)
- 17h/7Bh Change Queue Job Entry (see AX=F217h/SF=7Bh)
- 17h/7Dh Read Queue Current Status (see AX=F217h/SF=7Dh)
- 17h/7Eh Set Queue Current Status (see AX=F217h/SF=7Eh)
- 17h/7Fh Close File and Start Queue Job (see AX=F217h/SF=7Fh)
- 17h/80h Remove Job From Queue (see AX=F217h/SF=80h)
- 17h/81h Get Queue Job List (see AX=F217h/SF=81h)
- 17h/82h Change Job Priority (see AX=F217h/SF=82h)
- 17h/83h Finish Servicing Queue Job (see AX=F217h/SF=83h)
- 17h/85h Change to Client Rights (see AX=F217h/SF=85h)
- 17h/86h Read Queue Server Current Status (see AX=F217h/SF=86h)
- 17h/87h Get Queue Job File Size (see AX=F217h/SF=87h)
- 17h/96h Get Account Status (see AX=F217h/SF=96h)
- 17h/97h Submit Account Charge (see AX=F217h/SF=97h)
- 17h/98h Submit Account Hold (see AX=F217h/SF=98h)
- 17h/99h Submit Account Note (see AX=F217h/SF=99h)
- 17h/C8h Check Console Privileges (see AX=F217h/SF=C8h)
- 17h/C9h Get File Server Description Strings (see AX=F217h/SF=C9h)
- 17h/CAh Set File Server Date and Time (see AX=F217h/SF=CAh)
- 17h/CBh Disable File Server Login (see AX=F217h/SF=CBh)
- 17h/CCh Enable File Server Login (see AX=F217h/SF=CCh)
- 17h/CDh Get File Server Login Status (see AX=F217h/SF=CDh)
- 17h/CEh Purge All Erased Files (see AX=F217h/SF=CEh)
- 17h/CFh Disable Transaction Tracking (see AX=F217h/SF=CFh)
- 17h/D0h Enable Transaction Tracking (see AX=F217h/SF=D0h)
- 17h/D2h Clear Connection Number (Logout Station) (see AX=F217h/SF=D2h)
- 17h/D3h Down File Server (see AX=F217h/SF=D3h)
- 17h/D4h Get File System Statistics (see AX=F217h/SF=D4h)
- 17h/D5h Get Transaction Tracking Statistics (see AX=F217h/SF=D5h)
- 17h/D6h Get Disk Cache Statistics (see AX=F217h/SF=D6h)
- 17h/D7h Get Drive Mapping Table (see AX=F217h/SF=D7h)
- 17h/D8h Get Physical Disk Statistics (see AX=F217h/SF=D8h)
- 17h/D9h Get Disk Channel Statistics (see AX=F217h/SF=D9h)
- 17h/DAh Get Connection's Task Information (NW v2.2) (see AX=F217h/SF=DAh)
- 17h/DBh Get Connection's Open Files (old) (NW v2.2) (see AX=F217h/SF=DBh)
- 17h/DCh Get Connections Using a File (NW v2.2) (see AX=F217h/SF=DCh)
- 17h/DDh Get Physical Record Locks by Connection and File (old)
- 17h/DEh Get Physical Record Locks by File (old) (see AX=F217h/SF=DEh)
- 17h/DFh Get Logical Records by Connection (old) (see AX=F217h/SF=DFh)
- 17h/E0h Get Logical Record Information (old) (see AX=F217h/SF=E0h)
- 17h/E1h Get Connection's Semaphores (old) (see AX=F217h/SF=E1h)
- 17h/E2h Get Semaphore Information (old) (see AX=F217h/SF=E2h)
- 17h/E3h Get LAN Driver's Configuration Information (see AX=F217h/SF=E3h)
- 17h/E5h Get Connection's Usage Statistics (NW v2.2) (see AX=F217h/SF=E5h)
- 17h/E6h Get Object's Remaining Disk Space (see AX=F217h/SF=E6h)
- 17h/E7h Get File Server LAN I/O Statistics (see AX=F217h/SF=E7h)
- 17h/E8h Get File Server Misc Information (see AX=F217h/SF=E8h)
- 17h/E9h Get Volume Information (see AX=F217h/SF=E9h)
- 17h/EAh Get Connection's Task Information (NW v3.11+) (see AX=F217h/SF=EAh)
- 17h/EBh Get Connection's Open Files (NW v3.11+) (see AX=F217h/SF=EBh)
- 17h/ECh Get Connections Using a File (NW v3.11+) (see AX=F217h/SF=ECh)
- 17h/EDh Get Physical Record Locks by Connection and File (see AX=F217h/SF=EDh)
- 17h/EEh Get Physical Record Locks by File (see AX=F217h/SF=EEh)
- 17h/EFh Get Logical Records by Connection (see AX=F217h/SF=EFh)
- 17h/F0h Get Logical Record Information (see AX=F217h/SF=F0h)
- 17h/F1h Get Connection's Semaphores (see AX=F217h/SF=F1h)
- 17h/F2h Get Semaphore Information (see AX=F217h/SF=F2h)
- 17h/F3h Map Directory Number to Path (see AX=F217h/SF=F3h)
- 17h/F4h Convert Path to Directory Entry (see AX=F217h/SF=F4h)
- 17h/F5h Get File Server Extended Misc Information (see AX=F217h/SF=F5h)
- 17h/F6h Get Volume Extended Information (see AX=F217h/SF=F6h)
- 17h/FEh Clear Connection Number Greater than 250 (see AX=F217h/SF=FEh)
- 18h End of Job (see AH=D6h"NetWare")
- 19h Logout (old) (see AH=D7h"NetWare")
- 1Ah Log Physical Record (old) (see AH=BCh"NetWare")
- 1Bh Lock Physical Record Set (old) (see AX=F21Bh)
- 1Ch Release Physical Record (see AH=BDh"NetWare")
- 1Dh Release Physical Record Set (see AH=C3h"NetWare")
- 1Eh Clear Physical Record (see AX=F21Eh)
- 1Fh Clear Physical Record Set (see AX=F21Fh)
- 20h/xxh semaphore services (see AX=C501h"NetWare")
- 20h/00h Open Semaphore (old) (see AX=C500h"NetWare")
- 20h/01h Examine Semaphore (old) (see AX=C501h"NetWare")
- 20h/02h Wait on Semaphore (old) (see AX=C502h"NetWare")
- 20h/03h Signal Semaphore (old) (see AX=C503h"NetWare")
- 20h/04h Close Semaphore (old) (see AX=C504h"NetWare")
- 21h Negotiate Buffer Size
- 22h/00h TTS Is Available (see AX=C702h"NetWare")
- 22h/01h TTS Begin Transaction (see AX=C700h"NetWare")
- 22h/02h TTS End Transaction (see AX=C701h"NetWare")
- 22h/03h TTS Abort Transaction (see AX=C703h"NetWare")
- 22h/04h TTS Transaction Status (see AX=C704h"NetWare")
- 22h/05h TTS Get Application Thresholds (see AX=C705h"NetWare")
- 22h/06h TTS Set Application Thresholds (see AX=C706h"NetWare")
- 22h/07h TTS Get Workstation Thresholds (see AX=C707h"NetWare")
- 22h/08h TTS Set Workstation Thresholds (see AX=C708h"NetWare")
- 22h/09h TTS Get Control Flags
- 22h/0Ah TTS Set Control Flags
- 23h/01h AFP Create Directory (see AX=F223h/SF=01h)
- 23h/02h AFP Create File (see AX=F223h/SF=02h)
- 23h/03h AFP Delete (see AX=F223h/SF=03h)
- 23h/04h AFP Get Entry ID From Name (see AX=F223h/SF=04h)
- 23h/05h AFP Get File Information (see AX=F223h/SF=05h)
- 23h/06h AFP Get Entry ID From NetWare Handle (see AX=F223h/SF=06h)
- 23h/07h AFP Rename (see AX=F223h/SF=07h)
- 23h/08h AFP Open File Fork (see AX=F223h/SF=08h)
- 23h/09h AFP Set File Information (see AX=F223h/SF=09h)
- 23h/0Ah AFP Scan File Information (see AX=F223h/SF=0Ah)
- 23h/0Bh AFP Alloc Temporary Dir Handle (see AX=F223h/SF=0Bh)
- 23h/0Ch AFP Get Entry ID From Path Name (see AX=F223h/SF=0Ch)
- 23h/0Dh AFP 2.0 Create Directory (see AX=F223h/SF=0Dh)
- 23h/0Eh AFP 2.0 Create File (see AX=F223h/SF=0Eh)
- 23h/10h AFP 2.0 Set File Information (see AX=F223h/SF=10h)
- 23h/11h AFP 2.0 Scan File Information (see AX=F223h/SF=11h)
- 23h/12h AFP Get DOS Name from Entry ID (see AX=F223h/SF=12h)
- 23h/13h AFP Get Macintosh Info on Deleted File (see AX=F223h/SF=13h)
- 3Dh Commit File
- 3Eh File Search Initialize (FindFirst) (see AX=F23Eh)
- 3Fh File Search Continue (FindNext) (see AX=F23Fh)
- 40h Search File
- 42h Close File (see AX=F242h)
- 43h File Create (see AX=F243h)
- 44h File Erase (see AX=F244h)
- 45h File Rename
- 46h Set File Attributes
- 47h Get File Size (see AX=F247h)
- 48h File Read
- 49h File Write
- 4Ah File Server Copy (see AX=F24Ah)
- 4Bh Set File Time and Date
- 4Ch File Open
- 4Dh Create New File (see AX=F24Dh)
- 4Eh Allow Task Access to File (see AX=F24Eh)
- 4Fh Set Extended File Attributes (see AH=B6h"NetWare")
- 54h Open Create File (see also AX=6C00h)
- 55h Get Sparse File Data Block Bit Map
- 56h/xx extended attribute services (OS/2)
- 56h/01h Close Extended Attribute Handle (see AX=F256h/SF=01h)
- 56h/02h Write Extended Attribute (see AX=F256h/SF=02h)
- 56h/03h Read Extended Attribute (see AX=F256h/SF=03h)
- 56h/04h Enumerate Extended Attributes (see AX=F256h/SF=04h)
- 56h/05h Duplicate Extended Attributes (see AX=F256h/SF=05h)
- 57h/01h Open/Create File or Subdirectory (see AX=F257h/SF=01h)
- 57h/02h Initialize Search, continue with 57h/03h (see AX=F257h/SF=02h)
- 57h/03h Scan NS Entry Info (see AX=F257h/SF=03h)
- 57h/04h Rename or Move File or Subdirectory (see AX=F257h/SF=04h)
- 57h/05h Scan File or Subdirectory for Trustees (see AX=F257h/SF=05h)
- 57h/06h Obtain File or Subdirectory Information (see AX=F257h/SF=06h)
- 57h/07h Modify File or Subdirectory DOS Information (see AX=F257h/SF=07h)
- 57h/08h Delete File/Directory (see AX=F257h/SF=08h)
- 57h/09h Set Short Directory Handle (see AX=F257h/SF=09h)
- 57h/0Ah Add Trustee Set (see AX=F257h/SF=0Ah)
- 57h/0Bh Delete Trustee (see AX=F257h/SF=0Bh)
- 57h/0Ch Allocate Short Directory Handle (see AX=F257h/SF=0Ch)
- 57h/10h Scan Salvageable Files (see AX=F257h/SF=10h)
- 57h/11h Recover Salvageable File (see AX=F257h/SF=11h)
- 57h/12h Purge Salvageable File (see AX=F257h/SF=12h)
- 57h/13h Get NS Information (see AX=F257h/SF=13h)
- 57h/15h Get Path String from Short Directory Handle (see AX=F257h/SF=15h)
- 57h/16h Generate Directory Base and Volume Number (see AX=F257h/SF=16h)
- 57h/17h Get Name Space Info (see AX=F257h/SF=17h)
- 57h/18h Get Name Spaces Loaded (see AX=F257h/SF=18h)
- 57h/19h Write Name Space Info (see AX=F257h/SF=19h)
- 57h/1Ah Read Extended Name Space Info (see AX=F257h/SF=1Ah)
- 57h/1Bh Write Extended Name Space Info (see AX=F257h/SF=1Bh)
- 57h/1Ch Get NS Full Path String (see AX=F257h/SF=1Ch)
- 57h/1Dh Get Effective Directory Rights (see AX=F257h/SF=1Dh)
- 58h/01h Get Volume Audit Statistics (see AX=F258h/SF=01h)
- 58h/02h Add Audit Property (see AX=F258h/SF=02h)
- 58h/03h Login as Volume Auditor (see AX=F258h/SF=03h)
- 58h/04h Change Auditor Password (see AX=F258h/SF=04h)
- 58h/05h Check Audit Access (see AX=F258h/SF=05h)
- 58h/06h Remove Audit Property (see AX=F258h/SF=06h)
- 58h/07h Disable Auditing on Volume (see AX=F258h/SF=07h)
- 58h/08h Enable Auditing on Volume (see AX=F258h/SF=08h)
- 58h/09h Is User Audited? (see AX=F258h/SF=09h)
- 58h/0Ah Read Auditing Bit Map (see AX=F258h/SF=0Ah)
- 58h/0Bh Read Audit Config Header (see AX=F258h/SF=0Bh)
- 58h/0Dh Logout as Volume Auditor (see AX=F258h/SF=0Dh)
- 58h/0Eh Reset Auditing File (see AX=F258h/SF=0Eh)
- 58h/0Fh Reset Audit History File (see AX=F258h/SF=0Fh)
- 58h/10h Write Auditing Bit Map (see AX=F258h/SF=10h)
- 58h/11h Write Audit Config Header (see AX=F258h/SF=11h)
- 58h/13h Get Auditing Flags (see AX=F258h/SF=13h)
- 58h/14h Close Old Auditing File (see AX=F258h/SF=14h)
- 58h/15h Delete Old Auditing File (see AX=F258h/SF=15h)
- 58h/16h Check Audit Level Two Access (see AX=F258h/SF=16h)
- 5Ah/01h Get DM (Data Migration) Info (see AX=F25Ah/SF=01h)
- 5Ah/80h Move File Data to DM (see AX=F25Ah/SF=80h)
- 5Ah/81h DM File Information (see AX=F25Ah/SF=81h)
- 5Ah/82h Volume DM Status (see AX=F25Ah/SF=82h)
- 5Ah/83h Get Migration or Status Information (see AX=F25Ah/SF=83h)
- 5Ah/84h DM Support Module Information (see AX=F25Ah/SF=84h)
- 5Ah/85h Move File Data from DM (see AX=F25Ah/SF=85h)
- 5Ah/86h Get or Set Default Support Module (see AX=F25Ah/SF=86h)
- 61h Negotiate LIP Buffer, packet signing, and IPX checksums
- 65h Packet Burst Connection
- 68h/xxh NetWare 4.x directory services (subfn at DS:[SI+11h])
- 68h/01h NDS resolve name (see AX=F268h/SF=01h)
- 68h/03h NDS read property
- 68h/04h NDS Get Bindery Context (see AX=F268h/SF=04h)
- 68h/05h NDS Monitor Connection (see AX=F268h/SF=05h)
- 68h/16h NDS List Partitions (see AX=F268h/SF=16h)
- 68h/35h NDS get server address (see AX=F268h/SF=35h)
- 68h/36h NDS set keys
- 68h/39h NDS begin login
- 68h/3Ah NDS finish login
- 68h/3Bh NDS begin authenticate
- 68h/3Ch NDS finish authenticate
- 68h/3Dh NDS Logout (see AX=F268h/SF=3Dh)
- 68h/C8h Get DS Auditing Statistics (see AX=F268h/SF=C8h)
- 69h Log File (see AX=F269h)
- 6Ah Lock File Set (see AX=F26Ah)
- 6Bh Log Logical Record !!!APIREF09 line 1430
- 6Ch Lock Logical Record Set (see AX=F26Ch)
- 6Dh Log Physical Record
- 6Eh Lock Physical Record Set (see AX=F26Eh)
- 6Fh/00h Open Semaphore (see AX=F26Fh/SF=00h)
- 6Fh/01h Close Semaphore (see AX=F26Fh/SF=01h)
- 6Fh/02h Wait on Semaphore (see AX=F26Fh/SF=02h)
- 6Fh/03h Signal Semaphore (see AX=F26Fh/SF=03h)
- 6Fh/04h Examine Semaphore (see AX=F26Fh/SF=04h)
- 72h NetWare 4.x Time Services (see AX=F272h)
- 7Bh/01h Get Cache Information (see AX=F27Bh/SF=01h)
- 7Bh/02h Get File Server Information (see AX=F27Bh/SF=02h)
- 7Bh/03h Get NetWare File Systems Information
- 7Bh/04h Get User Information (see AX=F27Bh/SF=04h)
- 7Bh/05h Get Packet Burst Information
- 7Bh/06h Get IPX/SPX Information (see AX=F27Bh/SF=06h)
- 7Bh/07h Get Garbage Collection Information
- 7Bh/08h Get CPU Information (see AX=F27Bh/SF=08h)
- 7Bh/09h Get Volume Switch Information (see AX=F27Bh/SF=09h)
- 7Bh/0Ah Get NLM Loaded List (see AX=F27Bh/SF=0Ah)
- 7Bh/0Bh Get NLM Information (see AX=F27Bh/SF=0Bh)
- 7Bh/0Ch Get Directory Cache Information
- 7Bh/0Dh Get OS Version Information (see AX=F27Bh/SF=0Dh)
- 7Bh/0Eh Get Active Connection List by Type
- 7Bh/0Fh Get NLM's Resource Tag List
- 7Bh/14h Get Active LAN Board List (see AX=F27Bh/SF=14h)
- 7Bh/15h Get LAN Configuration Information (see AX=F27Bh/SF=15h)
- 7Bh/16h Get LAN Common Counters Information (see AX=F27Bh/SF=16h)
- 7Bh/17h Get LAN Custom Counters Information
- 7Bh/18h Get LAN Config Strings
- 7Bh/19h Get LSL Information
- 7Bh/1Ah Get LSL Logical Board Statistics
- 7Bh/1Eh Get Media Manager Object Information
- 7Bh/1Fh Get Media Manager Object List
- 7Bh/20h Get Media Manager Object Children List
- 7Bh/21h Get Volume Segment List
- 7Bh/28h Get Active Protocol Stacks
- 7Bh/29h Get Protocol Stack Configuration Information (see AX=F27Bh/SF=29h)
- 7Bh/2Ah Get Protocol Stack Statistics Information
- 7Bh/2Bh Get Protocol Stack Custom Information
- 7Bh/2Ch Get Protocol Stack Numbers By Media Number
- 7Bh/2Dh Get Protocol Stack Numbers By LAN Board Number
- 7Bh/2Eh Get Media Name by Media Number
- 7Bh/2Fh Get Loaded Media Number List
- 7Bh/32h Get General Router and SAP Information
- 7Bh/33h Get Network Router Information (see AX=F27Bh/SF=33h)
- 7Bh/34h Get Network Routers Information
- 7Bh/35h Get Known Networks Information (see AX=F27Bh/SF=35h)
- 7Bh/36h Get Server Information
- 7Bh/38h Get Known Servers Information (see AX=F27Bh/SF=38h)
- 7Bh/3Ch Get Server Set Commands Information (see AX=F27Bh/SF=3Ch)
- 7Bh/3Dh Get Server Set Categories (see AX=F27Bh/SF=3Dh)
- Note: the subfunction is stored at DS:SI for AL=56h,57h, DS:SI+2 for
- AL=15h-17h,23h
- --------T-21F2-------------------------------
- INT 21 - DoubleDOS - SEND CHARACTER TO KEYBOARD BUFFER OF OTHER JOB
- AH = F2h
- AL = character
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- 00h successful
- 01h buffer full (128 characters)
- SeeAlso: AH=E2h"DoubleDOS",AH=F1h"DoubleDOS",AH=F3h"DoubleDOS"
- SeeAlso: AH=F8h"DoubleDOS"
- --------N-21F203-----------------------------
- INT 21 - Novell NetWare - LOG FILE (OLD)
- AX = F203h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02477 at AX=F269h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F204h,AX=F269h,AH=EBh"NetWare"
- --------N-21F204-----------------------------
- INT 21 - Novell NetWare - LOCK FILE SET (OLD)
- AX = F204h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02096)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F203h,AX=F26Ah,AH=CBh"NetWare"
- Format of NetWare "Lock File Set (old)" request packet:
- Offset Size Description (Table 02096)
- 00h WORD lock timeout in clock ticks (0000h = don't wait)
- --------N-21F207-----------------------------
- INT 21 - Novell NetWare - CLEAR FILE
- AX = F207h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02097)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=CEh,AH=EDh"NetWare",AH=F2h"NetWare",AX=F208h
- Format of NetWare "Clear File" request packet:
- Offset Size Description (Table 02097)
- 00h BYTE directory handle
- 01h BYTE length of filename
- 02h N BYTEs filename
- SeeAlso: #02098
- --------N-21F208-----------------------------
- INT 21 - Novell NetWare - CLEAR FILE SET
- AX = F208h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02098)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=CFh"NetWare",AH=F2h"NetWare",AX=F207h
- Format of NetWare "Clear File Set" request packet:
- Offset Size Description (Table 02098)
- 00h BYTE lock flag (nonzero to lock)
- SeeAlso: #02097
- --------N-21F20A-----------------------------
- INT 21 - Novell NetWare - LOCK LOGICAL RECORD SET (OLD)
- AX = F20Ah
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02479 at AX=F26Ch)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F204h,AX=F26Ch,AH=D1h"NetWare"
- --------N-21F20B-----------------------------
- INT 21 - Novell NetWare - CLEAR LOGICAL RECORD
- AX = F20Bh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02099)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=D4h"NetWare",AH=F2h"NetWare",AX=F207h,AX=F20Eh
- Format of NetWare "Clear Logical Record" request packet:
- Offset Size Description (Table 02099)
- 00h BYTE length of record name (max 128)
- 01h N BYTEs logical record name
- SeeAlso: #02100
- --------N-21F20E-----------------------------
- INT 21 - Novell NetWare - CLEAR LOGICAL RECORD SET
- AX = F20Eh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02100)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=D5h"NetWare",AH=F2h"NetWare",AX=F207h,AX=F20Bh
- Format of NetWare "Clear Logical Record Set" request packet:
- Offset Size Description (Table 02100)
- 00h BYTE lock flag
- SeeAlso: #02099
- --------N-21F211SF06-------------------------
- INT 21 - Novell NetWare - GET PRINTER STATUS
- AX = F211h subfn 06h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02101)
- ES:DI -> reply buffer (see #02102)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=E0h"NetWare",AH=F2h"Novell",AX=F211h/SF=0Ah
- Format of NetWare "Get Printer Status" request packet:
- Offset Size Description (Table 02101)
- 00h WORD length of following data
- 02h BYTE 06h (subfunction "Get Printer Status")
- 03h BYTE target printer number (00h-04h)
- SeeAlso: #02102,#01814
- Format of NetWare "Get Printer Status" reply packet:
- Offset Size Description (Table 02102)
- 00h BYTE flag: printer halted if FFh
- 01h BYTE flag: printer off-line if FFh
- 02h BYTE current form type
- 03h BYTE redirected printer number
- SeeAlso: #02101
- --------N-21F211SF0A-------------------------
- INT 21 - Novell NetWare - GET PRINTER QUEUE
- AX = F211h subfn 0Ah
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02103)
- ES:DI -> reply buffer
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F211h/SF=06h
- Format of NetWare "Get Printer Queue" request packet:
- Offset Size Description (Table 02103)
- 00h WORD length of following data
- 02h BYTE 0Ah (subfunction "Get Printer Queue")
- ???
- --------N-21F212-----------------------------
- INT 21 - Novell NetWare - GET VOLUME INFO WITH NUMBER
- AX = F212h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02104)
- ES:DI -> reply buffer (see #02105)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F216h/SF=15h,AX=F217h/SF=E9h
- Format of NetWare "Get Volume Info with Number" request packet:
- Offset Size Description (Table 02104)
- 00h BYTE volume number
- SeeAlso: #02105
- Format of NetWare "Get Volume Info with Number" reply packet:
- Offset Size Description (Table 02105)
- 00h WORD sectors per cluster
- 02h WORD total clusters in volume
- 04h WORD free clusters
- 06h WORD total directory entries for volume (FFFFh if not relevant)
- 08h WORD available directory entries (FFFFh if not relevant)
- 0Ah 16 BYTEs volume name
- 1Ah WORD removability
- 0000h fixed media
- FFFFh removable
- SeeAlso: #02104
- --------N-21F214CX0000-----------------------
- INT 21 - Novell NetWare - GET FILE SERVER DATE AND TIME
- AX = F214h
- CX = 0000h (no request packet)
- DX = length of reply packet in bytes
- ES:DI -> buffer for reply packet (see #02106)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"NetWare",AH=E3h/SF=CAh,AH=E7h"NetWare"
- Format of NetWare "Get File Server Date and Time" reply packet:
- Offset Size Description (Table 02106)
- 00h BYTE year-1900 (80-179)
- 01h BYTE month (1-12)
- 02h BYTE day (1-31)
- 03h BYTE hour
- 04h BYTE minute
- 05h BYTE second
- 06h BYTE day of week
- SeeAlso: #02012 at AH=E3h/SF=CAh,#02087 at AH=E7h
- --------N-21F215SF01-------------------------
- INT 21 - Novell NetWare - GET BROADCAST MESSAGE (OLD)
- AX = F215h subfn 01h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #01822 at AH=E1h/SF=01h)
- ES:DI -> reply buffer (see #02107)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E1h/SF=01h,AX=F215h/SF=02h,AX=F215h/SF=0Bh
- Format of NetWare "Get Broadcast Message (Old)" reply packet:
- Offset Size Description (Table 02107)
- 00h BYTE length of message (00h-37h)
- 00h if no broadcast messages pending
- 01h N BYTEs message (no control characters or characters > 7Eh)
- SeeAlso: #01821,#01822
- --------N-21F215SF02-------------------------
- INT 21 - Novell NetWare - DISABLE BROADCASTS
- AX = F215h subfn 02h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01823 at AH=E1h/SF=02h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E1h/SF=02h,AX=F215h/SF=01h,AX=F215h/SF=03h
- --------N-21F215SF03-------------------------
- INT 21 - Novell NetWare - ENABLE BROADCASTS
- AX = F215h subfn 03h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01824 at AH=E1h/SF=03h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E1h/SF=03h,AX=F215h/SF=01h,AX=F215h/SF=02h
- --------N-21F215SF08-------------------------
- INT 21 - Novell NetWare - CHECK PIPE STATUS
- AX = F215h subfn 08h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #01835 at AH=E1h/SF=08h)
- ES:DI -> reply buffer (see #02108)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E1h/SF=08h,AX=F215h/SF=09h
- Format of NetWare "Check Pipe Status" reply packet:
- Offset Size Description (Table 02108)
- 00h BYTE number of connections
- 01h N BYTEs list of pipe statuses
- 00h open
- FEh incomplete
- FFh closed
- SeeAlso: #01835,#01836
- --------N-21F215SF09-------------------------
- INT 21 - Novell NetWare - BROADCAST TO CONSOLE
- AX = F215h subfn 09h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01837 at AH=E1h/SF=09h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- Note: requires Access Control rights to the target directory or its parent
- SeeAlso: AH=E1h/SF=09h,AH=F2h"NetWare",AX=F215h/SF=08h
- --------N-21F215SF0B-------------------------
- INT 21 - Novell NetWare - GET BROADCAST MESSAGE
- AX = F215h subfn 0Bh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02109)
- ES:DI -> reply buffer (see #02110)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E1h/SF=01h,AX=F215h/SF=01h
- Format of NetWare "Get Broadcast Message" request packet:
- Offset Size Description (Table 02109)
- 00h WORD length of following data
- 02h BYTE 0Bh (subfunction "Get Broadcast Message")
- SeeAlso: #02110,#01821
- Format of NetWare "Get Broadcast Message" reply packet:
- Offset Size Description (Table 02110)
- 00h BYTE length of message
- 01h N BYTEs message
- SeeAlso: #02109,#01822
- --------N-21F216SF00-------------------------
- INT 21 - Novell NetWare - SET DIRECTORY HANDLE
- AX = F216h subfn 00h
- CX = length of request buffer in bytes
- DX = 0000h (no reply buffer)
- DS:SI -> request buffer (see #01840 at AH=E2h/SF=00h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E2h/SF=00h,AX=F216h/SF=01h
- --------N-21F216SF01-------------------------
- INT 21 - Novell NetWare - GET DIRECTORY PATH
- AX = F216h subfn 01h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #01842 at AH=E2h/SF=01h)
- ES:DI -> reply buffer (see #01843)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E2h/SF=01h,AX=F216h/SF=00h
- --------N-21F216SF02-------------------------
- INT 21 - Novell NetWare - SCAN DIRECTORY INFORMATION
- AX = F216h subfn 02h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #01844 at AH=E2h/SF=02h)
- ES:DI -> reply buffer (see #02111)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E2h/SF=02h,AX=F216h/SF=01h,AX=F216h/SF=03h
- Format of NetWare "Scan Directory Information" reply packet:
- Offset Size Description (Table 02111)
- 00h 16 BYTEs subdirectory name
- 10h DWORD (big-endian) date and time of creation (see #01846)
- 14h DWORD (big-endian) object ID of owner
- 18h BYTE maximum directory rights (see #01849)
- 19h BYTE unused
- 1Ah WORD (big-endian) subdirectory number
- SeeAlso: #01844,#01845 at AH=E2h/SF=02h
- --------N-21F216SF03-------------------------
- INT 21 - Novell NetWare - GET EFFECTIVE DIRECTORY RIGHTS (OLD)
- AX = F216h subfn 03h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #01847 at AH=E2h/SF=03h)
- ES:DI -> reply buffer (see #02112)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=E2h/SF=03h,AX=F216h/SF=02h,AX=F216h/SF=04h,AX=F257h/SF=1Dh
- Format of NetWare "Get Effective Directory Rights (old)" reply buffer:
- Offset Size Description (Table 02112)
- 00h BYTE effective directory rights (see #01849 at AH=E2h/SF=03h)
- SeeAlso: #01847,#01848 at AH=E2h/SF=03h
- --------N-21F216SF04-------------------------
- INT 21 - Novell NetWare - MODIFY MAXIMUM RIGHTS MASK
- AX = F216h subfn 04h
- CX = length of request buffer in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01850 at AH=E2h/SF=04h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E2h/SF=04h,AX=F216h/SF=03h,AX=F216h/SF=05h
- --------N-21F216SF05-------------------------
- INT 21 - Novell NetWare - GET VOLUME NUMBER
- AX = F216h subfn 05h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #01852 at AH=E2h/SF=05h)
- ES:DI -> reply buffer (see #02113)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E2h/SF=05h,AX=F216h/SF=02h,AX=F216h/SF=06h
- Format of NetWare "Get Volume Number" reply packet:
- Offset Size Description (Table 02113)
- 00h BYTE volume number
- SeeAlso: #01852 at AH=E2h/SF=05h
- --------N-21F216SF06-------------------------
- INT 21 - Novell NetWare - GET VOLUME NAME
- AX = F216h subfn 06h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #01854 at AH=E2h/SF=06h)
- ES:DI -> reply buffer (see #02114)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E2h/SF=06h,AX=F216h/SF=05h,AX=F216h/SF=0Ah
- Format of NetWare "Get Volume Name" reply packet:
- Offset Size Description (Table 02114)
- SeeAlso: #01854,#01855 at AH=E2h/SF=06h
- --------N-21F216SF0A-------------------------
- INT 21 - Novell NetWare - CREATE DIRECTORY
- AX = F216h subfn 0Ah
- CX = length of request buffer in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01856 at AH=E2h/SF=0Ah)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=39h,AH=F2h"Novell",AH=E2h/SF=0Ah,AX=F216h/SF=0Bh
- --------N-21F216SF0B-------------------------
- INT 21 - Novell NetWare - DELETE DIRECTORY
- AX = F216h subfn 0Bh
- CX = length of request buffer in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01858 at AH=E2h/SF=0Bh)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=3Ah,AH=F2h"Novell",AH=E2h/SF=0Bh,AX=F216h/SF=0Ah
- --------N-21F216SF0C-------------------------
- INT 21 - Novell NetWare - SCAN DIRECTORY FOR TRUSTEES
- AX = F216h subfn 0Ch
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #01859 at AH=E2h/SF=0Ch)
- ES:DI -> reply buffer (see #02115)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E2h/SF=0Ch,AX=F216h/SF=0Dh
- Format of NetWare "Scan Directory For Trustees" reply packet:
- Offset Size Description (Table 02115)
- 02h 16 BYTEs directory name
- 12h 4 BYTEs date and time of creation
- 16h DWORD (big-endian) object ID of owner
- 1Ah 5 DWORDs (big-endian) object IDs of Trustees 0 through 4
- 00000000h = end of group
- 2Eh 5 BYTEs directory rights for Trustees 0 through 4 (see #01849)
- SeeAlso: #01859 at AH=E2h/SF=0Ch
- --------N-21F216SF0D-------------------------
- INT 21 - Novell NetWare - ADD TRUSTEE TO DIRECTORY
- AX = F216h subfn 0Dh
- CX = length of request buffer in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01861 at AH=E2h/SF=0Dh)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- Note: requires Access Control rights to the target directory or its parent
- SeeAlso: AH=F2h"NetWare",AH=E2h/SF=0Dh,AX=F216h/SF=0Ch,AX=F216h/SF=0Eh
- --------N-21F216SF0E-------------------------
- INT 21 - Novell NetWare - DELETE TRUSTEE FROM DIRECTORY
- AX = F216h subfn 0Eh
- CX = length of request buffer in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01862 at AH=E2h/SF=0Eh)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E2h/SF=0Eh,AX=F216h/SF=0Ch,AX=F216h/SF=0Dh
- --------N-21F216SF0F-------------------------
- INT 21 - Novell NetWare - RENAME DIRECTORY
- AX = F216h subfn 0Fh
- CX = length of request buffer in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01864 at AH=E2h/SF=0Fh)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E2h/SF=0Fh,AX=F216h/SF=0Ah
- --------N-21F216SF10-------------------------
- INT 21 - Novell NetWare - PURGE ERASED FILES (OLD)
- AX = F216h subfn 10h
- CX = length of request buffer in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01865 at AH=E2h/SF=10h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E2h/SF=10h,AX=F216h/SF=11h
- --------N-21F216SF11-------------------------
- INT 21 - Novell NetWare - RECOVER ERASED FILE (OLD)
- AX = F216h subfn 11h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01867 at AH=E2h/SF=11h)
- ES:DI -> reply buffer (see #02116)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E2h/SF=11h,AX=F216h/SF=10h
- Format of NetWare "Recover Erased File (Old)" reply packet:
- Offset Size Description (Table 02116)
- 02h 15 BYTEs ASCIZ name of erased file
- 11h 15 BYTEs ASCIZ name under which file was restored
- SeeAlso: #01867,#01868 at AH=E2h/SF=11h
- --------N-21F216SF12-------------------------
- INT 21 - Novell NetWare - ALLOCATE PERMANENT DIRECTORY HANDLE
- AX = F216h subfn 12h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01869 at AH=E2h/SF=12h)
- ES:DI -> reply buffer (see #02118)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F216h/SF=16h,AH=E2h/SF=12h
- Format of NetWare IPX fragment list entry:
- Offset Size Description (Table 02117)
- 00h DWORD -> fragment data
- 04h WORD size of fragment in bytes
- Format of NetWare "Allocate Permanent Directory Handle" reply packet:
- Offset Size Description (Table 02118)
- 00h BYTE new directory handle
- 01h BYTE access rights
- SeeAlso: #01869,#01873,#02117
- --------N-21F216SF13-------------------------
- INT 21 - Novell NetWare - ALLOCATE TEMPORARY DIRECTORY HANDLE
- AX = F216h subfn 13h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01871 at AH=E2h/SF=13h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F216h/SF=12h,AX=F216h/SF=16h,AH=E2h/SF=13h
- --------N-21F216SF14-------------------------
- INT 21 - Novell NetWare - DEALLOCATE DIRECTORY HANDLE
- AX = F216h subfn 14h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01872 at AH=E2h/SF=14h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E2h/SF=14h,AX=F216h/SF=13h,AX=F216h/SF=16h
- --------N-21F216SF15-------------------------
- INT 21 - Novell NetWare - GET VOLUME INFO WITH HANDLE
- AX = F216h subfn 15h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01874 at AH=E2h/SF=15h)
- ES:DI -> reply buffer (see #02119)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E2h/SF=15h,AX=F212h,AX=F216h/SF=13h
- Format of NetWare "Get Volume Info With Handle" reply packet:
- Offset Size Description (Table 02119)
- 00h WORD (big-endian) sectors per block
- 02h WORD (big-endian) total blocks on volume
- 04h WORD (big-endian) blocks available on volume
- 06h WORD (big-endian) total directory slots
- 08h WORD (big-endian) directory slots available
- 0Ah 16 BYTEs NUL-padded volume name
- 1Ah WORD (big-endian) flag: volume removable if nonzero
- SeeAlso: #01874 at AH=E2h/SF=15h
- --------N-21F216SF16-------------------------
- INT 21 - Novell NetWare v2+ - ALLOCATE SPECIAL TEMPORARY DIRECTORY HANDLE
- AX = F216h subfn 16h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01876 at AH=E2h/SF=16h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F216h/SF=12h,AX=F216h/SF=13h,AH=E2h/SF=16h
- --------N-21F216SF17-------------------------
- INT 21 - Novell NetWare - SAVE DIRECTORY HANDLE
- AX = F216h subfn 17h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01877 at AH=E2h/SF=17h)
- ES:DI -> reply buffer (see #02120)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E2h/SF=17h,AX=F216h/SF=18h
- Format of NetWare "Save Directory Handle" reply packet:
- Offset Size Description (Table 02120)
- 00h 16 BYTEs save buffer
- SeeAlso: #01877,#01878,#02121
- --------N-21F216SF18-------------------------
- INT 21 - Novell NetWare - RESTORE DIRECTORY HANDLE
- AX = F216h subfn 18h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01879 at AH=E2h/SF=18h)
- ES:DI -> reply buffer (see #02121)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E2h/SF=18h,AX=F216h/SF=17h
- Format of NetWare "Restore Directory Handle" reply packet:
- Offset Size Description (Table 02121)
- 00h BYTE new directory handle
- 01h BYTE effective rights (see #01849)
- SeeAlso: #01880,#02120
- --------N-21F216SF19-------------------------
- INT 21 - Novell NetWare - SET DIRECTORY INFORMATION
- AX = F216h subfn 19h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01881 at AH=E2h/SF=19h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E2h/SF=19h,AX=F216h/SF=17h
- --------N-21F216SF1A-------------------------
- INT 21 - Novell NetWare - GET PATH NAME OF VOLUME-DIRECTORY NUMBER PAIR
- AX = F216h subfn 1Ah
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01883 at AH=E2h/SF=1Ah)
- ES:DI -> reply buffer (see #02122)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E2h/SF=1Ah,AX=F216h/SF=0Eh
- Format of NetWare "Get Path Name Of Volume-Dir Number Pair" reply packet:
- Offset Size Description (Table 02122)
- 00h 256 BYTEs path
- SeeAlso: #01883,#01884 at AH=E2h/SF=1Ah
- --------N-21F216SF1B-------------------------
- INT 21 - Novell NetWare - SCAN SALVAGEABLE FILES (OLD)
- AX = F216h subfn 1Bh
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02123)
- ES:DI -> reply buffer (see #02124)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F216h/SF=1Ch,AX=F216h/SF=1Dh,AX=F257h/SF=10h
- Format of NetWare "Scan Salvageable Files (Old)" request packet:
- Offset Size Description (Table 02123)
- 00h WORD length of following data
- 02h BYTE 1Bh (subfunction "Scan Salvageable Files (Old)")
- 03h BYTE directory handle
- 04h DWORD last sequence number (set to FFFFFFFFh before first call)
- SeeAlso: #02124,#02399
- Format of NetWare "Scan Salvageable Files (Old)" reply packet:
- Offset Size Description (Table 02124)
- 00h DWORD next sequence number
- 04h WORD subdirectory
- 06h DWORD attributes
- 0Ah BYTE unique ID
- 0Bh BYTE flags
- 0Ch BYTE name space
- 0Dh BYTE length of filename
- 0Eh 14 BYTEs filename
- 1Ah DWORD creation date and time
- 1Eh DWORD owner ID
- 22h DWORD last-backup date and time
- 26h DWORD last-backup ID
- 2Ah DWORD last-modified date and time
- 2Eh WORD ???
- 30h DWORD last-modified ID
- 34h DWORD file size
- 38h 44 BYTEs reserved
- 62h WORD inherited rights mask
- 64h WORD last-access date
- 66h DWORD deleted file's time
- 6Ah DWORD deletion date and time
- 6Eh DWORD ID of deletor
- 72h 16 BYTEs reserved
- SeeAlso: #02123,#02400
- --------N-21F216SF1C-------------------------
- INT 21 - Novell NetWare - RECOVER SALVAGEABLE FILE (OLD)
- AX = F216h subfn 1Ch
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02125)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F216h/SF=1Bh,AX=F216h/SF=1Dh,AX=F257h/SF=11h
- Format of NetWare "Recover Salvageable File (Old)" request packet:
- Offset Size Description (Table 02125)
- 00h WORD length of following data
- 02h BYTE 1Ch (subfunction "Recover Salvageable File (Old)")
- 03h BYTE directory handle
- 04h DWORD sequence number (set to ? before first call)
- 08h BYTE length of filename
- 09h N BYTEs filename in DOS format
- BYTE length of new name for recovered file
- N BYTEs recovered filename in NetWare VOLUME:DIRECTORY/.../FILE format
- SeeAlso: #02401
- --------N-21F216SF1D-------------------------
- INT 21 - Novell NetWare - PURGE SALVAGEABLE FILE (OLD)
- AX = F216h subfn 1Dh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02126)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F216h/SF=1Bh,AX=F216h/SF=1Ch,AX=F257h/SF=12h
- Format of NetWare "Purge Salvageable File (old)" request packet:
- Offset Size Description (Table 02126)
- 00h WORD length of following data
- 02h BYTE 1Dh (subfunction "Purge Salvageable File (Old)")
- 03h BYTE directory handle
- 04h DWORD directory entry
- 08h DWORD sequence number from Scan Salvageable Files
- --------N-21F216SF1E-------------------------
- INT 21 - Novell NetWare - SCAN A DIRECTORY
- AX = F216h subfn 1Eh
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02127)
- ES:DI -> reply buffer (see #02128)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E2h/SF=02h,AX=F216h/SF=1Fh
- Format of NetWare "Scan A Directory" request packet:
- Offset Size Description (Table 02127)
- 00h WORD length of following data
- 02h BYTE 1Eh (subfunction "Scan A Directory")
- 03h BYTE directory handle
- 04h BYTE search attributes
- 05h DWORD sequence number
- 09h BYTE length of search filespec
- 0Ah N BYTEs search filespec
- SeeAlso: #02128
- Format of NetWare "Scan A Directory" reply packet:
- Offset Size Description (Table 02128)
- 00h DWORD sequence number (copy into next request packet)
- 04h DWORD subdirectory
- 08h DWORD attributes
- 0Ch BYTE unique ID
- 0Dh BYTE flags
- 0Eh BYTE name space
- 0Fh BYTE length of filename
- ---DOS file---
- 10h 12 BYTEs DOS filename
- 1Ch DWORD creation date and time
- 20h DWORD owner ID
- 24h DWORD last-archived date and time
- 28h DWORD last-archived ID
- 2Ch DWORD last-updated date and time
- 30h DWORD last-updated ID
- 34h DWORD file size
- 38h 44 BYTEs reserved
- 64h WORD inherited rights mask
- 66h WORD last-accessed date
- 68h 28 BYTEs reserved
- ---DOS subdirectory---
- 10h 12 BYTEs DOS directory name
- 1Ch DWORD creation date and time
- 20h DWORD owner ID
- 24h DWORD last-archived date and time
- 28h DWORD last-archived ID
- 2Ch DWORD last-updated date and time
- 30h DWORD next trustee entry
- 34h 48 BYTEs reserved
- 64h DWORD maximum space
- 68h WORD inherited rights mask
- 6Ah 26 BYTEs unused
- SeeAlso: #02127
- --------N-21F216SF1F-------------------------
- INT 21 - Novell NetWare - GET DIRECTORY ENTRY
- AX = F216h subfn 1Fh
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02129)
- ES:DI -> reply buffer
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F216h/SF=1Eh
- Format of NetWare "Get Directory Entry" request packet:
- Offset Size Description (Table 02129)
- 00h WORD length of following data
- 02h BYTE 1Fh (subfunction "Get Directory Entry")
- ???
- --------N-21F216SF20-------------------------
- INT 21 - Novell NetWare - SCAN VOLUME'S USER DISK RESTRICTIONS
- AX = F216h subfn 20h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02130)
- ES:DI -> reply buffer (see #02131)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F216h/SF=23h,AX=F216h/SF=29h
- Format of NetWare "Scan Volume's User Disk Restrictions" request packet:
- Offset Size Description (Table 02130)
- 00h WORD length of following data
- 02h BYTE 20h (subfunction "Scan Volume's User Disk Restrictions")
- 03h BYTE volume number
- 04h DWORD sequence number (set to 00000000h before first call)
- SeeAlso: #02131
- Format of NetWare "Scan Volume's User Disk Restrictions" reply packet:
- Offset Size Description (Table 02131)
- 00h BYTE number of entries returned (max 12)
- 01h 2N DWORDs restriction entries [array]
- Offset Size Description
- 00h DWORD object ID
- 04h DWORD maximum usage allowed (in 4K blocks)
- SeeAlso: #02130
- --------N-21F216SF21-------------------------
- INT 21 - Novell NetWare v3+ - ADD USER DISK SPACE RESTRICTION
- AX = F216h subfn 21h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02132)
- ES:DI -> reply buffer (ignored)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AX=F216h/SF=20h,AX=F216h/SF=22h,AX=F216h/SF=24h
- Format of NetWare "Add User Disk Space Restriction" request buffer:
- Offset Size Description (Table 02132)
- 00h WORD 000Ah (length of following data)
- 02h BYTE 21h (subfunction "Add User Disk Space Restriction")
- 03h BYTE volume number
- 04h DWORD (big-endian) object ID
- 08h DWORD (big-endian) disk space limit in 4K blocks
- 00000000h to 40000000h
- --------N-21F216SF22-------------------------
- INT 21 - Novell NetWare - REMOVE USER DISK SPACE RESTRICTIONS
- AX = F216h subfn 22h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02133)
- ES:DI -> reply buffer
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F216h/SF=20h,AX=F216h/SF=21h,AX=F216h/SF=23h
- Format of NetWare "Remove User Disk Space Restrictions" request packet:
- Offset Size Description (Table 02133)
- 00h WORD length of following data
- 02h BYTE 22h (subfunction "Remove User Disk Space Restrictions")
- ???
- --------N-21F216SF23-------------------------
- INT 21 - Novell NetWare - SCAN DIRECTORY SPACE RESTRICTIONS
- AX = F216h subfn 23h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02134)
- ES:DI -> reply buffer (see #02135)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F216h/SF=20h,AX=F216h/SF=21h,AX=F216h/SF=22h
- Format of NetWare "Scan Directory Space Restrictions" request packet:
- Offset Size Description (Table 02134)
- 00h WORD length of following data
- 02h BYTE 23h (subfunction "Scan Directory Space Restrictions")
- 03h BYTE directory handle
- SeeAlso: #02135
- Format of NetWare "Scan Directory Space Restrictions" reply packet:
- Offset Size Description (Table 02135)
- 00h BYTE number of entries returned
- 01h 10N BYTEs restrictions [array]
- Offset Size Description
- 00h WORD depth of directory from root
- 02h DWORD maximum space allowed for files in directory
- 04h DWORD current space used by files in directory
- SeeAlso: #02134
- --------N-21F216SF24-------------------------
- INT 21 - Novell NetWare v3+ - SET DIRECTORY DISK SPACE RESTRICTION
- AX = F216h subfn 24h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02136)
- ES:DI -> reply buffer (ignored)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AX=F216h/SF=21h,AX=F216h/SF=22h,AX=F216h/SF=23h,AX=F216h/SF=25h
- Format of NetWare "Set Directory Disk Space Restriction" request buffer:
- Offset Size Description (Table 02136)
- 00h WORD 0006h (length of following data)
- 02h BYTE 24h (subfunction "Set Directory Disk Space Restriction")
- 03h BYTE directory handle
- 04h DWORD (big-endian) disk space limit in 4K blocks
- 00000000h to remove restriction, negative to set to 0 blocks
- --------N-21F216SF25-------------------------
- INT 21 - Novell NetWare - SET DIRECTORY/FILE INFORMATION
- AX = F216h subfn 25h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02137)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F216h/SF=02h
- Format of NetWare "Set Directory/File Information" request packet:
- Offset Size Description (Table 02137)
- 00h WORD length of following data
- 02h BYTE 25h (subfunction "Set Directory/File Information")
- 03h BYTE directory handle
- 04h BYTE search attributes
- 05h DWORD sequence number
- 09h DWORD change bits
- 0Dh DWORD directory number
- 11h DWORD attributes
- 15h BYTE unique ID
- 16h BYTE flags
- 17h BYTE name space (see #02387)
- 18h BYTE length of directory/file name
- 19h 12 BYTEs directory/file name
- 25h DWORD creation date and time
- 29h DWORD (big-endian) owner ID
- 2Dh DWORD last-backup date and time
- 31h DWORD (big-endian) last-backup ID
- 35h DWORD last-modification date and time
- 39h DWORD (big-endian) last-modification ID
- 3Dh DWORD file size
- 41h DWORD data fork first FAT
- 45h DWORD next trustee entry
- 49h 36 BYTEs reserved
- 6Dh WORD inherited rights mask
- 6Fh WORD last-access date
- 71h 20 BYTEs reserved
- 85h DWORD primary entry
- 89h DWORD name list
- --------N-21F216SF26-------------------------
- INT 21 - Novell NetWare v3+ - SCAN FILE OR DIRECTORY FOR EXTENDED TRUSTEES
- AX = F216h subfn 26h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02138)
- ES:DI -> reply buffer (see #02139)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- Desc: get up to 20 extended trustee entries per call for a file or directory
- Format of NetWare "Scan File/Directory for Extended Trustees" request buffer:
- Offset Size Description (Table 02138)
- 00h WORD length of following data
- 02h BYTE 26h (subfunc "Scan File or Directory For Extended Trustees")
- 03h BYTE directory handle
- 04h BYTE sequence number
- 00h for first call, increment by number of returned entries
- 05h BYTE length of path
- 06h N BYTEs pathname
- SeeAlso: #02138
- Format of NetWare "Scan File/Directory for Extended Trustees" reply buffer:
- Offset Size Description (Table 02139)
- 00h BYTE number of entries returned (max 20)
- 01h 20 DWORDs (big-endian) list of object IDs
- 51h 20 WORDs list of associated trustee rights
- SeeAlso: #02139
- --------N-21F216SF27-------------------------
- INT 21 - Novell NetWare v3+ - ADD EXTENDED TRUSTEE TO DIRECTORY OR FILE
- AX = F216h subfn 27h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02140)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- Format of NetWare "Add Extended Trustee to Directory or File" request buffer:
- Offset Size Description (Table 02140)
- 00h WORD length of following data
- 02h BYTE 27h (subfunction "Add Extended Trustee to Directory or File")
- 03h BYTE directory handle
- 04h DWORD (big-endian) object ID
- 08h WORD trustee rights (see #02141)
- 0Ah BYTE path length
- 0Bh N BYTEs path name
- Bitfields for NetWare trustee rights:
- Bit(s) Description (Table 02141)
- 0 read
- 1 write
- 3 create
- 4 delete
- 5 access
- 6 file
- 7 modify
- 8 supervisor
- --------N-21F216SF28-------------------------
- INT 21 - Novell NetWare - SCAN DIRECTORY DISK SPACE
- AX = F216h subfn 28h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02142)
- ES:DI -> reply buffer (see #02143)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F216h/SF=02h,AX=F216h/SF=20h
- Format of NetWare "Scan Directory Disk Space" request packet:
- Offset Size Description (Table 02142)
- 00h WORD length of following data
- 02h BYTE 28h (subfunction "Scan Directory Disk Space")
- 03h BYTE directory handle
- 04h BYTE search attributes
- 05h DWORD sequence number (set to FFFFFFFFh before first call)
- 09h BYTE length of filespec
- 0Ah N BYTEs search filespec
- SeeAlso: #02143
- Format of NetWare "Scan Directory Disk Space" reply packet:
- Offset Size Description (Table 02143)
- 00h DWORD next sequence number
- 04h DWORD (big-endian) subdirectory number
- 08h DWORD (big-endian) attributes
- 0Ch BYTE unique ID
- 0Dh BYTE flags
- 0Eh BYTE name space (see #02387)
- 0Fh BYTE length of name
- 10h 12 BYTEs name
- 1Ch DWORD creation date and time
- 20h DWORD owner ID
- 24h DWORD date and time last backed up
- 28h DWORD last-backup ID
- 2Ch DWORD date and time last modified
- 30h DWORD last-modification ID
- 34h DWORD data fork size
- 38h DWORD data fork first FAT
- 3Ch DWORD next trustee entry
- 40h 36 BYTEs reserved
- 64h WORD inherited rights mask
- 66h WORD last-access date
- 68h DWORD deleted file date and time
- 6Ch DWORD date and time file was deleted
- 70h DWORD deleted ID
- 74h 8 BYTEs undefined
- 7Ch DWORD primary entry
- 80h DWORD name list
- 84h DWORD other file fork size
- SeeAlso: #02142
- --------N-21F216SF29-------------------------
- INT 21 - Novell NetWare v3+ - GET OBJECT DISK USAGE AND RESTRICTIONS
- AX = F216h subfn 29h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02144)
- ES:DI -> reply buffer (see #02145)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- Note: this function returns successfully, showing no restriction, if an
- invalid object ID is specified
- SeeAlso: AX=F216h/SF=24h,AX=F216h/SF=33h
- Format of NetWare "Get Object Disk Restrictions" request buffer:
- Offset Size Description (Table 02144)
- 00h WORD 0006h (length of following data)
- 02h BYTE 21h (subfunction "Get Object Disk Restrictions")
- 03h BYTE volume number
- 04h DWORD (big-endian) object ID
- SeeAlso: #02145
- Format of NetWare "Get Object Disk Restrictions" reply buffer:
- Offset Size Description (Table 02145)
- 00h DWORD disk space limit
- 04h DWORD disk space currently in use by object
- SeeAlso: #02144
- --------N-21F216SF2A-------------------------
- INT 21 - Novell NetWare - GET EFFECTIVE RIGHTS
- AX = F216h subfn 2Ah
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02146)
- ES:DI -> reply buffer (see #02147)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F216h/SF=32h
- Format of NetWare "Get Effective Rights" request packet:
- Offset Size Description (Table 02146)
- 00h WORD length of following data
- 02h BYTE 2Ah (subfunction "Get Effective Rights")
- ???
- --------N-21F216SF2B-------------------------
- INT 21 - Novell NetWare - REMOVE EXTENDED TRUSTEE FROM DIR OR FILE
- AX = F216h subfn 2Bh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02117,#02147)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F216h/SF=26h,AX=F216h/SF=27h
- Format of NetWare "Remove Extended Trustee From Dir Or File" request packet:
- Offset Size Description (Table 02147)
- 00h WORD length of following data
- 02h BYTE 2Bh (subfunction "Remove Extended Trustee From Dir Or File")
- 03h BYTE directory handle
- 04h DWORD trustee's object ID
- 08h BYTE unused
- 09h BYTE length of pathname
- 0Ah N BYTEs directory path in form VOLUME:DIRECTORY/.../DIRECTORY
- --------N-21F216SF2C-------------------------
- INT 21 - Novell NetWare - GET VOLUME USAGE
- AX = F216h subfn 2Ch
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02148)
- ES:DI -> reply buffer (see #02149)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F216h/SF=20h,AX=F216h/SF=29h
- Format of NetWare "Get Volume Usage" request packet:
- Offset Size Description (Table 02148)
- 00h WORD length of following data
- 02h BYTE 2Ch (subfunction "Get Volume Usage")
- ???
- --------N-21F216SF2D-------------------------
- INT 21 - Novell NetWare - GET DIRECTORY INFORMATION
- AX = F216h subfn 2Dh
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02149)
- ES:DI -> reply buffer (see #02150)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F216h/SF=2Ch,AX=F216h/SF=2Eh
- Format of NetWare "Get Directory Information" request packet:
- Offset Size Description (Table 02149)
- 00h WORD length of following data
- 02h BYTE 2Dh (subfunction "Get Directory Information")
- 03h BYTE directory handle
- SeeAlso: #02150
- Format of NetWare "Get Directory Information" reply packet:
- Offset Size Description (Table 02150)
- 00h DWORD total blocks
- 04h DWORD available blocks
- 08h DWORD total number of directory entries
- 0Ch DWORD number of available directory entries
- 10h 4 BYTEs reserved
- 14h BYTE sectors per block
- 15h BYTE length of volume name
- 16h N BYTEs volume name
- SeeAlso: #02149
- --------N-21F216SF2E-------------------------
- INT 21 - Novell NetWare - RENAME OR MOVE
- AX = F216h subfn 2Eh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02151)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=34h,AX=F223h/SF=07h,AX=F244h
- Format of NetWare "Rename Or Move" request packet:
- Offset Size Description (Table 02151)
- 00h WORD length of following data
- 02h BYTE 2Eh (subfunction "Rename Or Move")
- 03h BYTE source directory handle
- 04h BYTE search attributes
- 05h BYTE source path component count
- 06h N BYTEs source path
- BYTE destination directory handle
- BYTE destination path component count
- N BYTEs destination path
- --------N-21F216SF2F-------------------------
- INT 21 - Novell NetWare - GET NAME SPACE INFORMATION
- AX = F216h subfn 2Fh
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02152)
- ES:DI -> reply buffer (see #02153)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F216h/SF=30h,AX=F257h/SF=18h
- Format of NetWare "Get Name Space Information" request packet:
- Offset Size Description (Table 02152)
- 00h WORD length of following data
- 02h BYTE 2Fh (subfunction "Get Name Space Information")
- 03h BYTE volume number
- SeeAlso: #02153
- Format of NetWare "Get Name Space Information" request packet:
- Offset Size Description (Table 02153)
- 00h BYTE length of namespace name
- 01h N BYTEs name of namespace
- BYTE number of data streams
- var data stream information [one entry per data stream]
- Offset Size Description
- 00h BYTE associated name space
- 01h BYTE length of data stream name
- 02h N BYTEs data stream name
- BYTE number of loaded name spaces
- BYTE bitmap of loaded name spaces
- N BYTEs list of name spaces being used
- BYTE index number
- SeeAlso: #02152
- --------N-21F216SF30-------------------------
- INT 21 - Novell NetWare - GET NAME SPACE DIRECTORY ENTRY
- AX = F216h subfn 30h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02154)
- ES:DI -> reply buffer (see #02155)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F216h/SF=2Fh
- Format of NetWare "Get Name Space Directory Entry" request packet:
- Offset Size Description (Table 02154)
- 00h WORD length of following data
- 02h BYTE 30h (subfunction "Get Name Space Directory Entry")
- 03h BYTE volume number
- 04h DWORD sequence number (set to 00000000h before first call)
- 08h BYTE name space (see #02387)
- SeeAlso: #02155
- Format of NetWare "Get Name Space Directory Entry" request packet:
- Offset Size Description (Table 02155)
- 00h DWORD next sequence number
- 04h DWORD subdirectory
- 08h DWORD attributes
- 0Ch BYTE unique ID
- 0Dh BYTE flags
- 0Eh BYTE name space (see #02387)
- 0Fh BYTE length of name
- 10h 12 BYTEs filename
- 1Ch DWORD creation date and time
- 20h DWORD (big-endian) owner ID
- 24h DWORD last-backup date and time
- 28h DWORD (big-endian) last-backup ID
- 2Ch DWORD last-modification date and time
- ---DOS file---
- 30h DWORD (big-endian) last-modification ID
- 34h DWORD file size
- 38h 44 BYTEs reserved
- 64h WORD inherited rights mask
- 66h WORD last-access date
- 68h 28 BYTEs reserved
- ---DOS subdirectory---
- 30h DWORD next trustee entry
- 34h 48 BYTEs reserved
- 64h WORD maximum space
- 66h WORD inherited rights mask
- 68h 26 BYTEs reserved
- ---Macintosh subdirectory---
- 10h 32 BYTEs Mac filename
- 30h DWORD resource fork
- 34h DWORD resource fork size
- 38h 32 BYTEs Finder information
- 58h 6 BYTEs ProDOS information
- 5Eh 38 BYTEs reserved
- SeeAlso: #02154
- --------N-21F216SF31-------------------------
- INT 21 - Novell NetWare - OPEN DATA STREAM
- AX = F216h subfn 31h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02156)
- ES:DI -> reply buffer (see #02157)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F216h/SF=30h
- Format of NetWare "Open Data Stream" request packet:
- Offset Size Description (Table 02156)
- 00h WORD length of following data
- 02h BYTE 31h (subfunction "Open Data Stream")
- 03h BYTE data stream
- 04h BYTE directory handle
- 05h BYTE file attributes
- 06h BYTE open rights
- 07h BYTE length of filename
- 08h N BYTEs filename (8.3)
- SeeAlso: #02157
- Format of NetWare "Open Data Stream" reply packet:
- Offset Size Description (Table 02157)
- 00h DWORD file handle
- SeeAlso: #02156
- --------N-21F216SF32-------------------------
- INT 21 - Novell NetWare v2.2+ - GET OBJECT EFFECTIVE RIGHTS
- AX = F216h subfn 32h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02158)
- ES:DI -> reply buffer (see #02159)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AX=F216h/SF=29h
- Format of NetWare "Get Object Effective Rights" request buffer:
- Offset Size Description (Table 02158)
- 00h WORD length of following data
- 02h BYTE 32h (subfunction "Get Object Effective Rights")
- 03h DWORD object ID
- 07h BYTE directory handle
- 08h var counted path string
- SeeAlso: #02159
- Format of NetWare "Get Object Effective Rights" reply buffer:
- Offset Size Description (Table 02159)
- 00h WORD object's effective rights
- 02h 6 BYTEs reserved
- SeeAlso: #02158
- --------N-21F216SF33-------------------------
- INT 21 - Novell NetWare v2.2+ - GET EXTENDED VOLUME INFORMATION
- AX = F216h subfn 33h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02160)
- ES:DI -> reply buffer (see #02161)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AX=F216h/SF=29h
- Format of NetWare "Get Extended Volume Information" request buffer:
- Offset Size Description (Table 02160)
- 00h WORD length of following data
- 02h BYTE 33h (subfunction "Get Extended Volume Information")
- ---v2.2---
- 03h BYTE volume ID
- ---v4.x---
- 03h DWORD volume number
- SeeAlso: #02161
- Format of NetWare "Get Extended Volume Information" reply buffer:
- Offset Size Description (Table 02161)
- 00h WORD length of returned data
- 02h DWORD volume type
- 06h DWORD status flag bits
- bit 0: suballocation
- bit 1: compressoin
- bit 2: migration
- bit 3: auditing
- 0Ah DWORD sector size
- 0Eh DWORD sectors per cluster
- 12h DWORD total clusters in volume
- 16h DWORD free clusters
- 1Ah DWORD freeable suballocated clusters
- 1Eh DWORD freeable in-limbo sectors
- 22h DWORD non-freeable in-limbo sectors
- 26h DWORD non-freeable available suballocated sectors
- 2Ah DWORD unuable suballocated sectors
- 2Eh DWORD total suballocated clusters
- 32h DWORD number of data streams
- 36h DWORD number of in-limbo data streams
- 3Ah DWORD age of oldest deleted file in clock ticks
- 3Eh DWORD number of compressed data streams
- 42h DWORD number of compressed in-limbo data streams
- 46h DWORD number of uncompressable data streams
- 4Ah DWORD number of precompressed sectors
- 4Eh DWORD number of compressed sectors
- 52h DWORD number of migrated files
- 56h DWORD number of migrated sectors
- 5Ah DWORD number of clusters used by FAT
- 5Eh DWORD number of clusters used by directories
- 62h DWORD number of clusters used by extended directories
- 66h DWORD total number of directory entries
- 6Ah DWORD number of unused directory entries
- 6Eh DWORD total number of extended directory extants
- 72h DWORD number of unused extended directory extants
- 76h DWORD number of extended attributes defined (see AX=F256h/SF=04h)
- 7Ah DWORD number of extended-attribute extants used
- 7Eh DWORD object ID for Directory Services
- 82h DWORD date and time volume last modified
- 86h var counted volume name string
- SeeAlso: #02160
- --------N-21F217SF01-------------------------
- INT 21 - Novell NetWare - CHANGE USER PASSWORD (OLD)
- AX = F217h subfn 01h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01891 at AH=E3h/SF=01h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- Note: this function requires an object of type USER, unlike the newer
- password changing function AX=F217h/SF=40h
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=01h,AX=F217h/SF=02h,AX=F217h/SF=40h
- --------N-21F217SF02-------------------------
- INT 21 - Novell NetWare - GET USER CONNECTION LIST (OLD)
- AX = F217h subfn 02h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01892 at AH=E3h/SF=02h)
- ES:DI -> reply buffer (see #02162)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=02h,AX=F217h/SF=01h,AX=F217h/SF=0Ch
- Format of NetWare "Get User Connection List (old)" reply packet:
- Offset Size Description (Table 02162)
- 00h BYTE length of connection list
- 01h BYTE number of bytes in connection list
- 02h N BYTEs list of connection numbers in use by user
- SeeAlso: #01892
- --------N-21F217SF0C-------------------------
- INT 21 - Novell NetWare - VERIFY SERIALIZATION
- AX = F217h subfn 0Ch
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01896 at AH=E3h/SF=0Ch)
- ES:DI -> reply buffer (see #02163)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=0Ch,AX=F217h/SF=12h
- Format of NetWare "Verify Serialization" reply packet:
- Offset Size Description (Table 02163)
- 00h WORD server application number
- SeeAlso: #01896
- --------N-21F217SF0E-------------------------
- INT 21 - Novell NetWare - GET DISK UTILIZATION
- AX = F217h subfn 0Eh
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01900 at AH=E3h/SF=0Eh)
- ES:DI -> reply buffer (see #02164)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=0Eh,AX=F217h/SF=D6h
- Format of NetWare "Get Disk Utilization" reply packet:
- Offset Size Description (Table 02164)
- 00h BYTE volume number (00h-1Fh)
- 01h DWORD (big-endian) object ID
- 05h WORD (big-endian) directories used by object
- 07h WORD (big-endian) files created by object
- 09h WORD (big-endian) disk blocks used by object-created files
- SeeAlso: #01900 at AH=E3h/SF=0Eh
- --------N-21F217SF0F-------------------------
- INT 21 - Novell NetWare - SCAN FILE INFORMATION
- AX = F217h subfn 0Fh
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01903 at AH=E3h/SF=0Fh)
- ES:DI -> reply buffer (see #02165)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=0Fh,AX=F217h/SF=10h
- Format of NetWare "Scan File Information" reply packet:
- Offset Size Description (Table 02165)
- 00h WORD next sequence number (place in request buffer for next call)
- 02h 14 BYTEs ASCIZ filename
- 10h BYTE file attributes (see #01420 at AX=4301h)
- 11h BYTE extended file attributes (see #01804 at AH=B6h)
- 12h DWORD (big-endian) file size in bytes
- 16h WORD (big-endian) file's creation date (see #01666 at AX=5700h)
- 18h WORD (big-endian) date of last access (see #01665 at AX=5700h)
- 1Ah DWORD (big-endian) date and time of last update (see #01846)
- 1Eh DWORD (big-endian) object ID of owner
- 22h DWORD (big-endian) date and time last archived (see #01846)
- 26h 55 BYTEs reserved
- SeeAlso: #01903 at AH=E3h/SF=0Fh
- --------N-21F217SF10-------------------------
- INT 21 - Novell NetWare - SET FILE INFORMATION
- AX = F217h subfn 10h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01905 at AH=E3h/SF=10h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=10h,AX=F217h/SF=0Fh
- --------N-21F217SF11-------------------------
- INT 21 - Novell NetWare - GET FILE SERVER INFORMATION
- AX = F217h subfn 11h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01907 at AH=E3h/SF=11h)
- ES:DI -> reply buffer (see #02166)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=11h,AX=F217h/SF=F1h
- Format of NetWare "Get File Server Information" reply packet:
- Offset Size Description (Table 02166)
- 00h 48 BYTEs server's name
- 30h BYTE NetWare version
- 31h BYTE NetWare subversion (0-99)
- 32h WORD (big-endian) number of connections supported
- NetWare 4.01 reportedly returns maximum simulataneously-used
- connections
- 34h WORD (big-endian) number of connections in use
- 36h WORD (big-endian) maximum connected volumes
- ---Advanced NetWare 2.1+ ---
- 38h BYTE operating system revision number
- 39h BYTE fault tolerance (SFT) level
- 3Ah BYTE TTS level
- 3Bh WORD (big-endian) maximum simultaneously-used connections
- NetWare 4.01 reportedly returns number of connections in use
- 3Dh BYTE accounting version
- 3Eh BYTE VAP version
- 3Fh BYTE queueing version
- 40h BYTE print server version
- 41h BYTE virtual console version
- 42h BYTE security restrictions level
- 43h BYTE internetwork bridge version
- 44h 60 BYTEs reserved
- SeeAlso: #01907
- --------N-21F217SF12-------------------------
- INT 21 - Novell NetWare - GET NETWORK SERIAL NUMBER
- AX = F217h subfn 12h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01909 at AH=E3h/SF=12h)
- ES:DI -> reply buffer (see #02167)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=12h,AX=F217h/SF=0Ch
- Format of NetWare "Get Network Serial Number" reply packet:
- Offset Size Description (Table 02167)
- 00h 4 BYTEs (big-endian) NetWare server serial number
- 04h 2 BYTEs (big-endian) NetWare application serial number
- SeeAlso: #01909 at AH=E3h/SF=12h
- --------N-21F217SF13-------------------------
- INT 21 - Novell NetWare - GET INTERNET ADDRESS (OLD)
- AX = F217h subfn 13h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01911 at AH=E3h/SF=13h)
- ES:DI -> reply buffer (see #02168)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=13h,AX=F217h/SF=1Ah
- Format of NetWare "Get Internet Address (old)" reply packet:
- Offset Size Description (Table 02168)
- 00h 4 BYTEs network number
- 04h 6 BYTEs physical node address
- 0Ah 2 BYTEs socket number
- SeeAlso: #01911 at AH=E3h/SF=13h,#02174
- --------N-21F217SF14-------------------------
- INT 21 - Novell NetWare - LOGIN OBJECT
- AX = F217h subfn 14h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01913 at AH=E3h/SF=14h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=14h,AX=F216h/SF=18h,AX=F217h/SF=CCh
- SeeAlso: AX=F258h/SF=03h,AX=F268h/SF=3Dh
- --------N-21F217SF15-------------------------
- INT 21 - Novell NetWare - GET OBJECT CONNECTION LIST (OLD)
- AX = F217h subfn 15h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01915 at AH=E3h/SF=15h)
- ES:DI -> reply buffer (see #02169)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=15h,AX=F217h/SF=1Bh
- Format of NetWare "Get Object Connection List (old)" reply packet:
- Offset Size Description (Table 02169)
- 00h BYTE number of connections
- 01h N BYTEs connection list
- SeeAlso: #01915
- --------N-21F217SF16-------------------------
- INT 21 - Novell NetWare - GET CONNECTION INFORMATION (OLD)
- AX = F217h subfn 16h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02170)
- ES:DI -> reply buffer (see #02171)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=1Ch,AX=F217h/SF=1Fh
- Format of NetWare "Get Connection Information (old)" request packet:
- Offset Size Description (Table 02170)
- 00h WORD 0002h (length of following data)
- 02h BYTE 16h (subfunction "Get Connection Information (old)")
- 03h BYTE target connection number
- Note: connection numbers greater than the maximum supported by the server
- can cause ABENDs
- SeeAlso: #02171
- Format of NetWare "Get Connection Information (old)" reply packet:
- Offset Size Description (Table 02171)
- 00h DWORD (big-endian) unique user ID, 00000000h if no one logged in
- 04h WORD (big-endian) user type
- 06h 48 BYTEs user name
- 36h 7 BYTEs login time (see #02087)
- 3Dh BYTE reserved
- SeeAlso: #02170
- --------N-21F217SF17-------------------------
- INT 21 - Novell NetWare - GET ENCRYPTION KEY
- AX = F217h subfn 17h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02172)
- ES:DI -> reply buffer
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=18h,AX=F217h/SF=4Ah,AX=F217h/SF=4Bh
- Format of NetWare "Get Encryption Key" request packet:
- Offset Size Description (Table 02172)
- 00h WORD length of following data
- 02h BYTE 17h (subfunction "Get Encryption Key")
- ???
- --------N-21F217SF18-------------------------
- INT 21 - Novell NetWare - LOGIN OBJECT ENCRYPTED
- AX = F217h subfn 18h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02173)
- ES:DI -> reply buffer
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=14h,AX=F217h/SF=17h
- Format of NetWare "Login Object Encrypted" request packet:
- Offset Size Description (Table 02173)
- 00h WORD length of following data
- 02h BYTE 18h (subfunction "Login Object Encrypted")
- ???
- --------N-21F217SF1A-------------------------
- INT 21 - Novell NetWare - GET INTERNET ADDRESS
- AX = F217h subfn 1Ah
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02174)
- ES:DI -> reply buffer (see #02175)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=13h
- Format of NetWare "Get Internet Address" request packet:
- Offset Size Description (Table 02174)
- 00h WORD length of following data
- 02h BYTE 1Ah (subfunction "Get Internet Address")
- 03h DWORD target connection ID
- SeeAlso: #02175
- Format of NetWare "Get Internet Address" reply packet:
- Offset Size Description (Table 02175)
- 00h 4 BYTEs network number
- 04h 6 BYTEs physical node address
- 0Ah 2 BYTEs socket number
- 0Ch BYTE connection type
- 00h not in use
- 02h NCP
- 03h AFP
- SeeAlso: #02174
- --------N-21F217SF1B-------------------------
- INT 21 - Novell NetWare - GET OBJECT CONNECTION LIST
- AX = F217h subfn 1Bh
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02176)
- ES:DI -> reply buffer (see #02177)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=15h
- Format of NetWare "Get Object Connection List" request packet:
- Offset Size Description (Table 02176)
- 00h WORD length of following data
- 02h BYTE 1Bh (subfunction "Get Object Connection List")
- 03h DWORD search connection number
- set to highest connection number returned by previous call, or
- 00000000h before first call
- 07h WORD object type
- 09h BYTE length of object's name
- 0Ah N BYTEs object name
- SeeAlso: #02177
- Format of NetWare "Get Object Connection List" reply packet:
- Offset Size Description (Table 02177)
- 00h BYTE length of connection number list
- 01h N WORDs array of server connection numbers
- SeeAlso: #02176
- --------N-21F217SF1C-------------------------
- INT 21 - Novell NetWare v3+ - GET CONNECTION INFORMATION
- AX = F217h subfn 1Ch
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02178)
- ES:DI -> reply buffer (see #02179)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=16h,AX=F217h/SF=1Fh
- Format of NetWare "Get Connection Information" request packet:
- Offset Size Description (Table 02178)
- 00h WORD 0005h (length of following data)
- 02h BYTE 1Ch (subfunction "Get Connection Information")
- 03h DWORD target connection number
- Note: connection numbers greater than the maximum supported by the server
- can cause ABENDs
- SeeAlso: #02179,#02170
- Format of NetWare "Get Connection Information" reply packet:
- Offset Size Description (Table 02179)
- 00h DWORD (big-endian) unique user ID, 00000000h if no one logged in
- 04h WORD (big-endian) user type
- 06h 48 BYTEs user name
- 36h 7 BYTEs login time (see #02087)
- 3Dh BYTE reserved
- SeeAlso: #02178,#02171
- --------N-21F217SF1D-------------------------
- INT 21 - Novell NetWare v4 - CHANGE CONNECTION STATE
- AX = F217h subfn 1Dh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02180)
- ES:DI -> reply buffer
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- Format of NetWare "Change Connection State" requst buffer:
- Offset Size Description (Table 02180)
- 00h WORD length of following data
- 02h BYTE 1Dh (subfunction "Change Connection State")
- 03h DWORD new state
- --------N-21F217SF1E-------------------------
- INT 21 - Novell NetWare v4 - SET WATCHDOG DELAY INTERVAL
- AX = F217h subfn 1Eh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02181)
- ES:DI -> reply buffer
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- Format of NetWare "Set Watchdog Delay Interval" request buffer:
- Offset Size Description (Table 02181)
- 00h WORD length of following data
- 02h BYTE 1Eh (subfunction "Set Watchdog Delay Interval")
- 03h DWORD interval in minutes
- --------N-21F217SF1F-------------------------
- INT 21 - Novell NetWare v4 - GET CONNECTION LIST
- AX = F217h subfn 1Fh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02182)
- ES:DI -> reply buffer (see #02183)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- Format of NetWare "Get Connection List" request buffer:
- Offset Size Description (Table 02182)
- 00h WORD length of following data
- 02h BYTE 1Fh (subfunction "Get Connection List")
- 03h DWORD object ID
- 07h DWORD ??? (initialize to FFFFFFFFh before first call)
- SeeAlso: #02183
- Format of NetWare "Get Connection List" reply buffer:
- Offset Size Description (Table 02183)
- 00h WORD number of connections following (max 50)
- 02h 50 DWORDs connection numbers
- SeeAlso: #02182
- --------N-21F217SF32-------------------------
- INT 21 - Novell NetWare - CREATE BINDERY OBJECT
- AX = F217h subfn 32h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01921 at AH=E3h/SF=32h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=32h,AX=F217h/SF=33h,AX=F217h/SF=34h
- --------N-21F217SF33-------------------------
- INT 21 - Novell NetWare - DELETE BINDERY OBJECT
- AX = F217h subfn 33h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01923 at AH=E3h/SF=33h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=33h,AX=F217h/SF=32h,AX=F217h/SF=34h
- --------N-21F217SF34-------------------------
- INT 21 - Novell NetWare - RENAME BINDERY OBJECT
- AX = F217h subfn 34h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01924 at AH=E3h/SF=34h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=34h,AX=F217h/SF=32h,AX=F217h/SF=33h
- --------N-21F217SF35-------------------------
- INT 21 - Novell NetWare - GET BINDERY OBJECT ID
- AX = F217h subfn 35h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01925 at AH=E3h/SF=35h)
- ES:DI -> reply buffer (see #02184)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=35h,AX=F217h/SF=36h,AX=F217h/SF=45h
- Format of NetWare "Get Bindery Object ID" reply packet:
- Offset Size Description (Table 02184)
- 00h DWORD (big-endian) object ID
- 04h WORD (big-endian) type of object
- 06h 48 BYTEs object name
- SeeAlso: #01925 at AH=E3h/SF=35h
- --------N-21F217SF36-------------------------
- INT 21 - Novell NetWare - GET BINDERY OBJECT NAME
- AX = F217h subfn 36h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01928 at AH=E3h/SF=36h)
- ES:DI -> reply buffer (see #02185)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=36h,AX=F217h/SF=35h,AX=F217h/SF=37h
- Format of NetWare "Get Bindery Object Name" reply packet:
- Offset Size Description (Table 02185)
- 00h DWORD (big-endian) object ID
- 04h WORD (big-endian) type of object
- 06h 48 BYTEs object name
- SeeAlso: #01928 at AH=E3h/SF=36h
- --------N-21F217SF37-------------------------
- INT 21 - Novell NetWare - SCAN BINDERY OBJECT
- AX = F217h subfn 37h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01930 at AH=E3h/SF=37h)
- ES:DI -> reply buffer (see #02186)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=37h,AX=F217h/SF=3Ch
- Format of NetWare "Scan Bindery Object" reply packet:
- Offset Size Description (Table 02186)
- 00h
- SeeAlso: #01930
- --------N-21F217SF38-------------------------
- INT 21 - Novell NetWare - CHANGE BINDERY OBJECT SECURITY
- AX = F217h subfn 38h
- CX = length of request packet in bytes
- DX = 0000h (no reply buffer)
- DS:SI -> request packet (see #01932 at AH=E3h/SF=38h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=38h,AX=F217h/SF=32h
- --------N-21F217SF39-------------------------
- INT 21 - Novell NetWare - CREATE PROPERTY
- AX = F217h subfn 39h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01934 at AH=E3h/SF=39h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=39h,AX=F217h/SF=3Ah
- --------N-21F217SF3A-------------------------
- INT 21 - Novell NetWare - DELETE PROPERTY
- AX = F217h subfn 3Ah
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01936 at AH=E3h/SF=3Ah)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=3Ah,AX=F217h/SF=39h,AX=F217h/SF=3Bh
- --------N-21F217SF3B-------------------------
- INT 21 - Novell NetWare - CHANGE PROPERTY SECURITY
- AX = F217h subfn 3Bh
- CX = length of request packet in bytes
- DX = 0000h (no reply buffer)
- DS:SI -> request packet (see #01938 at AH=E3h/SF=3Bh)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=3Bh
- --------N-21F217SF3C-------------------------
- INT 21 - Novell NetWare - SCAN PROPERTY
- AX = F217h subfn 3Ch
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01939 at AH=E3h/SF=3Ch)
- ES:DI -> reply buffer (see #02187)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=3Ch,AX=F217h/SF=39h,AX=F217h/SF=3Dh
- Format of NetWare "Scan Property" reply packet:
- Offset Size Description (Table 02187)
- 00h
- SeeAlso: #01939
- --------N-21F217SF3D-------------------------
- INT 21 - Novell NetWare - READ PROPERTY VALUE
- AX = F217h subfn 3Dh
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01942 at AH=E3h/SF=3Dh)
- ES:DI -> reply buffer (see #02188)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=3Dh,AX=F217h/SF=39h,AX=F217h/SF=3Eh
- Format of NetWare "Read Property Value" request packet:
- Offset Size Description (Table 02188)
- 00h
- SeeAlso: #01942
- --------N-21F217SF3E-------------------------
- INT 21 - Novell NetWare - WRITE PROPERTY VALUE
- AX = F217h subfn 3Eh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01944 at AH=E3h/SF=3Eh)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=3Eh,AX=F217h/SF=39h,AX=F217h/SF=3Dh
- --------N-21F217SF3F-------------------------
- INT 21 - Novell NetWare - VERIFY BINDERY OBJECT PASSWORD
- AX = F217h subfn 3Fh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01947 at AH=E3h/SF=3Fh)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=3Fh,AX=F217h/SF=40h
- --------N-21F217SF40-------------------------
- INT 21 - Novell NetWare - CHANGE BINDERY OBJECT PASSWORD
- AX = F217h subfn 40h
- CX = length of request packet in bytes
- DX = 0000h (no reply buffer)
- DS:SI -> request packet (see #01948 at AH=E3h/SF=40h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=40h,AX=F217h/SF=3Fh
- --------N-21F217SF41-------------------------
- INT 21 - Novell NetWare v2.2+ - ADD OBJECT TO SET
- AX = F217h subfn 41h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01951 at AH=E3h/SF=41h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- Desc: add a member to an object's group property
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=41h,AX=F217h/SF=42h,AX=F217h/SF=43h
- --------N-21F217SF42-------------------------
- INT 21 - Novell NetWare - DELETE BINDERY OBJECT FROM SET
- AX = F217h subfn 42h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01952 at AH=E3h/SF=42h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=42h,AX=F217h/SF=41h,AX=F217h/SF=43h
- --------N-21F217SF43-------------------------
- INT 21 - Novell NetWare - IS BINDERY OBJECT IN SET?
- AX = F217h subfn 43h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01954 at AH=E3h/SF=43h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=43h,AX=F217h/SF=41h,AX=F217h/SF=42h
- --------N-21F217SF44-------------------------
- INT 21 - Novell NetWare - CLOSE BINDERY
- AX = F217h subfn 44h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01955 at AH=E3h/SF=44h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=44h,AX=F217h/SF=45h
- --------N-21F217SF45-------------------------
- INT 21 - Novell NetWare - OPEN BINDERY
- AX = F217h subfn 45h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01956 at AH=E3h/SF=45h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=45h,AX=F217h/SF=44h
- --------N-21F217SF46-------------------------
- INT 21 - Novell NetWare - GET BINDERY ACCESS LEVEL
- AX = F217h subfn 46h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01957 at AH=E3h/SF=46h)
- ES:DI -> reply buffer (see #02189)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=46h,AX=F217h/SF=45h
- Format of NetWare "Get Bindery Access Level" reply packet:
- Offset Size Description (Table 02189)
- 00h BYTE security levels
- 01h DWORD (big-endian) object ID
- SeeAlso: #01957,#01958 at AH=E3h/SF=46h
- --------N-21F217SF47-------------------------
- INT 21 - Novell NetWare - SCAN BINDERY OBJECT TRUSTEE PATHS
- AX = F217h subfn 47h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01959 at AH=E3h/SF=47h)
- ES:DI -> reply buffer (see #02190)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=47h,AX=F216h/SF=0Ch,AX=F217h/SF=48h
- Format of NetWare "Scan Bindery Object Trustee Paths" reply packet:
- Offset Size Description (Table 02190)
- 00h WORD (big-endian) next sequence number
- 02h DWORD (big-endian) object ID
- 06h BYTE trustee directory rights (see #01849 at AH=E2h/SF=03h)
- 07h BYTE length of trustee path
- 08h N BYTEs trustee path
- SeeAlso: #01959,#01960 at AH=E3h/SF=47h
- --------N-21F217SF48-------------------------
- INT 21 - Novell NetWare - GET BINDERY OBJECT ACCESS LEVEL
- AX = F217h subfn 48h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02191)
- ES:DI -> reply buffer (see #02192)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=45h,AX=F217h/SF=46h
- Format of NetWare "Get Bindery Object Access Level" request packet:
- Offset Size Description (Table 02191)
- 00h WORD length of following data (max ABh)
- 02h BYTE 48h (subfunction "Get Bindery Object Access Level")
- 03h DWORD object ID
- SeeAlso: #02192
- Format of NetWare "Get Bindery Object Access Level" reply packet:
- Offset Size Description (Table 02192)
- 00h BYTE object access level
- SeeAlso: #02191
- --------N-21F217SF49-------------------------
- INT 21 - Novell NetWare - IS STATION A MANAGER?
- AX = F217h subfn 49h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02193)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=43h
- Format of NetWare "Is Station A Manager?" request packet:
- Offset Size Description (Table 02193)
- 00h WORD length of following data
- 02h BYTE 49h (subfunction "Is Station A Manager?")
- 03h DWORD object ID
- --------N-21F217SF4A-------------------------
- INT 21 - Novell NetWare - KEYED VERIFY BINDERY OBJECT PASSWORD
- AX = F217h subfn 4Ah
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02194)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=4Bh
- Format of NetWare "Keyed Verify Bindery Object Password" request packet:
- Offset Size Description (Table 02194)
- 00h WORD length of following data
- 02h BYTE 4Ah (subfunction "Keyed Verify Bindery Object Password")
- 03h 8 BYTEs key
- 0Bh WORD type
- 0Dh BYTE length of object's name
- 0Eh N BYTEs object name
- SeeAlso: #02195
- --------N-21F217SF4B-------------------------
- INT 21 - Novell NetWare - KEYED CHANGE BINDERY OBJECT PASSWORD
- AX = F217h subfn 4Bh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02195)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=4Ah
- Format of NetWare "Keyed Change Bindery Object Password" request packet:
- Offset Size Description (Table 02195)
- 00h WORD length of following data
- 02h BYTE 4Bh (subfunction "Keyed Change Bindery Object Password")
- 03h 8 BYTEs key
- 0Bh WORD type
- 0Dh BYTE length of object name
- 0Eh N BYTEs object name
- BYTE length of new password
- N BYTEs new password
- SeeAlso: #01948
- --------N-21F217SF4C-------------------------
- INT 21 - Novell NetWare - LIST RELATIONS OF AN OBJECT
- AX = F217h subfn 4Ch
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02196)
- ES:DI -> reply buffer (see #02197)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=39h
- Format of NetWare "List Relations Of An Object" request packet:
- Offset Size Description (Table 02196)
- 00h WORD length of following data
- 02h BYTE 4Ch (subfunction "List Relations Of An Object")
- 03h DWORD last bindery ID seen (set to FFFFFFFFh on first call)
- 07h WORD object type
- 09h BYTE length of object's name
- 0Ah N BYTEs object's name
- BYTE length of property name
- N BYTEs property name
- SeeAlso: #02197
- Format of NetWare "List Relations Of An Object" reply packet:
- Offset Size Description (Table 02197)
- 00h WORD number of relations returned
- 02h var relations
- SeeAlso: #02196
- --------N-21F217SF64-------------------------
- INT 21 - Novell NetWare v2.1+ - CREATE QUEUE
- AX = F217h subfn 64h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01962 at AH=E3h/SF=64h)
- ES:DI -> reply buffer (see #02198)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=64h,AX=F217h/SF=65h,AX=F217h/SF=66h
- Format of NetWare "Create Queue" reply packet:
- Offset Size Description (Table 02198)
- 00h DWORD (big-endian) object ID of queue
- SeeAlso: #01962,#01963
- --------N-21F217SF65-------------------------
- INT 21 - Novell NetWare v2.1+ - DESTROY QUEUE
- AX = F217h subfn 65h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01964 at AH=E3h/SF=65h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=65h,AX=F217h/SF=64h,AX=F217h/SF=66h
- --------N-21F217SF66-------------------------
- INT 21 - Novell NetWare v2.1+ - READ QUEUE CURRENT STATUS (OLD)
- AX = F217h subfn 66h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01965 at AH=E3h/SF=64h)
- ES:DI -> reply buffer (see #02199)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=66h,AX=F217h/SF=64h,AX=F217h/SF=67h
- Format of NetWare "Read Queue Current Status (Old)" reply packet:
- Offset Size Description (Table 02199)
- 00h DWORD (big-endian) object ID of queue
- 04h BYTE status of queue (see #01967)
- 05h BYTE number of jobs in queue (00h-FAh)
- 06h BYTE number of servers attached to queue (00h-19h)
- 07h 25 DWORDs list of object IDs of attached servers
- 6Bh 25 BYTEs list of attached servers' stations
- 84h BYTE (call) maximum number of servers to return
- SeeAlso: #01965,#01966 at AH=E3h/SF=66h
- --------N-21F217SF67-------------------------
- INT 21 - Novell NetWare v2.1+ - SET QUEUE CURRENT STATUS (OLD)
- AX = F217h subfn 67h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01968 at AH=E3h/SF=67h)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=67h,AX=F217h/SF=66h,AX=F217h/SF=68h
- --------N-21F217SF68-------------------------
- INT 21 - Novell NetWare v2.1+ - CREATE QUEUE JOB AND FILE (OLD)
- AX = F217h subfn 68h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01970 at AH=E3h/SF=68h)
- ES:DI -> reply buffer (see #02200)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=68h,AX=F217h/SF=67h,AX=F217h/SF=69h
- Format of NetWare "Create Queue Job And File (Old)" reply packet:
- Offset Size Description (Table 02200)
- 00h BYTE client station
- 01h BYTE client task number
- 02h DWORD (big-endian) object ID of client
- 06h DWORD (big-endian) object ID of target server
- 0Ah 6 BYTEs target execution time (year,month,day,hour,minute,second)
- 10h 6 BYTEs job entry time (year,month,day,hour,minute,second)
- 16h WORD (big-endian) job number
- 18h WORD (big-endian) job type
- 1Ah BYTE job position
- 1Bh BYTE job control flags (see #01980)
- 1Ch 14 BYTEs ASCIZ job file name
- 2Ah 6 BYTEs job file handle
- 30h BYTE server station
- 31h BYTE server task number
- 32h DWORD (big-endian) object ID of server or 00000000h
- SeeAlso: #01970,#01972
- --------N-21F217SF69-------------------------
- INT 21 - Novell NetWare v2.1+ - CLOSE FILE AND START QUEUE JOB (OLD)
- AX = F217h subfn 69h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01973 at AH=E3h/SF=69h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=69h,AX=F217h/SF=6Ah,AX=F217h/SF=7Fh
- --------N-21F217SF6A-------------------------
- INT 21 - Novell NetWare v2.1+ - REMOVE JOB FROM QUEUE (OLD)
- AX = F217h subfn 6Ah
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01975 at AH=E3h/SF=6Ah)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=6Ah,AX=F217h/SF=68h,AX=F217h/SF=69h
- --------N-21F217SF6B-------------------------
- INT 21 - Novell NetWare v2.1+ - GET QUEUE JOB LIST (OLD)
- AX = F217h subfn 6Bh
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01976 at AH=E3h/SF=6Bh)
- ES:DI -> reply buffer (see #02201)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=6Bh,AX=F217h/SF=6Ah,AX=F217h/SF=6Ch
- SeeAlso: AX=F217h/SF=81h
- Format of NetWare "Get Queue Job List (old)" reply packet:
- Offset Size Description (Table 02201)
- 00h WORD (big-endian) job count
- 02h N WORDs (big-endian) list of job numbers by position in queue
- SeeAlso: #01976,#01977 at AH=E3h/SF=6Bh
- --------N-21F217SF6C-------------------------
- INT 21 - Novell NetWare v2.1+ - READ QUEUE JOB ENTRY (OLD)
- AX = F217h subfn 6Ch
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01978 at AH=E3h/SF=6Ch)
- ES:DI -> reply buffer (see #02202)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=6Ch,AX=F217h/SF=6Bh,AX=F217h/SF=6Dh
- Format of NetWare "Read Queue Job Entry (old)" reply packet:
- Offset Size Description (Table 02202)
- 00h BYTE client station number
- 01h BYTE client task number
- 02h DWORD object ID of client
- 06h DWORD (big-endian) object ID of target server
- FFFFFFFFh if any server acceptable
- 0Ah 6 BYTEs target execution time (year,month,day,hour,minute,second)
- FFFFFFFFFFFFh if serviced as soon as possible
- 10h 6 BYTEs job entry time (year,month,day,hour,minute,second)
- 16h WORD (big-endian) job number
- 18h WORD (big-endian) job type
- 1Ah BYTE job position
- 1Bh BYTE job control flags (see #01980)
- 1Ch 14 BYTEs ASCIZ job filename
- 2Ah 6 BYTEs job file handle
- 30h BYTE server station
- 31h BYTE server task number
- 32h DWORD object ID of server
- 36h 50 BYTEs ASCIZ job description string
- 68h 152 BYTEs client record area
- SeeAlso: #01978,#01979
- --------N-21F217SF6D-------------------------
- INT 21 - Novell NetWare v2.1+ - CHANGE QUEUE JOB ENTRY (OLD)
- AX = F217h subfn 6Dh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01981 at AH=E3h/SF=6Dh)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=7Bh,AH=E3h/SF=6Dh,AX=F217h/SF=6Ch
- --------N-21F217SF6E-------------------------
- INT 21 - Novell NetWare v2.1+ - CHANGE QUEUE JOB POSITION
- AX = F217h subfn 6Eh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01982 at AH=E3h/SF=6Eh)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AX=F217h/SF=6Dh,AH=E3h/SF=6Eh
- --------N-21F217SF6F-------------------------
- INT 21 - Novell NetWare v2.1+ - ATTACH QUEUE SERVER TO QUEUE
- AX = F217h subfn 6Fh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01984 at AH=E3h/SF=6Fh)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=6Fh,AX=F217h/SF=D2h
- --------N-21F217SF70-------------------------
- INT 21 - Novell NetWare v2.1+ - DETACH QUEUE SERVER FROM QUEUE
- AX = F217h subfn 70h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01985 at AH=E3h/SF=70h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=70h,AX=F217h/SF=6Fh
- --------N-21F217SF71-------------------------
- INT 21 - Novell NetWare v2.1+ - SERVICE QUEUE JOB AND OPEN FILE
- AX = F217h subfn 71h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01986 at AH=E3h/SF=71h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- Notes: the caller must be on a workstation which is security-equivalent to a
- member of the queue's Q_USERS, Q_OPERATORS, or Q_SERVERS properties
- SeeAlso: AH=E3h/SF=71h,AX=F217h/SF=70h,AX=F217h/SF=72h
- --------N-21F217SF72-------------------------
- INT 21 - Novell NetWare v2.1+ - FINISH SERVICING QUEUE JOB (OLD)
- AX = F217h subfn 72h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01987 at AH=E3h/SF=72h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=72h,AX=F217h/SF=71h,AX=F217h/SF=73h
- SeeAlso: AX=F217h/SF=83h
- --------N-21F217SF73-------------------------
- INT 21 - Novell NetWare v2.1+ - ABORT SERVICING QUEUE JOB (OLD)
- AX = F217h subfn 73h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01988 at AH=E3h/SF=73h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=73h,AX=F217h/SF=72h,AX=F217h/SF=84h
- --------N-21F217SF74-------------------------
- INT 21 - Novell NetWare v2.1+ - CHANGE TO CLIENT RIGHTS (OLD)
- AX = F217h subfn 74h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01990 at AH=E3h/SF=74h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- Desc: temporarily assume the login identity of the client submitting the
- job being serviced
- SeeAlso: AH=F2h"NetWare",AH=E3h/SF=74h,AX=F217h/SF=85h
- --------N-21F217SF75-------------------------
- INT 21 - Novell NetWare v2.1+ - RESTORE QUEUE SERVER RIGHTS
- AX = F217h subfn 75h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01991 at AH=E3h/SF=75h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=75h,AX=F217h/SF=74h
- --------N-21F217SF76-------------------------
- INT 21 - Novell NetWare - READ QUEUE SERVER CURRENT STATUS (OLD)
- AX = F217h subfn 76h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01992 at AH=E3h/SF=76h)
- ES:DI -> reply buffer (see #02203)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=76h,AX=F217h/SF=74h,AX=F217h/SF=77h
- Format of NetWare "Read Queue Server Current Status (old)" reply packet:
- Offset Size Description (Table 02203)
- 00h 64 BYTEs server status record (format depends on server)
- first four bytes should contain estimated "price" for an
- average job
- SeeAlso: #01992,#01993 at AH=E3h/SF=76h
- --------N-21F217SF77-------------------------
- INT 21 - Novell NetWare - SET QUEUE SERVER CURRENT STATUS
- AX = F217h subfn 77h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01994 at AH=E3h/SF=77h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=77h,AX=F217h/SF=76h
- --------N-21F217SF78-------------------------
- INT 21 - Novell NetWare - GET QUEUE JOB FILE SIZE (OLD)
- AX = F217h subfn 78h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #01996 at AH=E3h/SF=78h)
- ES:DI -> reply buffer (see #02204)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=78h,AX=F217h/SF=71h,AX=F217h/SF=79h
- Format of NetWare "Get Queue Job File Size (old)" reply packet:
- Offset Size Description (Table 02204)
- 00h DWORD (big-endian) object ID of queue
- 04h WORD (big-endian) job number
- 06h DWORD (big-endian) size of job file in bytes
- SeeAlso: #01996,#01997 at AH=E3h/SF=78h
- --------N-21F217SF79-------------------------
- INT 21 - Novell NetWare - CREATE QUEUE JOB AND FILE
- AX = F217h subfn 79h
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02205)
- ES:DI -> reply buffer (see #02206)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=7Ah,AX=F217h/SF=7Bh
- Format of NetWare "Create Queue Job And File" request packet:
- Offset Size Description (Table 02205)
- 00h WORD length of following data
- 02h BYTE 79h (subfunction "Create Queue Job And File")
- 03h DWORD queue ID
- 07h 280 BYTEs queue job structure (see #02210)
- SeeAlso: #02206,#02207,#02209
- Format of NetWare "Create Queue Job And File" reply packet:
- Offset Size Description (Table 02206)
- 00h 10 BYTEs reserved for future use
- 0Ah DWORD client station
- 0Eh DWORD client task
- 12h DWORD client ID
- 16h DWORD target server ID
- 1Ah 6 BYTEs target execution time year,month,day,hour,minute,second
- (FFFFFFFFFFFFh = first opportunity)
- 20h 6 BYTEs job entry time
- (set by queue manager)
- 26h DWORD job number (1-999) assigned by queue manager
- 2Ah WORD job type
- 2Ch WORD position of job in queue (0001h = first, etc.)
- 2Eh WORD job control flags (see #01980 at AH=E3h/SF=6Ch)
- 30h 14 BYTEs ASCIZ job file name
- 3Eh DWORD job file handle (set by queue manager)
- 42h DWORD server station (set by queue manager)
- 46h DWORD server task number (set by queue manager)
- 4Ah DWORD server object ID (set by queue manager)
- SeeAlso: #02205,#02210
- --------N-21F217SF7A-------------------------
- INT 21 - Novell NetWare - READ QUEUE JOB ENTRY
- AX = F217h subfn 7Ah
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02207)
- ES:DI -> reply buffer (see #02208)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=79h,AX=F217h/SF=7Bh
- Format of NetWare "Read Queue Job Entry" request packet:
- Offset Size Description (Table 02207)
- 00h WORD length of following data
- 02h BYTE 7Ah (subfunction "Read Queue Job Entry")
- 03h DWORD queue ID
- 07h DWORD job entry number
- SeeAlso: #02208,#02205,#02209
- Format of NetWare "Read Queue Job Entry" reply packet:
- Offset Size Description (Table 02208)
- 00h 280 BYTEs job structure (see #02210)
- SeeAlso: #02207
- --------N-21F217SF7B-------------------------
- INT 21 - Novell NetWare v2.1+ - CHANGE QUEUE JOB ENTRY
- AX = F217h subfn 7Bh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02209)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=6Dh,AX=F217h/SF=79h,AX=F217h/SF=7Dh
- Format of NetWare "Change Queue Job Entry" request packet:
- Offset Size Description (Table 02209)
- 00h WORD length of following data
- 02h BYTE 7Bh (subfunction "Change Queue Job Entry")
- 03h DWORD queue ID
- 07h 280 BYTEs job structure (see #02210)
- SeeAlso: #02205,#02207
- Format of NetWare v3.11+ job structure:
- Offset Size Description (Table 02210)
- 00h WORD record-in-use flag
- 02h DWORD -> previous record
- 06h DWORD -> next record
- 0Ah DWORD client station connection number
- 0Eh DWORD client task number
- (set by queue manager)
- 12h DWORD client object ID
- 16h DWORD target server object ID
- 1Ah 6 BYTEs target execution time year,month,day,hour,minute,second
- (FFFFFFFFFFFFh = first opportunity)
- 20h 6 BYTEs job entry time
- (set by queue manager)
- 26h DWORD job number (1-999) assigned by queue manager
- 2Ah WORD job type
- 2Ch WORD position of job in queue (0001h = first, etc.)
- 2Eh WORD job control flags (see #01980 at AH=E3h/SF=6Ch)
- 30h 14 BYTEs ASCIZ job file name
- 3Eh DWORD job file handle (set by queue manager)
- 42h DWORD server station (set by queue manager)
- 46h DWORD server task number (set by queue manager)
- 4Ah DWORD server object ID (set by queue manager)
- 4Eh 50 BYTEs ASCIZ job description string
- 80h 152 BYTEs client record area
- SeeAlso: #02209,#01971
- --------N-21F217SF7D-------------------------
- INT 21 - Novell NetWare - READ QUEUE CURRENT STATUS
- AX = F217h subfn 7Dh
- CX = length of request packet in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request packet (see #02211)
- ES:DI -> reply buffer (see #02212)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=66h,AX=F217h/SF=79h,AX=F217h/SF=7Bh
- SeeAlso: AX=F217h/SF=7Eh
- Format of NetWare "Read Queue Current Status" request packet:
- Offset Size Description (Table 02211)
- 00h WORD length of following data
- 02h BYTE 7Dh (subfunction "Read Queue Current Status")
- 03h DWORD (big-endian) object ID of queue
- SeeAlso: #02212,#02213
- Format of NetWare "Read Queue Current Status" reply packet:
- Offset Size Description (Table 02212)
- 00h DWORD queue ID
- 04h DWORD queue status
- bit 0: no more jobs can be added
- bit 1: no more queue servers can be attached
- bit 2: attached queu servers can not service queue jobs
- 08h DWORD current number of jobs in queue
- 0Ch DWORD number of servers attached to queue
- 10h N DWORDs attached server IDs
- SeeAlso: #02211,#01966 at AH=E3h/SF=66h
- --------N-21F217SF7E-------------------------
- INT 21 - Novell NetWare - SET QUEUE CURRENT STATUS
- AX = F217h subfn 7Eh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02213)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=7Dh
- Format of NetWare "Set Queue Current Status" request packet:
- Offset Size Description (Table 02213)
- 00h WORD length of following data
- 02h BYTE 7Eh (subfunction "Set Queue Current Status")
- 03h DWORD queue ID
- 07h DWORD queue status
- bit 0: no more jobs can be added
- bit 1: no more queue servers can be attached
- bit 2: attached queu servers can not service queue jobs
- SeeAlso: #02211
- --------N-21F217SF7F-------------------------
- INT 21 - Novell NetWare - CLOSE FILE AND START QUEUE JOB
- AX = F217h subfn 7Fh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02214)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=69h,AX=F217h/SF=80h,AX=F217h/SF=81h
- Format of NetWare "Close File And Start Queue Job" request packet:
- Offset Size Description (Table 02214)
- 00h WORD length of following data
- 02h BYTE 7Fh (subfunction "Close File And Start Queue Job")
- 03h DWORD queue ID
- 07h DWORD job number
- --------N-21F217SF80-------------------------
- INT 21 - Novell NetWare - REMOVE JOB FROM QUEUE
- AX = F217h subfn 80h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02215)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=6Ah,AX=F217h/SF=7Fh
- Format of NetWare "Remove Job From Queue" request packet:
- Offset Size Description (Table 02215)
- 00h WORD length of following data
- 02h BYTE 80h (subfunction "Remove Job From Queue")
- 03h DWORD queue ID
- 07h DWORD job number (returned when job was added to queue)
- --------N-21F217SF81-------------------------
- INT 21 - Novell NetWare - GET QUEUE JOB LIST
- AX = F217h subfn 81h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02216)
- ES:DI -> reply buffer (see #02217)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=6Bh
- Format of NetWare "Get Queue Job List" request packet:
- Offset Size Description (Table 02216)
- 00h WORD length of following data
- 02h BYTE 81h (subfunction "Get Queue Job List")
- 03h DWORD queue ID
- 07h DWORD address of next job in queue
- SeeAlso: #02217
- Format of NetWare "Get Queue Job List" reply packet:
- Offset Size Description (Table 02217)
- 00h DWORD total jobs in queue
- 04h DWORD length of job number list (max 125)
- 08h N DWORDs list of job numbers in queue
- SeeAlso: #02216
- --------N-21F217SF82-------------------------
- INT 21 - Novell NetWare v2.1+ - CHANGE JOB PRIORITY
- AX = F217h subfn 82h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02218)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell"
- Format of NetWare "Change Job Priority" request packet:
- Offset Size Description (Table 02218)
- 00h WORD length of following data
- 02h BYTE 82h (subfunction "Change Job Priority")
- 03h DWORD queue ID
- 07h DWORD job number
- 0Bh DWORD priority
- --------N-21F217SF83-------------------------
- INT 21 - Novell NetWare v3.1+ - FINISH SERVICING QUEUE JOB
- AX = F217h subfn 83h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #01998 at AH=E3h/SF=83h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=83h,AX=F217h/SF=72h,AX=F217h/SF=84h
- --------N-21F217SF84-------------------------
- INT 21 - Novell NetWare v3.1+ - ABORT SERVICING QUEUE JOB
- AX = F217h subfn 84h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02000 at AH=E3h/SF=84h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- Desc: inform the Queue Management System (QMS) that the queue server is
- unable to service a previously-accepted job
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=84h,AX=F217h/SF=73h,AX=F217h/SF=83h
- --------N-21F217SF85-------------------------
- INT 21 - Novell NetWare v3.1+ - CHANGE TO CLIENT RIGHTS
- AX = F217h subfn 85h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02219)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- Desc: temporarily assume the login identity of the client submitting the
- job being serviced
- SeeAlso: AH=F2h"NetWare",AH=E3h/SF=74h,AX=F217h/SF=74h
- Format of NetWare "Change to Client Rights" request packet:
- Offset Size Description (Table 02219)
- 00h WORD length of following data
- 02h BYTE 85h (subfunction "Change to Client Rights")
- 03h DWORD queue object ID
- 07h DWORD job number
- SeeAlso: #01990
- --------N-21F217SF86-------------------------
- INT 21 - Novell NetWare v3.1+ - READ QUEUE SERVER CURRENT STATUS
- AX = F217h subfn 86h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02220)
- ES:DI -> reply buffer (see #02221)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=76h,AX=F217h/SF=77h,AX=F217h/SF=7Dh
- Format of NetWare "Read Queue Server Current Status" request packet:
- Offset Size Description (Table 02220)
- 00h WORD length of following data
- 02h BYTE 86h (subfunction "Read Queue Server Current Status")
- 03h DWORD queue ID
- 07h DWORD server ID
- 0Bh DWORD connection ID
- SeeAlso: #02221
- Format of NetWare "Read Queue Server Current Status" request packet:
- Offset Size Description (Table 02221)
- 00h 64 BYTEs server status record
- SeeAlso: #02220
- --------N-21F217SF87-------------------------
- INT 21 - Novell NetWare v3.1+ - GET QUEUE JOB FILE SIZE
- AX = F217h subfn 87h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02222)
- ES:DI -> reply buffer (see #02223)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=78h
- Format of NetWare "Get Queue Job File Size" request packet:
- Offset Size Description (Table 02222)
- 00h WORD length of following data
- 02h BYTE 87h (subfunction "Get Queue Job File Size")
- ???
- SeeAlso: #02223
- Format of NetWare "Get Queue Job File Size" request packet:
- Offset Size Description (Table 02223)
- 00h ???
- SeeAlso: #02222
- --------N-21F217SF96-------------------------
- INT 21 - Novell NetWare - GET ACCOUNT STATUS
- AX = F217h subfn 96h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02003 at AH=E3h/SF=96h)
- ES:DI -> reply buffer (see #02224)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=96h,AX=F217h/SF=97h,AX=F217h/SF=98h
- Format of NetWare "Get Account Status" reply packet:
- Offset Size Description (Table 02224)
- 00h DWORD (big-endian) account balance
- 04h DWORD (big-endian) credit limit
- signed number indicating lowest allowable account balance
- 06h 120 BYTEs reserved
- 80h DWORD (big-endian) object ID, server 1
- 84h DWORD (big-endian) hold amount, server 1
- ...
- F6h DWORD (big-endian) object ID, server 16
- FAh DWORD (big-endian) hold amount, server 16
- Note: the reply buffer lists the servers which have placed holds on a portion
- of the account balance, and the amount reserved by each
- SeeAlso: #02003,#02004 at AH=E3h/SF=96h
- --------N-21F217SF97-------------------------
- INT 21 - Novell NetWare - SUBMIT ACCOUNT CHARGE
- AX = F217h subfn 97h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02005 at AH=E3h/SF=97h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=97h,AX=F217h/SF=96h,AX=F217h/SF=98h
- --------N-21F217SF98-------------------------
- INT 21 - Novell NetWare - SUBMIT ACCOUNT HOLD
- AX = F217h subfn 98h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02006 at AH=E3h/SF=98h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=98h,AX=F217h/SF=97h,AX=F217h/SF=99h
- --------N-21F217SF99-------------------------
- INT 21 - Novell NetWare - SUBMIT ACCOUNT NOTE
- AX = F217h subfn 99h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02008 at AH=E3h/SF=99h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=99h,AX=F217h/SF=96h,AX=F217h/SF=98h
- --------N-21F217SFC8-------------------------
- INT 21 - Novell NetWare - CHECK CONSOLE PRIVILEGES
- AX = F217h subfn C8h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02009 at AH=E3h/SF=C8h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=C8h,AX=F217h/SF=C9h,AX=F217h/SF=D1h
- --------N-21F217SFC9-------------------------
- INT 21 - Novell NetWare - GET FILE SERVER DESCRIPTION STRINGS
- AX = F217h subfn C9h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02010 at AH=E3h/SF=C9h)
- ES:DI -> reply buffer (see #02225)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=C9h,AX=F217h/SF=C8h,AX=F217h/SF=CAh
- Format of NetWare "Get File Server Description Strings" reply packet:
- Offset Size Description (Table 02225)
- 00h var ASCIZ name of company distributing this copy of NetWare
- var ASCIZ version and revision
- 9 BYTEs ASCIZ revision date (mm/dd/yy)
- var ASCIZ copyright notice
- SeeAlso: #02010,#02011 at AH=E3h/SF=C9h
- --------N-21F217SFCA-------------------------
- INT 21 - Novell NetWare - SET FILE SERVER DATE AND TIME
- AX = F217h subfn CAh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02012 at AH=E3h/SF=CAh)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=CAh,AX=F217h/SF=C8h,AX=F217h/SF=CBh
- --------N-21F217SFCB-------------------------
- INT 21 - Novell NetWare - DISABLE FILE SERVER LOGIN
- AX = F217h subfn CBh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02013 at AH=E3h/SF=CBh)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=CBh,AX=F217h/SF=C8h,AX=F217h/SF=CCh
- --------N-21F217SFCC-------------------------
- INT 21 - Novell NetWare - ENABLE FILE SERVER LOGIN
- AX = F217h subfn CCh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02015 at AH=E3h/SF=CCh)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=CCh,AX=F217h/SF=C8h,AX=F217h/SF=CBh
- --------N-21F217SFCD-------------------------
- INT 21 - Novell NetWare - GET FILE SERVER LOGIN STATUS
- AX = F217h subfn CDh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02016 at AH=E3h/SF=CDh)
- ES:DI -> reply buffer (see #02226)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=CDh,AX=F217h/SF=CBh,AX=F217h/SF=CCh
- Format of NetWare "Get File Server Login Status" reply packet:
- Offset Size Description (Table 02226)
- 00h BYTE login state (00h disabled, 01h enabled)
- SeeAlso: #02016,#02017 at AH=E3h/SF=CDh
- --------N-21F217SFCE-------------------------
- INT 21 - Novell NetWare - PURGE ALL ERASED FILES
- AX = F217h subfn CEh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02018 at AH=E3h/SF=CEh)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=CEh,AX=F244h
- --------N-21F217SFCF-------------------------
- INT 21 - Novell NetWare - DISABLE TRANSACTION TRACKING
- AX = F217h subfn CFh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02019 at AH=E3h/SF=CFh)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=CFh,AX=F217h/SF=D0h
- --------N-21F217SFD0-------------------------
- INT 21 - Novell NetWare - ENABLE TRANSACTION TRACKING
- AX = F217h subfn D0h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02021 at AH=E3h/SF=D0h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=D0h,AX=F217h/SF=CFh
- --------N-21F217SFD1-------------------------
- INT 21 - Novell NetWare - SEND CONSOLE BROADCAST
- AX = F217h subfn D1h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02022 at AH=E3h/SF=D1h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=D1h,AX=F217h/SF=D2h
- --------N-21F217SFD2-------------------------
- INT 21 - Novell NetWare v3+ - CLEAR CONNECTION NUMBER (LOGOUT STATION)
- AX = F217h subfn D2h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02023 at AH=E3h/SF=D2h)
- ES:DI ignored
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=D2h,AX=F217h/SF=D1h,AX=F217h/SF=FEh
- --------N-21F217SFD3-------------------------
- INT 21 - Novell NetWare - DOWN FILE SERVER
- AX = F217h subfn D3h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02026 at AH=E3h/SF=D3h)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=D3h,AX=F217h/SF=D2h
- --------N-21F217SFD4-------------------------
- INT 21 - Novell NetWare - GET FILE SYSTEM STATISTICS
- AX = F217h subfn D4h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02027 at AH=E3h/SF=D4h)
- ES:DI -> reply buffer (see #02227)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=D4h,AX=F217h/SF=D6h,AX=F217h/SF=D9h
- Format of NetWare "Get File System Statistics" reply packet:
- Offset Size Description (Table 02227)
- 00h DWORD clock ticks since system started
- 04h WORD maximum open files set by configuration
- 06h WORD maximum files open concurrently
- 08h WORD current number of open files
- 0Ah DWORD total files opened
- 0Eh DWORD total file read requests
- 12h DWORD total file write requests
- 16h WORD current changed FATs
- 18h WORD total changed FATs
- 1Ah WORD number of FAT write errors
- 1Ch WORD number of fatal FAT write errors
- 1Eh WORD number of FAT scan errors
- 20h WORD maximum concurrently-indexed files
- 22h WORD current number of indexed files
- 24h WORD number of attached indexed files
- 26h WORD number of indexed files available
- Note: all fields are big-endian
- SeeAlso: #02027,#02028 at AH=E3h/SF=D4h
- --------N-21F217SFD5-------------------------
- INT 21 - Novell NetWare - GET TRANSACTION TRACKING STATISTICS
- AX = F217h subfn D5h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02029 at AH=E3h/SF=D5h)
- ES:DI -> reply buffer (see #02228)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=D5h,AX=F217h/SF=D0h
- Format of NetWare "Get Transaction Tracking Statistics" reply packet:
- Offset Size Description (Table 02228)
- 00h DWORD (big-endian) clock ticks since system started
- 04h BYTE transaction tracking supported if nonzero
- (all following fields are invalid if zero)
- 05h BYTE transaction tracking enabled
- 06h WORD (big-endian) transaction volume number
- 08h WORD (big-endian) maximum simultaneous transactions configured
- 0Ah WORD (big-endian) maximum simultaneous transactions since startup
- 0Ch WORD (big-endian) current transactions in progress
- 0Eh DWORD (big-endian) total transactions performed
- 12h DWORD (big-endian) total write transactions
- 16h DWORD (big-endian) total transactions backed out
- 1Ah WORD (big-endian) number of unfilled backout requests
- 1Ch WORD (big-endian) disk blocks used for transaction tracking
- 1Eh DWORD (big-endian) blocks allocated for tracked-file FATs
- 22h DWORD (big-endian) number of file size changes during a transaction
- 26h DWORD (big-endian) number of file truncations during a transaction
- 2Ah BYTE number of records following
- 2Bh Active Transaction Records [array]
- Offset Size Description
- 00h BYTE logical connection number
- 01h BYTE task number
- SeeAlso: #02029,#02030 at AH=E3h/SF=D5h
- --------N-21F217SFD6-------------------------
- INT 21 - Novell NetWare - GET DISK CACHE STATISTICS
- AX = F217h subfn D6h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02031 at AH=E3h/SF=D6h)
- ES:DI -> reply buffer (see #02229)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=D6h,AX=F217h/SF=D5h,AX=F217h/SF=D8h
- Format of NetWare "Get Disk Cache Statistics" reply packet:
- Offset Size Description (Table 02229)
- 00h DWORD clock ticks since system started
- 04h WORD number of cache buffers
- 06h WORD size of cache buffer in bytes
- 08h WORD number of dirty cache buffers
- 0Ah DWORD number of cache read requests
- 0Eh DWORD number of cache write requests
- 12h DWORD number of cache hits
- 16h DWORD number of cache misses
- 1Ah DWORD number of physical read requests
- 1Eh DWORD number of physical write requests
- 22h WORD number of physical read errors
- 24h WORD number of physical write errors
- 26h DWORD cache get requests
- 2Ah DWORD cache full write requests
- 2Eh DWORD cache partial write requests
- 32h DWORD background dirty writes
- 36h DWORD background aged writes
- 3Ah DWORD total cache writes
- 3Eh DWORD number of cache allocations
- 42h WORD thrashing count
- 44h WORD number of times LRU block was dirty
- 46h WORD number of reads on cache blocks not yet filled by writes
- 48h WORD number of times a fragmented write occurred
- 4Ah WORD number of cache hits on unavailable block
- 4Ch WORD number of times a cache block was scrapped
- Note: all fields are big-endian
- SeeAlso: #02031,#02032 at AH=E3h/SF=D6h
- --------N-21F217SFD7-------------------------
- INT 21 - Novell NetWare - GET DRIVE MAPPING TABLE
- AX = F217h subfn D7h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02033 at AH=E3h/SF=D7h)
- ES:DI -> reply buffer (see #02230)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AX=EF00h,AX=EF01h,AX=EF02h,AH=F2h"Novell",AH=E3h/SF=D7h
- Format of NetWare "Get Drive Mapping Table" reply packet:
- Offset Size Description (Table 02230)
- 00h DWORD (big-endian) clock tick elapsed since system started
- 04h BYTE fault tolerance (SFT) level
- 05h BYTE number of logical drives attached to server
- 06h BYTE number of physical drives attached to server
- 07h 5 BYTEs disk channel types (00h none, 01h XT, 02h AT, 03h SCSI,
- 04h disk coprocessor drive, 32h-FFh value-added drive types)
- 0Ch WORD (big-endian) number of outstanding controller commands
- 0Eh 32 BYTEs drive mapping table (FFh = no such drive)
- 2Eh 32 BYTEs drive mirror table (secondary physical drive, FFh = none)
- 4Eh 32 BYTEs dead mirror table (last drive mapped to, FFh if never mirrored)
- 6Eh BYTE physical drive being remirrored (FFh = none)
- 6Fh BYTE reserved
- 70h DWORD (big-endian) remirrored block
- 74h 60 BYTEs SFT error table (internal error counters)
- SeeAlso: #02033,#02034 at AH=E3h/SF=D7h
- --------N-21F217SFD8-------------------------
- INT 21 - Novell NetWare - GET PHYSICAL DISK STATISTICS
- AX = F217h subfn D8h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02035 at AH=E3h/SF=D8h)
- ES:DI -> reply buffer (see #02231)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=D8h,AX=F217h/SF=D9h
- Format of NetWare "Get Physical Disk Statistics" request packet:
- Offset Size Description (Table 02231)
- 00h DWORD (big-endian) clock ticks since system started
- 04h BYTE physical disk channel
- 05h BYTE flag: drive removable if nonzero
- 06h BYTE physical drive type
- 07h BYTE drive number within controller
- 08h BYTE controller number
- 09h BYTE controller type
- 0Ah DWORD (big-endian) size of drive in 4K disk blocks
- 0Eh WORD (big-endian) number of cylinders on drive
- 10h BYTE number of heads
- 11h BYTE number of sectors per track
- 12h 64 BYTEs ASCIZ drive make and model
- 52h WORD (big-endian) number of I/O errors
- 56h DWORD (big-endian) start of Hot Fix table
- 58h WORD (big-endian) size of Hot Fix table
- 5Ah WORD (big-endian) number of Hot Fix blocks available
- 5Ch BYTE flag: Hot Fix disabled if nonzero
- SeeAlso: #02035,#02036 at AH=E3h/SF=D8h
- --------N-21F217SFD9-------------------------
- INT 21 - Novell NetWare - GET DISK CHANNEL STATISTICS
- AX = F217h subfn D9h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02037 at AH=E3h/SF=D9h)
- ES:DI -> reply buffer (see #02232)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=D9h,AX=F217h/SF=D8h
- Format of NetWare "Get Disk Channel Statistics" reply packet:
- Offset Size Description (Table 02232)
- 00h DWORD (big-endian) clock ticks since system started
- 04h WORD (big-endian) channel run state (see #02039)
- 06h WORD (big-endian) channel synchronization state (see #02040)
- 08h BYTE driver type
- 09h BYTE major version of driver
- 0Ah BYTE minor version of driver
- 0Bh 65 BYTEs ASCIZ driver description
- 4Ch WORD (big-endian) first I/O address used
- 4Eh WORD (big-endian) length of first I/O address
- 50h WORD (big-endian) second I/O address used
- 52h WORD (big-endian) length of second I/O address
- 54h 3 BYTEs first shared memory address
- 57h 2 BYTEs length of first shared memory address
- 59h 3 BYTEs second shared memory address
- 5Ch 2 BYTEs length of second shared memory address
- 5Eh BYTE first interrupt number in-use flag
- 5Fh BYTE first interrupt number used
- 60h BYTE second interrupt number in-use flag
- 61h BYTE second interrupt number used
- 62h BYTE first DMA channel in-use flag
- 63h BYTE first DMA channel used
- 64h BYTE second DMA channel in-use flag
- 65h BYTE second DMA channel used
- 66h BYTE flags
- 67h BYTE reserved
- 68h 80 BYTEs ASCIZ configuration description
- SeeAlso: #02037,#02038 at AH=E3h/SF=D9h
- --------N-21F217SFDA-------------------------
- INT 21 - Novell NetWare v2.2+ - GET CONNECTION'S TASK INFORMATION
- AX = F217h subfn DAh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02041 at AH=E3h/SF=DAh)
- ES:DI -> reply buffer (see #02233)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=DAh,AX=F217h/SF=EAh
- Format of NetWare "Get Connection's Task Information" reply packet:
- Offset Size Description (Table 02233)
- 00h BYTE lock status of connection (see #02043)
- 01h var Lock Status Information (see #02044)
- N BYTE number of records following
- N+1 Active Task Information Records [array]
- Offset Size Description
- 00h BYTE task number (01h-FFh)
- 01h BYTE task state
- 00h normal task
- 01h in TTS explicit transaction
- 02h in TTS implicit transaction
- 04h shared fileset lock active
- SeeAlso: #02248,#02041,#02042 at AH=E3h/SF=DAh
- --------N-21F217SFDB-------------------------
- INT 21 - Novell NetWare v2.2+ - GET CONNECTION'S OPEN FILES (OLD)
- AX = F217h subfn DBh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02045 at AH=E3h/SF=DBh)
- ES:DI -> reply buffer (see #02234)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=DBh,AX=F217h/SF=EBh
- Format of NetWare "Get Connection's Open Files (old)" reply packet:
- Offset Size Description (Table 02234)
- 00h WORD next request record (place in "last record" field on next call)
- 0000h if no more records
- 02h BYTE number of records following
- 03h var array of File Information Records (see #02047 at AH=E3h/SF=DBh)
- SeeAlso: #02045,#02046 at AH=E3h/SF=DBh
- --------N-21F217SFDC-------------------------
- INT 21 - Novell NetWare v2.2+ - GET CONNECTIONS USING A FILE (OLD)
- AX = F217h subfn DCh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02050 at AH=E3h/SF=DCh)
- ES:DI -> reply buffer (see #02235)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=DCh,AX=F217h/SF=ECh
- Format of NetWare "Get Connections Using A File (old)" reply packet:
- Offset Size Description (Table 02235)
- 00h WORD (big-endian) count of tasks which have opened or logged file
- 02h WORD (big-endian) count of tasks which have opened file
- 04h WORD (big-endian) count of opens for reading
- 06h WORD (big-endian) count of opens for writing
- 08h WORD (big-endian) deny read count
- 0Ah WORD (big-endian) deny write count
- 0Ch WORD next request record (place in "last record" field on next call)
- 0000h if no more records
- 0Eh BYTE locked flag
- 00h not locked exclusively
- else locked exclusively
- 0Fh BYTE number of records following
- 10h var array of File Usage Information Records
- (see #02052 at AH=E3h/SF=DCh)
- SeeAlso: #02050,#02051 at AH=E3h/SF=DCh
- --------N-21F217SFDD-------------------------
- INT 21 - Novell NetWare - GET PHYSICAL RECORD LOCKS BY CONNECTN AND FILE (OLD)
- AX = F217h subfn DDh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02054 at AH=E3h/SF=DDh)
- ES:DI -> reply buffer (see #02236)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=DDh,AX=F217h/SF=DEh,AX=F217h/SF=EDh
- Format of NetWare "Get Phys Record Locks By Conn & File (old)" reply packet:
- Offset Size Description (Table 02236)
- 00h WORD next request record (place in "last record" on next call)
- 0000h if no more records
- 02h BYTE number of physical record locks
- 03h BYTE number of records following
- 04h var array of Physical Record Lock Info records
- (see #02056 at AH=E3h/SF=DDh)
- SeeAlso: #02054,#02055 at AH=E3h/SF=DDh
- --------N-21F217SFDE-------------------------
- INT 21 - Novell NetWare - GET PHYSICAL RECORD LOCKS BY FILE (OLD)
- AX = F217h subfn DEh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02058 at AH=E3h/SF=DEh)
- ES:DI -> reply buffer (see #02237)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=DEh,AX=F217h/SF=EEh
- Format of NetWare "Get Physical Record Locks By File (old)" reply packet:
- Offset Size Description (Table 02237)
- 00h WORD next request record (place in "last record" on next call)
- 0000h if no more records
- 02h BYTE number of physical record locks
- 03h BYTE number of records following
- 04h var array of Physical Record Lock Info records (see #02060)
- SeeAlso: #02058,#02059 at AH=E3h/SF=DEh
- --------N-21F217SFDF-------------------------
- INT 21 - Novell NetWare - GET LOGICAL RECORDS BY CONNECTION (OLD)
- AX = F217h subfn DFh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02061 at AH=E3h/SF=DFh)
- ES:DI -> reply buffer (see #02238)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=DFh,AX=F217h/SF=EFh
- Format of NetWare "Get Logical Records By Connection (old)" reply packet:
- Offset Size Description (Table 02238)
- 00h WORD next request record (place in "last record" field on next call)
- 0000h if no more locked records
- 02h BYTE number of records following
- 03h var array of Logical Lock Information Records
- (see #02063 at AH=E3h/SF=DFh)
- SeeAlso: #02061,#02062 at AH=E3h/SF=DFh
- --------N-21F217SFE0-------------------------
- INT 21 - Novell NetWare - GET LOGICAL RECORD INFORMATION (OLD)
- AX = F217h subfn E0h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02064 at AH=E3h/SF=E0h)
- ES:DI -> reply buffer (see #02239)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=E0h,AX=F217h/SF=F0h
- Format of NetWare "Get Logical Record Information (Old)" reply packet:
- Offset Size Description (Table 02239)
- 00h WORD (big-endian) number of logical connections logging the record
- 02h WORD (big-endian) number of logical connections with shareable lock
- 04h WORD (big-endian) next request record (place in "last record" field
- on next call)
- 06h BYTE locked exclusively if nonzero
- 07h BYTE number of records following
- 08h var array of Task Information Records (see #02066 at AH=E3h/SF=E0h)
- SeeAlso: #02064,#02065 at AH=E3h/SF=E0h
- --------N-21F217SFE1-------------------------
- INT 21 - Novell NetWare - GET CONNECTION'S SEMAPHORES (OLD)
- AX = F217h subfn E1h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02067 at AH=E3h/SF=E1h)
- ES:DI -> reply buffer (see #02240)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=E1h,AX=F217h/SF=F1h
- Format of NetWare "Get Connection's Semaphores (old)" reply packet:
- Offset Size Description (Table 02240)
- 00h WORD next request record (place in "last record" field on next call)
- 02h BYTE number of records following
- 03h var array of Semaphore Information Records
- (see #02069 at AH=E3h/SF=E1h)
- SeeAlso: #02067,#02068 at AH=E3h/SF=E1h
- --------N-21F217SFE2-------------------------
- INT 21 - Novell NetWare - GET SEMAPHORE INFORMATION (OLD)
- AX = F217h subfn E2h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02070 at AH=E3h/SF=E2h)
- ES:DI -> reply buffer (see #02241)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=E2h,AX=F217h/SF=F2h
- Format of NetWare "Get Semaphore Information (old)" reply packet:
- Offset Size Description (Table 02241)
- 00h WORD next request record (place in "last record" on next call)
- 0000h if no more
- 02h WORD (big-endian) number of logical connections opening semaphore
- 04h BYTE semaphore value (-127 to 128)
- 05h BYTE number of records following
- 06h var array of Semaphore Information records (see #02072)
- SeeAlso: #02070,#02071 at AH=E3h/SF=E2h
- --------N-21F217SFE3-------------------------
- INT 21 - Novell NetWare - GET LAN DRIVER'S CONFIGURATION INFORMATION
- AX = F217h subfn E3h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02073 at AH=E3h/SF=E3h)
- ES:DI -> reply buffer (see #02242)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=E3h,AX=F217h/SF=E7h,AX=F217h/SF=E8h
- Format of NetWare "Get Lan Driver's Configuration Information" reply packet:
- Offset Size Description (Table 02242)
- 00h 4 BYTEs network number
- 04h 6 BYTEs node number
- 0Ah BYTE LAN driver installed (00h no--remaining fields invalid)
- 0Bh BYTE option number selected at configuration time
- 0Ch 160 BYTEs configuration text
- ASCIZ hardware type
- ASCIZ hardware settings
- SeeAlso: #02073,#02074 at AH=E3h/SF=E3h
- --------N-21F217SFE5-------------------------
- INT 21 - Novell NetWare - GET CONNECTION'S USAGE STATISTICS
- AX = F217h subfn E5h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02075 at AH=E3h/SF=E5h)
- ES:DI -> reply buffer (see #02243)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=E5h,AX=F217h/SF=EAh
- Format of NetWare "Get Connection's Usage Statistics" reply packet:
- Offset Size Description (Table 02243)
- 00h DWORD (big-endian) clock ticks since server started
- 04h 6 BYTEs bytes read
- 0Ah 6 BYTEs bytes written
- 10h DWORD (big-endian) total request packets
- SeeAlso: #02075,#02076 at AH=E3h/SF=E5h
- --------N-21F217SFE6-------------------------
- INT 21 - Novell NetWare - GET OBJECT'S REMAINING DISK SPACE
- AX = F217h subfn E6h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02077 at AH=E3h/SF=E6h)
- ES:DI -> reply buffer (see #02244)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=E6h,AX=F216h/SF=20h,AX=F216h/SF=23h
- Format of NetWare "Get Object's Remaining Disk Space" reply packet:
- Offset Size Description (Table 02244)
- 00h DWORD (big-endian) clock ticks elapsed since server started
- 04h DWORD (big-endian) object ID
- 08h DWORD (big-endian) 4K disk blocks available to user
- 0Ch BYTE restrictions (00h enforced, FFh not enforced)
- SeeAlso: #02077,#02078 at AH=E3h/SF=E6h
- --------N-21F217SFE7-------------------------
- INT 21 - Novell NetWare - GET FILE SERVER LAN I/O STATISTICS
- AX = F217h subfn E7h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02079 at AH=E3h/SF=E7h)
- ES:DI -> reply buffer (see #02245)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=E7h,AX=F217h/SF=11h,AX=F217h/SF=F5h
- Format of NetWare "Get File Server Lan I/O Statistics" reply packet:
- Offset Size Description (Table 02245)
- 00h DWORD clock ticks since system started
- 04h WORD total routing buffers
- 06h WORD maximum routing buffers used
- 08h WORD current routing buffers used
- 0Ah DWORD total file service packets
- 0Eh WORD number of file service packets buffered
- 10h WORD number of invalid connection packets
- 12h WORD packets with bad logical connection numbers
- 14h WORD number of packets received during processing
- 16h WORD number of requests reprocessed
- 18h WORD packets with bad sequence numbers
- 1Ah WORD number of duplicate replies sent
- 1Ch WORD number of acknowledgements sent
- 1Eh WORD number of packets with bad request types
- 20h WORD requests to attach to ws for which a request is being processed
- 22h WORD requests to attach from ws which is already attaching
- 24h WORD number of forged detach requests
- 26h WORD detach requests with bad connection number
- 28h WORD requests to detach from ws for which requests pending
- 2Ah WORD number of cancelled replies
- 2Ch WORD packets discarded due to excessive hop count
- 2Eh WORD packets discarded due to unknown net
- 30h WORD incoming packets discarded for lack of DGroup buffer
- 32h WORD outgoing packets discarded due to lack of buffer
- 34h WORD received packets destined for B,C, or D side drivers
- 36h DWORD number of NetBIOS packets propagated through net
- 3Ah DWORD total number of non-file-service packets
- 3Eh DWORD total number of routed packets
- Note: all fields are big-endian
- SeeAlso: #02079,#02080 at AH=E3h/SF=E7h
- --------N-21F217SFE8-------------------------
- INT 21 - Novell NetWare - GET FILE SERVER MISC INFORMATION
- AX = F217h subfn E8h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02081 at AH=E3h/SF=E8h)
- ES:DI -> reply buffer (see #02246)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=E8h,AX=F217h/SF=11h,AX=F217h/SF=F5h
- Format of NetWare "Get File Server Misc Information" reply packet:
- Offset Size Description (Table 02246)
- 00h DWORD (big-endian) clock ticks since system started
- 04h BYTE CPU type
- 00h Motorola 68000
- 01h Intel 8086, 8088, or V20
- 02h Intel 80286+
- 05h BYTE reserved
- 06h BYTE number of service processes in server
- 07h BYTE server utilization in percent
- 08h WORD (big-endian) maximum bindery objects set by configuration
- 0000h = unlimited
- 0Ah WORD (big-endian) maximum number of bindery objects used
- 0Ch WORD (big-endian) current number of bindery objects in use
- 0Eh WORD (big-endian) total server memory in KB
- 10h WORD (big-endian) wasted server memory in KB
- normally 0000h
- 12h WORD number of records following (01h-03h)
- 14h var array of Dynamic Memory Information records (see #02083)
- SeeAlso: #02081,#02082 at AH=E3h/SF=E8h
- --------N-21F217SFE9-------------------------
- INT 21 - Novell NetWare - GET VOLUME INFORMATION
- AX = F217h subfn E9h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02084 at AH=E3h/SF=E9h)
- ES:DI -> reply buffer (see #02247)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AH=E3h/SF=E9h,AX=F212h,AX=F216h/SF=15h
- Format of NetWare "Get Volume Information" reply packet:
- Offset Size Description (Table 02247)
- 00h DWORD (big-endian) elapsed system time
- 04h BYTE volume number
- 05h BYTE logical drive number
- 06h WORD (big-endian) sectors per block
- 08h WORD (big-endian) starting block
- 0Ah WORD (big-endian) total blocks on volume
- 0Ch WORD (big-endian) blocks available on volume
- 0Eh WORD (big-endian) total directory slots
- 10h WORD (big-endian) directory slots available
- 12h WORD (big-endian) maximum directory entries actually used
- 14h BYTE flag: volume hashed if nonzero
- 15h BYTE flag: volume cached if nonzero
- 16h BYTE flag: volume removable if nonzero
- 17h BYTE flag: volume mounted if nonzero
- 18h 16 BYTEs NUL-padded volume name
- SeeAlso: #02084,#02085 at AH=E3h/SF=E9h
- --------N-21F217SFEA-------------------------
- INT 21 - Novell NetWare v3.11+ - GET CONNECTION'S TASK INFORMATION
- AX = F217h subfn EAh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02248)
- ES:DI -> reply buffer (see #02233)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=DAh
- Format of NetWare "Get Connection's Task Information" request packet:
- Offset Size Description (Table 02248)
- 00h WORD length of following data
- 02h BYTE EAh (subfunction "Get Connection's Task Information")
- 03h WORD connection number
- SeeAlso: #02233,#02041 at AH=E3h/SF=DAh
- --------N-21F217SFEB-------------------------
- INT 21 - Novell NetWare v3+ - GET CONNECTION'S OPEN FILES
- AX = F217h subfn EBh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02249)
- ES:DI -> reply buffer (see #02250)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=DBh
- Format of NetWare "Get Connection's Open Files" request buffer:
- Offset Size Description (Table 02249)
- 00h WORD 0005h (length of following data)
- 02h BYTE EBh (subfunction "Get Connection's Open Files")
- 03h WORD target connection number
- 05h WORD last record seen (set to 0000h for first call)
- Note: connection numbers greater than the maximum supported by the server
- can cause ABENDs
- SeeAlso: #02250
- Format of NetWare "Get Connection's Open Files" reply buffer:
- Offset Size Description (Table 02250)
- 00h WORD next request record
- 02h WORD number of records returned (max 28)
- 04h 29N BYTEs array of connection records (see #02251)
- SeeAlso: #02249
- Format of NetWare connection record:
- Offset Size Description (Table 02251)
- 00h WORD task number
- 02h BYTE lock type
- 03h BYTE access control
- 04h BYTE lock flag
- 05h BYTE volume number
- 06h DWORD parent directory entry number
- 0Ah DWORD directory entry number
- 0Eh BYTE fork count
- 0Fh BYTE data stream type / name space (see #02387)
- 10h BYTE file name length
- 11h 12 BYTEs file name
- SeeAlso: #02250
- --------N-21F217SFEC-------------------------
- INT 21 - Novell NetWare v3+ - GET CONNECTIONS USING A FILE
- AX = F217h subfn ECh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02252)
- ES:DI -> reply buffer (see #02253)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=DCh
- Format of NetWare "Get Connections Using a File" request buffer:
- Offset Size Description (Table 02252)
- 00h WORD 0009h (length of following data)
- 02h BYTE ECh (subfunction "Get Connections Using a File")
- 03h BYTE data stream type
- 04h BYTE volume number
- 05h DWORD directory entry number
- 09h WORD last record seen (0000h for first call)
- SeeAlso: #02253
- Format of NetWare "Get Connections Using a File" reply buffer:
- Offset Size Description (Table 02253)
- 00h WORD next request record
- 02h WORD use count
- 04h WORD open count
- 06h WORD number of times open for reading
- 08h WORD number of times open for writing
- 0Ah WORD Deny Read count
- 0Ch WORD Deny Write count
- 0Eh BYTE flag: locked
- 0Fh BYTE fork count
- 10h WORD number of records returned (max 70)
- 12h 7N BYTEs returned records (see #02254)
- SeeAlso: #02252
- Format of returned record:
- Offset Size Description (Table 02254)
- 00h WORD connection number
- 02h WORD task number
- 04h BYTE lock type
- 05h BYTE access flag
- 06h BYTE lock flag
- SeeAlso: #02253
- --------N-21F217SFED-------------------------
- INT 21 - Novell NetWare v3+ - GET PHYSICAL RECORD LOCKS BY CONNECTION AND FILE
- AX = F217h subfn EDh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02255)
- ES:DI -> reply buffer (see #02256)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=DDh,AX=F217h/SF=EEh
- Format of NetWare "Get Phys Record Locks By Conn And File" request packet:
- Offset Size Description (Table 02255)
- 00h WORD length of following data
- 02h BYTE EDh (subfunction "Get Physical Record Locks By Connection
- And File")
- 03h WORD target connection number
- 05h BYTE last record seen (set to 00h before first call)
- 06h BYTE volume number
- 07h DWORD directory entry number
- 0Bh N BYTEs filename
- SeeAlso: #02256
- Format of NetWare "Get Physical Record Locks By Connect And File" reply packet:
- Offset Size Description (Table 02256)
- 00h WORD next record (place in last-seen field on next call)
- 02h WORD number of locks returned
- 04h 11N BYTEs lock records
- Offset Size Description
- 00h WORD (big-endian) task number
- 02h BYTE lock status
- 03h DWORD (big-endian) record start offset
- 07h DWORD (big-endian) record end offset
- SeeAlso: #02255
- --------N-21F217SFEE-------------------------
- INT 21 - Novell NetWare v3+ - GET PHYSICAL RECORD LOCKS BY FILE
- AX = F217h subfn EEh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02257)
- ES:DI -> reply buffer (see #02258)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=DEh
- Format of NetWare "Get Physical Record Locks by File" request buffer:
- Offset Size Description (Table 02257)
- 00h WORD 0009h (length of following data)
- 02h BYTE EEh (subfunction "Get Physical Record Locks by File")
- 03h BYTE data stream number
- 04h BYTE volume number
- 05h DWORD directory entry number
- 09h WORD last record seen (0000h for first call)
- SeeAlso: #02258
- Format of NetWare "Get Physical Record Locks by File" reply buffer:
- Offset Size Description (Table 02258)
- 00h WORD next request record
- 02h WORD number of locks
- 04h 17N BYTEs array of lock records, one per lock (see #02259)
- SeeAlso: #02257
- Format of NetWare lock record:
- Offset Size Description (Table 02259)
- 00h WORD logged count
- 02h WORD number of shareable locks
- 04h DWORD start offset of record
- 08h DWORD end offset of record
- 0Ch WORD logical connection number
- 0Eh WORD task number
- 10h BYTE lock type
- SeeAlso: #02258
- --------N-21F217SFEF-------------------------
- INT 21 - Novell NetWare v3+ - GET LOGICAL RECORDS BY CONNECTION
- AX = F217h subfn EFh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02260)
- ES:DI -> reply buffer (see #02261)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=DFh
- Format of NetWare "Get Logical Records By Connection" request packet:
- Offset Size Description (Table 02260)
- 00h WORD length of following data
- 02h BYTE EFh (subfunction "Get Logical Records By Connection")
- 03h WORD target connection number
- 05h WORD last record seen (set to 0000h before first call)
- SeeAlso: #02261
- Format of NetWare "Get Logical Records By Connection" request packet:
- Offset Size Description (Table 02261)
- 00h WORD next record (place in last-seen field on next call)
- 02h WORD number of records returned
- 04h Logical Lock Information records (see #02063 at AH=E3h/SF=DFh)
- SeeAlso: #02260
- --------N-21F217SFF0-------------------------
- INT 21 - Novell NetWare v3+ - GET LOGICAL RECORD INFORMATION
- AX = F217h subfn F0h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02262)
- ES:DI -> reply buffer (see #02263)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=E0h,AX=F217h/SF=EFh
- Format of NetWare "Get Logical Record Information" request packet:
- Offset Size Description (Table 02262)
- 00h WORD length of following data
- 02h BYTE F0h (subfunction "Get Logical Record Information")
- 03h WORD last record seen
- 05h BYTE length of logical record name
- 06h N BYTEs logical record name (case-sensitive)
- SeeAlso: #02263
- Format of NetWare "Get Logical Record Information" request packet:
- Offset Size Description (Table 02263)
- 00h WORD number of connections logging record
- 02h WORD number of shareable locks
- 04h BYTE flag: locked exclusively if nonzero
- 05h WORD next request record (place in last-seen field on next call)
- 07h BYTE number of records returned
- 08h logical record information records [array]
- Offset Size Description
- 00h WORD connection number
- 02h BYTE task number
- 03h BYTE lock status
- SeeAlso: #02262
- --------N-21F217SFF1-------------------------
- INT 21 - Novell NetWare v3+ - GET CONNECTION'S SEMAPHORES
- AX = F217h subfn F1h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02264)
- ES:DI -> reply buffer (see #02265)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=E1h
- Format of NetWare "Get Connection's Semaphores" request packet:
- Offset Size Description (Table 02264)
- 00h WORD length of following data
- 02h BYTE F1h (subfunction "Get Connection's Semaphores")
- 03h WORD connection number
- 05h WORD last record seen (set to 0000h before first call)
- SeeAlso: #02265
- Format of NetWare "Get Connection's Semaphores" reply packet:
- Offset Size Description (Table 02265)
- 00h WORD next record (place in last-seen field on next call)
- 02h WORD number of semaphores returned
- 04h BYTEs semaphore information records [packed array] (see #02266)
- SeeAlso: #02264
- Format of NetWare semaphore information record:
- Offset Size Description (Table 02266)
- 00h WORD semaphore's current value
- 02h WORD number of connections using semaphore
- 04h WORD task number
- 06h BYTE length of semaphore's name
- 07h N BYTEs semaphore name
- SeeAlso: #02265
- --------N-21F217SFF2-------------------------
- INT 21 - Novell NetWare v3+ - GET SEMAPHORE INFORMATION
- AX = F217h subfn F2h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02267)
- ES:DI -> reply buffer (see #02268)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=E2h
- Format of NetWare "Get Semaphore Information" request buffer:
- Offset Size Description (Table 02267)
- 00h WORD length of following data (max 84h)
- 02h BYTE F2h (subfunction "Get Semaphore Information")
- 03h WORD last record seen (0000h on first call)
- 05h BYTE length of semaphore name (max 128)
- 06h N BYTEs semaphore name
- SeeAlso: #02268
- Format of NetWare "Get Semaphore Information" reply buffer:
- Offset Size Description (Table 02268)
- 00h WORD next request record
- 02h WORD open count
- 04h BYTE value of semaphore
- 05h WORD number of records returned
- 07h 2N WORDs list of logical connection number/task number pairs
- SeeAlso: #02267
- --------N-21F217SFF3-------------------------
- INT 21 - Novell NetWare v3+ - MAP DIRECTORY NUMBER TO PATH
- AX = F217h subfn F3h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02269)
- ES:DI -> reply buffer (see #02270)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AX=F217h/SF=F4h
- Format of NetWare "Map Directory Number to Path" request buffer:
- Offset Size Description (Table 02269)
- 00h WORD 0007h (length of following data)
- 02h BYTE F3h (subfunction "Map Directory Number to Path")
- 03h BYTE volume number
- 04h DWORD directory entry number
- 08h BYTE name space type
- SeeAlso: #02270
- Format of NetWare "Map Directory Number to Path" reply buffer:
- Offset Size Description (Table 02270)
- 00h BYTE directory path length
- 01h N BYTEs directory path (NetWare style, separated by length descriptors
- rather than slashes or backslashes)
- SeeAlso: #02269
- --------N-21F217SFF4-------------------------
- INT 21 - Novell NetWare v3+ - CONVERT PATH TO DIRECTORY ENTRY
- AX = F217h subfn F4h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02271)
- ES:DI -> reply buffer (see #02272)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AX=F217h/SF=F3h
- Format of NetWare "Convert Path to Directory Entry" request packet:
- Offset Size Description (Table 02271)
- 00h WORD length of following data
- 02h BYTE F4h (subfunction "Convert Path to Directory Entry")
- 03h BYTE directory handle or 00h for none
- 04h BYTE length of directory path
- 05h N BYTEs directory path (must be fully qualified if no handle specified)
- SeeAlso: #02272
- Format of NetWare "Convert Path to Directory Entry" reply packet:
- Offset Size Description (Table 02272)
- 00h BYTE volume number
- 01h DWORD directory entry number
- SeeAlso: #02271
- --------N-21F217SFF5-------------------------
- INT 21 - Novell NetWare - GET FILE SERVER EXTENDED MISC INFORMATION
- AX = F217h subfn F5h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02273)
- ES:DI -> reply buffer (see #02274)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=11h,AX=F217h/SF=C9h,AX=F217h/SF=E8h
- Format of NetWare "Get File Server Extended Misc Information" request packet:
- Offset Size Description (Table 02273)
- 00h WORD length of following data
- 02h BYTE F5h (subfunction "Get File Server Extended Misc Information")
- 03h BYTE length of reply buffer
- SeeAlso: #02274
- Format of NetWare "Get File Server Extended Misc Information" reply packet:
- Offset Size Description (Table 02274)
- 00h DWORD system interval marker
- (up-time in clock ticks, wraps to 0 on reaching FFFFFFFFh)
- 04h BYTE processor type
- 00h Motorola 680x0
- 01h Intel 8088/8086
- 02h 80286
- 05h BYTE reserved for future use
- 06h BYTE number of service processes
- 07h BYTE server utilization percentage
- 08h WORD maximum bindery objects set by configuration
- 0Ah WORD actual maximum bindery objects
- 0Ch WORD current number of bindery objects
- 0Eh WORD (big-endian) total server memory
- 10h WORD (big-endian) wasted server memory
- 12h WORD (big-endian) number of dynamic memory areas
- 14h DWORD (big-endian) total space in dynamic memory area
- 18h DWORD maximum dynamic space used
- 1Ch DWORD dynamic space currently used
- SeeAlso: #02273
- --------N-21F217SFF6-------------------------
- INT 21 - Novell NetWare - GET VOLUME EXTENDED INFORMATION
- AX = F217h subfn F6h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02275)
- ES:DI -> reply buffer (see #02276)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=E8h
- Format of NetWare "Get Volume Extended Information" request packet:
- Offset Size Description (Table 02275)
- 00h WORD length of following data
- 02h BYTE F6h (subfunction "Get Volume Extended Information")
- 03h BYTE volume number
- 04h BYTE size of reply buffer
- SeeAlso: #02276
- Format of NetWare "Get Volume Extended Information" reply packet:
- Offset Size Description (Table 02276)
- 00h DWORD system interval
- (up-time in clock ticks, wraps to 0 on reaching FFFFFFFFh)
- 04h BYTE volume number
- 05h BYTE logical drive number
- 06h WORD number of 512-byte sectors per disk block
- 08h DWORD starting block number of volume
- 0Ch WORD total number of disk blocks
- 0Eh WORD number of free disk blocks
- 10h WORD total number of directory entries
- 12h WORD number of available directory entries
- 14h WORD maximum directory entries ever used
- 16h BYTE flag: volume is hashed in memory if nonzero
- 17h BYTE flag: volume is cached if nonzero
- 18h BYTE flag: volume is removable if nonzero
- 19h BYTE flag: volume is mounted if nonzero
- 1Ah 16 BYTEs volume name (null-padded)
- SeeAlso: #02275
- --------N-21F217SFFE-------------------------
- INT 21 - Novell NetWare v4 - CLEAR CONNECTION NUMBER GREATER THAN 250
- AX = F217h subfn FEh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02277)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=E3h/SF=D2h,AX=F217h/SF=D2h
- Format of NetWare "Clear Connection Number" request buffer:
- Offset Size Description (Table 02277)
- 00h WORD length of following data
- 02h BYTE FEh (subfunction "Clear Connection Number")
- 03h DWORD connection number
- SeeAlso: #02023
- --------N-21F21B-----------------------------
- INT 21 - Novell NetWare - LOCK PHYSICAL RECORD SET (OLD)
- AX = F21Bh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02480 at AX=F26Eh)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F26Eh,AH=C2h"NetWare"
- --------N-21F21E-----------------------------
- INT 21 - Novell NetWare - CLEAR PHYSICAL RECORD
- AX = F21Eh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02278)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=5Ch,AH=BEh"NetWare",AH=F2h"Novell",AX=F20Bh,AX=F21Fh
- Format of NetWare "Clear Physical Record" request packet:
- Offset Size Description (Table 02278)
- 00h BYTE reserved for future use
- 01h 6 BYTEs NetWare file handle
- 07h DWORD starting offset of locked region
- 0Bh DWORD length of locked region
- SeeAlso: #02279
- --------N-21F21F-----------------------------
- INT 21 - Novell NetWare - CLEAR PHYSICAL RECORD SET
- AX = F21Fh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02279)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=5Ch,AH=C4h"NetWare",AH=F2h"Novell",AX=F20Eh,AX=F21Eh
- Format of NetWare "Clear Physical Record Set" request packet:
- Offset Size Description (Table 02279)
- 00h BYTE lock flag (00h = not locked)
- SeeAlso: #02278
- --------N-21F220SF00-------------------------
- INT 21 - Novell NetWare - OPEN SEMAPHORE (OLD)
- AX = F220h subfn 00h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02280)
- ES:DI -> reply buffer (see #02281)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=C500h,AX=F220h/SF=01h,AX=F220h/SF=03h
- Format of NetWare "Open Semaphore (old)" request packet:
- Offset Size Description (Table 02280)
- 00h BYTE 00h (subfunction "Open Semaphore (old)")
- 01h BYTE initial value of semaphore ( >= 0)
- 02h BYTE length of semaphore's name (max 512)
- 03h N BYTEs semaphore name
- SeeAlso: #02281,#02282
- Format of NetWare "Open Semaphore (old)" reply packet:
- Offset Size Description (Table 02281)
- 00h DWORD semaphore handle
- 04h BYTE number of processes using semaphore (including caller)
- SeeAlso: #02280,#02283
- --------N-21F220SF01-------------------------
- INT 21 - Novell NetWare - EXAMINE SEMAPHORE (OLD)
- AX = F220h subfn 01h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02282)
- ES:DI -> reply buffer (see #02283)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=C501h,AX=F220h/SF=00h,AX=F220h/SF=03h
- Format of NetWare "Close Semaphore (old)" request packet:
- Offset Size Description (Table 02282)
- 00h BYTE 01h (subfunction "Examine Semaphore (old)")
- 01h DWORD semaphore handle
- SeeAlso: #02283,#02280
- Format of NetWare "Close Semaphore (old)" request packet:
- Offset Size Description (Table 02283)
- 00h BYTE current semaphore value
- 01h BYTE number of processes using semaphore (including caller)
- SeeAlso: #02282,#02281
- --------N-21F220SF02-------------------------
- INT 21 - Novell NetWare - WAIT ON SEMAPHORE (OLD)
- AX = F220h subfn 02h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02284)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=C502h,AX=F220h/SF=00h,AX=F220h/SF=03h
- Format of NetWare "Wait on Semaphore (old)" request packet:
- Offset Size Description (Table 02284)
- 00h BYTE 02h (subfunction "Wait on Semaphore (old)")
- 01h DWORD semaphore handle
- 05h WORD timeout in 1/18s (0000h = return immediately)
- SeeAlso: #02282,#02285
- --------N-21F220SF03-------------------------
- INT 21 - Novell NetWare - SIGNAL SEMAPHORE (OLD)
- AX = F220h subfn 03h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02285)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=C503h,AX=F220h/SF=02h,AX=F220h/SF=04h
- Format of NetWare "Signal Semaphore (old)" request packet:
- Offset Size Description (Table 02285)
- 00h BYTE 03h (subfunction "Signal Semaphore (old)")
- 01h DWORD semaphore handle
- SeeAlso: #02284,#02286
- --------N-21F220SF04-------------------------
- INT 21 - Novell NetWare - CLOSE SEMAPHORE (OLD)
- AX = F220h subfn 04h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02286)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=C504h,AX=F220h/SF=00h,AX=F220h/SF=01h
- SeeAlso: AX=F26Fh/SF=01h
- Format of NetWare "Close Semaphore (old)" request packet:
- Offset Size Description (Table 02286)
- 00h BYTE 04h (subfunction "Close Semaphore (old)")
- 01h DWORD semaphore handle
- SeeAlso: #02285,#02483
- --------N-21F222SF00-------------------------
- INT 21 - Novell NetWare - TTS IS AVAILABLE
- AX = F222h subfn 00h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02287)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=C702h,AX=F222h/SF=01h,AX=F222h/SF=05h
- Format of NetWare "TTS Is Available" request packet:
- Offset Size Description (Table 02287)
- 00h BYTE 00h (subfunction "TTS Is Available")
- --------N-21F222SF01-------------------------
- INT 21 - Novell NetWare - TTS BEGIN TRANSACTION
- AX = F222h subfn 01h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02288)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=C700h,AX=F222h/SF=02h,AX=F222h/SF=03h
- Format of NetWare "TTS Begin Transaction" request packet:
- Offset Size Description (Table 02288)
- 00h BYTE 01h (subfunction "TTS Begin Transaction")
- SeeAlso: #02289,#02291
- --------N-21F222SF02-------------------------
- INT 21 - Novell NetWare - TTS END TRANSACTION
- AX = F222h subfn 02h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02289)
- ES:DI -> reply buffer (see #02290)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=C701h,AX=F222h/SF=01h,AX=F222h/SF=04h
- Format of NetWare "TTS End Transaction" request packet:
- Offset Size Description (Table 02289)
- 00h BYTE 02h (subfunction "TTS End Transaction")
- SeeAlso: #02290,#02288
- Format of NetWare "TTS End Transaction" reply packet:
- Offset Size Description (Table 02290)
- 00h DWORD transaction number
- SeeAlso: #02289,#02292
- --------N-21F222SF03-------------------------
- INT 21 - Novell NetWare - TTS ABORT TRANSACTION
- AX = F222h subfn 03h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02291)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=C703h,AX=F222h/SF=01h,AX=F222h/SF=02h
- SeeAlso: AX=F220h/SF=04h
- Format of NetWare "TTS Abort Transaction" request packet:
- Offset Size Description (Table 02291)
- 00h BYTE 03h (subfunction "TTS Abort Transaction")
- SeeAlso: #02288,#02289
- --------N-21F222SF04-------------------------
- INT 21 - Novell NetWare - TTS TRANSACTION STATUS
- AX = F222h subfn 04h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02292)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=C704h,AX=F222h/SF=02h,AX=F222h/SF=03h
- Format of NetWare "TTS Transaction Status" request packet:
- Offset Size Description (Table 02292)
- 00h BYTE 04h (subfunction "TTS Transaction Status")
- 01h DWORD transaction number
- SeeAlso: #02289,#02290
- --------N-21F222SF05-------------------------
- INT 21 - Novell NetWare - TTS GET APPLICATION THRESHOLDS
- AX = F222h subfn 05h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02293)
- ES:DI -> reply buffer (see #02294)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=C705h,AX=F222h/SF=06h,AX=F222h/SF=07h
- Format of NetWare "TTS Get Application Thresholds" request packet:
- Offset Size Description (Table 02293)
- 00h BYTE 05h (subfunction "TTS Get Application Thresholds")
- SeeAlso: #02294,#02295
- Format of NetWare "TTS Get Application Thresholds" request packet:
- Offset Size Description (Table 02294)
- 00h BYTE logical lock threshold
- 01h BYTE physical lock threshold
- SeeAlso: #02293,#02295
- --------N-21F222SF06-------------------------
- INT 21 - Novell NetWare - TTS SET APPLICATION THRESHOLDS
- AX = F222h subfn 06h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02295)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=C706h,AX=F222h/SF=05h,AX=F222h/SF=08h
- Format of NetWare "TTS Set Application Thresholds" request packet:
- Offset Size Description (Table 02295)
- 00h BYTE 06h (subfunction "TTS Set Application Thresholds")
- 01h BYTE logical lock threshold before implicit transaction started
- 02h BYTE physical lock threshold before implicit transaction started
- SeeAlso: #02294,#02298
- --------N-21F222SF07-------------------------
- INT 21 - Novell NetWare - TTS GET WORKSTATION THRESHOLDS
- AX = F222h subfn 07h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02296)
- ES:DI -> reply buffer (see #02297)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=C707h,AX=F222h/SF=05h,AX=F222h/SF=08h
- Format of NetWare "TTS Get Workstation Thresholds" request packet:
- Offset Size Description (Table 02296)
- 00h BYTE 07h (subfunction "TTS Get Workstation Thresholds")
- SeeAlso: #02297
- Format of NetWare "TTS Get Workstation Thresholds" reply packet:
- Offset Size Description (Table 02297)
- 00h BYTE logical lock threshold
- 01h BYTE physical lock threshold
- SeeAlso: #02296
- --------N-21F222SF08-------------------------
- INT 21 - Novell NetWare - TTS SET WORKSTATION THRESHOLDS
- AX = F222h subfn 08h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02298)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=C708h,AX=F222h/SF=06h,AX=F222h/SF=07h
- Format of NetWare "TTS Set Workstation Thresholds" request packet:
- Offset Size Description (Table 02298)
- 00h BYTE 08h (subfunction "TTS Set Workstation Thresholds")
- 01h BYTE logical lock threshold before implicit transaction started
- 02h BYTE physical lock threshold before implicit transaction started
- SeeAlso: #02295
- --------N-21F222SF09-------------------------
- INT 21 - Novell NetWare - TTS GET CONTROL FLAGS
- AX = F222h subfn 09h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02299)
- ES:DI -> reply buffer (see #02300)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=C702h,AX=F222h/SF=07h,AX=F222h/SF=0Ah
- Format of NetWare "TTS Get Transaction Bits" request packet:
- Offset Size Description (Table 02299)
- 00h BYTE 09h (subfunction "TTS Get Transaction Bits")
- SeeAlso: #02300
- Format of NetWare "TTS Get Transaction Bits" reply packet:
- Offset Size Description (Table 02300)
- 00h BYTE TTS control flags
- bit 0: forced (automatic) record locking enabled
- bits 1-7: reserved
- SeeAlso: #02299
- --------N-21F222SF0A-------------------------
- INT 21 - Novell NetWare - TTS SET CONTROL FLAGS
- AX = F222h subfn 0Ah
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02301)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=C702h,AX=F222h/SF=08h,AX=F222h/SF=09h
- Format of NetWare "TTS Set Transaction Bits" request packet:
- Offset Size Description (Table 02301)
- 00h BYTE 0Ah (subfunction "TTS Set Transaction Bits")
- 01h BYTE TTS control flags
- bit 0: forced (automatic) record locking enabled
- bits 1-7: reserved
- --------N-21F223SF01-------------------------
- INT 21 - Novell NetWare v2+ - AFP CREATE DIRECTORY
- AX = F223h subfn 01h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02302)
- ES:DI -> reply buffer (see #02303)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F223h/SF=02h,AX=F223h/SF=0Dh
- Format of NetWare "AFP Create Directory" request packet:
- Offset Size Description (Table 02302)
- 00h WORD (big-endian) length of following data
- 02h BYTE 01h (subfunction "AFP Create Directory")
- 03h BYTE volume number
- 04h DWORD AFP entry ID
- 08h BYTE reserved for future use
- 09h 32 BYTEs Finder information
- 29h BYTE path length
- 2Ah N BYTEs AFP-style directory pathname (relative to AFP entry ID)
- SeeAlso: #02303,#02304,#02330
- Format of NetWare "AFP Create Directory" reply packet:
- Offset Size Description (Table 02303)
- 00h DWORD new directory ID
- SeeAlso: #02302,#02331
- --------N-21F223SF02-------------------------
- INT 21 - Novell NetWare v2+ - AFP CREATE FILE
- AX = F223h subfn 02h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02304)
- ES:DI -> reply buffer (see #02305)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F223h/SF=02h,AX=F223h/SF=03h,AX=F223h/SF=0Dh
- Format of NetWare "AFP Create File" request packet:
- Offset Size Description (Table 02304)
- 00h WORD (big-endian) length of following data
- 02h BYTE 01h (subfunction "AFP Create Directory")
- 03h BYTE volume number
- 04h DWORD AFP entry ID
- 08h BYTE flag: delete existing file? (00h no, 01h yes)
- 09h 32 BYTEs Finder information
- 29h BYTE path length
- 2Ah N BYTEs AFP-style directory pathname (relative to AFP entry ID)
- SeeAlso: #02302,#02305,#02306,#02332
- Format of NetWare "AFP Create File" reply packet:
- Offset Size Description (Table 02305)
- 00h DWORD new file's AFP entry ID
- SeeAlso: #02304,#02333
- --------N-21F223SF03-------------------------
- INT 21 - Novell NetWare v2+ - AFP DELETE FILE
- AX = F223h subfn 03h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02306)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- Note: directories may be deleted if they are empty
- SeeAlso: AH=F2h"Novell",AX=F223h/SF=02h,AX=F223h/SF=0Dh
- Format of NetWare "AFP Delete File" request packet:
- Offset Size Description (Table 02306)
- 00h WORD (big-endian) length of following data
- 02h BYTE 03h (subfunction "AFP Delete File")
- 03h BYTE volume number
- 04h DWORD AFP entry ID
- 08h BYTE path length
- 09h N BYTEs AFP-style pathname (relative to AFP entry ID)
- SeeAlso: #02304
- --------N-21F223SF04-------------------------
- INT 21 - Novell NetWare v2+ - AFP GET ENTRY ID FROM FILENAME
- AX = F223h subfn 04h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02307)
- ES:DI -> reply buffer (see #02308)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F223h/SF=06h,AX=F223h/SF=0Ch,AX=F223h/SF=12h
- Format of NetWare "AFP Get Entry ID from Name" request packet:
- Offset Size Description (Table 02307)
- 00h WORD (big-endian) length of following data
- 02h BYTE 04h (subfunction "AFP Get Entry ID from Name")
- 03h BYTE volume number
- 04h DWORD AFP entry ID
- 08h BYTE path length
- 09h N BYTEs AFP-style pathname (relative to AFP entry ID)
- SeeAlso: #02308,#02314
- Format of NetWare "AFP Get Entry ID from Name" reply packet:
- Offset Size Description (Table 02308)
- 00h DWORD AFP entry ID corresponding to specified file/directory
- SeeAlso: #02307,#02315
- --------N-21F223SF05-------------------------
- INT 21 - Novell NetWare v2+ - AFP GET FILE INFORMATION
- AX = F223h subfn 05h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02309)
- ES:DI -> reply buffer (see #02311)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F223h/SF=04h,AX=F223h/SF=09h,AX=F223h/SF=13h
- Format of NetWare "AFP Get File Information" request packet:
- Offset Size Description (Table 02309)
- 00h WORD (big-endian) length of following data
- 02h BYTE 05h (subfunction "AFP Get File Information")
- 03h BYTE volume number
- 04h DWORD AFP entry ID
- 08h WORD request bitmap
- 0Ah BYTE path length
- 0Bh N BYTEs AFP-style pathname (relative to AFP entry ID)
- SeeAlso: #02311
- Bitfields for NetWare AFP request bitmap:
- Bit(s) Description (Table 02310)
- 0 return AFP entry ID
- 1 return data fork length
- 2 return resource fork length
- 3 return number of contained files/subdirectories
- 4 return owner ID
- 5 return short name
- 6 return access rights
- 7 ??? (unused?)
- 8 return attributes
- 9 return parent directory ID
- 10 return creation date
- 11 return last-access date
- 12 return last-modified date and time
- 13 return last-backup date and time
- 14 return Finder information
- 15 return long name
- SeeAlso: #02309,#02336,#02337
- Format of NetWare "AFP Get File Information" reply packet:
- Offset Size Description (Table 02311)
- 00h DWORD AFP entry ID for specified file
- 04h DWORD AFP entry ID for specified file's parent directory
- 08h WORD directory/file attributes (see #02312)
- 0Ah DWORD length of data fork
- 0Eh DWORD length of resource fork
- 12h WORD total files and subdirectories contained within entry
- always 0000h if entry is a file
- 14h WORD creation date in AFP format
- 16h WORD last-access date in AFP format
- 18h WORD last-modified date in AFP format
- 1Ah WORD last-modified time in AFP format
- 1Ch WORD last-backup date in AFP format
- 1Eh WORD last-backup time in AFP format
- 20h 32 BYTEs Finder information
- 40h 32 BYTEs long filename
- 60h DWORD NetWare object ID of owner
- 64h 12 BYTEs short filename (MS-DOS 8.3 format)
- 70h WORD access privileges (see #02313)
- SeeAlso: #02309,#02338
- Bitfields for NetWare AFP file/directory attributes:
- Bit(s) Description (Table 02312)
- 0 search mode
- 1 search mode
- 2 search mode
- 3 (undefined)
- 4 transaction
- 5 index
- 6 read audit
- 7 write audit
- 8 read-only
- 9 hidden
- 10 system
- 11 execute-only
- 12 subdirectory
- 13 archive
- 14 (undefined)
- 15 shareable file
- SeeAlso: #02311,#02322,#02337
- Bitfields for NetWare AFP access privileges:
- Bit(s) Description (Table 02313)
- 8 read (files)
- 9 write (files)
- 10 open (files)
- 11 create (files)
- 12 delete (files)
- 13 parental (directories): create/delete/rename subdirectories
- 14 search (directories)
- 15 modify file status flags
- SeeAlso: #02311,#02337,#02327
- --------N-21F223SF06-------------------------
- INT 21 - Novell NetWare v2+ - AFP GET ENTRY ID FROM NETWARE HANDLE
- AX = F223h subfn 06h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02314)
- ES:DI -> reply buffer (see #02315)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F223h/SF=04h,AX=F223h/SF=0Ch,AX=F223h/SF=12h
- Format of NetWare "AFP Get Entry ID from NetWare Handle" request packet:
- Offset Size Description (Table 02314)
- 00h WORD (big-endian) length of following data
- 02h BYTE 06h (subfunction "AFP Get Entry ID from NetWare Handle")
- 03h 6 BYTEs NetWare file handle
- SeeAlso: #02315,#02307
- Format of NetWare "AFP Get Entry ID from NetWare Handle" reply packet:
- Offset Size Description (Table 02315)
- 00h BYTE volume number
- 01h DWORD AFP entry ID corresponding to same file as NetWare handle
- 05h BYTE fork indicator (00h data fork, 01h resource fork)
- SeeAlso: #02314,#02308
- --------N-21F223SF07-------------------------
- INT 21 - Novell NetWare v2+ - AFP RENAME
- AX = F223h subfn 07h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02316)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F223h/SF=01h,AX=F223h/SF=03h,AX=F223h/SF=08h
- Format of NetWare "AFP Rename" request packet:
- Offset Size Description (Table 02316)
- 00h WORD (big-endian) length of following data
- 02h BYTE 07h (subfunction "AFP Rename")
- 03h BYTE volume number
- 04h DWORD source AFP entry ID
- 08h DWORD destination AFP entry ID
- 0Ch BYTE source path length
- 0Dh N BYTEs AFP-style source path (relative to source AFP entry ID)
- BYTE destination path length
- N BYTEs AFP-style destination path (relative to destination entry ID)
- Note: the file may be moved from one directory to another without being
- renamed by setting the destination path to the empty string
- --------N-21F223SF08-------------------------
- INT 21 - Novell NetWare v2+ - AFP OPEN FILE FORK
- AX = F223h subfn 08h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02317)
- ES:DI -> reply buffer (see #02318)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F223h/SF=01h,AX=F223h/SF=05h,AX=F223h/SF=09h
- Format of NetWare "AFP Open File Fork" request packet:
- Offset Size Description (Table 02317)
- 00h WORD (big-endian) length of following data
- 02h BYTE 08h (subfunction "AFP Open File Fork")
- 03h BYTE volume number
- 04h DWORD AFP entry ID
- 08h BYTE fork indicator (00h = data fork, 01h = resource fork)
- 09h BYTE access mode
- bit 0: read
- bit 1: write
- bit 2: deny read access to others
- bit 3: deny write access to others
- bit 4: compatibility mode (should be set)
- 0Ah BYTE path length
- 0Bh N BYTEs AFP-style pathname (relative to AFP entry ID)
- SeeAlso: #02318
- Format of NetWare "AFP Open File Fork" reply packet:
- Offset Size Description (Table 02318)
- 00h DWORD AFP entry ID for newly-opened file fork
- 04h DWORD length of opened fork
- 08h 6 BYTEs NetWare file handle
- SeeAlso: #02317
- --------N-21F223SF09-------------------------
- INT 21 - Novell NetWare v2+ - AFP SET FILE INFORMATION
- AX = F223h subfn 09h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02319)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F223h/SF=05h,AX=F223h/SF=0Ah,AX=F223h/SF=13h
- Format of NetWare "AFP Set File Information" request packet:
- Offset Size Description (Table 02319)
- 00h WORD (big-endian) length of following data
- 02h BYTE 09h (subfunction "AFP Set File Information")
- 03h BYTE volume number
- 04h DWORD AFP entry ID
- 08h WORD request bitmap (see #02320)
- 0Ah WORD directory/file attributes (see #02335)
- 0Ch WORD creation date in AFP format
- 0Eh WORD last-access date in AFP format
- 10h WORD last-modified date in AFP format
- 12h WORD last-modified time in AFP format
- 14h WORD last-backup date in AFP format
- 16h WORD last-backup time in AFP format
- 18h 32 BYTEs Finder information
- 38h BYTE path length
- 39h N BYTEs AFP-style pathname (relative to AFP entry ID)
- SeeAlso: #02334
- Bitfields for NetWare AFP request bitmap:
- Bit(s) Description (Table 02320)
- 8 set attributes
- 10 set creation date
- 11 set last-access date
- 12 set last-modified date
- 13 set last-backup date
- 14 set Finder information
- SeeAlso: #02319,#02334
- --------N-21F223SF0A-------------------------
- INT 21 - Novell NetWare v2+ - AFP SCAN FILE INFORMATION
- AX = F223h subfn 0Ah
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02321)
- ES:DI -> reply buffer (see #02323)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F223h/SF=01h,AX=F223h/SF=03h,AX=F223h/SF=08h
- Format of NetWare "AFP Scan File Information" request packet:
- Offset Size Description (Table 02321)
- 00h WORD (big-endian) length of following data
- 02h BYTE 0Ah (subfunction "AFP Scan File Information")
- 03h BYTE volume number
- 04h DWORD AFP entry ID
- 08h DWORD AFP last-seen ID (from previous call)
- FFFFFFFFh on first call
- 0Ch WORD number of entries to return (max. 4)
- 0Eh WORD search bitmap (see #02322)
- 10h WORD request bitmap (see #02310)
- 12h BYTE path length
- 13h N BYTEs AFS-style directory path (relative to AFP entry ID)
- SeeAlso: #02323,#02336
- Bitfields for NetWare AFP search bitmap:
- Bit(s) Description (Table 02322)
- 8 hidden files and directories
- 9 system files and directories
- 10 subdirectories
- 11 files
- SeeAlso: #02321,#02336,#02310,#02312
- Format of NetWare "AFP Scan File Information" reply packet:
- Offset Size Description (Table 02323)
- 00h WORD number of entries returned
- 02h 120N BYTEs file information records (see #02324)
- SeeAlso: #02321
- Format of NetWare AFP file information:
- Offset Size Description (Table 02324)
- 00h DWORD AFP entry ID
- 04h DWORD parent directory's AFP entry ID
- 08h WORD directory/file attributes (see #02312)
- 0Ah DWORD length of data fork
- 0Eh DWORD length of resource fork
- 12h WORD total files and subdirectories contained within entry
- always 0000h if entry is a file
- 14h WORD creation date in AFP format
- 16h WORD last-access date in AFP format
- 18h WORD last-modified date in AFP format
- 1Ah WORD last-modified time in AFP format
- 1Ch WORD last-backup date in AFP format
- 1Eh WORD last-backup time in AFP format
- 20h 32 BYTEs Finder information
- 40h 32 BYTEs long filename
- 60h DWORD NetWare object ID of owner
- 64h 12 BYTEs short filename (MS-DOS 8.3 format)
- 70h WORD access privileges (see #02313)
- SeeAlso: #02323
- --------N-21F223SF0B-------------------------
- INT 21 - Novell NetWare v2+ - AFP ALLOCATE TEMPORARY DIRECTORY HANDLE
- AX = F223h subfn 0Bh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02325)
- ES:DI -> reply buffer (see #02326)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F223h/SF=0Dh
- Format of NetWare "AFP Alloc Temporary Directory Handle" request packet:
- Offset Size Description (Table 02325)
- 00h WORD (big-endian) length of following data
- 02h BYTE 0Bh (subfunction "AFT Alloc Temporary Directory Handle")
- 03h BYTE volume number
- 04h DWORD AFP entry ID
- 08h BYTE path length
- 09h N BYTEs AFP-style pathname
- SeeAlso: #02326
- Format of NetWare "AFP Alloc Temporary Directory Handle" request packet:
- Offset Size Description (Table 02326)
- 00h BYTE directory handle
- 01h BYTE NetWare access rights (see #02327)
- SeeAlso: #02325
- Bitfields for NetWare AFP access rights:
- Bit(s) Description (Table 02327)
- 0 read
- 1 write
- 2 open
- 3 create
- 4 delete
- 5 parental: create/delete/rename subdirectories
- 6 search
- 7 modify file status flags
- SeeAlso: #02326,#02313
- --------N-21F223SF0C-------------------------
- INT 21 - Novell NetWare v2+ - AFP GET ENTRY ID FROM PATHNAME
- AX = F223h subfn 0Ch
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02328)
- ES:DI -> reply buffer (see #02329)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F223h/SF=04h,AX=F223h/SF=06h,AX=F223h/SF=12h
- Format of NetWare "AFP Get Entry ID from Path Name" request packet:
- Offset Size Description (Table 02328)
- 00h WORD (big-endian) length of following data
- 02h BYTE 0Ch (subfunction "AFP Get Entry ID from Path Name")
- 03h BYTE NetWare directory handle
- 04h BYTE path length
- 05h N BYTEs pathname
- SeeAlso: #02329
- Format of NetWare "AFP Get Entry ID from Path Name" reply packet:
- Offset Size Description (Table 02329)
- 00h DWORD AFP entry ID corresponding to specified file
- SeeAlso: #02328
- --------N-21F223SF0D-------------------------
- INT 21 - Novell NetWare v2+ - AFP 2.0 CREATE DIRECTORY
- AX = F223h subfn 0Dh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02330)
- ES:DI -> reply buffer (see #02331)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F223h/SF=01h,AX=F223h/SF=0Eh
- Format of NetWare "AFP 2.0 Create Directory" request buffer:
- Offset Size Description (Table 02330)
- 00h WORD (big-endian) length of following data
- 02h BYTE 0Dh (subfunction "AFP 2.0 Create Directory")
- 03h BYTE volume number
- 04h DWORD AFP entry ID
- 08h BYTE reserved for future use
- 09h 32 BYTEs Finder information
- 29h 6 BYTEs ProDOS information
- 2Fh BYTE path length
- 30h var AFS-style directory path (relative to AFP entry)
- SeeAlso: #02331,#02302
- Format of NetWare "AFP 2.0 Create Directory" reply buffer:
- Offset Size Description (Table 02331)
- 00h DWORD new directory ID
- SeeAlso: #02330,#02303
- --------N-21F223SF0E-------------------------
- INT 21 - Novell NetWare v2+ - AFP 2.0 CREATE FILE
- AX = F223h subfn 0Eh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02332)
- ES:DI -> reply buffer (see #02333)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F223h/SF=0Dh
- Format of NetWare "AFP 2.0 Create File" request packet:
- Offset Size Description (Table 02332)
- 00h WORD (big-endian) length of following data
- 02h BYTE 0Eh (function "AFP 2.0 Create File")
- 03h BYTE volume number
- 04h DWORD AFP entry ID
- 08h BYTE flag: delete existing file? (00h no, 01h yes)
- 09h 32 BYTEs Finder information
- 29h 6 BYTEs ProDOS information
- 2Fh BYTE path length
- 30h var AFP-style pathname (relative to AFP entry ID)
- SeeAlso: #02333,#02304
- Format of NetWare "AFP 2.0 Create File" reply packet:
- Offset Size Description (Table 02333)
- 00h DWORD new file ID
- SeeAlso: #02332,#02305
- --------N-21F223SF10-------------------------
- INT 21 - Novell NetWare v2+ - AFP 2.0 SET FILE INFORMATION
- AX = F223h subfn 10h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02334)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F223h/SF=09h,AX=F223h/SF=11h
- Format of NetWare "AFP 2.0 Set File Information" request packet:
- Offset Size Description (Table 02334)
- 00h WORD (big-endian) length of following data
- 02h BYTE 10h (subfunction "AFS 2.0 Set File Information")
- 03h BYTE volume number
- 04h DWORD AFP entry ID
- 08h WORD request bitmap (see #02320)
- 0Ah WORD directory/file attributes (see #02335)
- 0Ch WORD creation date in AFP format
- 0Eh WORD last-access date in AFP format
- 10h WORD last-modified date in AFP format
- 12h WORD last-modified time in AFP format
- 14h WORD last-backup date in AFP format
- 16h WORD last-backup time in AFP format
- 18h 32 BYTEs Finder information
- 38h 6 BYTEs ProDOS information
- 3Eh BYTE path length
- 3Fh N BYTEs AFP-style pathname (relative to AFP entry ID)
- SeeAlso: #02319
- Bitfields for NetWare AFP directory/file attributes:
- Bit(s) Description (Table 02335)
- 0 read-only
- 1 hidden
- 2 system
- 3 execute-only
- 4 subdirectory
- 5 archive
- 7 shareable file
- SeeAlso: #02334
- --------N-21F223SF11-------------------------
- INT 21 - Novell NetWare v2+ - AFP 2.0 SCAN FILE INFORMATION
- AX = F223h subfn 11h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02336)
- ES:DI -> reply buffer (see #02337)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F223h/SF=0Dh,AX=F223h/SF=10h
- Format of NetWare "AFP 2.0 Scan File Information" request packet:
- Offset Size Description (Table 02336)
- 00h WORD (big-endian) length of following data
- 02h BYTE 11h (subfunction "AFP 2.0 Scan File Information")
- 03h BYTE volume number
- 04h DWORD AFP entry ID
- 08h DWORD AFP last-seen ID (from previous call)
- FFFFFFFFh on first call
- 0Ch WORD number of entries to return (max. 4)
- 0Eh WORD search bitmap (see #02322)
- 10h WORD request bitmap (see #02310)
- 12h BYTE path length
- 13h N BYTEs AFS-style directory path (relative to AFP entry ID)
- SeeAlso: #02337
- Format of NetWare "AFP 2.0 Scan File Information" reply packet:
- Offset Size Description (Table 02337)
- 00h WORD number of entries returned
- 02h 120N BYTEs file information records (see #02338)
- SeeAlso: #02336
- Format of NetWare AFP 2.0 file information:
- Offset Size Description (Table 02338)
- 00h DWORD AFP entry ID
- 04h DWORD parent directory's AFP entry ID
- 08h WORD directory/file attributes (see #02312)
- 0Ah DWORD length of data fork
- 0Eh DWORD length of resource fork
- 12h WORD total files and subdirectories contained within entry
- always 0000h if entry is a file
- 14h WORD creation date in AFP format
- 16h WORD last-access date in AFP format
- 18h WORD last-modified date in AFP format
- 1Ah WORD last-modified time in AFP format
- 1Ch WORD last-backup date in AFP format
- 1Eh WORD last-backup time in AFP format
- 20h 32 BYTEs Finder information
- 40h 32 BYTEs long filename
- 60h DWORD NetWare object ID of owner
- 64h 12 BYTEs short filename (MS-DOS 8.3 format)
- 70h WORD access privileges (see #02313)
- 72h 6 BYTEs ProDOS information
- SeeAlso: #02337,#02310,#02311
- --------N-21F223SF12-------------------------
- INT 21 - Novell NetWare v2+ - AFP GET DOS FILENAME FROM ENTRY ID
- AX = F223h subfn 12h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02339)
- ES:DI -> reply buffer (see #02340)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F223h/SF=04h,AX=F223h/SF=06h
- Format of NetWare "AFP Get DOS Name from Entry ID" request packet:
- Offset Size Description (Table 02339)
- 00h WORD (big-endian) length of following data
- 02h BYTE 12h (subfunction "AFP Get DOS Name From Entry ID")
- 03h BYTE volume number
- 04h DWORD AFP entry ID
- SeeAlso: #02340
- Format of NetWare "AFP Get DOS Name from Entry ID" reply packet:
- Offset Size Description (Table 02340)
- 00h BYTE length of DOS pathname
- 01h N BYTEs pathname corresponding to AFP entry ID
- SeeAlso: #02339
- --------N-21F223SF13-------------------------
- INT 21 - Novell NetWare v2+ - AFP GET MACINTOSH INFORMATION ON DELETED FILE
- AX = F223h subfn 13h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02341)
- ES:DI -> reply buffer (see #02342)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F223h/SF=04h,AX=F223h/SF=05h,AX=F223h/SF=09h
- Format of NetWare "AFP Get Macintosh Info on Deleted File" request packet:
- Offset Size Description (Table 02341)
- 00h WORD (big-endian) length of following data
- 02h BYTE 13h (subfunction "AFP Get Macintosh Info on Deleted File")
- 03h BYTE volume number
- 04h DWORD server's DOS directory entry index
- SeeAlso: #02342
- Format of NetWare "AFP Get Macintosh Info on Deleted File" reply packet:
- Offset Size Description (Table 02342)
- 00h 32 BYTEs Finder information
- 20h 6 BYTEs ProDOS information
- 26h DWORD size of resource fork
- 2Ah BYTE length of filename
- 2Bh N BYTEs filename
- SeeAlso: #02341
- --------N-21F23D-----------------------------
- INT 21 - Novell NetWare - COMMIT FILE
- AX = F23Dh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02347)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=3Eh,AH=F2h"Novell",AX=F23Eh,AX=F243h
- --------N-21F23E-----------------------------
- INT 21 - Novell NetWare - FILE SEARCH INITIALIZE (FindFirst)
- AX = F23Eh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02343)
- ES:DI -> reply buffer (see #02344)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=4Eh,AH=F2h"Novell",AX=F23Fh,AX=F242h
- Format of NetWare "File Search Initialize" request packet:
- Offset Size Description (Table 02343)
- 00h BYTE directory handle
- 01h BYTE length of directory path
- 02h N BYTEs path of directory to search, in VOLUME:DIRECTORY/... format
- SeeAlso: #02344,#02345
- Format of NetWare "File Search Initialize" reply packet:
- Offset Size Description (Table 02344)
- 00h BYTE volume number
- 01h WORD directory ID
- 03h WORD search sequence number
- 05h BYTE directory access rights
- SeeAlso: #02343,#02346
- --------N-21F23F-----------------------------
- INT 21 - Novell NetWare - FILE SEARCH CONTINUE (FindNext)
- AX = F23Fh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02345)
- ES:DI -> reply buffer (see #02346)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=4Eh,AH=F2h"Novell",AX=F23Eh,AX=F242h
- Format of NetWare "File Search Continue" request packet:
- Offset Size Description (Table 02345)
- 00h BYTE volume number
- 02h WORD directory ID from File Search Initialize
- 04h WORD search sequence (set to FFFFh before first call)
- 06h BYTE search attributes
- 07h BYTE length of search directory path
- 08h N BYTEs name of search directory in VOLUME:DIRECTORY/.../DIR format
- SeeAlso: #02346
- Format of NetWare "File Search Continue" reply packet:
- Offset Size Description (Table 02346)
- 00h WORD next search sequence
- 02h WORD directory ID from File Search Initialize
- 04h WORD reserved for future use
- 06h 14 BYTEs filename
- 14h BYTE file attributes
- 15h BYTE file mode
- 16h DWORD file length
- 2Ah WORD creation date
- 2Ch WORD last-access date
- 2Eh WORD last-modification date
- 30h WORD last-modification time
- SeeAlso: #02345
- --------N-21F242-----------------------------
- INT 21 - Novell NetWare - CLOSE FILE
- AX = F242h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02347)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=3Eh,AH=F2h"Novell",AX=F23Eh,AX=F243h,AX=F24Ah
- Format of NetWare "Commit/Close File" request packet:
- Offset Size Description (Table 02347)
- 00h BYTE reserved (0)
- 01h 6 BYTEs NetWare file handle
- --------N-21F243-----------------------------
- INT 21 - Novell NetWare - CREATE FILE
- AX = F243h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02348)
- ES:DI -> reply buffer (see #02349)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=3Ch,AH=F2h"Novell",AX=F23Eh,AX=F242h,AX=F24Ah,AX=F24Dh
- Format of NetWare "Create File" request packet:
- Offset Size Description (Table 02348)
- 00h BYTE directory handle
- 01h BYTE file attributes
- 02h BYTE length of filename
- 03h N BYTEs filename in DOS format
- SeeAlso: #02349
- Format of NetWare "Create File" reply packet:
- Offset Size Description (Table 02349)
- 00h 6 BYTEs NetWare file handle
- 06h WORD reserved
- 08h 14 BYTEs DOS-format filename
- 16h BYTE file attributes
- 17h BYTE file execute type
- 18h DWORD file length
- 1Ch WORD creation date
- 1Eh WORD last-access date
- 20h WORD last-modification date
- 22h WORD last-modification time
- SeeAlso: #02348
- --------N-21F244-----------------------------
- INT 21 - Novell NetWare - FILE SERVICES - ERASE FILE
- AX = F244h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02351)
- ES:DI ignored
- Return: AL = status (see #02350)
- Note: this function only marks the file for deletion; use AH=E2h/SF=CEh to
- actually delete all marked files
- SeeAlso: AH=13h,AH=41h,AH=E2h/SF=0Bh,AH=E3h/SF=CEh
- (Table 02350)
- Values for NetWare function status:
- 00h successful
- 98h nonexistent volume
- 9Bh invaid directory handle
- 9Ch invalid path
- FFh no files found
- SeeAlso: #02094,#02860 at INT 2F/AX=7A20h/BX=0000h
- Format of NetWare "Erase Files" request packet:
- Offset Size Description (Table 02351)
- 00h BYTE directory handle
- 01h BYTE search attributes (see #01420 at AX=4301h)
- 02h BYTE length of filespec
- 03h N BYTEs ASCIZ filespec (may include wildcards)
- --------N-21F247-----------------------------
- INT 21 - Novell NetWare - GET CURRENT FILE SIZE
- AX = F247h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02352)
- ES:DI -> reply buffer (see #02353)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=42h,AH=F2h"Novell",AX=F23Eh,AX=F242h,AX=F24Ah,AX=F24Dh
- Format of NetWare "Get Current Size of File" request packet:
- Offset Size Description (Table 02352)
- 00h BYTE reserved for future use
- 01h 6 BYTEs NetWare file handle
- SeeAlso: #02353
- Format of NetWare "Get Current Size of File" reply packet:
- Offset Size Description (Table 02353)
- 00h DWORD current size of file
- SeeAlso: #02352
- --------N-21F24A-----------------------------
- INT 21 - Novell NetWare - COPY FROM ONE FILE TO ANOTHER
- AX = F24Ah
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02354)
- ES:DI -> reply buffer (see #02355)
- Return: AX = status (see #02350)
- Note: this function only marks the file for deletion; use AH=E2h/SF=CEh to
- actually delete all marked files
- SeeAlso: AH=F2h"Novell",AX=F243h,AX=F247h,AH=F3h"NetWare"
- Format of NetWare "Copy from One File to Another" request packet:
- Offset Size Description (Table 02354)
- 00h BYTE reserved for future use
- 01h 6 BYTEs source NetWare file handle
- 07h 6 BYTEs destination NetWare file handle
- 0Dh DWORD source file offset
- 11h DWORD destination file offset
- 15h DWORD number of bytes to copy
- SeeAlso: #02355
- Format of NetWare "Copy from One File to Another" reply packet:
- Offset Size Description (Table 02355)
- 00h DWORD number of bytes actually copied
- SeeAlso: #02354
- --------N-21F24D-----------------------------
- INT 21 - Novell NetWare - CREATE NEW FILE
- AX = F24Dh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02356)
- ES:DI -> reply buffer (see #02357)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AX=6C00h,AH=F2h"Novell",AX=F23Eh,AX=F242h,AX=F243h
- Format of NetWare "Create New File" request packet:
- Offset Size Description (Table 02356)
- 00h BYTE directory handle
- 01h BYTE file attributes
- 02h BYTE length of filename
- 03h N BYTEs filename in DOS format
- SeeAlso: #02357
- Format of NetWare "Create New File" reply packet:
- Offset Size Description (Table 02357)
- 00h 6 BYTEs NetWare file handle
- 06h WORD reserved
- 08h 14 BYTEs DOS-format filename
- 16h BYTE file attributes
- 17h BYTE file execute type
- 18h DWORD file length
- 1Ch WORD creation date
- 1Eh WORD last-access date
- 20h WORD last-modification date
- 22h WORD last-modification time
- SeeAlso: #02356
- --------N-21F24E-----------------------------
- INT 21 - Novell NetWare v2+ - ALLOW TASK ACCESS TO FILE
- AX = F24Eh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02358)
- ES:DI -> reply buffer (see #02359)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- Desc: allow calling task to gain access to an already-open file belonging
- to another task of the same client
- Note: the caller receives the same access rights as the owning task, and
- must use the returned new handle to access the file
- SeeAlso: AH=F2h"NetWare",AX=F244h
- Format of NetWare "Allow Task Access to File" request packet:
- Offset Size Description (Table 02358)
- 00h BYTE reserved for future use
- 01h 6 BYTEs NetWare file handle
- SeeAlso: #02359
- Format of NetWare "Allow Task Access to File" reply packet:
- Offset Size Description (Table 02359)
- 00h 6 BYTEs new file handle
- SeeAlso: #02358
- --------N-21F256SF01-------------------------
- INT 21 - Novell NetWare - CLOSE EXTENDED ATTRIBUTE HANDLE
- AX = F256h subfn 01h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02360)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F256h/SF=02h,AX=F256h/SF=04h,AX=F256h/SF=05h
- Format of NetWare "Close Extended Attribute Handle" request packet:
- Offset Size Description (Table 02360)
- 00h BYTE 01h (subfunction "Close Extended Attribute Handle")
- 01h WORD reserved for future use
- 03h DWORD extended attribute handle
- --------N-21F256SF02-------------------------
- INT 21 - Novell NetWare - WRITE EXTENDED ATTRIBUTE
- AX = F256h subfn 02h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02361)
- ES:DI -> reply buffer (see #02362)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F256h/SF=01h,AX=F256h/SF=03h,AX=F256h/SF=05h
- Format of NetWare "Write Extended Attribute" request packet:
- Offset Size Description (Table 02361)
- 00h BYTE 02h (subfunction "Write Extended Attribute")
- 01h WORD flags (see #02372)
- 03h 8 BYTEs extended attribute handle structure (see #02373)
- 0Bh DWORD write size
- 0Fh DWORD write position
- 13h DWORD access flag
- 17h WORD length of value
- 19h WORD key length
- 1Bh N BYTEs key
- N BYTEs value
- SeeAlso: #02361,#02363
- Format of NetWare "Write Extended Attribute" reply packet:
- Offset Size Description (Table 02362)
- 00h DWORD error code
- 04h DWORD number of bytes written
- 08h DWORD new extended attribute handle
- SeeAlso: #02361
- --------N-21F256SF03-------------------------
- INT 21 - Novell NetWare - READ EXTENDED ATTRIBUTE
- AX = F256h subfn 03h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02363)
- ES:DI -> reply buffer (see #02364)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F256h/SF=01h,AX=F256h/SF=04h,AX=F256h/SF=05h
- Format of NetWare "Read Extended Attribute" request packet:
- Offset Size Description (Table 02363)
- 00h BYTE 03h (subfunction "Read Extended Attribute")
- 01h WORD flags (see #02372)
- 03h 8 BYTEs extended attribute handle structure (see #02373)
- 0Bh DWORD read position
- 0Fh DWORD inspect size
- 13h WORD key length
- 15h N BYTEs key
- SeeAlso: #02364,#02361
- Format of NetWare "Read Extended Attribute" reply packet:
- Offset Size Description (Table 02364)
- 00h DWORD error code
- 04h DWORD total extended attribute value length
- 08h DWORD new extended attribute handle
- 0Ch DWORD access flag
- 10h WORD value length
- 12h N BYTEs EA value
- SeeAlso: #02363
- --------N-21F256SF04-------------------------
- INT 21 - Novell NetWare - ENUMERATE EXTENDED ATTRIBUTES
- AX = F256h subfn 04h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02365)
- ES:DI -> reply buffer (see #02366)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F256h/SF=01h,AX=F256h/SF=02h,AX=F256h/SF=05h
- Format of NetWare "Enumerate Extended Attributes" request packet:
- Offset Size Description (Table 02365)
- 00h BYTE 04h (subfunction "Enumerate Extended Attributes")
- 01h WORD flags (see #02372)
- 03h 8 BYTEs extended attribute handle structure (see #02373)
- 0Bh DWORD inspect size
- 0Fh WORD enumeration sequence
- 11h WORD key length
- 13h N BYTEs key
- SeeAlso: #02366
- Format of NetWare "Enumerate Extended Attributes" reply packet:
- Offset Size Description (Table 02366)
- 00h DWORD error code
- 04h DWORD total extended attributes
- 08h DWORD total extended attribute data size
- 0Ch DWORD total extended attribute key size
- 10h DWORD new extended attribute handle
- ---information level 0---
- 14h 2 WORDs reserved
- ---information level 1---
- 14h WORD number of enumerated extended attribute structures
- 16h var EA structure level 1
- ---information level 6---
- 14h WORD reserved
- 16h var EA structure level 6
- ---information level 7---
- 14h WORD number of enumerated extended attribute structures
- 16h var EA structure level 7
- SeeAlso: #02365
- Format of NetWare Extended Attribute structure level 1:
- Offset Size Description (Table 02367)
- 00h DWORD length of EA value
- 04h WORD length of EA key
- 06h DWORD access flag
- 0Ah N BYTEs key
- SeeAlso: #02366,#02368,#02369
- Format of NetWare Extended Attribute structure level 6:
- Offset Size Description (Table 02368)
- 00h DWORD length of EA value
- 04h WORD length of EA key
- 06h DWORD access flag
- 0Ah DWORD key extents
- 0Eh DWORD value extents
- 12h N BYTEs key
- SeeAlso: #02366,#02367,#02369
- Format of NetWare Extended Attribute structure level 7:
- Offset Size Description (Table 02369)
- 00h BYTE key length
- 01h N BYTEs key
- BYTE 00h
- SeeAlso: #02366,#02367,#02368
- --------N-21F256SF05-------------------------
- INT 21 - Novell NetWare - DUPLICATE EXTENDED ATTRIBUTES
- AX = F256h subfn 05h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02370)
- ES:DI -> reply buffer (see #02371)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F256h/SF=01h,AX=F256h/SF=02h,AX=F256h/SF=04h
- Format of NetWare "Duplicate Extended Attributes" request packet:
- Offset Size Description (Table 02370)
- 00h BYTE 05h (subfunction "Duplicate Extended Attributes")
- 01h WORD source flags (see #02372)
- 03h WORD destination flags (see #02372)
- 05h 8 BYTEs source extended attribute structure (see #02373)
- 0Dh 8 BYTEs destination extended attribute structure (see #02373)
- SeeAlso: #02371
- Format of NetWare "Duplicate Extended Attributes" reply packet:
- Offset Size Description (Table 02371)
- 00h DWORD number duplicated
- 04h DWORD data size duplicated
- 08h DWORD key size duplicated
- SeeAlso: #02370
- Bitfields for NetWare extended attribute flags:
- Bit(s) Description (Table 02372)
- 1-0 extended attribute handle structure type
- 00 volume number and directory entry number
- 01 NetWare file handle
- 10 extended attribute handle
- 11 not used
- 2 close handle on error
- 6-4 information level (0,1,6,7)
- 7 not used
- SeeAlso: #02370,#02373
- Format of NetWare extended attribute structure:
- Offset Size Description (Table 02373)
- ---type 0---
- 00h DWORD volume number
- 04h DWORD directory entry number
- ---type 1---
- 00h DWORD NetWare file handle
- 04h 4 BYTEs unused
- ---type 2---
- 00h DWORD extended attribute handle
- 04h 4 BYTEs unused
- SeeAlso: #02372
- --------N-21F257SF01-------------------------
- INT 21 - Novell NetWare - OPEN/CREATE FILE OR SUBDIRECTORY
- AX = F257h subfn 01h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02374)
- ES:DI -> reply buffer (see #02375)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=6C00h,AX=F257h/SF=02h,AX=F257h/SF=04h
- Format of NetWare "Open/Create File or Subdirectory" request packet:
- Offset Size Description (Table 02374)
- 00h BYTE 01h (subfunction "Open/Create File or Subdirectory")
- 01h BYTE name space (see #02387)
- 02h BYTE open/create mode
- 03h WORD search attributes
- 05h DWORD return information mask
- 09h DWORD create attributes
- 0Dh WORD desired access rights (see #02377)
- 0Fh NetWare handle/path structure
- SeeAlso: #02375
- Format of NetWare "Open/Create File or Subdirectory" reply packet:
- Offset Size Description (Table 02375)
- 00h DWORD file handle
- 04h BYTE open/create action
- 00h open
- 01h replace
- 03h create
- 05h BYTE reserved
- SeeAlso: #02374
- Format of NetWare Handle/Path structure:
- Offset Size Description (Table 02376)
- 00h BYTE volume number
- 01h DWORD directory base or short handle
- 05h BYTE handle flag
- 00h short directory handle
- 01h directory base
- FFh no handle
- 06h BYTE path component count
- 07h N BYTEs path component
- Bitfields for NetWare desired access rights:
- Bit(s) Description (Table 02377)
- 0 read-only mode
- 1 write-only
- 2 deny read
- 3 deny write
- 4 compatibility mode
- 6 write-through mode
- SeeAlso: #02374
- --------N-21F257SF02-------------------------
- INT 21 - Novell NetWare - INITIALIZE SEARCH
- AX = F257h subfn 02h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02378)
- ES:DI -> reply buffer (see #02379)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=4Eh,AH=F2h"Novell",AX=F257h/SF=01h,AX=F257h/SF=03h
- Format of NetWare "Initialize Search" request packet:
- Offset Size Description (Table 02378)
- 00h BYTE 02h (subfunction "Initialize Search")
- 01h BYTE name space (see #02387)
- 02h BYTE reserved for future use
- 03h NetWare Handle/Path structure (see #02376)
- SeeAlso: #02379
- Format of NetWare "Initialize Search" reply packet:
- Offset Size Description (Table 02379)
- 00h 9 BYTEs search sequence
- BYTE volume number
- DWORD directory number
- DWORD current directory number
- SeeAlso: #02378
- --------N-21F257SF03-------------------------
- INT 21 - Novell NetWare - SCAN NAMESPACE ENTRY INFO
- AX = F257h subfn 03h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02380)
- ES:DI -> reply buffer (see #02381)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F257h/SF=04h,AX=F257h/SF=05h
- Format of NetWare "Search for File or Subdirectory" request packet:
- Offset Size Description (Table 02380)
- 00h BYTE 03h (subfunction "Search for File or Subdirectory")
- ???
- SeeAlso: #02381
- Format of NetWare "Search for File or Subdirectory" reply packet:
- Offset Size Description (Table 02381)
- 00h ???
- SeeAlso: #02380
- --------N-21F257SF04-------------------------
- INT 21 - Novell NetWare - RENAME OR MOVE FILE OR SUBDIRECTORY
- AX = F257h subfn 04h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02382)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=56h,AH=F2h"Novell",AX=F257h/SF=02h,AX=F257h/SF=03h,AX=F257h/SF=05h
- Format of NetWare "Rename or Move File or Subdirectory" request packet:
- Offset Size Description (Table 02382)
- 00h BYTE 04h (subfunction "Rename or Move File or Subdirectory")
- 01h BYTE name space (see #02387)
- 02h BYTE rename flags
- bit 0: rename successful
- bit 1: compatibility mode
- 03h WORD search attributes
- 05h source NetWare Handle Path
- destination NetWare Handle Path
- --------N-21F257SF05-------------------------
- INT 21 - Novell NetWare - SCAN FILE OR SUBDIRECTORY FOR TRUSTEES
- AX = F257h subfn 05h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02383)
- ES:DI -> reply buffer (see #02384)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F257h/SF=04h,AX=F257h/SF=06h
- Format of NetWare "Scan File or Subdirectory for Trustees" request packet:
- Offset Size Description (Table 02383)
- 00h BYTE 05h (subfunction "Scan File or Subdirectory for Trustees")
- 01h BYTE name space (see #02387)
- 02h BYTE reserved for future use
- 03h DWORD scan sequence (set to 00000000h before first call)
- 07h NetWare Handle/Path structure (see #02376)
- SeeAlso: #02384
- Format of NetWare "Scan File or Subdirectory for Trustees" reply packet:
- Offset Size Description (Table 02384)
- 00h DWORD next scan sequence or FFFFFFFFh if no more
- 04h WORD number of trustee object IDs returned
- 06h trustee structure
- SeeAlso: #02383
- --------N-21F257SF06-------------------------
- INT 21 - Novell NetWare v3+ - GET INFORMATION ABOUT FILE OR DIRECTORY
- AX = F257h subfn 06h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02385)
- ES:DI -> reply buffer (see #02388)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AH=F2h"Novell",AX=F257h/SF=02h,AX=F257h/SF=05h,AX=F257h/SF=07h
- Format of NetWare "Get NS Entry Info" request buffer:
- Offset Size Description (Table 02385)
- 00h BYTE 06h (subfunction "Get NS Entry Info")
- 01h BYTE name space (see #02387)
- 02h BYTE destination name space
- 03h WORD search attributes
- 05h DWORD return information mask (see #02386)
- 09h BYTE volume number
- 0Ah DWORD directory base
- 0Eh BYTE handle flag
- 00h first byte of dir base is dir handle; ignore volume number
- 01h dir base = unique ID, volume number set
- FFh volume number and dir base ignored, volume part of path
- 0Fh BYTE number of path components
- 10h N BYTEs list of path components (each a counted string)
- SeeAlso: #02388
- Bitfields for return information mask:
- Bit(s) Description (Table 02386)
- 0 include filename
- 1 data stream space allocated info
- 2 attributes info
- 3 data stream size info
- 4 total space allocated for all data streams
- 5 extended attributes info
- 6 archive info
- 7 modify info
- 8 create info
- 9 name space info
- 10 directory info
- 11 rights info
- (Table 02387)
- Values for NetWare name space:
- 00h DOS
- 01h Macintosh
- 02h NFS
- 03h FTAM
- 04h OS/2
- SeeAlso: #02385,#02393
- Format of NetWare "Get NS Entry Info" reply buffer:
- Offset Size Description (Table 02388)
- 00h 72 BYTEs reserved
- 48h DWORD creator's name space number
- 4Ch 257 BYTEs reserved
- SeeAlso: #02385
- --------N-21F257SF07-------------------------
- INT 21 - Novell NetWare - MODIFY FILE OR SUBDIRECTORY DOS INFORMATION
- AX = F257h subfn 07h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02389)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F257h/SF=04h,AX=F257h/SF=08h
- Format of NetWare "Modify File or Subdirectory DOS Information" request packet:
- Offset Size Description (Table 02389)
- 00h BYTE 07h (subfunction "Modify File or Subdirectory DOS Information")
- 01h BYTE name space (see #02387)
- 02h BYTE reserved for future use
- 03h WORD search attributes
- 05h DWORD modify DOS mask
- 09h Modify DOS information structure
- --------N-21F257SF08-------------------------
- INT 21 - Novell NetWare - DELETE FILE/DIRECTORY
- AX = F257h subfn 08h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02390)
- ES:DI -> reply buffer (see #02391)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F257h/SF=01h,AX=F257h/SF=07h
- Format of NetWare "Delete File/Directory" request packet:
- Offset Size Description (Table 02390)
- 00h BYTE 08h (subfunction "Delete File/Directory")
- ???
- SeeAlso: #02391
- Format of NetWare "Delete File/Directory" reply packet:
- Offset Size Description (Table 02391)
- 00h ???
- SeeAlso: #02390
- --------N-21F257SF09-------------------------
- INT 21 - Novell NetWare - SET SHORT DIRECTORY HANDLE
- AX = F257h subfn 09h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02392)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F257h/SF=0Ch
- Format of NetWare "Set Short Directory Handle" request packet:
- Offset Size Description (Table 02392)
- 00h BYTE 09h (subfunction "Set Short Directory Handle")
- 01h BYTE name space (see #02387)
- 02h BYTE data stream
- 03h BYTE destination directory handle
- 04h BYTE reserved for future use
- 05h NetWare Handle/Path structure (see #02376)
- --------N-21F257SF0A-------------------------
- INT 21 - Novell NetWare v3+ - ADD TRUSTEE SET TO FILE OR SUBDIRECTORY
- AX = F257h subfn 0Ah
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02393)
- ES:DI ignored
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AX=F257h/SF=0Bh
- Format of NetWare "Add Trustee Set" request packet:
- Offset Size Description (Table 02393)
- 00h BYTE 0Ah (subfunction "Add Trustee Set to File or Subdirectory")
- 01h BYTE name space (see #02387)
- 02h 2 BYTEs reserved
- 04h WORD trustee rights (see #02141)
- 06h WORD object ID count
- 08h NetWare Handle/Path structure (see #02376)
- 6 BYTEs trustee structure (see #02394)
- Format of NetWare trustee structure:
- Offset Size Description (Table 02394)
- 00h DWORD object ID
- 04h WORD trustee rights
- SeeAlso: #02393
- --------N-21F257SF0B-------------------------
- INT 21 - Novell NetWare - DELETE TRUSTEE
- AX = F257h subfn 0Bh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02395)
- ES:DI -> reply buffer (see #02396)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F257h/SF=0Ah
- Format of NetWare "Delete Trustee" request packet:
- Offset Size Description (Table 02395)
- 00h BYTE 0Bh (subfunction "Delete Trustee")
- ???
- SeeAlso: #02396
- Format of NetWare "Delete Trustee" reply packet:
- Offset Size Description (Table 02396)
- 00h ???
- SeeAlso: #02395
- --------N-21F257SF0C-------------------------
- INT 21 - Novell NetWare v2+ - ALLOCATE SHORT DIRECTORY HANDLE
- AX = F257h subfn 0Ch
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02397)
- ES:DI -> reply buffer (see #02398)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- Note: unlike "Alloc Permanent Directory Handle", this function does not
- automatically map a drive
- SeeAlso: AH=F2h"Novell",AX=F223h/SF=04h,AX=F223h/SF=05h,AX=F223h/SF=09h
- Format of NetWare "Allocate Short Directory Handle" request packet:
- Offset Size Description (Table 02397)
- 00h BYTE 0Ch (subfunction "Allocate Short Directory Handle")
- 01h BYTE name space (see #02387)
- 02h 2 BYTEs reserved for future use
- 04h WORD allocation mode
- bits 1-0: 00 permanent handle
- 01 temporary handle
- 10 special temporary handle
- 11 reserved
- 06h NetWare Handle/Path structure (see #02376)
- SeeAlso: #02398
- Format of NetWare "Allocate Short Directory Handle" reply packet:
- Offset Size Description (Table 02398)
- 00h BYTE new directory handle
- 01h BYTE volume number
- 02h DWORD reserved for future use
- SeeAlso: #02397
- --------N-21F257SF10-------------------------
- INT 21 - Novell NetWare - SCAN SALVAGEABLE FILES
- AX = F257h subfn 10h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02399)
- ES:DI -> reply buffer (see #02400)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F216h/SF=1Bh,AX=F257h/SF=11h,AX=F257h/SF=12h
- Format of NetWare "Scan Salvageable Files" request packet:
- Offset Size Description (Table 02399)
- 00h BYTE 10h (subfunction "Scan Salvageable Files")
- 01h BYTE name space
- 02h BYTE data stream
- 03h DWORD return information mask
- 07h DWORD last sequence (set to FFFFFFFFh before first call)
- 0Bh NetWare Handle/Path structure (see #02376)
- SeeAlso: #02400,#02123
- Format of NetWare "Scan Salvageable Files" reply packet:
- Offset Size Description (Table 02400)
- 00h DWORD next sequence number
- 04h WORD deletion time
- 06h WORD deletion date
- 08h DWORD ID of deletor
- 0Ch DWORD volume number
- 10h DWORD directory entry number
- 14h NetWare Information Structure
- SeeAlso: #02399,#02124
- --------N-21F257SF11-------------------------
- INT 21 - Novell NetWare - RECOVER SALVAGEABLE FILE
- AX = F257h subfn 11h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02401)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F216h/SF=1Ch,AX=F257h/SF=10h,AX=F257h/SF=12h
- Format of NetWare "Recover Salvageable File" request packet:
- Offset Size Description (Table 02401)
- 00h BYTE 11h (subfunction "Recover Salvageable File")
- 01h BYTE name space
- 02h BYTE reserved for future use
- 03h DWORD sequence number
- 07h DWORD volume number
- 0Bh DWORD scan directory base
- 0Fh BYTE new file name length
- 10h N BYTEs new file name
- SeeAlso: #02402,#02125
- --------N-21F257SF12-------------------------
- INT 21 - Novell NetWare - PURGE SALVAGEABLE FILE
- AX = F257h subfn 12h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02402)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F216h/SF=1Dh,AX=F257h/SF=10h,AX=F257h/SF=11h
- Format of NetWare "Purge Salvageable File" request packet:
- Offset Size Description (Table 02402)
- 00h BYTE 12h (subfunction "Purge Salvageable File")
- 01h BYTE name space
- 02h BYTE reserved
- 03h DWORD sequence number
- 07h DWORD volume number
- 0Bh DWORD directory entry number
- SeeAlso: #02401
- --------N-21F257SF13-------------------------
- INT 21 - Novell NetWare - GET NAMESPACE INFORMATION
- AX = F257h subfn 13h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02403)
- ES:DI -> reply buffer (see #02404)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F257h/SF=12h,AX=F257h/SF=15h
- Format of NetWare "Get Namespace Information" request packet:
- Offset Size Description (Table 02403)
- 00h BYTE 13h (subfunction "Get Namespace Information")
- 01h BYTE source name space (see #02387)
- 02h BYTE destination name space
- 03h BYTE reserved for future use
- 04h BYTE volume number
- 05h DWORD directory base
- 09h DWORD namespace information mask
- SeeAlso: #02404
- Format of NetWare "Get Namespace Information" reply packet:
- Offset Size Description (Table 02404)
- 00h var namespace-specific information
- SeeAlso: #02403
- --------N-21F257SF15-------------------------
- INT 21 - Novell NetWare - GET PATH STRING FROM SHORT DIRECTORY HANDLE
- AX = F257h subfn 15h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02405)
- ES:DI -> reply buffer (see #02406)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F257h/SF=13h,AX=F257h/SF=16h
- Format of NetWare "Get Path String from Short Directory Handle" request packet:
- Offset Size Description (Table 02405)
- 00h BYTE 15h (subfunction "Get Path String from Short Directory Handle")
- 01h BYTE name space (see #02387)
- 02h BYTE short directory handle
- SeeAlso: #02406
- Format of NetWare "Get Path String from Short Directory Handle" reply packet:
- Offset Size Description (Table 02406)
- 00h BYTE length of path
- 01h N BYTEs full directory path
- SeeAlso: #02405
- --------N-21F257SF16-------------------------
- INT 21 - Novell NetWare - GENERATE DIRECTORY BASE AND VOLUME NUMBER
- AX = F257h subfn 16h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02407)
- ES:DI -> reply buffer (see #02408)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F257h/SF=15h,AX=F257h/SF=17h
- Format of NetWare "Generate Directory Base and Volume Number" request packet:
- Offset Size Description (Table 02407)
- 00h BYTE 16h (subfunction "Generate Directory Base and Volume Number")
- 01h BYTE name space (#02802)
- 02h 3 BYTEs reserved for future use
- 05h NetWare Handle/Path structure (see #02376)
- SeeAlso: #02408
- Format of NetWare "Generate Directory Base and Volume Number" reply packet:
- Offset Size Description (Table 02408)
- 00h DWORD namespace directory base
- 04h DWORD DOS directory base
- 08h BYTE volume number
- SeeAlso: #02407
- --------N-21F257SF17-------------------------
- INT 21 - Novell NetWare - GET NAME SPACE INFORMATION FORMAT
- AX = F257h subfn 17h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02409)
- ES:DI -> reply buffer (see #02410)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F257h/SF=18h,AX=F257h/SF=19h
- Format of NetWare "Get Name Space Information Format" request packet:
- Offset Size Description (Table 02409)
- 00h BYTE 17h (subfunction "Get Name Space Information Format")
- 01h BYTE name space (see #02387)
- 02h BYTE volume number
- SeeAlso: #02410
- Format of NetWare "Get Name Space Information Format" reply packet:
- Offset Size Description (Table 02410)
- 00h DWORD fixed bitmask
- 04h DWORD variable bitmask
- 08h DWORD huge bitmask
- 0Ch WORD fixed bits defined
- 0Eh WORD variable bits defined
- 10h WORD huge bits defined
- 12h 128 BYTEs field lengths
- SeeAlso: #02409
- --------N-21F257SF18-------------------------
- INT 21 - Novell NetWare - GET NAME SPACES LOADED
- AX = F257h subfn 18h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02411)
- ES:DI -> reply buffer (see #02412)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F257h/SF=17h,AX=F257h/SF=19h,AX=F257h/SF=1Ah
- SeeAlso: AX=F216h/SF=2Fh
- Format of NetWare "Get Name Spaces Loaded" request packet:
- Offset Size Description (Table 02411)
- 00h BYTE 18h (subfunction "Get Name Spaces Loaded")
- 01h 2 BYTEs reserved for future use
- 03h BYTE volume number
- SeeAlso: #02412
- Format of NetWare "Get Name Spaces Loaded" reply packet:
- Offset Size Description (Table 02412)
- 00h WORD number of namespace elements
- 02h WORD number of namespace elements loaded
- 04h N BYTEs loaded name spaces (each byte contains number of one loaded
- name space)
- SeeAlso: #02411
- --------N-21F257SF19-------------------------
- INT 21 - Novell NetWare - WRITE NAME SPACE INFO
- AX = F257h subfn 19h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02413)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F257h/SF=17h,AX=F257h/SF=18h
- Format of NetWare "Write Name Space Info" request packet:
- Offset Size Description (Table 02413)
- 00h BYTE 19h (subfunction "Write Name Space Info")
- 01h BYTE source name space (see #02387)
- 02h BYTE destination name space
- 03h BYTE volume number
- 04h DWORD directory entry number
- 08h DWORD namespace information bitmask
- 0Ch 512 BYTEs namespace-specific informatin
- --------N-21F257SF1A-------------------------
- INT 21 - Novell NetWare - READ EXTENDED NAME SPACE INFO
- AX = F257h subfn 1Ah
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02414)
- ES:DI -> reply buffer (see #02415)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F257h/SF=18h,AX=F257h/SF=19h,AX=F257h/SF=1Bh
- Format of NetWare "Read Extended Name Space Info" request packet:
- Offset Size Description (Table 02414)
- 00h BYTE 1Ah (subfunction "Read Extended Name Space Info")
- 01h BYTE name space (see #02387)
- 02h BYTE volume number
- 03h DWORD directory base
- 07h DWORD huge mask
- 0Bh 16 BYTEs huge state information
- SeeAlso: #02415
- Format of NetWare "Read Extended Name Space Info" reply packet:
- Offset Size Description (Table 02415)
- 00h 16 BYTEs next huge state information
- 10h DWORD huge data length
- 14h N BYTEs huge data
- SeeAlso: #02414
- --------N-21F257SF1B-------------------------
- INT 21 - Novell NetWare - WRITE EXTENDED NAME SPACE INFO
- AX = F257h subfn 1Bh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02416)
- ES:DI -> reply buffer (see #02417)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F257h/SF=17h,AX=F257h/SF=18h,AX=F257h/SF=1Ah
- Format of NetWare "Write Extended Name Space Info" request packet:
- Offset Size Description (Table 02416)
- 00h BYTE 1Bh (subfunction "Write Extended Name Space Info")
- 01h BYTE name space (see #02387)
- 02h BYTE volume number
- 03h DWORD directory entry number
- 07h DWORD huge mask
- 0Bh 16 BYTEs huge state information
- 1Bh DWORD huge data length
- 1Fh N BYTEs huge data
- SeeAlso: #02417
- Format of NetWare "Write Extended Name Space Info" request packet:
- Offset Size Description (Table 02417)
- 00h 16 BYTEs next huge state information
- 10h DWORD huge data used
- SeeAlso: #02416
- --------N-21F257SF1C-------------------------
- INT 21 - Novell NetWare - GET NS FULL PATH STRING
- AX = F257h subfn 1Ch
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02418)
- ES:DI -> reply buffer (see #02419)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- Note: this call returns the path in reverse order (root directory last)
- SeeAlso: AH=F2h"Novell",AX=F257h/SF=03h,AX=F257h/SF=15h
- Format of NetWare "Get NS Full Path String" request packet:
- Offset Size Description (Table 02418)
- 00h BYTE 1Ch (subfunction "Get NS Full Path String")
- 01h BYTE source name space
- 02h BYTE destination name space
- 03h 10 BYTEs path cookie (see #02420)
- 04h NetWare Handle/Path structure (see #02376)
- SeeAlso: #02419
- Format of NetWare "Get NS Full Path String" reply packet:
- Offset Size Description (Table 02419)
- 00h 10 BYTEs next path cookie (see #02420)
- 0Ah WORD size of path component(s) in packet
- 0Ch WORD number of path components in packet
- 0Eh path components
- SeeAlso: #02418
- Format of NetWare path cookie:
- Offset Size Description (Table 02420)
- 00h WORD flags
- bit 0: last component is a filename
- 02h DWORD cookie1
- 06h DWORD cookie2
- Note: "cookie1" and "cookie2" are to be set to FFFFFFFFh initially; if
- "cookie2" is FFFFFFFFh on return, all path components have been
- transferred
- SeeAlso: #02418,#02419
- --------N-21F257SF1D-------------------------
- INT 21 - Novell NetWare - GET EFFECTIVE DIRECTORY RIGHTS
- AX = F257h subfn 1Dh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02421)
- ES:DI -> reply buffer (see #02422)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AX=F216h/SF=03h,AX=F257h/SF=06h,AX=F257h/SF=0Ch,AX=F257h/SF=15h
- Format of NetWare "Get Effective Directory Rights" request packet:
- Offset Size Description (Table 02421)
- 00h BYTE 1Dh (subfunction "Get Effective Directory Rights")
- 01h BYTE name space (see #02387)
- 02h BYTE destination name space (see #02387)
- 03h WORD search attributes
- 05h DWORD return information mask
- 09h NetWare Handle/Path structure (see #02376)
- SeeAlso: #02422
- Format of NetWare "Get Effective Directory Rights" reply packet:
- Offset Size Description (Table 02422)
- 00h WORD caller's effective rights
- 02h NetWare Information Structure
- SeeAlso: #02421
- --------N-21F258SF01-------------------------
- INT 21 - Novell NetWare v4+ - GET VOLUME AUDITING STATISTICS
- AX = F258h subfn 01h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02423)
- ES:DI -> reply buffer (see #02424)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AX=F268h/SF=C8h
- Format of NetWare "Get Volume Auditing Statistics" request buffer:
- Offset Size Description (Table 02423)
- 00h BYTE 01h (function "Get Volume Auditing Statistics")
- 01h DWORD volume
- SeeAlso: #02424
- Format of NetWare "Get Volume Auditing Statistics" reply buffer:
- Offset Size Description (Table 02424)
- 00h WORD auditing version (date)
- 02h WORD audit file version (date)
- 04h DWORD auditing enabled flag
- 08h DWORD audit file's size
- 0Ch DWORD audit configuration file's size
- 10h DWORD maximum audit file size
- 14h DWORD audit file size threshold
- 18h DWORD number of audit records
- 1Ch DWORD number of history records
- SeeAlso: #02423,#02476
- --------N-21F258SF02-------------------------
- INT 21 - Novell NetWare - ADD AUDIT PROPERTY
- AX = F258h subfn 02h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02425)
- ES:DI -> reply buffer (see #02426)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F217h/SF=39h,AX=F258h/SF=06h,AX=F258h/SF=08h
- Format of NetWare "Add Audit Property" request packet:
- Offset Size Description (Table 02425)
- 00h BYTE 02h (subfunction "Add Audit Property")
- ???
- SeeAlso: #02426
- Format of NetWare "Add Audit Property" reply packet:
- Offset Size Description (Table 02426)
- 00h ???
- SeeAlso: #02425
- --------N-21F258SF03-------------------------
- INT 21 - Novell NetWare - LOGIN AS VOLUME AUDITOR
- AX = F258h subfn 03h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02427)
- ES:DI -> reply buffer (see #02428)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F258h/SF=04h,AX=F258h/SF=0Dh
- Format of NetWare "Login As Volume Auditor" request packet:
- Offset Size Description (Table 02427)
- 00h BYTE 03h (subfunction "Login As Volume Auditor")
- ???
- SeeAlso: #02428
- Format of NetWare "Login As Volume Auditor" reply packet:
- Offset Size Description (Table 02428)
- 00h ???
- SeeAlso: #02427
- --------N-21F258SF04-------------------------
- INT 21 - Novell NetWare - CHANGE AUDITOR PASSWORD
- AX = F258h subfn 04h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02429)
- ES:DI -> reply buffer
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F258h/SF=03h
- Format of NetWare "Change Auditor Password" request packet:
- Offset Size Description (Table 02429)
- 00h BYTE 04h (subfunction "Change Auditor Password")
- ???
- --------N-21F258SF05-------------------------
- INT 21 - Novell NetWare - CHECK AUDIT ACCESS
- AX = F258h subfn 05h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02430)
- ES:DI -> reply buffer
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F258h/SF=02h,AX=F258h/SF=08h
- Format of NetWare "Check Audit Access" request packet:
- Offset Size Description (Table 02430)
- 00h BYTE 05h (subfunction "Check Audit Access")
- ???
- --------N-21F258SF06-------------------------
- INT 21 - Novell NetWare - REMOVE AUDIT PROPERTY
- AX = F258h subfn 06h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02431)
- ES:DI -> reply buffer
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F258h/SF=02h,AX=F258h/SF=05h
- Format of NetWare "Remove Audit Property" request packet:
- Offset Size Description (Table 02431)
- 00h BYTE 06h (subfunction "Remove Audit Property")
- ???
- --------N-21F258SF07-------------------------
- INT 21 - Novell NetWare - DISABLE AUDITING ON VOLUME
- AX = F258h subfn 07h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02432)
- ES:DI -> reply buffer
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F258h/SF=08h,AX=F258h/SF=09h
- Format of NetWare "Disable Auditing on Volume" request packet:
- Offset Size Description (Table 02432)
- 00h BYTE 07h (subfunction "Disable Auditing on Volume")
- ???
- --------N-21F258SF08-------------------------
- INT 21 - Novell NetWare - ENABLE AUDITING ON VOLUME
- AX = F258h subfn 08h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02433)
- ES:DI -> reply buffer
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F258h/SF=07h,AX=F258h/SF=09h
- Format of NetWare "Enable Auditing on Volume" request packet:
- Offset Size Description (Table 02433)
- 00h BYTE 08h (subfunction "Enable Auditing on Volume")
- ???
- --------N-21F258SF09-------------------------
- INT 21 - Novell NetWare - IS USER AUDITED?
- AX = F258h subfn 09h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02434)
- ES:DI -> reply buffer
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F258h/SF=07h,AX=F258h/SF=08h
- Format of NetWare "Is User Audited?" request packet:
- Offset Size Description (Table 02434)
- 00h BYTE 09h (subfunction "Is User Audited?")
- ???
- --------N-21F258SF0A-------------------------
- INT 21 - Novell NetWare - READ AUDITING BITMAP
- AX = F258h subfn 0Ah
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02435)
- ES:DI -> reply buffer (see #02436)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F258h/SF=0Bh,AX=F258h/SF=10h
- Format of NetWare "Read Auditing Bitmap" request packet:
- Offset Size Description (Table 02435)
- 00h BYTE 0Ah (subfunction "Read Auditing Bitmap")
- ???
- SeeAlso: #02436,#02437
- Format of NetWare "Read Auditing Bitmap" reply packet:
- Offset Size Description (Table 02436)
- 00h ???
- SeeAlso: #02435,#02438
- --------N-21F258SF0B-------------------------
- INT 21 - Novell NetWare - READ AUDIT CONFIG HEADER
- AX = F258h subfn 0Bh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02437)
- ES:DI -> reply buffer (see #02438)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F258h/SF=0Ah,AX=F258h/SF=11h
- Format of NetWare "Read Audit Configuration Header" request packet:
- Offset Size Description (Table 02437)
- 00h BYTE 0Bh (subfunction "Read Audit Configuration Header")
- ???
- SeeAlso: #02438,#02435
- Format of NetWare "Read Audit Configuration Header" reply packet:
- Offset Size Description (Table 02438)
- 00h ???
- SeeAlso: #02437,#02436
- --------N-21F258SF0D-------------------------
- INT 21 - Novell NetWare - LOGOUT AS VOLUME AUDITOR
- AX = F258h subfn 0Dh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02439)
- ES:DI -> reply buffer
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F258h/SF=03h
- Format of NetWare "Logout as Volume Auditor" request packet:
- Offset Size Description (Table 02439)
- 00h BYTE 0Dh (subfunction "Logout as Volume Auditor")
- ???
- --------N-21F258SF0E-------------------------
- INT 21 - Novell NetWare - RESET AUDITING FILE
- AX = F258h subfn 0Eh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02440)
- ES:DI -> reply buffer
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F258h/SF=0Ah,AX=F258h/SF=0Fh
- Format of NetWare "Reset Auditing File" request packet:
- Offset Size Description (Table 02440)
- 00h BYTE 0Eh (subfunction "Reset Auditing File")
- ???
- --------N-21F258SF0F-------------------------
- INT 21 - Novell NetWare - RESET AUDIT HISTORY FILE
- AX = F258h subfn 0Fh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02441)
- ES:DI -> reply buffer
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F258h/SF=0Eh
- Format of NetWare "Reset Audit History File" request packet:
- Offset Size Description (Table 02441)
- 00h BYTE 0Fh (subfunction "Reset Audit History File")
- ???
- --------N-21F258SF10-------------------------
- INT 21 - Novell NetWare - WRITE AUDITING BITMAP
- AX = F258h subfn 10h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02442)
- ES:DI -> reply buffer
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F258h/SF=0Ah,AX=F258h/SF=11h
- Format of NetWare "Write Auditing Bitmap" request packet:
- Offset Size Description (Table 02442)
- 00h BYTE 10h (subfunction "Write Auditing Bitmap")
- ???
- SeeAlso: #02443
- --------N-21F258SF11-------------------------
- INT 21 - Novell NetWare - WRITE AUDIT CONFIG HEADER
- AX = F258h subfn 11h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02443)
- ES:DI -> reply buffer
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F258h/SF=0Bh,AX=F258h/SF=10h
- Format of NetWare "Write Audit Configuration Header" request packet:
- Offset Size Description (Table 02443)
- 00h BYTE 11h (subfunction "Write Audit Configuration Header")
- ???
- SeeAlso: #02442
- --------N-21F258SF13-------------------------
- INT 21 - Novell NetWare - GET AUDITING FLAGS
- AX = F258h subfn 13h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02444)
- ES:DI -> reply buffer (see #02445)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F258h/SF=05h
- Format of NetWare "Get Auditing Flags" request packet:
- Offset Size Description (Table 02444)
- 00h BYTE 13h (subfunction "Get Auditing Flags")
- ???
- SeeAlso: #02445
- Format of NetWare "Get Auditing Flags" reply packet:
- Offset Size Description (Table 02445)
- 00h ???
- SeeAlso: #02444
- --------N-21F258SF14-------------------------
- INT 21 - Novell NetWare - CLOSE OLD AUDITING FILE
- AX = F258h subfn 14h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02446)
- ES:DI -> reply buffer
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F258h/SF=15h
- Format of NetWare "Close Old Auditing File" request packet:
- Offset Size Description (Table 02446)
- 00h BYTE 14h (subfunction "Close Old Auditing File")
- ???
- SeeAlso: #02447
- --------N-21F258SF15-------------------------
- INT 21 - Novell NetWare - DELETE OLD AUDITING FILE
- AX = F258h subfn 15h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02447)
- ES:DI -> reply buffer
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F258h/SF=14h
- Format of NetWare "Delete Old Auditing File" request packet:
- Offset Size Description (Table 02447)
- 00h BYTE 15h (subfunction "Delete Old Auditing File")
- ???
- SeeAlso: #02446
- --------N-21F258SF16-------------------------
- INT 21 - Novell NetWare - CHECK AUDIT LEVEL TWO ACCESS
- AX = F258h subfn 16h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02448)
- ES:DI -> reply buffer
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F258h/SF=05h
- Format of NetWare "Check Audit Level Two Access" request packet:
- Offset Size Description (Table 02448)
- 00h BYTE 16h (subfunction "Check Audit Level Two Access")
- ???
- --------N-21F25ASF01-------------------------
- INT 21 - Novell NetWare - GET DATA MIGRATION INFO
- AX = F25Ah subfn 01h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02449)
- ES:DI -> reply buffer (see #02450)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=80h,AX=F25Ah/SF=86h
- Format of NetWare "Get Data Migration Information" request packet:
- Offset Size Description (Table 02449)
- 00h WORD length of following data
- 02h BYTE 01h (subfunction "Get Data Migration Information")
- SeeAlso: #02450
- Format of NetWare "Get Data Migration Information" reply packet:
- Offset Size Description (Table 02450)
- 00h ???
- SeeAlso: #02449
- --------N-21F25ASF80-------------------------
- INT 21 - Novell NetWare - MOVE FILE DATA TO DATA MIGRATION
- AX = F25Ah subfn 80h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02451)
- ES:DI -> reply buffer (see #02452)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=82h,AX=F25Ah/SF=85h
- Format of NetWare "Move File Data to Data Migration" request packet:
- Offset Size Description (Table 02451)
- 00h WORD length of following data
- 02h BYTE 80h (subfunction "Move File Data to Data Migration")
- 03h DWORD volume number
- 07h DWORD directory entry number
- 0Bh DWORD name space (see #02387)
- 0Fh DWORD support module ID
- 13h DWORD save key flag
- 00000010h to save key when file is demigrated
- SeeAlso: #02452
- Format of NetWare "Move File Data to Data Migration" reply packet:
- Offset Size Description (Table 02452)
- 00h DWORD volume-unique ID
- SeeAlso: #02451
- --------N-21F25ASF81-------------------------
- INT 21 - Novell NetWare - DATA MIGRATION FILE INFORMATION
- AX = F25Ah subfn 81h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02453)
- ES:DI -> reply buffer (see #02454)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=80h,AX=F25Ah/SF=82h,AX=F25Ah/SF=83h
- Format of NetWare "Data Migration File Information" request packet:
- Offset Size Description (Table 02453)
- 00h WORD length of following data
- 02h BYTE 81h (subfunction "Data Migration File Information")
- 03h DWORD volume number
- 07h DWORD directory entry number
- 0Bh DWORD name space (see #02387)
- SeeAlso: #02454
- Format of NetWare "Data Migration File Information" reply packet:
- Offset Size Description (Table 02454)
- 00h DWORD support module ID
- 04h DWORD estimate restoration time
- 08h DWORD bitmask of supported data streams
- SeeAlso: #02453
- --------N-21F25ASF82-------------------------
- INT 21 - Novell NetWare - VOLUME DATA MIGRATION STATUS
- AX = F25Ah subfn 82h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02455)
- ES:DI -> reply buffer (see #02456)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=01h,AX=F25Ah/SF=83h,AX=F25Ah/SF=84h
- Format of NetWare "Volume Data Migration Status" request packet:
- Offset Size Description (Table 02455)
- 00h WORD length of following data
- 02h BYTE 82h (subfunction "Volume Data Migration Status")
- 03h DWORD volume number
- 07h DWORD support module ID
- SeeAlso: #02456
- Format of NetWare "Volume Data Migration Status" request packet:
- Offset Size Description (Table 02456)
- 00h DWORD number of migrated files
- 04h DWORD total size required to restore all migrated files
- 08h DWORD total space used on migration device
- 0Ch DWORD limbo space (demigrated files with save-key flag set)
- 10h DWORD total space including limbo space
- 14h DWORD number of files in limbo
- SeeAlso: #02455
- --------N-21F25ASF83-------------------------
- INT 21 - Novell NetWare - GET MIGRATION OR STATUS INFORMATION
- AX = F25Ah subfn 83h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02457)
- ES:DI -> reply buffer (see #02458)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=82h,AX=F25Ah/SF=84h,AX=F25Ah/SF=85h
- Format of NetWare "Get Migration or Status Information" request packet:
- Offset Size Description (Table 02457)
- 00h WORD length of following data
- 02h BYTE 83h (subfunction "Get Migration or Status Information")
- SeeAlso: #02458
- Format of NetWare "Get Migration or Status Information" request packet:
- Offset Size Description (Table 02458)
- 00h DWORD presence flag
- FFFFFFFFh if Data Migration NLM is loaded and running
- 04h DWORD major version
- 08h DWORD minor version
- 0Ch DWORD flag: has support module registered with Data Migrator?
- SeeAlso: #02457
- --------N-21F25ASF84-------------------------
- INT 21 - Novell NetWare - DATA MIGRATION SUPPORT MODULE INFORMATION
- AX = F25Ah subfn 84h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02459)
- ES:DI -> reply buffer (see #02460)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=82h,AX=F25Ah/SF=83h,AX=F25Ah/SF=86h
- Format of NetWare "Data Migration Support Module Information" request packet:
- Offset Size Description (Table 02459)
- 00h WORD length of following data
- 02h BYTE 84h (subfunction "Data Migration Support Module Information")
- 03h DWORD information level
- 0000h get data migration NLM info
- 0001h get loaded support modules
- 0002h get name of support module
- 07h DWORD support module ID
- SeeAlso: #02460
- Format of NetWare "Data Migration Support Module Information" request packet:
- Offset Size Description (Table 02460)
- ---information level 0---
- 00h DWORD read/write access status
- 04h DWORD length of Specific Device Information block (max 384)
- 08h DWORD space available on support module
- 0Ch DWORD amount of space used
- 10h BYTE length of support module's name
- 11h 14 BYTEs support module name
- 1Fh 128 BYTEs support module information
- ---information level 1---
- 00h DWORD number of support modules
- 04h 32 BYTEs support module IDs
- ---information level 2---
- 00h BYTE length of module name
- 01h 32 BYTEs support module name
- SeeAlso: #02459
- --------N-21F25ASF85-------------------------
- INT 21 - Novell NetWare - MOVE FILE DATA FROM DATA MIGRATION
- AX = F25Ah subfn 85h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02461)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=80h,AX=F25Ah/SF=83h,AX=F25Ah/SF=86h
- Format of NetWare "Move File Data From Data Migration" request packet:
- Offset Size Description (Table 02461)
- 00h WORD length of following data
- 02h BYTE 85h (subfunction "Move File Data from Data Migration")
- 03h DWORD volume number
- 07h DWORD directory entry number
- 0Bh DWORD name space (see #02387)
- SeeAlso: #02452
- --------N-21F25ASF86-------------------------
- INT 21 - Novell NetWare - GET OR SET DEFAULT SUPPORT MODULE
- AX = F25Ah subfn 86h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02462)
- ES:DI -> reply buffer (see #02463)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=01h,AX=F25Ah/SF=80h,AX=F25Ah/SF=84h
- Format of NetWare "Get or Set Default Support Module" request packet:
- Offset Size Description (Table 02462)
- 00h WORD length of following data
- 02h BYTE 86h (subfunction "Get or Set Default Support Module")
- 03h DWORD direction
- 00h get default support module
- 01h set default support module
- 07h DWORD new module ID if setting
- SeeAlso: #02463
- Format of NetWare "Get or Set Default Support Module" request packet:
- Offset Size Description (Table 02463)
- 00h DWORD support module ID
- SeeAlso: #02462
- --------N-21F268SF01-------------------------
- INT 21 - Novell NetWare v4+ - GET TREE NAME
- AX = F268h subfn 01h
- CX = length of request buffer in bytes (0001h)
- DX = length of reply buffer in bytes (0064h)
- DS:SI -> request buffer (see #02464)
- ES:DI -> reply buffer (see #02465)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AX=F268h/SF=04h
- Format of NetWare "Get Tree Name" request buffer:
- Offset Size Description (Table 02464)
- 00h BYTE 01h (subfunction "Get Tree Name")
- Format of NetWare "Get Tree Name" reply buffer:
- Offset Size Description (Table 02465)
- 00h DWORD Ping version
- 04h DWORD length of tree name
- 08h 32 BYTEs tree name, padded with underscores ('_')
- 28h 60 BYTEs ???
- --------N-21F268SF04-------------------------
- INT 21 - Novell NetWare v4+ - GET BINDERY CONTEXT
- AX = F268h subfn 04h
- CX = length of request buffer in bytes (0001h)
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02466)
- ES:DI -> reply buffer (see #02467)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AX=F268h/SF=01h,AX=F268h/SF=C8h
- Format of NetWare "Get Bindery Context" request buffer:
- Offset Size Description (Table 02466)
- 00h BYTE 04h (subfunction "Get Bindery Context")
- Format of NetWare "Get Bindery Context" reply buffer:
- Offset Size Description (Table 02467)
- 00h DWORD length (max 200)
- 04h N WORDs Unicode bindery context string
- --------N-21F268SF05-------------------------
- INT 21 - Novell NetWare v4+ - MONITOR NDS CONNECTION
- AX = F268h subfn 05h
- CX = length of request buffer in bytes (0001h)
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02468)
- ES:DI -> reply buffer (unused???)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- Format of NetWare "Monitor NDS Connection" request buffer:
- Offset Size Description (Table 02468)
- 00h BYTE 05h (subfunction "Monitor NDS Connection"
- --------N-21F268SF16-------------------------
- INT 21 - Novell NetWare v4+ - NDS LIST PARTITIONS
- AX = F268h subfn 16h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02469)
- ES:DI -> reply buffer (see #02470)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- Note: the length specified in CX must be exactly 13 bytes more than the
- length field at offset 09h in the request buffer for this function
- to be successful
- SeeAlso: AX=F268h/SF=35h
- Format of NetWare "NDS List Partitions" request buffer:
- Offset Size Description (Table 02469)
- 00h BYTE 02h
- 01h DWORD ??? (FFFFFFFFh)
- 05h DWORD ??? (00000202h)
- 09h DWORD length (00000018h)
- 0Dh DWORD ??? (00000000h)
- 11h DWORD function (00000016h) (subfunction "NDS List Partitions")
- 15h DWORD ??? (00000400h)
- 19h DWORD API version (00000000h)
- 1Dh DWORD ??? (00000000h)
- 21h DWORD iteration (FFFFFFFFh)
- SeeAlso: #02470,#02471
- Format of NetWare "NDS List Partitions" reply buffer:
- Offset Size Description (Table 02470)
- 00h DWORD length
- 04h DWORD ???
- 08h DWORD return code
- 0Ch DWORD iteration
- 10h 1000 BYTEs returned data
- SeeAlso: #02469
- --------N-21F268SF35-------------------------
- INT 21 - Novell NetWare v4+ - NDS GET SERVER NAME AND ADDRESS
- AX = F268h subfn 35h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02471)
- ES:DI -> reply buffer (see #02472)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- Note: the length specified in CX must be exactly 13 bytes more than the
- length field at offset 09h in the request buffer for this function
- to be successful
- SeeAlso: AX=F268h/SF=16h
- Format of NetWare "NDS Get Server Name and Address" request buffer:
- Offset Size Description (Table 02471)
- 00h BYTE 02h
- 01h DWORD ??? (FFFFFFFFh)
- 05h DWORD ??? (00000202h)
- 09h DWORD length (0000000Ch)
- 0Dh DWORD ??? (00000000h)
- 11h DWORD function (00000035h) (subfunc "NDS Get Server Name and Addr")
- 15h DWORD ??? (00000400h)
- SeeAlso: #02469,#02472
- Format of NetWare "NDS Get Server Name and Address" reply buffer:
- Offset Size Description (Table 02472)
- 00h DWORD length
- 04h DWORD ???
- 08h DWORD return code
- 0Ch DWORD length of name
- 10h N WORDs Unicode server name string
- var padding
- DWORD ??? (00000001h)
- DWORD ??? (00000000h)
- DWORD ??? (0000000Ch)
- 12 BYTEs server's IPX address
- SeeAlso: #02471
- --------N-21F268SF3D-------------------------
- INT 21 - Novell NetWare v4+ - NDS LOGOUT
- AX = F268h subfn 3Dh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02473)
- ES:DI -> reply buffer (see #02474)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AX=F217h/SF=14h
- Format of NetWare "NDS Logout" request buffer:
- Offset Size Description (Table 02473)
- 00h BYTE 02h
- 01h DWORD ??? (FFFFFFFFh)
- 05h DWORD ??? (00000202h)
- 09h DWORD length (0000000Ch)
- 0Dh DWORD ??? (00000000h)
- 11h DWORD function (0000003Dh) (subfunction "NDS Logout")
- 15h DWORD ??? (00000000h)
- SeeAlso: #02474
- Format of NetWare "NDS Logout" reply buffer:
- Offset Size Description (Table 02474)
- 00h DWORD length
- 04h DWORD ???
- 08h DWORD return code
- SeeAlso: #02473
- --------N-21F268SFC8-------------------------
- INT 21 - Novell NetWare v4+ - GET DS AUDITING STATISTICS
- AX = F268h subfn C8h
- CX = length of request buffer in bytes (0001h)
- DX = length of reply buffer in bytes (0020h)
- DS:SI -> request buffer (see #02475)
- ES:DI -> reply buffer (see #02476)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AX=F258h/SF=01h,AX=F268h/SF=01h,AX=F268h/SF=04h
- Format of NetWare "Get DS Auditing Statistics" request buffer:
- Offset Size Description (Table 02475)
- 00h BYTE C8h (subfunction "Get DS Auditing Statistics")
- SeeAlso: #02476
- Format of NetWare "Get DS Auditing Statistics" reply buffer:
- Offset Size Description (Table 02476)
- 00h WORD auditing version (date)
- 02h WORD audit file version (date)
- 04h DWORD auditing enabled flag
- 08h DWORD audit file's size
- 0Ch DWORD audit configuration file's size
- 10h DWORD maximum audit file size
- 14h DWORD audit file size threshold
- 18h DWORD number of audit records
- 1Ch DWORD number of history records
- SeeAlso: #02424,#02475
- --------N-21F269-----------------------------
- INT 21 - Novell NetWare - LOG FILE
- AX = F269h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02477)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F203h,AX=F26Ah,AH=EBh"NetWare"
- Format of NetWare "Log File" request packet:
- Offset Size Description (Table 02477)
- 00h BYTE directory handle
- 01h BYTE lock flag
- 00h log only
- 01h log and lock
- 02h WORD lock timeout in clock ticks (0000h = don't wait)
- 04h BYTE length of filename
- 05h N BYTEs filename
- --------N-21F26A-----------------------------
- INT 21 - Novell NetWare - LOCK FILE SET
- AX = F26Ah
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02478)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F204h,AX=F269h,AH=CBh"NetWare"
- Format of NetWare "Lock File Set" request packet:
- Offset Size Description (Table 02478)
- 00h WORD lock timeout in clock ticks (0000h = don't wait)
- --------N-21F26C-----------------------------
- INT 21 - Novell NetWare - LOCK LOGICAL RECORD SET
- AX = F26Ch
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02479)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F20Ah,AX=F26Ah,AH=CBh"NetWare"
- Format of NetWare "Lock Logical Record Set" request packet:
- Offset Size Description (Table 02479)
- 00h BYTE lock flag
- 00h shareable lock
- 01h exclusive lock
- 01h WORD lock timeout in clock ticks (0000h = don't wait)
- --------N-21F26E-----------------------------
- INT 21 - Novell NetWare - LOCK PHYSICAL RECORD SET
- AX = F26Eh
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02480)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F21Bh,AX=F26Ch,AH=C2h"NetWare"
- Format of NetWare "Lock Physical Record Set" request packet:
- Offset Size Description (Table 02480)
- 00h BYTE lock flag
- 00h exclusive lock
- 02h shareable lock
- 01h WORD lock timeout in clock ticks (0000h = don't wait)
- --------N-21F26FSF00-------------------------
- INT 21 - Novell NetWare - OPEN SEMAPHORE
- AX = F26Fh subfn 00h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02481)
- ES:DI -> reply buffer (see #02482)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F26Fh/SF=01h,AX=F26Fh/SF=02h
- Format of NetWare "Open Semaphore" request packet:
- Offset Size Description (Table 02481)
- 00h BYTE 00h (subfunction "Open Semaphore")
- 01h BYTE initial semaphore value
- 02h BYTE length of semaphore's name
- 03h N BYTEs semaphore name
- SeeAlso: #02482
- Format of NetWare "Open Semaphore" request packet:
- Offset Size Description (Table 02482)
- 00h DWORD semaphore handle
- 04h BYTE number of clients using semaphore (including caller)
- SeeAlso: #02481
- --------N-21F26FSF01-------------------------
- INT 21 - Novell NetWare - CLOSE SEMAPHORE
- AX = F26Fh subfn 01h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02483)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F26Fh/SF=00h,AX=F26Fh/SF=03h,AX=F220h/SF=04h
- Format of NetWare "Close Semaphore" request packet:
- Offset Size Description (Table 02483)
- 00h BYTE 01h (subfunction "Close Semaphore")
- 01h DWORD semaphore handle
- SeeAlso: #02286
- --------N-21F26FSF02-------------------------
- INT 21 - Novell NetWare - WAIT ON SEMAPHORE
- AX = F26Fh subfn 02h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02484)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F26Fh/SF=00h,AX=F26Fh/SF=04h
- Format of NetWare "Wait on Semaphore" request packet:
- Offset Size Description (Table 02484)
- 00h BYTE 02h (subfunction "Wait on Semaphore")
- 01h DWORD semaphore handle
- 05h WORD timeout in clock ticks (0000h = no wait)
- --------N-21F26FSF03-------------------------
- INT 21 - Novell NetWare - SIGNAL SEMAPHORE
- AX = F26Fh subfn 03h
- CX = length of request packet in bytes
- DX = 0000h (no reply packet)
- DS:SI -> request packet (see #02485)
- ES:DI ignored
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F26Fh/SF=02h,AX=F26Fh/SF=04h
- Format of NetWare "Signal Semaphore" request packet:
- Offset Size Description (Table 02485)
- 00h BYTE 03h (subfunction "Signal Semaphore")
- 01h DWORD semaphore handle
- --------N-21F26FSF04-------------------------
- INT 21 - Novell NetWare - EXAMINE SEMAPHORE
- AX = F26Fh subfn 04h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02486)
- ES:DI -> reply buffer (see #02487)
- Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- SeeAlso: AH=F2h"Novell",AX=F26Fh/SF=02h,AX=F26Fh/SF=03h
- Format of NetWare "Examine Semaphore" request packet:
- Offset Size Description (Table 02486)
- 00h BYTE 04h (subfunction "Examine Semaphore")
- 01h DWORD semaphore handle
- SeeAlso: #02487
- Format of NetWare "Examine Semaphore" reply packet:
- Offset Size Description (Table 02487)
- 00h BYTE semaphore's current value
- 01h BYTE number of clients using semaphore
- SeeAlso: #02486
- --------N-21F272-----------------------------
- INT 21 - Novell NetWare v4+ - GET FILE SERVER UTC TIME
- AX = F272h
- CX = length of request buffer in bytes (0003h)
- DX = length of reply buffer in bytes (0064h)
- DS:SI -> request buffer (see #02488)
- ES:DI -> reply buffer (see #02489)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- Format of NetWare "Get File Server UTC Time" request buffer:
- Offset Size Description (Table 02488)
- 00h BYTE ??? (00h)
- 01h BYTE ??? (01h)
- 02h BYTE ??? (01h)
- SeeAlso: #02489
- Format of NetWare "Get File Server UTC Time" reply buffer:
- Offset Size Description (Table 02489)
- 00h DWORD seconds
- 04h DWORD ???
- 04h DWORD ??? (00000204h)
- 04h DWORD ??? (00000000h)
- 04h DWORD ??? (00000000h)
- 04h DWORD ??? (FFFFFFFFh)
- 04h DWORD ??? (00000000h)
- SeeAlso: #02488
- --------N-21F27BSF01-------------------------
- INT 21 - Novell NetWare v4+ - GET CACHE INFORMATION
- AX = F27Bh subfn 01h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02490)
- ES:DI -> reply buffer (see #02491)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AX=F27Bh/SF=02h
- Format of NetWare "Get Cache Information" request buffer:
- Offset Size Description (Table 02490)
- 00h WORD 0001h (length of following data)
- 02h BYTE 01h (subfunction "Get Cache Information")
- SeeAlso: #02491
- Format of NetWare "Get Cache Information" reply buffer:
- Offset Size Description (Table 02491)
- 00h DWORD current server time
- 04h BYTE vconsole version
- 05h BYTE vconsole revision
- 06h WORD reserved
- 08h DWORD "readExistingBlockCount"
- 0Ch DWORD "readExistingWriteWaitCount"
- 10h DWORD "readExistingPartialReadCount"
- 14h DWORD "readExistingReadErrorCount"
- 18h DWORD "writeBlockCount"
- 1Ch DWORD "writeEntireBlockCount"
- 20h DWORD "getDiskCount"
- 24h DWORD "getDiskNeedToAllocCount"
- 28h DWORD "getDiskSomeoneBeatMeCount"
- 2Ch DWORD "getDiskPartialReadCount"
- 30h DWORD "getDiskReadErrorCount"
- 34h DWORD "getAsyncDiskCount"
- 38h DWORD "getAsyncDiskNeedToAlloc"
- 3Ch DWORD "getAsyncDiskSomeoneBeatMe"
- 40h DWORD "errorDoingAsyncReadCount"
- 44h DWORD "getDiskNoReadCount"
- 48h DWORD "getDiskNoReadAllocCount"
- 4Ch DWORD "getDiskNoReadSomeoneBeatMeCount"
- 50h DWORD "diskWriteCount"
- 54h DWORD "diskWriteAllocCount"
- 58h DWORD "diskWriteSomeoneBeatMeCount"
- 5Ch DWORD "writeErrorCount"
- 60h DWORD "waitOnSemaphoreCount"
- 64h DWORD "allocBlockWaitForSomeoneCount"
- 68h DWORD "allocBlockCount"
- 6Ch DWORD "allocBlockWaitCount"
- 70h DWORD original number of cache buffers
- 74h DWORD current number of cache buffers
- 78h DWORD cache dirty-block threshold
- 7Ch DWORD "waitNodeCount"
- 80h DWORD "waitNodeAllocFailureCount"
- 84h DWORD "moveCacheNodeCount"
- 88h DWORD "moveCacheNodeFromAvailCount"
- 8Ch DWORD "accelerateCacheNodeWriteCount"
- 90h DWORD "removeCacheNodeCount"
- 94h DWORD "removeCacheNodeFromAvailCount"
- 98h DWORD number of cache checks
- 9Ch DWORD number of cache hits
- A0h DWORD number of dirty-cache checks
- A4h DWORD number of dirty-cache hits
- A8h DWORD "cacheUsedWhileChecking"
- ACh DWORD "waitForDirtyBlocksDecreaseCount"
- B0h DWORD "allocBlockFromAvailCount"
- B4h DWORD "allocBlockFromLRUCount"
- B8h DWORD "allocBlockAlreadyWaiting"
- BCh DWORD "LRUSittingTime"
- C0h DWORD maximum byte count
- C4h DWORD minimum number of cache buffers
- C8h DWORD minimum cache report threshold
- D0h DWORD "allocWaitingCount"
- D4h DWORD number of dirty cache blocks
- D8h DWORD "cacheDirtyWaitTime"
- DCh DWORD "maxDirtyTime"
- E0h DWORD number of directory cache buffers
- E4h DWORD "cacheByteToBlockShiftFactor"
- SeeAlso: #02490
- --------N-21F27BSF02-------------------------
- INT 21 - Novell NetWare v4+ - GET SERVER INFORMATION
- AX = F27Bh subfn 02h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02492)
- ES:DI -> reply buffer (see #02493)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AX=F27Bh/SF=01h
- Format of NetWare "Get Server Information" request buffer:
- Offset Size Description (Table 02492)
- 00h WORD 0001h (length of following data)
- 02h BYTE 02h (subfunction "Get Server Information")
- SeeAlso: #02493
- Format of NetWare "Get Server Information" reply buffer:
- Offset Size Description (Table 02493)
- 00h DWORD current server time
- 04h BYTE vconsole version
- 05h BYTE vconsole revision
- 06h WORD reserved
- 08h DWORD current NCP stations in use
- 0Ch DWORD peak NCP stations in use
- 10h DWORD total NCP requests
- 14h DWORD server utilization
- 18h DWORD number of cancelled replies
- 1Ch DWORD "writeHeldOffCount"
- 20h DWORD "writeHeldOffWithDuplicateRequest"
- 24h DWORD number of invalid request types
- 28h DWORD "beingAbortedCount"
- 2Ch DWORD "alreadyDoingReallocCount"
- 30h DWORD "deAllocInvalidSlotCount"
- 34h DWORD "deAllocBeingProcessedCount"
- 38h DWORD "deAllocForgedPacketCount"
- 3Ch DWORD "startStationErrorCount"
- 40h DWORD number of invalid slot numbers
- 44h DWORD "beingProcessedCount"
- 48h DWORD number of forged packets
- 4Ch DWORD number still transmitting
- 50h DWORD "reExecuteRequestCount"
- 54h DWORD number of invalid sequence numbers
- 58h DWORD "duplicateIsBeingSentAlreadyCnt"
- 5Ch DWORD number of positive acknowledgements sent
- 60h DWORD number of duplicate replies sent
- 64h DWORD number of times out of memory for station control
- 68h DWORD number of times out of available connections
- 6Ch DWORD "reallocSlotCount"
- 70h DWORD "reallocSlotCameTooSoonCount"
- 74h WORD number of times maximum hop count exceeded
- 76h WORD number of unknown networks
- 78h WORD "NoSpaceForService"
- 7Ah WORD number of times out of receive buffers
- 7Ch WORD "notMyNetwork"
- 7Eh DWORD number of NetBIOS packets propagated
- 82h DWORD total number of packets serviced
- 86h DWORD total number of packets routed
- SeeAlso: #02492
- --------N-21F27BSF04-------------------------
- INT 21 - Novell NetWare v4+ - GET USER INFORMATION
- AX = F27Bh subfn 04h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02494)
- ES:DI -> reply buffer (see #02495)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- Format of NetWare "Get User Information" request buffer:
- Offset Size Description (Table 02494)
- 00h WORD 0005h (length of following data)
- 02h BYTE 04h (subfunction "Get User Information")
- 03h DWORD connection number
- SeeAlso: #02495
- Format of NetWare "Get User Information" reply buffer:
- Offset Size Description (Table 02495)
- 00h DWORD current server time
- 04h BYTE vconsole version
- 05h BYTE vconsole revision
- 06h WORD reserved
- 08h DWORD connection number
- 0Ch DWORD use count
- 10h BYTE connection service type
- 11h 7 BYTEs login time
- 18h DWORD status
- 1Ch DWORD expiration time
- 20h DWORD object type
- 24h BYTE transaction flag
- 25h BYTE logical lock threshold
- 26h BYTE record lock threshold
- 27h BYTE file write flags
- 28h BYTE file write state
- 29h BYTE (filler)
- 2Ah WORD file lock count
- 2Ch WORD record lock count
- 2Eh 6 BYTEs total number of bytes read
- 34h 6 BYTEs total number of bytes written
- 3Ah DWORD total requests
- 3Eh DWORD held requests
- 42h 6 BYTEs held bytes read
- 48h 6 BYTEs held bytes written
- 4Eh BYTE length of user name
- 4Fh N BYTEs user name
- SeeAlso: #02494
- --------N-21F27BSF06-------------------------
- INT 21 - Novell NetWare v4+ - GET IPX/SPX Information
- AX = F27Bh subfn 06h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02496)
- ES:DI -> reply buffer (see #02497)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- Format of NetWare "Get IPX/SPX Information" request buffer:
- Offset Size Description (Table 02496)
- 00h WORD 0001h (length of following data)
- 02h BYTE 06h (subfunction "Get IPX/SPX Information")
- SeeAlso: #02497
- Format of NetWare "Get IPX/SPX Information" reply buffer:
- Offset Size Description (Table 02497)
- 00h DWORD current server time
- 04h BYTE vconsole version
- 05h BYTE vconsole revision
- 06h WORD reserved
- 08h DWORD number of IPX packets sent
- 0Ch WORD number of malformed IPX packets
- 0Eh DWORD number of IPX Get-ECB requests
- 12h DWORD number of failed IPX Get-ECB requests
- 16h DWORD number of IPX AES events
- 1Ah WORD number of postponed IPX AES events
- 1Ch WORD maximum number of sockets (from configuration)
- 1Eh WORD maximum number of open sockets
- 20h WORD number of failed IPX socket opens
- 22h DWORD number of IPX "listen" ECBs
- 24h WORD number of failed IPX EBC cancels
- 26h WORD number of failed IPX Get-Local-Target requests
- 28h WORD maximum number of SPX connections (from configuration)
- 2Ah WORD maximum number of SPX connections used
- 2Ch WORD number of SPX Establish-Connection requests
- 2Eh WORD number of failed SPX Establish-Connection requests
- 30h WORD total number of SPX "listen-connect" requests
- 32h WORD number of failed SPX "listen-connect" requests
- 34h DWORD number of SPX sends
- 38h DWORD number of SPX "window-choke"s
- 3Ch WORD number of bad SPX sends
- 3Eh WORD number of failed SPX sends
- 40h WORD number of aborted SPX connections
- 42h DWORD number of SPX packet listens
- 46h WORD number of bad SPX packet listens
- 48h DWORD number of incoming SPX packets
- 4Ch WORD number of bad incoming SPX packets
- 4Eh WORD number of supressed SPX packets
- 50h WORD "SPXNoSesListenECBCount"
- 52h WORD "SPXWatchDogDestSesCount"
- SeeAlso: #02496
- --------N-21F27BSF08-------------------------
- INT 21 - Novell NetWare v4+ - GET CPU INFORMATION
- AX = F27Bh subfn 08h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02498)
- ES:DI -> reply buffer (see #02499)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- Format of NetWare "Get CPU Information" request buffer:
- Offset Size Description (Table 02498)
- 00h WORD 0005h (length of following data)
- 02h BYTE 08h (subfunction "Get CPU Information")
- 03h DWORD CPU number
- SeeAlso: #02499
- Format of NetWare "Get CPU Information" reply buffer:
- Offset Size Description (Table 02499)
- 00h DWORD current server time
- 04h BYTE vconsole version
- 05h BYTE vconsole revision
- 06h WORD reserved
- 08h DWORD number of CPUs
- 0Ch DWORD page table owner flag
- 10h DWORD CPU type flag
- 14h DWORD coprocessor flag
- 18h DWORD bus type flag
- 1Ch DWORD I/O engine flag
- 20h DWORD filesystem engine flag
- 24h DWORD non-dedicated flag
- 28h 201 BYTEs counted string: CPU string;number of coprocessors;bus string
- SeeAlso: #02498
- --------N-21F27BSF09-------------------------
- INT 21 - Novell NetWare v4+ - GET VOLUME SWITCH INFORMATION
- AX = F27Bh subfn 09h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02500)
- ES:DI -> reply buffer (see #02501)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- Format of NetWare "Get Volume Switch Information" request buffer:
- Offset Size Description (Table 02500)
- 00h WORD 0005h (length of following data)
- 02h BYTE 09h (subfunction "Get Volume Switch Information")
- 03h DWORD starting item number
- SeeAlso: #02501
- Format of NetWare "Get Volume Switch Information" reply buffer:
- Offset Size Description (Table 02501)
- 00h DWORD current server time
- 04h BYTE vconsole version
- 05h BYTE vconsole revision
- 06h WORD reserved
- 08h DWORD total LFS counters
- 0Ch DWORD current LFS counters
- 10h DWORD "readFile"
- 14h DWORD "writeFile"
- 18h DWORD "deleteFile"
- 1Ch DWORD "renMove"
- 20h DWORD "openFile"
- 24h DWORD "createFile"
- 28h DWORD "createAndOpenFile"
- 2Ch DWORD "closeFile"
- 30h DWORD "scanDeleteFile"
- 34h DWORD "salvageFile"
- 38h DWORD "purgeFile"
- 3Ch DWORD "migrateFile"
- 40h DWORD "deMigrateFile"
- 44h DWORD "createDir"
- 48h DWORD "deleteDir"
- 4Ch DWORD "directoryScans"
- 50h DWORD "mapPathToDirNum"
- 54h DWORD "modifyDirEntry"
- 58h DWORD "getAccessRights"
- 5Ch DWORD "getAccessRightsFromIDs"
- 60h DWORD "mapDirNumToPath"
- 64h DWORD "getEntryFromPathStrBase"
- 68h DWORD "getOtherNSEntry"
- 6Ch DWORD "getExtDirInfo"
- 70h DWORD "getParentDirNum"
- 74h DWORD "addTrusteeR"
- 78h DWORD "scanTrusteeR"
- 7Ch DWORD "delTrusteeR"
- 80h DWORD "purgeTrust"
- 84h DWORD "findNextTrustRef"
- 88h DWORD "scanUserRestNodes"
- 8Ch DWORD "addUserRest"
- 90h DWORD "deleteUserRest"
- 94h DWORD "rtnDirSpaceRest"
- 98h DWORD "getActualAvailDskSp"
- 9Ch DWORD "cntOwnedFilesAndDirs"
- A0h DWORD "migFileInfo"
- A4h DWORD "volMigInfo"
- A8h DWORD "readMigFileData"
- ACh DWORD "getVolusageStats"
- B0h DWORD "getActualVolUsageStats"
- B4h DWORD "getDirUsageStats"
- B8h DWORD "NMFileReadsCount"
- BCh DWORD "NMFileWritesCount"
- C0h DWORD "mapPathToDirNumOrPhantom"
- C4h DWORD "stationsHasAccessRgtsGntedBelow"
- C8h DWORD "gtDataSteamLensFromPathStrBase"
- CCh DWORD "checkAndGetDirectoryEntry"
- D0h DWORD "getDeletedEntry"
- D4h DWORD "getOriginalNameSpace"
- D8h DWORD "getActualFileSize"
- DCh DWORD "verifyNameSpaceNumber"
- E0h DWORD "verifyDataStreamNumber"
- E4h DWORD "checkVolumeNumber"
- E8h DWORD "commitFile"
- ECh DWORD "VMGetDirectoryEntry"
- F0h DWORD "createDMFileEntry"
- F4h DWORD "renameNameSpaceEntry"
- F8h DWORD "logFile"
- FCh DWORD "releaseFile"
- 100h DWORD "clearFile"
- 104h DWORD "setVolumeFlag"
- 108h DWORD "clearVolumeFlag"
- 10Ch DWORD "getOriginalInfo"
- 110h DWORD "createMigratedDir"
- 114h DWORD "F3OpenCreate"
- 118h DWORD "F3InitFileSearch"
- 11Ch DWORD "F3ContinueFileSearch"
- 120h DWORD "F3RenameFile"
- 124h DWORD "F3ScanForTrustees"
- 128h DWORD "F3ObtainFileInfo"
- 12Ch DWORD "F3ModifyInfo"
- 130h DWORD "F3EraseFile"
- 134h DWORD "F3SetDirHandle"
- 138h DWORD "F3AddTrustees"
- 13Ch DWORD "F3DeleteTrustees"
- 140h DWORD "F3AllocDirHandle"
- 144h DWORD "F3ScanSalvagedFiles"
- 148h DWORD "F3RecoverSalvagedFiles"
- 14Ch DWORD "F3PurgeSalvageableFile"
- 150h DWORD "F3GetNSSpecificInfo"
- 154h DWORD "F3ModifyNSSpecificInfo"
- 158h DWORD "F3SearchSet"
- 15Ch DWORD "F3GetDirBase"
- 160h DWORD "F3QueryNameSpaceInfo"
- 164h DWORD "F3GetNameSpaceList"
- 168h DWORD "F3GetHugeInfo"
- 16Ch DWORD "F3SetHugeInfo"
- 170h DWORD "F3GetFullPathString"
- 174h DWORD "F3GetEffectiveDirectoryRights"
- SeeAlso: #02500
- --------N-21F27BSF0A-------------------------
- INT 21 - Novell NetWare v4+ - GET LOADED NLMs
- AX = F27Bh subfn 0Ah
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02502)
- ES:DI -> reply buffer (see #02503)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- Format of NetWare "Get NLMs Loaded" request buffer:
- Offset Size Description (Table 02502)
- 00h WORD 0005h (length of following data)
- 02h BYTE 0Ah (subfunction "Get NLMs Loaded")
- 03h DWORD first NLM number to report
- SeeAlso: #02503
- Format of NetWare "Get NLMs Loaded" reply buffer:
- Offset Size Description (Table 02503)
- 00h DWORD current server time
- 04h BYTE vconsole version
- 05h BYTE vconsole revision
- 06h WORD reserved
- 08h DWORD total number of NLMs
- 0Ch DWORD number of NLM numbers following (max 50)
- 10h 50 DWORDs NLM numbers
- SeeAlso: #02502
- --------N-21F27BSF0B-------------------------
- INT 21 - Novell NetWare v4+ - GET NLM INFORMATION
- AX = F27Bh subfn 0Bh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02504)
- ES:DI -> reply buffer (see #02505)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- Format of NetWare "Get NLM Information" request buffer:
- Offset Size Description (Table 02504)
- 00h WORD 0005h (length of following data)
- 02h BYTE 0Bh (subfunction "Get NLM Information")
- 03h DWORD NLM number
- SeeAlso: #02505
- Format of NetWare "Get NLM Information" reply buffer:
- Offset Size Description (Table 02505)
- 00h DWORD current server time
- 04h BYTE vconsole version
- 05h BYTE vconsole revision
- 06h WORD reserved
- 08h DWORD identification number
- 0Ch DWORD flags
- 10h DWORD NLM type (see #02506)
- 14h DWORD parent identifier
- 18h DWORD major version
- 1Ch DWORD minor version
- 20h DWORD revision
- 24h DWORD year
- 28h DWORD month
- 2Ch DWORD day
- 30h DWORD bytes available for allocation
- 34h DWORD "allocFreeCount"
- 38h DWORD last garbage collection
- 3Ch DWORD message language
- 40h DWORD number of referenced public identifiers
- 44h 200 BYTEs NLM strings: filename, NLM name, copyright
- SeeAlso: #02504
- (Table 02506)
- Values for NetWare NLM type:
- 0001h LAN
- 0002h DSK
- 0003h NAM
- 0004h utility NLM
- 0005h MSL
- 0006h operating system NLM
- 0007h paged NLM
- 0008h HAM
- 0009h CDM
- 000Ah file system NLM
- 000Bh real mode NLM
- 000Ch hidden NLM
- SeeAlso: #02505
- --------N-21F27BSF0D-------------------------
- INT 21 - Novell NetWare v4+ - GET OS VERSION INFORMATION
- AX = F27Bh subfn 0Dh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02507)
- ES:DI -> reply buffer (see #02508)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- Format of NetWare "Get OS Version Information" request buffer:
- Offset Size Description (Table 02507)
- 00h WORD 0001h (length of following data)
- 02h BYTE 0Dh (subfunction "Get OS Version Information")
- SeeAlso: #02508
- Format of NetWare "Get OS Version Information" reply buffer:
- Offset Size Description (Table 02508)
- 00h DWORD current server time
- 04h BYTE vconsole version
- 05h BYTE vconsole revision
- 06h WORD reserved
- 08h BYTE operating system major version
- 09h BYTE operating system minor version
- 0Ah BYTE operating system revision number
- 0Bh BYTE accounting version
- 0Ch BYTE VAP version
- 0Dh BYTE queueing version
- 0Eh BYTE security restrictions level
- 0Fh BYTE bridging support
- 10h DWORD maximum number of volumes
- 14h DWORD number of connection slots
- 18h DWORD maximum number of logged-in connections
- 1Ch DWORD maximum number of name spaces
- 20h DWORD maximum number of LANs
- 24h DWORD maximum number of media types
- 28h DWORD maximum number of protocols
- 2Ch DWORD maximum subdirectory tree depth
- 30h DWORD maximum number of data streams
- 34h DWORD maximum number of spooled printers
- 38h DWORD serial number
- 3Ch WORD application number
- SeeAlso: #02507
- --------N-21F27BSF14-------------------------
- INT 21 - Novell NetWare v4+ - GET ACTIVE LAN BOARD LIST
- AX = F27Bh subfn 14h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02509)
- ES:DI -> reply buffer (see #02510)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- Format of NetWare "Get Active LAN Board List" request buffer:
- Offset Size Description (Table 02509)
- 00h WORD 0005h (length of following data)
- 02h BYTE 14h (subfunction "Get Active LAN Board List")
- 03h DWORD start number
- SeeAlso: #02510
- Format of NetWare "Get Active LAN Board List" reply buffer:
- Offset Size Description (Table 02510)
- 00h DWORD current server time
- 04h BYTE vconsole version
- 05h BYTE vconsole revision
- 06h WORD reserved
- 08h DWORD maximum number of LANs
- 0Ch DWORD number of LAN board numbers returned
- 10h 50 DWORDs board numbers
- SeeAlso: #02509
- --------N-21F27BSF15-------------------------
- INT 21 - Novell NetWare v4+ - GET LAN CONFIGURATION
- AX = F27Bh subfn 15h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02511)
- ES:DI -> reply buffer (see #02512)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AX=F27Bh/SF=16h
- Format of NetWare "Get LAN Configuration" request buffer:
- Offset Size Description (Table 02511)
- 00h WORD 0005h (length of following data)
- 02h BYTE 15h (subfunction "Get LAN Configuration")
- 03h DWORD LAN board number
- SeeAlso: #02512
- Format of NetWare "Get LAN Configuration" reply buffer:
- Offset Size Description (Table 02512)
- 00h DWORD current server time
- 04h BYTE vconsole version
- 05h BYTE vconsole revision
- 06h WORD reserved
- 08h BYTE driver configuration major version
- 09h BYTE driver configuration minor version
- 0Ah 6 BYTEs driver node address
- 10h WORD driver mode flags
- 12h WORD driver board number
- 14h WORD driver board instance
- 16h DWORD driver maximum size
- 1Ah DWORD driver maximum receive size
- 1Eh DWORD driver receive size
- 22h 3 DWORDs reserved
- 2Eh WORD driver card ID
- 30h WORD driver transport time
- 32h DWORD driver source routing
- 36h WORD driver line speed
- 38h WORD driver reserved
- 3Ah BYTE driver major version
- 3Bh BYTE driver minor version
- 3Ch WORD driver flags
- 3Eh WORD driver send retries
- 40h DWORD driver link
- 44h WORD driver sharing flags
- 46h WORD driver slot
- 48h 4 WORDs driver I/O port and lengths
- 50h DWORD driver memory decode 0
- 54h WORD driver length 0
- 56h DWORD driver memory decode 1
- 5Ah WORD driver length 1
- 5Ch 2 BYTEs driver's interrupts
- 5Eh 2 BYTEs driver's DMA usage
- 60h 18 BYTEs driver's logical name
- 72h 14 BYTEs driver I/O reserved
- 80h 128 BYTEs driver card name
- 100h 40 BYTEs driver media type
- 128h 180 BYTEs driver custom variables
- SeeAlso: #02511
- --------N-21F27BSF16-------------------------
- INT 21 - Novell NetWare v4+ - GET LAN COMMON COUNTERS
- AX = F27Bh subfn 16h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02513)
- ES:DI -> reply buffer (see #02514)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AX=F27Bh/SF=15h
- Format of NetWare "Get LAN Common Counters" request buffer:
- Offset Size Description (Table 02513)
- 00h WORD 0009h (length of following data)
- 02h BYTE 16h (subfunction "Get LAN Common Counters")
- 03h DWORD LAN board number
- 07h DWORD starting block number (set to 00000000h for first call)
- SeeAlso: #02514
- Format of NetWare "Get LAN Common Counters" reply buffer:
- Offset Size Description (Table 02514)
- 00h DWORD current server time
- 04h BYTE vconsole version
- 05h BYTE vconsole revision
- 06h WORD reserved
- 08h BYTE statistics major version
- 09h BYTE statistics minor version
- 0Ah DWORD number of generic counters
- 0Eh DWORD number of counter blocks
- 12h DWORD number of custom variables
- 16h DWORD next counter block number
- 1Ah DWORD "notSupportedMask"
- 1Eh DWORD total number of packets tranmitted
- 22h DWORD total number of packets received
- 26h DWORD number of times no ECBs were available
- 2Ah DWORD number of transmitted packets which were too large
- 2Eh DWORD number of transmitted packets which were too small
- 32h DWORD number of packet receive overflows
- 36h DWORD number of received packets which were too large
- 3Ah DWORD number of received packets which were too small
- 3Eh DWORD number of miscellaneous transmitted-packet errors
- 42h DWORD number of miscellaneous received-packet errors
- 46h DWORD number of times transmission retried
- 4Ah DWORD number of checksum errors
- 4Eh DWORD number of hardware receive mismatches
- 52h 50 BYTEs reserved
- SeeAlso: #02513
- --------N-21F27BSF29-------------------------
- INT 21 - Novell NetWare v4+ - GET PROTOCOL STACK BY BOARD
- AX = F27Bh subfn 29h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02515)
- ES:DI -> reply buffer (see #02516)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- Format of NetWare "Get Protocol Stack by Board" request buffer:
- Offset Size Description (Table 02515)
- 00h WORD 0005h (length of following data)
- 02h BYTE 29h (subfunction "Get Protocol Stack by Board")
- 03h DWORD LAN board number
- SeeAlso: #02516
- Format of NetWare "Get Protocol Stack by Board" reply buffer:
- Offset Size Description (Table 02516)
- 00h DWORD current server time
- 04h BYTE vconsole version
- 05h BYTE vconsole revision
- 06h WORD reserved
- 08h WORD number of stacks listed (max 50)
- 0Ah 50 DWORDs protocol identifiers
- SeeAlso: #02515
- --------N-21F27BSF33-------------------------
- INT 21 - Novell NetWare v4+ - GET ROUTER INFO
- AX = F27Bh subfn 33h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02517)
- ES:DI -> reply buffer (see #02518)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AX=F27Bh/SF=35h
- Format of NetWare "Get Router Info" request buffer:
- Offset Size Description (Table 02517)
- 00h WORD 0005h (length of following data)
- 02h BYTE 33h (function "Get Router Info")
- 03h DWORD network number
- SeeAlso: #02518
- Format of NetWare "Get Router Info" reply buffer:
- Offset Size Description (Table 02518)
- 00h DWORD current server time
- 04h BYTE vconsole version
- 05h BYTE vconsole revision
- 06h WORD reserved
- 08h DWORD network number
- 0Ch WORD hops to net
- 0Eh WORD network status
- 10h WORD time to net
- SeeAlso: #02517,#02519
- --------N-21F27BSF35-------------------------
- INT 21 - Novell NetWare v4+ - GET KNOWN NETWORKS INFO
- AX = F27Bh subfn 35h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02519)
- ES:DI -> reply buffer (see #02520)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AX=F27Bh/SF=33h,AX=F27Bh/SF=38h
- Format of NetWare "Get Router Info" request buffer:
- Offset Size Description (Table 02519)
- 00h WORD 0005h (length of following data)
- 02h BYTE 35h (function "Get Known Networks Info")
- 03h DWORD start number (00000000h)
- SeeAlso: #02520
- Format of NetWare "Get Router Info" reply buffer:
- Offset Size Description (Table 02520)
- 00h DWORD current server time
- 04h BYTE vconsole version
- 05h BYTE vconsole revision
- 06h WORD reserved
- 08h DWORD number of records following (max 20)
- 0Ch var array of network info records
- Offset Size Description
- 00h WORD network number
- 04h WORD hops to net
- 06h WORD network status
- 08h WORD time to net
- SeeAlso: #02517,#02519
- --------N-21F27BSF38-------------------------
- INT 21 - Novell NetWare v4+ - GET KNOWN SERVERS INFO
- AX = F27Bh subfn 38h
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02521)
- ES:DI -> reply buffer (see #02522)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- SeeAlso: AX=F27Bh/SF=35h
- Format of NetWare "Get Known Servers" request buffer:
- Offset Size Description (Table 02521)
- 00h WORD 0009h (length of following data)
- 02h BYTE 38h (function "Get Known Servers")
- 03h DWORD start number
- 07h DWORD server type
- SeeAlso: #02522
- Format of NetWare "Get Known Servers" reply buffer:
- Offset Size Description (Table 02522)
- 00h DWORD current server time
- 04h BYTE vconsole version
- 05h BYTE vconsole revision
- 06h WORD reserved
- 08h DWORD number of records following (max 20)
- 0Ch var server record(s)
- Offset Size Description
- 00h DWORD network number
- 04h 6 BYTEs node number
- 0Ah WORD socket number
- 0Ch WORD hops to server
- 0Eh 48 BYTEs object name
- SeeAlso: #02521
- --------N-21F27BSF3C-------------------------
- INT 21 - Novell NetWare v4+ - GET SERVER SET COMMANDS INFO
- AX = F27Bh subfn 3Ch
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02523)
- ES:DI -> reply buffer (see #02524)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- Format of NetWare "Get Server Set Commands Info" request packet:
- Offset Size Description (Table 02523)
- 00h WORD 0005h (length of following data)
- 02h BYTE 3Ch (subfunction "Get Server Set Commands Info")
- 03h DWORD start sequence number
- SeeAlso: #02524
- Format of NetWare "Get Server Set Commands Info" packet:
- Offset Size Description (Table 02524)
- 00h DWORD current server time
- 04h BYTE vconsole version
- 05h BYTE vconsole revision
- 06h WORD reserved
- 08h DWORD number of set commands
- 0Ch DWORD next sequence number
- 10h DWORD set command type
- 14h DWORD set command category
- 18h DWORD set command flags
- 1Ch BYTE length of set command name
- 1Dh N BYTEs set command name
- BYTE number of set command values
- N BYTEs set command values
- SeeAlso: #02523
- --------N-21F27BSF3D-------------------------
- INT 21 - Novell NetWare v4+ - GET SERVER SET CATEGORIES
- AX = F27Bh subfn 3Dh
- CX = length of request buffer in bytes
- DX = length of reply buffer in bytes
- DS:SI -> request buffer (see #02525)
- ES:DI -> reply buffer (see #02526)
- Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
- reply buffer filled
- Format of NetWare "Get Server Set Categories" request packet:
- Offset Size Description (Table 02525)
- 00h WORD 0005h (length of following data)
- 02h BYTE 3Dh (subfunction "Get Server Set Categories")
- 03h DWORD start sequence number
- SeeAlso: #02526
- Format of NetWare "Get Server Set Categories" reply packet:
- Offset Size Description (Table 02526)
- 00h DWORD current server time
- 04h BYTE vconsole version
- 05h BYTE vconsole revision
- 06h WORD reserved
- 08h DWORD number of set categories
- 0Ch DWORD next sequence number
- 10h BYTE length of category name
- 11h N BYTEs category name
- SeeAlso: #02525
- --------v-21F2AA-----------------------------
- INT 21 - VIRUS - "PcVrsDs" - INSTALLATION CHECK
- AX = F2AAh
- Return: AH = AAh if resident
- SeeAlso: AH=F1h"VIRUS",AH=F3h"VIRUS"
- --------N-21F3-------------------------------
- INT 21 - Novell NetWare - FILE SERVICES - FILE SERVER FILE COPY
- AH = F3h
- ES:DI -> request buffer (see #02527)
- Return: AL = status/error code
- CX:DX = number of bytes copied
- Notes: this function is supported by Advanced NetWare 2.0+
- both source and destination must be on the same file server
- SeeAlso: AH=3Ch,AH=3Fh"DOS"
- Format of NetWare "File Server File Copy" request buffer:
- Offset Size Description (Table 02527)
- 00h WORD source file handle (as returned by AH=3Ch or AH=3Dh)
- 02h WORD destination file handle
- 04h DWORD starting offset in source
- 08h DWORD starting offset in destination
- 0Ch DWORD number of bytes to copy
- --------T-21F3-------------------------------
- INT 21 - DoubleDOS - ADD CHARACTER TO KEYBOARD BUFFER OF CURRENT JOB
- AH = F3h
- AL = character
- Return: AL = 00h successful
- 01h buffer full (128 characters)
- SeeAlso: AH=E3h"DoubleDOS",AH=F1h"DoubleDOS",AH=F2h"DoubleDOS"
- SeeAlso: AH=F8h"DoubleDOS"
- --------v-21F3-------------------------------
- INT 21 - VIRUS - "Carfield" - INSTALLATION CHECK
- AH = F3h
- Return: AX = 0400h if resident
- SeeAlso: AH=D5h"Carfield",AX=F2AAh,AH=F7h"VIRUS"
- --------T-21F400-----------------------------
- INT 21 - DoubleDOS - INSTALLATION CHECK/PROGRAM STATUS
- AX = F400h
- Return: AL = program status
- 00h if DoubleDOS not present
- 01h if running in visible DoubleDOS partition
- 02h if running in the invisible DoubleDOS partition
- SeeAlso: AX=E400h,AH=F5h"DoubleDOS"
- --------T-21F5-------------------------------
- INT 21 - DoubleDOS - OTHER PROGRAM STATUS
- AH = F5h
- Return: AL = program status
- 00h no program in other partition
- 01h program in other partition is running
- 02h program in other partition is suspended
- SeeAlso: AH=E5h"DoubleDOS",AX=F400h"DoubleDOS"
- --------v-21F7-------------------------------
- INT 21 - VIRUS - "GP1" - INSTALLATION CHECK
- AH = F7h
- Return: AX = 0300h if resident
- SeeAlso: AH=F0h"VIRUS",AH=F9h"VIRUS"
- --------D-21F8-------------------------------
- INT 21 - DOS v2.11-2.13 - SET OEM INT 21 HANDLER
- AH = F8h
- DS:DX -> OEM INT 21 handler for functions F9h to FFh
- FFFFh:FFFFh disables OEM handler
- Notes: this function is known to be supported by Toshiba T1000 ROM MS-DOS
- v2.11, Sanyo MS-DOS v2.11, and TI Professional Computer DOS v2.13
- calls to AH=F9h through AH=FFH will return AL=00h if no handler set
- handler is called with all registers exactly as set by caller, and
- should exit with IRET
- SeeAlso: AH=F9h"OEM"
- --------T-21F8-------------------------------
- INT 21 - DoubleDOS - SET/RESET KEYBOARD CONTROL FLAGS
- AH = F8h
- AL = program for which to set flags
- 00h this program
- 01h other program
- DX = keyboard control flags (see #02088 at AH=E8h"DoubleDOS")
- Return: DX = previous flags
- Notes: disabling Ctrl-PrtSc will allow the program to intercept the keystroke;
- disabling any of the other keystrokes disables them completely
- this function is identical to AH=E8h
- SeeAlso: AH=E8h"DoubleDOS",AH=F1h"DoubleDOS",AH=F2h"DoubleDOS"
- SeeAlso: AH=F3h"DoubleDOS"
- --------D-21F9-------------------------------
- INT 21 - DOS v2.11-2.13 - OEM FUNCTION
- AH = F9h
- Return: AL = 00h if no OEM function handler installed (see AH=F8h"OEM")
- SeeAlso: AH=F8h"OEM",AH=FAh"OEM"
- --------T-21F9-------------------------------
- INT 21 - DoubleDOS - SET TIMESHARING PRIORITY
- AH = F9h
- AL = priority
- 00h visible program gets 70%, invisible gets 30% (default)
- 01h visible program gets 50%, invisible gets 50%
- 02h visible program gets 30%, invisible gets 70%
- 03h Top program gets 70%, bottom program gets 30%
- 04h Top program gets 30%, bottom program gets 70%
- 05h get current priority
- Return: AL = priority setting
- Note: identical to AH=E9h
- SeeAlso: AH=E9h"DoubleDOS",AH=FAh"DoubleDOS",AH=FBh"DoubleDOS"
- --------v-21F9-------------------------------
- INT 21 - VIRUS - "Satans-Bug" - INSTALLATION CHECK
- AH = F9h
- Return: AX = AC0Ah if resident
- SeeAlso: AH=F7h"VIRUS",AH=FBh"VIRUS",AX=FEDCh"VIRUS"
- --------D-21FA-------------------------------
- INT 21 - DOS v2.11-2.13 - OEM FUNCTION
- AH = FAh
- Return: AL = 00h if no OEM function handler installed (see AH=F8h"OEM")
- SeeAlso: AH=F8h"OEM",AH=F9h"OEM",AH=FBh"OEM"
- --------T-21FA-------------------------------
- INT 21 - DoubleDOS - TURN OFF TASK SWITCHING
- AH = FAh
- Return: task switching turned off
- SeeAlso: AH=EAh"DoubleDOS",AH=F9h"DoubleDOS",AH=FBh"DoubleDOS"
- SeeAlso: INT FA"DoubleDOS"
- --------v-21FA-------------------------------
- INT 21 - VIRUS - "Cinderella 2" - INSTALLATION CHECK
- AH = FAh
- Return: AH = F9h if resident
- SeeAlso: AH=F0h"VIRUS",AX=FBA0h"VIRUS"
- --------v-21FA--DX5945-----------------------
- INT 21 U - PC Tools v7+ VDEFEND, VSAFE, VWATCH - API
- AH = FAh
- DX = 5945h
- AL = function (00h-02h for VDEFEND, 00h-07h for VSAFE and VWATCH)
- Return: varies by function
- Note: this API is identical to the API on INT 13/AH=FAh and INT 16/AH=FAh,
- so it is listed in its entirety only under INT 16/AX=FA00h and
- following
- SeeAlso: INT 13/AX=FA00h,INT 16/AX=FA00h
- --------k-21FAFF-----------------------------
- INT 21 U - IBM PC-DOS - KEYBGK - SELECT KEYBOARD LAYOUT
- AX = FAFFh
- CL = keyboard layout
- 31h keyboard 319
- 32h keyboard 220
- BX = code page (869 or 813 decimal)
- Return: AL = F1h if installed
- DX destroyed
- --------D-21FB-------------------------------
- INT 21 - DOS v2.11-2.13 - OEM FUNCTION
- AH = FBh
- Return: AL = 00h if no OEM function handler installed (see AH=F8h"OEM")
- SeeAlso: AH=F8h"OEM",AH=FAh"OEM",AH=FCh"OEM"
- --------T-21FB-------------------------------
- INT 21 - DoubleDOS - TURN ON TASK SWITCHING
- AH = FBh
- Return: task switching turned on
- SeeAlso: AH=EBh"DoubleDOS",AH=F9h"DoubleDOS",AH=FAh"DoubleDOS"
- SeeAlso: INT FB"DoubleDOS"
- --------v-21FB-------------------------------
- INT 21 - VIRUS - "Cinderella" - INSTALLATION CHECK
- AH = FBh
- Return: AH = 00h if resident
- SeeAlso: AH=F9h"VIRUS",AH=FAh"VIRUS",AX=FB0Ah
- --------v-21FB0A-----------------------------
- INT 21 - VIRUS - "dBASE" - INSTALLATION CHECK
- AX = FB0Ah
- Return: AX = 0AFBh if resident
- SeeAlso: AH=FBh"VIRUS",AX=FBA0h"VIRUS",AH=FCh"VIRUS"
- --------v-21FBA0-----------------------------
- INT 21 - VIRUS - "Groove" - INSTALLATION CHECK
- AX = FBA0h
- Return: AX = 0ABFh if resident
- SeeAlso: AX=FB0Ah"VIRUS",AX=FBFBh"VIRUS"
- --------v-21FBFB-----------------------------
- INT 21 - VIRUS - "Dir.1367" - INSTALLATION CHECK
- AX = FBFBh
- Return: AX = BFBFh if resident
- SeeAlso: AX=FBA0h"VIRUS",AH=FCh"VIRUS"
- --------D-21FC-------------------------------
- INT 21 - DOS v2.11-2.13 - OEM FUNCTION
- AH = FCh
- Return: AL = 00h if no OEM function handler installed (see AH=F8h"OEM")
- SeeAlso: AH=F8h"OEM",AH=FBh"OEM",AH=FDh"OEM"
- --------T-21FC-------------------------------
- INT 21 - DoubleDOS - GET VIRTUAL SCREEN ADDRESS
- AH = FCh
- Return: ES = segment of virtual screen
- Desc: Determine the address of the virtual screen to which the program
- should write instead of the actual video memory, so that the
- multitasked programs do not interfere with each other's output.
- Notes: screen address can change if task-switching is on!
- identical to AH=ECh
- SeeAlso: AH=ECh"DoubleDOS",INT FC"DoubleDOS"
- --------v-21FC-------------------------------
- INT 21 - VIRUS - "Troi" - INSTALLATION CHECK
- AH = FCh
- Return: AL = A5h if resident
- SeeAlso: AX=FBA0h"VIRUS",AX=FC03h"VIRUS",AH=FDh"VIRUS"
- --------v-21FC03-----------------------------
- INT 21 - VIRUS - "Invisible" - INSTALLATION CHECK
- AX = FC03h
- Return: AX = 03FCh if resident
- SeeAlso: AH=FCh"VIRUS",AH=FDh"VIRUS"
- --------D-21FD-------------------------------
- INT 21 - DOS v2.11-2.13 - OEM FUNCTION
- AH = FDh
- Return: AL = 00h if no OEM function handler installed (see AH=F8h"OEM")
- SeeAlso: AH=F8h"OEM",AH=FCh"OEM",AH=FEh"OEM"
- --------v-21FD-------------------------------
- INT 21 - VIRUS - "Border" - INSTALLATION CHECK
- AH = FDh
- Return: AH = 13h if resident
- SeeAlso: AH=FCh"VIRUS",AX=FDACh"VIRUS",AH=FEh"VIRUS"
- --------s-21FD12BX3457-----------------------
- INT 21 - Gravis UltraSound - MegaEm/MEGA_EM - INSTALLATION CHECK
- AX = FD12h
- BX = 3457h
- Return: AX = 5678h if installed
- BX = 1235h if v1.x or v2.x installed
- CL = interrupt vector used by MegaEm (default 81h)
- BX = 1237h if v3.x installed
- CL = interrupt vector used by MegaEm (default 81h)
- DX = version number
- Program: MegaEm is a protected-mode SoundBlaster, SoundCanvas, and MT-32
- emulator for the Gravis UltraSound
- SeeAlso: INT 2F/AX=CD00h/BX=464Fh,INT 7E/AX=00FEh"SBOS",INT 81/AX=0200h
- --------v-21FDAC-----------------------------
- INT 21 - VIRUS - "Delwin" - INSTALLATION CHECK
- AX = FDACh
- Return: AX = 02E3h if resident
- SeeAlso: AH=FDh"VIRUS",AH=FEh"VIRUS"
- --------D-21FE-------------------------------
- INT 21 - DOS v2.11-2.13 - OEM FUNCTION
- AH = FEh
- Return: AL = 00h if no OEM function handler installed (see AH=F8h"OEM")
- SeeAlso: AH=F8h"OEM",AH=FDh"OEM",AH=FFh"OEM"
- --------T-21FE-------------------------------
- INT 21 - DoubleDOS - GIVE AWAY TIME TO OTHER TASKS
- AH = FEh
- AL = number of 55ms time slices to give away
- Return: returns after giving away time slices
- SeeAlso: AH=EEh"DoubleDOS",INT FE"DoubleDOS"
- --------v-21FE-------------------------------
- INT 21 - VIRUS - "483" - INSTALLATION CHECK
- AH = FEh
- Return: AH = 00h if resident
- SeeAlso: AX=FDACh"VIRUS",AX=FE01h
- --------v-21FE01-----------------------------
- INT 21 - VIRUS - "Flip" - INSTALLATION CHECK
- AX = FE01h
- Return: AX = 01FEh if resident
- SeeAlso: AH=FEh"VIRUS",AX=FE02h
- --------v-21FE02-----------------------------
- INT 21 - VIRUS - "2468"/"Tequila" - INSTALLATION CHECK
- AX = FE02h
- Return: AX = 01FDh if resident
- SeeAlso: AX=FE01h,AX=FE03h,AX=FEDCh"VIRUS"
- --------v-21FE03-----------------------------
- INT 21 - VIRUS - "2468"/"Tequila" - DISPLAY VIRUS MESSAGE
- AX = FE03h
- SeeAlso: AX=FE02h,AX=FEADh
- --------v-21FEAD------------------------
- INT 21 - VIRUS - "Shifting Objective" - INSTALLATION CHECK
- AX = FEADh
- Return: AX = D00Dh if resident
- SeeAlso: AX=FE03h,AX=FEDCh"VIRUS"
- --------d-21FEDC-----------------------------
- INT 21 - PCMag PCMANAGE/DCOMPRES - INSTALLATION CHECK
- AX = FEDCh
- Return: AX = CDEFh if installed
- Program: the PCMANAGE/DCOMPRES combination from PC Magazine permits
- infrequently-used files to be compressed to save space and
- transparently expanded when accessed
- SeeAlso: AH=DCh,INT 2D/AL=10h"dLite"
- --------v-21FEDC-----------------------------
- INT 21 - VIRUS - "Black Monday" - INSTALLATION CHECK
- AX = FEDCh
- Return: AL = DCh if resident
- SeeAlso: AX=FE02h,AX=FEFEh
- --------v-21FEFE-----------------------------
- INT 21 - VIRUS - "CIDER" - INSTALLATION CHECK
- AX = FEFEh
- Return: SI = 1994h if resident
- SeeAlso: AX=FEDCh"VIRUS",AH=FFh"VIRUS"
- --------D-21FF-------------------------------
- INT 21 - DOS v2.11-2.13 - OEM FUNCTION
- AH = FFh
- Return: AL = 00h if no OEM function handler installed (see AH=F8h"OEM")
- SeeAlso: AH=F8h"OEM",AH=FEh"OEM"
- --------K-21FF-------------------------------
- INT 21 - CED (Command EDitor) - INSTALLABLE COMMANDS
- AH = FFh
- AL = subfunction
- 00h add installable command
- BL = mode
- bit 0 = 1 callable from DOS prompt
- bit 1 = 1 callable from application
- DS:SI -> CR-terminated command name
- ES:DI -> FAR routine entry point
- 01h remove installable command
- DS:SI -> CR-terminated command name
- 02h reserved, may be used to test for CED installation
- Return: CF clear if successful
- CF set on error
- AX = error code
- 01h invalid function
- 02h command not found (subfunction 01h only)
- 08h insufficient memory (subfunction 00h only)
- 0Eh bad data (subfunction 00h only)
- AH = FFh if CED not installed
- Program: CED is a shareware DOS command-line enhancer by Christopher J. Dunford
- SeeAlso: AX=0A00h
- --------E-21FF-------------------------------
- INT 21 - DJ GO32.EXE 80386+ DOS extender - DOS EXTENSIONS
- AH = FFh
- AL = function
- 01h create file
- 02h open file
- 03h get file statistics
- 04h get time of day
- 05h set time of day
- 06h stat
- 07h system
- Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
- GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
- SeeAlso: INT 10/AH=FFh"GO32"
- --------K-21FF-------------------------------
- INT 21 - DOSED.COM - INSTALLATION CHECK
- AH = FFh
- DS:SI -> "DOSED"
- ES = 0000h
- Return: ES:DI -> "DOSED" if installed
- Program: DOSED is a free DOS commandline editor/history buffer by Sverre H.
- Huseby
- --------v-21FF-------------------------------
- INT 21 - VIRUS - "Sunday", "Tumen 0.5", "Hero" - INSTALLATION CHECK
- AH = FFh
- Return: AH = 00h if "Tumen 0.5" or "Hero" resident
- AX = 0400h if "Sunday" resident
- SeeAlso: AX=FEDCh"VIRUS",AX=FF01h"VIRUS"
- --------E-21FF-------------------------------
- INT 21 UP - Rational Systems DOS/4GW - API
- AH = FFh
- DH = function (00h-17h) (also see separate entries below)
- DL = subfunction or argument
- Return: CF clear if valid function number
- AX = status???
- CF set if invalid function
- SeeAlso: INT 15/AX=BFDCh
- --------E-21FF--DH00-------------------------
- INT 21 UP - Rational Systems DOS/4GW - GET VERSION???
- AH = FFh
- DH = 00h
- DL = ??? (78h seen)
- Return: CF clear
- EAX = 4734FFFFh (high word is byte-swapped "4G") if DOS/4G installed
- Note: Quarterdeck's DESQview/X X Toolkit library uses this call to determine
- whether the direct-mapped linear 4GB segment's selector is 34h or 38h
- SeeAlso: INT 21/AH=FFh/DH=00h"DOS/4GW"
- --------E-21FF--DH02-------------------------
- INT 21 UP - Rational Systems DOS/4GW - SET ???
- AH = FFh
- DH = 02h
- DL = ???
- Return: CF clear
- --------E-21FF--DH05-------------------------
- INT 21 UP - Rational Systems DOS/4GW - ???
- AH = FFh
- DH = 05h
- BX = ???
- Return: ???
- --------E-21FF--DH06-------------------------
- INT 21 UP - Rational Systems DOS/4GW - ???
- AH = FFh
- DH = 06h
- BX = ???
- Return: ???
- --------E-21FF--DH07-------------------------
- INT 21 UP - Rational Systems DOS/4GW - ???
- AH = FFh
- DH = 07h
- BX = ???
- Return: ???
- --------E-21FF--DH08-------------------------
- INT 21 UP - Rational Systems DOS/4GW - ???
- AH = FFh
- DH = 08h
- BX = ???
- CX = ???
- ES = ???
- Return: ???
- --------E-21FF--DH09-------------------------
- INT 21 UP - Rational Systems DOS/4GW - GET ???
- AH = FFh
- DH = 09h
- Return: ES:BX -> ???
- --------E-21FF--DH0A-------------------------
- INT 21 UP - Rational Systems DOS/4GW - ???
- AH = FFh
- DH = 0Ah
- AL = ???
- BX = ???
- CX = ???
- Return: ES = ??? or 0000h
- --------E-21FF--DH0B-------------------------
- INT 21 UP - Rational Systems DOS/4GW - ???
- AH = FFh
- DH = 0Bh
- AL = ???
- BX = ???
- CX = ???
- Return: ???
- --------E-21FF--DH0C-------------------------
- INT 21 UP - Rational Systems DOS/4GW - GET/SET ???
- AH = FFh
- DH = 0Ch
- DL = ??? (00h or 01h)
- Return: CF clear if successful
- AL = previous value of ???
- CF set on error (DL out of range)
- AX = FFFFh
- --------E-21FF--DH0D-------------------------
- INT 21 UP - Rational Systems DOS/4GW - ???
- AH = FFh
- DH = 0Dh
- ???
- Return: ???
- --------E-21FF--DH0E-------------------------
- INT 21 UP - Rational Systems DOS/4GW - ???
- AH = FFh
- DH = 0Eh
- Return: DX:AX -> XBRK structure (see #00508 at INT 15/AX=BF02h)
- BX = ???
- CX = ???
- SeeAlso: INT 15/AX=BF02h
- --------E-21FF--DH0F-------------------------
- INT 21 UP - Rational Systems DOS/4GW - ???
- AH = FFh
- DH = 0Fh
- ???
- Return: ???
- --------E-21FF--DH10-------------------------
- INT 21 UP - Rational Systems DOS/4GW - ???
- AH = FFh
- DH = 10h
- AL = ???
- BX = ???
- CX = ???
- DI = ???
- SI = ???
- Return: ???
- Note: among other things, frees two memory blocks via INT 21/AH=49h
- --------E-21FF--DH11-------------------------
- INT 21 UP - Rational Systems DOS/4GW - NOP
- AH = FFh
- DH = 11h
- --------E-21FF--DH12-------------------------
- INT 21 UP - Rational Systems DOS/4GW - EXCHANGE ??? POINTERS
- AH = FFh
- DH = 12h
- DS:SI -> new ???
- ES:DI -> new ???
- Return: DS:SI -> previous ???
- ES:DI -> previous ???
- --------E-21FF--DH13-------------------------
- INT 21 UP - Rational Systems DOS/4GW - ???
- AH = FFh
- DH = 13h
- AL = ???
- ES = ???
- Return: ???
- --------E-21FF--DH14-------------------------
- INT 21 UP - Rational Systems DOS/4GW - ???
- AH = FFh
- DH = 14h
- BX = ???
- CX = ???
- Return: CF clear
- AX = ???
- DX = ???
- --------E-21FF--DH15-------------------------
- INT 21 UP - Rational Systems DOS/4GW - GET ??? FUNCTIONS
- AH = FFh
- DH = 15h
- Return: CF clear
- DX:AX -> FAR function for ???
- CX:BX -> FAR function for ???
- SI:DI -> FAR function for ???
- --------E-21FF--DH16-------------------------
- INT 21 UP - Rational Systems DOS/4GW - GET ???
- AH = FFh
- DH = 16h
- Return: AX = ???
- --------E-21FF--DH17-------------------------
- INT 21 UP - Rational Systems DOS/4GW - ???
- AH = FFh
- DH = 17h
- AL = ???
- DL = ???
- Return: ???
- --------N-21FF00-----------------------------
- INT 21 - TopWare Network OS v5.10+ - GET SYSTEM INFORMATION
- AX = FF00h
- CL = what to get
- 00h user information (see #02528)
- 01h drive mapping (see #02529)
- 02h printer server(s)
- 05h local DOS drive number
- Return: ES:BX -> desired information
- Program: TopWare Network Operating System is manufactured by Grand Computer
- Company
- Note: this call is only supported on Workstations, not on the server
- SeeAlso: AX=FF04h,INT 2F/AX=FF00h
- Format of TopWare user information:
- Offset Size Description (Table 02528)
- 00h BYTE node ID
- 01h 15 BYTEs user name
- 10h WORD user number
- 12h BYTE group number
- Format of TopWare drive mapping [array]:
- Offset Size Description (Table 02529)
- 00h BYTE bits 6-0: drive number (1=A:, etc.)
- bit 7: this is a server drive
- 01h 3 BYTEs mapping drive (for example, "C:\")
- 04h 64 BYTEs current directory
- --------E-21FF00DX0078-----------------------
- INT 21 - Rational Systems DOS/4G - INSTALLATION CHECK
- AX = FF00h
- DX = 0078h
- Return: AL <> 00h if installed
- GS = segment of kernel if nonzero
- SeeAlso: INT 15/AX=BF02h
- --------v-21FF01-----------------------------
- INT 21 - VIRUS - "Drop" - INSTALLATION CHECK
- AX = FF01h
- Return: AX = 01FFh if resident
- SeeAlso: AH=FEh"VIRUS",AX=FF0Fh"FLU_SHOT"
- --------N-21FF04-----------------------------
- INT 21 - TopWare Network OS v5.10+ - GET/SET DEFAULT FILE PROTECTION ATTRIBS
- AX = FF04h
- CL = function
- 00h get protections
- Return: BH = read attribute
- BL = write attribute
- 01h set protections
- BH = read attribute
- BL = write attribute
- Note: this function is supported only on Workstations, not on the server
- SeeAlso: AX=FF00h"TopWare"
- --------v-21FF0F-----------------------------
- INT 21 - FLU_SHOT+ v1.83 - INSTALLATION CHECK
- AX = FF0Fh
- Return: AX = 0101h if resident
- Program: FLU_SHOT+ is an antivirus/antitrojan program by Ross M. Greenberg and
- Software Concepts Design
- Note: the "PSQR/1720" virus calls this function to determine whether
- FLU_SHOT+ is present
- SeeAlso: AH=FFh"VIRUS",AX=FF10h"VIRUS"
- --------v-21FF10-----------------------------
- INT 21 - VIRUS - "Twins" - INSTALLATION CHECK
- AX = FF10h
- Return: AL = 07h if resident
- SeeAlso: AX=FF0Fh,AX=FFFEh
- --------N-21FF80DHFF-------------------------
- INT 21 - TopWare Network OS v5.10+ - SEND MESSAGE
- AX = FF80h
- DH = FFh
- DL = destination address (FFh for broadcast)
- CX = message length (max 2000)
- DS:SI -> message to be sent (see #02530)
- Return: nothing
- Program: TopWare Network Operating System is manufactured by Grand Computer
- Company
- Notes: this function is supported on both Workstations and the server
- there is no guarantee that the message will be received correctly, or
- at all, by the destination
- Format of TopWare message:
- Offset Size Description (Table 02530)
- 00h BYTE type code
- 07h TopSend
- 11h user application
- other reserved for TopWare
- 01h var data
- Note: sending messages with a type code other than 11h will cause
- unpredictable results
- --------N-21FF82-----------------------------
- INT 21 - TopWare Network OS v5.10+ - GET STATION ADDRESS
- AX = FF82h
- Return: AL = station address
- Note: this function is supported on both Workstations and the server
- SeeAlso: AX=FF91h
- --------N-21FF8C-----------------------------
- INT 21 - TopWare Network OS v5.10+ - GET STATUS OF TopShow/Emulated FUNCTION
- AX = FF8Ch
- BL = subfunction
- 00h get TopShow status
- FFh get Emulated status
- Return: AL = status
- 00h not installed
- 01h already installed
- --------N-21FF8D-----------------------------
- INT 21 - TopWare Network OS v5.10+ - CALL TopShow FUNCTION
- AX = FF8Dh
- CH = monochrome flag (01h monochrome, 00h not monochrome)
- CL = screen mode of station to be viewed (see #02531)
- BL = graphic page number for monochrome
- Return: AL = status (00h successful, else failed)
- SeeAlso: AX=FF8Eh,AX=FFCFh
- (Table 02531)
- Values for TopWare screen mode:
- 00h text mode
- 01h 720x348
- 02h 640x408
- 03h 720x352
- 04h 640x390
- 05h reserved
- --------N-21FF8E-----------------------------
- INT 21 - TopWare Network OS v5.10+ - CANCEL TopShow FUNCTION
- AX = FF8Eh
- Return: AL = 00h (successful, TopShow removed)
- SeeAlso: AX=FF8Dh
- --------N-21FF91-----------------------------
- INT 21 - TopWare Network OS v5.10+ - GET FILE SERVER STATION NUMBER
- AX = FF91h
- Return: AL = station number of file server
- SeeAlso: AX=FF82h
- --------N-21FF97-----------------------------
- INT 21 - TopWare Network OS v5.10+ - GET MAXIMUM STATION NUMBER (server only)
- AX = FF97h
- Return: AL = maximum station number
- SeeAlso: AX=FF98h
- --------N-21FF98-----------------------------
- INT 21 - TopWare Network OS v5.10+ - GET MAXIMUM FILE NUMBER (server only)
- AX = FF98h
- Return: AL = maximum file
- SeeAlso: AX=FF97h
- --------N-21FF9A-----------------------------
- INT 21 - TopWare Network OS v5.10+ - RECEIVE OF USER-DEFINED PACKETS
- AX = FF9Ah
- ES:BX -> buffer for user-defined packet (see #02532)
- Return: nothing
- Format of TopWare user-defined packet:
- Offset Size Description (Table 02532)
- 00h BYTE FFh
- 01h WORD (call) length of data field plus 3
- (ret) length of received message (0000h if none received)
- 03h BYTE destination ID (FFh for broadcast message)
- 04h BYTE sending station ID
- 05h BYTE type code (11h; all other codes reserved for TopWare)
- 06h N BYTEs received message
- --------N-21FF9F-----------------------------
- INT 21 - TopWare Network OS v5.10+ - ENABLE/DISABLE TopTerm SERVICE
- AX = FF9Fh
- CL = new state (00h disable [disregard TopTerm packets], 01h enable)
- Return: AL = status (00h successful, FFh failed)
- Note: this function is only supported by Workstations, not the server
- --------N-21FFB0-----------------------------
- INT 21 - TopWare Network OS v5.10+ - GET SPOOLER PRINTING PRIORITY
- AX = FFB0h
- Return: AL = priority status (see #02533)
- SeeAlso: AX=FFB1h
- Bitfields for TopWare printer priority status:
- Bit(s) Description (Table 02533)
- 2 LPT3 has high priority
- 1 LPT2 has high priority
- 0 LPT1 has high priority
- --------N-21FFB1-----------------------------
- INT 21 - TopWare Network OS v5.10+ - SET SPOOLER PRINTING PRIORITY
- AX = FFB1h
- CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
- CH = new priority (00h normal, 01h high)
- Return: nothing
- SeeAlso: AX=FFB0h
- --------N-21FFB3-----------------------------
- INT 21 - TopWare Network OS v5.10+ - GET DEFAULT START-OF-JOB FORMFEED STATUS
- AX = FFB3h
- Return: AL = starting formfeed status (see #02534)
- SeeAlso: AX=FFB4h,AX=FFC0h
- Bitfields for TopWare printer start-of-job formfeed status:
- Bit(s) Description (Table 02534)
- 2 LPT3 has formfeed enabled
- 1 LPT2 has formfeed enabled
- 0 LPT1 has formfeed enabled
- --------N-21FFB4-----------------------------
- INT 21 - TopWare Network OS v5.10+ - SET DEFAULT START-OF-JOB FORMFEED STATUS
- AX = FFB4h
- CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
- CH = new formfeed status (00h off, 01h on)
- Return: nothing
- SeeAlso: AX=FFB3h,AX=FFC1h
- --------N-21FFBB-----------------------------
- INT 21 - TopWare Network OS v5.10+ - GET PRINTER SERVER STATION ADDRESS
- AX = FFBBh
- CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
- Return: AL = current mapping printer server station number
- 00h if local
- SeeAlso: AX=FFBCh
- --------N-21FFBC-----------------------------
- INT 21 - TopWare Network OS v5.10+ - CANCEL TopShow FUNCTION
- AX = FFBCh
- CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
- CL = printer server station address or 00h for local printer
- Return: AL = status (00h successful, else failed)
- SeeAlso: AX=FFBBh
- --------N-21FFBD-----------------------------
- INT 21 - TopWare Network OS v5.10+ - GET CURRENT AUTOPRINT TIME
- AX = FFBDh
- CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
- Return: AX = current AutoPrint timeout in clock ticks
- SeeAlso: AX=FFBEh
- --------N-21FFBE-----------------------------
- INT 21 - TopWare Network OS v5.10+ - SET AUTOPRINT TIME
- AX = FFBEh
- CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
- BX = timeout in clock ticks
- SeeAlso: AX=FFBDh
- --------N-21FFBF-----------------------------
- INT 21 - TopWare Network OS v5.10+ - GET LOGON USER INFORMATION
- AX = FFBFh
- DX:BX -> buffer for logon information (see #02535)
- Return: AL = status (00h successful, else failed)
- AH = number of logged-in stations
- Format of TopWare logon information:
- Offset Size Description (Table 02535)
- 00h BYTE station address
- 01h 15 BYTEs username
- --------N-21FFC0-----------------------------
- INT 21 - TopWare Network OS v5.10+ - GET DEFAULT END-OF-JOB FORMFEED STATUS
- AX = FFC0h
- Return: AL = ending formfeed status (see #02536)
- SeeAlso: AX=FFB3h,AX=FFC1h
- Bitfields for TopWare printer end-of-job formfeed status:
- Bit(s) Description (Table 02536)
- 2 LPT3 has formfeed enabled
- 1 LPT2 has formfeed enabled
- 0 LPT1 has formfeed enabled
- --------N-21FFC1-----------------------------
- INT 21 - TopWare Network OS v5.10+ - SET DEFAULT END-OF-JOB FORMFEED STATUS
- AX = FFC1h
- CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
- CH = new formfeed status (00h off, 01h on)
- Return: nothing
- SeeAlso: AX=FFB4h,AX=FFC0h
- --------N-21FFC2-----------------------------
- INT 21 - TopWare Network OS v5.10+ - GET DEFAULT COPIES OF SPOOLING FILE
- AX = FFC2h
- CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
- Return: AL = default number of copies printed
- SeeAlso: AX=FFC7h
- --------N-21FFC3-----------------------------
- INT 21 - TopWare Network OS v5.10+ - GET SHARING STATUS OF PRINTER SERVER
- AX = FFC3h
- Return: AL = sharing status of printers (see #02537)
- FFh if not a printer server
- Bitfields for TopWare printer sharing status:
- Bit(s) Description (Table 02537)
- 2 LPT3 is shared
- 1 LPT2 is shared
- 0 LPT1 is shared
- --------N-21FFC4-----------------------------
- INT 21 - TopWare Network OS v5.10+ - GET/SET LPT PORT ON PRINT SERVER
- AX = FFC4h
- BL = subfunction
- 00h get
- Return: AL = mapped printer port on print server
- 01h set
- CL = network printer port (00h LPT1, 01h LPT2, 02h LPT3)
- CH = local printer (00h LPT1, 01h LPT2, 02h LPT3)
- --------N-21FFC6-----------------------------
- INT 21 - TopWare Network OS v5.10+ - SET DEFAULT PRINT FILE HEADER
- AX = FFC6h
- CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
- CL = header state (00h off, 01h on)
- SeeAlso: AX=FFC8h
- --------N-21FFC7-----------------------------
- INT 21 - TopWare Network OS v5.10+ - SET DEFAULT PRINT COPIES
- AX = FFC7h
- CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
- CL = new default number of copies to print
- SeeAlso: AX=FFC2h
- --------N-21FFC8-----------------------------
- INT 21 - TopWare Network OS v5.10+ - GET DEFAULT PRINT FILE HEADER STATUS
- AX = FFC8h
- Return: AL = header status for printers (see #02538)
- SeeAlso: AX=FFC6h
- Bitfields for TopWare print header status:
- Bit(s) Description (Table 02538)
- 2 LPT3 has headers enabled
- 1 LPT2 has headers enabled
- 0 LPT1 has headers enabled
- --------N-21FFC9-----------------------------
- INT 21 - TopWare Network OS v5.10+ - SET PRINTER SHARING
- AX = FFC9h
- CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
- CL = new sharing state (00h off, 01h on)
- Return: AL = status (00h successful, FFh not printer server)
- --------N-21FFCA-----------------------------
- INT 21 - TopWare Network OS v5.10+ - MOVE FILE FROM ONE PRINT SERVER TO ANOTHER
- AX = FFCAh
- CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
- CL = original printer server station address
- BL = target printer server station address
- DS:DX -> filename (12 bytes)
- Return: AL = status (00h successful, else failed)
- SeeAlso: AX=FFCBh
- --------N-21FFCB-----------------------------
- INT 21 - TopWare Network OS v5.10+ - DELETE FILE FROM SPOOLING QUEUE
- AX = FFCBh
- CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
- CL = printer server station address
- DS:DX -> filename (12 bytes)
- Return: AL = status (00h successful, else failed)
- SeeAlso: AX=FFCAh
- --------N-21FFCC-----------------------------
- INT 21 - TopWare Network OS v5.10+ - GET PRINT SERVER'S SPOOLING QUEUE STATUS
- AX = FFCCh
- CL = printer server station address
- BH = start item number of spooling file for print server
- BL = number of the item to be retrieved
- DS:DX -> buffer for queued file information (see #02539)
- Return: AL = status
- 00h successful
- AH = number of spool files
- DS:DX buffer filled
- nonzero failed
- Format of TopWare queued file information buffer [16-item array, one element]:
- Offset Size Description (Table 02539)
- 00h 12 BYTEs filename
- 0Ch DWORD size
- 10h WORD date
- 12h WORD time
- 14h 15 BYTEs username
- 23h BYTE count
- 24h BYTE flag: header
- 25h BYTE print number
- --------N-21FFCD-----------------------------
- INT 21 - TopWare Network OS v5.10+ - GET STATUS OF ALL PRINT SERVERS
- AX = FFCDh
- DS:DX -> buffer for server status (see #02540)
- Return: AL = status
- 00h successful
- AH = number of print servers
- nonzero failed
- Format of TopWare server status:
- Offset Size Description (Table 02540)
- 00h BYTE station address
- 01h 15 BYTEs username
- 10h BYTE flag: 01h printer is shared, 00h sharing disabled
- 11h BYTE number of files pending in queue
- --------N-21FFCF-----------------------------
- INT 21 - TopWare Network OS v5.10+ - CALL TopLook FUNCTION
- AX = FFCFh
- DH = page number (0-2, 2 is text mode)
- DL = type
- 00h look at specific screen
- 01h AutoLook on
- FFh AutoLook off
- BH = station number wishing to look
- BL = station number to be looked at
- CH = monochrome flag (01h monochrome, 00h not monochrome)
- CL = screen mode (see #02531)
- Return: AL = status (00h successful, nonzero failed)
- SeeAlso: AX=FF8Dh
- --------N-21FFD6-----------------------------
- INT 21 - TopWare Network OS v5.10+ - GET KEYCARD SERIAL NUMBER AND MAX USERS
- AX = FFD6h
- ES:BX -> 12-byte buffer for keycard serial number
- Return: CX = maximum number of users
- ES:BX buffer filled
- --------N-21FFD7-----------------------------
- INT 21 - TopWare Network OS v5.10+ - GET NETWORK PROTECTION ATTRIBUTES STATUS
- AX = FFD7h
- Return: AL = status (00h disabled, 01h enabled)
- --------N-21FFE3DL00-------------------------
- INT 21 - TopWare Network OS v5.10+ - INITIATE ACCESS TO SPECIFIC PACKET TYPE
- AX = FFE3h
- DL = 00h
- BX = packet type for Ethernet header (IP = 0800h, ARP = 0806h, etc.)
- ES:DI -> receive routine (see #02542)
- Return: CF clear if successful
- AX = handle number
- CF set on error
- DH = error code (03h,05h,09h,0Ah,11h) (see #02541)
- SeeAlso: AX=FFE3h/DL=01h
- (Table 02541)
- Values for TopWare error code:
- 01h invalid handle
- 03h no interfaces of the specified type found
- 05h bad packet type
- 09h insufficient space
- 0Ah type already being accessed
- 0Ch unable to send packet (usually hardware error)
- 11h invalid function
- (Table 02542)
- Values TopWare receive routine is called with:
- AX = function
- 0000h request packet buffer
- CX = packet size
- Return: ES:DI -> buffer or 0000h:0000h to discard packet
- 0001h packet copied
- CX = packet size
- DS:SI -> copied packet (same as returned ES:DI above)
- --------N-21FFE3DL01-------------------------
- INT 21 - TopWare Network OS v5.10+ - END ACCESS TO SPECIFIC PACKET TYPE
- AX = FFE3h
- DL = 01h
- BX = handle returned by AX=FFE3h/DL=00h
- Return: CF clear if successful
- CF set on error
- DH = error code (01h,11h) (see #02541)
- Note: the specified access handle will no longer be valid after this call
- SeeAlso: AX=FFE3h/DL=00h
- --------N-21FFE3DL02-------------------------
- INT 21 - TopWare Network OS v5.10+ - SEND PACKET
- AX = FFE3h
- DL = 02h
- CX = length of data buffer
- DS:SI -> buffer containing data
- Return: CF clear if successful
- CF set on error
- DH = error code (0Ch,11h) (see #02541)
- --------N-21FFE3DL03-------------------------
- INT 21 - TopWare Network OS v5.10+ - GET LOCAL NETWORK INTERFACE ADDRESS
- AX = FFE3h
- DL = 03h
- ES:DI -> 6-byte buffer for address
- SeeAlso: AX=FFE3h/DL=00h
- --------v-21FFFE-----------------------------
- INT 21 - VIRUS - "08/15"/"Many Fingers" - INSTALLATION CHECK
- AX = FFFEh
- Return: AX = 0815h if resident
- SeeAlso: AX=FF10h,AX=FFFEh/BX=0000h
- --------v-21FFFEBX0000-----------------------
- INT 21 - VIRUS - "Anti-Thunderbyte/LEMMING" - INSTALLATION CHECK
- AX = FFFEh
- BX = 0000h
- Return: BX = FFFFh if resident
- SeeAlso: AX=FFFEh,AX=FFFFh
- --------v-21FFFF-----------------------------
- INT 21 - VIRUS - "Ontario", "Year 1992"/"B1M92" - INSTALLATION CHECK
- AX = FFFFh
- Return: AX = 0000h if "Ontario" resident
- AX = 1992h if "Year 1992"/"B1M92" resident
- SeeAlso: AX=FF0Fh,AX=FFFFh/CX=0000h,INT 6B"VIRUS"
- --------v-21FFFFCX0000-----------------------
- INT 21 - VIRUS - "Revenge" - INSTALLATION CHECK
- AX = FFFFh
- CX = 0000h
- Return: CX = 0006h if resident
- SeeAlso: AX=FFFFh,INT 6B"VIRUS"
- --------D-22---------------------------------
- INT 22 - DOS 1+ - PROGRAM TERMINATION ADDRESS
- Desc: this vector specifies the address of the routine which is to be given
- control after a program is terminated; it should never be called
- directly, since it does not point at an interrupt handler
- Notes: this vector is restored from the DWORD at offset 0Ah in the PSP during
- termination, and then a FAR JMP is performed to the address in INT 22
- normally points at the instruction immediately following INT 21/AH=4Bh
- call which loaded the current program
- SeeAlso: INT 20,INT 21/AH=00h,INT 21/AH=31h,INT 21/AH=4Ch
- --------G-22---------------------------------
- INT 22 - COMTROL HOSTESS i/ISA DEBUGGER - CHANGE FIRMWARE DEBUGGING PORT
- AL = new firmware debugging port
- Return: ???
- SeeAlso: INT 21"COMTROL",INT 23"COMTROL"
- --------D-23---------------------------------
- INT 23 - DOS 1+ - CONTROL-C/CONTROL-BREAK HANDLER
- ---DOS 1.x---
- Return: AH = 00h abort program
- if all registers preserved, restart DOS call
- ---DOS 2+---
- CF clear
- Return: all registers preserved
- return via RETF with CF set or (MS-DOS 1,DR DOS) RETF 2 with CF set
- DOS will abort program with errorlevel 0
- else (RETF/RETF 2 with CF clear or IRET with CF ignored)
- interrupted DOS call is restarted
- Notes: this interrupt is invoked whenever DOS detects a ^C or ^Break; it
- should never be called directly
- MS-DOS 1.25 also invokes INT 23 on a divide overflow (INT 00)
- MS-DOS remembers the stack pointer before calling INT 23, and if it is
- not the same on return, pops and discards the top word; this is what
- permits a return with RETF as well as IRET or RETF 2
- MS-DOS 2.1+ ignores the returned CF if SP is the same on return as it
- was when DOS called INT 23, so RETF 2 will not terminate the program
- Novell DOS 7 always pops a word if CF is set on return, so one should
- not return with RETF 2 and CF set or IRET with the stored flags' CF
- set
- any DOS call may safely be made within the INT 23 handler, although
- the handler must check for a recursive invocation if it does
- call DOS
- SeeAlso: INT 1B
- --------G-23---------------------------------
- INT 23 - COMTROL HOSTESS i/ISA DEBUGGER - GET CONFIGURATION INFORMATION
- AL = query type
- 00h get old config map
- Return: AX = old config map
- 01h get dual-ported RAM map
- Return: BX:AX = dual-ported RAM map
- 02h get SCC port map
- Return: BX:AX = SCC port map
- SeeAlso: INT 22"COMTROL",INT 26"COMTROL"
- --------D-24---------------------------------
- INT 24 C - DOS 1+ - CRITICAL ERROR HANDLER
- Notes: invoked when a critical (usually hardware) error is encountered by DOS
- (see #02543); should never be called directly
- when DOS terminates a program, it copies the previous value of the
- INT 24 vector out of the PSP (see #01378) and into the interrupt
- vector table
- SeeAlso: INT 21/AH=95h
- (Table 02543)
- Values critical error handler is called with:
- AH = type and processing flags (see #02544)
- AL = drive number if AH bit 7 clear
- BP:SI -> device driver header (see #01646 at INT 21/AH=52h)
- (BP:[SI+4] bit 15 set if character device)
- DI low byte contains error code if AH bit 7 set (see #02545)
- STACK: DWORD return address for INT 24 call
- WORD flags pushed by INT 24
- WORD original AX on entry to INT 21
- WORD BX
- WORD CX
- WORD DX
- WORD SI
- WORD DI
- WORD BP
- WORD DS
- WORD ES
- DWORD return address for INT 21 call
- WORD flags pushed by INT 21
- Return: AL = action code (see #02546)
- SS,SP,DS,ES,BX,CX,DX preserved
- Notes: the only DOS calls the handler may make are INT 21/AH=01h-0Ch,30h,59h
- if the handler returns to the application by popping the stack, DOS
- will be in an unstable state until the first call with AH > 0Ch
- for DOS 3.1+, IGNORE (AL=00h) is turned into FAIL (AL=03h) on network
- critical errors
- if IGNORE specified but not allowed, it is turned into FAIL
- if RETRY specified but not allowed, it is turned into FAIL
- if FAIL specified but not allowed, it is turned into ABORT
- (DOS 3.0+) if a critical error occurs inside the critical error
- handler, the DOS call is automatically failed (AL set to 03h and
- the INT 24 call skipped)
- Bitfields for critical error type and processing flags:
- Bit(s) Description (Table 02544)
- 7 clear = disk I/O error
- set = -- if block device, bad FAT image in memory
- -- if char device, error code in DI
- 6 unused
- 5 Ignore allowed (DOS 3.0+)
- 4 Retry allowed (DOS 3.0+)
- 3 Fail allowed (DOS 3.0+)
- 2-1 disk area of error
- 00 = DOS area 01 = FAT
- 10 = root dir 11 = data area
- 0 set if write, clear if read
- SeeAlso: #02545,#02546
- (Table 02545)
- Values for critical error code:
- 00h write-protection violation attempted
- 01h unknown unit for driver
- 02h drive not ready
- 03h unknown command given to driver
- 04h data error (bad CRC)
- 05h bad device driver request structure length
- 06h seek error
- 07h unknown media type
- 08h sector not found
- 09h printer out of paper
- 0Ah write fault
- 0Bh read fault
- 0Ch general failure
- 0Dh (DOS 3.0+) sharing violation
- 0Eh (DOS 3.0+) lock violation
- 0Fh invalid disk change
- 10h (DOS 3.0+) FCB unavailable
- 11h (DOS 3.0+) sharing buffer overflow
- 12h (DOS 4.0+) code page mismatch
- 13h (DOS 4.0+) out of input
- 14h (DOS 4.0+) insufficient disk space
- SeeAlso: #02544,#02546
- (Table 02546)
- Values for critical error handler action code:
- 00h ignore error and continue processing request
- 01h retry operation
- 02h terminate program as though INT 21/AH=4Ch called (INT 20h for DOS 1.x)
- 03h fail system call in progress (DOS 3+)
- SeeAlso: #02544,#02546
- --------D-25---------------------------------
- INT 25 - DOS 1+ - ABSOLUTE DISK READ (except partitions > 32M)
- AL = drive number (00h = A:, 01h = B:, etc)
- CX = number of sectors to read (not FFFFh)
- DX = starting logical sector number (0000h - highest sector on drive)
- DS:BX -> buffer for data
- Return: CF clear if successful
- CF set on error
- AH = status (see #02547)
- AL = error code (same as passed to INT 24 in DI)
- AX = 0207h if more than 64K sectors on drive -- use new-style call
- may destroy all other registers except segment registers
- Notes: original flags are left on stack, and must be popped by caller
- this call bypasses the DOS filesystem
- examination of CPWIN386.CPL indicates that if this call fails with
- error 0408h on an old-style (<32M) call, one should retry the
- call with the high bit of the drive number in AL set
- Novell DOS 7 decides whether the old-style or new-style (>32M) version
- of INT 25 must be used solely on the basis of the partition's size,
- thus forcing use of the new-style call even for data in the first
- 32M of the partition
- BUGS: DOS 3.1 through 3.3 set the word at ES:[BP+1Eh] to FFFFh if AL is an
- invalid drive number
- DR DOS 3.41 will return with a jump instead of RETF, leaving the
- wrong number of bytes on the stack; use the huge-partition version
- (INT 25/CX=FFFFh) for all partition sizes under DR DOS 3.41
- SeeAlso: INT 13/AH=02h,INT 25/CX=FFFFh,INT 26,INT 21/AX=7305h
- (Table 02547)
- Values for disk I/O status:
- 80h device failed to respond (timeout)
- 40h seek operation failed
- 20h controller failed
- 10h data error (bad CRC)
- 08h DMA failure
- 04h requested sector not found
- 03h write-protected disk (INT 26 only)
- 02h bad address mark
- 01h bad command
- --------D-25----CXFFFF-----------------------
- INT 25 - DOS 3.31+ - ABSOLUTE DISK READ (32M-2047M hard-disk partition)
- CX = FFFFh
- AL = drive number (0=A, 1=B, etc)
- DS:BX -> disk read packet (see #02548)
- Return: CF clear if successful
- CF set on error
- AH = status (see #02547)
- AL = error code (same as passed to INT 24 in DI)
- AX = 0207h for FAT32 drive -- use INT 21/AX=7305h
- may destroy all other registers except segment registers; Win9X always
- sets SI to 0000h due to an apparent coding bug
- Notes: partition is potentially >32M (and requires this form of the call) if
- bit 1 of the device attribute word in the device driver is set
- original flags are left on stack, and must be removed by caller
- this call bypasses the DOS filesystem
- for FAT32 drives (which may be up to 2TB in size), use INT 21/AX=7305h
- SeeAlso: INT 13/AH=02h,INT 25,INT 26/CX=FFFFh,INT 21/AX=7305h
- Format of disk read packet:
- Offset Size Description (Table 02548)
- 00h DWORD sector number
- 04h WORD number of sectors to read
- 06h DWORD transfer address
- SeeAlso: #02552
- --------k-25CDCD-----------------------------
- INT 25 - Stacker - GET DEVICE DRIVER ADDRESS
- AX = CDCDh
- DS:BX -> buffer for address (see #02549)
- CX = 0001h
- DX = 0000h
- Return: AX = CDCDh if Stacker installed
- DS:BX buffer filled
- Note: not supported by Stacker Anywhere; to obtain the Stacker device
- driver address and to detect drives controlled by all versions
- of Stacker, INT 21/AX=4404h"Stacker" or lookup via the CDS and DPB
- should be preferred (see INT 21/AH=52h)
- Stacker Anywhere does not link its built-in device driver into
- the standard device driver chain, but it can be found via CDS/DPB
- SeeAlso: INT 21/AX=4404h"Stacker"
- Format of Stacker v2+ driver address buffer:
- Offset Size Description (Table 02549)
- 00h WORD signature CDCDh
- 02h WORD ??? 0001h
- 04h DWORD pointer to Stacker signature at device driver offset 1Ah
- (see #02550)
- Format of Stacker v2+ device driver:
- Offset Size Description (Table 02550)
- 00h DWORD pointer to next driver, offset=FFFFh if last driver
- FFFFh:FFFFh for Stacker Anywhere
- 04h WORD device attributes (see #01647,#01648)
- 06h WORD device strategy entry point
- 08h WORD device interrupt entry point
- 0Ah BYTE number of subunits (drives) supported by driver
- 0 for Stacker Anywhere
- 0Bh 7 BYTEs signature "STAC-CD" for Stacker and Stacker Anywhere
- 12h 7 BYTEs ???
- 19h BYTE always = 01h ?? (Stacker Anywhere points here)
- 1Ah WORD signature A55Ah (all other Stacker versions point here)
- 1Ch WORD Stacker version * 64h
- 0C8h = 200, 012Ch = 300, 0190h = 400 (also Stacker Anywhere)
- 1Eh WORD offset of volume-specific information offset table
- (list of WORDs, one per drive, containing offsets to various
- information)
- 20h 56 BYTEs n/a
- 58h BYTE volume number, set after INT 21/AX=4404h, INT 21/AX=4408h
- (use to index into volume-specific info offset table,
- should be set to FFh before and tested for change after)
- 59h 19 BYTEs n/a
- 6Ch 4 BYTEs ASCII string "SWAP"
- 70h 26 BYTEs drive mapping table (one byte for each drive A: through Z:)
- (only used for drives swapped by SSWAP.COM; other drives
- compressed by Stacker can be found with the standard device
- driver header signature (see INT 21/AH=52h)
- ---Stacker 4, Stacker Anywhere---
- 8Ah 40 BYTEs ???
- B2h 4 BYTEs ASCII string "SWP2"
- B6h 26 BYTEs drive table ???
- D0h 150 BYTEs ???
- 166h 60 BYTEs LZSINFO structure (see #02808 at INT 2F/AX=4A12h)
- SeeAlso: #02551,#01646 at INT 21/AH=52h
- Format of Stacker boot record:
- Offset Size Description (Table 02551)
- 1F0h 8 BYTEs Stacker signature (first byte is CDh)
- 1F8h DWORD pointer to start of Stacker device driver
- 1FCh WORD Stacker volume number
- 1FEh WORD ???
- SeeAlso: #02550
- --------c-25--FFSI4358-----------------------
- INT 25 - PC-CACHE.SYS - INSTALLATION CHECK
- AL = FFh
- SI = 4358h
- Return: SI = 6378h if installed
- CX = segment of device driver PC-CACHE.SYS
- DX = version (major in DH, minor in DL)
- Program: PC-CACHE.SYS is a small device driver used by PC-Cache v5.x to obtain
- access to certain disk drivers for devices such as Bernoulli drives
- SeeAlso: INT 13/AH=A0h
- --------!---Section--------------------------
- Interrupt List, part 11 of 18
- Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
- --------D-26---------------------------------
- INT 26 - DOS 1+ - ABSOLUTE DISK WRITE (except partitions > 32M)
- AL = drive number (00h = A:, 01h = B:, etc)
- CX = number of sectors to write (not FFFFh)
- DX = starting logical sector number (0000h - highest sector on drive)
- DS:BX -> data to write
- Return: CF clear if successful
- CF set on error
- AH = status (see #02547)
- AL = error code (same as passed to INT 24 in DI)
- AX = 0207h if more than 64K sectors on drive -- use new-style call
- may destroy all other registers except segment registers
- Notes: original flags are left on stack, and must be popped by caller
- this call bypasses the DOS filesystem, though DOS 5+ invalidates any
- disk buffers referencing sectors which are written with this call
- examination of CPWIN386.CPL indicates that if this call fails with
- error 0408h on an old-style (<32M) call, one should retry the
- call with the high bit of the drive number in AL set
- Novell DOS 7 decides whether the old-style or new-style (>32M) version
- of INT 26 must be used solely on the basis of the partition's size,
- thus forcing use of the new-style call even for data in the first
- 32M of the partition
- Windows98 will display an error message and deliberately hang the
- system on attempted write to any hard disk if neither bit 7 of the
- Extended Drive Info byte nor bit 6 of "DOS_FLAG" (List-of-Lists+60h)
- is set
- BUGS: DOS 3.1 through 3.3 set the word at ES:[BP+1Eh] to FFFFh if AL is an
- invalid drive number
- DR DOS 3.41 will return with a jump instead of RETF, leaving the
- wrong number of bytes on the stack; use the huge-partition version
- (INT 26/CX=FFFFh) for all partition sizes under DR DOS 3.41
- SeeAlso: INT 13/AH=03h,INT 25,INT 26/CX=FFFFh,INT 21/AX=7305h
- --------D-26----CXFFFF-----------------------
- INT 26 - DOS 3.31+ - ABSOLUTE DISK WRITE (32M-2047M hard-disk partition)
- CX = FFFFh
- AL = drive number (0=A, 1=B, etc)
- DS:BX -> disk write packet (see #02552)
- Return: CF clear if successful
- CF set on error
- AH = status (see #02547)
- AL = error code (same as passed to INT 24 in DI)
- may destroy all other registers except segment registers
- Notes: partition is potentially >32M (and requires this form of the call) if
- bit 1 of the device attribute word in the device driver is set
- original flags are left on stack, and must be removed by caller
- this call bypasses the DOS filesystem, though DOS 5+ invalidates any
- disk buffers referencing sectors which are written with this call
- for FAT32 drives (which may be up to 2TB in size), use INT 21/AX=7305h
- Windows98 will display an error message and deliberately hang the
- system on attempted write to any hard disk if neither bit 7 of the
- Extended Drive Info byte nor bit 6 of "DOS_FLAG" (List-of-Lists+60h)
- is set
- SeeAlso: INT 13/AH=03h,INT 25/CX=FFFFh,INT 26,INT 21/AX=7305h
- Format of disk write packet:
- Offset Size Description (Table 02552)
- 00h DWORD sector number
- 04h WORD number of sectors to read
- 06h DWORD transfer address
- SeeAlso: #02548
- --------G-26---------------------------------
- INT 26 - COMTROL HOSTESS i/ISA DEBUGGER - ENTER/EXIT EXTENDED ADDRESSING MODE
- ???
- Return: ???
- SeeAlso: INT 23"COMTROL",INT 27"COMTROL"
- --------D-27---------------------------------
- INT 27 - DOS 1+ - TERMINATE AND STAY RESIDENT
- DX = number of bytes to keep resident (max FFF0h)
- CS = segment of PSP
- Return: never
- Notes: this is an obsolete call
- INT 22, INT 23, and INT 24 are restored from the PSP
- does not close any open files
- the minimum number of bytes which will remain resident is 110h for
- DOS 2.x and 60h for DOS 3.0+; there is no minimum for DOS 1.x, which
- implements this service in COMMAND.COM rather than the DOS kernel
- SeeAlso: INT 21/AH=31h
- --------G-27---------------------------------
- INT 27 - COMTROL HOSTESS i/ISA DEBUGGER - INVOKE REMOTE TURBO DEBUGGER KERNEL
- ???
- Return: ???
- Desc: invoke a copy of the remote Turbo Debugger kernel on the Hostess i
- controller
- SeeAlso: INT 20"COMTROL",INT 26"COMTROL"
- --------D-28---------------------------------
- INT 28 C - DOS 2+ - DOS IDLE INTERRUPT
- SS:SP = top of MS-DOS stack for I/O functions
- Return: all registers preserved
- Desc: This interrupt is invoked each time one of the DOS character input
- functions loops while waiting for input. Since a DOS call is in
- progress even though DOS is actually idle during such input waits,
- hooking this function is necessary to allow a TSR to perform DOS
- calls while the foreground program is waiting for user input. The
- INT 28h handler may invoke any INT 21h function except functions
- 00h through 0Ch.
- Notes: under DOS 2.x, the critical error flag (the byte immediately after the
- InDOS flag) must be set in order to call DOS functions 50h/51h from
- the INT 28h handler without destroying the DOS stacks.
- calls to INT 21/AH=3Fh,40h from within an INT 28 handler may not use a
- handle which refers to CON
- at the time of the call, the InDOS flag (see INT 21/AH=34h) is normally
- set to 01h; if larger, DOS is truly busy and should not be reentered
- the default handler is an IRET instruction
- supported in OS/2 compatibility box
- the _MS-DOS_Programmer's_Reference_ for DOS 5.0 incorrectly documents
- this interrupt as superseded
- the performance of NetWare Lite servers (and probably other peer-to-
- peer networks) can be dramatically improved by calling INT 28
- frequently from an application's idle loop
- SeeAlso: INT 21/AH=34h,INT 2A/AH=84h,INT 2F/AX=1680h
- --------U-289999-----------------------------
- INT 28 u - PCXDUMP v9.00+ - INSTALLATION CHECK
- AX = 9999h
- Return: AX = AAAAh if installed
- CX = version number * 100 (example: 03A2h = 930 = v9.30)
- DL = interrupt used by the dump function (see #02553)
- (00h if call not available)
- BX = CS of PCXDUMP's INT 28 handler (undocumented)
- ES = segment of PCXDUMP's memory block (v9.30, undocumented)
- Program: PCXDUMP is a shareware screen grabber saving in PCX format
- Notes: if DL<>00h a dump can be requested by calling INT DL as shown
- below (the user can choose the interrupt number at installation
- time); if DL=00h the dump function can be called only by hotkeys
- (this is the default)
- (Table 02553)
- Call PCXDUMP screen-dump function with:
- INT xx
- AX = 1234h
- BX = dump type
- 0000h Color dump
- 0001h Immediate color dump
- 0002h Black/White dump
- 0003h Immediate B/W dump
- 0004h Inverted B/W dump
- 0005h Gray scaled dump
- 0006h Inverted gray scaled dump
- 0007h Text screen dump to text file
- 0008h Text screen dump to ansi file
- Return: nothing
- Notes: if BX=0001h, 0003h, 0007h or 0008h the whole screen will be
- dumped; the other valid values will draw a selection frame
- on the screen except in text modes (text modes allow only
- full screen dumps)
- this function doesn't perform the dump, it only requests it;
- the dump will be performed after a few milliseconds if it's
- safe to do so, thus the author recommends putting a 60 ms delay
- after this call
- --------D-29---------------------------------
- INT 29 C - DOS 2+ - FAST CONSOLE OUTPUT
- AL = character to display
- Return: nothing
- BX may be destroyed by some versions of DOS 3.3
- Notes: automatically called when writing to a device with bit 4 of its device
- driver header set (see also INT 21/AH=52h)
- COMMAND.COM v3.2 and v3.3 compare the INT 29 vector against the INT 20
- vector and assume that ANSI.SYS is installed if the segment is larger
- the default handler under DOS 2.x and 3.x simply calls INT 10/AH=0Eh
- the default handler under DESQview 2.2 understands the <Esc>[2J
- screen-clearing sequence, calls INT 10/AH=0Eh for all others
- SeeAlso: INT 21/AH=52h,INT 2F/AX=0802h,INT 79"AVATAR.SYS"
- --------U-29E60DCL0E-------------------------
- INT 29 - ShowGFX - INSTALLATION CHECK
- AX = E60Dh
- CL = 0Eh
- DX = C0DEh
- Return: DX = DEC0h
- Program: ShowGFX is a PCBoard graphics driver by Solar Designer
- --------N-2A00-------------------------------
- INT 2A - NETWORK - INSTALLATION CHECK
- AH = 00h
- Return: AH <> 00h if installed
- CF set if NetWare v2.15 NetBIOS emulator installed
- Note: supported by PC LAN Program, LAN Manager, LANtastic, NetWare, 10NET,
- etc.
- SeeAlso: INT 5C"NetBIOS"
- --------N-2A0000-----------------------------
- INT 2A - AT&T Starlan Extended NetBIOS (var length names) - INSTALLATION CHECK
- AX = 0000h
- Return: AH = DDh
- SeeAlso: INT 5B"Extended NetBIOS"
- --------N-2A01-------------------------------
- INT 2A - NETWORK (Microsoft,LANtastic) - EXECUTE NETBIOS REQUEST,NO ERROR RETRY
- AH = 01h
- ES:BX -> NCB (see #03249 at INT 5C"NetBIOS")
- Return: AL = NetBIOS error code
- AH = status
- 00h no error
- 01h error occurred
- SeeAlso: AH=04h,AX=0500h,INT 5B"Extended NetBIOS",INT 5C"NetBIOS"
- --------N-2A02-------------------------------
- INT 2A - NETWORK (Microsoft) - SET NET PRINTER MODE
- AH = 02h
- ???
- Return: ???
- --------N-2A0300-----------------------------
- INT 2A - NETWORK - CHECK DIRECT I/O
- AX = 0300h
- DS:SI -> ASCIZ device name (may be full path or only drive specifier--
- must include the colon)
- Return: CF clear if direct physical addressing (INT 13,INT 25) permissible
- CF set if access via files only
- Notes: do not use direct disk accesses if this function returns CF set or the
- device is redirected (INT 21/AX=5F02h)
- use AH=00h to determine whether the network is installed; if not,
- direct physical access is allowed
- may take some time to execute, so programs which need to check
- frequently should save the result of the first call
- this function is called by the DOS kernel on INT 25 and INT 26
- supported by PC LAN Program, LAN Manage, LANtastic, NetWare, 10NET,
- etc.
- SeeAlso: INT 13/AH=02h,INT 13/AH=03h,INT 25,INT 26,INT 21/AX=5F02h
- --------N-2A04-------------------------------
- INT 2A - NETWORK - EXECUTE NetBIOS REQUEST
- AH = 04h
- AL = error retry
- 00h automatically retry request on errors 09h, 12h, and 21h
- (see #03248 at INT 5C"NetBIOS")
- 01h no retry
- 02h ???
- ES:BX -> Network Control Block (see #03249 at INT 5C"NetBIOS")
- Return: AX = 0000h if successful
- AH = 01h on error
- AL = error code
- Notes: invokes either INT 5B or INT 5C as appropriate
- supported by PC LAN Program, LANtastic, LAN Manager, NetWare, 10NET,
- etc.
- NetWare 2.15 NetBIOS emulator returns CF clear if successful, CF set
- on error
- PC LAN Program defines any non-zero return value in AH as an error
- indicator for subfunction 00h, and any non-zero return value in AX
- as an error indicator for subfunction 01h
- SeeAlso: AH=00h,AH=01h,AX=0500h,INT 5B"Extended NetBIOS",INT 5C"NetBIOS"
- --------N-2A0500-----------------------------
- INT 2A - NETWORK - GET NETWORK RESOURCE AVAILABILITY
- AX = 0500h
- Return: AX reserved
- BX = number of network names available
- CX = number of network control blocks available
- DX = number of network sessions available
- Notes: supported by PC LAN Program, LAN Manager, LANtastic, NetWare, 10NET,
- etc.
- the application should call this function before using any network
- resources, and maintain its own count to avoid exceeding the
- network's resource limits
- SeeAlso: AH=00h,AH=01h,AH=04h,INT 5C"NetBIOS"
- --------N-2A06-------------------------------
- INT 2A - NETBIOS, LANtastic - NETWORK PRINT-STREAM CONTROL
- AH = 06h
- AL = function
- 01h set concatenation mode
- all printer output put in one job until return to DOS prompt
- 02h set truncation mode (default)
- printer open/close or BIOS/DOS output switch starts new job
- 03h flush printer output and start new print job
- Return: CF set on error
- AX = error code
- CF clear if successful
- Notes: subfunction 03h is equivalent to Ctrl/Alt/keypad-*
- supported by PC LAN Program, LANtastic, NetWare, 10NET, etc.
- LANtastic v4.x no longer supports this call
- this function sets the printer mode for all redirected printers
- SeeAlso: INT 21/AX=5D08h,INT 21/AX=5D09h,INT 2F/AX=1125h
- --------N-2A07-------------------------------
- INT 2A U - PC Network v1.00 - RECEIVER.COM - ???
- AH = 07h
- ???
- Return: ???
- Program: PC Network is an early networking package which was renamed the
- IBM PC Local Area Network Program (PC LAN Program) as of v1.10
- SeeAlso: AH=86h
- --------N-2A2001-----------------------------
- INT 2A - MS Networks or NETBIOS - ???
- AX = 2001h
- ???
- Return: ???
- Note: intercepted by DESQview 2.x
- --------N-2A2002-----------------------------
- INT 2A - NETWORK - ???
- AX = 2002h
- ???
- Return: ???
- Note: called by MS-DOS 3.30-6.00 APPEND
- --------N-2A2003-----------------------------
- INT 2A - NETWORK - ???
- AX = 2003h
- ???
- Return: ???
- Note: called by MS-DOS 3.30-6.00 APPEND
- --------N-2A4147DX0000-----------------------
- INT 2A U - NetSoft DOS-NET v1.20+ - INSTALLATION CHECK
- AX = 4147h ('AG')
- DX = 0000h
- Return: DX = 4147h if installed
- DS:SI -> configuration data (see #02554)
- Program: DOS-NET is a shareware networking package by Albert Graham
- Note: this call is supported by CLIENT.COM, SERVER.COM, ROUTER.COM, and
- NETDOS.COM
- SeeAlso: INT 65/DX=4147h,INT 65/DX=4741h
- Format of DOS-NET v1.20 configuration data area:
- Offset Size Description (Table 02554)
- 00h BYTE ???
- 01h BYTE interrupt number used by DOS-NET APIs
- 02h WORD function number to place in AX for above interrupt
- 04h BYTE minor version as two BCD digits (e.g. 20h for v1.20)
- 05h BYTE major version number (01h for v1.20)
- 06h 2 BYTEs ???
- 08h WORD ??? (used by ARCNET.COM)
- bit 15: ??? (set by MACTEST.COM)
- 0Ah WORD ??? (used by NDIS.COM and ODI.COM)
- 0Ch 22 BYTEs ???
- 24h DWORD -> ??? function (set by PROTECT.COM)
- 28h 12 BYTEs ???
- 34h DWORD -> ??? function (set by FASTVIEW.COM)
- 38h DWORD -> ??? function (set by FASTVIEW.COM)
- 58h DWORD -> ??? (offsets 04h and 1Ah from value are used by NETFILES)
- ???
- 7Ch WORD ???
- 7Eh WORD ??? (may be high half of a DWORD at 7Ch)
- ???
- A8h DWORD -> ??? (used by SM.COM)
- ???
- 114h WORD ???
- 116h WORD ??? (may be high half of a DWORD at 114h)
- ???
- 1BDh BYTE ??? flags
- bit 0: ???
- bit 6: ???
- ???
- 1E1h BYTE ???
- ???
- 208h WORD ??? (used by SM.COM, MACTEST)
- 282h WORD ???
- 284h 2 BYTEs ???
- 286h WORD ??? flags
- bit 0: ???
- ???
- 31Eh WORD ???
- 320h WORD ??? (used by NDIS.COM and ODI.COM)
- 322h 8 BYTEs ???
- 32Ah WORD ??? (used by NDIS.COM and ODI.COM)
- ???
- 33Eh 4 BYTEs ??? (used by ODI.COM)
- 342h N BYTEs ??? (used by NDIS.COM)
- ???
- 3CFh BYTE ??? flags
- bit 2: ???
- 3D2h BYTE installed-component flags
- bit 0: PROTECT installed
- bit 1: NETCACHE installed
- bit 3: SM.COM installed
- bit 7: NETDEBUG installed
- 3D3h BYTE installed-component flags
- bit 0: NETFILES installed
- bit 6: FASTVIEW installed
- ???
- 3FFh BYTE ??? (used by NDIS.COM)
- 400h BYTE ???
- 401h BYTE ??? (used by SM.COM)
- 402h BYTE ??? (used by SM.COM)
- ???
- 448h BYTE ???
- 449h BYTE ??? (used by MACTEST)
- 44Ah BYTE ??? (used by PROTECT)
- 44Bh BYTE ???
- 44Ch BYTE ???
- 44Dh BYTE ??? (used by SM.COM)
- 44Eh BYTE ??? (used by SM.COM, MACTEST)
- ???
- --------N-2A7802-----------------------------
- INT 2A - NETWORK - PC LAN PROG v1.31+ - GET LOGGED ON USER NAME
- AX = 7802h
- ES:DI -> 8-byte buffer to be filled
- Return: AL = 00h if no user logged on to Extended Services
- AL <> 00h if user logged on to Extended Services
- buffer at ES:DI filled with name, padded to 8 chars with blanks.
- --------D-2A80-------------------------------
- INT 2A CU - NETWORK - BEGIN DOS CRITICAL SECTION
- AH = 80h
- AL = critical section number (00h-0Fh) (see #02555)
- Notes: normally hooked to avoid interrupting a critical section, rather than
- called
- the handler should ensure that none of the critical sections are
- reentered, usually by suspending a task which attempts to reenter
- an active critical section
- the DOS kernel does not invoke critical sections 01h and 02h unless it
- is patched. DOS 3.1+ contains a zero-terminated list of words
- beginning at offset -11 from the Swappable Data Area
- (see #01687 at INT 21/AX=5D06h); each word contains the offset within
- the DOS data segment of a byte which must be changed from C3h (RET)
- to 50h (PUSH AX) under DOS 3.x or from 00h to a nonzero value under
- DOS 4.0+ to enable use of critical sections. For DOS 4.0+, all
- words in this list point at the byte at offset 0D0Ch.
- MS Windows patches the DOS kernel's calls to INT 2A/AH=80h-81h into
- far calls to its own handler, and does not reflect the calls back
- to INT 2A unless SYSTEM.INI contains ReflectDOSInt2A=1 or
- ModifyDOSInt2A=0 in the [386Enh] section
- Novell NETX does not issue INT 2A/AH=80h and INT 2A/AH=81h calls when
- it intercepts INT 21 calls and processes them itself
- SeeAlso: AH=81h,AH=82h,AX=8700h,INT 21/AX=5D06h,INT 21/AX=5D0Bh
- (Table 02555)
- Values for DOS critical section number:
- 01h DOS kernel, SHARE.EXE, DOSMGR
- apparently for maintaining the integrity of DOS/SHARE/NET
- data structures
- 02h DOS kernel, DOSMGR
- ensures that no multitasking occurs while DOS is calling an
- installable device driver
- 05h network redirector
- 06h DOS 4.x only IFSFUNC
- 08h ASSIGN.COM
- 0Ah MSCDEX, CORELCDX
- 0Fh IBM PC LAN server (while intercepting INT 10/AH=06h,07h,0Eh)
- --------D-2A81-------------------------------
- INT 2A CU - NETWORK - END DOS CRITICAL SECTION
- AH = 81h
- AL = critical section number (00h-0Fh) (see #02555)
- Notes: normally hooked rather than called
- the handler should reawaken any tasks which were suspended due to an
- attempt to enter the specified critical section
- MS Windows patches the DOS kernel's calls to INT 2A/AH=80h-81h into
- far calls to its own handler, and does not reflect the calls back
- to INT 2A unless SYSTEM.INI contains ReflectDOSInt2A=1 or
- ModifyDOSInt2A=0 in the [386Enh] section
- SeeAlso: AH=80h,AH=82h,AX=8700h
- --------D-2A82-------------------------------
- INT 2A CU - NETWORK - END DOS CRITICAL SECTIONS 0 THROUGH 7
- AH = 82h
- Notes: called by the INT 21h function dispatcher for function 0 and functions
- greater than 0Ch except 59h, and on process termination
- the handler should reawaken any tasks which were suspended due to an
- attempt to enter one of the critical sections 0 through 7
- SeeAlso: AH=81h
- --------N-2A84-------------------------------
- INT 2A CU - NETWORK - KEYBOARD BUSY LOOP
- AH = 84h
- Note: similar to DOS's INT 28h, called from inside the DOS keyboard input
- loop (i.e. INT 21/AH=07h or INT 21/AH=08h) to allow the network
- software to process requests
- SeeAlso: INT 28
- --------N-2A86-------------------------------
- INT 2A U - PC Network v1.00 - RECEIVER.COM - ???
- AH = 86h
- ???
- Return: ???
- SeeAlso: AH=07h,AH=C4h
- --------P-2A8700-----------------------------
- INT 2A CU - PRINT - BEGIN BACKGROUND PRINTING
- AX = 8700h
- CF clear
- Return: CF clear if OK to print in background now
- CF set if background printing not allowed at this time
- Desc: used to inform interested programs that PRINT is about to start its
- background processing, and allow those programs to postpone the
- processing if necessary
- Notes: when PRINT gains control and wants to begin printing, it calls this
- function. If CF is clear on return, PRINT begins its background
- processing, and calls AX=8701h when it is done. If CF is set on
- return, PRINT will relinquish control immediately, and will not
- call AX=8701h
- PCVENUS (an early network shell by IBM and CMU) hooks this call to
- prevent background printing while its own code is active
- SeeAlso: AH=80h,AH=81h,AX=8701h
- --------P-2A8701-----------------------------
- INT 2A CU - PRINT - END BACKGROUND PRINTING
- AX = 8701h
- Desc: used to inform interested programs that PRINT has completed its
- background processing
- Note: called by PRINT after it has performed some background printing; not
- called if AX=8700h returned with CF set.
- SeeAlso: AX=8700h
- --------N-2A89-------------------------------
- INT 2A U - PC Network v1.00 - RECEIVER.COM - ???
- AH = 89h
- AL = ??? (ASSIGN uses 08h)
- ???
- Return: ???
- --------I-2A90-------------------------------
- INT 2A U - IBM PC 3270 EMULATION PROGRAM - ???
- AH = 90h
- ???
- Return: ???
- Note: the LANtastic redirector and SERVER.EXE use this function with AL=01h,
- 03h-07h,0Ch-11h
- --------N-2AC2-------------------------------
- INT 2A U - Network - ???
- AH = C2h
- AL = subfunction
- 07h ???
- 08h ???
- BX = 0001h
- ???
- Return: ???
- Note: this function is called by the DOS 3.30-6.00 APPEND
- --------N-2AC4-------------------------------
- INT 2A U - PC Network v1.00 - RECEIVER.COM - ???
- AH = C4h
- AL = subfunction
- 07h ???
- 08h ???
- BX = ???
- ???
- Return: ???
- SeeAlso: AH=86h
- --------N-2AD800-----------------------------
- INT 2A U - Novell NetWare Lite - SERVER - SET ???
- AX = D800h
- Return: nothing
- Desc: sets ??? flag, and sets ??? to initial value
- Note: called by CLIENT
- SeeAlso: AX=D801h,AX=D850h
- --------N-2AD801-----------------------------
- INT 2A U - Novell NetWare Lite - SERVER - RESET ???
- AX = D801h
- Return: nothing
- Desc: clears the ??? flag set by AX=D800h
- Note: called by CLIENT
- SeeAlso: AX=D800h,AX=D850h
- --------N-2AD850-----------------------------
- INT 2A U - Novell NetWare Lite - CLIENT - INCREMENT ???
- AX = D850h
- Return: nothing
- Desc: increments an internal byte-sized counter
- Note: this function is intercepted by DV/X 1.10 PEERSERV.DVR and the
- Advanced NetWare 4.0 DOS Requester
- SeeAlso: AX=D851h
- --------N-2AD851-----------------------------
- INT 2A U - Novell NetWare Lite - CLIENT - RESET ???
- AX = D851h
- Return: nothing
- Desc: resets an internal byte-sized counter to zero
- Note: this function is intercepted by DV/X 1.10 PEERSERV.DVR and the
- Advanced NetWare 4.0 DOS Requester
- SeeAlso: AX=D850h
- --------N-2AD852-----------------------------
- INT 2A U - Novell NetWare - DOS Requester v1.03 - ???
- AX = D852h
- Return: ???
- Note: calls the NetWare Lite SERVER installation check, and sets ??? pointer
- SeeAlso: AX=D853h,INT 2F/AX=D880h
- --------N-2AD853-----------------------------
- INT 2A U - Novell NetWare - DOS Requester v1.03 - ???
- AX = D853h
- Return: ???
- Note: clears the pointer set by AX=D852h
- SeeAlso: AX=D852h
- --------N-2AE0-------------------------------
- INT 2A U - PC Network 1.00 - ???
- AH = E0h
- AL = subfunction??? (01h,02h, maybe others)
- ???
- Return: ???
- Note: called by PCNet 1.00 NET.COM, a shell program from which others are run
- --------N-2AFF90-----------------------------
- INT 2A - PC/TCP PREDIR.EXE - ???
- AX = FF90h
- Return: AX = ???
- Note: PREDIR.EXE is the network printer redirector included as part of the
- PC/TCP system by FTP Software, Inc.
- --------N-2AFF91-----------------------------
- INT 2A - PC/TCP PREDIR.EXE - ???
- AX = FF91h
- BX = ???
- Return: AX = status???
- --------N-2AFF92-----------------------------
- INT 2A - PC/TCP PREDIR.EXE - INSTALLATION CHECK
- AX = FF92h
- Return: AX = 0000h if installed
- BX = redirected printer port (FFFFh if no printers redirected)
- CX = version (CH = major, CL = minor)
- Note: PREDIR.EXE is the network printer redirector included as part of the
- PC/TCP system by FTP Software, Inc.
- --------N-2AFF93-----------------------------
- INT 2A - PC/TCP PREDIR.EXE - ???
- AX = FF93h
- Return: AX = ???
- --------N-2AFF94-----------------------------
- INT 2A - PC/TCP PREDIR.EXE - ???
- AX = FF94h
- BX = ???
- CX = ???
- DX = ???
- Return: AX = ???
- Note: PREDIR.EXE is the network printer redirector included as part of the
- PC/TCP system by FTP Software, Inc.
- --------N-2AFF95-----------------------------
- INT 2A - PC/TCP PREDIR.EXE - GET CONFIGURATION STRINGS
- AX = FF95h
- CX = what to get
- 0000h ??? (returned pointer to "C:\COMMAND.COM")
- 0001h spooling program
- 0002h ???
- 0003h spool file name
- 0004h swap file name
- Return: AX = status
- 0000h successful
- BX:DX -> ASCIZ configuration string
- --------N-2AFF96-----------------------------
- INT 2A - PC/TCP PREDIR.EXE - SET PRINT JOB TERMINATION CONFIGURATION
- AX = FF96h
- CX = what to set
- 0000h ???
- 0001h print-on-hotkey state
- 0002h print-on-exit state
- 0003h print job timeout in clock ticks
- 0004h print-on-EOF state
- BX = new value (0000h disabled, 0001h enabled except for timeout)
- Return: AX = ???
- SeeAlso: AX=FF97h
- Note: PREDIR.EXE is the network printer redirector included as part of the
- PC/TCP system by FTP Software, Inc.
- --------N-2AFF97-----------------------------
- INT 2A - PC/TCP PREDIR.EXE - GET PRINT JOB TERMINATION CONFIGURATION
- AX = FF97h
- CX = what to get
- 0000h ???
- 0001h print-on-hotkey state
- 0002h print-on-exit state
- 0003h print job timeout in clock ticks
- 0004h print-on-EOF state
- Return: AX = status
- 0000h successful
- BX = old value (0000h disabled, 0001 enabled except for timeout)
- SeeAlso: AX=FF96h
- --------D-2B---------------------------------
- INT 2B - DOS 2+ - RESERVED
- Note: this vector is not used in MS-DOS versions <= 6.22, and points at an
- IRET instruction
- --------D-2B---------------------------------
- INT 2B - IBM ROM-DOS v4.0 - ???
- AH = function
- 00h ??? (modifies data in IBMBIO.COM)
- 01h internal operations
- 02h ???
- AL = index (00h-0Ch)
- Return: AX = ??? or (CMOS 2Dh and CMOS 2Eh)
- 03h get ??? data
- Return: AX = (CMOS 2Dh and CMOS 2Eh)
- BX = FFFFh
- other does nothing
- Note: function 03h is called by ROMSHELL.COM; if BX != 0, then the ES:DI from
- INT 2F/AX=1982h points at valid data
- SeeAlso: INT 2F/AX=1982h
- --------D-2C---------------------------------
- INT 2C - DOS 2+ - RESERVED
- Note: this vector is not used in DOS versions <= 6.00, and points at an IRET
- --------O-2C---------------------------------
- INT 2C - STARLITE architecture - KERNEL API
- Note: STARLITE is an architecture by General Software for a series of MS-DOS
- compatible operating systems (OEM DOS, NETWORK DOS, and SMP DOS) to
- be released in 1991. The interrupt number is subject to change
- before the actual release.
- --------m-2C---------------------------------
- INT 2C R - Cloaking - CALL PROTECTED-MODE PASSALONG CHAIN
- Notes: when this interrupt is invoked in V86 mode, RM386 will invoke the first
- in a chain of protected-mode handlers, and will only pass execution
- to the V86-mode INT 2C handler if none of the handlers in the
- passalong chain handle the call instead. This is the method by which
- the real-mode stub of a cloaked application communicates with the
- protected-mode portion.
- the cloaking host calls the passalong chain with EAX=58494E33h ('WIN3')
- when MS Windows starts up and with EAX=334E4958h ('3NIW') when
- Windows shuts down; between these two broadcasts, the additional
- Windows-only Cloaking services are available
- this function was first introduced with RM386 (RAM-MAN/386) v6.00, the
- memory manager included in Helix Software's Netroom
- SeeAlso: INT 2C/AX=0009h,INT 2F/AX=4310h"Cloaking"
- --------m-2C0000-----------------------------
- INT 2C P - Cloaking - ALLOCATE GDT SELECTOR
- AX = 0000h
- EBX = base address
- CL = access mode byte
- CH = extended access mode byte (omit limit field)
- EDX = segment limit
- Return: CF clear if successful
- AX = selector
- CF set on error
- AX = error code (see #02556)
- Notes: this INT 2C interface is used by Netroom's DPMI.EXE v3.00
- to access extended memory, set the base address to the desired
- physical address plus 400000h (4M)
- this function was first introduced with RM386 (RAM-MAN/386) v6.00, the
- memory manager included in Helix Software's Netroom
- SeeAlso: AX=0001h,AX=0002h,AX=0003h,AX=0004h,AX=0005h,INT 31/AH=57h,#00501
- (Table 02556)
- Values for Cloaking error code:
- 0001h no more selectors
- 0002h not a GDT ring 0 selector
- 0003h invalid selector (out of range, not user selector)
- 0004h selector not allocated
- --------m-2C0001-----------------------------
- INT 2C P - Cloaking - FREE GDT SELECTOR
- AX = 0001h
- SI = selector
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02556)
- Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
- SeeAlso: AX=0000h,INT 2F/AX=4310h"Cloaking"
- --------m-2C0002-----------------------------
- INT 2C P - Cloaking - SET SEGMENT BASE ADDRESS
- AX = 0002h
- SI = selector
- EBX = new physical base addres
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02556)
- Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
- SeeAlso: AX=0000h,AX=0003h,AX=0004h,INT 31/AX=0007h,#00501
- --------m-2C0003-----------------------------
- INT 2C P - Cloaking - SET SEGMENT LIMIT
- AX = 0003h
- SI = selector
- EBX = new limit
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02556)
- Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
- SeeAlso: AX=0000h,AX=0002h,AX=0004h,INT 31/AX=0008h
- --------m-2C0004-----------------------------
- INT 2C P - Cloaking - SET SEGMENT ACCESS MODE
- AX = 0004h
- SI = selector
- CL = new access mode byte (see #00502)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02556)
- Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
- SeeAlso: AX=0000h,AX=0002h,AX=0003h,AX=0005h,INT 31/AX=0009h
- --------m-2C0005-----------------------------
- INT 2C P - Cloaking - SET SEGMENT EXTENDED ACCESS MODE
- AX = 0005h
- SI = selector
- CL = new extended access mode byte (limit field ignored) (see #02557)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02556)
- Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
- SeeAlso: AX=0000h,AX=0002h,AX=0003h,AX=0004h,INT 31/AX=0009h
- Bitfields for extended access mode byte:
- Bit(s) Description (Table 02557)
- 7 4K granularity instead of byte granularity
- 6 32-bit code segment
- 5 reserved (0)
- 4 segment available to system
- SeeAlso: #00505
- --------m-2C0006-----------------------------
- INT 2C P - Cloaking - GET PROTECTED-MODE INTERRUPT VECTOR
- AX = 0006h
- CL = vector (00h-7Fh)
- Return: CF clear
- DX:EBX -> current interrupt handler
- Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
- SeeAlso: AX=0007h,INT 31/AX=0204h
- --------m-2C0007-----------------------------
- INT 2C P - Cloaking - SET PROTECTED-MODE INTERRUPT VECTOR
- AX = 0007h
- CL = vector (00h-7Fh)
- DX:EBX -> interrupt handler
- Return: CF clear
- Notes: this function was first introduced with RM386 (RAM-MAN/386) v6.00
- the IDT entry's type remains unchanged
- SeeAlso: AX=0006h,INT 31/AX=0205h
- --------m-2C0008-----------------------------
- INT 2C P - Cloaking - GET PASSALONG ADDRESS
- AX = 0008h
- Return: CF clear
- DX:EBX = current passalong address
- Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
- SeeAlso: AX=0009h,AX=002Ch,INT 2F/AX=4310h"Cloaking"
- --------m-2C0009-----------------------------
- INT 2C P - Cloaking - SET PASSALONG ADDRESS
- AX = 0009h
- DX:EBX = new value for passalong address (see #02558)
- Return: CF clear
- Notes: when an INT 2C instruction is executed in V86 mode, the Cloaking host
- calls the passalong address. The handler should check whether the
- upcall is of interest to it, and if not it should jump to the old
- passalong address (retrieved with AX=0008h before the handler was
- installed). The final handler should return with CF clear to cause
- the interrupt to be reflected back to V86 mode if none of the
- passalong handlers is triggered
- this function was first introduced with RM386 (RAM-MAN/386) v6.00
- SeeAlso: AX=0008h,AX=002Dh,INT 2C"PASSALONG CHAIN"
- (Table 02558)
- Values Cloaking passalong address is called with:
- EAX = CS:IP of byte following INT 2C instruction invoking passalong
- SS:EBX -> caller registers (see #02559)
- CF clear
- others undefined
- Return: CF clear: pass along to V86-mode INT 2C handler
- CF set: return immediately to V86 mode
- Format of Cloaking caller registers:
- Offset Size Description (Table 02559)
- 00h DWORD EDI
- 04h DWORD ESI
- 08h DWORD EBP
- 0Ch DWORD reserved (ESP from PUSHAD instruction)
- 10h DWORD EBX
- 14h DWORD EDX
- 18h DWORD ECX
- 1Ch DWORD EAX
- 20h DWORD error code
- 24h DWORD EIP
- 28h WORD CS
- 2Ah WORD padding
- 2Ch DWORD EFLAGS
- 30h DWORD ESP
- 34h WORD SS
- 36h WORD padding
- --remainder not available if protected-mode ring3 trap---
- 38h WORD ES
- 3Ah WORD padding
- 3Ch WORD DS
- 3Eh WORD padding
- 40h WORD FS
- 42h WORD padding
- 44h WORD GS
- 46h WORD padding
- --------m-2C000A-----------------------------
- INT 2C P - Cloaking - GET BASE ADDRESS OF GDT SELECTOR
- AX = 000Ah
- SI = selector
- Return: CF clear if successful
- EBX = segment base address
- CF set on error
- AX = error code (see #02556)
- Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00, the
- memory manager included in Helix Software's Netroom
- SeeAlso: AX=0000h,AX=0002h,AX=000Bh
- --------m-2C000B-----------------------------
- INT 2C P - Cloaking - GET SELECTOR LIMIT
- AX = 000Bh
- SI = selector
- Return: CF clear if successful
- EBX = segment base address
- CF set on error
- AX = error code (see #02556)
- Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
- SeeAlso: AX=000Ah,INT 2F/AX=4310h"Cloaking"
- --------m-2C---------------------------------
- INT 2C P - RM386 v6.00 - CLOAKING - RESERVED FOR CLOAKED BIOS USE UNDER WINDOWS
- AX = function (000Ch-001Fh)
- --------m-2C000F-----------------------------
- INT 2C P - Cloaking v1.01 - "Simulate_Shell_Event"
- AX = 000Fh
- ECX = event code (see #02560)
- DX = subfunction for event
- EDX high word = boost value (see #02561)
- SI:EDI -> completion procedure
- Return: CF clear if successful (event scheduled)
- CF set on error
- Note: this function is only available while MS Windows is running
- SeeAlso: AX=0011h,AX=0012h,INT 2F/AX=1605h,INT 2F/AX=4310h"Cloaking"
- (Table 02560)
- Values for Cloaking shell event code:
- 0414h Hot key event
- subevent 0000h: Alt-Space
- subevent 0001h: Alt-Enter
- subevent 0002h: Dir-VM
- 0415h Switch context
- subevent 0000h for DOS VM context, nonzero for System VM context
- 0416h Clipboard event
- 0417h Termination event
- subevent 0000h for normal termination, nonzero for error
- 0418h Display message
- subevent 0000h for normal message, nonzero for system model ASAP
- 0419h Crash
- 041Ah Paste complete
- subevent 0000h: normal
- subevent 0001h: cancelled by user
- subevent 0002h: cancelled
- 041Bh Contention event
- 041Ch Screen switch
- subevent 0000h: forward
- subevent 0001h: back
- 041Dh Filesystem change
- 041Eh Check Focus
- 041Fh Panic
- Bitfields for boost value:
- Bit(s) Description (Table 02561)
- 0 boost system VM until focus changes
- 1 boost system VM on Switcher screen
- 2 boost system VM until response
- 3 boost system VM during clipboard activity
- 4 boost system VM during print screen
- 5 boost system VM during update
- --------m-2C0011-----------------------------
- INT 2C P - Cloaking v1.01 - "Switch_VMs_and_Call_back"
- AX = 0011h
- EBX = handle of VM to be made active
- SI:EDI -> 32-bit FAR completion procedure
- Return: CF clear if successful (scheduled)
- CF set on error
- Notes: this function is only available while MS Windows is running
- the completion procedure is called with CF clear if the specified
- VM has been made active, or with CF set on error
- SeeAlso: AX=000Fh,AX=0012h
- --------m-2C0012-----------------------------
- INT 2C P - Cloaking v1.01 - "Query_Current_VM"
- AX = 0012h
- Return: CF clear
- EBX = handle of active VM
- ESI = handle of system VM
- ECX = VM status flags (see #02562)
- EDX = shell flags (see #02563)
- Note: this function is only available while MS Windows is running in enhanced
- mode
- SeeAlso: AX=000Fh,AX=0011h,AX=0013h
- Bitfields for VM status flags:
- Bit(s) Description (Table 02562)
- 0 in exclusive mode
- 1 runs in background
- 2 being created
- 3 suspended
- 4 not executable
- 5 executing in protected mode
- 6 contains PM application
- 7 32-bit PM application
- 8 called from VxD
- 9 high priority background
- 10 blocked on semaphore
- 11 awakening
- 12 has pageable V86
- 13 has locked V86
- 14 is scheduled
- 15 idle
- 16 closing
- Bitfields for shell flags:
- Bit(s) Description (Table 02563)
- 2 windowed
- 5 Alt-Tab reserved
- 6 Alt-Esc reserved
- 7 Alt-Space reserved
- 8 Alt-PrtSc reserved
- 9 Alt-Enter reserved
- 10 Alt-PrtSc reserved
- 11 PrtSc reserved
- 12 polling enabled
- 13 no HMA
- 14 has shortcut key
- 15 locked EMS handles
- 16 locked XMS handles
- 17 fast paste enabled
- 18 locked V86 memory
- 30 close-on-exit enabled
- --------m-2C0013-----------------------------
- INT 2C P - Cloaking v1.01 - "Issue_System_Modal_Message"
- AX = 0013h
- EDX = message box flags (see #02564)
- DS:ECX -> ASCIZ message text
- DS:EDI -> ASCIZ caption
- Return: CF clear
- EAX = response code
- Note: this function is only available while MS Windows is running in enhanced
- mode
- SeeAlso: AX=000Fh,AX=0012h
- Bitfields for message box flags:
- Bit(s) Description (Table 02564)
- 3-0 response codes (see #02565)
- 7-4 icon codes
- 1 = Warning hand
- 2 = exclamation mark
- 4 = asterisk
- 9-8 default response (0 = first button, 1 = second, 2 = third)
- 12 message is system model
- 15 don't change focus
- 29 hang with interrupts enabled
- 30 do not window
- 31 execute ASAP
- (Table 02565)
- Values for response codes:
- 00h OK
- 01h OK, Cancel
- 02h Abort, Retry, Ignore
- 03h Yes, No, Cancel
- 04h Yes, No
- 05h Retry, Cancel
- --------m-2C001D-----------------------------
- INT 2C P - Cloaking v1.01 - GET INT 2C API HANDLER ENTRY POINT
- AX = 001Dh
- Return: CF clear
- DX:EBX = selector:offset of Cloaking host INT 2C handler
- Desc: get the Cloaking host's entry point to bypass any other programs
- which may have hooked INT 2C in protected mode
- Note: the returned entry point must be called with a simulated INT, i.e.
- a PUSHD must precede the far call to the handler
- SeeAlso: INT 2F/AX=4310h"Cloaking"
- --------m-2C001E-----------------------------
- INT 2C P - Cloaking v1.01 - CLEAR CRITICAL SECTION
- AX = 001Eh
- Return: CF clear
- Desc: allow MS Windows to switch to another VM after having prevented it
- by invoking a critical section
- SeeAlso: AX=001Fh,INT 15/AX=101Ch,INT 2F/AX=1682h
- --------m-2C001F-----------------------------
- INT 2C P - Cloaking v1.01 - SET CRITICAL SECTION
- AX = 001Fh
- Return: CF clear
- Desc: prevent MS Windows from switching to another VM
- SeeAlso: AX=001Eh,INT 15/AX=101Bh,INT 2F/AX=1681h
- --------m-2C0020-----------------------------
- INT 2C P - Cloaking - GET SIZE OF PROTECTED-MODE STATE
- AX = 0020h
- Return: EAX = number of bytes required for storing state
- Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
- SeeAlso: AX=0021h,AX=0022h
- --------m-2C0021-----------------------------
- INT 2C P - Cloaking - SAVE PROTECTED-MODE STATE
- AX = 0021h
- ES:EDI -> buffer for protected-mode state
- Return: CF clear
- buffer filled
- Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
- SeeAlso: AX=0020h,AX=0022h
- --------m-2C0022-----------------------------
- INT 2C P - Cloaking - RESTORE PROTECTED-MODE STATE
- AX = 0022h
- DS:ESI -> buffer containing previously-saved protected-mode state
- Return: CF clear if successful
- state restored
- CF set on error (invalid buffer contents)
- Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
- SeeAlso: AX=0020h,AX=0021h
- --------m-2C0023-----------------------------
- INT 2C P - Cloaking - ISSUE PROTECTED-MODE XMS CALL
- AX = 0023h
- Notes: not currently implemented--NOP in RM386 v6.00
- this function was first introduced with RM386 (RAM-MAN/386) v6.00
- --------m-2C0024-----------------------------
- INT 2C P - Cloaking - SET V86-MODE STACK
- AX = 0024h
- DX:EBX = new value for V86-mode SS:ESP
- Return: nothing
- Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
- --------m-2C0025-----------------------------
- INT 2C P - Cloaking - CALL V86-MODE PROCEDURE
- AX = 0025h
- DS:EBX -> client register structure (see #02559)
- Return: CF clear if successful
- client register structure updated
- CF set if no more nested procedure call space available
- Notes: this call uses the V86-mode stack supplied in the client structure, and
- calls the routine specified by CS:IP in the client structure
- this function was first introduced with RM386 (RAM-MAN/386) v6.00
- SeeAlso: AX=0026h,AX=0027h,INT 31/AX=0301h
- --------m-2C0026-----------------------------
- INT 2C P - Cloaking - CALL V86-MODE INTERRUPT HANDLER
- AX = 0026h
- DS:EBX -> client register structure (see #02559)
- CX = interrupt number
- Return: CF clear if successful
- client register structure updated
- CF set if no more nested procedure call space available
- Notes: this call uses the V86-mode stack supplied in the client structure
- this function was first introduced with RM386 (RAM-MAN/386) v6.00
- SeeAlso: AX=0025h,AX=0027h,INT 31/AX=0300h
- --------m-2C0027-----------------------------
- INT 2C P - Cloaking - CHAIN TO V86-MODE INTERRUPT HANDLER
- AX = 0027h
- DS:EBX -> client register structure (see #02559)
- Return: CF clear if successful
- client register structure updated
- CF set if no more nested procedure call space available
- Notes: this call uses the V86-mode stack supplied in the client structure,
- and jumps to the address specified by CS:IP in the client structure
- this function was first introduced with RM386 (RAM-MAN/386) v6.00
- SeeAlso: AX=0025h,AX=0026h
- --------m-2C0028-----------------------------
- INT 2C P - Cloaking - GET ESP0 FROM TSS
- AX = 0028h
- Return: CF clear
- EAX = TSS's ESP0
- Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00, the
- memory manager included in Helix Software's Netroom
- --------m-2C0029-----------------------------
- INT 2C P - Cloaking - SET SECONDARY STACK
- AX = 0029h
- DX:EBX = new value for SS:ESP of ring 3 secondary stack
- Return: CF clear
- Desc: inform RM386 of the ring 3 interrupt stack location
- Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
- --------m-2C002A-----------------------------
- INT 2C P - Cloaking - SET 8259 IRQ BASE VECTORS
- AX = 002Ah
- BL = base vector of master interrupt controller
- CL = base vector of slave interrupt controller
- Notes: this call merely informs RM386 that the caller has changed the
- interrupt mappings
- this function was first introduced with RM386 (RAM-MAN/386) v6.00
- SeeAlso: INT 67/AX=DE0Bh
- --------m-2C002BCH81-------------------------
- INT 2C P - Cloaking - PROTECTED-MODE VIRTUAL DMA SERVICES
- AX = 002Bh
- CH = 81h
- CL = subfunction (02h-0Ch)
- other registers as appropriate for subfunction
- Return: varies by function
- CF set on error
- Notes: these functions are equivalent to the INT 4B/AX=81xxh subfunctions
- with the same numbers
- this function was first introduced with RM386 (RAM-MAN/386) v6.00
- SeeAlso: INT 4B/AX=8102h,INT 4B/AX=810Ch
- --------m-2C002C-----------------------------
- INT 2C P - Cloaking - GET PORT-TRAPPING PASSALONG
- AX = 002Ch
- Return: CF clear
- DX:EBX = current I/O trapping passalong address
- Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
- SeeAlso: AX=0008h,AX=002Dh
- --------m-2C002D-----------------------------
- INT 2C P - Cloaking - SET PORT-TRAPPING PASSALONG
- AX = 002Dh
- DX:EBX = new I/O trapping passalong address (see #02566)
- Return: CF clear
- Notes: RM386 calls the passalong address whenever an access to a monitored
- I/O port is attempted; the handler should check whether it is a port
- that it is interested in, and if not call the previous passalong
- address (which was retrieved with AX=002Ch before installing the
- new handler)
- this function was first introduced with RM386 (RAM-MAN/386) v6.00
- SeeAlso: AX=0009h,AX=002Ch,INT 67/AX=5DEAh
- (Table 02566)
- Values Cloaking port-trapping passalong address is called with:
- EAX = CS:IP of faulting instruction (unless executing in protected-mode
- ring 3)
- SS:EBX -> caller register structure (see #02559)
- check EFLAGS V86-mode bit for type
- CX = first two bytes of I/O instruction which was trapped
- DX = port to which I/O is being performed
- CF clear
- Return: CF clear if RM386 should perform I/O operation
- CF set if I/O should be skipped
- Note: RM386 skips the trapped I/O instruction, so the passalong handler
- should not modify the client CS:EIP
- --------m-2C002E-----------------------------
- INT 2C P - Cloaking - TRAP I/O PORT
- AX = 002Eh
- DX = port number to trap
- Return: CF clear if successful
- CF set on error (port out of range or reserved)
- Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
- SeeAlso: AX=002Fh,AX=0030h
- --------m-2C002F-----------------------------
- INT 2C PU - Cloaking - UNTRAP I/O PORT
- AX = 002Fh
- DX = port number for which to cancel trapping
- Return: CF clear if successful
- CF set on error (port out of range or reserved)
- Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
- SeeAlso: AX=002Eh,AX=0030h
- --------m-2C0030-----------------------------
- INT 2C PU - Cloaking - GET TRAPPING STATE OF SPECIFIED PORT
- AX = 0030h
- DX = port number
- Return: CF clear if successful
- BX = current state (0000h not trapped, 0001h trapped)
- CF set on error (port out of range or reserved)
- Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
- SeeAlso: AX=002Eh,AX=002Fh
- --------m-2C0031-----------------------------
- INT 2C PU - RM386 v6.00 - BUG
- AX = 0031h
- Program: RM386 (RAM-MAN/386) is the memory manager included in Helix
- Software's Netroom
- Note: due to a fencepost error, RM386 v6.00 will branch unpredictably if
- invoked with this function
- --------m-2C0031-----------------------------
- INT 2C P - Cloaking v1.01 - ALLOCATE V86 CALLBACK
- AX = 0031h
- DX:EBX = CS:EIP of protected-mode routine to be invoked by callback
- Return: CF clear if successful
- EBX = CS:IP of V86-mode callback handler
- CF set on error
- SeeAlso: AX=0032h
- --------m-2C0032-----------------------------
- INT 2C P - Cloaking v1.01 - FREE V86 CALLBACK
- AX = 0032h
- EBX = CS:IP of V86-mode callback handler
- Return: CF clear if successful
- CF set on error
- AX = error code
- 0005h invalid callback address
- 0006h callback already free
- SeeAlso: AX=0032h
- --------m-2C0033-----------------------------
- INT 2C P - Cloaking v1.01 - REGISTER CLOAKING CLIENT
- AX = 0033h
- DS:EDX -> client registration structure (see #02567)
- Return: CF clear if successful
- CF set on error (linked list corrupt)
- SeeAlso: AX=0034h,#02778 at INT 2F/AX=4310h"Cloaking"
- Format of client registration structure:
- Offset Size Description (Table 02567)
- 00h PWORD link to next structure
- 06h PWORD link to previous structure
- 0Ch 2 BYTEs client version (major, minor)
- 0Eh 20 BYTEs client name
- 22h DWORD physical address of client start
- 26h DWORD client's total size in bytes
- Note: the link area should not be modified once the structure has been
- used for the registration call
- --------m-2C0034-----------------------------
- INT 2C P - Cloaking v1.01 - UNREGISTER CLOAKING CLIENT
- AX = 0034h
- DS:EDX -> client registration structure (see #02567)
- Return: CF clear if successful
- CF set on error (linked list corrupt)
- Note: the client must unregister before freeing the XMS block containing
- its registration structure(s)
- SeeAlso: AX=0033h,#02778 at INT 2F/AX=4310h"Cloaking"
- --------D-2D---------------------------------
- INT 2D - DOS 2+ - RESERVED
- Note: this vector is not used in DOS versions <= 6.00, and points at an IRET
- BUG: RM386 v6.00-6.02 (as distributed with Helix's Netroom v3.x) contains
- a stack bug in its protected-mode INT 2D handler which causes a crash
- when INT 2D is invoked from V86 mode
- --------t-2D---------------------------------
- INT 2D - ALTERNATE MULTIPLEX INTERRUPT SPECIFICATION (AMIS) [v3.6]
- AH = multiplex number
- AL = function
- 00h installation check
- 01h get private entry point
- 02h uninstall
- 03h request popup
- 04h determine chained interrupts
- 05h get hotkey list
- 06h get device-driver information
- 07h-0Fh reserved for future enhancements
- Return: AL = 00h (not implemented)
- other application-dependent
- other registers vary by function (also see individual entries below)
- Return: varies by function
- Notes: programs should not use fixed multiplex numbers; rather, a program
- should scan all multiplex numbers from 00h to FFh, remembering the
- first unused multiplex in case the program is not yet installed.
- For multiplex numbers which are in use, the program should compare
- the first 16 bytes of the signature string to determine whether it
- is already installed on that multiplex number. If not previously
- installed, it should use the first free multiplex number.
- functions other than 00h are not valid unless a program is installed
- on the selected multiplex number
- to be considered fully compliant with version 3.6 of the specification,
- programs must implement at least functions 00h, 02h (no resident
- uninstall code required), and 04h (return value 04h). TSRs that
- provide hotkeys with which the user can activate them must also
- implement function 05h. TSRs which provide DOS device drivers must
- also implement function 06h. The absolute minimum fully-compliant
- implementation has an overhead of 64 bytes (80 bytes with function
- 05h) plus 22 bytes per hooked interrupt (for the interrupt sharing
- protocol header and hook list entry).
- the signature string and description may be used by memory mappers
- to display the installed programs
- to be considered fully compliant, users of this specification must
- adhere to the IBM interrupt sharing protocol (see #02568), which will
- permit removal of TSRs in arbitrary order and interrupt handler
- reordering. All TSRs following this specification should be
- removable unless they are loaded from CONFIG.SYS, though they need
- not keep the code for removing themselves resident; it is acceptable
- for a separate program to perform the interrupt unhooking and
- memory-freeing steps of removal.
- A sample public-domain implementation including example TSRs and
- utility programs may be found in a separate package distributed as
- AMISLnnn.ZIP (AMISL092.ZIP as of this writing).
- Please let me know if you choose to follow this proposal. The
- signature and a list of the private API calls you use would be
- appreciated, as well.
- SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=04h
- SeeAlso: INT 2D/AL=05h,INT 2D/AL=06h,INT 2F"NOTES"
- Format of interrupt sharing protocol interrupt handler entry point:
- Offset Size Description (Table 02568)
- 00h 2 BYTEs short jump to actual start of interrupt handler, immediately
- following this data block (EBh 10h)
- 02h DWORD address of next handler in chain
- 06h WORD signature 424Bh
- 08h BYTE EOI flag
- 00h software interrupt or secondary hardware interrupt handler
- 80h primary hardware interrupt handler (will issue EOI)
- 09h 2 BYTEs short jump to hardware reset routine
- must point at a valid FAR procedure (may be just RETF)
- 0Bh 7 BYTEs reserved (0) by IBM for future expansion
- Note: when chaining to the prior handler, the interrupt handler must perform
- an indirect jump/call using the address at offset 02h in the
- ISP header. This permits another AMIS TSR to hook itself into
- the chain at a position other than as the first handler to receive
- an interrupt.
- SeeAlso: INT F1/AH=01h"Common ISDN API",INT F1/AH=06h"CAPI",#04068
- --------t-2D--00-----------------------------
- INT 2D - AMIS v3.0+ - INSTALLATION CHECK
- AL = 00h
- AH = multiplex number for program
- Return: AL = 00h if free
- AL = FFh if multiplex number in use
- CX = binary version number (CH = major, CL = minor)
- DX:DI -> signature string (see #02569) identifying the program
- using the multiplex number
- SeeAlso: INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=04h,INT 2D/AL=05h
- SeeAlso: INT 2D/AL=06h
- Index: installation check;Alternate Multiplex Interrupt Specification
- Index: installation check;AMIS|installation check;FASTMOUS
- Index: installation check;SPELLER|installation check;Monitor
- Index: installation check;NOLPT|installation check;NOTE
- Index: installation check;RBkeyswp|installation check;SWITCHAR
- Index: installation check;VGABLANK|installation check;EATMEM
- Index: installation check;RECALL|installation check;XPTR2
- Format of AMIS signature string:
- Offset Size Description (Table 02569)
- 00h 8 BYTEs blank-padded manufacturer's name (possibly abbreviated)
- 08h 8 BYTEs blank-padded product name
- 10h 64 BYTEs ASCIZ product description (optional, may be a single 00h)
- Note: it is not necessary to reserve a full 64 bytes for the description,
- just enough to store the actual ASCIZ string
- SeeAlso: #02570
- (Table 02570)
- Values for AMIS signatures known to be in use:
- 'Byrial J' 'EKLAVO ' permits keyboard entry of Esperanto accented letters
- 'CoveSoft' 'Burnout+' shareware screen saver Burnout Plus
- 'Crynwr ' 'SPELLER ' TSR spelling-checker
- 'CPH1995 ' 'CDTSR ' resident CD-Audio player
- 'CPH1996 ' 'DSAPI '
- 'CSJewell' 'Modula3L' Curtis Jewell's Modula-3 compiler (non-TSR)
- 'DAISYCHA' 'INDRIVER' Advanced Parallel Port daisy chain driver (vendor name
- in product description field, if desired)
- (see also INT 2D/AL=DCh)
- 'DTown SD' 'DTU ' DTown Software Development's DTown Utilities
- (see also INT 2D/AL=20h)
- 'ECLIPSE ' 'PLUMP ' Eclipse Software's printer and plotter spooler
- 'GraySoft' 'GIPC ' GraySoft's Inter-Process Communications driver
- 'heathh ' 'Monitor '
- 'Helge O ' TSRs by Helge Olav Helgesen
- 'J. Berry' 'RATSR ' RemoteAccess Network Manager workstation module
- 'JWB ' 'RAMLIGHT' James Birdsall's on-screen RAMdisk activity indicator
- 'M Better' 'iHPFS ' Marcus Better's HPFS filesystem driver for DOS
- 'M. Paul ' 'FREEVER ' DOS version-faking TSR by Matthias Paul
- 'Nildram ' 'ST ' Screen Thief graphics screen grabber
- 'Pino Nav' 'ALTMENU ' activate any program's menu bar by pressing Alt key
- 'Pino Nav' 'Keybit ' Pino Navato's KEYBIT Lite Italian keyboard driver v4+
- 'PowrQuot' 'CAPRILOG'
- 'PowrQuot' 'CAPRITSR'
- 'PowrQuot' 'CAPRIWIN'
- 'R-Ware ' 'dLite ' run-time data decompression TSR
- 'Ralf B ' 'disaXXYY' RBdisabl -- disable key scancode XX w/ shift states YY
- 'Ralf B ' 'DUALVGA ' dual-VGA support, screen blanker, and DPMS driver
- 'Ralf B ' 'FASTMOUS' example TSR included with sample AMIS library code
- 'Ralf B ' 'NoBreak ' disable Ctrl-@, Ctrl-C, and Ctrl-Break keys
- 'Ralf B ' 'NOLPT n ' example TSR -- turn LPTn into bit-bucket
- 'Ralf B ' 'NOTE ' example TSR -- popup note-taker
- 'Ralf B ' 'RBclock ' RBclock -- on-screen real-time clock
- 'Ralf B ' 'RBclockE' RBclock -- on-screen elapsed-time clock
- 'Ralf B ' 'RBdvorak' Dvorak keyboard mapping w/ opt Esc/~, LCtrl/CapsLk swap
- 'Ralf B ' 'RBkcount' display count of keystrokes on screen
- 'Ralf B ' 'RBkeyswp' RBkeyswap v3.0+ -- swap Esc/~ and LCtrl/CapsLock keys
- 'Ralf B ' 'RBnoboot' disable Ctrl-Alt-Del key combination
- 'Ralf B ' 'ShftCaps' require Shift-CapsLock to turn on CapsLock
- 'Ralf B ' 'ShftNumL' require Shift-NumLock to turn off NumLock
- 'Ralf B ' 'SWITCHAR' example TSR -- add switchar() support removed from DOS5
- 'Ralf B ' 'VGABLANK' VGA-only screen blanker
- 'Ralf B ' 'WINTAME ' yield CPU when program in Win95 DOS box is idle
- 'Sally IS' 'Mdisk ' removeable, resizeable RAMdisk
- 'Sally IS' 'Scr2Tex ' screen dumper with output in (La)Tex format
- 'SRT ' 'STOPBOOT' reboot preventer by Steve Talbot
- 'Thaco ' 'NEST ' Eirik Pedersen's programmer's delimiter matcher
- 'TifaWARE' 'EATMEM ' George A. Theall's public domain memory restrictor for
- testing programs (v1.1+)
- 'TifaWARE' 'RECALL ' public domain commandline editor and history (v1.2+)
- 'Todd ' 'XPTR2 ' PC-to-Transputer interface by Todd Radel
- 'WlkngOwl' 'NoiseSYS' NOISE.SYS random-number generator
- SeeAlso: #02569
- --------t-2D--01-----------------------------
- INT 2D - AMIS v3.0+ - GET PRIVATE ENTRY POINT
- AL = 01h
- AH = multiplex number for program
- Return: AL = 00h if all API calls via INT 2D
- AL = FFh if entry point supported
- DX:BX -> entry point for bypassing interrupt chain
- Note: this function is not valid unless a program is installed on the
- specified multiplex number; use INT 2D/AL=00h to check
- SeeAlso: INT 2D/AL=00h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=04h,INT 2D/AL=05h
- SeeAlso: INT 2D/AL=06h
- Index: entry point;Alternate Multiplex Interrupt|entry point;AMIS
- --------t-2D--02-----------------------------
- INT 2D - AMIS v3.0+ - UNINSTALL
- AL = 02h
- AH = multiplex number for program
- DX:BX = return address for successful uninstall (may be ignored by TSR)
- Return: AL = status
- 00h not implemented (makes TSR non-compliant with specification)
- 01h unsuccessful
- 02h can not uninstall yet, will do so when able
- 03h safe to remove, but no resident uninstaller
- (TSR still enabled)
- BX = segment of memory block with resident code
- 04h safe to remove, but no resident uninstaller
- (TSR now disabled)
- BX = segment of memory block with resident code
- 05h not safe to remove now, try again later
- 06h disabled, but can not be removed from memory
- because loaded from CONFIG.SYS
- 07h safe to remove, but no resident device-driver
- uninstaller. Caller must unlink device
- drivers from DOS device chain as well as
- unhooking interrupts and freeing memory
- BX = segment of memory block with resident code
- FFh successful
- return at DX:BX with AX destroyed if successful and TSR honors
- specific return address
- Note: this function is not valid unless a program is installed on the
- specified multiplex number; use INT 2D/AL=00h to check
- SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=03h,INT 2D/AL=04h,INT 2D/AL=05h
- SeeAlso: INT 2D/AL=06h
- Index: uninstall;Alternate Multiplex Interrupt Specification|uninstall;AMIS
- --------t-2D--03-----------------------------
- INT 2D - AMIS v3.0+ - REQUEST POP-UP
- AL = 03h
- AH = multiplex number for program
- Return: AL = status
- 00h not implemented or TSR is not a pop-up
- 01h can not pop up at this time, try again later
- 02h can not pop up yet, will do so when able
- 03h already popped up
- 04h unable to pop up, user intervention required
- BX = standard reason code
- 0000h unknown failure
- 0001h interrupt chain passes through memory
- which must be swapped out to pop up
- 0002h swap-in failed
- CX = application's reason code if nonzero
- FFh TSR popped up and was exited by user
- BX = return value
- 0000h no return value
- 0001h TSR unloaded
- 0002h-00FFh reserved
- 0100h-FFFFh application-dependent
- Note: this function is not valid unless a program is installed on the
- specified multiplex number; use INT 2D/AL=00h to check
- SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=04h,INT 2D/AL=05h
- SeeAlso: INT 2D/AL=06h
- --------t-2D--04-----------------------------
- INT 2D - AMIS v3.0+ - DETERMINE CHAINED INTERRUPTS
- AL = 04h
- AH = multiplex number for program
- BL = interrupt number (except 2Dh)
- Return: AL = status
- 00h not implemented (makes TSR non-compliant with specification)
- 01h (obsolete) unable to determine
- 02h (obsolete) interrupt hooked
- 03h (obsolete) interrupt hooked, address returned
- DX:BX -> TSR's interrupt BL handler
- 04h list of hooked interrupts returned
- DX:BX -> interrupt hook list (see #02571)
- FFh interrupt not hooked
- Notes: BL is ignored if the TSR returns AL=04h; in that case, the caller
- needs to scan the return list rather than making additional calls
- to this function. If the return is not 00h or 04h, then the caller
- must cycle through the remaining interrupt numbers it wishes to
- check.
- return values 01h through 03h may not be used by AMIS v3.6-compliant
- programs; they are included here solely for compatibility with
- version 3.3, though they were probably never used in any
- implementation
- for return values 01h through 03h, since INT 2D is known to be hooked,
- the resident code need not test for BL=2Dh (to minimize its size),
- and the return value is therefore undefined in that case.
- this function is not valid unless a program is installed on the
- specified multiplex number; use INT 2D/AL=00h to check
- SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=05h
- SeeAlso: INT 2D/AL=06h
- Format of AMIS interrupt hook list [array]:
- Offset Size Description (Table 02571)
- 00h BYTE interrupt number (last entry in array is 2Dh)
- 01h WORD offset within hook list's segment of the interrupt handler
- this will point at the initial short jump of the interrupt
- sharing protocol header (see #02568)
- SeeAlso: #02572
- --------t-2D--05-----------------------------
- INT 2D - AMIS v3.5+ - GET HOTKEYS
- AL = 05h
- AH = multiplex number for program
- Return: AL = status
- 00h not implemented
- FFh supported
- DX:BX -> hotkey list (see #02572)
- Notes: this function is not valid unless a program is installed on the
- specified multiplex number; use INT 2D/AL=00h to check
- programs which provide hotkeys are required to provide this function
- to be fully compliant with this specification
- SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=04h
- SeeAlso: INT 2D/AL=06h
- Format of AMIS hotkey list:
- Offset Size Description (Table 02572)
- 00h BYTE type of hotkey checking (see #02573)
- 01h BYTE number of hotkeys (may be zero if TSR can disable hotkeys)
- 02h 6N BYTEs array of hotkey definitions
- (one per hotkey, first should be primary hotkey)
- Offset Size Description
- 00h BYTE hotkey scan code (00h/80h if shift states only)
- hotkey triggers on release if bit 7 set
- 01h WORD required shift states (see #02574)
- 03h WORD disallowed shift states (see #02574)
- 05h BYTE hotkey flags (see #02575)
- Notes: except for bit 7, the shift states correspond exactly to the return
- values from INT 16/AH=12h. A set bit in the required states word
- indicates that the corresponding shift state must be active when the
- hotkey's scan code is received for the hotkey to be recognized; a
- clear bit means that the corresponding state may be ignored. A set
- bit in the disallowed shift states word indicates that the
- corresponding shift state must be inactive.
- for the disallowed-states word, if one of the "either" bits is set,
- then both the corresponding left bit and right bit must be set
- examples:
- Ctrl-Alt-Del monitoring: 53h 000Ch 0003h 06h
- Alt-key tap (DESQview): B8h 0000h 0007h 08h
- Shf-Shf-N (NOTE.COM): 31h 0003h 000Ch 00h
- Index: hotkeys;AMIS
- SeeAlso: #00006
- Bitfields for type of AMIS hotkey checking:
- Bit(s) Description (Table 02573)
- 0 checks before chaining INT 09
- 1 checks after chaining INT 09
- 2 checks before chaining INT 15/AH=4Fh
- 3 checks after chaining INT 15/AH=4Fh
- 4 checks on INT 16/AH=00h,01h,02h
- 5 checks on INT 16/AH=10h,11h,12h
- 6 checks on INT 16/AH=20h,21h,22h
- 7 reserved (0)
- SeeAlso: #02572
- Bitfields for AMIS shift states:
- Bit(s) Description (Table 02574)
- 0 right shift pressed
- 1 left shift pressed
- 2 either control key pressed
- 3 either Alt key pressed
- 4 ScrollLock active
- 5 NumLock active
- 6 CapsLock active
- 7 either shift key pressed
- 8 left control key pressed
- 9 left Alt key pressed
- 10 right control key pressed
- 11 right Alt key pressed
- 12 ScrollLock pressed
- 13 NumLock pressed
- 14 CapsLock pressed
- 15 SysReq key pressed
- Notes: if bit 2 is set, either control key may be pressed for the hotkey; if
- bits 8 and 10 are both set, then both control keys must be pressed.
- Similarly for bits 3 and 9/11, as well as 7 and 0/1.
- the SysReq key is often labeled SysRq
- SeeAlso: #02572,#02575
- Bitfields for AMIS hotkey flags:
- Bit(s) Description (Table 02575)
- 0 hotkey chained before processing
- 1 hotkey chained after processing
- 2 others should pass through this hotkey so that it can be monitored
- 3 hotkey will not activate if other keys pressed/released before hotkey
- press is completed
- 4 this key is remapped into some other key
- 5 this key is conditionally chained (sometimes passed on, sometimes
- swallowed)
- 6-7 reserved (0)
- SeeAlso: #02572,#02574
- --------t-2D--06-----------------------------
- INT 2D - AMIS v3.6 - GET DEVICE-DRIVER INFORMATION
- AL = 06h
- AH = multiplex number for program
- Return: AL = number of device driver headers supplied by prog.
- AH = device-driver flags (see #02576)
- DX:BX -> first device driver header (see #01646)
- Program: AMIS is the Alternate Multiplex Interrupt Specification promulgated
- by Ralf Brown
- Notes: if AL=00h, AH,BX,DX are meaningless and may be destroyed
- this function is not valid unless a program is installed on the
- specified multiplex number; use INT 2D/AL=00h to check
- programs which provide device drivers are required to support this
- function to be considered fully compliant with v3.6+ of the
- specification
- SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=04h
- SeeAlso: INT 2D/AL=05h
- Bitfields for AMIS device-driver information flags:
- Bit(s) Description (Table 02576)
- 0 program loaded from CONFIG.SYS, and thus can not be removed from memory
- (leave clear if unable to determine)
- 1 device driver headers have not been linked into DOS device chain
- 2 reentrant device driver(s)
- --------N-2D--10-----------------------------
- INT 2D - RATSR 2.0+ - GET STATUS
- AL = 10h
- AH = AMIS multiplex number for RATSR
- Return: AL = status
- 01h listening (no connection)
- 02h receiving \
- 03h sending > station being monitored
- 04h initializing receive /
- AH = keyboard lock status (00h unlocked, 01h locked)
- Program: RATSR is a utility by James Berry provided with
- RemoteAccess/Professional, a commercial bulletin board system, that
- allows remote control of a station over a network
- SeeAlso: INT 2D"AMIS"
- --------d-2D--10-----------------------------
- INT 2D - dLite 1.0+ - GET PARAMETER BLOCK ADDRESS
- AL = 10h
- AH = AMIS multiplex number for dLite
- Return: CF clear if successful
- ES:BX -> parameter block (see #02577)
- CF set on error
- Program: dLite is a shareware TSR by Rainer Schuetze which transparently
- expands compressed files when they are read
- SeeAlso: AL=11h"dLite",AL=12h"dLite",INT 21/AX=FEDCh"PCMANAGE"
- Format of dLite parameter block:
- Offset Size Description (Table 02577)
- 00h BYTE TSR flags (see #02578)
- 01h WORD maximum number of programs needing original filesize
- 03h WORD current number of programs needing original filesize
- 05h WORD maximum number of files that can be handled by dLite (should
- be the same as FILES= in CONFIG.SYS)
- 07h WORD offset (in the same segment as the parameter block) of the
- table of programs needing the original filesize (8 bytes
- each, without path or extension, uppercase, and zero \
- terminated if shorter than 8 bytes)
- Bitfields for dLite TSR flags:
- Bit(s) Description (Table 02578)
- 0 deny FCB access
- 1 dLite sleeping rather than activated
- 2 always indicate original filesize when reading directory entries,
- rather than only for specified programs
- 3-7 reserved
- SeeAlso: #02577
- --------V-2D--10-----------------------------
- INT 2D - Burnout Plus v3.00 - GET STATE/CONTROL INFORMATION
- AL = 10h
- AH = AMIS multiplex number for Burnout Plus
- Return: AL = 01h
- BX = Burnout Plus status (see #02579)
- CX = record of features loaded (see #02580)
- ES:DI -> Burnout Plus control structure (see #02581)
- Program: Burnout Plus is a DOS screen saver from Cove Software
- SeeAlso: INT 14/AX=AA01h,INT 2D"AMIS"
- Index: screen saver;Burnout Plus
- Bitfields for Burnout Plus status:
- Bit(s) Description (Table 02579)
- 0 screen is blanked
- 1 MS Windows is active (Burnout Plus deactivated)
- 2-15 reserved
- Bitfields for Burnout Plus features loaded/features enabled:
- Bit(s) Description (Table 02580)
- 0 mouse activity monitor
- 1 passkey support
- 2 password support
- 3 continuous clear
- 4 software blanking
- 5 video activity monitor
- 6 disk activity monitor
- 7 activating keystroke suppression
- SeeAlso: #02581
- Format of Burnout Plus control structure:
- Offset Size Description (Table 02581)
- 00h BYTE size of structure in bytes
- 01h WORD Burnout Plus version
- 03h WORD screen blanking reset count in clock ticks
- 05h WORD current countdown value in clock ticks
- 07h BYTE type of timeout specification
- 08h BYTE instant-blank hotkey
- 09h WORD extended status information (see #02582)
- the bits for password, passkey, and software blanking are
- ignored and cannot be enabled or disabled externally
- 0Bh WORD features enabled (see #02580)
- Note: all fields except the first two may be modified by external programs
- to affect the operation of Burnout Plus
- Index: hotkeys;Burnout Plus
- Bitfields for extended Burnout Plus status information:
- Bit(s) Description (Table 02582)
- 0 Burnout Plus disabled
- 1 force screen to blank on next clock tick
- 2 restore screen if currently blanked
- 3-15 reserved
- Note: 1 and 2 are automatically cleared by Burnout Plus after blanking
- or restoring the screen
- SeeAlso: #02581
- --------V-2D--10-----------------------------
- INT 2D U - Screen Thief v1.00 - FREE HIGH MEMORY BUFFERS
- AL = 10h
- AH = AMIS multiplex number for Screen Thief
- Return: nothing
- Program: Screen Thief is a graphics screen grabber
- Note: releases any code and data stored in EMS, DOS UMBs, or XMS UMBs, but
- does not release the low-memory stub; this may be used to effect a
- partial uninstall if INT 2D/AL=02h fails
- SeeAlso: INT D8"Screen Thief"
- --------i-2D--10-----------------------------
- INT 2D U - RAMLIGHT v1.0 - GET MONITORING INFORMATION
- AL = 10h
- AH = AMIS multiplex number for RAMLIGHT
- Return: ES:BX -> array of fake device driver headers used in monitoring
- CX = number of drives being monitored???
- --------U-2D--10-----------------------------
- INT 2D - DTown Utilities v1.40+ - EXTENDED API INSTALLATION CHECK
- AL = 10h
- Return: AL = FFh
- BL = extended API availability (00h no, 01h API is loaded)
- SeeAlso: INT 2D/AL=11h"DTown",INT 2D/AL=20h,INT 2D/AL=50h
- --------s-2D--10-----------------------------
- INT 2D - CDTSR - GET INTERNAL VARIABLE TABLE
- AL = 10h
- AH = AMIS multiplex number for CDTSR
- Return: CX:DX -> CDTSR internal variable structure (see #02583)
- Program: CDTSR is a resident audio CD player by Colin Hill
- SeeAlso: INT 2D/AL=11h"CDTSR",INT 2D/AL=12h"CDTSR",INT 2D/AL=13h"CDTSR"
- Format of CDTSR internal variable structure:
- Offset Size Description (Table 02583)
- 00h BYTE hotkey scan code (see #00006)
- 01h BYTE hotkey shift states
- 02h BYTE flag: repeat
- 03h BYTE flag: custom repeat
- 04h BYTE flag: background polling
- 05h DWORD (read-only) internal timing variable
- 09h DWORD current track play position, in frames
- 0Dh DWORD current disk play position, in frames
- 11h BYTE number of entries in track program
- 12h BYTE index into track program currently playing (FFh if not playing)
- 13h 100 BYTEs track program (each byte contains one track number)
- 77h BYTE saved cursor end scan line
- 78h BYTE saved cursor start scan line
- 79h BYTE currently playing track
- 7Ah BYTE CD driver media-change flag
- 7Bh WORD video base segment during last popup
- 7Dh WORD video page offset during last popup
- 7Fh BYTE currently-selected track
- 80h DWORD begin of custom repeat, in frames
- 84h DWORD end of custom repeat, in frames
- 88h WORD track program index of top list item
- --------K-2D--10-----------------------------
- INT 2D - KEYBIT Lite v5+ - GET POINTER TO STATUS BYTE
- AL = 10h
- AH = AMIS multiplex number for KEYBIT Lite
- Return: DX:BX -> status byte (see #02584)
- Program: KEYBIT Lite is an enhanced Italian keyboard driver by Pino Navato.
- SeeAlso: INT 2D"AMIS"
- Bitfields for KEYBIT Lite status byte:
- Bit(s) Description (Table 02584)
- 7 KEYBIT Lite active
- 6 E-mail support active
- 5-0 reserved
- Notes: E-mail support is one of the original features of KEYBIT Lite. It is
- the automatic conversion of the 8-bits ASCII chars produced by some
- keys available on Italian keyboards to couples of 7-bits chars.
- Message editors should always enable e-mail support, they should also
- restore its original status before exiting.
- The user can change both status bits by hotkeys.
- --------K-2D--10-----------------------------
- INT 2D - ALTMENU - GET POINTER TO KEY CODE
- AL = 10h
- AH = AMIS multiplex number for signature 'Pino Nav' 'ALTMENU '
- Return: DX:BX -> WORD key code to insert in keyboard buffer on Alt-key tap
- Program: Pino Navato's freeware ALTMENU permits activating the menu bar of
- any program by pressing the Alt key alone.
- Notes: The value in the key code word will be returned in AX by a call to
- INT 16/AH=00h after the Alt key is pressed by itself
- ALTMENU may be disabled by setting the key code equal to 0000h
- SeeAlso: INT 16/AH=00h,INT 2D"AMIS"
- --------d-2D--11-----------------------------
- INT 2D - dLite 1.0+ - CHECK FOR dPressed FILE AND GET ORIGINAL SIZE
- AL = 11h
- AH = AMIS multiplex number for dLite
- BX = file handle
- Return: CF clear if successful
- DX:AX = size of uncompressed file
- CF set on error (not dPressed file)
- SeeAlso: AL=10h"dLite",AL=12h"dLite"
- --------U-2D--11-----------------------------
- INT 2D - DTown Utilities v1.40+ - UTILITY INSTALLATION CHECK
- AL = 11h
- BL = function
- 00h get number of installed utilities
- Return: BL = number of utilities
- 01h get installed utilities
- DX:DI -> buffer containing one byte for each utility
- Return: DX:DI buffer filled with flags (0=no,1=yes) indicating
- whether the corresponding utility is loaded
- Return: AL = FFh if supported
- Note: this function is only available if the extended API has been installed
- in the resident portion
- SeeAlso: INT 2D/AL=10h"DTown",INT 2D/AL=20h
- --------s-2D--11-----------------------------
- INT 2D - CDTSR - REPROGRAM CDTSR
- AL = 11h
- AH = AMIS multiplex number for CDTSR
- Return: nothing
- Program: CDTSR is a resident audio CD player by Colin Hill
- Desc: reprograms CDTSR based on the values in the internal variable
- structure (see #02583), which may have been changed by an application
- SeeAlso: INT 2D/AL=10h"CDTSR",INT 2D/AL=12h"CDTSR",INT 2D/AL=13h"CDTSR"
- --------d-2D--12-----------------------------
- INT 2D - dLite 1.0+ - CHECK FOR dPressed FILE AND GET COMPRESSED SIZE
- AL = 12h
- AH = AMIS multiplex number for dLite
- BX = file handle
- Return: CF clear if successful
- DX:AX = size of compressed file
- CF set on error (not dPressed file)
- SeeAlso: AL=10h"dLite",AL=11h"dLite"
- --------s-2D--12-----------------------------
- INT 2D - CDTSR - DISABLE POPUP
- AL = 12h
- AH = AMIS multiplex number for CDTSR
- Return: nothing
- SeeAlso: INT 2D/AL=10h"CDTSR",INT 2D/AL=11h"CDTSR",INT 2D/AL=13h"CDTSR"
- --------U-2D--12-----------------------------
- INT 2D - FREEVER - GET ORIGINAL DOS VERSION INFO
- AL = 12h
- AH = AMIS multiplex number for FREEVER
- Return: AL = FFh if successful
- BH = major DOS version
- BL = minor DOS version
- CH = DOS version flag
- CL = OEM number
- DH = major DR DOS version number (FFh if unknown)
- DL = minor DR DOS version number (FFh if unknown)
- Program: FREEVER is an AMIS-conformant freeware DOS version-faking TSR similar
- to SETVER for any DOS-compatible OS, written by Matthias Paul
- SeeAlso: INT 2D/AL=13h"FREEVER",INT 2D/AL=14h"FREEVER",INT 2D/AL=17h"FREEVER"
- --------s-2D--13-----------------------------
- INT 2D - CDTSR - ENABLE POPUP
- AL = 13h
- AH = AMIS multiplex number for CDTSR
- Return: nothing
- Program: CDTSR is a resident audio CD player by Colin Hill
- SeeAlso: INT 2D/AL=10h"CDTSR",INT 2D/AL=11h"CDTSR",INT 2D/AL=12h"CDTSR"
- --------U-2D--13-----------------------------
- INT 2D - FREEVER - SET VERSION NUMBERS
- AL = 13h
- AH = AMIS multiplex number for FREEVER
- BH = new major DOS version
- BL = new minor DOS version
- CH = new DOS version flag
- CL = new DOS revision number
- DH = new OEM number
- SeeAlso: INT 2D/AL=12h"FREEVER",INT 2D/AL=15h"FREEVER",INT 2D/AL=17h"FREEVER"
- --------U-2D--14-----------------------------
- INT 2D - FREEVER - ENABLE TSR
- AL = 14h
- AH = AMIS multiplex number for FREEVER
- Return: AL = FFh if successful
- SeeAlso: INT 2D/AL=12h"FREEVER",INT 2D/AL=15h"FREEVER",INT 2D/AL=16h"FREEVER"
- --------U-2D--15-----------------------------
- INT 2D - FREEVER - DISABLE TSR
- AL = 15h
- AH = AMIS multiplex number for FREEVER
- Return: AL = FFh if successful
- SeeAlso: INT 2D/AL=12h"FREEVER",INT 2D/AL=14h"FREEVER",INT 2D/AL=16h"FREEVER"
- --------U-2D--16-----------------------------
- INT 2D - FREEVER - GET TSR STATUS
- AL = 16h
- AH = AMIS multiplex number for FREEVER
- Return: AL = FFh if successful
- BL = status
- 01h resident and active
- 02h resident and inactive
- SeeAlso: INT 2D/AL=12h"FREEVER",INT 2D/AL=15h"FREEVER",INT 2D/AL=17h"FREEVER"
- --------U-2D--17-----------------------------
- INT 2D - FREEVER - GET TaskMAX STATUS AT INSTALLATION
- AL = 17h
- AH = AMIS multiplex number for FREEVER
- Return: AL = FFh if successful
- BL = status
- 00h if TaskMAX not loaded before SETDRVER
- FFh if TaskMAX was loaded before SETDRVER
- Program: FREEVER is an AMIS-conformant freeware DOS version-faking TSR similar
- to SETVER for any DOS-compatible OS, written by Matthias Paul
- SeeAlso: INT 2D/AL=12h"FREEVER",INT 2D/AL=14h"FREEVER",INT 2D/AL=16h"FREEVER"
- --------U-2D--20-----------------------------
- INT 2D - DTown Utilities v1.40+ - GET POP-UP HANDLER ADDRESS
- AL = 20h
- Return: AL = FFh if available
- DX:DI -> DTU popup-handler
- Program: DTown Utilities is a freeware programmer's utility TSR by Jeroen van
- Disseldorp
- Note: this function is only available if the extended API has been installed
- in the resident portion
- SeeAlso: INT 2D/AL=10h"DTown",INT 2D/AL=21h,INT 2D/AL=50h,INT 2D/AL=51h
- SeeAlso: INT 03"DTown"
- --------U-2D--21-----------------------------
- INT 2D - DTown Utilities v1.40+ - POP UP
- AL = 21h
- BL = which utility to bring up
- 00h active utility
- 01h help screen
- 0Ah ASCII table
- 0Bh memory view
- 0Ch CPU status
- 0Dh calculator
- 0Eh miscellaneous
- 0Fh file viewer
- 10h disassembler
- Return: AL = status
- 00h already active
- FFh popped up successfully
- BX = 0000h
- Note: this function is only available if the extended API has been installed
- in the resident portion
- SeeAlso: INT 2D/AL=10h"DTown",INT 2D/AL=20h,INT 2D/AL=50h
- --------U-2D--50-----------------------------
- INT 2D - DTown Utilities v1.40+ - MEMORY VIEW SET ADDRESS
- AL = 50h
- CX:DX = new address for start of memory view utility's display
- Note: this function is only available if the extended API has been installed
- in the resident portion
- Return: AL = FFh if supported
- SeeAlso: INT 2D/AL=10h"DTown",INT 2D/AL=20h,INT 2D/AL=21h,INT 2D/AL=51h
- --------U-2D--51-----------------------------
- INT 2D - DTown Utilities v1.40+ - MEMORY VIEW SET REFERENCE
- AL = 51h
- BL = reference ("bookmark") number
- CX:DX = new address for reference
- Return: AL = status
- 00h invalid index
- FFh reference set
- Note: this function is only available if the extended API has been installed
- in the resident portion
- Program: DTown Utilities is a shareware programmer's utility TSR by Jeroen van
- Disseldorp
- SeeAlso: INT 2D/AL=10h"DTown",INT 2D/AL=20h,INT 2D/AL=50h
- --------b-2D--DC-----------------------------
- INT 2D C - DAISY.SYS - BROADCAST: CHAIN RESCANNED
- AL = DCh
- AH = AMIS multiplex number for signature 'DAISYCHA' 'INDRIVER'
- DL = LPT Port Rescanned
- Program: DAISY.SYS is a daisy chain manager for parallel port peripherals
- conforming to the IEEE 1284.3 Committee's daisy chain specification.
- Desc: This Broadcast is sent whenever daisy chain IDs are reassigned to
- warn parallel port device drivers that their daisy chain ID may
- have been changed.
- Note: This function is a callout from DAISY.SYS, NOT a call into DAISY.SYS
- SeeAlso: INT 17/AX=0200h"Enhanced Parallel Port",#00633,#02570
- --------l-2E---------------------------------
- INT 2E U - DOS 2+ - PASS COMMAND TO COMMAND INTERPRETER FOR EXECUTION
- DS:SI -> commandline to execute (see #02585)
- Return: all registers except CS:IP destroyed
- AX = status (4DOS v4.0)
- 0000h successful
- FFFFh error before processing command (not enough memory, etc)
- other error number returned by command
- Notes: this call allows execution of arbitrary commands (including COMMAND.COM
- internal commands) without loading another copy of COMMAND.COM
- if COMMAND.COM is the user's command interpreter, the primary copy
- executes the command; this allows the master environment to be
- modified by issuing a "SET" command, but changes in the master
- environment will not become effective until all programs descended
- from the primary COMMAND.COM terminate
- since COMMAND.COM processes the string as if typed from the keyboard,
- the transient portion needs to be present, and the calling program
- must ensure that sufficient memory to load the transient portion can
- be allocated by DOS if necessary
- results are unpredictable if invoked by a program run from a batch file
- because this call is not reentrant and COMMAND.COM uses the same
- internal variables when processing a batch file
- hooked but ignored by 4DOS v3.0 COMMAND.COM replacement unless SHELL2E
- has been loaded
- the MS-DOS 5 Programmer's Reference calls this "Reload Transient"
- Format of DOS commandline:
- Offset Size Description (Table 02585)
- 00h BYTE length of command string, not counting trailing CR
- 01h var command string
- N BYTE 0Dh (CR)
- --------O-2E---------------------------------
- INT 2E UP - Windows NT - NATIVE API
- EAX = function number (see #02586)
- EDX = address of parameter block
- Return: ???
- (Table 02586)
- Values for Windows NT NTOS function number:
- 000h AcceptConnectPort (24 bytes of parameters)
- 001h AccessCheck (32 bytes of parameters)
- 002h AccessCheckAndAuditAlarm (44 bytes of parameters)
- 003h AddAtom (8 bytes of parameters)
- 004h AdjustGroupsToken (24 bytes of parameters)
- 005h AdjustPrivilegesToken (24 bytes of parameters)
- 006h AlertResumeThread (8 bytes of parameters)
- 007h AlertThread (4 bytes of parameters)
- 008h AllocateLocallyUniqueId (4 bytes of parameters)
- 009h AllocateUuids (12 bytes of parameters)
- 00Ah AllocateVirtualMemory (24 bytes of parameters)
- 00Bh CallbackReturn (12 bytes of parameters)
- 00Ch CancelIoFile (8 bytes of parameters)
- 00Dh CancelTimer (8 bytes of parameters)
- 00Eh ClearEvent (4 bytes of parameters)
- 00Fh Close (4 bytes of parameters)
- 010h CloseObjectAuditAlarm (12 bytes of parameters)
- 011h CompleteConnectPort (4 bytes of parameters)
- 012h ConnectPort (32 bytes of parameters)
- 013h Continue (8 bytes of parameters)
- 014h CreateDirectoryObject (12 bytes of parameters)
- 015h CreateEvent (20 bytes of parameters)
- 016h CreateEventPair (12 bytes of parameters)
- 017h CreateFile (44 bytes of parameters)
- 018h CreateIoCompletion (16 bytes of parameters)
- 019h CreateKey (28 bytes of parameters)
- 01Ah CreateMailslotFile (32 bytes of parameters)
- 01Bh CreateMutant (16 bytes of parameters)
- 01Ch CreateNamedPipeFile (56 bytes of parameters)
- 01Dh CreatePagingFile (16 bytes of parameters)
- 01Eh CreatePort (20 bytes of parameters)
- 01Fh CreateProcess (32 bytes of parameters)
- 020h CreateProfile (36 bytes of parameters)
- 021h CreateSection (28 bytes of parameters)
- 022h CreateSemaphore (20 bytes of parameters)
- 023h CreateSymbolicLinkObject (16 bytes of parameters)
- 024h CreateThread (32 bytes of parameters)
- 025h CreateTimer (16 bytes of parameters)
- 026h CreateToken (52 bytes of parameters)
- 027h DelayExecution (8 bytes of parameters)
- 028h DeleteAtom (4 bytes of parameters)
- 029h DeleteFile (4 bytes of parameters)
- 02Ah DeleteKey (4 bytes of parameters)
- 02Bh DeleteObjectAuditAlarm (12 bytes of parameters)
- 02Ch DeleteValueKey (8 bytes of parameters)
- 02Dh DeviceIoControlFile (40 bytes of parameters)
- 02Eh DisplayString (4 bytes of parameters)
- 02Fh DuplicateObject (28 bytes of parameters)
- 030h DuplicateToken (24 bytes of parameters)
- 031h EnumerateKey (24 bytes of parameters)
- 032h EnumerateValueKey (24 bytes of parameters)
- 033h ExtendSection (8 bytes of parameters)
- 034h FindAtom (8 bytes of parameters)
- 035h FlushBuffersFile (8 bytes of parameters)
- 036h FlushInstructionCache (12 bytes of parameters)
- 037h FlushKey (4 bytes of parameters)
- 038h FlushVirtualMemory (16 bytes of parameters)
- 039h FlushWriteBuffer (no parameters)
- 03Ah FreeVirtualMemory (16 bytes of parameters)
- 03Bh FsControlFile (40 bytes of parameters)
- 03Ch GetContextThread (8 bytes of parameters)
- 03Dh GetPlugPlayEvent (16 bytes of parameters)
- 03Eh GetTickCount (no parameters)
- 03Fh ImpersonateClientOfPort (8 bytes of parameters)
- 040h ImpersonateThread (12 bytes of parameters)
- 041h InitializeRegistry (4 bytes of parameters)
- 042h ListenPort (8 bytes of parameters)
- 043h LoadDriver (4 bytes of parameters)
- 044h LoadKey (8 bytes of parameters)
- 045h LoadKey2 (12 bytes of parameters)
- 046h LockFile (40 bytes of parameters)
- 047h LockVirtualMemory (16 bytes of parameters)
- 048h MakeTemporaryObject (4 bytes of parameters)
- 049h MapViewOfSection (40 bytes of parameters)
- 04Ah NotifyChangeDirectoryFile (36 bytes of parameters)
- 04Bh NotifyChangeKey (40 bytes of parameters)
- 04Ch OpenDirectoryObject (12 bytes of parameters)
- 04Dh OpenEvent (12 bytes of parameters)
- 04Eh OpenEventPair (12 bytes of parameters)
- 04Fh OpenFile (24 bytes of parameters)
- 050h OpenIoCompletion (12 bytes of parameters)
- 051h OpenKey (12 bytes of parameters)
- 052h OpenMutant (12 bytes of parameters)
- 053h OpenObjectAuditAlarm (48 bytes of parameters)
- 054h OpenProcess (16 bytes of parameters)
- 055h OpenProcessToken (12 bytes of parameters)
- 056h OpenSection (12 bytes of parameters)
- 057h OpenSemaphore (12 bytes of parameters)
- 058h OpenSymbolicLinkObject (12 bytes of parameters)
- 059h OpenThread (16 bytes of parameters)
- 05Ah OpenThreadToken (16 bytes of parameters)
- 05Bh OpenTimer (12 bytes of parameters)
- 05Ch PlugPlayControl (16 bytes of parameters)
- 05Dh PrivilegeCheck (12 bytes of parameters)
- 05Eh PrivilegedServiceAuditAlarm (20 bytes of parameters)
- 05Fh PrivilegeObjectAuditAlarm (24 bytes of parameters)
- 060h ProtectVirtualMemory (20 bytes of parameters)
- 061h PulseEvent (8 bytes of parameters)
- 062h QueryInformationAtom (20 bytes of parameters)
- 063h QueryAttributesFile (8 bytes of parameters)
- 064h QueryDefaultLocale (8 bytes of parameters)
- 065h QueryDirectoryFile (44 bytes of parameters)
- 066h QueryDirectoryObject (28 bytes of parameters)
- 067h QueryEaFile (36 bytes of parameters)
- 068h QueryEvent (20 bytes of parameters)
- 069h QueryFullAttributesFile (8 bytes of parameters)
- 06Ah QueryInformationFile (20 bytes of parameters)
- 06Bh QueryIoCompletion (20 bytes of parameters)
- 06Ch QueryInformationPort (20 bytes of parameters)
- 06Dh QueryInformationProcess (20 bytes of parameters)
- 06Eh QueryInformationThread (20 bytes of parameters)
- 06Fh QueryInformationToken (20 bytes of parameters)
- 070h QueryIntervalProfile (8 bytes of parameters)
- 071h QueryKey (20 bytes of parameters)
- 072h QueryMultipleValueKey (24 bytes of parameters)
- 073h QueryMutant (20 bytes of parameters)
- 074h QueryObject (20 bytes of parameters)
- 075h QueryOleDirectoryFile (44 bytes of parameters)
- 076h QueryPerformanceCounter (8 bytes of parameters)
- 077h QuerySection (20 bytes of parameters)
- 078h QuerySecurityObject (20 bytes of parameters)
- 079h QuerySemaphore (20 bytes of parameters)
- 07Ah QuerySymbolicLinkObject (12 bytes of parameters)
- 07Bh QuerySystemEnvironmentValue (16 bytes of parameters)
- 07Ch QuerySystemInformation (16 bytes of parameters)
- 07Dh QuerySystemTime (4 bytes of parameters)
- 07Eh QueryTimer (20 bytes of parameters)
- 07Fh QueryTimerResolution (12 bytes of parameters)
- 080h QueryValueKey (24 bytes of parameters)
- 081h QueryVirtualMemory (24 bytes of parameters)
- 082h QueryVolumeInformationFile (20 bytes of parameters)
- 083h QueueApcThread (20 bytes of parameters)
- 084h RaiseException (12 bytes of parameters)
- 085h RaiseHardError (24 bytes of parameters)
- 086h ReadFile (36 bytes of parameters)
- 087h ReadFileScatter (36 bytes of parameters)
- 088h ReadRequestData (24 bytes of parameters)
- 089h ReadVirtualMemory (20 bytes of parameters)
- 08Ah RegisterThreadTerminatePort (4 bytes of parameters)
- 08Bh ReleaseMutant (8 bytes of parameters)
- 08Ch ReleaseSemaphore (12 bytes of parameters)
- 08Dh RemoveIoCompletion (20 bytes of parameters)
- 08Eh ReplaceKey (12 bytes of parameters)
- 08Fh ReplyPort (8 bytes of parameters)
- 090h ReplyWaitReceivePort (16 bytes of parameters)
- 091h ReplyWaitReplyPort (8 bytes of parameters)
- 092h RequestPort (8 bytes of parameters)
- 093h RequestWaitReplyPort (12 bytes of parameters)
- 094h ResetEvent (8 bytes of parameters)
- 095h RestoreKey (12 bytes of parameters)
- 096h ResumeThread (8 bytes of parameters)
- 097h SaveKey (8 bytes of parameters)
- 098h SetIoCompletion (20 bytes of parameters)
- 099h SetContextThread (8 bytes of parameters)
- 09Ah SetDefaultHardErrorPort (4 bytes of parameters)
- 09Bh SetDefaultLocale (8 bytes of parameters)
- 09Ch SetEaFile (16 bytes of parameters)
- 09Dh SetEvent (8 bytes of parameters)
- 09Eh SetHighEventPair (4 bytes of parameters)
- 09Fh SetHighWaitLowEventPair (4 bytes of parameters)
- 0A0h ??? (??? bytes of parameters)
- 0A1h SetInformationFile (20 bytes of parameters)
- 0A2h SetInformationKey (16 bytes of parameters)
- 0A3h SetInformationObject (16 bytes of parameters)
- 0A4h SetInformationProcess (16 bytes of parameters)
- 0A5h SetInformationThread (16 bytes of parameters)
- 0A6h SetInformationToken (16 bytes of parameters)
- 0A7h SetIntervalProfile (8 bytes of parameters)
- 0A8h SetLdtEntries (24 bytes of parameters)
- 0A9h SetLowEventPair (4 bytes of parameters)
- 0AAh SetLowWaitHighEventPair (4 bytes of parameters)
- 0ABh ??? (??? bytes of parameters)
- 0ACh SetSecurityObject (12 bytes of parameters)
- 0ADh SetSystemEnvironmentValue (8 bytes of parameters)
- 0AEh SetSystemInformation (12 bytes of parameters)
- 0AFh SetSystemPowerState (12 bytes of parameters)
- 0B0h SetSystemTime (8 bytes of parameters)
- 0B1h SetTimer (28 bytes of parameters)
- 0B2h SetTimerResolution (12 bytes of parameters)
- 0B3h SetValueKey (24 bytes of parameters)
- 0B4h SetVolumeInformationFile (20 bytes of parameters)
- 0B5h ShutdownSystem (4 bytes of parameters)
- 0B6h SignalAndWaitForSingleObject (16 bytes of parameters)
- 0B7h StartProfile (4 bytes of parameters)
- 0B8h StopProfile (4 bytes of parameters)
- 0B9h SuspendThread (8 bytes of parameters)
- 0BAh SystemDebugControl (24 bytes of parameters)
- 0BBh TerminateProcess (8 bytes of parameters)
- 0BCh TerminateThread (8 bytes of parameters)
- 0BDh TestAlert (no parameters)
- 0BEh UnloadDriver (4 bytes of parameters)
- 0BFh UnloadKey (4 bytes of parameters)
- 0C0h UnlockFile (20 bytes of parameters)
- 0C1h UnlockVirtualMemory (16 bytes of parameters)
- 0C2h UnmapViewOfSection (8 bytes of parameters)
- 0C3h VdmControl (8 bytes of parameters)
- 0C4h WaitForMultipleObjects (20 bytes of parameters)
- 0C5h WaitForSingleObject (12 bytes of parameters)
- 0C6h WaitHighEventPair (4 bytes of parameters)
- 0C7h WaitLowEventPair (4 bytes of parameters)
- 0C8h WriteFile (36 bytes of parameters)
- 0C9h WriteFileGather (36 bytes of parameters)
- 0CAh WriteRequestData (24 bytes of parameters)
- 0CBh WriteVirtualMemory (20 bytes of parameters)
- 0CCh W32Call (20 bytes of parameters)
- 0CDh CreateChannel (8 bytes of parameters)
- 0CEh ListenChannel (8 bytes of parameters)
- 0CFh OpenChannel (8 bytes of parameters)
- 0D0h ReplyWaitSendChannel (12 bytes of parameters)
- 0D1h SendWaitReplyChannel (16 bytes of parameters)
- 0D2h SetContextChannel (4 bytes of parameters)
- 0D3h YieldExecution (no parameters)
- --------l-2E----BXE22E-----------------------
- INT 2E - 4DOS v2.x-3.03 SHELL2E.COM - UNINSTALL
- BX = E22Eh
- DS:SI -> zero byte
- Return: if successful, SHELL2E terminates itself with INT 21/AH=4Ch
- ----------2F---------------------------------
- INT 2F - Multiplex - NOTES
- AH = identifier of program which is to handle the interrupt
- 00h-7Fh reserved for DOS
- B8h-BFh reserved for networks
- C0h-FFh reserved for applications
- AL is the function code
- This is a general mechanism for verifying the presence of a TSR and
- communicating with it. When searching for a free identifier code for AH
- using the installation check (AL=00h), the calling program should set
- BX/CX/DX to 0000h and must not depend on any registers other than CS:IP
- and SS:SP to be valid on return, since numerous programs now use additional
- registers on input and/or output for the installation check.
- Notes: Since the multiplex chain is growing so long, and beginning to
- experience multiplex number collisions, I have proposed an alternate
- multiplex interrupt on INT 2D. If you decide to use the alternate
- multiplex, please let me know.
- DOS and some other programs return values in the flags register, so
- any TSR which chains by calling the previous handler rather than
- jumping to it should ensure that the returned flags are preserved
- and passed back to the original caller
- SeeAlso: INT 2D"ALTERNATE MULTIPLEX"
- --------t-2F---------------------------------
- INT 2F - BMB Compuscience Canada Utilities Interface - INSTALLATION CHECK
- AH = xx (dynamically assigned based upon a search for a multiplex
- number which doesn't answer installed)
- AL = 00h installation check
- ES:DI = EBEBh:BEBEh
- Return: AL = 00h not installed
- 01h not installed, not OK to install
- FFh installed; if ES:DI was EBEBh:BEBEh on entry, ES:DI will point
- to a string of the form 'MMMMPPPPPPPPvNNNN' where MMMM is a
- short form of the manufacturer's name, PPPPPPPP is a product
- name and NNNN is the product's version number
- --------t-2F---------------------------------
- INT 2F - Ross Wentworth's Turbo Pascal POPUP LIBRARY
- AH = programmer-selected multiplex number
- AL = function
- 00h installation check
- Return: AL = FFh if installed
- 01h get TSR interrupt vectors
- Return: DX:AX -> vector table (see #02587)
- 02h get TSR code segment
- Return: AX = code segment for all interrupt handlers
- 03h call user exit routine and release TSR's memory
- 04h get signature string
- Return: DX:AX -> counted string containing signature
- 05h get TSR's INT 2F handler
- Return: DX:AX -> INT 2F handler
- 06h enable/disable TSR
- BL = new state (00h disabled, 01h enabled)
- 07h activate TSR (popup if not disabled)
- 08h get hotkeys
- BL = which hotkey (00h = hotkey 1, 01h = hotkey 2)
- Return: AX = hotkey (AH = keyflags, AL = scancode)
- 09h set hotkey
- BL = which hotkey (00h = hotkey 1, 01h = hotkey 2)
- CX = new hotkey (CH = keyflags, CL = scancode)
- 0Ah-1Fh reserved
- Index: installation check;Ross Wentworth POPUP library
- Index: hotkeys;Ross Wentworth POPUP library
- Format of POPUP vector table entry:
- Offset Size Description (Table 02587)
- 00h BYTE vector number (00h = end of table)
- 01h DWORD original vector
- 05h WORD offset of interrupt handler in TSR's code segment
- --------t-2F---------------------------------
- INT 2F - CiriSOFT Spanish University of Valladolid TSR's Interface
- AH = xx (dynamically assigned based upon a search for a multiplex
- number from C0h to FFh which doesn't answer installed)
- AL = 00h installation check
- ES:DI = 1492h:1992h
- Return: AL = 00h not installed
- 01h not installed, not OK to install
- FFh installed; and if ES:DI was 1492h:1992h on entry, ES:DI will
- point to author_name_ver table (see #02588)
- AH = FFh
- Note: this interface permits advanced communication with TSRs: it is possible
- to make a generic uninstall utility, advanced TSR relocator programs
- in order to fit fragmented memory areas, etc.
- See also: INT 2D"AMIS",INT 2F"Compuscience"
- Index: installation check;CiriSOFT TSR interface
- Index: uninstall;CiriSOFT TSR interface
- Format of CiriSOFT author_name_ver table:
- Offset Size Description (Table 02588)
- -16 WORD segment of the start of the resident TSR code (CS in programs
- with PSP, XMS upper memory segment if installed as UMB...)
- -14 WORD offset of the start of the resident TSR code (frequently 100h
- in *.COM programs and 0 in upper memory TSR's).
- -12 WORD memory used by TSR (in paragraphs). Knowing the memory area
- used by TSR is possible to determine if hooked vectors are
- still pointing it (and if it is safe to uninstall).
- -10 BYTE characteristics byte (see #02589)
- -9 BYTE number of multiplex entry used (redefinition available). Note
- that the TSR must use THIS variable in it's INT 2Fh handler.
- -8 WORD offset to vector_area table (see #02590)
- -6 WORD offset to extra_area table (see #02591,#02589 [bit 7])
- -4 4 BYTEs signature string "*##*"
- 00h var "AUTHOR:PROGRAM_NAME:VERSION",0 (variable length, this area
- is used in order to determine if the TSR is already resident
- and it's version code; the ':' char is used as delimiter)
- Bitfields for CiriSOFT characteristics byte:
- Bit(s) Description (Table 02589)
- 0-2 type
- 000 normal program (with PSP)
- 001 upper XMS memory block (needed HIMEM.SYS function to free memory
- when uninstalling)
- 010 device driver (*.SYS)
- 011 device driver in EXE format
- 1xx others (reserved)
- 3-6 reserved
- 7 set if extra_table defined and supported (see #02591)
- SeeAlso: #02588
- Format of CiriSOFT vector_area table:
- Offset Size Description (Table 02590)
- -1 BYTE number of vectors intercepted by TSR
- 00h BYTE first vector number
- 01h DWORD first vector pointer before installing the TSR
- 05h BYTE second vector number
- 06h DWORD second vector pointer before installing the TSR
- 0Ah ... (and so on)
- Note: the TSR must use these variables to invoke the previous interrupt
- handler routines
- SeeAlso: #02588
- Format of extra_area table (needed only to improve relocation feature):
- Offset Size Description (Table 02591)
- 00h WORD offset to external_ctrl table (see #02592)
- 0000h if not supported
- 02h WORD reserved for future use (0)
- SeeAlso: #02588
- Format of CiriSOFT external_ctrl table:
- Offset Size Description (Table 02592)
- 00h BYTE bit 0: TSR is relocatable (no absolute segment references)
- 01h WORD offset to a variable which can activate/inhibit the TSR
- ---And if bit 0 in offset 00h is off:
- 03h DWORD pointer to ASCIZ pathname for executable file which supports
- /SR parameter (silent installation & inhibit)
- 07h DWORD pointer to first variable to initialize on the copy reloaded
- from the previous TSR still resident
- 0Bh DWORD pointer to last variable (all variables packed in one block)
- --------c-2F00-------------------------------
- INT 2F U - DOS 2.x only PRINT.COM - SUBMIT FILE FOR PRINTING
- AH = 00h
- DS:DX -> opened FCB (see #01345 at INT 21/AX=0Fh)
- Return: AH = number of files currently in print queue
- AL = status
- 00h file successfully added
- 01h queue is full
- ES:BX -> print queue (10 FCBs; first byte of FFh indicates unused)
- ES:DX -> currently-printing FCB (if DX=FFFFh, none printing)
- Notes: DOS 2.x PRINT.COM does not chain to previous INT 2F handler
- values in AH other than 00h or 01h cause PRINT to return the number of
- files in the queue in AH
- SeeAlso: AH=01h"PRINT",AX=0102h
- --------P-2F00-------------------------------
- INT 2F U - PSPRINT - PRINT JOB CONTROL
- AH = 00h
- ???
- Return: ???
- --------c-2F0080-----------------------------
- INT 2F - DOS 3.1+ PRINT - GIVE PRINT A TIME SLICE
- AX = 0080h
- Return: after PRINT executes
- Notes: PRINT returns AL=01h if AH=00h but AL is not 80h on entry
- this function is not supported by the Novell DOS 7 PRINT.COM
- --------N-2F00D8-----------------------------
- INT 2F - Personal NetWare - VLM - ???
- AX = 00D8h
- ???
- Return: ???
- Note: hooked by one of the .VLMs loaded by VLM.EXE v1.10, but apparently a
- NOP
- --------c-2F01-------------------------------
- INT 2F U - DOS 2.x only PRINT.COM - REMOVE FILE FROM PRINT QUEUE
- AH = 01h
- DS:DX -> FCB (see #01345 at INT 21/AH=0Fh) for file to be canceled
- Return: AH = number of files currently in print queue
- AL = 00h (successful)
- ES:BX -> print queue (10 FCBs; first byte of FFh indicates unused)
- ES:DX -> currently-printing FCB (if DX=FFFFh, none printing)
- Notes: DOS 2.x PRINT.COM does not chain to previous INT 2F handler
- values in AH other than 00h or 01h cause PRINT to return the number of
- files in the queue in AH
- SeeAlso: AH=00h"PRINT.COM",AX=0103h
- --------c-2F0100-----------------------------
- INT 2F - DOS 3.0+ PRINT - INSTALLATION CHECK
- AX = 0100h
- Return: AL = status
- 00h not installed
- 01h not installed, but not OK to install
- FFh installed
- AH = 00h (Novell DOS 7)
- SeeAlso: AX=0101h
- --------c-2F0100SI20D6-----------------------
- INT 2F U - PrintCache 3.1 PRINT.COM - INSTALLATION CHECK
- AX = 0100h
- SI = 20D6h
- DI = 8761h
- Return: AX = 00FFh if installed
- DI = 0001h if PrintCache's PRINT.COM installed and magic values match
- SI = resident code segment
- Program: PrintCache PRINT.COM is a DOS PRINT replacement included in
- LaserTools' PrintCache memory/disk-based print spooler package
- Note: if either of SI or DI differ from the indicated magic values, only AX
- will be modified on return, for compatibility with DOS PRINT
- SeeAlso: AX=0101h/SI=20D6h,AX=C000h"PCACHE"
- --------c-2F0101-----------------------------
- INT 2F - DOS 3.0+ PRINT - SUBMIT FILE FOR PRINTING
- AX = 0101h
- DS:DX -> submit packet (see #02593)
- Return: CF clear if successful
- AL = status
- 01h added to queue
- 9Eh now printing
- CF set on error
- AX = error code (see #02594,#01680 at INT 21/AH=59h/BX=0000h)
- SeeAlso: AX=0102h
- Format of PRINT submit packet:
- Offset Size Description (Table 02593)
- 00h BYTE level (must be 00h)
- 01h DWORD pointer to ASCIZ filename (no wildcards)
- (Table 02594)
- Values for PRINT error code:
- 0001h invalid function
- 0002h file not found
- 0003h path not found
- 0004h out of file handles
- 0005h access denied
- 0008h print queue full
- 0009h spooler busy
- 000Ch name too long
- 000Fh invalid drive
- --------c-2F0101SI20D6-----------------------
- INT 2F U - PrintCache v3.1 PRINT.COM - SUBMIT FILE FOR PRINTING
- AX = 0101h
- SI = 20D6h
- DI = 8761h
- DS:DX -> submit packet (see #02593)
- CL = print options
- bit 4: use default options
- Return: CF clear if successful
- AL = status
- 01h added to queue
- 9Eh now printing
- CF set on error
- AX = error code (see #02594)
- Program: PrintCache PRINT.COM is a DOS PRINT replacement included in
- LaserTools' PrintCache memory/disk-based print spooler package
- Note: if either SI or DI differs from the indicated magic values on entry,
- PrintCache will use the default print options for the file for
- compatibility with DOS PRINT
- SeeAlso: AX=0100h/SI=20D6h,AX=0101h,AH=00h"PRINT",AX=0107h"PrintCache"
- --------c-2F0102-----------------------------
- INT 2F - DOS 3.0+ PRINT - REMOVE FILE FROM PRINT QUEUE
- AX = 0102h
- DS:DX -> ASCIZ filename (wildcards allowed)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02594)
- SeeAlso: AX=0101h,AX=0103h,AH=01h"PRINT"
- --------c-2F0103-----------------------------
- INT 2F - DOS 3.0+ PRINT - CANCEL ALL FILES IN PRINT QUEUE
- AX = 0103h
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02594)
- SeeAlso: AX=0102h
- --------c-2F0104-----------------------------
- INT 2F - DOS 3.0+ PRINT - FREEZE PRINT QUEUE TO READ JOB STATUS
- AX = 0104h
- Return: CF clear if successful
- DX = error count since status last read
- DS:SI -> print queue
- CF set on error
- AX = error code (see #02594)
- Desc: get the list of print jobs, temporarily suspending PRINT's activities
- to avoid changing the list while it is being examined
- Notes: the print queue is an array of 64-byte ASCIZ filenames terminated by
- an empty filename; the first name is the file currently being printed
- printing is stopped until AX=0105h is called to prevent the queue
- from changing while the filenames are being read
- SeeAlso: AX=0101h,AX=0105h
- --------c-2F0105-----------------------------
- INT 2F - DOS 3.0+ PRINT - RESTART PRINT QUEUE AFTER STATUS READ
- AX = 0105h
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02594)
- Desc: restart PRINT's activities once an application finishes examining the
- print queue
- SeeAlso: AX=0104h
- --------c-2F0106-----------------------------
- INT 2F - DOS 3.3+ PRINT - GET PRINTER DEVICE
- AX = 0106h
- Return: CF set if files in print queue
- AX = error code 0008h (queue full)
- DS:SI -> device driver header (see #01646)
- CF clear if print queue empty
- AX = 0000h
- Desc: determine which device, if any, PRINT is currently using for output
- Notes: undocumented prior to the release of MS-DOS 5.0
- this function can be used to allow a program to avoid printing to the
- printer on which PRINT is currently performing output
- SeeAlso: AX=0104h
- --------c-2F0107-----------------------------
- INT 2F U - PrintCache v3.1 PRINT.COM - SET TRAILING FORM FEEDS
- AX = 0107h
- CL bit 0: output form feed between print jobs
- Return: AL destroyed
- SeeAlso: AX=0100h/SI=20D6h,AX=0101h/SI=20D6h
- --------N-2F0200-----------------------------
- INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - INSTALLATION CHECK
- AX = 0200h
- Return: AL = FFh if installed
- Desc: determine whether the PC LAN Program redirector is installed
- SeeAlso: AX=0201h,AX=0203h
- --------N-2F0201-----------------------------
- INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
- AX = 0201h
- Return: nothing???
- Notes: this function is called by the DOS 3.3+ PRINT.COM
- AX=0202h appears to be the opposite function
- these functions are supposedly used to signal opening and closing of
- printers
- SeeAlso: AX=0202h
- --------N-2F0202-----------------------------
- INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
- AX = 0202h
- ???
- Return: nothing???
- Notes: this function is called by the DOS 3.3+ PRINT.COM
- these functions are supposedly used to signal opening and closing of
- printers
- SeeAlso: AX=0201h
- --------N-2F0203-----------------------------
- INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
- AX = 0203h
- Return: nothing???
- Notes: this function is called by the DOS 3.3+ PRINT.COM
- AX=0204h appears to be the opposite function
- these functions are supposedly used to signal opening and closing of
- printers
- SeeAlso: AX=0200h,AX=0204h
- --------N-2F0204-----------------------------
- INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
- AX = 0204h
- ???
- Return: nothing???
- Notes: this function is called by the DOS 3.3+ PRINT.COM
- AX=0203h appears to be the opposite function
- these functions are supposedly used to signal opening and closing of
- printers
- SeeAlso: AX=0200h,AX=0203h
- --------N-2F---------------------------------
- INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
- AX = 02xxh
- ???
- Return: ???
- --------l-2F0500-----------------------------
- INT 2F U - DOS 3.0+ CRITICAL ERROR HANDLER - INSTALLATION CHECK
- AX = 0500h
- Return: AL = status
- 00h not installed, OK to install
- 01h not installed, can't install
- FFh installed
- BX destroyed (MSCDEX v2.21-2.25)
- CF clear (MSCDEX v2.21-2.25)
- Desc: determine whether a critical error message override is installed
- Note: this set of functions allows a user program to partially or completely
- override the default critical error handler's message in COMMAND.COM
- SeeAlso: AH=05h,INT 24
- --------l-2F05-------------------------------
- INT 2F CU - DOS 3.0+ CRITICAL ERROR HANDLER - EXPAND ERROR INTO STRING
- AH = 05h
- ---DOS 3.x---
- AL = extended error code (not zero)
- ---DOS 4.0+ ---
- AL = error type
- 01h DOS extended error code
- 02h parameter error
- BX = error code
- Return: CF clear if successful
- ES:DI -> ASCIZ error message (read-only)
- AL = completion state
- 00h message requires completion with device name, drive, etc.
- 01h message is complete as returned
- CF set if error code can't be converted to string
- AX,DI,ES destroyed
- other flags corrupted
- Notes: called at start of COMMAND.COM's default critical error handler if
- installed by a user program, allowing partial or complete overriding
- of the default error messages
- subfunction 02h is called by many DOS 4 external programs
- DR DOS's COMMAND.COM appends additional info ("0 files copied") to the
- returned string
- SeeAlso: AX=0500h,AX=122Eh,INT 24
- --------U-2F0600-----------------------------
- INT 2F - DOS 3.0+ ASSIGN - INSTALLATION CHECK
- AX = 0600h
- Return: AL = status
- 00h not installed
- 01h not installed, but not OK to install
- FFh installed
- Notes: ASSIGN is not a TSR in DR DOS 5.0; it is internally replaced by SUBST
- (see INT 21/AH=52h)
- undocumented prior to the release of DOS 5.0
- SeeAlso: AX=0601h,INT 21/AH=52h
- --------U-2F0601-----------------------------
- INT 2F U - DOS 3.0+ ASSIGN - GET DRIVE ASSIGNMENT TABLE
- AX = 0601h
- Return: ES = segment of ASSIGN work area and assignment table
- Note: the 26 bytes starting at ES:0103h specify which drive each of A: to Z:
- is mapped to. Initially set to 01h 02h 03h....
- SeeAlso: AX=0600h,AX=AF14h"WinDOS"
- --------D-2F0800-----------------------------
- INT 2F U - DRIVER.SYS support - INSTALLATION CHECK
- AX = 0800h
- Return: AL = status
- 00h not installed, OK to install
- 01h not installed, not OK to install
- FFh installed
- Desc: determine whether the internal support code used by DRIVER.SYS is
- present; it is always present in DOS 3.2+
- Note: supported by DR DOS 5.0 and Novell DOS 7
- --------D-2F0801-----------------------------
- INT 2F U - DRIVER.SYS support - ADD NEW BLOCK DEVICE
- AX = 0801h
- DS:DI -> drive data table (see #02601,#02602,#02603)
- Return: AX,BX,SI,ES destroyed
- Notes: moves down internal list of drive data tables, copying and modifying
- the drive description flags word for tables referencing same physical
- drive
- the data table is appended to the chain of tables
- supported by DR DOS 5.0 and Novell DOS 7
- SeeAlso: AX=0803h
- --------D-2F0802-----------------------------
- INT 2F U - DRIVER.SYS support - EXECUTE DEVICE DRIVER REQUEST
- AX = 0802h
- ES:BX -> device driver request header (see #02597)
- Return: request header updated as per requested operation
- STACK: WORD original flags from INT call (left by RETF in device
- driver, at least in DOS 5.0-6.22)
- Notes: supported by DR DOS 5.0
- DOS 3.2 executes this function on any AL value from 02h through F7h;
- DOS 4.0+ executes this function on AL=02h and AL=04h-F7h
- the command codes (see #02595) and structures described below apply
- to all drivers which support the appropriate commands; this call is
- just one of a number of ways in which a device driver request may
- be invoked
- supported by Novell DOS 7
- SeeAlso: AX=0800h,AX=0801h,AX=0803h,AX=1510h,INT 21/AH=52h,INT 21/AH=99h
- SeeAlso: INT 21/AH=9Ah
- (Table 02595)
- Values for device driver command code:
- 00h (0) INIT
- 01h (1) MEDIA CHECK (block devices)
- 02h (2) BUILD BPB (block devices)
- 03h (3) IOCTL INPUT
- 04h (4) INPUT
- 05h (5) NONDESTRUCTIVE INPUT, NO WAIT (character devices)
- 06h (6) INPUT STATUS (character devices)
- 07h (7) INPUT FLUSH (character devices)
- 08h (8) OUTPUT
- 09h (9) OUTPUT WITH VERIFY
- 0Ah (10) OUTPUT STATUS (character devices)
- 0Bh (11) OUTPUT FLUSH (character devices)
- 0Ch (12) IOCTL OUTPUT
- 0Dh (13) (DOS 3.0+) DEVICE OPEN
- 0Eh (14) (DOS 3.0+) DEVICE CLOSE
- 0Fh (15) (DOS 3.0+) REMOVABLE MEDIA (block devices)
- 10h (16) (DOS 3.0+) OUTPUT UNTIL BUSY (character devices)
- 11h (17) (European MS-DOS 4.0) STOP OUTPUT (console screen drivers only)
- 12h (18) (European MS-DOS 4.0) RESTART OUTPUT (console screen drivers only)
- 13h (19) (DOS 3.2+) GENERIC IOCTL
- 14h (20) unused
- 15h (21) (European MS-DOS 4.0) RESET UNCERTAIN MEDIA FLAG
- 16h (22) unused
- 17h (23) (DOS 3.2+) GET LOGICAL DEVICE
- 18h (24) (DOS 3.2+) SET LOGICAL DEVICE
- 19h (25) (DOS 5.0+) CHECK GENERIC IOCTL SUPPORT
- 80h (128)(CD-ROM) READ LONG
- 81h (129)(CD-ROM) reserved
- 82h (130)(CD-ROM) READ LONG PREFETCH
- 83h (131)(CD-ROM) SEEK
- 84h (132)(CD-ROM) PLAY AUDIO
- 85h (133)(CD-ROM) STOP AUDIO
- 86h (134)(CD-ROM) WRITE LONG
- 87h (135)(CD-ROM) WRITE LONG VERIFY
- 88h (136)(CD-ROM) RESUME AUDIO
- Bitfields for device request status:
- Bit(s) Description (Table 02596)
- 15 error
- 14-11 reserved
- 10 ??? set by DOS kernel on entry to some driver calls
- 9 busy
- 8 done (may be clear on return under European MS-DOS 4.0)
- 7-0 error code if bit 15 set (see #02598)
- Format of device driver request header:
- Offset Size Description (Table 02597)
- 00h BYTE length of request header
- 01h BYTE subunit within device driver
- 02h BYTE command code (see #02595)
- 03h WORD status (filled in by device driver) (see #02596)
- ---DOS---
- 05h 4 BYTEs reserved (unused in DOS 2.x and 3.x)
- 09h DWORD (European MS-DOS 4.0 only) pointer to next request header in
- device's request queue
- (other versions) reserved (unused in DOS 2.x and 3.x)
- ---STARLITE architecture---
- 05h DWORD pointer to next request header
- 09h 4 BYTEs reserved
- ---command code 00h---
- 0Dh BYTE (ret) number of units
- 0Eh DWORD (call) pointer to DOS device helper function (see #02599)
- (European MS-DOS 4.0 only)
- (call) pointer past end of memory available to driver (DOS 5+)
- (ret) address of first free byte following driver
- 12h DWORD (call) pointer to commandline arguments
- (ret) pointer to BPB array (block drivers) or
- 0000h:0000h (character drivers)
- 16h BYTE (DOS 3.0+) drive number for first unit of block driver (0=A)
- ---European MS-DOS 4.0---
- 17h DWORD pointer to function to save registers on stack
- ---DOS 5+ ---
- 17h WORD (ret) error-message flag
- 0001h MS-DOS should display error msg on init failure
- ---command code 01h---
- 0Dh BYTE media descriptor
- 0Eh BYTE (ret) media status
- 00h don't know
- 01h media has not changed
- FFh media has been changed
- 0Fh DWORD (ret, DOS 3.0+) pointer to previous volume ID if the
- OPEN/CLOSE/RM bit in device header is set and disk changed
- ---command code 02h---
- 0Dh BYTE media descriptor
- 0Eh DWORD transfer address
- -> scratch sector if NON-IBM FORMAT bit in device header set
- -> first FAT sector otherwise
- 12h DWORD pointer to BPB (set by driver) (see #01663 at INT 21/AH=53h)
- ---command codes 03h,0Ch---
- (see also INT 21/AX=4402h"DOS 2+",INT 21/AX=4403h"DOS")
- 0Dh BYTE media descriptor (block devices only)
- 0Eh DWORD transfer address
- 12h WORD (call) number of bytes to read/write
- (ret) actual number of bytes read or written
- ---command codes 04h,08h,09h (except Compaq DOS 3.31, DR DOS 6)---
- 0Dh BYTE media descriptor (block devices only)
- 0Eh DWORD transfer address
- 12h WORD byte count (character devices) or sector count (block devices)
- 14h WORD starting sector number (block devices only)
- 16h DWORD (DOS 3.0+) pointer to volume ID if error 0Fh returned
- 1Ah DWORD (DOS 4.0+) 32-bit starting sector number (block devices with
- device attribute word bit 1 set only) if starting sector
- number above is FFFFh (see INT 21/AH=52h)
- ---command codes 04h,08h,09h (Compaq DOS 3.31, DR DOS 6)---
- 0Dh BYTE media descriptor (block devices only)
- 0Eh DWORD transfer address
- 12h WORD byte count (character devices) or sector count (block devices)
- 14h DWORD 32-bit starting sector number (block devices only)
- Note: to reliably determine which variant of the request block for
- functions 04h,08h,09h has been passed to the driver, check
- the length field as well as the word at offset 14h. If the
- length is 1Eh and 14h=FFFFh, use the DWORD at 1Ah as the
- starting sector number; if the length is 18h, use the DWORD
- at 14h; otherwise, use the WORD at 14h.
- ---command code 05h---
- 0Dh BYTE byte read from device if BUSY bit clear on return
- ---command codes 06h,07h,0Ah,0Bh,0Dh,0Eh,0Fh---
- no further fields
- ---command code 10h---
- 0Dh BYTE unused
- 0Eh DWORD transfer address
- 12h WORD (call) number of bytes to write
- (ret) actual number of bytes written
- ---command codes 11h,12h---
- 0Dh BYTE reserved
- ---command code 15h---
- no further fields
- ---command codes 13h,19h---
- 0Dh BYTE category code
- 00h unknown
- 01h COMn:
- 03h CON
- 05h LPTn:
- 07h mouse (European MS-DOS 4.0)
- 08h disk
- 9Eh (STARLITE) Media Access Control driver
- 0Eh BYTE function code
- 00h (STARLITE) MAC Bind request
- 0Fh WORD copy of DS at time of IOCTL call (apparently unused in DOS 3.3)
- SI contents (European MS-DOS 4.0)
- 11h WORD offset of device driver header (see #01646)
- DI contents (European MS-DOS 4.0)
- 13h DWORD pointer to parameter block from INT 21/AX=440Ch or AX=440Dh
- ---command codes 80h,82h---
- 0Dh BYTE addressing mode
- 00h HSG (default)
- 01h Phillips/Sony Red Book
- 0Eh DWORD transfer address (ignored for command 82h)
- 12h WORD number of sectors to read
- (if 0 for command 82h, request is an advisory seek)
- 14h DWORD starting sector number
- logical sector number in HSG mode
- frame/second/minute/unused in Red Book mode
- (HSG sector = minute * 4500 + second * 75 + frame - 150)
- 18h BYTE data read mode
- 00h cooked (2048 bytes per frame)
- 01h raw (2352 bytes per frame, including EDC/ECC)
- 19h BYTE interleave size (number of sectors stored consecutively)
- 1Ah BYTE interleave skip factor
- (number of sectors between consecutive portions)
- ---command code 83h---
- 0Dh BYTE addressing mode
- 00h HSG (default)
- 01h Phillips/Sony Red Book
- 0Eh DWORD transfer address (ignored)
- 12h WORD number of sectors to read (ignored)
- 14h DWORD starting sector number (see also above)
- ---command code 84h---
- 0Dh BYTE addressing mode
- 00h HSG (default)
- 01h Phillips/Sony Red Book
- 0Eh DWORD starting sector number (see also above)
- 12h DWORD number of sectors to play
- ---command codes 85h,88h---
- no further fields
- ---command codes 86h,87h---
- 0Dh BYTE addressing mode
- 00h HSG (default)
- 01h Phillips/Sony Red Book
- 0Eh DWORD transfer address (ignored in write mode 0)
- 12h WORD number of sectors to write
- 14h DWORD starting sector number (also see above)
- 18h BYTE write mode
- 00h mode 0 (write all zeros)
- 01h mode 1 (default) (2048 bytes per sector)
- 02h mode 2 form 1 (2048 bytes per sector)
- 03h mode 2 form 2 (2336 bytes per sector)
- 19h BYTE interleave size (number of sectors stored consecutively)
- 1Ah BYTE interleave skip factor
- (number of sectors between consecutive portions)
- (Table 02598)
- Values for device driver error code:
- 00h write-protect violation
- 01h unknown unit
- 02h drive not ready
- 03h unknown command
- 04h CRC error
- 05h bad drive request structure length
- 06h seek error
- 07h unknown media
- 08h sector not found
- 09h printer out of paper
- 0Ah write fault
- 0Bh read fault
- 0Ch general failure
- 0Dh reserved
- 0Eh (CD-ROM) media unavailable
- 0Fh invalid disk change
- (Table 02599)
- Call European MS-DOS 4.0 device helper function with:
- DL = function
- 00h "SchedClock" called on each timer tick
- AL = tick interval in milliseconds
- 01h "DevDone" device I/O complete
- ES:BX -> request header
- Note: must update status word first; may be called from
- an interrupt handler
- 02h "PullRequest" pull next request from queue
- DS:SI -> DWORD pointer to start of device's request queue
- Return: ZF clear if pending request
- ES:BX -> request header
- ZF set if no more requests
- 03h "PullParticular" remove specific request from queue
- DS:SI -> DWORD pointer to start of device's request queue
- ES:BX -> request header
- Return: ZF set if request header not found
- 04h "PushRequest" push the request onto the queue
- DS:SI -> DWORD pointer to start of device's request queue
- ES:BX -> request header
- interrupts disabled
- 05h "ConsInputFilter" keyboard input check
- AX = character (high byte 00h if PC ASCII character)
- Return: ZF set if character should be discarded
- ZF clear if character should be handled normally
- Note: called by keyboard interrupt handler so DOS can scan
- for special input characters
- 06h "SortRequest" push request in sorted order by starting sector
- DS:SI -> DWORD pointer to start of device's request queue
- ES:BX -> request header
- interrupts disabled
- 07h "SigEvent" send signal on keyboard event
- AH = event identifier
- Return: AL,FLAGS destroyed
- 09h "ProcBlock" block on event
- AX:BX = event identifier (typically a pointer)
- CX = timeout in ms or 0000h for never
- DH = interruptable flag (nonzero if pause may be interrupted)
- interrupts disabled
- Return: after corresponding ProcRun call
- CF clear if event wakeup, set if unusual wakeup
- ZF set if timeout wakeup, clear if interrupted
- AL = wakeup code, nonzero if unusual wakeup
- interrupts enabled
- BX,CX,DX destroyed
- Note: block process and schedules another to run
- 0Ah "ProcRun" unblock process
- AX:BX = event identifier (typically a pointer)
- Return: AX = number of processes awakened
- ZF set if no processes awakened
- BX,CX,DX destroyed
- 0Bh "QueueInit" initialize/clear character queue
- DS:BX -> character queue structure (see #02600)
- Note: the queue size field must be set before calling
- 0Dh "QueueWrite" put a character in the queue
- DS:BX -> character queue (see #02600)
- AL = character to append to end of queue
- Return: ZF set if queue is full
- ZF clear if character stored
- 0Eh "QueueRead" get a character from the queue
- DS:BX -> character queue (see #02600)
- Return: ZF set if queue is empty
- ZF clear if characters in queue
- AL = first character in queue
- 10h "GetDOSVar" return pointer to DOS variable
- AL = index of variable
- 03h current process ID
- BX = index into variable if AL specifies an array
- CX = expected length of variable
- Return: CF clear if successful
- DX:AX -> variable
- CF set on error
- AX,DX destroyed
- BX,CX destroyed
- Note: the variables may not be modified
- 14h "Yield" yield CPU if higher-priority task ready to run
- Return: FLAGS destroyed
- 1Bh "CritEnter" begin system critical section
- DS:BX -> semaphore (6 BYTEs, initialized to zero)
- Return: AX,BX,CX,DX destroyed
- 1Ch "CritLeave" end system critical section
- DS:BX -> semaphore (6 BYTEs, initialized to zero)
- Return: AX,BX,CX,DX destroyed
- Note: must be called in the context of the process which
- called CritEnter on the semaphore
- Note: the DWORD pointing at the request queue must be allocated by the driver
- and initialized to 0000h:0000h. It always points at the next request
- to be executed
- Format of European MS-DOS 4.0 character queue:
- Offset Size Description (Table 02600)
- 00h WORD size of queue in bytes
- 02h WORD index of next character out
- 04h WORD count of characters in the queue
- 06h N BYTEs queue buffer
- --------D-2F0803-----------------------------
- INT 2F U - DOS 4.0+ DRIVER.SYS support - GET DRIVE DATA TABLE LIST
- AX = 0803h
- Return: DS:DI -> first drive data table in list (see #02601,#02602,#02603)
- Note: not available under DR DOS 5.0, but supported by Novell DOS 7 (using
- the MS-DOS 4+ data table format)
- SeeAlso: AX=0801h
- Format of DOS 3.30 drive data table:
- Offset Size Description (Table 02601)
- 00h DWORD pointer to next table (offset FFFFh if last table)
- 04h BYTE physical unit number (for INT 13)
- 05h BYTE logical drive number (0=A:)
- 06h 19 BYTEs BIOS Parameter Block (see also INT 21/AH=53h)
- Offset Size Description
- 00h WORD bytes per sector
- 02h BYTE sectors per cluster, FFh if unknown
- 03h WORD number of reserved sectors
- 05h BYTE number of FATs
- 06h WORD number of root dir entries
- 08h WORD total sectors
- 0Ah BYTE media descriptor, 00h if unknown
- 0Bh WORD sectors per FAT
- 0Dh WORD sectors per track
- 0Fh WORD number of heads
- 11h WORD number of hidden sectors
- 19h BYTE flags
- bit 6: 16-bit FAT instead of 12-bit FAT
- 1Ah WORD number of DEVICE OPEN calls without corresponding DEVICE CLOSE
- 1Ch 11 BYTEs volume label or "NO NAME " if none (always "NO NAME" for
- fixed media)
- 27h BYTE terminating null for volume label???
- 28h BYTE device type (see #01561 at INT 21/AX=440Dh"DOS 3.2+")
- 29h WORD bit flags describing drive (see #02604)
- 2Bh WORD number of cylinders
- 2Dh 19 BYTEs BIOS Parameter Block for highest capacity supported
- 40h 3 BYTEs ???
- 43h 9 BYTEs filesystem type???, default = "NO NAME "
- (apparently only MS-DOS 3.30 fixed media, nulls for removable
- media and PC-DOS 3.30)
- 4Ch BYTE least-significant byte of last-accessed cylinder number
- ---removable media---
- 4Dh DWORD time of last access in clock ticks (FFFFFFFFh if never)
- ---fixed media---
- 4Dh WORD partition (FFFFh = primary, 0001h = extended)
- 4Fh WORD absolute cylinder number of partition's start on physical
- drive (always FFFFh if primary partition)
- SeeAlso: #02602,#02603
- Format of COMPAQ DOS 3.31 drive data table:
- Offset Size Description (Table 02602)
- 00h DWORD pointer to next table (offset FFFFh if last table)
- 04h BYTE physical unit number (for INT 13)
- 05h BYTE logical drive number (0=A:)
- 06h 25 BYTEs BIOS Parameter Block (see #02603)
- 1Fh 6 BYTEs reserved fields from BPB above???
- 25h BYTE flags
- bit 6: 16-bit FAT instead of 12-bit FAT
- bit 5: large volume???
- 26h WORD device-open count???
- 28h 11 BYTEs volume label or "NO NAME " if none (always "NO NAME" for
- fixed media)
- 33h BYTE terminating null for volume label
- 34h BYTE device type (see #01561 at INT 21/AX=440Dh"DOS 3.2+")
- 35h WORD bit flags describing drive (see #02604)
- 37h WORD number of cylinders
- 39h 25 BYTEs BIOS parameter block for highest capacity drive supports
- 52h 6 BYTEs ??? apparently always zeros
- 58h BYTE least-significant byte of last-accessed cylinder number
- ---removable media---
- 59h DWORD time of last access in clock ticks (FFFFFFFFh if never)
- ---fixed media---
- 59h WORD partition (FFFFh = primary, 0001h = extended)
- 5Bh WORD absolute cylinder number of partition's start on physical
- drive (always FFFFh if primary partition)
- SeeAlso: #02601,#02603
- Format of DOS 4.0-7.0 drive data table:
- Offset Size Description (Table 02603)
- 00h DWORD pointer to next table (offset FFFFh if last table)
- 04h BYTE physical unit number (for INT 13)
- 05h BYTE logical drive number (0=A:)
- 06h 25 BYTEs BIOS Parameter Block (see also INT 21/AH=53h)
- Offset Size Description
- 00h WORD bytes per sector
- 02h BYTE sectors per cluster, FFh if unknown
- 03h WORD number of reserved sectors
- 05h BYTE number of FATs
- 06h WORD number of root dir entries
- 08h WORD total sectors (refer to offset 15h if zero)
- 0Ah BYTE media descriptor, 00h if unknown
- 0Bh WORD sectors per FAT
- 0Dh WORD sectors per track
- 0Fh WORD number of heads
- 11h DWORD number of hidden sectors
- 15h DWORD total sectors if WORD at 08h is zero
- 1Fh BYTE flags
- bit 6: 16-bit FAT instead of 12-bit
- bit 7: unsupportable disk (all accesses will return Not Ready)
- 20h WORD device-open count
- 22h BYTE device type (see #01561 at INT 21/AX=440Dh"DOS 3.2+")
- 23h WORD bit flags describing drive (see #02604)
- 25h WORD number of cylinders (for partition only, if hard disk)
- 27h 25 BYTEs BIOS Parameter Block for default (highest) capacity supported
- 40h 6 BYTEs reserved (part of BPB above)
- 46h BYTE last track accessed
- ---removable media---
- 47h DWORD time of last access in clock ticks (FFFFFFFFh if never)
- ---fixed media---
- 47h WORD partition (FFFFh = primary, 0001h = extended)
- always 0001h for DOS 5+
- 49h WORD absolute cylinder number of partition's start on physical drive
- (FFFFh if primary partition in DOS 4.x)
- ------
- 4Bh 11 BYTEs volume label or "NO NAME " if none (apparently taken from
- extended boot record rather than root directory)
- 56h BYTE terminating null for volume label
- 57h DWORD serial number
- 5Bh 8 BYTEs filesystem type ("FAT12 " or "FAT16 ")
- 63h BYTE terminating null for filesystem type
- SeeAlso: #02601,#02602
- Bitfields for flags describing drive:
- Bit(s) Description (Table 02604)
- 0 fixed media
- 1 door lock ("changeline") supported
- 2 current BPB locked
- 3 all sectors in a track are the same size
- 4 physical drive has multiple logical units
- 5 current logical drive for shared physical drive
- 6 disk change detected
- 7 device parameters were changed (set DASD before formatting)
- (see #01560 at INT 21/AX=440Dh"DOS 3.2+")
- 8 disk reformatted (BPB of current media was changed)
- 9 access flag (fixed media only, disables reads and writes)
- (see #01566 at INT 21/AX=440Dh"DOS 3.2+")
- --------f-2F1000-----------------------------
- INT 2F - SHARE - INSTALLATION CHECK
- AX = 1000h
- Return: AL = status
- 00h not installed, OK to install
- 01h not installed, not OK to install
- FFh installed
- BUGS: values of AL other than 00h put DOS 3.x SHARE into an infinite loop
- (08E9: OR AL,AL
- 08EB: JNZ 08EB) <- the buggy instruction (DOS 3.3)
- values of AL other than described here put PC-DOS 4.00 into the same
- loop (the buggy instructions are the same)
- Notes: supported by OS/2 v1.3+ compatibility box, which always returns AL=FFh
- if DOS 4.01 SHARE was automatically loaded, file sharing is in an
- inactive state (due to the undocumented /NC flag used by the autoload
- code) until this call is made
- DOS 5+ chains to the previous handler if AL <> 00h on entry
- Windows Enhanced mode hooks this call and reports that SHARE is
- installed even when it is not
- SeeAlso: AX=1080h,INT 21/AH=52h,INT 21/AX=4457h/DX=FFFFh
- --------d-2F1001-----------------------------
- INT 2F U - DR DOS 6.0 SHARE internal - SET ???
- AX = 1001h
- DX:BX -> ???function
- Notes: this function is also supported by SuperStor, a disk-compression
- program by Addstor which is bundled with DR DOS 6.0, and the
- Novell DOS 7 DELWATCH.EXE
- the default handler for the pointer set by this call under DELWATCH
- simply returns with CF set
- SeeAlso: AX=1000h,AX=F800h
- --------f-2F1040-----------------------------
- INT 2F U - DOS 4 only SHARE internal - ???
- AX = 1040h
- ???
- Return: AL = FFh???
- SeeAlso: AX=1000h
- --------f-2F1080-----------------------------
- INT 2F U - DOS 4 only SHARE internal - TURN ON FILE SHARING CHECKS
- AX = 1080h
- Return: AL = status
- F0h successful
- FFh checking was already on
- Note: DOS 4.x SHARE has dual functions: FCB support for large (>32M) media
- and file sharing checks. The undocumented commandline flag /NC can
- be used to disable the sharing code.
- SeeAlso: AX=1000h,AX=1081h
- --------f-2F1081-----------------------------
- INT 2F U - DOS 4 only SHARE internal - TURN OFF FILE SHARING CHECKS
- AX = 1081h
- Return: AL = status
- F0h successful
- FFh checking was already off
- Note: (see AX=1080h)
- SeeAlso: AX=1000h,AX=1080h
- --------O-2F10FE-----------------------------
- INT 2F U - Novell DOS 7 DELWATCH.EXE - INSTALLATION CHECK
- AX = 10FEh
- Return: AX = 20FFh if installed and active
- DX:BX -> private entry point (see #02605)
- SeeAlso: #01352,INT 21/AX=4306h,INT 21/AX=5704h
- (Table 02605)
- Call DELWATCH private entry point with:
- AH = function
- 00h NOP???
- Return: AX = 0000h
- CX = 0004h (unsupported function)
- 01h disable DELWATCH on drive
- AL = drive number (00h = A:)
- Return: AX = status (0000h if failed, FFFFh if successful)
- 02h ???
- AL = drive number (00h = A:)
- ???
- Return: ???
- 03h ???
- AL = drive number (00h = A:)
- CX = ??? (0000h/0001h)
- ???
- Return: ???
- 04h ???
- AL = drive number (00h = A:)
- ???
- Return: ???
- 05h ???
- AL = drive number (00h = A:)
- ???
- Return: ???
- 06h enable DELWATCH on drive
- AL = drive number with bit 7 set (80h = A:, etc.)
- BX = maximum files of same name in one directory to save
- CX = maximum files to save on this disk
- ???
- Return: AX = status
- 0000h failed
- FFFFh successful
- CX = error code on failure
- (0004h if AL < 80h on entry)
- 07h ???
- 08h set file extensions list
- AL = sense (00h exclude named extensions, 01h only named ext.)
- DS:BX -> 31-byte ASCIZ extension list (three blank-padded bytes
- per extension)
- Return: AX = FFFFh (successful)
- 09h ???
- AL = drive number (00h = A:)
- ???
- Return: ???
- 0Ah ???
- AL = drive number (00h = A:)
- ???
- Return: ???
- 0Bh reset ???
- Return: AX = FFFFh (successful)
- see also function 0Dh
- 0Ch check if drive enabled
- AL = drive number with bit 7 set (80h = A:, etc.)
- Return: AX = state
- 0000h disabled or error (check CX)
- 0001h drive enabled
- CX = error code (0004h invalid drive number)
- 0Dh set ???
- BX = ???
- Return: AX = FFFFh (successful)
- see also function 0Bh
- 0Eh ???
- AL = drive number (00h = A:)
- ???
- Return: ???
- Return: AX = 0000h, CX = 0001h if DELWATCH busy
- registers unchanged if AH >= 0Fh on entry
- --------O-2F10FF-----------------------------
- INT 2F U - Multiplex - DR DOS 5.0 - ???
- AX = 10FFh
- ES:BX -> ???
- Note: sets pointer in kernel
- --------N-2F1100-----------------------------
- INT 2F C - NETWORK REDIRECTOR - INSTALLATION CHECK
- AX = 1100h
- Return: AL = status
- 00h not installed, OK to install
- 01h not installed, not OK to install
- FFh installed
- AH = product identifier (ad hoc by various manufacturers)
- 00h if PC Tools v8 DRIVEMAP
- 42h ('B') for Beame&Whiteside BWNFS v3.0a
- 6Eh ('n') for NetWare Lite v1.1 CLIENT
- Notes: this function is called by the DOS 3.1+ kernel
- in DOS 4.x only, the 11xx calls are all in IFSFUNC.EXE, not in the
- PC LAN Program redirector; DOS 5+ moves the calls back into the
- redirector
- the PC Network 1.00 redirector (renamed to PC LAN Program in 1.1-1.3)
- only supports AL=00h-27h
- --------d-2F1100SFDADA-----------------------
- INT 2F - MSCDEX (MS CD-ROM Extensions) - INSTALLATION CHECK
- AX = 1100h subfn DADAh
- STACK: WORD DADAh
- Return: AL = status
- 00h not installed, OK to install
- STACK unchanged
- 01h not installed, not OK to install
- STACK unchanged
- FFh installed
- STACK: WORD ADADh if MSCDEX installed
- DADBh if Lotus CD/Networker installed
- Note: although MSCDEX sets the stack word to ADADh on return, any value other
- than DADAh is considered to mean that MSCDEX is already installed;
- Lotus CD/Networker v4+ uses this feature to fool MSCDEX into
- thinking it is already installed when it is in fact CD/Networker
- that is installed
- Index: installation check;Lotus CD/Networker
- Index: Lotus CD/Networker;installation check
- --------N-2F1101-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - REMOVE REMOTE DIRECTORY
- AX = 1101h
- SS = DOS DS
- SDA first filename pointer -> fully-qualified directory name
- SDA CDS pointer -> current directory structure for drive with dir
- Return: CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- CF clear if successful
- Note: this function is called by the DOS 3.1+ kernel
- SeeAlso: AX=1103h,AX=1105h,INT 21/AH=3Ah,INT 21/AH=60h
- --------N-2F1102-----------------------------
- INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - REMOVE REMOTE DIRECTORY
- AX = 1102h
- SS = DOS DS
- SDA first filename pointer -> fully-qualified directory name
- SDA CDS pointer -> current directory structure for drive with dir
- Return: CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- CF clear if successful
- Note: appears to be identical to AX=1101h; MS internal documentation calls
- this function "SEQ_RMDIR"
- SeeAlso: AX=1101h
- --------N-2F1103-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - MAKE REMOTE DIRECTORY
- AX = 1103h
- SS = DOS DS
- SDA first filename pointer -> fully-qualified directory name
- SDA CDS pointer -> current directory structure for drive with dir
- Return: CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- CF clear if successful
- Note: this function is called by the DOS 3.1+ kernel
- SeeAlso: AX=1101h,AX=1105h,INT 21/AH=39h,INT 21/AH=60h
- --------N-2F1104-----------------------------
- INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - MAKE REMOTE DIRECTORY
- AX = 1104h
- SS = DOS DS
- SDA first filename pointer -> fully-qualified directory name
- SDA CDS pointer -> current directory structure for drive with dir
- Return: CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- CF clear if successful
- Note: appears to be identical to AX=1103h
- SeeAlso: AX=1103h
- --------N-2F1105-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - CHDIR
- AX = 1105h
- SS = DOS DS
- SDA first filename pointer -> fully-qualified directory name
- SDA CDS pointer -> current directory structure for drive with dir
- Return: CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- CF clear if successful
- CDS updated with new path
- Notes: this function is called by the DOS 3.1+ kernel
- directory string in CDS should not have a terminating backslash unless
- the current directory is the root
- SeeAlso: AX=1101h,AX=1103h,INT 21/AH=3Bh,INT 21/AH=60h
- --------N-2F1106-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - CLOSE REMOTE FILE
- AX = 1106h
- ES:DI -> filled-in SFT (assumed to point at SDA's current SFT field)
- Return: CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- CF clear if successful
- SFT updated (redirector must decrement open count, which may be
- done with INT 2F/AX=1208h)
- ES:DI must be preserved
- Note: this function is called by the DOS 3.1+ kernel
- SeeAlso: AX=1116h,AX=1201h,AX=1208h,AX=1227h,INT 21/AH=3Eh
- --------N-2F1107-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - COMMIT REMOTE FILE
- AX = 1107h
- ES:DI -> filled-in SFT (assumed to point at SDA's current SFT field)
- Return: CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- CF clear if successful
- all buffers for file flushed
- directory entry updated
- ES:DI must be preserved
- Desc: perform all the buffer flushing, directory updates, etc. that would be
- performed on a file close, but do not decrement the SFT reference
- count
- Note: this function is called by the DOS 3.1+ kernel
- SeeAlso: INT 21/AH=68h,INT 21/AX=5D01h
- --------N-2F1108-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - READ FROM REMOTE FILE
- AX = 1108h
- ES:DI -> SFT
- SFT DPB field -> DPB of drive containing file
- CX = number of bytes
- SS = DOS DS
- SDA DTA field -> user buffer
- Return: CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- CF clear if successful
- CX = number of bytes read (0000h = end of file)
- SFT updated
- Note: this function is called by the DOS 3.1+ kernel
- SeeAlso: AX=1109h,AX=1229h,INT 21/AH=3Fh"DOS",INT 21/AX=5D06h
- --------N-2F1109-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - WRITE TO REMOTE FILE
- AX = 1109h
- ES:DI -> SFT
- SFT DPB field -> DPB of drive containing file
- CX = number of bytes
- SS = DOS DS
- SDA DTA field -> user buffer
- Return: CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- CF clear if successful
- CX = number of bytes written
- SFT updated
- Notes: this function is called by the DOS 3.1+ kernel
- PrintCache v3.1 PCACHE.EXE intercepts this function for SFTs where
- the Device Driver Header field points at PCACHE, but does not
- intercept any other network redirector functions
- SeeAlso: AX=1107h,AX=1108h,INT 21/AH=40h,INT 21/AX=5D06h
- --------N-2F110A-----------------------------
- INT 2F CU - NETWORK REDIRECTOR (DOS 3.x only) - LOCK REGION OF FILE
- AX = 110Ah
- BX = file handle
- CX:DX = starting offset
- SI = high word of size
- STACK: WORD low word of size
- ES:DI -> SFT
- SFT DPB field -> DPB of drive containing file
- SS = DOS DS
- Return: CF set on error
- AL = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- STACK unchanged
- Notes: this function is called by the DOS 3.10-3.31 kernel
- the redirector is expected to resolve lock conflicts
- SeeAlso: AX=110Bh,INT 21/AH=5Ch
- --------N-2F110A-----------------------------
- INT 2F CU - NETWORK REDIRECTOR (DOS 4.0+) - LOCK/UNLOCK REGION OF FILE
- AX = 110Ah
- BL = function
- 00h lock
- 01h unlock
- CX = number of lock/unlock parameters (0001h for DOS 4.0-6.1)
- DS:DX -> parameter block (see #02606)
- ES:DI -> SFT
- SFT DPB field -> DPB of drive containing file
- SS = DOS DS
- Return: CF set on error
- AL = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- Notes: this function is called by the DOS 4.0+ kernel
- the redirector is expected to resolve lock conflicts
- SeeAlso: AX=110Bh,INT 21/AH=5Ch
- Format of parameter block entry [array, but currently limited to single entry]:
- Offset Size Description (Table 02606)
- 00h DWORD start offset
- 04h DWORD size of region
- --------N-2F110B-----------------------------
- INT 2F CU - NETWORK REDIRECTOR (DOS 3.x only) - UNLOCK REGION OF FILE
- AX = 110Bh
- BX = file handle
- CX:DX = starting offset
- SI = high word of size
- STACK: WORD low word of size
- ES:DI -> SFT for file
- SFT DPB field -> DPB of drive containing file
- Return: CF set on error
- AL = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- STACK unchanged
- Note: this function is called by the DOS 3.1-3.31 kernel; DOS 4.0+ calls
- AX=110Ah instead
- SeeAlso: AX=110Ah,INT 21/AH=5Ch
- --------N-2F110C-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - GET DISK INFORMATION
- AX = 110Ch
- ES:DI -> current directory structure for desired drive
- Return: CF clear if data valid
- AL = sectors per cluster
- AH = media ID byte
- BX = total clusters
- CX = bytes per sector
- DX = number of available clusters
- CF set if data invalid
- Note: this function is called by the DOS 3.1+ kernel
- SeeAlso: INT 21/AH=36h
- --------N-2F110D-----------------------------
- INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - SET REMOTE FILE'S ATTRIBUTES
- AX = 110Dh
- SDA first filename pointer -> name of file
- ???
- Return: ???
- Note: similar to AX=110Eh
- SeeAlso: AX=110Eh
- --------N-2F110E-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - SET REMOTE FILE'S ATTRIBUTES
- AX = 110Eh
- SS = DOS DS
- SDA first filename pointer -> fully-qualified name of file
- SDA CDS pointer -> current directory structure for drive with file
- STACK: WORD new file attributes
- Return: CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- CF clear if successful
- STACK unchanged
- Note: this function is called by the DOS 3.1+ kernel
- SeeAlso: AX=110Dh,AX=110Fh,INT 21/AX=4301h,INT 21/AH=60h
- --------N-2F110F-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - GET REMOTE FILE'S ATTRIBUTES AND SIZE
- AX = 110Fh
- SS = DOS DS
- SDA first filename pointer -> fully-qualified name of file
- SDA CDS pointer -> current directory structure for drive with file
- (offset = FFFFh if null CDS [net direct request])
- SDA search attributes = mask of attributes which may be included in
- search for file
- Return: CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- CF clear if successful
- AX = file attributes
- BX:DI = file size
- CX = time stamp of file
- DX = date stamp of file
- Notes: this function is called by the DOS 3.1+ kernel
- wildcards and device names are not permitted
- SeeAlso: AX=110Eh,INT 21/AX=4300h,INT 21/AH=60h
- --------N-2F1110-----------------------------
- INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - GET REMOTE FILE'S ATTRIBUTES AND SIZE
- AX = 1110h
- SDA first filename pointer -> name of file
- ???
- Return: ???
- Note: appears to be similar to AX=110Fh
- SeeAlso: AX=110Eh
- --------N-2F1111-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - RENAME REMOTE FILE
- AX = 1111h
- SS = DS = DOS DS
- SDA first filename pointer = offset of fully-qualified old name
- SDA second filename pointer = offset of fully-qualified new name
- SDA CDS pointer -> current directory structure for drive with file
- Return: CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- CF clear if successful
- Note: this function is called by the DOS 3.1+ kernel
- SeeAlso: AX=1112h,INT 21/AH=56h,INT 21/AH=60h
- --------N-2F1112-----------------------------
- INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - RENAME REMOTE FILE
- AX = 1112h
- SS = DS = DOS DS
- SDA first filename pointer -> name of file
- ???
- Return: ???
- Note: similar to AX=1111h
- SeeAlso: AX=1111h
- --------N-2F1113-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - DELETE REMOTE FILE
- AX = 1113h
- SS = DS = DOS DS
- SDA first filename pointer -> fully-qualified filename in DOS DS
- SDA CDS pointer -> current directory structure for drive with file
- Return: CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- CF clear if successful
- Notes: this function is called by the DOS 3.1+ kernel
- the filespec may contain wildcards
- SeeAlso: AX=1114h,INT 21/AH=41h,INT 21/AH=60h
- --------N-2F1114-----------------------------
- INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - DELETE REMOTE FILE
- AX = 1114h
- SDA first filename pointer -> name of file
- ???
- Return: ???
- Note: similar to AX=1113h
- SeeAlso: AX=1113h
- --------N-2F1115-----------------------------
- INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - OPEN REMOTE FILE
- AX = 1115h
- SS = DOS DS
- ES:DI -> SFT ???
- ???
- Return: ???
- Note: similar to AX=1116h
- SeeAlso: AX=1116h,AX=112Eh
- --------N-2F1116-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - OPEN EXISTING REMOTE FILE
- AX = 1116h
- ES:DI -> uninitialized SFT
- SS = DOS DS
- SDA first filename pointer -> fully-qualified name of file to open
- STACK: WORD file access and sharing modes (see #01402 at INT 21/AH=3Dh)
- Return: CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- CF clear if successful
- SFT filled (except handle count, which DOS manages itself)
- STACK unchanged
- Note: this function is called by the DOS 3.1+ kernel
- SeeAlso: AX=1106h,AX=1115h,AX=1117h,AX=1118h,AX=112Eh,INT 21/AH=3Dh
- SeeAlso: INT 21/AH=60h
- --------N-2F1117-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - CREATE/TRUNCATE REMOTE FILE
- AX = 1117h
- ES:DI -> uninitialized SFT
- SS = DOS DS
- SDA first filename pointer -> fully-qualified name of file to open
- SDA CDS pointer -> current directory structure for drive with file
- STACK: WORD file creation mode
- low byte = file attributes (see #01401 at INT 21/AH=3Ch)
- high byte = 00h normal create, 01h create new file
- Return: CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- CF clear if successful
- SFT filled (except handle count, which DOS manages itself)
- STACK unchanged
- Note: this function is called by the DOS 3.1+ kernel
- SeeAlso: AX=1106h,AX=1116h,AX=1118h,AX=112Eh,INT 21/AH=3Ch,INT 21/AH=60h
- --------N-2F1118-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - CREATE/TRUNCATE FILE WITHOUT CDS
- AX = 1118h
- ES:DI -> uninitialized SFT
- SS = DOS DS
- SDA first filename pointer -> fully-qualified name of file
- STACK: WORD file creation mode
- low byte = file attributes
- high byte = 00h normal create, 01h create new file
- Return: ???
- STACK unchanged
- Note: this function is called by the DOS 3.1+ kernel when creating a file
- on a drive for which the SDA CDS pointer has offset FFFFh
- SeeAlso: AX=1106h,AX=1116h,AX=1117h,AX=112Eh,INT 21/AH=60h
- --------N-2F1119-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - FIND FIRST FILE WITHOUT CDS
- AX = 1119h
- SS = DS = DOS DS
- [DTA] = uninitialized 21-byte findfirst search data
- (see #01626 at INT 21/AH=4Eh)
- SDA first filename pointer -> fully-qualified search template
- SDA search attribute = attribute mask for search
- Return: CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- CF clear if successful
- [DTA] = updated findfirst search data
- (bit 7 of first byte must be set)
- [DTA+15h] = standard directory entry for file (see #01352)
- Notes: this function is called by the DOS 3.1+ kernel
- DOS 4.x IFSFUNC returns CF set, AX=0003h
- SeeAlso: AX=111Ah,AX=111Bh,INT 21/AH=1Ah
- --------N-2F111A-----------------------------
- INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - FIND NEXT FILE WITHOUT CDS
- AX = 111Ah
- ???
- Return: CF set
- AX = error code (03h for DOS 4.01 IFSFUNC)
- Note: use AX=111Ch for DOS 5+
- SeeAlso: AX=1119h,AX=111Ch
- --------N-2F111B-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - FINDFIRST
- AX = 111Bh
- SS = DS = DOS DS
- [DTA] = uninitialized 21-byte findfirst search data
- (see #01626 at INT 21/AH=4Eh)
- SDA first filename pointer -> fully-qualified search template
- SDA CDS pointer -> current directory structure for drive with file
- SDA search attribute = attribute mask for search
- Return: CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- CF clear if successful
- [DTA] = updated findfirst search data
- (bit 7 of first byte must be set)
- [DTA+15h] = standard directory entry for file (see #01352)
- Note: this function is called by the DOS 3.1+ kernel
- SeeAlso: AX=1119h,AX=111Ch,INT 21/AH=1Ah,INT 21/AH=4Eh,INT 21/AH=60h
- --------N-2F111C-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - FINDNEXT
- AX = 111Ch
- SS = DS = DOS DS
- ES:DI -> CDS
- ES:DI -> DTA (MSDOS v5.0)
- [DTA] = 21-byte findfirst search data
- (see #01626 at INT 21/AH=4Eh)
- Return: CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- CF clear if successful
- [DTA] = updated findfirst search data
- (bit 7 of first byte must be set)
- [DTA+15h] = standard directory entry for file (see #01352)
- Note: this function is called by the DOS 3.1+ kernel
- SeeAlso: AX=1119h,AX=111Bh,INT 21/AH=1Ah,INT 21/AH=4Fh
- --------N-2F111D-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - CLOSE ALL REMOTE FILES FOR PROCESS (ABORT)
- AX = 111Dh
- SS = DOS DS
- SDA PSP segment field = PSP of terminating process
- Return: nothing
- Notes: used when a process is aborted; the process being terminated is
- indicated by the "sharing PSP" field in the SDA (offset 1Ah/1Ch)
- this function is called by the DOS 3.1+ kernel
- closes all FCBs opened by process
- SeeAlso: INT 21/AX=5D04h
- --------N-2F111E-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - DO REDIRECTION
- AX = 111Eh
- SS = DOS DS
- STACK: WORD function to execute
- 5F00h get redirection mode
- BL = type (03h printer, 04h disk)
- Return: BH = state (00h off, 01h on)
- 5F01h set redirection mode
- BL = type (03h printer, 04h disk)
- BH = state (00h off, 01h on)
- 5F02h get redirection list entry
- BX = redirection list index
- DS:SI -> 16-byte local device name buffer
- ES:DI -> 128-byte network name buffer
- Return: must set user's BX to device type and CX to
- stored parameter value, using AX=1218h to get
- stack frame address
- 5F03h redirect device
- BL = device type (see INT 21/AX=5F03h)
- CX = stored parameter value
- DS:SI -> ASCIZ source device name
- ES:DI -> destination ASCIZ network path + ASCIZ passwd
- 5F04h cancel redirection
- DS:SI -> ASCIZ device name or network path
- 5F05h get redirection list extended entry
- BX = redirection list index
- DS:SI -> buffer for ASCIZ source device name
- ES:DI -> buffer for destination ASCIZ network path
- Return: BH = status flag
- BL = type (03h printer, 04h disk)
- CX = stored parameter value
- BP = NETBIOS local session number
- 5F06h similar to 5F05h???
- Return: CF set on error
- AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
- STACK unchanged
- Notes: this function is called by the DOS 3.1+ kernel on INT 21/AH=5Fh
- (including LAN Manager calls)
- the PC Network 1.00 redirector does not support function 5F06h
- SeeAlso: INT 21/AX=5F00h,INT 21/AX=5F01h,INT 21/AX=5F02h,INT 21/AX=5F03h
- SeeAlso: INT 21/AX=5F04h,INT 21/AX=5F05h,INT 21/AX=5F06h
- --------N-2F111F-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - PRINTER SETUP
- AX = 111Fh
- STACK: WORD function
- 5E02h set printer setup
- 5E03h get printer setup
- 5E04h set printer mode
- 5E05h get printer mode
- Return: CF set on error
- AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
- STACK unchanged
- Note: this function is called by the DOS 3.1+ kernel
- SeeAlso: INT 21/AX=5E02h,INT 21/AX=5E03h,INT 21/AX=5E04h,INT 21/AX=5E05h
- --------N-2F1120-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - FLUSH ALL DISK BUFFERS
- AX = 1120h
- DS = DOS DS
- ???
- Return: CF clear (successful)
- Notes: this function is called by the DOS 3.1+ kernel
- uses CDS array pointer and LASTDRIVE= entries in DOS list of lists
- SeeAlso: INT 21/AH=0Dh,INT 21/AX=5D01h
- --------N-2F1121-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - SEEK FROM END OF REMOTE FILE
- AX = 1121h
- CX:DX = offset (in bytes) from end
- ES:DI -> SFT
- SFT DPB field -> DPB of drive with file
- SS = DOS DS
- Return: CF set on error
- AL = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- CF clear if successful
- DX:AX = new file position
- Note: this function is called by the DOS 3.1+ kernel, but only when seeking
- from the end of a file opened with sharing modes set in such a
- manner that another process is able to change the size of the file
- while it is already open
- SeeAlso: AX=1228h,INT 21/AH=42h
- --------N-2F1122-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - PROCESS TERMINATION HOOK
- AX = 1122h
- SS = DOS DS
- DS = PSP of process about to terminate
- Return: ???
- Notes: this function is called by the DOS 3.1+ kernel
- after calling this function, the kernel calls INT 2F/AX=111Dh
- SeeAlso: AX=111Dh,INT 21/AH=4Ch,INT 60/DI=0601h
- --------N-2F1123-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - QUALIFY REMOTE FILENAME
- AX = 1123h
- DS:SI -> ASCIZ filename to canonicalize
- ES:DI -> 128-byte buffer for qualified name
- Return: CF set if not resolved
- Notes: called by MS-DOS 3.1+ kernel, but not called by DR DOS 5.0 unless the
- filename matches the name of a character device
- called first when DOS attempts to resolve a filename (unless inside an
- AX=5D00h server call); if this fails, DOS resolves the name locally
- SeeAlso: AX=1221h,INT 21/AH=60h
- --------N-2F1124-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - TURN OFF REMOTE PRINTER
- AX = 1124h
- ES:DI -> SFT
- SS = DOS DS
- ???
- Return: CX = ???
- Note: this function is called by the DOS 3.1+ kernel if AX=1126h
- returns CF set
- SeeAlso: AX=1126h
- --------N-2F1125-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - REDIRECTED PRINTER MODE
- AX = 1125h
- STACK: WORD subfunction
- 5D07h get print stream state
- Return: DL = current state
- 5D08h set print stream state
- DL = new state
- 5D09h finish print job
- Return: CF set on error
- AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
- STACK unchanged
- Note: this function is called by the DOS 3.1+ kernel
- SeeAlso: INT 21/AX=5D07h,INT 21/AX=5D08h,INT 21/AX=5D09h
- --------N-2F1126-----------------------------
- INT 2F CU - NETWORK REDIRECTOR - REMOTE PRINTER ECHO ON/OFF
- AX = 1126h
- ES:DI -> SFT for file handle 4???
- SS = DOS DS???
- ???
- Return: CF set on error
- Notes: this function is called by the DOS 3.1+ kernel
- called when print echoing (^P, ^PrtSc) changes state and STDPRN has
- bit 11 of the device information word in the SFT set
- SeeAlso: AX=1124h
- --------N-2F1127-----------------------------
- INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - UNUSED
- AX = 1127h
- Return: CF set
- AX = 0001h (invalid function) (see #01680 at INT 21/AH=59h/BX=0000h)
- --------N-2F1127BX4E57-----------------------
- INT 2F - NetWare 4.0 - REMOTE FILE COPY
- AX = 1127h
- BX = 4E57h ('NW') (signature identifying this as a NetWare call)
- SI = source file handle
- DI = destination file handle
- DX:CX = number of bytes to copy, starting at current file position
- Return: CF clear if successful
- CF set on error
- AX = error code (05h,06h,0Bh,11h,3Bh) (see #01680)
- DX:CX = number of bytes successfully copied (file position updated)
- Notes: this is the only call which may be made directly to the NetWare
- redirector from an application
- COMMAND.COM's COPY and DOS's XCOPY reportedly call INT 21/AX=1127h in
- order to speed up copies between files on the same network server;
- if error code 11h (not same device) is returned, the copy is
- performed in the usual manner. However, no such calls appear to
- be present in MS-DOS 6.22.
- --------N-2F1128-----------------------------
- INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - UNUSED
- AX = 1128h
- Return: CF set
- AX = 0001h (invalid function) (see #01680 at INT 21/AH=59h/BX=0000h)
- --------N-2F1129-----------------------------
- INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - UNUSED
- AX = 1129h
- Return: CF set
- AX = 0001h (invalid function) (see #01680 at INT 21/AH=59h/BX=0000h)
- --------N-2F112A-----------------------------
- INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - CLOSE ALL FILES FOR PROCESS
- AX = 112Ah
- DS = DOS DS
- ???
- Return: ???
- Note: does something to each IFS driver
- --------N-2F112B-----------------------------
- INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - GENERIC IOCTL
- AX = 112Bh
- SS = DOS DS
- CX = function/category
- DS:DX -> parameter block
- STACK: WORD value of AX on entry to INT 21 (440Ch or 440Dh)
- ???
- Return: CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- CF clear if successful
- Note: this function is called by the DOS 4.0 kernel
- --------N-2F112C-----------------------------
- INT 2F CU - NETWORK REDIRECTOR (DOS 4.0+) - "UPDATE_CB" - ???
- AX = 112Ch
- SS = DOS DS
- SDA current SFT pointer -> SFT for file
- ???
- Return: CF set on error
- Note: called by SHARE in DOS 5.0-6.0
- --------N-2F112D-----------------------------
- INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - EXTENDED ATTRIBUTES
- AX = 112Dh
- BL = subfunction (value of AL on INT 21)
- 02h get extended attributes
- 03h get extended attribute properties
- 04h set extended attributes
- Return: CF clear
- else ???
- Return: CX = ??? (00h or 02h for DOS 4.01)
- ES:DI -> SFT for file
- SS = DOS DS
- Return: DS = DOS DS
- Note: this function is called by the DOS 4.0 kernel on INT 21/AX=5702h,
- INT 21/AX=5703h, and INT 21/AX=5704h
- SeeAlso: INT 21/AX=5702h,INT 21/AX=5703h,INT 21/AX=5704h,INT 21/AH=6Eh
- --------N-2F112E-----------------------------
- INT 2F CU - NETWORK REDIRECTOR (DOS 4.0+) - EXTENDED OPEN/CREATE FILE
- AX = 112Eh
- SS = DS = DOS DS
- ES:DI -> uninitialized SFT for file
- STACK: WORD file attribute for created/truncated file
- low byte = file attributes
- high byte = 00h normal create/open, 01h create new file
- SDA first filename pointer -> fully-qualified filename
- SDA extended file open action = action code
- (see #01770 at INT 21/AX=6C00h)
- SDA extended file open mode = open mode for file (see INT 21/AX=6C00h)
- Return: CF set on error
- AX = error code
- CF clear if successful
- CX = result code
- 01h file opened
- 02h file created
- 03h file replaced (truncated)
- SFT initialized (except handle count, which DOS manages itself)
- Note: this function is called by the DOS 4.0+ kernel
- BUG: this function is not called correctly under some DOS versions
- (at least 5.0 and 6.2):
- the file attribute on the stack is not correct if the action
- code is 11h,
- the result code in CX is not passed back to the application.
- SeeAlso: AX=1115h,AX=1116h,AX=1117h,INT 21/AX=6C00h
- --------N-2F112F-----------------------------
- INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - IFS IOCTL
- AX = 112Fh
- SS = DOS DS
- STACK: WORD function in low byte
- 00h ???
- DS:SI -> Current Directory Structure???
- CL = drive (1=A:)
- 01h ???
- DS:SI -> ???
- CL = file handle???
- 02h ???
- DS:SI -> Current Directory Structure???
- DI = ???
- CX = drive (1=A:)
- ???
- Return: CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- CF clear if successful
- Note: this function is called by the DOS 4.0 kernel
- SeeAlso: INT 21/AH=6Bh
- --------N-2F1130-----------------------------
- INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - GET IFSFUNC SEGMENT
- AX = 1130h
- Return: ES = CS of resident IFSFUNC
- --------N-2F1180-----------------------------
- INT 2F - LAN Manager Enhanced DOS Services - ???
- AX = 1180h
- ???
- Return: ???
- SeeAlso: AX=1100h,AX=1181h,AX=118Eh
- --------N-2F1181-----------------------------
- INT 2F - LAN Manager Enhanced DOS Services - SET USER NAME???
- AX = 1181h
- ???
- Return: ???
- SeeAlso: AX=1100h,AX=1180h
- --------N-2F1182-----------------------------
- INT 2F - LAN Manager Enhanced DOS Services - INSTALL SERVICE
- AX = 1182h
- ???
- Return: ???
- SeeAlso: AX=1100h,AX=1180h
- --------N-2F1184-----------------------------
- INT 2F - LAN Manager Enhanced DOS - ???
- AX = 1184h
- ???
- Return: ???
- --------N-2F1186-----------------------------
- INT 2F - LAN Manager Enhanced DOS - DosReadAsynchNmPipe
- AX = 1186h
- DS:SI -> stack frame (see #02607)
- Return: CF clear if successful
- CF set if error
- AX = error code
- Note: LAN Manager enhance mode adds features beyond the standard redirector
- file/printer services
- SeeAlso: AX=118Fh,AX=1190h,AX=1191h,INT 21/AX=5F39h
- Format of LAN Manager DosReadAsynchNmPipe stack frame:
- Offset Size Description (Table 02607)
- 00h DWORD -> number of bytes read
- 04h WORD size of buffer
- 06h DWORD -> buffer
- 0Ah DWORD -> return code
- 0Eh DWORD function to call on completion as function( char far *buffer )
- 12h WORD handle
- --------N-2F118A-----------------------------
- INT 2F - LAN Manager 2.0+ DOS Enhanced ENCRYPT.EXE - STREAM ENCRYPTION SERVICE
- AX = 118Ah
- BX = function (0000h or 0001h)
- Return: CF clear if successful
- AX = 1100h success
- CF set if error
- AX = 0001h, etc.
- SeeAlso: AX=1186h,AH=41h,AH=42h,AH=4Bh
- --------N-2F118B-----------------------------
- INT 2F - LAN Manager Enhanced DOS - ???
- AX = 118Bh
- ???
- Return: ???
- --------N-2F118C-----------------------------
- INT 2F - LAN Manager Enhanced DOS - ???
- AX = 118Ch
- ???
- Return: ???
- --------N-2F118E-----------------------------
- INT 2F - LAN Manager Enhanced DOS - ???
- AX = 118Eh
- ???
- Return: ???
- --------N-2F118F-----------------------------
- INT 2F - LAN Manager Enhanced DOS - DosWriteAsynchNmPipe
- AX = 118Fh
- DS:SI -> stack frame (see #02608)
- Return: CF clear if successful
- CF set if error
- AX = error code
- SeeAlso: AX=1186h,AX=1191h,INT 21/AX=5F3Ah
- Format of LAN Manager DosReadAsynchNmPipe stack frame:
- Offset Size Description (Table 02608)
- 00h DWORD -> number of bytes read
- 04h WORD Size of buffer
- 06h DWORD -> buffer
- 0Ah DWORD -> return code
- 0Eh DWORD function to call on completion as function( char far *buffer )
- 12h WORD handle
- --------N-2F1190-----------------------------
- INT 2F - LAN Manager Enhanced DOS - DosReadAsynchNmPipe2
- AX = 1190h
- DS:SI -> stack frame (see #02609)
- Return: CF clear if successful
- CF set if error
- AX = error code
- SeeAlso: AX=1186h,AX=1191h
- Format of LAN Manager DosReadAsynchNmPipe2 stack frame:
- Offset Size Description (Table 02609)
- 00h DWORD -> number of bytes read
- 04h WORD size of buffer
- 06h DWORD -> buffer
- 0Ah DWORD -> return code
- 0Eh DWORD function to call on completion as function( char far *buffer )
- 12h WORD handle
- 14h DWORD ???
- --------N-2F1191-----------------------------
- INT 2F - LAN Manager Enhanced DOS - DosWriteAsynchNmPipe2
- AX = 1191h
- DS:SI -> stack frame (see #02610)
- Return: CF clear if successful
- CF set if error
- AX = error code
- SeeAlso: AX=118Fh,AX=1190h,INT 21/AX=5F3Ah
- Format of LAN Manager DosReadAsynchNmPipe2 stack frame:
- Offset Size Description (Table 02610)
- 00h DWORD -> number of bytes read
- 04h WORD size of buffer
- 06h DWORD -> buffer
- 0Ah DWORD -> return code
- 0Eh DWORD function to call on completion as function( char far *buffer )
- 12h WORD handle
- 14h DWORD ???
- --------D-2F1200-----------------------------
- INT 2F U - DOS 3.0+ internal - INSTALLATION CHECK
- AX = 1200h
- Return: AL = FFh (for compatibility with other INT 2F functions)
- --------D-2F1201-----------------------------
- INT 2F U - DOS 3.0+ internal - CLOSE CURRENT FILE
- AX = 1201h
- SS = DOS DS = DOS kernel data seg (must be using a DOS internal stack)
- SDA current SFT pointer -> SFT of file to close
- Return: CF set on error
- ES:DI -> SFT for file
- CX undefined (new reference count of SFT in many versions)
- BX destroyed
- SeeAlso: AX=1106h,AX=1227h,INT 21/AH=3Eh
- --------D-2F1202-----------------------------
- INT 2F U - DOS 3.0+ internal - GET INTERRUPT ADDRESS
- AX = 1202h
- STACK: WORD vector number
- Return: ES:BX -> interrupt vector (DWORD containing handler's address)
- STACK unchanged
- --------D-2F1203-----------------------------
- INT 2F U - DOS 3.0+ internal - GET DOS DATA SEGMENT
- AX = 1203h
- Return: DS = data segment of IBMDOS.COM/MSDOS.SYS
- Note: for DOS prior to version 5.0, the data segment is the same as the code
- segment
- --------D-2F1204-----------------------------
- INT 2F U - DOS 3.0+ internal - NORMALIZE PATH SEPARATOR
- AX = 1204h
- STACK: WORD character to normalize
- Return: AL = normalized character (forward slash turned to backslash, all
- others unchanged)
- ZF set if path separator
- STACK unchanged
- --------D-2F1205-----------------------------
- INT 2F U - DOS 3.0+ internal - OUTPUT CHARACTER TO STANDARD OUTPUT
- AX = 1205h
- STACK: WORD character to output
- Return: STACK unchanged
- Note: can be called only from within DOS
- --------D-2F1206-----------------------------
- INT 2F U - DOS 3.0+ internal - INVOKE CRITICAL ERROR
- AX = 1206h
- DI = error code
- BP:SI -> device driver header (see #01646)
- SS = DOS DS (must be using a DOS internal stack)
- STACK: WORD value to be passed to INT 24 in AX
- Return: AL = 0-3 for Abort, Retry, Ignore, Fail
- STACK unchanged
- SeeAlso: INT 24
- --------D-2F1207-----------------------------
- INT 2F U - DOS 3.0+ internal - MAKE DISK BUFFER MOST-RECENTLY USED
- AX = 1207h
- DS:DI -> disk buffer
- Return: nothing
- Desc: move the indicated buffer to the end of the disk buffer chain (least-
- recently used is first); under DOS 3.3, the buffer is then moved to
- the start of the disk buffer chain if it was marked unused
- Notes: can be called only from within DOS
- this function is nearly the same as AX=120Fh
- SeeAlso: AX=120Fh
- --------D-2F1208-----------------------------
- INT 2F U - DOS 3.0+ internal - DECREMENT SFT REFERENCE COUNT
- AX = 1208h
- ES:DI -> SFT
- Return: AX = original value of reference count
- Notes: if the reference count was 1, it is set to FFFFh ("busy", since 0
- indicates that the SFT is not in use). It is the caller's
- responsibility to set the reference count to zero after cleaning up.
- used by network redirectors such as MSCDEX
- SeeAlso: AX=1106h
- --------D-2F1209-----------------------------
- INT 2F U - DOS 3.0+ internal - FLUSH AND FREE DISK BUFFER
- AX = 1209h
- DS:DI -> disk buffer
- Return: disk buffer marked unused, contents written to disk if buffer dirty
- Note: can be called only from within DOS
- SeeAlso: AX=120Eh,AX=1215h
- --------D-2F120A-----------------------------
- INT 2F U - DOS 3.0+ internal - PERFORM CRITICAL ERROR INTERRUPT
- AX = 120Ah
- DS = SS = DOS DS (must be using a DOS internal stack)
- STACK: WORD extended error code
- Return: AL = user response (0=ignore, 1=retry, 2=abort, 3=fail)
- CF clear if retry, set otherwise
- STACK unchanged
- Notes: can only be called during a DOS function call, as it uses various
- fields in the SDA to set up the registers for the INT 24
- reportedly sets current DPB's first root directory sector to 1
- SeeAlso: INT 24
- --------D-2F120B-----------------------------
- INT 2F U - DOS 3.0+ internal - SIGNAL SHARING VIOLATION TO USER
- AX = 120Bh
- ES:DI -> system file table entry for previous open of file
- STACK: WORD extended error code (should be 20h--sharing violation)
- Return: CF clear if operation should be retried
- CF set if operation should not be retried
- AX = error code (20h) (see #01680 at INT 21/AH=59h/BX=0000h)
- STACK unchanged
- Notes: can only be called during a DOS function call
- should only be called if an attempt was made to open an already-open
- file contrary to the sharing rules
- invokes INT 24 if SFT file opened via FCB or in compatibility mode with
- inheritance allowed
- --------D-2F120C-----------------------------
- INT 2F U - DOS 3.0+ internal - OPEN DEVICE AND SET SFT OWNER/MODE
- AX = 120Ch
- SDA current SFT pointer -> SFT for file
- DS = DOS DS
- SS = DOS DS (must be using a DOS internal stack)
- Return: ES, DI, AX destroyed
- Notes: invokes "device open" call on device driver for SFT
- changes owner of last-accessed SFT to calling process if it was opened
- via FCB
- called by network redirectors such as MSCDEX
- --------D-2F120D-----------------------------
- INT 2F U - DOS 3.0+ internal - GET DATE AND TIME
- AX = 120Dh
- SS = DOS DS (must be using a DOS internal stack)
- Return: AX = current date in packed format (see #01666 at INT 21/AX=5700h)
- DX = current time in packed format (see #01665 at INT 21/AX=5700h)
- SeeAlso: INT 21/AH=2Ah,INT 21/AH=2Ch
- --------D-2F120E-----------------------------
- INT 2F U - DOS 3.0+ internal - MARK ALL DISK BUFFERS UNREFERENCED
- AX = 120Eh
- SS = DOS DS (must be using a DOS internal stack)
- Return: DS:DI -> first disk buffer
- Notes: clears "referenced" flag on all disk buffers
- in DOS 5+, this has become essentially a NOP, invoking the same code
- used by AX=1224h (SHARING DELAY)
- SeeAlso: AX=1209h,AX=1210h,INT 21/AH=0Dh
- --------D-2F120F-----------------------------
- INT 2F U - DOS 3.0+ internal - MAKE BUFFER MOST RECENTLY USED
- AX = 120Fh
- DS:DI -> disk buffer
- SS = DOS DS (must be using a DOS internal stack)
- Return: DS:DI -> next buffer in buffer list
- Desc: move the indicated buffer to the end of the disk buffer chain (least-
- recently used is first); under DOS 3.3, the buffer is then moved to
- the start of the disk buffer chain if it was marked unused
- Note: this function is the same as AX=1207h except that it returns a
- pointer to the buffer following the specified buffer in the buffer
- chain
- SeeAlso: AX=1207h
- --------D-2F1210-----------------------------
- INT 2F U - DOS 3.0+ internal - FIND UNREFERENCED DISK BUFFER
- AX = 1210h
- DS:DI -> first disk buffer to check
- Return: ZF clear if found
- DS:DI -> first unreferenced disk buffer
- ZF set if not found
- Note: in DOS 5+, this has become essentially a NOP, invoking the same code
- used by AX=1224h (SHARING DELAY)
- SeeAlso: AX=120Eh
- --------D-2F1211-----------------------------
- INT 2F U - DOS 3.0+ internal - NORMALIZE ASCIZ FILENAME
- AX = 1211h
- DS:SI -> ASCIZ filename to normalize
- ES:DI -> buffer for normalized filename
- Return: destination buffer filled with uppercase filename, with slashes turned
- to backslashes
- SeeAlso: AX=121Eh,AX=1221h
- --------D-2F1212-----------------------------
- INT 2F U - DOS 3.0+ internal - GET LENGTH OF ASCIZ STRING
- AX = 1212h
- ES:DI -> ASCIZ string
- Return: CX = length of string
- SeeAlso: AX=1225h
- --------D-2F1213-----------------------------
- INT 2F U - DOS 3.0+ internal - UPPERCASE CHARACTER
- AX = 1213h
- STACK: WORD character to convert to uppercase
- Return: AL = uppercase character
- STACK unchanged
- --------D-2F1214-----------------------------
- INT 2F U - DOS 3.0+ internal - COMPARE FAR POINTERS
- AX = 1214h
- DS:SI = first pointer
- ES:DI = second pointer
- Return: ZF set if pointers are equal, ZF clear if not equal
- CF clear if pointers equal, CF set if not
- --------D-2F1215-----------------------------
- INT 2F U - DOS 3.0+ internal - FLUSH BUFFER
- AX = 1215h
- DS:DI -> disk buffer
- SS = DOS DS (must be using a DOS internal stack)
- STACK: WORD drives for which to skip buffer
- ignore buffer if drive same as high byte, or bytes differ and
- the buffer is for a drive OTHER than that given in low byte
- Return: STACK unchanged
- Note: can be called only from within DOS
- SeeAlso: AX=1209h
- --------D-2F1216-----------------------------
- INT 2F U - DOS 3.0+ internal - GET ADDRESS OF SYSTEM FILE TABLE ENTRY
- AX = 1216h
- BX = system file table entry number
- Return: CF clear if successful
- ES:DI -> system file table entry
- BX = relative entry number in system file table containing entry
- AX destroyed
- CF set if BX greater than FILES=
- Note: supported by DR DOS 5+
- SeeAlso: AX=1220h
- --------D-2F1217-----------------------------
- INT 2F U - DOS 3.0+ internal - GET CURRENT DIRECTORY STRUCTURE FOR DRIVE
- AX = 1217h
- SS = DOS DS (must be using a DOS internal stack)
- STACK: WORD drive (0 = A:, 1 = B:, etc)
- Return: CF set on error
- (drive > LASTDRIVE)
- CF clear if successful
- DS:SI -> current directory structure for specified drive
- STACK unchanged
- SeeAlso: AX=1219h
- --------D-2F1218-----------------------------
- INT 2F U - DOS 3.0+ internal - GET CALLER'S REGISTERS
- AX = 1218h
- Return: DS:SI -> saved caller's AX,BX,CX,DX,SI,DI,BP,DS,ES (on stack)
- Note: only valid while within DOS
- --------D-2F1219-----------------------------
- INT 2F U - DOS 3.0+ internal - SET DRIVE???
- AX = 1219h
- SS = DOS DS (must be using a DOS internal stack)
- STACK: WORD drive (0 = default, 1 = A:, etc)
- Return: ???
- STACK unchanged
- Notes: calls AX=1217h
- builds a current directory structure if inside server call
- (INT 21/AX=5D00h)
- SeeAlso: AX=1217h,AX=121Fh
- --------D-2F121A-----------------------------
- INT 2F U - DOS 3.0+ internal - GET FILE'S DRIVE
- AX = 121Ah
- DS:SI -> filename
- Return: AL = drive (0 = default, 1 = A:, etc, FFh = invalid)
- DS:SI -> filename without leading X: (if present)
- SeeAlso: INT 21/AH=19h,INT 21/AH=60h
- --------D-2F121B-----------------------------
- INT 2F U - DOS 3.0+ internal - SET YEAR/LENGTH OF FEBRUARY
- AX = 121Bh
- CL = year - 1980
- Return: AL = number of days in February
- Note: requires DS to be set to the DOS data segment
- SeeAlso: INT 21/AH=2Bh"DATE"
- --------D-2F121C-----------------------------
- INT 2F U - DOS 3.0+ internal - CHECKSUM MEMORY
- AX = 121Ch
- DS:SI -> start of memory to checksum
- CX = number of bytes
- DX = initial checksum
- SS = DOS DS (must be using a DOS internal stack)
- Return: AX, CX destroyed
- DX = checksum
- DS:SI -> first byte after checksummed range
- Notes: used by DOS to determine day count since 1/1/80 given a date
- supported by DR DOS 5.0+
- SeeAlso: AX=121Dh
- --------D-2F121D-----------------------------
- INT 2F U - DOS 3.0+ internal - SUM MEMORY
- AX = 121Dh
- DS:SI -> memory to add up
- CX = 0000h
- DX = limit
- Return: AL = byte which exceeded limit
- CX = number of bytes before limit exceeded
- DX = remainder after adding first CX bytes
- DS:SI -> byte beyond the one which exceeded the limit
- Notes: used by DOS to determine year or month given day count since 1/1/80
- supported by DR DOS 5.0+
- SeeAlso: AX=121Ch
- --------D-2F121E-----------------------------
- INT 2F U - DOS 3.0+ internal - COMPARE FILENAMES
- AX = 121Eh
- DS:SI -> first ASCIZ filename
- ES:DI -> second ASCIZ filename
- Return: ZF set if filenames equivalent, ZF clear if not
- Note: supported by DR DOS 5.0+
- SeeAlso: AX=1211h,AX=1221h
- --------D-2F121F-----------------------------
- INT 2F U - DOS 3.0+ internal - BUILD CURRENT DIRECTORY STRUCTURE
- AX = 121Fh
- SS = DOS DS (must be using a DOS internal stack)
- STACK: WORD drive letter
- Return: ES:DI -> current directory structure (will be overwritten by next call)
- STACK unchanged
- --------D-2F1220-----------------------------
- INT 2F U - DOS 3.0+ internal - GET JOB FILE TABLE ENTRY
- AX = 1220h
- BX = file handle
- Return: CF set on error
- AL = 6 (invalid file handle)
- CF clear if successful
- ES:DI -> JFT entry for file handle in current process
- Notes: the byte pointed at by ES:DI contains the number of the SFT for the
- file handle, or FFh if the handle is not open
- supported by DR DOS 5.0+
- SeeAlso: AX=1216h,AX=1229h
- --------D-2F1221-----------------------------
- INT 2F U - DOS 3.0+ internal - CANONICALIZE FILE NAME
- AX = 1221h
- DS:SI -> file name to be fully qualified
- ES:DI -> 128-byte buffer for resulting canonical file name
- SS = DOS DS (must be using a DOS internal stack)
- Return: (see INT 21/AH=60h)
- Note: identical to INT 21/AH=60h
- SeeAlso: AX=1123h,INT 21/AH=60h
- --------D-2F1222-----------------------------
- INT 2F U - DOS 3.0+ internal - SET EXTENDED ERROR INFO
- AX = 1222h
- SS = DOS data segment
- SS:SI -> 4-byte records
- BYTE error code, FFh = last record
- BYTE error class, FFh = don't change
- BYTE suggested action, FFh = don't change
- BYTE error locus, FFh = don't change
- SDA error code set
- Return: SI destroyed
- SDA error class, error locus, and suggested action fields set
- Note: can be called only from within DOS
- SeeAlso: AX=122Dh,INT 21/AH=59h/BX=0000h,INT 21/AX=5D0Ah
- --------D-2F1223-----------------------------
- INT 2F U - DOS 3.0+ internal - CHECK IF CHARACTER DEVICE
- AX = 1223h
- DS = DOS DS
- SS = DOS DS (must be using a DOS internal stack)
- SDA+218h (DOS 3.10-3.30) = eight-character blank-padded name
- SDA+22Bh (DOS 4.0-6.0) = eight-character blank-padded name
- SDA file attribute field set
- direction flag clear (i.e. CLD)
- Return: CF set if no character device by that name found
- CF clear if found
- BH bits 4-0 copied from low byte of device attribute word
- BH bit 5 set, bits 7-6 clear
- Notes: can only be called from within DOS
- the check is skipped (always says "not device") if the volume ID bit
- of the file attribute field is set on entry
- SeeAlso: INT 21/AX=5D06h,INT 21/AX=5D0Bh
- --------D-2F1224-----------------------------
- INT 2F U - DOS 3.0+ internal - SHARING RETRY DELAY
- AX = 1224h
- SS = DOS DS (must be using a DOS internal stack)
- Return: after delay set by INT 21/AX=440Bh, unless in server call
- (INT 21/AX=5D00h)
- Note: delay is dependent on the processor speed, and is skipped entirely if
- inside a server call
- SeeAlso: INT 21/AX=440Bh,INT 21/AH=52h,INT 62/AX=0097h
- --------D-2F1225-----------------------------
- INT 2F U - DOS 3.0+ internal - GET LENGTH OF ASCIZ STRING
- AX = 1225h
- DS:SI -> ASCIZ string
- Return: CX = length of string
- Note: supported by DR DOS 5.0+
- SeeAlso: AX=1212h
- --------D-2F1226-----------------------------
- INT 2F U - DOS 3.3+ internal - OPEN FILE
- AX = 1226h
- CL = access mode
- DS:DX -> ASCIZ filename
- SS = DOS DS (must be using a DOS internal stack)
- Return: CF set on error
- AL = error code (see #01680 at INT 21/AH=59h/BX=0000h)
- CF clear if successful
- AX = file handle
- Notes: can only be called from within DOS
- equivalent to INT 21/AH=3Dh
- used by NLSFUNC to access COUNTRY.SYS when invoked by the DOS kernel
- SeeAlso: AX=1227h,INT 21/AH=3Dh
- --------D-2F1227-----------------------------
- INT 2F U - DOS 3.3+ internal - CLOSE FILE
- AX = 1227h
- BX = file handle
- SS = DOS DS (must be using a DOS internal stack)
- Return: CF set on error
- AL = 06h invalid file handle
- CF clear if successful
- Notes: can only be called from within DOS
- equivalent to INT 21/AH=3Eh
- used by NLSFUNC to access COUNTRY.SYS when invoked by the DOS kernel
- SeeAlso: AX=1106h,AX=1201h,AX=1226h,INT 21/AH=3Eh
- --------D-2F1228BP4200-----------------------
- INT 2F U - DOS 3.3+ internal - MOVE FILE POINTER
- AX = 1228h
- BP = 4200h, 4201h, 4202h (see INT 21/AH=42h)
- BX = file handle
- CX:DX = offset in bytes
- SS = DOS DS (must be using a DOS internal stack)
- Return: as for INT 21/AH=42h
- Notes: equivalent to INT 21/AH=42h, but may only be called from inside a DOS
- function call
- sets user stack frame pointer to dummy buffer, moves BP to AX, performs
- LSEEK, and restores frame pointer
- used by NLSFUNC to access COUNTRY.SYS when invoked by the DOS kernel
- SeeAlso: INT 21/AH=42h
- --------D-2F1229-----------------------------
- INT 2F U - DOS 3.3+ internal - READ FROM FILE
- AX = 1229h
- BX = file handle
- CX = number of bytes to read
- DS:DX -> buffer
- SS = DOS DS (must be using a DOS internal stack)
- Return: as for INT 21/AH=3Fh"DOS"
- Notes: equivalent to INT 21/AH=3Fh, but may only be called when already inside
- a DOS function call
- used by NLSFUNC to access COUNTRY.SYS when invoked by the DOS kernel
- SeeAlso: AX=1226h,INT 21/AH=3Fh"DOS"
- --------D-2F122A-----------------------------
- INT 2F U - DOS 3.3+ internal - SET FASTOPEN ENTRY POINT
- AX = 122Ah
- BX = entry point to set (0001h or 0002h)
- DS:SI -> FASTOPEN entry point (see #02611,#02612)
- (entry point not set if SI = FFFFh for DOS 4.0+)
- Return: CF set if specified entry point already set
- Notes: entry point in BX is ignored under DOS 3.30
- both entry points set to same handler by DOS 4.01
- DOS 5.0 and 6.0 only set entry point 1
- (Table 02611)
- Values DOS 3.30+ FASTOPEN entry point is called with:
- AL = 01h Lookup
- CX = ??? seems to be offset
- DI = ??? seems to be offset
- SI = offset in DOS DS of filename
- AL = 02h insert file into FASTOPEN cache
- AL = 03h delete file from FASTOPEN cache
- SI = offset in DOS DS of filename
- AL = 04h purge FASTOPEN cache
- AH = subfunction (00h,01h,02h)
- ES:DI -> ???
- CX = ??? (subfunctions 01h and 02h only)
- Returns: CF set on error or not installed
- Note: function 03h calls function 01h first
- SeeAlso: #02612,#02613
- (Table 02612)
- Values PC-DOS 4.01 FASTOPEN is additionally called with:
- AL = 04h ???
- AH = 03h
- ???
- AL = 05h ???
- AL = 0Bh ???
- AL = 0Ch ???
- AL = 0Dh ???
- AL = 0Eh ???
- AL = 0Fh ???
- AL = 10h ???
- SeeAlso: #02611,#02613
- (Table 02613)
- Values MS-DOS 5.0-6.0 FASTOPEN is additionally called with:
- AL = 04h purge FASTOPEN cache
- AH = 03h
- ???
- AL = 05h ???
- DL = drive (00h = A:)
- ???
- AL = 06h ???
- ???
- SeeAlso: #02611,#02612
- --------D-2F122B-----------------------------
- INT 2F U - DOS 3.3+ internal - IOCTL
- AX = 122Bh
- BP = 44xxh
- SS = DOS DS (must be using a DOS internal stack)
- additional registers as appropriate for INT 21/AX=44xxh
- Return: as for INT 21/AH=44h
- Notes: equivalent to INT 21/AH=44h, but may only be called when already inside
- a DOS function call
- sets user stack frame pointer to dummy buffer, moves BP to AX, performs
- IOCTL, and restores frame pointer
- used by NLSFUNC in accessing COUNTRY.SYS when invoked by the DOS kernel
- SeeAlso: INT 21/AH=44h
- --------D-2F122C-----------------------------
- INT 2F U - DOS 3.3+ internal - GET DEVICE CHAIN
- AX = 122Ch
- Return: BX:AX -> header of second device driver (NUL is first) in driver chain
- Note: although this function exists in DR DOS 5.0 and Novell DOS 7, it
- always returns 0000h:0000h prior to Novell DOS 7 Update 15
- SeeAlso: INT 21/AH=52h
- --------D-2F122D-----------------------------
- INT 2F U - DOS 3.3+ internal - GET EXTENDED ERROR CODE
- AX = 122Dh
- SS = DOS DS
- Return: AX = current extended error code
- SeeAlso: AX=1222h,INT 21/AH=59h/BX=0000h
- --------D-2F122E-----------------------------
- INT 2F U - DOS 4.0+ internal - GET OR SET ERROR TABLE ADDRESSES
- AX = 122Eh
- DL = subfunction
- 00h get standard DOS error table (see #02614)
- Return: ES:DI -> error table
- (DOS 4: errors 00h-12h,50h-5Bh)
- (DOS 5: errors 00h-26h,4Fh,51h-59h)
- 01h set standard DOS error table
- ES:DI -> error table
- 02h get parameter error table (errors 00h-0Ah)
- Return: ES:DI -> error table
- 03h set parameter error table
- ES:DI -> error table
- 04h get critical/SHARE error table (errors 13h-2Bh)
- Return: ES:DI -> error table
- 05h set critical/SHARE error table
- ES:DI -> error table
- 06h get ??? error table
- Return: ES:DI -> error table or 0000h:0000h
- 07h set ??? error table
- ES:DI -> error table
- 08h get error message retriever (see #02615)
- Return: ES:DI -> FAR procedure to fetch error message
- 09h set ??? error table
- ES:DI -> error table
- Notes: if the returned segment on a "get" is 0001h, then the offset specifies
- the offset of the error message table within COMMAND.COM, and the
- procedure returned by DL=08h should be called
- DOS 5+ COMMAND.COM does not allow setting any of the addresses (calls
- with DL odd are ignored); they are always returned with segment 0001h
- for DOS 5.0, the standard and critical/SHARE error tables are combined
- into a single error table
- SeeAlso: AX=0500h,INT 21/AH=59h/BX=0000h
- Format of DOS 4.x error table:
- Offset Size Description (Table 02614)
- 00h BYTE FFh
- 01h 2 BYTEs 04h,00h (DOS version???)
- 03h BYTE number of error headers following
- 04h 2N WORDs table of all error headers for table
- Offset Size Description
- 00h WORD error message number
- 02h WORD offset of error message from start of header
- error messages are count byte followed by msg
- Note: DOS 5 error tables consist of one word per error number; each word
- contains either the offset of a counted string or 0000h
- (Table 02615)
- Call error retrieval function with:
- AX = error number (see #02616)
- DI = offset of error table
- Return: ES:DI -> error message (counted string)
- Notes: this function needs to access COMMAND.COM if the messages were not
- loaded into memory permanently with /MSG; the caller should assume
- that the returned message will be overwritten by the next call of
- the function
- supported by DR DOS 5.0
- (Table 02616)
- Values for parameter errors:
- 01h Too many parameters
- 02h Required Parameter missing
- 03h Invalid switch
- 04h Invalid keyword
- 06h Parameter value not in allowed range
- 07h Parameter value not allowed
- 08h Parameter value not allowed
- 09h Parameter format not correct
- 0Ah Invalid parameter
- 0Bh Invalid parameter combination
- --------D-2F122F-----------------------------
- INT 2F U - DOS 4.x internal - SET DOS VERSION NUMBER TO RETURN
- AX = 122Fh
- DX = DOS version number (0000h = return true DOS version)
- Notes: not available under DR DOS 5.0 or 6.0, or Novell DOS 7
- supported by FREEVER.COM, a freeware DOS version faking TSR by Matthias
- Paul
- SeeAlso: INT 21/AH=30h,INT 21/AX=3306h,INT 2F/AX=E000h"SETDRVER"
- ----------2F1230-----------------------------
- INT 2F U - Windows95 - FIND SFT ENTRY IN INTERNAL FILE TABLES
- AX = 1230h
- ES:DI -> SFT entry
- Return: CF clear if SFT found in internal table
- CF set if SFT not in any internal file table
- AX = 0000h
- SI:CX = 32-bit starting cluster number for directory
- DX = directory entry number
- BX = index into new file system table
- Note: the new file system table from which the return values are taken is
- reported to be statically allocated with 20 entries, and used only
- for FCB calls
- BUG: Win95-OSR2 is reported to have a bug that can potentially corrupt
- memory if SFT tables are "arranged poorly"
- SeeAlso: AX=1231h,AX=1200h
- ----------2F1231-----------------------------
- INT 2F U - Windows95 - SET/CLEAR "REPORT WINDOWS TO DOS PROGRAMS" FLAG
- AX = 1231h
- DL = function
- 00h set byte after "IsWIN386" to 01h
- 01h set "IsWIN386" bit 1
- 02h clear "IsWIN386" bit 1
- else
- Return: CF set
- AX = 0001h
- Return: CF clear
- AX = 0000h
- BUG: Windows98 will crash the system if DL>02h on entry due to an off-by-1
- conditional jump; if the jump were correct, the function would return
- CF set/AX=0001h as for Windows95
- SeeAlso: AX=1230h,AX=1200h
- --------O-2F12FFBL00-------------------------
- INT 2F - FreeDOS - FDAK-DDT - INSTALLATION CHECK / STATUS CHECK
- AX = 12FFh
- BL = 00h
- Return: AL = DDh if installed
- BH = state (00h disabled, nonzero enabled)
- BL = readonly flag (00h writable, nonzero read-only)
- Program: FDAK-DDT is the FreeDOS Alternative Kernel Device Drivers Testing
- release by Yury A. Semenov
- SeeAlso: AX=12FFh/BL=07h
- --------O-2F12FFBL01-------------------------
- INT 2F - FreeDOS - FDAK-DDT - ENABLE FDAK DRIVERS
- AX = 12FFh
- BL = 01h
- SeeAlso: AX=12FFh/BL=00h,AX=12FFh/BL=02h
- --------O-2F12FFBL02-------------------------
- INT 2F - FreeDOS - FDAK-DDT - DISABLE FDAK DRIVERS
- AX = 12FFh
- BL = 02h
- SeeAlso: AX=12FFh/BL=00h,AX=12FFh/BL=01h
- --------O-2F12FFBL03-------------------------
- INT 2F - FreeDOS - FDAK-DDT - SWITCH BLOCK DEVICE TO READ-ONLY
- AX = 12FFh
- BL = 03h
- ???
- SeeAlso: AX=12FFh/BL=00h,AX=12FFh/BL=04h
- --------O-2F12FFBL04-------------------------
- INT 2F - FreeDOS - FDAK-DDT - SWITCH BLOCK DEVICE TO READ-WRITE
- AX = 12FFh
- BL = 04h
- ???
- SeeAlso: AX=12FFh/BL=00h,AX=12FFh/BL=03h
- --------O-2F12FFBL05-------------------------
- INT 2F - FreeDOS - FDAK-DDT - TURN ACTIVITY INDICATOR ON
- AX = 12FFh
- BL = 05h
- Note: not yet implemented as of January 1996
- SeeAlso: AX=12FFh/BL=00h,AX=12FFh/BL=06h
- --------O-2F12FFBL06-------------------------
- INT 2F - FreeDOS - FDAK-DDT - TURN ACTIVITY INDICATOR OFF
- AX = 12FFh
- BL = 06h
- Note: not yet implemented as of January 1996
- SeeAlso: AX=12FFh/BL=00h,AX=12FFh/BL=05h
- --------O-2F12FFBL07-------------------------
- INT 2F - FreeDOS - FDAK-DDT - UNINSTALL
- AX = 12FFh
- BL = 07h
- Return: ES = segment of FDAK memory block
- Note: the caller must free the memory block returned in ES
- (via INT 21/AH=49h)
- SeeAlso: AX=12FFh/BL=00h
- --------O-2F12FFBX0005-----------------------
- INT 2F U - Novell DOS 7 - GET/SET/QUERY MEMORY STATE???
- AX = 12FFh
- BX = 0005h
- CX = 0000h
- DX = function
- 0000h ???
- 0001h ???
- Note: called at three separate points inside IBMBIO.COM
- --------m-2F12FFBX0006-----------------------
- INT 2F U - DR DOS 6, Novell DOS 7 - EMM386.EXE - VIDEO MEMORY SPACE CONTROL
- AX = 12FFh
- BX = 0006h
- DX = 0000h
- CX = function
- 0000h get status of video memory space (MEMMAX /V)
- 0001h map memory into video memory space (MEMMAX +V)
- 0002h unmap memory from video memory space (MEMMAX -V)
- Return: CF clear if successful
- AX = 0000h (successful)
- BX = segment of reserved video RAM
- CX = segment of used video RAM
- DX = segment of first upper MCB
- Notes: this functionality is provided by EMM386, and partially supported by
- HIDOS.SYS
- BL specifies which program handles the call, BH is the function number
- BUG: 4DOS 5.51(a) often hangs the system (reported to be reproducable), if
- MEMMAX +V is issued from the 4DOS prompt. To avoid this, one should
- temporary load COMMAND.COM followed by MEMMAX +v , starting the
- application, MEMMAX -v and EXIT. 4DOS 5.5c does not show this
- phenomena on the same systems where 5.51a hangs.
- SeeAlso: AX=D201h/BX=4849h
- --------O-2F12FFBX0000-----------------------
- INT 2F U - Novell DOS 7 - GET ???
- AX = 12FFh
- BX = 0000h
- Return: AX = 0000h if supported
- DX = ??? (internal data)
- SeeAlso: AX=12FFh/BX=0001h
- --------O-2F12FFBX0001-----------------------
- INT 2F U - Novell DOS 7 - SET ???
- AX = 12FFh
- BX = 0001h
- DX = new value for ???
- Return: AX = 0000h if supported
- SeeAlso: AX=12FFh/BX=0000h
- --------O-2F12FFBX0002-----------------------
- INT 2F U - Novell DOS 7 - GET ??? SIZE
- AX = 12FFh
- BX = 0002h
- Return: AX = 0000h if supported
- DX = size of/required-for ??? in paragraphs
- SeeAlso: AX=12FFh/BX=0003h
- --------O-2F12FFBX0003-----------------------
- INT 2F U - Novell DOS 7 - SET ???
- AX = 12FFh
- BX = 0003h
- DX = new value for ???
- Return: AX = 0000h if supported
- SeeAlso: AX=12FFh/BX=0002h
- --------O-2F12FFBX0007-----------------------
- INT 2F U - Novell DOS 7 - SCRIPT.EXE - GET ???
- AX = 12FFh
- BX = 0007h
- CX = 0000h
- Return: CF clear if installed
- AX = 0000h
- BX = ??? (4426h)
- CX = ??? (0068h)
- DX = PSP segment of resident code???
- SI = ??? (4AFAh)
- ES = resident code segment
- --------O-2F12FFBX0009-----------------------
- INT 2F U - Novell DOS 7 - SET ???
- AX = 12FFh
- BX = 0009h
- DX = new value for ???
- Return: ???
- Note: the DX value is stored at offset 66h in SYSVARS and offset 18h in
- the Novell DOS 7 internal variable table
- --------m-2F12FFBX0106-----------------------
- INT 2F U - Novell DOS 7 - EMM386.EXE - GET VERSION???
- AX = 12FFh
- BX = 0106h
- Return: CF clear if successful
- AX = 0000h (successful)
- BX = EDC0h (signature)
- CL = memory manager variant (02h,03h)
- (02h when DPMI/VCPI disabled, 03h when DPMI/VCPI loaded)
- CH = ??? (00h)
- DX = version??? (0300h for v3.0)
- ES = segment of EMM386 low-memory stub
- Notes: BL specifies which program handles the call, BH is the function number
- if the word at ES:0012h is nonzero, if contains the offset within
- segment ES of the CEMM-compatible entry point (see #02617)
- if no other program has hooked INT 67, an alternate installation
- check is to test for the string
- "NOVELL EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
- handler's segment; the word immediately preceding this string
- contains the offset of the API entry point if it is nonzero
- Index: entry point;Novell EMM386
- (Table 02617)
- Call Novell EMM386.EXE entry point with:
- AH = 00h get memory manager's status???
- ???
- AH = 01h set memory manager's status???
- ???
- AH = 02h Weitek coprocessor support???
- AL = subfunction???
- more functions???
- SeeAlso: #01513 at INT 21/AX=4402h/SF=02h,#03666 at INT 67/AX=FFA5h
- --------m-2F12FFBL06-------------------------
- INT 2F U - Novell DOS 7 - EMM386.EXE - ???
- AX = 12FFh
- BL = 06h
- BH = function (02h-09h)
- ???
- Return: ???
- --------O-2F12FFBX0EDC-----------------------
- INT 2F U - Novell DOS 7 - EMM386.EXE - CHECK IF MULTITASKING SUPPORT LOADED???
- AX = 12FFh
- BX = 0EDCh ('EDC' = Novell European Development Center)
- Return: AX = 0000h if ??? loaded
- CF clear
- BX = 0000h
- Notes: called by Novell DOS 7 TaskMgr
- if this function returns with AX=0000h, then the code necessary to
- support the API on INT 2F/AX=2780h is loaded and that API becomes
- available for use
- because the request is handled on the initial trap to the memory
- manager caused by INT instructions, this function must be invoked
- with an actual INT 2F instruction instead of some simulation such
- as a far call to the address in the interrupt vector table
- SeeAlso: AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h,AX=2780h/CL=04h
- --------D-2F13-------------------------------
- INT 2F U - DOS 3.2+ - SET DISK INTERRUPT HANDLER
- AH = 13h
- DS:DX -> interrupt handler disk driver calls on read/write
- ES:BX = address to restore INT 13 to on system halt (exit from root
- shell) or warm boot (INT 19)
- Return: DS:DX set by previous invocation of this function
- ES:BX set by previous invocation of this function
- Notes: IO.SYS hooks INT 13 and inserts one or more filters ahead of the
- original INT 13 handler. The first is for disk change detection
- on floppy drives, the second is for tracking formatting calls and
- correcting DMA boundary errors, the third is for working around
- problems in a particular version of IBM's ROM BIOS
- before the first call, ES:BX points at the original BIOS INT 13; DS:DX
- also points there unless IO.SYS has installed a special filter for
- hard disk reads (on systems with model byte FCh and BIOS date
- "01/10/84" only), in which case it points at the special filter
- most DOS 3.2+ disk access is via the vector in DS:DX, although a few
- functions are still invoked via an INT 13 instruction
- this is a dangerous security loophole for any virus-monitoring software
- which does not trap this call ("INT13", "Nomenklatura", and many
- Bulgarian viruses are known to use it to get the original ROM entry
- point)
- SeeAlso: INT 13/AH=01h,INT 19,INT 9D"VIRUS"
- --------N-2F13-------------------------------
- INT 2F U - MS-NET - ???
- AH = 13h
- ???
- Return: ???
- Note: supposedly used to move (or control the movement of) NCBs
- --------U-2F1400-----------------------------
- INT 2F C - NLSFUNC.COM - INSTALLATION CHECK
- AX = 1400h
- Return: AL = 00h not installed, OK to install
- 01h not installed, not OK
- FFh installed
- Notes: this function is called by the DOS v3.3+ kernel
- supported by OS/2 v1.3+ compatibility box, which always returns AL=FFh
- supported by DR DOS 5.0
- documented for MS-DOS 5+, but undocumented in prior versions
- SeeAlso: AX=1401h"NLSFUNC",AX=1402h"NLSFUNC"
- --------D-2F1400-----------------------------
- INT 2F - European MS-DOS 4.0 POPUP - "CheckPu" - INSTALLATION CHECK
- AX = 1400h
- Return: AX = FFFFh if installed
- BX = maximum memory required to save screen and keyboard info
- CF clear if successful
- CF set on error
- AX = error code
- 0002h invalid function
- 0004h unknown error
- Note: the POPUP interface is used by background programs (see INT 21/AH=80h)
- to communicate with the user
- SeeAlso: AX=1401h"POPUP",AX=1402h"POPUP",AX=1403h"POPUP"
- --------U-2F1401-----------------------------
- INT 2F CU - NLSFUNC.COM - CHANGE CODE PAGE
- AX = 1401h
- DS:SI -> internal code page structure (see #02618)
- BX = new code page (see #01757 at INT 21/AX=6602h)
- DX = country code???
- Return: AL = status
- 00h successful
- else DOS error code
- Note: this function is called by the DOS v3.3+ kernel
- SeeAlso: AX=1400h"NLSFUNC",AX=1402h"NLSFUNC",INT 21/AH=66h
- Format of DOS 3.30 internal code page structure:
- Offset Size Description (Table 02618)
- 00h 8 BYTEs ???
- 08h 64 BYTEs name of country information file (see #02619)
- 48h WORD system code page (see #01757 at INT 21/AX=6602h)
- 4Ah WORD number of supported subfunctions
- 4Ch 5 BYTEs data to return for INT 21/AX=6502h
- 51h 5 BYTEs data to return for INT 21/AX=6504h
- 56h 5 BYTEs data to return for INT 21/AX=6505h
- 5Bh 5 BYTEs data to return for INT 21/AX=6506h
- 60h 41 BYTEs data to return for INT 21/AX=6501h
- Format of MS-DOS/PC-DOS/OS2/WinNT/PTS-DOS COUNTRY.SYS file:
- Offset Size Description (Table 02619)
- 00h BYTE ID tag (FFh)
- 01h 7 BYTEs ASCII "COUNTRY"
- 08h 8 BYTEs ??? (00h)
- 10h BYTE ??? (01h)
- 11h BYTE ??? (00h)
- 12h BYTE ??? (01h)
- 13h DWORD offset of first entry in file (see #02620)
- SeeAlso: #02623
- Format of MS-DOS/PC-DOS/OS2/WinNT/PTS-DOS COUNTRY.SYS entry:
- Offset Size Description (Table 02620)
- 00h WORD number of country-codepage entries following
- 02h N Country-Codepage entries:
- Offset Size Description
- 00h WORD length of entry, not counting this word (000Ch)
- 02h WORD country ID
- 04h WORD codepage ID
- 06h WORD ??? (0000h)
- 08h WORD ??? (0000h)
- 0Ah DWORD offset of country-subfunction-header in file
- (see #02621)
- Notes: multiple codepages for a country are stored consecutively
- PTS/DOS places a copyright string immediately following this structure,
- though a copyright at the end of the file is preferable
- SeeAlso: #02619
- Format of MS-DOS/PC-DOS/OS2/WinNT/PTS-DOS COUNTRY.SYS country-subfunc header:
- Offset Size Description (Table 02621)
- 00h WORD number of subfunction entries following
- 02h N subfunction entries
- Offset Size Description
- 00h WORD length of subfunction entry, not counting this
- word (usually 06h)
- 02h WORD subfunction ID
- (value passed to INT 21/AH=65h in AL)
- 04h DWORD offset within file of subfunction data entry
- (see #02622)
- SeeAlso: #02620
- Format of MS-DOS/PC-DOS/OS2/WinNT/PTS-DOS COUNTRY.SYS country-subfunc data::
- Offset Size Description (Table 02622)
- 00h BYTE ID-tag (FFh)
- 01h 7 BYTEs table-type signature (blank-padded)
- "CTYINFO" general country info (subfn 01h)
- "UCASE " uppercase table (subfn 02h)
- "LCASE " lowercase table (subfn 03h) (DOS 6.2_)
- "FUCASE " filename uppercase table (subfn 04h)
- "FCHAR " filename terminator table (subfn 05h)
- "COLLATE" collating sequence (subfn 06h)
- "DBCS " double-byte character table (subfn 07h)
- 08h WORD length of following table in bytes
- (if 0000h for DBCS table, there will still be a word of 0000h)
- ---country info (01h)---
- 0Ah WORD country ID (see #01400 at AH=38h)
- 0Ch WORD code page (see #01757)
- 0Eh 34 BYTEs country-dependent info (see #01399 at AH=38h)
- ---uppercase table (02h)---
- 0Ah 128 BYTEs uppercase equivalents (if any) of chars 80h to FFh
- ---lowercase table (03h)---
- 0Ah 256 BYTEs lowercase equivalents (if any) of chars 00h to FFh
- ---filename uppercase table (04h)---
- 0Ah 128 BYTEs uppercase equivalents (if any) of chars 80h to FFh
- ---filename terminator table (05h)---
- 0Ah BYTE ??? (01h for MS-DOS 3.30-6.00)
- 0Bh BYTE lowest permissible character value for filename
- 0Ch BYTE highest permissible character value for filename
- 0Dh BYTE ??? (00h for MS-DOS 3.30-6.00)
- 0Eh BYTE first excluded character in range \ all characters in this
- 0Fh BYTE last excluded character in range / range are illegal
- 10h BYTE ??? (02h for MS-DOS 3.30-6.00)
- 11h BYTE number of illegal (terminator) characters
- 12h N BYTEs characters which terminate a filename: ."/\[]:|<>+=;,
- ---collating sequence (06h)---
- 0Ah 256 BYTEs values used to sort characters 00h to FFh
- ---DBCS table (07h)---
- 0Ah 2N BYTEs start/end for N lead byte ranges
- WORD 0000h (end of table)
- SeeAlso: #02621,#01750,#01751,#01753,#01754,#01755,#01756
- Format of DR DOS/Novell DOS/OpenDOS COUNTRY.SYS file:
- Offset Size Description (Table 02623)
- 00h 126 BYTEs copyright notice (terminated with Ctrl-Z; NUL-padded)
- the copyright notice starts with the signature
- "COUNTRY.SYS Rx.xx" where "x.xx" indicates the file format
- revision, which is checked by the OS (revision is 2.00 for
- DR DOS 3.41 and 2.01 for all newer versions of DR DOS,
- Novell DOS, and OpenDOS)
- 7Eh WORD signature of file format revision
- 0EDCh = 2.00 (DR DOS 3.41)
- EDC1h = 2.01 (all newer versions)
- 80h var country pointer records (see #02624)
- (packed array of variable-size records)
- SeeAlso: #02619
- Format of DR DOS/Novell DOS/OpenDOS COUNTRY.SYS country pointer record::
- Offset Size Description (Table 02624)
- 00h WORD country code (0000h if end of array)
- 02h WORD code page (see #01757)
- 04h WORD ??? (0000h)
- 06h 7 WORDs offsets in file for INT 21/AH=65h subfunctions 01h to 07h, or
- 0000h if no table for that subfunction
- 14h var country information
- Notes: the end-of-file marker is a country pointer record filled entirely with
- zeros
- the data at which the pointers point is in the same format as the
- tables returned by INT 21/AH=65h, except that the general-info
- table for subfunction 01h does not contain the length word at the
- beginning
- SeeAlso: #02623
- --------D-2F1401-----------------------------
- INT 2F - European MS-DOS 4.0 POPUP - "PostPu" - OPEN/CLOSE POPUP SCREEN
- AX = 1401h
- DL = function (00h open, 01h close)
- DH = wait flag
- 00h block until screen opens
- 01h return error if screen is not available
- 02h urgent--always open screen immediately
- Return: CF clear if successful
- BX = amount of memory needed to save screen and keyboard info,
- 0000h if default save location can be used (only if DH was 02h)
- CF set on error
- Note: the application using the screen is frozen until the popup screen is
- closed
- SeeAlso: AX=1400h"POPUP",AX=1402h"POPUP",AX=1403h"POPUP"
- --------U-2F1402-----------------------------
- INT 2F CU - NLSFUNC.COM - GET EXTENDED COUNTRY INFO
- AX = 1402h
- BP = subfunction (same as AL for INT 21/AH=65h)
- BX = code page (see #01757 at INT 21/AX=6602h)
- DX = country code (see #01400 at INT 21/AH=38h)
- DS:SI -> internal code page structure (see #02618)
- ES:DI -> user buffer
- CX = size of user buffer
- Return: AL = status
- 00h successful
- else DOS error code
- Notes: this function is called by the DOS v3.3+ kernel on INT 21/AH=65h
- code page structure apparently only needed for COUNTRY.SYS pathname
- SeeAlso: AX=1401h"NLSFUNC",AX=1403h"NLSFUNC",AX=1404h,INT 21/AH=65h
- --------D-2F1402-----------------------------
- INT 2F - European MS-DOS 4.0 POPUP - "SavePu" - SAVE POPUP SCREEN
- AX = 1402h
- ES:DI -> save buffer (0000h:0000h for default buffer in POPUP)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02625)
- SeeAlso: AX=1400h"POPUP",AX=1401h"POPUP",AX=1403h"POPUP"
- (Table 02625)
- Values for POPUP error code:
- 0001h process does not own screen
- 0004h unknown error
- 0005h invalid pointer
- --------U-2F1403-----------------------------
- INT 2F CU - NLSFUNC.COM - SET CODE PAGE
- AX = 1403h
- DS:SI -> internal code page structure (see #02618)
- BX = code page (see #01757 at INT 21/AX=6602h)
- DX = country code (see #01400 at INT 21/AH=38h)
- Return: AL = status
- ???
- Note: this function is called by the DOS v3.3+ kernel on INT 21/AH=38h
- SeeAlso: AX=1402h"NLSFUNC",AX=1404h,INT 21/AH=38h"SET"
- --------D-2F1403-----------------------------
- INT 2F - European MS-DOS 4.0 POPUP - "RestorePu" - RESTORE SCREEN
- AX = 1403h
- ES:DI -> buffer containing saved screen
- (0000h:0000h for default buffer in POPUP)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02625)
- SeeAlso: AX=1400h"POPUP",AX=1401h"POPUP",AX=1402h"POPUP"
- --------U-2F1404-----------------------------
- INT 2F CU - NLSFUNC.COM - GET COUNTRY INFO
- AX = 1404h
- BX = code page (see #01757 at INT 21/AX=6602h)
- DX = country code (see #01400 at INT 21/AH=38h)
- DS:SI -> internal code page structure (see #02618)
- ES:DI -> user buffer
- Return: AL = status
- ???
- Notes: this function is called by the DOS v3.3+ kernel on INT 21/AH=38h
- code page structure apparently only needed for COUNTRY.SYS pathname
- SeeAlso: AX=1402h,AX=1403h,INT 21/AH=38h"GET"
- --------U-2F14FE-----------------------------
- INT 2F U - DR DOS 5.0 NLSFUNC - GET EXTENDED COUNTRY INFORMATION
- AX = 14FEh
- BX = code page (FFFFh=global code page) (see #01757 at INT 21/AX=6602h)
- DX = country ID (FFFFh=current country) (see #01400 at INT 21/AH=38h)
- ES:DI -> country information buffer
- CL = info ID
- 01h get general internationalization info
- 02h get pointer to uppercase table
- 04h get pointer to filename uppercase table
- 05h get pointer to filename terminator table
- 06h get pointer to collating sequence table
- 07h get pointer to Double-Byte Character Set table
- CF set (used to return error if not installed)
- Return: CF clear if successful
- DS:SI -> requested information
- CF set on error
- Notes: DR DOS 5.0 NLSFUNC returns CF set and AX=0001h if AL was not 00h, FEh,
- or FFh on entry.
- the DR DOS kernel calls this function on INT 21/AX=6501h
- the value in CL is not range-checked by the DR DOS 5.0 NLSFUNC
- SeeAlso: #02626,AX=14FFh,INT 21/AH=65h
- Format of DR DOS COUNTRY.SYS file:
- Offset Size Description (Table 02626)
- 00h 126 BYTEs copyright notice (terminated with Ctrl-Z, padded with NULs)
- 7Eh WORD signature EDC1h
- 80h var country pointer records
- Offset Size Description
- 00h WORD country code (0000h if end of array)
- 02h WORD code page (see #01757 at INT 21/AX=6602h)
- 04h WORD ??? (0000h)
- 06h 7 WORDs offsets in file for data tables for subfunctions
- 01h-07h
- var var country information
- --------U-2F14FF-----------------------------
- INT 2F U - DR DOS 5.0 NLSFUNC - PREPARE CODE PAGE
- AX = 14FFh
- BX = code page (see #01757 at INT 21/AX=6602h)
- Return: AX = ???
- ZF set if AX=0000h
- Notes: DR DOS 5.0 NLSFUNC returns CF set and AX=0001h if AL was not 00h, FEh,
- or FFh on entry.
- passes codepage preparation request to each character device supporting
- the generic IOCTL call
- SeeAlso: AX=14FEh,INT 21/AX=440Ch,INT 21/AX=6602h
- --------U-2F1500-----------------------------
- INT 2F - DOS 4.00 GRAPHICS.COM - INSTALLATION CHECK
- AX = 1500h
- Return: AX = FFFFh
- ES:DI -> ??? (graphics data?)
- Note: this installation check conflicts with the CD-ROM Extensions
- installation check; moved to AX=AC00h in later versions
- SeeAlso: AX=AC00h
- --------d-2F1500BX0000-----------------------
- INT 2F - CD-ROM - INSTALLATION CHECK
- AX = 1500h
- BX = 0000h
- Return: BX = number of CD-ROM drive letters used
- CX = starting drive letter (0=A:)
- AX = 15FFh (Novell DOS 7 NWCDEX only!)
- Notes: this installation check DOES NOT follow the format used by other
- software
- this installation check conflicts with the DOS 4.00 GRAPHICS.COM
- installation check
- BUG: this function may return an incorrect starting drive letter when
- INTERLNK is installed
- SeeAlso: AX=150Ch,AX=15FFh,INT 2F/AX=D000h"Lotus"
- --------c-2F1500CH90-------------------------
- INT 2F U - CDBLITZ v2.11 - INSTALLATION CHECK
- AX = 1500h
- CH = 90h (function number)
- BX = 1234h (magic value for CDBLITZ)
- Return: CX = 1234h if installed
- CF clear
- DX = BCD version number (DH = major, DL = minor)
- Program: CDBLITZ is a CD-ROM cache by Blitz 'n' Software, Inc.
- SeeAlso: AX=1500h/CH=99h
- --------c-2F1500CH91-------------------------
- INT 2F U - CDBLITZ v2.11 - GET STATISTICS
- AX = 1500h
- CH = 91h (function number)
- BX = 1234h (magic value for CDBLITZ)
- Return: CF clear
- ES:BX -> statistics record (see #02627)
- SeeAlso: AX=1500h/CH=90h,AX=1500h/CH=97h
- Format of CDBLITZ statistics record:
- Offset Size Description (Table 02627)
- 00h WORD cache mode (see also AX=1500h/CH=94h)
- 0001h 'min', 0002h 'max'
- 02h DWORD number of read calls???
- 06h DWORD total number of sectors read
- 0Ah DWORD unused??? (zero)
- 0Eh DWORD number of cache hit sectors
- 12h WORD cache size in KB
- 14h WORD unused??? (zero)
- 16h WORD cache state (0000h disabled, 0001h enabled)
- --------c-2F1500CH92-------------------------
- INT 2F U - CDBLITZ v2.11 - ENABLE CACHE
- AX = 1500h
- CH = 92h (function number)
- BX = 1234h (magic value for CDBLITZ)
- Return: CF clear
- SeeAlso: AX=1500h/CH=90h,AX=1500h/CH=93h,AX=1500h/CH=94h
- --------c-2F1500CH93-------------------------
- INT 2F U - CDBLITZ v2.11 - DISABLE CACHE
- AX = 1500h
- CH = 93h (function number)
- BX = 1234h (magic value for CDBLITZ)
- Return: CF clear
- SeeAlso: AX=1500h/CH=90h,AX=1500h/CH=92h,AX=1500h/CH=95h
- --------c-2F1500CH94-------------------------
- INT 2F U - CDBLITZ v2.11 - SET 'MAX' MODE (CACHE BOTH DIRECTORIES AND DATA)
- AX = 1500h
- CH = 94h (function number)
- BX = 1234h (magic value for CDBLITZ)
- Return: CF clear
- SeeAlso: AX=1500h/CH=90h,AX=1500h/CH=92h,AX=1500h/CH=95h
- --------c-2F1500CH95-------------------------
- INT 2F U - CDBLITZ v2.11 - SET 'MIN' MODE (CACHE ONLY DIRECTORY ENTRIES)
- AX = 1500h
- CH = 95h (function number)
- BX = 1234h (magic value for CDBLITZ)
- Return: CF clear
- SeeAlso: AX=1500h/CH=90h,AX=1500h/CH=94h
- --------c-2F1500CH96-------------------------
- INT 2F U - CDBLITZ v2.11 - FLUSH CACHE
- AX = 1500h
- CH = 96h (function number)
- BX = 1234h (magic value for CDBLITZ)
- Return: CF clear
- Note: this function resets the counts for number of sectors read and number
- of cache hits, but no other values in the statistics record
- (see #02627)
- SeeAlso: AX=1500h/CH=90h
- --------c-2F1500CH97-------------------------
- INT 2F U - CDBLITZ v2.11 - GET CACHE STATISTICS
- AX = 1500h
- CH = 97h (function number)
- BX = 1234h (magic value for CDBLITZ)
- Return: CF clear
- AL = cache mode (01h 'min', 02h 'max') (see also AX=1500h/CH=94h)
- AH = cache state (00h disabled, 01h enabled)
- BX = cache size in KB
- DX:CX = total number of reads
- DI:SI = number of cache hits
- SeeAlso: AX=1500h/CH=90h,AX=1500h/CH=91h
- --------c-2F1500CH99-------------------------
- INT 2F U - CDBLITZ v2.11 - UNINSTALL
- AX = 1500h
- CH = 99h (function number)
- BX = 1234h (magic value for CDBLITZ)
- Return: CF clear
- ???
- Program: CDBLITZ is a CD-ROM cache by Blitz 'n' Software, Inc.
- SeeAlso: AX=1500h/CH=90h
- --------d-2F1501-----------------------------
- INT 2F - CD-ROM - GET DRIVE DEVICE LIST
- AX = 1501h
- ES:BX -> buffer to hold drive letter list (5 bytes per drive letter)
- Return: buffer filled, for each drive letter
- BYTE subunit number in driver
- DWORD address of device driver header (see #01646)
- Note: reportedly returns AX=0000h and an invalid address under Windows95;
- other reports say it works fine
- SeeAlso: AX=1510h
- --------d-2F1502-----------------------------
- INT 2F - CD-ROM - GET COPYRIGHT FILE NAME
- AX = 1502h
- ES:BX -> 38-byte buffer for name of copyright file
- CX = drive number (0=A:)
- Return: CF set if drive is not a CD-ROM drive
- AX = 000Fh (invalid drive)
- CF clear if successful
- SeeAlso: AX=1503h
- --------d-2F1503-----------------------------
- INT 2F - CD-ROM - GET ABSTRACT FILE NAME
- AX = 1503h
- ES:BX -> 38-byte buffer for name of abstract file
- CX = drive number (0=A:)
- Return: CF set if drive is not a CD-ROM drive
- AX = 000Fh (invalid drive)
- CF clear if successful
- SeeAlso: AX=1502h,AX=1504h
- --------d-2F1504-----------------------------
- INT 2F - CD-ROM - GET BIBLIOGRAPHIC DOC FILE NAME
- AX = 1504h
- ES:BX -> 38-byte buffer for name of bibliographic documentation file
- CX = drive number (0=A:)
- Return: CF set if drive is not a CD-ROM drive
- AX = 000Fh (invalid drive)
- CF clear if successful
- SeeAlso: AX=1502h,AX=1503h
- --------d-2F1505-----------------------------
- INT 2F - CD-ROM - READ VTOC
- AX = 1505h
- ES:BX -> 2048-byte buffer
- CX = drive number (0=A:)
- DX = sector index (0=first volume descriptor,1=second,...)
- Return: CF set on error
- AX = error code (15=invalid drive,21=not ready)
- CF clear if successful
- AX = volume descriptor type (1=standard,FFh=terminator,0=other)
- Note: This function was not supported by Novell DOS 7 NWCDEX prior to the
- 08/16/94 update
- --------d-2F1506-----------------------------
- INT 2F - CD-ROM - TURN DEBUGGING ON
- AX = 1506h
- BX = debugging function to enable
- Note: reserved for development
- SeeAlso: AX=1507h
- --------d-2F1507-----------------------------
- INT 2F - CD-ROM - TURN DEBUGGING OFF
- AX = 1507h
- BX = debugging function to disable
- Note: reserved for development
- SeeAlso: AX=1506h
- --------d-2F1508-----------------------------
- INT 2F - CD-ROM - ABSOLUTE DISK READ
- AX = 1508h
- ES:BX -> buffer
- CX = drive number (0=A:)
- SI:DI = starting sector number
- DX = number of sectors to read
- Return: CF set on error
- AL = error code (0Fh invalid drive,15h not ready)
- CF clear if successful
- Note: returns error 15h (not ready) under Windows95 if the starting sector
- number is less than 10h
- SeeAlso: AX=1509h
- --------d-2F1509-----------------------------
- INT 2F - CD-ROM - ABSOLUTE DISK WRITE
- AX = 1509h
- ES:BX -> buffer
- CX = drive number (0=A:)
- SI:DI = starting sector number
- DX = number of sectors to write
- Note: corresponds to INT 26h and is currently reserved and nonfunctional,
- but could be implemented for CD-R and CD-RW drives
- SeeAlso: AX=1508h
- --------d-2F150A-----------------------------
- INT 2F - CD-ROM - RESERVED
- AX = 150Ah
- --------d-2F150B-----------------------------
- INT 2F - CD-ROM v2.00+ - DRIVE CHECK
- AX = 150Bh
- CX = drive number (0=A:)
- Return: BX = ADADh if MSCDEX.EXE installed
- AX = support status
- 0000h if drive not supported
- nonzero if supported
- SeeAlso: AX=150Dh
- --------d-2F150CBX0000-----------------------
- INT 2F - CD-ROM v2.00+ - GET MSCDEX.EXE VERSION (GET VERSION)
- AX = 150Ch
- BX = 0000h
- Return: BH = major version
- BL = minor version
- Notes: MSCDEX.EXE versions prior to 2.00 leave BX unchanged, thus BX should
- be 0000h on entry
- Corel's CORELCDX.COM v1.01d returns 2.20, v1.12a returns 2.21
- Meridian Data's CDNETEX.EXE returns its own version number, e.g. 4.70
- J.M.A. Hall's CDEMU2.COM returns 2.10 (it is an MSCDEX emulator for
- networked CD-ROM drives)
- Windows95 returns v2.95
- Novell DOS 7 NWCDEX.EXE returns the same version number reported in
- its startup message
- SeeAlso: AX=1500h"CD-ROM",AX=15FFh"CORELCDX"
- --------d-2F150D-----------------------------
- INT 2F - CD-ROM v2.00+ - GET CD-ROM DRIVE LETTERS
- AX = 150Dh
- ES:BX -> buffer for drive letter list (1 byte per drive)
- Return: buffer filled with drive numbers (0=A:). Each byte corresponds
- to the drive in the same position for function 1501h
- SeeAlso: AX=150Bh
- --------d-2F150E-----------------------------
- INT 2F - CD-ROM v2.00+ - GET/SET VOLUME DESCRIPTOR PREFERENCE
- AX = 150Eh
- BX = subfunction
- 00h get preference
- DX = 0000h
- Return: DX = preference settings
- 01h set preference
- DH = volume descriptor preference
- 01h = primary volume descriptor
- 02h = supplementary volume descriptor
- DL = supplementary volume descriptor preference
- 01h = shift-Kanji
- CX = drive number (0=A:)
- Return: CF set on error
- AX = error code (15=invalid drive,1=invalid function)
- CF clear if successful
- --------d-2F150F-----------------------------
- INT 2F - CD-ROM v2.00+ - GET DIRECTORY ENTRY
- AX = 150Fh
- CL = drive number (0=A:)
- CH bit 0 = copy flag
- clear if direct copy
- set if copy to structure which removes ISO/High Sierra diffs
- ES:BX -> ASCIZ path name
- SI:DI -> buffer for directory entry (see #02628,#02629)
- must be 255 bytes for direct copy, 285 bytes for canonical
- Return: CF set on error
- AX = error code
- CF clear if successful
- AX = disk format (0=High Sierra,1=ISO 9660)
- Note: this function was not supported by Novell DOS 7 NWCDEX prior to the
- 08/16/94 update
- Format of CD-ROM directory entry (direct copy):
- Offset Size Description (Table 02628)
- 00h BYTE length of directory entry
- 01h BYTE length of XAR in Logical Block Numbers
- 02h DWORD LBN of data, Intel (little-endian) format
- 06h DWORD LBN of data, Motorola (big-endian) format
- 0Ah DWORD length of file, Intel format
- 0Eh DWORD length of file, Motorola format
- ---High Sierra---
- 12h 6 BYTEs date and time
- 18h BYTE bit flags
- 19h BYTE reserved
- ---ISO 9660---
- 12h 7 BYTEs date and time
- (seventh byte is offset from GMT in 15-minute increments)
- 19h BYTE bit flags
- ---both formats---
- 1Ah BYTE interleave size
- 1Bh BYTE interleave skip factor
- 1Ch WORD volume set sequence number, Intel format
- 1Eh WORD volume set sequence number, Motorola format
- 20h BYTE length of file name
- 21h N BYTEs file name
- BYTE (optional) padding if filename is odd length
- N BYTEs system data
- SeeAlso: #02629,#01352
- Format of CD-ROM directory entry (canonicalized):
- Offset Size Description (Table 02629)
- 00h BYTE length of XAR in Logical Block Numbers
- 01h DWORD Logical Block Number of file start
- 05h WORD size of disk in logical blocks
- 07h DWORD file length in bytes
- 0Bh 7 BYTEs date and time
- 12h BYTE bit flags
- 13h BYTE interleave size
- 14h BYTE interleave skip factor
- 15h WORD volume set sequence number
- 17h BYTE length of file name
- 18h 38 BYTEs ASCIZ filename
- 3Eh WORD file version number
- 40h BYTE number of bytes of system use data
- 41h 220 BYTEs system use data
- SeeAlso: #02628
- --------d-2F1510-----------------------------
- INT 2F - CD-ROM v2.10+ - SEND DEVICE DRIVER REQUEST
- AX = 1510h
- CX = CD-ROM drive letter (0 = A, 1 = B, etc)
- ES:BX -> CD-ROM device driver request header (see #02597 at AX=0802h)
- Return: CF clear if device driver has been called (check the request header's
- status word to determine whether an error has occurred)
- ES:BX request header updated
- CF set if device driver has not been called
- AX = error code (000Fh = invalid drive, 0001h = invalid function)
- ES:BX request header unchanged
- Notes: MSCDEX initializes the device driver request header's subunit field
- based on the drive number specified in CX
- MSCDEX v2.21 through v2.25 (at least) return error code AX=0001h if
- nested calls are attempted
- BUGS: Novell DOS 7 NWCDEX prior to the 12/13/94 update did not initialize
- the subunit field
- Windows95 sets CF if CX isn't a CD-ROM drive but leaves CF unchanged
- if the drive is in fact a CD-ROM
- SeeAlso: AX=0802h
- --------d-2F15FFBX0000-----------------------
- INT 2F - CD-ROM - CORELCDX - INSTALLATION CHECK
- AX = 15FFh
- BX = 0000h
- Return: BX = ABCDh if CORELCDX loaded
- Note: Corel's CORELCDX.COM is a replacement for MSCDEX.EXE; it also supports
- the standard MSCDEX installation check calls AX=1500h and AX=150Ch
- SeeAlso: AX=1500h"CD-ROM",AX=150Ch
- --------W-2F1600-----------------------------
- INT 2F - MS Windows - WINDOWS ENHANCED MODE INSTALLATION CHECK
- AX = 1600h
- Return: AL = status
- 00h neither Windows 3.x enhanced mode nor Windows/386 2.x running
- 01h Windows/386 2.x running
- 80h XMS version 1 driver installed (neither Windows 3.x enhanced
- mode nor Windows/386 2.x running) (obsolete--see note)
- FFh Windows/386 2.x running
- AL = anything else
- AL = Windows major version number >= 3
- AH = Windows minor version number
- Notes: INT 2F/AH=16h comprises an API for non-Windows programs (DOS device
- drivers, TSRs, and applications) to cooperate with multitasking
- Windows/386 2.x and Windows 3.x and higher enhanced mode.
- certain calls are also supported in the Microsoft 80286 DOS extender in
- Windows standard mode
- this function served as the installation check and AX=1610h served to
- get the driver entry point for XMS version 1, which is now obsolete.
- Use AX=4300h and AX=4310h instead
- SeeAlso: AX=160Ah,AX=1610h,AX=4300h,AX=4680h
- Index: installation check;XMS version 1
- --------W-2F1602-----------------------------
- INT 2F - MS Windows/386 2.x - GET API ENTRY POINT
- AX = 1602h
- Return: ES:DI -> Windows/386 2.x API procedure entry point
- Notes: this interface is supported in Windows 3.x and Windows95 only for 2.x
- compatibility
- to get the current virtual machine (VM) ID in Windows/386 2.x:
- AX = 0000h
- ES:DI -> return address
- JUMP to address returned from INT 2F/AX=1602h
- After JUMP, at return address:
- BX = current VM ID.
- SeeAlso: AX=C020h
- --------W-2F1603-----------------------------
- INT 2F C - MS Windows/386 - GET INSTANCE DATA
- AX = 1603h
- Return: AX = 5248h ('RH') if supported
- DS:SI -> Windows/386 instance data (see #02630)
- Notes: reportedly supported by RM Nimbus MS-DOS 3.3 kernel
- this function is called by DOSMGR when AX=1607h/BX=0015h is not
- supported, as is the case in DOS versions prior to 5.0
- see Geoff Chappell's book _DOS_Internals_ for additional discussions of
- this function, DOSMGR's behavior, and instancing in general
- SeeAlso: AX=1607h/BX=0015h
- Format of Windows/386 instance data:
- Offset Size Description (Table 02630)
- 00h WORD segment of IO.SYS (0000h = default 0070h)
- 02h WORD offset in IO.SYS of STACKS data structure (DOS 3.2x)
- 0000h if not applicable
- 04h WORD number of instance data entries (max 32)
- 06h Array of instance data entries
- Offset Size Description
- 00h WORD segment (0002h = DOS kernel)
- 02h WORD offset
- 04h WORD size
- --------W-2F1605-----------------------------
- INT 2F - MS Windows - WINDOWS ENHANCED MODE & 286 DOSX INIT BROADCAST
- AX = 1605h
- ES:BX = 0000h:0000h
- DS:SI = 0000h:0000h
- CX = 0000h
- DX = flags
- bit 0 = 0 if Windows enhanced-mode initialization
- bit 0 = 1 if Microsoft 286 DOS extender initialization
- bits 1-15 reserved (undefined)
- DI = version number (major in upper byte, minor in lower)
- Return: CX = 0000h if okay for Windows to load
- CX = FFFFh (other registers unchanged) if Windows 3.0 in standard mode
- CX <> 0 if Windows should not load
- ES:BX -> startup info structure (see #02631)
- DS:SI -> virtual86 mode enable/disable callback or 0000h:0000h
- (see #02634)
- Notes: the Windows enhanced mode loader and Microsoft 286 DOS extender will
- broadcast an INT 2F/AX=1605h call when initializing. Any DOS device
- driver or TSR can watch for this broadcast and return the appropriate
- values. If the driver or TSR returns CX <> 0, it is also its
- responsibility to display an error message (however, Windows95 is
- reported to load regardless of the returned CX).
- each handler must first chain to the prior INT 2F handler with
- registers unchanged before processing the call
- if the handler requires local data on a per-VM basis, it must store the
- returned ES:BX in the "next" field of a startup info structure and
- return a pointer to that structure in ES:BX
- a single TSR may set the V86 mode enable/disable callback; if DS:SI is
- already nonzero, the TSR must fail the initialization by setting CX
- nonzero
- MSD checks for Windows 3.0 running in standard mode by testing whether
- CX=FFFFh and other registers are unchanged on return
- Novell DOS v7.0 (Update 8 - Update 11) TASKMGR in multitasking mode
- uses this broadcast, even if TASKMGR.INI sets WinPresent= to OFF
- Microsoft's EMM386.EXE for DOS 5+ when installed with the NOEMS option
- changes its driver name from EMMQXXX0 to EMMXXXX0 while Windows is
- active
- SeeAlso: AX=1606h,AX=1608h,AX=4B05h
- Format of Windows Startup Information Structure:
- Offset Size Description (Table 02631)
- 00h 2 BYTEs major, minor version of info structure
- 02h DWORD pointer to next startup info structure or 0000h:0000h
- 06h DWORD pointer to ASCIZ name of virtual device file or 0000h:0000h
- 0Ah DWORD virtual device reference data (see #02633)
- (only used if above nonzero)
- 0Eh DWORD pointer to instance data records (see #02632) or 0000h:0000h
- ---structure version >= 4.0---
- 12h DWORD pointer to optionally-instanced data records (see #02632)
- or 0000h:0000h
- Format of one Instance Item in array:
- Offset Size Description (Table 02632)
- 00h DWORD address of instance data (end of array if 0000h:0000h)
- 04h WORD size of instance data
- SeeAlso: #02631
- Format of Virtual Device Reference Data:
- Offset Size Description (Table 02633)
- 00h DWORD physical address of ??? or 00000000h
- 04h DWORD physical address of ??? table
- 08h DWORD "DEST_PAGE" address to which pages must be mapped
- 0Ch N DWORDs "SRC_PAGE" physical addresses of the pages
- 00000000h = end of table
- Note: EMM386.EXE sets the first pointer to the start of the device driver
- chain, the second pointer to a field of 40h bytes followed by a
- 16-bit offset to the end of the SRC_PAGE table, and DEST_PAGE to
- the start segment of the UMB area
- SeeAlso: #02631
- (Table 02634)
- Values Windows virtual mode enable/disable procedure is called with:
- AX = 0000h disable V86 mode
- AX = 0001h enable V86 mode
- interrupts disabled
- Return: CF set on error
- CF clear if successful
- interrupts disabled
- SeeAlso: #02631
- --------W-2F1606-----------------------------
- INT 2F - MS Windows - WINDOWS ENHANCED MODE & 286 DOSX EXIT BROADCAST
- AX = 1606h
- DX = flags
- bit 0 = 0 if Windows enhanced-mode exit
- bit 0 = 1 if Microsoft 286 DOS extender exit
- bits 1-15 reserved (undefined)
- Notes: if the init broadcast fails (AX=1605h returned CX <> 0), then this
- broadcast will be issued immediately.
- this call will be issued in real mode
- Novell DOS v7.0 (Update 8 - Update 15) TASKMGR in multitasking mode
- uses this broadcast, even if TASKMGR.INI sets WinPresent= to OFF
- SeeAlso: AX=1605h,AX=1609h
- --------W-2F1607-----------------------------
- INT 2F - MS Windows - VIRTUAL DEVICE CALL OUT API
- AX = 1607h
- BX = virtual device ID (see #02642)
- CX = (usually) callout subfunction
- Return: (usually) AX,BX,CX,DX,ES contain results
- Notes: more of a convention than an API, this call specifies a standard
- mechanism for Windows enhanced-mode virtual devices (VxD's) to talk
- to DOS device drivers and TSRs
- see below for details on several virtual devices
- SeeAlso: AX=1605h,AX=1607h/BX=000Ch,AX=1607h/BX=0014h,AX=1607h/BX=0015h
- SeeAlso: AX=1607h/BX=0018h,AX=1684h"DEVICE API",AX=C020h
- --------W-2F1607BX0006-----------------------
- INT 2F - MS Windows - "V86MMGR" VIRTUAL DEVICE API
- AX = 1607h
- BX = 0006h (VxD identifier of "V86MMGR")
- CX = 0000h
- Return: AX = status
- 0000h if local A20 state changed
- 1607h if A20 unchanged
- other if global A20 state changed
- SeeAlso: AX=1607h"CALL OUT API"
- --------W-2F1607BX000C-----------------------
- INT 2F - MS Windows - "VMD" VIRTUAL MOUSE DEVICE API
- AX = 1607h
- BX = 000Ch (VxD identifier of "VMD")
- Return: CX = nonzero if mouse driver already virtualized
- Note: VMD (Virtual Mouse Driver) calls this and then checks whether CX is
- nonzero; if yes, it will not automatically virtualize the mouse
- driver. This would be used if MOUSE.COM already virtualizes
- itself using the Windows API.
- SeeAlso: AX=1607h/BX=0014h,AX=1607h/BX=0015h
- --------W-2F1607BX000D-----------------------
- INT 2F C - MS Windows95 - "VKD" VIRTUAL DEVICE - ??? CALLOUT
- AX = 1607h
- BX = 000Dh (VxD ID for VKD)
- ???
- Return: ???
- SeeAlso: AX=1607h"CALL OUT API",#02642
- --------W-2F1607BX0010-----------------------
- INT 2F C - MS Windows 3.1 - "BLOCKDEV" VIRTUAL HARD DISK DEVICE API
- AX = 1607h
- BX = 0010h (VxD identifier of "BLOCKDEV")
- CX = function
- 0001h starting FastDisk compatibility tests
- 0002h ending FastDisk compatibility tests
- 0003h check if FastDisk installation allowed
- Return: CX = 0000h if allowed
- Note: this interface is called by the Windows FastDisk driver (such as
- WDCTRL) when it thinks that the INT 13h handler immediately below
- IO.SYS's INT 13h code is not in ROM; it should be supported by any
- program which hooks itself underneath IO.SYS's INT 13h code with
- INT 2F/AH=13h
- SeeAlso: AX=1607h/BX=0014h,INT 2F/AH=13h
- --------W-2F1607BX0014-----------------------
- INT 2F - MS Windows - "VNETBIOS" VIRTUAL DEVICE API
- AX = 1607h
- BX = 0014h (VxD identifier of "VNETBIOS")
- Return: ES:DI -> 128-byte table specifying VNETBIOS actions for each NetBIOS
- command code (see #02635)
- Note: VNETBIOS (Virtual NetBIOS) calls this function to determine whether
- the NetBIOS has an extensions Windows should know about
- SeeAlso: AX=1607h/BX=000Ch,AX=1607h/BX=0010h,AX=1607h/BX=0015h
- (Table 02635)
- Values for VNETBIOS action code:
- 00h "VN_Unknown" unknown command
- 04h "VN_No_Map" no memory mapping necessary
- 08h "VN_Map_In" input buffer is quickly used, so no global mapping needed
- 0Ch "VN_Map_In" output buffer is quickly used, so no global mapping needed
- 10h "VN_Map_In_Out" buffer is quickly used, so no global mapping needed
- 14h "VN_Chain_Send" the chain-send command
- 18h "VN_Cancel" special case for cancel command
- 1Ch "VN_Buffer_In" buffer is incoming
- 20h "VN_Buffer_Out" buffer is outgoing
- 24h "VN_Buffer_In_Out" buffer used for both incoming and outgoing data
- --------D-2F1607BX0015-----------------------
- INT 2F C - MS Windows - "DOSMGR" VIRTUAL DEVICE API
- AX = 1607h
- BX = 0015h (VxD identifier of "DOSMGR")
- CX = function
- 0000h query instance processing
- DX = 0000h
- Return: CX = state
- 0000h not instanced
- other instanced (DOS 5+ kernel returns 0001h)
- DX = segment of DOS drivers or 0000h for
- default of 0070h
- ES:BX -> patch table (see #02637)
- 0001h set patches in DOS
- DX = bit mask of patch requests (see #02636)
- Return: AX = B97Ch
- BX = bit mask of patches applied (see #02636)
- DX = A2ABh
- 0002h remove patches in DOS (ignored by DOS 5.0 kernel)
- DX = bit mask of patch requests (see #02636)
- Return: CX = 0000h (DOS 5-6)
- Note: return values are ignored by DOSMGR in Windows 3.1
- 0003h get size of DOS data structures
- DX = bit mask of request (only one bit can be set)
- bit 0: Current Directory Structure size
- Return: if supported request:
- AX = B97Ch
- CX = size in bytes of requested structure
- DX = A2ABh
- else:
- CX = 0000h
- all other registers preserved
- 0004h determine instanced data structures
- Return: AX = B97Ch if supported
- DX = A2ABh if supported (DOS 5+ kernel returns 0000h)
- BX = bit mask of instanced items
- bit 0: CDS
- bit 1: SFT
- bit 2: device list
- bit 3: DOS swappable data area
- 0005h get device driver size
- ES = segment of device driver
- Return: DX:AX = 0000h:0000h on error (not dev. driver segment)
- DX:AX = A2ABh:B97Ch if successful
- BX:CX = size of device driver in bytes
- Notes: DOSMGR (DOS Manager) will check whether the OEM DOS/BIOS data has
- been instanced via this API and will not perform its own default
- instancing of the normal DOS/BIOS data if so; if this API is not
- supported, DOSMGR will also try to access instancing data through
- INT 2F/AX=1603h
- these functions are supported by the DOS 5+ kernel; DOSMGR contains
- tables of instancing information for earlier versions of DOS
- see Geoff Chappell's book _DOS_Internals_ for additional discussions of
- DOSMGR's behavior and instancing in general
- SeeAlso: AX=1603h,AX=1605h,AX=1607h/BX=000Ch,AX=1607h/BX=0014h
- SeeAlso: AX=1684h"DEVICE API"
- Bitfields for DOSMGR patch requests:
- Bit(s) Description (Table 02636)
- 0 enable critical sections
- 1 NOP setting/checking user ID
- 2 turn INT 21/AH=3Fh on STDIN into polling loop
- 3 trap stack fault in "SYSINIT" to WIN386
- 4 BIOS patch to trap "Insert disk X:" to WIN386
- Format of DOSMGR patch table:
- Offset Size Description (Table 02637)
- 00h 2 BYTEs DOS version (major, minor)
- 02h WORD offset in DOS data segment of "SAVEDS"
- 04h WORD offset in DOS data segment of "SAVEBX"
- 06h WORD offset in DOS data segment of InDOS flag
- 08h WORD offset in DOS data segment of User ID word
- 0Ah WORD offset in DOS data segment of "CritPatch" table to enable
- critical section calls (see INT 2A/AH=80h)
- 0Ch WORD (DOS 5+ only) offset in DOS data segment of "UMB_HEAD",
- containing segment of last MCB in conventional memory
- --------W-2F1607BX0018-----------------------
- INT 2F C - MS Windows - "VMPoll" VIRTUAL DEVICE - IDLE CALLOUT
- AX = 1607h
- BX = 0018h (VMPoll VxD ID) (see #02642)
- CX = 0000h
- Return: AX = status
- 0000h if timeslice used
- nonzero if timeslice not needed
- Note: when VMPoll makes this callout, all virtual machines are idle, and any
- interested TSR can use the opportunity to perform background
- processing
- SeeAlso: AX=1607h"CALL OUT API",AX=1689h
- --------W-2F1607BX0021--------------------------------------
- INT 2F C - MS Windows - "PageFile" VIRTUAL DEVICE - GET LOCK BYTE
- AX = 1607h
- BX = 0021h (PageFile VxD ID)
- CX = 0000h
- Return: AX = status
- 0000h success
- ES:DI -> cache lock byte in disk cacher
- other no disk cache or unsupported
- Notes: PageFile issues this call on real-mode initialization in order to allow
- disk caches to provide it with a byte which it can use to temporarily
- lock the disk cache; VMPOLL also issues this call, so it is made
- twice each time Windows starts up
- if this call fails, PageFile falls back to other techniques for locking
- the disk cache
- SeeAlso: AX=1607h"CALL OUT API"
- --------W-2F1607BX002D-----------------------
- INT 2F C - MS Windows - "W32S" VIRTUAL DEVICE - ??? CALLOUT
- AX = 1607h
- BX = 002Dh (VxD ID for W32S)
- ???
- Return: ???
- SeeAlso: AX=1607h"CALL OUT API",#02642
- --------W-2F1607BX0040-----------------------
- INT 2F C - MS Windows - "IFSMgr" VIRTUAL DEVICE - ??? CALLOUT
- AX = 1607h
- BX = 0040h (VxD ID for IFSMgr)
- ???
- Return: ???
- SeeAlso: AX=1607h"CALL OUT API",#02642
- --------W-2F1607BX0446-----------------------
- INT 2F C - MS Windows - "VADLIBD" VIRTUAL DEVICE - ??? CALLOUT
- AX = 1607h
- BX = 0446h (VxD ID for VADLIBD)
- ???
- Return: ???
- SeeAlso: AX=1607h"CALL OUT API",#02642
- --------W-2F1607BX0484-----------------------
- INT 2F C - MS Windows - "IFSMgr" VIRTUAL DEVICE - ??? CALLOUT
- AX = 1607h
- BX = 0484h (VxD ID for IFSMgr)
- ???
- Return: ???
- SeeAlso: AX=1607h"CALL OUT API",#02642
- --------W-2F1607BX0487-----------------------
- INT 2F C - MS Windows - "NWSUP" VIRTUAL DEVICE - ??? CALLOUT
- AX = 1607h
- BX = 0487h (VxD ID for NWSUP)
- ???
- Return: ???
- SeeAlso: AX=1607h"CALL OUT API",#02642
- --------E-2F1607BX22C0-----------------------
- INT 2F C - Rational Systems DOS/4GW - ???
- AX = 1607h
- BX = 22C0h
- ???
- Return: ???
- SeeAlso: INT 15/AX=BF02h,INT 15/AX=BF04h,#02642
- --------W-2F1607BX28A1-----------------------
- INT 2F C - MS Windows - "PharLap" VIRTUAL DEVICE - ??? CALLOUT
- AX = 1607h
- BX = 28A1h (VxD ID for PharLap)
- ???
- Return: ???
- SeeAlso: AX=1607h"CALL OUT API",#02642
- --------W-2F1607BX7A5F-----------------------
- INT 2F C - MS Windows - "SIWVID" VIRTUAL DEVICE - ??? CALLOUT
- AX = 1607h
- BX = 7A5Fh (VxD ID for SIWVID)
- ???
- Return: ???
- SeeAlso: AX=1607h"CALL OUT API",#02642
- --------W-2F1608-----------------------------
- INT 2F C - MS Windows - WINDOWS ENHANCED MODE INIT COMPLETE BROADCAST
- AX = 1608h
- Notes: called after all installable devices have been initialized
- real-mode software may be called between the Windows enhanced-mode init
- call (AX=1605h) and this call; the software must detect this
- situation
- SeeAlso: AX=1605h,AX=1609h
- --------W-2F1609-----------------------------
- INT 2F C - MS Windows - WINDOWS ENHANCED MODE BEGIN EXIT BROADCAST
- AX = 1609h
- Note: called at the beginning of a normal exit sequence; not made in the
- event of a fatal system crash
- SeeAlso: AX=1606h,AX=1608h
- --------W-2F160A-----------------------------
- INT 2F - MS Windows 3.1 - IDENTIFY WINDOWS VERSION AND TYPE
- AX = 160Ah
- Return: AX = 0000h if call supported
- BX = version (BH=major, BL=minor)
- CX = mode (0002h = standard, 0003h = enhanced)
- SeeAlso: AX=1600h,AX=4680h
- --------W-2F160B-----------------------------
- INT 2F - MS Windows 3.1 - IDENTIFY TSRs
- AX = 160Bh
- ES:DI = 0000h:0000h
- Return: ES:DI -> TSR information structure (see #02638)
- Desc: this call allows Windows-aware TSRs to make themselves known to
- Windows.
- Note: the TSR should first chain to the previous INT 2F handler, then
- allocate a communication structure, place the returned ES:DI
- pointer in the first field, and return a pointer to the new
- structure
- SeeAlso: AX=1605h,AX=160Ch,AX=4B01h,AX=4B05h
- Format of TSR-to-Windows information structure:
- Offset Size Description (Table 02638)
- 00h DWORD pointer to next structure
- 04h WORD PSP segment
- 06h WORD API version ID (0100h)
- 08h WORD EXEC flags (how to load command specified by "exec_cmd")
- bit 0: "WINEXEC"
- bit 1: "LOADLIBRARY"
- bit 2: "OPENDRIVER"
- 0Ah WORD "exec_cmd_show" (see #02639)
- 0Ch DWORD "exec_cmd" pointer to command line to be executed
- 10h 4 BYTEs reserved (0)
- 14h DWORD pointer to TSR ID block (see #02640)
- 18h DWORD pointer to TSR data block or 0000h:0000h
- (Table 02639)
- Values for TSR information structure "exec_cmd_show":
- 00h HIDE
- 01h SHOWNORMAL
- 02h SHOWMINIMIZED
- 03h SHOWMAXIMIZED
- 04h SHOWNOACTIVE
- 05h SHOW
- 06h MINIMIZE
- 07h SHOWMINNOACTIVE
- 08h SHOWNA
- 09h RESTORE
- Note: this value is passed as the second parameter to the WinExec(),
- LoadLibrary(), or OpenDriver() call used to execute a requested
- command line
- SeeAlso: #02638
- Format of Norton Utilities 6.0 TSR ID block:
- Offset Size Description (Table 02640)
- 00h WORD length of name string
- 02h N BYTEs name of TSR's executable
- SeeAlso: #02638
- --------W-2F160C-----------------------------
- INT 2F - MS Windows 3.1 - DETECT ROMs
- AX = 160Ch
- ???
- Return: ???
- Note: used by ROM Windows; appears to be a NOP under standard Windows95
- SeeAlso: AX=160Bh,INT 21/AH=6Dh"ROM"
- --------D-2F160E-----------------------------
- INT 2F U - MS-DOS 7 kernel - BOOT LOGO SUPPORT???
- AX = 160Eh
- BL = subfunction
- 00h get ???
- AX = state of flag manipulated by subfn 04h and 05h
- 0000h clear
- FFFFh set
- DX = ??? (0000h)
- 01h link in INT 10h??? handlers
- 02h unlink INT 10h??? handlers
- 03h ???
- 04h set ??? flag
- 05h clear ??? flag
- Return: AX = 0000h if supported
- ???
- SeeAlso: AX=160Fh,AX=1611h,AX=1614h
- --------D-2F160F-----------------------------
- INT 2F U - MS-DOS 7 kernel - GET/SET ??? HANDLER
- AX = 160Fh
- BL = subfunction
- 00h get ??? handler
- Return: AX = 0000h if supported
- CX:DX -> handler to which control is passed after
- ??? executes
- 01h set ??? handler
- CX:DX -> new handler for ???
- Return: AX = 0000h if supported
- Notes: this function is not supported if ??? in the IO.SYS drivers portion of
- the kernel is an IRET instruction (as is the case on my system)
- rather than a FAR JMP
- the indicated handler seems to be related to INT 10 processing
- SeeAlso: AX=160Eh,AX=1611h,AX=1614h
- --------m-2F1610-----------------------------
- INT 2F - XMS v1.x only - GET DRIVER ADDRESS
- AX = 1610h
- details unavailable
- Note: this function and AX=1600h were only used in XMS version 1 and are now
- obsolete. Use AX=4300h and AX=4310h instead
- SeeAlso: AX=1600h,AX=4310h
- --------D-2F1611-----------------------------
- INT 2F U - MS-DOS 7 kernel - GET SHELL PARAMETERS
- AX = 1611h
- Return: AX = 0000h if supported
- DS:DX -> primary shell's executable name
- DS:SI -> prinary shell command line (counted string)
- BH = ??? (00h)
- BL = ??? (00h)
- Desc: return the program name and commandline from the CONFIG.SYS SHELL=
- statement
- SeeAlso: AX=160Eh,AX=160Fh,AX=1612h,AX=4A33h
- --------D-2F1612-----------------------------
- INT 2F U - MS-DOS 7 kernel - GET ???
- AX = 1612h
- Return: AX = 0000h if supported
- ES:BX -> ??? data (see #02641)
- Note: called by VTD.VXD
- SeeAlso: AX=160Fh,AX=1611h,AX=1613h
- Format of DOS7 ??? kernel data:
- Offset Size Description (Table 02641)
- 00h WORD ??? (0001h)
- 02h DWORD -> ??? function (call with DS=high word of this field)
- the indicated function vectors through the INT 13 hook at
- 0070h:00B4h and then forces the A20 gate open
- ???
- --------D-2F1613-----------------------------
- INT 2F - MS-DOS 7 kernel - GET SYSTEM.DAT (REGISTRY FILE) PATHNAME
- AX = 1613h
- ES:DI -> buffer for full ASCIZ pathname to Windows95 SYSTEM.DAT
- CX = buffer size in bytes
- Return: AX = 0000h if supported
- ES:DI buffer filled
- CX = number of bytes copied into buffer
- SeeAlso: AX=160Eh,AX=1611h,AX=1612h,AX=1614h,AX=1690h
- --------D-2F1614-----------------------------
- INT 2F U - MS-DOS 7 kernel - SET SYSTEM.DAT (REGISTRY FILE) PATHNAME
- AX = 1614h
- ES:DI -> ASCIZ pathname to Windows95 SYSTEM.DAT
- Return: AX = status
- 0000h if successful
- 1614h not supported
- other: maximum length of pathname (004Eh for v4.00.950)
- SeeAlso: AX=160Eh,AX=1611h,AX=1613h,AX=1690h
- ----------2F1615-----------------------------
- INT 2F - Windows95 - SAVE32.COM - INSTALLATION CHECK
- AX = 1615h
- Return: AX = 0000h if installed
- BX = segment of resident code
- Program: SAVE32.COM is a TSR included in the Windows95 distribution which
- preserves the contents of 32-bit registers across invocations of
- all of the hardware interrupt handlers (which, for some older BIOSes
- and TSRs, do not properly preserve the high words of the 32-bit
- registers)
- --------W-2F1680-----------------------------
- INT 2F - MS Windows, DPMI, various - RELEASE CURRENT VIRTUAL MACHINE TIME-SLICE
- AX = 1680h
- Return: AL = status
- 00h if the call is supported
- 80h (unchanged) if the call is not supported
- Notes: programs can use this function in idle loops to enhance performance
- under multitaskers; this call is supported by MS Windows 3+, DOS 5+,
- DPMI 1.0+, and in OS/2 2.0+ for multitasking DOS applications
- does not block the program; it just gives up the remainder of the time
- slice
- should not be used by Windows-specific programs
- when called very often without intermediate screen output under
- MS Windows 3.x, the VM will go into an idle-state and will not
- receive the next slice before 8 seconds have elapsed. This time can
- be changed in SYSTEM.INI through "IdleVMWakeUpTime=<seconds>".
- Setting it to zero results in a long wait.
- this function has no effect under OS/2 2.10-4.0 if the DOS box has an
- "Idle Sensitivity" setting of 100
- SeeAlso: AX=1689h,INT 15/AX=1000h,INT 15/AX=5305h,INT 21/AH=89h,INT 7A/BX=000Ah
- --------W-2F1681-----------------------------
- INT 2F - MS Windows 3+ - BEGIN CRITICAL SECTION
- AX = 1681h
- Notes: used to prevent a task switch from occurring
- should be followed by an INT 2F/AX=1682h call as soon as possible
- nested calls are allowed, and must be followed by an appropriate number
- of "end critical section" calls
- not supported in Windows/386 2.x. Get INDOS flag with INT 21/AH=34h and
- increment by hand.
- SeeAlso: AX=1682h,INT 15/AX=101Bh,INT 21/AH=34h
- --------W-2F1682-----------------------------
- INT 2F - MS Windows 3+ - END CRITICAL SECTION
- AX = 1682h
- Notes: not supported in Windows/386 2.x. Get InDOS flag with INT 21/AH=34h
- and decrement by hand, taking care not to decrement InDOS flag
- through zero
- SeeAlso: AX=1681h,INT 15/AX=101Ch,INT 21/AH=34h
- --------W-2F1683-----------------------------
- INT 2F - MS Windows 3+ - GET CURRENT VIRTUAL MACHINE ID
- AX = 1683h
- Return: BX = current virtual machine (VM) ID
- Notes: Windows itself currently runs in VM 1, but this can't be relied upon
- VM IDs are reused when VMs are destroyed
- an ID of 0 will never be returned
- SeeAlso: AX=1684h"DEVICE API",AX=1685h,AX=168Bh
- --------W-2F1684-----------------------------
- INT 2F - MS Windows - GET DEVICE API ENTRY POINT
- AX = 1684h
- BX = virtual device (VxD) ID (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point, or 0:0 if the VxD does not support an API
- Note: some Windows enhanced-mode virtual devices provide services that
- applications can access. For example, the Virtual Display Device
- (VDD) provides an API used in turn by WINOLDAP.
- SeeAlso: AX=1684h/BX=0001h,AX=1684h/BX=0015h,AX=1683h,AX=4011h,INT 20"Windows"
- (Table 02642)
- Values for MS Windows VxD ID:
- Value Name CallOut V86 PM Description
- 0000h ACT200L IrDA Infrared ActiSys framer VxD
- 0000h ACT220L IrDA Infrared ActiSys 220 framer VxD
- 0000h ADAPTEC IrDA Infrared Adaptec framer VxD
- 0000h AM1500T N N (Win95)
- 0000h ATI N N (Win95) ATI display driver
- 0000h CDFS N N
- 0000h CDTSD N N (Win95) CD-ROM Type-Specific Driver
- 0000h CE2NDIS3 N N (W4Wg)
- 0000h CENDIS N N (W4Wg)
- 0000h CHIPS N N (Win95) Chips&Tech display driver
- 0000h CIRRUS N N (Win95) Cirrus display driver
- 0000h CTNDW N N (W4Wg)
- 0000h CTVSD N N (Win95) CD-ROM Vendor-Specific Driver
- 0000h CM2NDIS3 N N (W4Wg)
- 0000h COMBUFF N N (Win95)
- 0000h COMPAQ N N (Win95) Compaq display driver
- 0000h CPQNDIS3 N N (W4Wg)
- 0000h CRYSTAL IrDA Infrared Crystal framer VxD
- 0000h CWCENUM N N (Win95SR2???)
- 0000h CWCSPUD3 N N (Win95SR2???)
- 0000h DBKVSSD N N (Win95) Databook PCMCIA socket services???
- 0000h DDOM95 N N
- 0000h DECLAN N N (W4Wg)
- 0000h DiskTSD N N (Win95) hard-disk Type-Specific Driver
- 0000h DiskVSD N N (Win95) hard-disk Vendor-Specific Driver
- 0000h DMICTVXD N N
- 0000h DMMDVDX N N Diamond MaximumDVD
- 0000h DRVSPACX N N (Win95)
- 0000h E30N3 N N (W4Wg)
- 0000h E31N3 N N (W4Wg)
- 0000h EE16 N N (W4Wg)
- 0000h EISA N N (Win95)
- 0000h EL59X N N (Win95)
- 0000h ELNK16 N N (W4Wg)
- 0000h ELNK3 N N (Win95)
- 0000h ELNKII N N (W4Wg)
- 0000h ELNKMC N N (W4Wg)
- 0000h ELPC3 N N (W4Wg)
- 0000h ENABLE2 N N (Win95)
- 0000h ENABLE4 N N (Win95)
- 0000h EPRO N N (Win95)
- 0000h ES1488V N N (Win95)
- 0000h ES1688V N N (Win95)
- 0000h ES488V N N (Win95)
- 0000h ES688V N N (Win95)
- 0000h ESI IrDA Infrared ESI framer VxD
- 0000h FILEMON N N DOS386 File Monitor
- 0000h FLS1MTD N N (Win95) flash-memory driver???
- 0000h FLS2MTD N N (Win95) flash-memory driver???
- 0000h HPEISA N N (W4Wg)
- 0000h HPFEND N N (W4Wg)
- 0000h HPISA N N (W4Wg)
- 0000h HPMCA N N (W4Wg)
- 0000h HSFLOP N N
- 0000h IBMTOK N N (W4Wg)
- 0000h IBMTOK4 N N (Win95)
- 0000h IRCOMM IrDA Infrared Virtual COM/LPT driver
- 0000h IRLAMPEX IrDA Infrared Protocol VxD
- 0000h IRLAPFRM IrDA Infrared Virtual COM/LPT frame driver
- 0000h IRMATRAK N N (W4Wg)
- 0000h JAVASUP N N Internet Explorer JAVA support
- 0000h KEYREMAP N N (Windows95 PowerToys) shift-key remapper
- 0000h LPT N N N (Win4Workgroups 3.11) DOS386 LPT Device
- 0000h LPTENUM N N
- 0000h MONVSD
- 0000h MGA N N (Win95) Matrox MGA display driver
- 0000h MSMINI N N (Win95)
- 0000h MSODISUP N N N (Win4Workgroups 3.11) MS ODI Support
- 0000h mvpas N N (Win95) Pro Audio Spectrum driver
- 0000h NECATAPI N N (Win95)
- 0000h NICE N N (Win95)
- 0000h NV3 N N (Win95SR2)
- 0000h NWNBLINK N N N (Win4Workgroups 3.11) Netware NetBIOS
- 0000h OAK N N (Win95) Oak Tech display driver
- 0000h OCTK32 N N (W4Wg)
- 0000h OTCETH N N (W4Wg)
- 0000h PARALINK N N (Win95)
- 0000h PARALLAX IrDA Infrared Parallax framer VxD
- 0000h PCNTN3 N N (W4Wg)
- 0000h PE3NDIS N N (W4Wg)
- 0000h PPM N N (Win95)
- 0000h PROTEON N N (W4Wg)
- 0000h QEMMFix N N
- 0000h QIC117 N N (Win95) QIC-117 floppy-ctrl tape drive
- 0000h QPI N N QEMM Programming Interface (see INT 67/AH=3Fh)
- 0000h RMM N N Real-Mode Mapper for hw with real-mode drivers
- 0000h S3 N N (Win95) S3 display driver
- 0000h S3INFO N N
- 0000h S3MINI N N S3 display driver
- 0000h SAGE N N (Plus!) System Agent
- 0000h scsi1hlp N N (Win95)
- 0000h SERENUM N N
- 0000h SERIAL N N N (Win4Workgroups 3.11) DOS386 Serial Device
- 0000h SERWAVE N N
- 0000h SETP3 N N (Win95) Silicon Ethernet Pocket Adapter
- 0000h SMARTVSD N N (EZ-SMART???)
- 0000h SMC8000W N N (W4Wg)
- 0000h SMC80PC N N (W4Wg)
- 0000h SMC8100W N N (W4Wg)
- 0000h SMC8232W N N (W4Wg)
- 0000h SMC9000 N N (W4Wg)
- 0000h SNIP N N (W4Wg)
- 0000h SOCKET N N (W4Wg)
- 0000h SOCKETSV N N (Win95)
- 0000h SPAP Y Y (Win95)
- 0000h SPENDIS N N (Win95)
- 0000h SRAMMTD N N (Win95) flash-memory driver???
- 0000h STLTH64 N N Diamond Stealth64 driver
- 0000h STLTHMON N N
- 0000h T20N3 N N (W4Wg)
- 0000h T30N3 N N (W4Wg)
- 0000h TCTOK N N (W4Wg)
- 0000h TSENG N N (Win95) Tseng Labs display driver
- 0000h UBNEI N N (W4Wg)
- 0000h UNIMODEM (Win95) Universal Modem Driver
- 0000h VDEF N N (Win95)
- 0000h VGATEWAY N Y (Win95) dialin gateway
- 0000h VIDEO7 N N (Win95) Video7 display driver
- 0000h VRomD N N (Win95)
- 0000h VStDspcD Quarterdeck Stealth D*Space
- 0000h VXDMON
- 0000h WD N N (Win95)
- 0000h WINTOP N N (Windows95 Power Toys)
- 0000h WSHTCP N N
- 0000h XGA N N (Win95) XGA display driver
- 0001h VMM N N Virtual Machine Manager
- 0001h VMM Y Y Windows95 Virtual Machine Manager
- 0002h Debug
- 0003h VPICD Y Y Virtual Prog. Interrupt Controller (PIC) Device
- 0004h VDMAD N N Virtual Direct Memory Access (DMA) Device
- 0005h VTD Y Y Virtual Timer Device
- 0006h V86MMGR Y N N (Windows3.x) Virtual 8086 Mode Device
- 0006h V86MMGR N Y (Win95) Virtual 8068 Mode Device
- 0007h PageSwap N N Paging Device
- 0008h Parity N N Parity-check trapper
- 0009h Reboot N Y Ctrl-Alt-Del handler
- 000Ah VDD N Y Virtual Display Device (GRABBER)
- 000Bh VSD N N Virtual Sound Device
- 000Ch VMD Y Y Y Virtual Mouse Device
- 000Dh VKD N Y Virtual Keyboard Device
- 000Eh VCD N Y Virtual COMM Device
- 000Fh VPD N Y Virtual Printer Device
- 0010h VHD Virtual Hard Disk Device (Windows 3.0)
- 0010h BLOCKDEV Y N N Virtual Hard Disk Device (Windows 3.1)
- 0010h IOS N N N (Win4Workgroups 3.11) DOS386 IOS Device
- 0010h IOS Y Y Windows95 I/O Supervisor
- 0011h VMCPD Y Y (Windows3.x) Virtual Math CoProcessor Device
- 0011h VMCPD N Y (Win95) Virtual Math CoProcessor Device
- 0012h EBIOS N N Reserve EBIOS page (e.g., on PS/2)
- 0013h BIOSXLAT N N Map ROM BIOS API between prot & V86 mode
- 0014h VNETBIOS Y N N Virtual NetBIOS Device
- 0015h DOSMGR Y Y N DOS data instancing (see #02656)
- 0016h WINLOAD
- 0017h SHELL N Y (Windows3)
- 0017h SHELL Y Y (Win95)
- 0018h VMPOLL Y N N
- 0019h VPROD
- 001Ah DOSNET N N assures network integrity across VMs
- 001Ah VNETWARE Y Y Novell NetWare DOSNET replacement
- 001Bh VFD N N Virtual Floppy Device
- 001Ch VDD2 Secondary display adapter
- 001Ch LoadHi N N Netroom LoadHi Device (RMLODHI.VXD)
- 001Ch LoadHi N N 386MAX LoadHi Device (386MAX.VXD)
- 001Ch LoadHi N N Win386 LoadHi Device (EMM386.EXE)
- 001Dh WINDEBUG N Y
- 001Dh TDDebug N Y
- 001Eh TSRLoad TSR instance utility
- 001Fh BiosHook BIOS interrupt hooker VxD
- 0020h Int13 N N N
- 0021h PageFile Y N Y Paging File device
- 0022h SCSI
- 0022h APIX N Y (Win95)
- 0023h MCA_POS Microchannel Programmable Option Select
- 0024h SCSIFD SCSI FastDisk device
- 0025h VPEND Pen device
- 0026h APM Advanced Power Management
- 0026h VPOWERD Y Y (Win95) power management
- 0027h VXDLDR N Y Y (Win4Wg 3.11/Win95) VXD Loader
- 0028h NDIS N Y Y (Win4Wg 3.11) Network Driver Interface Spec
- 0029h ???
- 002Ah VWIN32 N Y (Win95)
- 002Bh VCOMM N Y Y (Win4Workgroups 3.11) DOS386 VCOMM Device
- 002Ch SPOOLER N N Windows95 print spooler
- 002Dh W32S Y N Y WIN32s 32-bit extension to Windows API
- 002Eh ???
- 002Fh ???
- 0030h MACH32 N N Y ATI Mach32 video card
- 0031h NETBEUI N N N (Win4Workgroups 3.11) NETBEUI
- 0032h SERVER N Y Y (Win4Workgroups 3.11) Int21 File Server
- 0032h VSERVER N Y (Win95) Int21 File Server
- 0033h CONFIGMG Y Y (Win95)
- 0033h EDOS N N Windows DOS Box Enhancer by Mom's Software
- 0034h DWCFGMG.SYS Y DOS Plug-and-Play configuration manager
- 0035h SCSIPORT N N (Win95) virtualized access to SCSI adapter
- 0036h VFBACKUP Y Y (Win95)
- 0037h ENABLE Y Y (Win95)
- 0038h VCOND Y Y (Win95)
- 0039h ???
- 003Ah VPMTD N N Y (Win4Workgroups 3.11) IFAX Scheduler Device
- 003Bh DSVXD Y N DoubleSpace VxD from MS-DOS v6.x
- 003Ch ISAPNP N N (Win95)
- 003Dh BIOS Y Y (Win95)
- 003Eh WSOCK Y Y (Win95) WinSock
- 003Fh WSIPX N N (Win95) IPX WinSock
- 0040h IFSMGR N N (Win95)
- 0041h VCDFSD N N (Win95) CD-ROM File System Driver (MSCDEX)
- 0042h MRCI2 N N (Win95) DriveSpace3
- 0043h PCI N N (Win95)
- 0048h PERF N N (Win95)
- 004Ah MTRR N N (Win95SR2) PPro/P-II MTRR enumerator???
- 004Bh NTKERN N Y (Win95SR2)
- 0051h ISAPNP N N (Win95) ISA Plug-and-Play manager
- 008Dh ESDI_506 N N (Win95) MFM/RLL/ESDI disk driver
- 0090h voltrack N N (Win95) Volume Tracker
- 00FDh FAKEIDE N N (Chicago)
- 0102h CV1 N N Microsoft C/C++ 7.00+ CodeView for Windows
- 011Fh VFLATD N Y (Win95)
- 0200h VIPX Y Y NetWare Virtual IPX Driver
- 0200h VTEMPD dummy template driver by Ray Patch
- 0201h VNWLSERV N N NetWare Lite 1.1 Server (SERVER.EXE)
- 0202h WINICE Y Y SoftICE/W
- 0202h SICE Y Y
- 0203h VCLIENT N Y NetWare Lite 1.1+ Client
- 0205h VCAFT N N Novell Virtual CAFT Driver (LANalyzer for Win)
- 0205h BCW Y Y Nu-Mega Bounds Checker for Windows
- 0206h VTXRX N N Novell Virtual TXRX Driver (LANalyzer for Win)
- 0207h DPMS N Y N Novell DOS Protected Mode Services
- 0234h VCOMMUTE Y Y PC Tools Commute
- 0442h VTDAPI N Y MMSys Win386 VTAPI Device
- 0443h ???
- 0444h VADMAD Autoinitialize DMA (Windows 3.0)
- 0445h VSBD Y Y WinResKit: Sound Blaster Device
- 0446h VADLIBD Y Y Y MMSys Win386 AdLib Device (v3.x)
- 0447h ???
- 0448h SETULTRA Gravis UltraSound setup
- 0449h vjoyd N Y (Win95) joystick
- 044Ah mmdevldr Y Y (Win95)
- 044Bh ???
- 044Ch msmpu401 N N (Win95) MPU-401 MIDI driver
- 044Ch cwdmidi Y Y (Crystal???) MIDI driver
- 044Dh msopl N N (Win95) OPL-3 (SoundBlaster FM) driver
- 044Eh mssblst N N (Win95) SoundBlaster MIDI driver
- 045Dh VflatD N Y dva.386, part of WIN32s
- 045Eh ???
- 045Fh mssndsys Microsoft Sound System audio driver
- 045Fh azt16 Y Y Aztech Sound Galaxy 16 audio driver
- 0460h UNIMODEM N Y Universal Modem driver
- 0480h VNetSup N Y Y (Win4Workgrps 3.11) Virtual Network Support
- 0481h VRedir N N N (Win4Workgroups 3.11) Redirector File System
- 0481h VREDIR N N (Win95) Redirector File System driver
- 0482h VBrowse Y Y Win386 Virtual Browser
- 0482h SNAPVXD Y Y (Win95)
- 0483h VSHARE N N (Win4Workgroups) Virtual SHARE
- 0483h VSHARE Y Y (Win95) Virtual SHARE
- 0484h IFSMgr Y N Y (Win4Wg 3.11) Installable File System Manager
- 0485h ??? ???
- 0486h VFAT N Y Y (Win4Workgroups 3.11) Win386 HPFS Driver
- 0487h NWLINK Y Y Win386 Virtual Packet Exchange Protocol
- 0487h NWSUP Y N N NetWare Vnetbios shim
- 0488h VTDI N N (Win95)
- 0489h VIP Y N (Win95)
- 0489h FTCVIP Y Y Frontier Technologies' VIP
- 048Ah VTCP Y
- 048Ah MSTCP Y N (Win95) TCP stack
- 048Ah FTCTDI Y Y Future Technologies' TCP stack
- 048Bh VCache N Y Y (Win4Workgroups 3.11) Virtual File Cache
- 048Bh VCACHE Y Y (Win95) disk cache
- 048Ch ??? ???
- 048Dh RASMAC Y Y enhanced mode Win4Workgroups RASMAC device
- 048Eh NWREDIR Y Y (Win95)
- 048Fh ??? ???
- 0490h ??? ???
- 0491h FILESEC (Win95) File Access Control Manager
- 0492h NWSERVER (Win95)
- 0493h SECPROV (Win95) Security Provider
- 0494h NSCL Y Y (Win95)
- 0495h AFVXD N N (Win95)
- 0496h NDIS2SUP (W4Wg???)
- 0497h MSODISUP N N (W4Wg???)
- 0498h Splitter N N (Win95)
- 0499h PPPMAC Y Y (Win95)
- 049Ah VDHCP Y Y (Win95)
- 049Bh VNBT Y Y (Win95) NetBIOS-over-TCP/IP driver
- 049Ch ???
- 049Dh LOGGER (Win95)
- 04A2h IRLAMP IrDA Infrared Enumerator VxD
- 097Ch PCCARD N Y (Win95) (see INT 20/VxD=097Ch)
- 1020h VCV Microsoft C/C++ 7.00 CodeView
- 1021h VMB Y Y Microsoft C/C++ 7.00 WXSRVR
- 1022h Vpfd Y Y Microsoft C/C++ 7.00
- 1025h MMD Y Y Microsoft C/C++ 8.00, Visual C/C++ 1.00
- 2020h PIPE Y Y by Thomas W. Olson, in Windows/DOS DevJrn 5/92
- 21EAh VADLIBWD N Y Adlib Waveform Driver by John Ridges
- 2200h VFINTD Y Y Norton VFINTD (Norton Desktop)
- 22C0h ??? Y Rational Systems DOS/4GW ???
- 2402h ZMAX N N Qualitas 386MAX v7 DOSMAX handler
- 24A0h VNSS N Y Norton Screen Saver (Norton Desktop)
- 24A1h VNDWD Y Y Norton VNDWD Device (Norton Desktop)
- 24A2h SYMEvent Y Y Norton Utilities v8
- 2540h VILD Y N INTERLNK client from MS-DOS v6.x
- 2640h VASBID N Y WinResKit: Artisoft Sounding Board Device
- 2860h COMMTASK N N Y Windows 386-mode preemptive tasker by James
- A. Kenemuth of Interabang Computing
- 28A0h PHARLAPX Y PharLap inter-VM communications DLL
- 28A1h PharLap Y Y Y PharLap 386|DOS-Extender DOSXNT.386
- 28C0h VXD N Y Y Generic VxD for real and protected mode by
- Andrew Schulman in MSJ February 1993
- 28C1h PUSHKEYS VKD_Force_Keys device
- 28C2h VCR3D Virtual CR3, by A.Schulman in MSJ October 1992
- 2925h EDOS Y Y Enhanced DOS by Firefly Software
- 292Dh VSBPD Y Y Sound Blaster Pro
- 295Ah GRVSULTR Y Y Gravis UltraSound / UltraSound ACE
- 3048h FTCTCPIP N Y Frontier Technologies' TCP/IP stack
- 3049h ??? (called by FNFSC32.VXD, FrontierTech's VNFSD)
- 304Ch DWCFGMG.SYS Y Plug-and-Play configuration access
- 3098h VstlthD N N N for QEMM Stealth ROM mode
- 3099h VVidramD Y N for QEMM VIDRAM support
- 30F6h WSVV N Y (Win95) WinSock for Voice-View Modems???
- 310Eh WPS N Y MS DevNet CD-ROM: Windows Process Status
- 3110h VGSSD Y Y VSGLX16.386 for Aztech Sound Galaxy 16
- 313Bh PMC Power Management Coordinator
- 318Ah LMOUSE Y Y (Win95) Logitech mouse???
- 31CFh STAT.386 Ton Plooy's processor statistics VxD
- 3202h VdspD N N (Win95)
- 3203h vpasd N N (Win95) Pro Audio Spectrum driver
- 32A4h SBAWE Y Y (Win95) SoundBlaster AWE driver
- 32A5h VSB16 N N (Win95) SoundBlaster 16 driver
- 32CBh VFRAD Y Y Dr.Franz - Simultan's diagnotics VFRAD.386
- 32DCh NV3RM N Y (Win95SR2)
- 3354h Discover N Y (Nuts&Bolts) Discover
- 33AAh DECCORE Y Y (Win95) DEC Pathworks core VxD
- 33B4h DECLICL N N (Win95)
- 33F0h VIWD Y Y Gravis UltraSound Plug-n-Play Interwave v1.x
- 33FCh ASPIENUM N N (Win95)
- 34DCh MAGNARAM N Y Quarterdeck MagnaRAM (MAGNA31.VXD/MAGNA95.VXD)
- 357Eh DSOUND Y Y (Win95) DirectSound
- 3584h VSNDSYS Y Y (Win95SR2)
- 35C5h LUGEPS Y Y Lugaru's Epsilon editor
- 36AEh AIB-PC.386 Y Y Sunset Laboratory interface hardware driver
- 377Bh MX1501HAD Cherry keyboard chipcard reader
- 38BEh Vheapx N Y (Nuts&Bolts) Virtual Heap Expander
- 38C0h Bombshel N Y (Nuts&Bolts) Bombshelter
- 38DAh VIWD Y Y UltraSound PnP InterWave driver v2.0beta
- 39E6h A3D N N (Win95SR2)
- 3BFCh CWCSPUD N N (Win95SR2)
- 3BFDh CWCPROXY N N (Win95SR2)
- 3BFEh CWCMMSYS N Y (Win95SR2)
- 3BFFh CWCDSND N N (Win95SR2)
- 3C78h VGARTD N N (Win95SR2)
- 3EE5h WINTEL.VXD "WinTel" Windows remote-control program
- (see also PORT 063Eh)
- 4321h POSTMSG Y Y (see #02712)
- 4321h VPCD N N PCache
- 4321h avvxp500 N N (Win95) VxP500 driver
- 6001h REGVXD Y Y Windows95 Registry Monitor helper
- 7A5Fh SIWVID Y Y Y Soft-ICE for Windows video driver
- 7FE0h VSWITCHD Y N by Jeff Prosise
- 7FE0h VWFD N Y Y reports windowed/fullscreen state; by Neil
- Sandlin of Microsoft, shipped with ANSIPLUS
- 7FE1h VWATCHD N Y Y basic driver w/ no functionality except tracing
- by Keith Jin of Microsoft PSS
- 7FE5h VFINTD N Y Y Virtual Floppy Interrupt trapper by Neil
- Sandlin of Microsoft
- 7FE7h VMPAGES N Y Y demonstration of exporting VxD services, by
- Neil Sandlin of Microsoft
- 7FE8h VPOSTD Y Y PostMessage() demo by Curtis J. Palmer of MS
- 7FE9h VIdleD N N N demonstration of Call_When_Idle function, by
- Bernie McIlroy of Microsoft
- 7FEBh VMIOD N N N Virtual Monitor I/O Traffic Device, by Neil
- Sandlin of Microsoft
- 7FEDh VMIRQD N N N Virtual Monitor IRQ Traffic Device, by Neil
- Sandlin of Microsoft
- 8888h VbillD Bill Potvin II's for reversing Compaq LTE video
- EEEEh VEPSD N N Virtual Extended Paging Services for
- Borland C++ v4.0
- Notes: The high bit of the VxD ID is reserved for future use. Originally,
- the next 10 bits were the OEM number which was assigned by Microsoft,
- and the low 5 bits were the device number. Currently, Microsoft
- assigns VxD IDs individually for each driver; send blank email to
- vxdid@microsoft.com for more information.
- "CallOut"=Y indicates that the VxD uses the INT 2F/AX=1607h/BX=VxDID
- device callout interface; "PM" and "V86" indicate whether the VxD
- provides an API entry point in protected mode and Virtual-86 mode
- (e.g. DOS boxes)
- --------W-2F1684BX0001-----------------------
- INT 2F - MS Windows95 - VMM - GET API ENTRY POINT
- AX = 1684h
- BX = 0001h (virtual device ID for VMM) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02643)
- 0000h:0000h if the VxD does not support an API
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02643)
- Call Windows VMM 16-bit entry point with:
- AX = function number
- ---registry functions---
- 0100h "RegOpenKey"
- STACK: DWORD -> DWORD for returned key handle
- DWORD -> ASCIZ registry key name
- DWORD HKEY (see #02644)
- 0101h "RegCreateKey"
- STACK: DWORD -> DWORD for returned key handle
- DWORD -> ASCIZ registry key name
- DWORD HKEY (see #02644)
- 0102h "RegCloseKey"
- STACK: DWORD key handle from RegOpenKey or RegCreateKey
- 0103h "RegDeleteKey"
- STACK: DWORD -> ASCIZ registry key name
- DWORD HKEY (see #02644)
- 0104h "RegSetValue"
- STACK: DWORD ???
- DWORD -> ???
- DWORD ???
- DWORD -> ???
- DWORD HKEY (see #02644)
- 0105h "RegQueryValue"
- STACK: DWORD -> DWORD for ???
- DWORD -> ASCIZ ???
- DWORD -> ASCIZ ???
- DWORD HKEY (see #02644)
- 0106h "RegEnumKey"
- STACK: DWORD ???
- DWORD -> ASCIZ ???
- DWORD ???
- DWORD HKEY (see #02644)
- 0107h "RegDeleteValue"
- 0108h "RegEnumValue"
- STACK: DWORD -> DWORD for ???
- DWORD -> BYTE ???
- DWORD -> DWORD for ???
- DWORD -> DWORD for ???
- DWORD -> DWORD for ???
- DWORD -> ASCIZ ???
- DWORD ???
- DWORD HKEY (see #02644)
- 0109h "RegQueryValueEx"
- 010Ah "RegSetValueEx"
- 010Bh "RegFlushKey"
- 010Ch "RegLoadKey"
- 010Dh "RegUnLoadKey"
- 010Eh "RegSaveKey"
- 010Fh "RegRestore"
- 0110h "RegRemapPreDefKey"
- Return: parameters popped from stack
- DX:AX = return value
- (Table 02644)
- Values for Windows95 VMM predefined HKEY values:
- 80000000h HKEY_CLASSES_ROOT
- 80000001h HKEY_CURRENT_USER
- 80000002h HKEY_LOCAL_MACHINE
- 80000003h HKEY_USERS
- 80000004h HKEY_PERFORMANCE_DATA
- 80000005h HKEY_CURRENT_CONFIG
- 80000006h HKEY_DYN_DATA
- SeeAlso: #02643
- --------W-2F1684BX0003-----------------------
- INT 2F - MS Windows - VPICD - GET API ENTRY POINT
- AX = 1684h
- BX = 0003h (virtual device ID for VPICD device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02645)
- 0000h:0000h if the VxD does not support an API
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02645)
- Call VPICD API entry point with:
- EAX = function number
- 0000h get version
- Return: AX = binary version (AH=major, AL=minor)
- 0001h virtualize timer???
- 0002h unvirtualize timer???
- --------W-2F1684BX0005-----------------------
- INT 2F - MS Windows - VTD - GET API ENTRY POINT
- AX = 1684h
- BX = 0005h (virtual device ID for VTD device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02646)
- 0000h:0000h if the VxD does not support an API
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02646)
- Call VTD.386/VTD.VXD entry point with:
- AX = function number
- 0000h get VTD version number
- Return: CF clear
- AH = major version
- AL = minor version
- 0100h get current clock tick time
- Return: EDX:EAX = clock tick time in 840ns units since Windows
- was started
- 0101h get current system time in milliseconds
- Return: EAX = time in milliseconds that Windows has been
- running
- 0102h get current virtual machine time
- Return: EAX = cumulative amount of time the virtual machine has
- been active, in milliseconds
- Note: this entry point should only be called directly when TOOLHELP.DLL
- TimerCount() cannot be called
- SeeAlso: #01268,#01270,#01269 at INT 20"Windows"
- --------W-2F1684BX0006-----------------------
- INT 2F P - MS Windows95 - V86MMGR - GET API ENTRY POINT
- AX = 1684h
- BX = 0006h (virtual device ID for V86MMGR device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02647)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02647)
- Call V86MMGR entry point with:
- EAX = function number
- 0000h get V86MMGR version
- Return: CF clear
- AH = major version
- AL = minor version
- 0001h get ???
- Return: CF clear
- EAX = status bits
- bit 0: ???
- bit 1: ???
- bit 2: ???
- bit 3: ???
- bit 4: ???
- else
- Return: CF set
- --------W-2F1684BX0009-----------------------
- INT 2F P - MS Windows - REBOOT - GET API ENTRY POINT
- AX = 1684h
- BX = 0009h (virtual device ID for REBOOT device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02648)
- 0000h:0000h if the VxD does not support an API
- SeeAlso: INT 14/AH=17h"FOSSIL",INT 16/AX=E0FFh
- (Table 02648)
- Call REBOOT protected-mode entry point with:
- AX = function
- 0100h warm boot
- Return: never
- Note: broadcasts "Reboot_Processor" message, which is caught
- by the VKD device
- 0201h set KERNEL Ctrl-Alt-Del handler
- ES:DI -> new Ctrl-Alt-Del handler
- DS:SI -> KERNEL reboot sanity check byte
- Return: CF clear
- Notes: if an application installs its own handler and then
- chains to Windows' handler, Windows will no longer
- be able to detect hung applications, and will always
- produce an "Application not responding" dialog
- DS must contain a writable, fixed selector because
- the provided address is converted to a linear address
- before being stored
- when Ctrl-Alt-Del is pressed in the system VM, Reboot
- sets the sanity check byte to zero, schedules a
- 750ms wait, and then tests whether the check byte is
- still zero; if not, it displays a message that there
- is no hung application and then exits
- 0202h get KERNEL Ctrl-Alt-Del handler
- Return: CF clear
- ES:DI -> current Ctrl-Alt-Del handler
- Note: the default handler is located in KERNEL
- 0203h display "Application not responding" dialog box
- ES:DI -> ASCIZ name of hung application
- Return: never if user pressed Ctrl-Alt-Del a second time
- CF clear
- AX = result
- 0000h user pressed Esc
- 0001h user pressed Enter
- Note: this function is used by the default Windows
- Ctrl-Alt-Del handler
- 0204h set/reset protected-mode INT 01 handler
- CX:EDX -> new protected-mode INT 01 handler
- CX = 0000h restore protected-mode INT 01 handler
- Return: CF clear
- Notes: if CX is nonzero, the current handler address is saved
- internally before the new handler is set; this saved
- address is then used when CX is zero on entry
- used by Windows' default Ctrl-Alt-Del handler; actual
- fatal exit to DOS will be done on next INT 01
- Warning: opened files are not closed and remain open as
- orphaned files in DOS
- Note: functions 0201h and 0203h are not useful outside the system VM
- SeeAlso: #01271,#01273
- --------W-2F1684BX000A-----------------------
- INT 2F P - MS Windows - VDD - GET API ENTRY POINT
- AX = 1684h
- BX = 000Ah (virtual device ID for VDD device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02649)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02649)
- Call VDD entry point with:
- EAX = function
- 0000h get VDD version
- Return: CF clear
- AH = major version
- AL = minor version
- Note: also performs an internal initialization
- 0001h ???
- Return: ECX = ???
- ???
- 0002h
- 0003h
- 0004h
- 0005h
- 0006h
- 0007h
- 0008h
- 0009h
- 0080h
- 0081h
- 0082h
- 0083h
- 0084h
- 0085h
- 0086h
- 0087h
- 0088h
- 0089h
- else
- Return: nothing
- --------W-2F1684BX000C-----------------------
- INT 2F - MS Windows - VMD - GET API ENTRY POINT
- AX = 1684h
- BX = 000Ch (virtual device ID for VMD device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02650)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02650)
- Call VMOUSE entry point with:
- EAX = function number
- 0000h get VMOUSE version
- Return: CF clear
- AH = major version
- AL = minor version
- 0001h
- EBX = ???
- ECX = ???
- Return: CF clear if successful
- CF set on error (e.g. fn 0003h not yet called)
- 0002h ??? (calls "test system VM handle")
- Return: CF clear if successful (in system VM)
- CF set on error
- 0003h ???
- ECX = ???
- DX = ???
- Return: CF clear
- 0004h ???
- Note: invokes Call_Priority_VM_Event
- 0005h get mouse port data
- Return: CF clear
- AL = ??? (04h)
- AH = mouse IRQ interrupt number (IRQ4=0Ch,etc.)
- CX = mouse I/O port address (e.g. 03F8h)
- DX = COM port number??? (0001h for mouse on COM1)
- 0100h NOP???
- Return: CF clear
- 0101h init???
- Return: CF clear
- Note: appears to be the same as fn 0005h, but returns no data
- 0102h unimplemented
- Return: CF set
- 0103h check ???
- Return: AX = status (0000h/0001h)
- Note: checks flag set by fn 0003h
- else
- Return: CF set
- SeeAlso: #02649,#02651
- --------W-2F1684BX000D-----------------------
- INT 2F P - MS Windows - VKD - GET API ENTRY POINT
- AX = 1684h
- BX = 000Dh (virtual device ID for VKD device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02651)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02651)
- Call VKD entry point with:
- EAX = function
- 0000h get VKD version
- Return: CF clear
- AH = major version
- AL = minor version
- 0001h ???
- EBX = VM handle or 00000000h to use ??? VM handle
- CH = ???
- CL = ???
- EDX = ??? or FFFFFFFFh
- Return: CF clear if successful
- CF set on error
- else
- Return: CF set
- SeeAlso: #02650,#02652
- --------W-2F1684BX000E-----------------------
- INT 2F P - MS Windows - VCD - GET API ENTRY POINT
- AX = 1684h
- BX = 000Eh (virtual device ID for VCD device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02652)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02652)
- Call VCD entry point with:
- EDX = function number
- 0000h get VCD version
- Return: CF clear
- AH = major version
- AL = minor version
- 0001h get ???
- Return: CF clear
- AX = bit mask of ???
- 0002h get ???
- CX = COM port number
- Return: CF clear
- DX:AX -> ???
- 0003h set ???
- CX = COM port number
- DX:AX -> new ???
- Return: CF clear
- 0004h acquire COM port
- AX = ???
- CX = COM port number
- Return: CF clear
- AX = ???
- EBX = ???
- DX = ???
- 0005h release COM port
- CX = COM port number
- Return: CF clear
- 0006h ???
- Return: CF set
- AL = 00h
- else
- Return: CF set
- EAX = FFFFFFFFh
- Note: these functions are apparently only available from the system VM,
- returning CF set and EAX=FFFFFFFFh otherwise
- SeeAlso: #02651,#02653
- --------W-2F1684BX000F-----------------------
- INT 2F P - MS Windows - VPD - GET API ENTRY POINT
- AX = 1684h
- BX = 000Fh (virtual device ID for VPD device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02653)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02653)
- Call VPD entry point with:
- EDX = function number
- 0000h get VPD version
- Return: CF clear
- AH = major version
- AL = minor version
- DX = ??? (CB01h)
- 0001h get valid??? printers
- Return: CF clear
- AX = bitmask of ??? printers (bits 0-2)
- 0002h get ??? for printer
- CX = printer port (0-2)
- Return: CF clear if successful
- BX:AX = ???
- CF set on error (invalid port number)
- 0003h set ??? for printer
- CX = printer port (0-2)
- BX:AX = ???
- Return: CF clear if successful
- CF set on error (invalid port number)
- 0004h ???
- CX = printer port (0-2)
- EAX = VM handle
- Return: CF clear if successful
- CF set on error (invalid port number)
- 0005h ???
- CX = printer port (0-2)
- EAX = VM handle
- Return: CF clear if successful
- CF set on error (invalid port number or ???)
- 0006h-000Eh unused
- Return: CF set
- 000Fh ???
- CX = printer port (0-2)
- AX = ???
- Return: CF clear if successful
- CF set on error (e.g. invalid port number)
- 0010h ???
- CX = printer port (0-2)
- Return: CF clear if successful
- CF set on error (e.g. invalid port number)
- 0011h ???
- CX = printer port (0-2)
- Return: CF clear if successful
- CF set on error (e.g. invalid port number)
- 0012h get port status
- CX = printer port (0-2)
- Return: CF clear if successful
- AX = port status (see #P0658 at PORT 03BCh"LPT")
- CF set on error (e.g. invalid port number)
- else
- Return: CF set
- Note: these functions are apparently only available from the system VM,
- returning CF set
- SeeAlso: #02652,#02654
- --------W-2F1684BX0010-----------------------
- INT 2F - MS Windows - IOS - GET API ENTRY POINT
- AX = 1684h
- BX = 0010h (virtual device ID for IOS device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02654)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02654)
- Call IOS entry point with:
- EAX = function number
- 0000h ???
- Return: CF clear if successful
- AX = 0000h
- CF set on error
- AX = FFFFh
- 0001h check if ???
- Return: CF clear if successful
- AX = 0000h
- CF set on error
- AX = FFFFh
- 0002h requestor services???
- DL = service number???
- Return: CF clear if successful
- AX = 0000h
- DX = ???
- CF set on error
- AX = FFFFh
- Note: calls "IOS_Requestor_Service" (see INT 20"Windows")
- 0003h ??? (copies five bytes of data internally)
- Return: CF clear if successful
- AX = 0000h
- EDX = ???
- CF set on error
- AX = FFFFh
- else
- Return: CF set
- AX = FFFFh
- SeeAlso: #02653,#02655
- --------W-2F1684BX0011-----------------------
- INT 2F - MS Windows - VMCPD - GET API ENTRY POINT
- AX = 1684h
- BX = 0011h (virtual device ID for VMCPD device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02655)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02655)
- Call Windows95 VMCPD protected-mode entry point with:
- EAX = function number
- 0000h get VMCPD version
- Return: CF clear
- AH = major version
- AL = minor version
- 0001h get ??? flags
- Return: CF clear
- AX = ??? flags
- bit 0: ???
- bit 1: ???
- bit 2: ???
- bit 3: ???
- else
- Return: CF set
- SeeAlso: #02654,#02656
- --------W-2F1684BX0015-----------------------
- INT 2F - MS Windows - DOSMGR - GET API ENTRY POINT
- AX = 1684h
- BX = 0015h (virtual device ID for DOSMGR device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02656,#01282)
- 0000h:0000h if the VxD does not support an API
- SeeAlso: #01282 at INT 20"Windows"
- (Table 02656)
- Call DOSMGR entry point with:
- AX = 0000h get DOSMGR version
- Return: CF clear
- AX = version (AH = major, AL = minor)
- AX = 0001h set critical focus
- Return: CF clear
- AX = 0002h crash current virtual machine
- Return: never
- Note: displays message box stating that "application has been
- stopped by the DOSMGR device"
- AX = 0003h enter critical section
- Note: this function assumes that the code for INT 2A/AX=8001h
- and INT 2A/AX=8002h have been modified for Windows
- AX = 0004h get VM ID byte
- Return: CF clear if successful
- ES:DI -> VM ID byte
- CF set on error
- Note: this function fails if the INT 2A modifications have not
- yet been applied
- AX = 0005h inform Windows of possible media change
- BL = drive number (00h=A:)
- Return: CF clear if successful
- CF set on error
- SeeAlso: #01282 at INT 20"Windows",#02655,#02657
- --------W-2F1684BX0017-----------------------
- INT 2F U - MS Windows - SHELL - GET API ENTRY POINT
- AX = 1684h
- BX = 0017h (virtual device ID for SHELL device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02657)
- 0000h:0000h if the VxD does not support an API
- SeeAlso: AX=1684h/BX=0021h,#01283 at INT 20"Windows"
- (Table 02657)
- Call SHELL entry point with:
- EDX = function number (0000h-0027h,0100h-0108h, mostly unknown)
- 0000h get version number
- Return: AX = version number
- EBX = system VM handle
- 0001h "SHELL_Get_SYSVM_Info" get system VM information
- Return: CF clear
- AX bit 0 set if system VM executing exclusively
- BX = background time slice priority
- CX = foreground time slice priority
- SI = minimum time slice in milliseconds
- 0002h "SHELL_Set_SYSVM_Info" set system VM information
- AX bit 0 set if system VM should execute exclusively (ignored?)
- BX = background time slice priority (1-10000)
- CX = foreground time slice priority (1-10000)
- SI = minimum time slice in milliseconds (1-10000)
- Return: CF clear if successful
- 0003h "SHELL_Crt_VM" create a virtual machine
- ES:EDI -> SEB structure (see #02658)
- Return: CF clear if successful
- EAX = VM handle
- CF set on error
- EDX,EAX = result from GetSetDetailedVMError()
- 0004h "SHELL_Destroy_VM" destroy a virtual machine
- EBX = VM handle (not system VM)
- Return: nothing
- 0005h "SHELL_Set_Focus"
- EBX = VM handle
- ECX = ???
- Return: nothing
- 0006h "SHELL_Get_VM_State"
- EBX = VM handle (not system VM)
- ES:EDI -> ??? structure
- Return: CF clear if successful
- 0007h "SHELL_Set_VM_State"
- EBX = VM handle (not system VM)
- ES:EDI -> ??? structure
- 0008h "SHELL_Debug_Out"
- ???
- Return: ???
- Note: dummy function in retail version of MS Windows
- 0009h "SHELL_VMDA_Init"
- ???
- Return: ???
- 000Ah "SHELL_VMDA_Exit"
- ???
- Return: ???
- 000Bh "SHELL_Get_Message_Txt"
- ???
- Return: ???
- 000Ch "SHELL_Event_Complete"
- ???
- Return: ???
- 000Dh "SHELL_Get_Contention_Info"
- ???
- Return: ???
- 000Eh "SHELL_Get_Clip_Info"
- ???
- Return: ???
- 000Fh "SHELL_Set_Paste"
- ???
- Return: ???
- 0010h "SHELL_Switcher_Assist"
- ???
- Return: ???
- 0011h "SHELL_Get_FileSysChng"
- ???
- Return: ???
- 0012h "SHELL_Query_Destroy"
- ???
- Return: ???
- 0013h "SHELL_SetFocus_Cur_VM" set input focus to current VM
- ???
- Return: ???
- 0014h "SHELL_User_Busy_API"
- ???
- Return: ???
- 0015h "SHELL_Chng_Hot_Key"
- ???
- Return: ???
- 0016h "SHELL_Get_TermInfo"
- ???
- Return: ???
- ---Windows95---
- 0017h ???
- 0018h ???
- 0019h ???
- 001Ah ???
- 001Bh ???
- 001Ch ???
- 001Dh ???
- 001Eh ???
- 001Fh ???
- 0020h ???
- 0021h ???
- 0022h ???
- 0023h ???
- 0024h ???
- 0025h ???
- 0026h ???
- Note: makes VxDCALL 00178002h (see INT 20"Windows")
- 0027h ???
- 0100h get ??? version
- Return: AX = version??? (0400h for Windows95)
- 0101h not implemented
- Return: CF set
- EAX = FFFFFFFFh
- 0102h not implemented
- Return: CF set
- EAX = FFFFFFFFh
- 0103h not implemented
- Return: CF set
- EAX = FFFFFFFFh
- 0104h ???
- 0105h ???
- 0106h ???
- ???
- Return: CF clear if successful
- CF set on error
- 0107h get SDK version for VxD
- AX = VxD identifier
- Return: EAX = VxD ID (high word) and SDK version (low)
- 00000000h if no such VxD loaded
- Note: makes a VMMCALL 0001013Fh (see INT 20"Windows")
- followed by ???
- 0108h ???
- Return: CF set if called from VM other than system VM
- EAX = FFFFFFFFh
- Note: except for functions 0013h,0026h,and 010xh, this API may only be
- called from the system VM
- SeeAlso: #01283 at INT 20"Windows"
- Format of Shell Execution Block (SEB):
- Offset Size Description (Table 02658)
- 00h DWORD PIF flags (see #02659)
- 04h DWORD display flags (see #02660)
- 08h PWORD -> pathname of .EXE to run
- 0Eh PWORD -> argument list
- 14h PWORD -> working drive/directory
- 1Ah WORD desired number of V86 pages for virtual machine
- 1Ch WORD minimum number of V86 pages for VM
- 1Eh WORD foreground priority
- 20h WORD background priority
- 22h WORD maximum KB of EMS
- 24h WORD minimum KB of EMS
- 26h WORD maximum KB of XMS
- 28h WORD minimum KB of XMS
- 2Ah WORD maximum KB of DPMI???
- 2Ch WORD minimum KB of DPMI???
- 2Eh 128 BYTEs title
- Note: the PWORDs at offsets 08h,0Eh, and 14h consist of a DWORD offset
- followed by a WORD selector
- Bitfields for 386 Enhanced Mode PIF flags:
- Bit(s) Description (Table 02659)
- 0 exclusive use of processor when VM is fullscreen
- 1 VM runs in background
- 2 VM runs in window
- 3-4 ???
- 5 Alt-Tab reserved
- 6 Alt-Esc reserved
- 7 Alt-Space reserved
- 8 Alt-Enter reserved
- 9 Alt-PrtSc reserved
- 10 PrtSc reserved
- 11 Ctrl-Esc reserved
- 12 VM will release idle time slice
- 13 VM not allowed to use high memory
- 14 ???
- 15 VM expanded memory not pageable
- 16 VM extended memory not pageable
- 17 Fast paste from clipboard enabled
- 18 VM application memory not pageable
- 30 Close VM when application exits
- SeeAlso: #02658,#02660
- Bitfields for SHELL display options:
- Bit(s) Description (Table 02660)
- 0 emulate text mode
- 1 monitor text port
- 2 monitor low graphics port
- 3 monitor high graphics port
- 7 Retain video memory
- SeeAlso: #02658,#02659
- --------W-2F1684BX001A-----------------------
- INT 2F - MS Windows - VNETWARE - GET API ENTRY POINT
- AX = 1684h
- BX = 001Ah (virtual device ID for VNETWARE device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX001D-----------------------
- INT 2F P - MS Windows - WINDEBUG - GET API ENTRY POINT
- AX = 1684h
- BX = 001Dh (virtual device ID for WINDEBUG device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX0021-----------------------
- INT 2F PU - MS Windows - PAGEFILE - GET API ENTRY POINT
- AX = 1684h
- BX = 0021h (virtual device ID for PAGEFILE device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02661)
- 0000h:0000h if the VxD does not support an API
- SeeAlso: AX=1684h/BX=0017h,#01289 at INT 20"Windows"
- (Table 02661)
- Call PAGEFILE entry point with:
- AX = function
- 0000h get version
- Return: CF clear
- AX = version (AH = major, AL = minor)
- 0001h get swap file info
- DS:SI -> 128-byte buffer for swap file full pathname
- DS:DI -> 128-byte buffer for SPART.PAR full pathname
- Return: CF clear
- AL = pager type (see #02662)
- AH = flags
- bit 7: swap file corrupted
- ECX = maximum size of swap file
- DS:SI buffer filled if paging enabled
- DS:DI buffer filled if permanent swap file
- 0002h delete permanent swap file on exit
- Return: CF clear
- 0003h get current temporary swap file size
- Return: CF clear
- DX:AX = current swap file size in bytes
- 0000h:0000h if permanent swap file
- Note: this API is only available in protected mode, and may only be called
- from the system VM
- SeeAlso: #01289 at INT 20"Windows",#02663
- (Table 02662)
- Values for MS Windows PAGEFILE pager type:
- 00h paging disabled
- 01h MSDOS
- 02h BIOS
- 03h 32-bit disk access
- SeeAlso: #02661
- --------W-2F1684BX0022-----------------------
- INT 2F P - MS Windows - APIX - GET API ENTRY POINT
- AX = 1684h
- BX = 0022h (virtual device ID for APIX device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02663)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02663)
- Call APIX protected-mode entry point with:
- AH = function number
- 00h get APIX version
- Return: CF clear
- AH = major version
- AL = minor version
- 01h ???
- Return: CF clear
- AX = number of ???
- 02h NOP
- Return: CF clear
- 03h ???
- Return: CF clear
- AX = 0000h/FFFFh
- else
- Return: CF clear (bug?)
- SeeAlso: #02661,#02666
- --------W-2F1684BX0026-----------------------
- INT 2F P - MS Windows - VPOWERD - GET API ENTRY POINT
- AX = 1684h
- BX = 0026h (virtual device ID for VPOWERD device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02664)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02664)
- Call VPOWERD.VXD entry point with:
- AX = function number
- 0000h get VPOWERD version
- Return: DX = 0000h
- AX = version (AH = major, AL = minor)
- 0001h get APM BIOS version
- Return: DX:AX = APM BIOS version
- 0002h get current power management level
- Return: DX:AX = power management level
- 0003h enable/disable power management (see INT 15/AX=5308h)
- ??? = new state of power management
- Return: DX:AX = 0000h:0000h if successful
- else error code (see #02665)
- 0004h set power state (see INT 15/AX=5307h)
- Return: DX:AX = 0000h:0000h if successful
- else error code (see #02665)
- 0005h set system power status
- Return: DX:AX = 0000h:0000h if successful
- else error code (see #02665)
- 0006h restore APM power-on defaults (see INT 15/AX=5309h)
- Return: DX:AX = 0000h:0000h if successful
- else error code (see #02665)
- 0007h get power status (see INT 15/AX=530Ah)
- Return: ???
- 0008h get APM 1.1 power state (see INT 15/AX=530Ch)
- Return: ???
- 0009h invoke OEM APM function
- ??? -> buffer containing parameters for INT 15/AX=5380h
- Return: DX:AX = 0000h:0000h or error code (see #02665)
- buffer updated if successful
- 000Ah register power handler
- ???
- Return: DX:AX = 0000h:0000h or error code
- 000Bh deregister power handler
- ???
- Return: DX:AX = 0000h:0000h or error code (see #02665)
- 000Ch Win32 get system power status
- 000Dh Win32 set system power status
- else
- Return: DX = 0000h
- AX = 00FFh
- SeeAlso: #02663,#02666
- (Table 02665)
- Values for VPOWERD.VXD error code:
- 000000xxh APM error code
- 000000FFh function number out of range
- 80000001h ??? (service 05h)
- 80000002h ??? (service 0Dh)
- 80000003h specified NULL buffer pointer (service 07h,08h,09h)
- 80000005h ??? (service 03h)
- 80000006h ??? (service 04h)
- 80000007h ??? (service 05h)
- 80000008h ??? (service 05h)
- 80000009h out of memory (service 0Ah)
- 8000000Ah ??? (service 0Ah)
- 8000000Bh invalid power handler (service 0Bh)
- 8000000Ch unsupported/disabled??? function
- SeeAlso: #02664,#01290
- --------W-2F1684BX0027-----------------------
- INT 2F - MS Windows95 - VXDLDR - GET API ENTRY POINT
- AX = 1684h
- BX = 0027h (virtual device ID for VXDLDR device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02666)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02666)
- Call VXDLDR entry point with:
- EAX = function number
- 0000h get VXDLDR version
- Return: CF clear
- AX = 0000h (successful)
- DH = major version
- DL = minor version
- 0001h load device
- BX = ASCIZ 8.3 filename of dynamically-loadable VxD (must
- reside in Windows system directory)
- Return: CF clear if successful
- AX = 0000h
- ES:DI -> VxD API entry point
- CF set on error
- AX = error code (see #02667)
- 0002h unload device
- BX = ASCIZ 8.3 filename of dynamically-loadable VxD (must
- reside in Windows system directory)
- Return: CF clear if successful
- AX = 0000h
- CF set on error
- AX = error code (see #02667)
- else
- Return: CF set
- AX = 000Bh
- SeeAlso: #02664,#02668
- (Table 02667)
- Values for VXDLDR error code:
- 0000h successful
- 000Bh invalid function number
- SeeAlso: #02666
- --------W-2F1684BX0028-----------------------
- INT 2F - MS Windows - NDIS - GET API ENTRY POINT
- AX = 1684h
- BX = 0028h (virtual device ID for NDIS device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02668)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02668)
- Call NDIS.VXD entry point with:
- ??? = function number
- 0000h set ??? to ???
- ??? = new ???
- Return: DX:AX = 0000h:0001h
- 0002h ???
- ???
- Return: DX:AX -> ???
- 0003h reset ??? to default
- Return: DX:AX = 0000h:0001h
- else
- Return: DX:AX = 0000h:0000h
- SeeAlso: #02666,#02669
- --------W-2F1684BX002A-----------------------
- INT 2F P - MS Windows - VWIN32 - GET API ENTRY POINT
- AX = 1684h
- BX = 002Ah (virtual device ID for VWIN32 device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02669)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02669)
- Call VWIN32.VXD entry point with:
- AH = function number
- 00h get VWIN32 version and ???
- Return: CF clear
- AH = major version
- AL = minor version
- EDX = ???
- 01h ???
- EBX = ???
- ECX = ???
- Return: CF clear
- EAX = ???
- 02h ???
- Return: CF clear
- AX = ??? or 0000h
- 03h address allocation
- DS:??? -> buffer containing/for page data
- ECX = length of buffer
- AL = subfunction
- 00h reserve page(s)
- 01h commit page(s)
- 02h decommit page(s)
- 03h free page(s)
- Return: CF clear if successful
- CF set on error
- Note: this function uses ECX bytes of stack
- 04h get ???
- Return: CF clear
- EAX = ???
- 05h ???
- EBX = ???
- Return: CF clear
- EAX = ???
- 06h ???
- EBX = ???
- Return: CF clear
- EAX = ???
- 07h ???
- EBX = ???
- Return: CF clear
- EAX = ???
- 08h get ???
- Return: CF clear
- AX = ???
- 09h ???
- EBX = ???
- ECX = ???
- Return: CF clear
- 0Ah ???
- EBX = ???
- Return: CF clear
- 0Bh ???
- EBX = ???
- Return: CF clear
- 0Ch ???
- EBX = ???
- ECX = ???
- EDX = ???
- ???
- Return: CF clear if successful
- EAX = ???
- CF set on error
- 0Dh clear ???
- Return: CF clear
- 0Eh ???
- EBX = ???
- ECX = ???
- Return: CF clear
- 0Fh ???
- EBX = ???
- ECX = ???
- Return: CF clear
- 10h ???
- Return: CF clear
- Note: invokes VMMcall 00010184h
- 11h ???
- Return: CF clear
- Note: invokes VMMcall 00010160h
- 12h ???
- ???
- 13h pop up system error dialogue
- Return: CF clear
- AX = ??? or 0000h
- 14h "IFSMgr_GetConversionTablePtrs"
- Return: CF clear
- DX:AX -> ???
- Note: invokes VxDcall 00400051h
- 15h "Boost_With_Decay"
- EBX = ???
- ECX = ???
- EDX = ???
- Return: CF clear
- else
- Return: CF set
- SeeAlso: #02668,#02670
- --------W-2F1684BX002B-----------------------
- INT 2F - MS Windows - VCOMM - GET API ENTRY POINT
- AX = 1684h
- BX = 002Bh (virtual device ID for VCOMM device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02670)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02670)
- Call VCOMM.VXD entry point with:
- AX = function number
- 0000h open COM/LPT port
- BX = port number (00h-7Fh = COMx, 80h-FFh = LPTx)
- Return: DX:AX = handle???
- 0001h set comm state
- ???
- Return: AX = ???
- 0002h setup comm port
- ???
- Return: AX = status (0000h failed, FFFFh success)
- 0003h transmit character
- EBX = handle???
- CL = character to transmit
- Return: AX = status???
- 0004h close comm port
- EBX = handle???
- Return: ???
- 0005h clear comm error
- EBX = handle???
- EAX = ???
- Return: AX = status???
- 0006h "EscapeCommFunction"
- EBX = handle???
- CX = ???
- EAX = ???
- Return: DX:AX = ???
- 0007h purge buffers
- EBX = handle???
- CX = ???
- Return: AX = status???
- 0008h set comm event mask
- EBX = handle???
- CX = new event mask
- Return: AX = status???
- 0009h get comm event mask
- EBX = handle???
- Return: AX = current event mask
- 000Ah ???
- EBX = handle???
- Return: ???
- 000Bh "WriteComm"
- EBX = handle???
- CX = number of characters to write
- ES???:BX -> buffer (if CX > 1)
- SI??? low byte contains character if CX=1
- Return: AX = status
- EAX high word may be destroyed
- 000Ch "ReadComm"
- EBX = handle???
- CX = number of bytes to read
- ES???:DI -> buffer
- Return: AX = status ???
- ZF = ???
- 000Dh set ??? callback
- EBX = handle???
- CX = ???
- DX = ???
- Return: AX = status???
- else
- Return: AX = 0000h
- SeeAlso: #02669,#02671
- --------W-2F1684BX002D-----------------------
- INT 2F P - MS Windows - W32S - GET API ENTRY POINT
- AX = 1684h
- BX = 002Dh (virtual device ID for W32S device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX0030-----------------------
- INT 2F P - MS Windows - MACH32 - GET API ENTRY POINT
- AX = 1684h
- BX = 0030h (virtual device ID for MACH32 device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX0032-----------------------
- INT 2F - MS Windows - SERVER / VSERVER - GET API ENTRY POINT
- AX = 1684h
- BX = 0032h (virtual device ID for SERVER device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02671)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",#01296 at INT 20"Windows"
- (Table 02671)
- Call Windows95 VSERVER.VXD protected-mode entry point with:
- AX = function number
- 0003h NOP
- Return: AX = 0000h
- 0004h NOP
- Return: AX = 0000h
- 0007h NOP
- Return: AX = 0000h
- 0008h NOP
- Return: nothing
- 000Fh ???
- Return: AX = status
- 0000h successful
- 0842h on error
- 0010h ???
- Return: AX = status
- 0000h successful
- 0842h on error
- else
- Return: AX = 0032h
- SeeAlso: #02670,#02672
- --------W-2F1684BX0033-----------------------
- INT 2F - MS Windows - CONFIGMG - GET API ENTRY POINT
- AX = 1684h
- BX = 0033h (virtual device ID for CONFIGMG device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02672)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02672)
- Call CONFIGMG.VXD entry point with:
- AX = function number
- 0000h get CONFIGMG version
- Return: CF clear
- AH = major version
- AL = minor version
- ...
- 005Ah
- else
- Return: CF set
- AX = 0020h
- SeeAlso: #01297 at INT 20"Windows",#02671,#02673
- --------x-2F1684BX0034-----------------------
- INT 2F - Intel Plug-and-Play - CONFIGURATION MANAGER - GET ENTRY POINT
- AX = 1684h
- BX = 0034h (ID for Configuration Manager) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> API entry point (see #02673)
- 0000h:0000h if Configuration Manager not loaded
- Note: this API is often provided by a DOS device driver, in which case it
- is available whether or not MSWindows is running
- Index: installation check;Plug-and-Play Configuration Manager
- SeeAlso: AX=1684h/BX=304Ch
- (Table 02673)
- Call Configuration Manager entry point with:
- AX = function
- 0000h "CM_GetVersion" get supported DDI version
- Return: AH = BCD major version
- AL = BCD minor version
- BX = number of devices identified by configuration
- Note: returns AX = 0000h if no config manager installed
- 0001h "CM_GetConfig" get device configuration
- BX = device index
- ES:DI -> buffer for configuration information (see #02675)
- Return: AX = status
- 0000h successful
- ES:DI buffer filled
- other error code (0001h = index out of range)
- 0002h "CM_LockConfig" lock device configuration
- ES:DI -> configuration information (see #02675)
- Return: AX = status
- 0000h successful
- ES:DI buffer filled with assigned config
- 0001h resources conflict
- 0002h invalid request or configuration info
- 0003h "CM_UnlockConfig" unlock device configuration
- ES:DI -> configuration information (see #02675)
- Return: AX = status
- 0000h successful
- ES:DI buffer filled with assigned config
- 0001h invalid request or configuration info
- 0004h "CME_QueryResources" get hot-swappable resources
- ES:DI -> configuration information (see #02675)
- Return: AX = status (see #02674)
- 0005h "CME_AllocResources" remove resources from available pool
- ES:DI -> configuration information (see #02675)
- Return: AX = status (see #02674)
- 0006h "CME_DeallocResources" return resources to available pool
- ES:DI -> configuration information (see #02675)
- Return: AX = status (see #02674)
- SeeAlso: #01298 at INT 20"Windows",#02672,#02676
- (Table 02674)
- Values for Configuration Manager status:
- 00h successful
- 01h device not found, configuration error
- 02h I/O port unavailable
- 04h IRQ unavailable
- 08h DMA channel unavailable
- 10h memory range unavailable
- SeeAlso: #02673
- Format of Configuration Information Structure:
- Offset Size Description (Table 02675)
- 00h DWORD bus ID
- 04h DWORD device ID
- 08h DWORD serial number
- 0Ch DWORD logical ID
- 10h DWORD flags
- ---ISA bus---
- 14h BYTE Card Select Number
- 15h BYTE logical device number
- 16h WORD Read Data port
- ------
- 18h WORD number of memory windows
- 1Ah 9 DWORDs physical base addresses of memory windows
- 3Eh 9 DWORDs length of memory windows
- 62h 9 WORDs memory window attributes
- 74h WORD number of I/O ports
- 76h 20 WORDs I/O port base addresses
- B6h 20 WORDs lengths of I/O port ranges
- F6h WORD number of IRQs
- F8h 7 BYTEs IRQ registers
- FFh 7 BYTEs IRQ attributes
- 106h WORD number of DMA channels
- 108h 7 BYTEs DMA channels used
- 10Fh 7 WORDs DMA channel attributes
- 11Dh 3 BYTEs reserved
- SeeAlso: #02673
- --------W-2F1684BX0036-----------------------
- INT 2F - MS Windows - VFBACKUP - GET API ENTRY POINT
- AX = 1684h
- BX = 0036h (virtual device ID for VFBACKUP device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02676)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02676)
- Call VFBACKUP.VXD entry point with:
- nothing -- this API is a NOP for the default Windows95 VFBACKUP
- SeeAlso: #02673,#01126
- --------W-2F1684BX0037-----------------------
- INT 2F - MS Windows - ENABLE.VXD - GET API ENTRY POINT
- AX = 1684h
- BX = 0037h (virtual device ID for ENABLE device) (see #02677)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02676)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02677)
- Call Windows95 ENABLE.VXD entry point with:
- AX = function number
- 0000h get ENABLE version
- Return: CF clear
- AX = version (AH = major, AL = minor)
- 0001h
- EBX = ???
- Return: ???
- 0002h get ???
- Return: CF clear
- DX:AX = ???
- 0003h get ???
- Return: CF clear
- DX:AX = ???
- 0004h ???
- EBX = ???
- ECX = ???
- EDX = ???
- Return: CF clear if successful
- CF set on error
- else
- Return: CF set
- SeeAlso: #02676,#02678
- --------W-2F1684BX0038-----------------------
- INT 2F - MS Windows - VCOND - GET API ENTRY POINT
- AX = 1684h
- BX = 0038h (virtual device ID for VCOND device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02678)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02678)
- Call VCOND.VXD virtual-86 entry point with:
- AX = function number
- 0202h
- 0203h
- 0204h
- 0205h
- 0206h
- 0207h
- 0208h
- 0209h
- 020Ah
- 020Bh
- 020Dh
- 020Eh
- 020Fh
- 0210h
- 0401h
- 0402h
- 0403h
- 0404h
- 0405h
- else
- NOP
- SeeAlso: #02679,#02677
- (Table 02679)
- Call VCOND.VXD protected-mode entry point with:
- AX = function number
- 0301h
- 0302h
- 0303h
- 0304h
- 0305h
- 0306h
- 0307h
- 0308h
- else
- NOP
- SeeAlso: #02678,#02676
- --------W-2F1684BX003B-----------------------
- INT 2F - MS Windows - DSVXD - GET API ENTRY POINT
- AX = 1684h
- BX = 003Bh (virtual device ID for DSVXD device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX003D-----------------------
- INT 2F - MS Windows - BIOS VxD - GET API ENTRY POINT
- AX = 1684h
- BX = 003Dh (virtual device ID for BIOS device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02680)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02680)
- Call BIOS.VXD entry point with:
- AX = function number
- 0000h get BIOS.VXD version
- Return: CF clear
- AH = major version
- AL = minor version
- 0100h ???
- Return: AX = 0000h
- Note: calls CONFIGMG services 804Eh/804Fh
- 0200h ???
- Return: CF clear if successful
- AX = ???
- CF set on error
- AX = error code???
- Note: invokes VxDcall 00290002h
- 0300h ???
- Return: CF clear if successful
- AX = ???
- CF set on error
- AX = error code???
- else
- Return: CF set
- SeeAlso: #02679,#02681
- --------W-2F1684BX003E-----------------------
- INT 2F - MS Windows - WSOCK - GET API ENTRY POINT
- AX = 1684h
- BX = 003Eh (virtual device ID for WSOCK device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX011F-----------------------
- INT 2F P - MS Windows - VFLATD - GET API ENTRY POINT
- AX = 1684h
- BX = 011Fh (virtual device ID for VFLATD device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02681)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",AX=1684/BX=045Dh,INT 20"Windows"
- (Table 02681)
- Call VFLATD.VXD entry point with:
- DL = function number
- 00h get VFLATD version and ???
- Return: CF clear
- EAX = version (AH = major, AL = minor)
- EBX = ???
- ECX = ???
- EDX = ??? or 00000000h
- 01h ???
- AX = ???
- CX = ???
- Return: EAX = ???
- EDX = ???
- 02h ???
- ???
- 03h ???
- EAX = ???
- EBX = ???
- ESI = ???
- CX = ???
- DH = ???
- Return: EAX = ???
- EDX = ???
- CF clear
- 04h ???
- DH = ???
- EAX = ???
- ECX = ???
- Return: CF clear
- EAX = ???
- EDX = ???
- 05h ???
- ???
- Note: locks some linear memory and calls fn 02h
- 06h ???
- ???
- Return: CF clear if successful
- CF set on error
- Note: calls fn 02h and unlocks some linear memory
- else
- Return: CF set
- SeeAlso: #02680
- --------W-2F1684BX0200-----------------------
- INT 2F - MS Windows - VIPX - GET API ENTRY POINT
- AX = 1684h
- BX = 0200h (virtual device ID for VIPX device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX0202-----------------------
- INT 2F - MS Windows - WINICE - GET API ENTRY POINT
- AX = 1684h
- BX = 0202h (virtual device ID for WINICE device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX0203-----------------------
- INT 2F P - MS Windows - VCLIENT - GET API ENTRY POINT
- AX = 1684h
- BX = 0203h (virtual device ID for VCLIENT device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX0205-----------------------
- INT 2F - MS Windows - BCW - GET API ENTRY POINT
- AX = 1684h
- BX = 0205h (virtual device ID for BCW device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX0207-----------------------
- INT 2F R - MS Windows - DPMS VxD - GET API ENTRY POINT
- AX = 1684h
- BX = 0207h (virtual device ID for DPMS device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX0234-----------------------
- INT 2F - MS Windows - VCOMMUTE - GET API ENTRY POINT
- AX = 1684h
- BX = 0234h (virtual device ID for VCOMMUTE device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX0442-----------------------
- INT 2F P - MS Windows - VTDAPI - GET API ENTRY POINT
- AX = 1684h
- BX = 0442h (virtual device ID for VTDAPI device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02682)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02682)
- Call VTDAPI.VXD entry point with:
- EAX = function number
- 0000h
- 0001h
- 0002h
- 0003h
- 0004h
- 0005h
- 0006h
- 0007h
- 0008h
- 0009h
- 000Ah
- 000Bh
- else
- Return: nothing???
- SeeAlso: #02682
- --------W-2F1684BX0444-----------------------
- INT 2F - MS Windows - VADMAD - GET API ENTRY POINT
- AX = 1684h
- BX = 0444h (virtual device ID for VADMAD device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02683)
- 0000h:0000h if the VxD does not support an API
- (Table 02683)
- Call VADMAD entry point with:
- DX = operation
- 0000h set VADMAD mode
- AX = desired mode
- 0001h set VADMAD channel
- AX = desired channel
- Note: after setting mode/channel, start the DMA operation with an OUT to
- I/O port 0Bh (channels 0-3) or D6h (channels 4-7)
- SeeAlso: #01268 at INT 20"Windows"
- --------W-2F1684BX0445-----------------------
- INT 2F - MS Windows - VSBD - GET API ENTRY POINT
- AX = 1684h
- BX = 0445h (virtual device ID for VSBD device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX0446-----------------------
- INT 2F - MS Windows - VADLIBD - GET API ENTRY POINT
- AX = 1684h
- BX = 0446h (virtual device ID for VADLIBD device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX0449-----------------------
- INT 2F P - MS Windows - vjoyd - GET API ENTRY POINT
- AX = 1684h
- BX = 0449h (virtual device ID for "vjoyd" device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02684)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02684)
- Call VJOYD.VXD entry point with:
- AX = function number
- 0000h get VJOYD version
- Return: AH = major version
- AL = minor version
- 0001h ???
- DX = ???
- Return: DX:AX = ???
- 0002h ???
- DX = ???
- Return: DX:AX = ???
- 0003h ???
- Retrun: AX = 0001h
- 0004h ???
- DX = ???
- Return: DX:AX = ???
- 0005h ???
- Return: ???
- else
- Return: EAX = 00000000h
- SeeAlso: #02682,#02685
- --------W-2F1684BX044A-----------------------
- INT 2F - MS Windows - mmdevldr - GET API ENTRY POINT
- AX = 1684h
- BX = 044Ah (virtual device ID for "mmdevldr" device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02685)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02685)
- Call MMDEVLDR.VXD entry point with:
- DX = function number
- 0000h ???
- Return: CF clear if successful
- AX = 0000h
- CF set on error
- AX = error code (000Bh)
- Note: invokes VxDCall 17000Eh ("CallAtAppyTime")
- 0001h ???
- Return: CF clear if successful
- AX = 0000h
- CF set on error
- AX = error code (000Bh)
- Note: invokes VxDCall 17000Eh ("CallAtAppyTime")
- 0002h ???
- EDX = ???
- Return: CF clear if successful
- AX = 0000h
- EDX = ???
- CF set on error
- AX = error code
- 0003h ???
- Return: CF clear if successful
- AX = 0000h
- CF set on error
- AX = error code
- Note: invokes VxDcall 2A0002h ("VWIN32_QueueUserApc")
- 0004h set Win32 event
- Return: CF clear if successful
- AX = 0000h
- CF set on error
- AX = error code
- Note: invokes VxDcall 2A000Eh ("VWIN32_SetWin32Event")
- 0005h ??? (allocates some memory)
- Return: CF clear
- AX = 0000h
- 0006h ??? (frees memory)
- Return: CF clear if successful
- AX = 0000h
- CF set on error
- AX = error code
- else
- Return: CF set
- AX = 000Bh (invalid function)
- SeeAlso: #02684,#02686
- --------W-2F1684BX045D-----------------------
- INT 2F P - MS Windows - VflatD - GET API ENTRY POINT
- AX = 1684h
- BX = 045Dh (virtual device ID for VflatD device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",AX=1684h/BX=011Fh,INT 20"Windows"
- --------W-2F1684BX045F-----------------------
- INT 2F - MS Windows - azt16 - GET API ENTRY POINT
- AX = 1684h
- BX = 045Fh (virtual device ID for "azt16" device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02686)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h/BX=3110h,AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02686)
- Call azt16.VXD entry point with:
- DX = function number
- 0000h get azt16 version
- Return: CF clear
- AX = version (AH=major, AL=minor)
- 0001h ???
- AX = subfunction
- 0000h ???
- Return:
- 0001h ???
- ECX = ???
- else error
- Return: CF clear if successful
- ???
- CF set on error
- AX = error code
- 0002h ???
- AX = ???
- BX = ???
- Return: ???
- 0003h ???
- AX = ???
- BX = ???
- Return: ???
- 0004h ???
- BX = ???
- CX = ???
- Return: CF clear if successful
- AX = 0001h
- CF set on error
- AX = 0000h
- 0005h ???
- BX = ???
- CX = ???
- Return: CF clear if successful
- AX = 0001h
- CF set on error
- AX = 0000h
- 0006h ???
- BX = ???
- ECX = ???
- Return: CF clear if succesful
- AX = ???
- CF set on error
- AX = FFFFh
- 0100h get azt16 version
- Return: CF clear
- AX = version (AH=major, AL=minor)
- 0101h
- AX = ???
- ECX = ???
- Return: CF clear if successful
- AX = 0001h
- CF set on error
- AX = 0000h
- 0102h ???
- AX = ???
- Return: CF clear if successful
- CF set on error
- AX = reason??? (0/1/2)
- 0103h ???
- AX = ???
- Return: CF clear if successful
- AX = 0000h
- CF set on error
- AX = reason??? (1/3)
- 0200h ???
- EDX = ???
- ???
- Return: CF clear if successful
- DX:AX = ???
- CF set on error
- DX:AX = 0000h:0000h
- 0201h ???
- ???
- Return: CF clear
- AX= 0000h
- else
- Return: CF set
- SeeAlso: #02685,#02705
- --------W-2F1684BX0460-----------------------
- INT 2F P - MS Windows - UNIMODEM - GET API ENTRY POINT
- AX = 1684h
- BX = 0460h (virtual device ID for UNIMODEM device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02687)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02687)
- Call UNIMODEM.VXD protected-mode entry point with:
- AX = function number
- 0000h
- Return: AX = ???
- 0001h
- Return: AX = ???
- 0002h
- Return: AX = ???
- 0003h
- Return: AX = ???
- 0004h
- Return: AX = ???
- 0005h
- Return: AX = ???
- 0006h
- Return: AX = ???
- 0007h
- Return: AX = ???
- else
- Return: AX = 0002h
- SeeAlso: #02686,#02688
- --------W-2F1684BX0480-----------------------
- INT 2F - MS Windows - VNetSup - GET API ENTRY POINT
- AX = 1684h
- BX = 0480h (virtual device ID for VNetSup device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02688)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02688)
- Call VNetSup.VXD entry point with:
- AX = function number
- 0000h
- Return: AX = ???
- 0001h
- Return: AX = ???
- 0002h
- Return: AX = ???
- else
- Return: CF set
- AX = 0001h
- SeeAlso: #02687,#02689
- --------W-2F1684BX0482-----------------------
- INT 2F - MS Windows - VBrowse - GET API ENTRY POINT
- AX = 1684h
- BX = 0482h (virtual device ID for VBrowse device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX0483-----------------------
- INT 2F - MS Windows - VSHARE - GET API ENTRY POINT
- AX = 1684h
- BX = 0483h (virtual device ID for VSHARE device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02689)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02689)
- Call Windows95 VSHARE.VXD entry point with:
- AX = function number
- 0000h get VSHARE version
- Return: AH = major version
- AL = (BCD?) minor version
- else
- NOP
- SeeAlso: #02688
- --------W-2F1684BX0484-----------------------
- INT 2F P - MS Windows - IFSMgr - GET API ENTRY POINT
- AX = 1684h
- BX = 0484h (virtual device ID for IFSMgr device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX0486-----------------------
- INT 2F - MS Windows - VFAT - GET API ENTRY POINT
- AX = 1684h
- BX = 0486h (virtual device ID for VFAT device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX0487-----------------------
- INT 2F - MS Windows - NWLINK - GET API ENTRY POINT
- AX = 1684h
- BX = 0487h (virtual device ID for NWLINK device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX0489-----------------------
- INT 2F R - MS Windows - VIP - GET API ENTRY POINT
- AX = 1684h
- BX = 0489h (virtual device ID for VIP device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX048A-----------------------
- INT 2F - MS Windows 3.11 - VXDLDR - GET API ENTRY POINT
- AX = 1684h
- BX = 048Ah (virtual device ID for VTCP device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX048A-----------------------
- INT 2F - MS Windows - VCACHE - GET API ENTRY POINT
- AX = 1684h
- BX = 048Ah (virtual device ID for VCACHE device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02691)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02690)
- Call Windows95 VCACHE.VXD entry point with:
- Return: CF set
- SeeAlso: #02689,#02691
- --------W-2F1684BX048D-----------------------
- INT 2F - MS Windows - RASMAC - GET API ENTRY POINT
- AX = 1684h
- BX = 048Dh (virtual device ID for RASMAC device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX048E-----------------------
- INT 2F - MS Windows - NWREDIR - GET API ENTRY POINT
- AX = 1684h
- BX = 048Eh (virtual device ID for NWREDIR device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02691)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02691)
- Call Windows95 NWREDIR.VXD entry point with:
- Return: CF set
- EAX = FFFFFFFFh
- SeeAlso: #02690
- --------W-2F1684BX0494-----------------------
- INT 2F - MS Windows - NSCL - GET API ENTRY POINT
- AX = 1684h
- BX = 0494h (virtual device ID for NSCL device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02692,#02693)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02692)
- Call Windows95 NSCL.VXD virtual-86 entry point with:
- AL = function number
- 00h
- 01h
- 02h
- 03h
- 04h
- 05h
- 06h
- 07h
- 08h
- 09h
- 0Ah
- else
- Return: AX = FFFFh
- SeeAlso: #02691,#02692
- (Table 02693)
- Call Windows95 NSCL.VXD protected-mode entry point with:
- AL = function number
- 00h
- 01h
- 02h
- 03h
- else
- Return: AX = FFFFh
- SeeAlso: #02692
- --------W-2F1684BX0499-----------------------
- INT 2F - MS Windows - PPPMAC - GET API ENTRY POINT
- AX = 1684h
- BX = 0499h (virtual device ID for PPPMAC device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX049A-----------------------
- INT 2F - MS Windows - VDHCP - GET API ENTRY POINT
- AX = 1684h
- BX = 049Ah (virtual device ID for VDHCP device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX049B-----------------------
- INT 2F - MS Windows - VNBT - GET API ENTRY POINT
- AX = 1684h
- BX = 049Bh (virtual device ID for VNBT device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX1021-----------------------
- INT 2F - MS Windows - VMB - GET API ENTRY POINT
- AX = 1684h
- BX = 1021h (virtual device ID for VMB device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX28A0-----------------------
- INT 2F - MS Windows - PHARLAPX - GET API ENTRY POINT
- AX = 1684h
- BX = 28A0h (virtual device ID for PHARLAPX device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02694)
- 0000h:0000h if the VxD does not support an API
- (Table 02694)
- Call PHARLAPX VxD entry point with:
- AX = function
- 0001h get PHARLAP.386 version
- Return: AX = version number (AH = major, AL = minor)
- ---queue functions---
- 0101h allocate a new message queue
- CX = size of queue data buffer in bytes
- Return: DX:AX = handle for new queue, or 0000h:0000h on error
- 0102h allocate a new key queue
- CX = size of queue data buffer in bytes
- EDX = VM handle into which keys will be pasted
- Return: DX:AX = handle for new queue, or 0000h:0000h on error
- 0103h free message queue
- EDX = queue handle
- Return: AX = status (0000h,0003h,0007h) (see #02695)
- 0104h free key queue
- EDX = queue handle
- Return: AX = status (0000h,0003h,0005h) (see #02695)
- 0105h add message to communications queue
- EDX = queue handle
- BX = length of message data in bytes
- CX = length of message header in bytes
- ES:(E)SI -> message header
- GS:(E)DI -> message data
- Return: AX = status (0000h-0003h,0007h) (see #02695)
- 0106h remove message from queue
- EDX = queue handle
- CX = length of buffer in bytes
- ES:(E)SI -> buffer for message
- Return: AX = status (0000h,0003h,0006h,0007h,0008h) (see #02695)
- CX = length of returned message (if AX=0000h or 0008h)
- 0107h flush queue (remove all data)
- EDX = queue handle
- Return: AX = status (0000h,0003h) (see #02695)
- 0108h add PasteKey structure(s) to key queue
- EDX = queue handle
- CX = number of PasteKey structures in buffer
- ES:(E)SI -> PasteKey array (see #02696)
- Return: AX = status (0000h-0003h) (see #02695)
- 0109h register enqueueing callback function
- EDX = queue handle
- ECX = function argument
- ES:(E)SI -> callback function
- Return: AX = status (0000h,0003h,0009h) (see #02695)
- 010Ah register dequeueing callback function
- EDX = queue handle
- ECX = function argument
- ES:(E)SI -> callback function
- Return: AX = status (0000h,0003h,0009h) (see #02695)
- 010Bh unregister enqueueing callback function
- EDX = queue handle
- Return: AX = status (0000h,0003h,0009h) (see #02695)
- 010Ch unregister dequeueing callback function
- EDX = queue handle
- Return: AX = status (0000h,0003h,0009h) (see #02695)
- 010Dh get message queue status
- EDX = queue handle
- Return: AX = status (0000h,0003h) (see #02695)
- CX = number of pending messages
- 010Eh peek at message in queue
- EDX = queue handle
- BX = number of message in queue (0000h = first)
- CX = size of buffer in bytes
- ES:(E)SI -> buffer for message
- Return: AX = status (0000h,0003h,0006h,0008h) (see #02695)
- CX = length of returned message (if AX=0000h or 0008h)
- 010Fh peek at last message in queue
- EDX = queue handle
- CX = size of buffer in bytes
- ES:(E)SI -> buffer for message
- Return: AX = status (0000h,0003h,0006h,0008h) (see #02695)
- CX = length of returned message (if AX=0000h or 0008h)
- 0110h replace last message in queue
- EDX = queue handle
- CX = length of message header in bytes
- BX = length of message data in bytes
- ES:(E)SI -> message header
- GS:(E)DI -> message data
- Return: AX = status (0000h,0002h,0003h) (see #02695)
- 0111h set permitted message count for queue
- EDX = queue handle
- CX = maximum number of messages to enqueue (FFFFh = unlimited)
- Return: AX = status (0000h,0003h) (see #02695)
- ---generalized VxD services---
- 0202h call VxD function
- ES:(E)BX -> in/out register-set buffer
- Return: buffer updated
- 0203h map flat
- ???
- --system register functions---
- 0301h read system registers into buffer
- ES:(E)SI -> 512-byte buffer
- Return: AX = 0000h
- buffer filled (mostly zeros)
- 0302h copy linear memory into buffer
- EDX = linear address
- CX = number of bytes to copy
- ES:(E)SI -> buffer
- Return: AX = 0000h
- 0303h copy data into linear memory
- EDX = linear address
- CX = number of bytes to copy
- ES:(E)SI -> buffer
- Return: AX = 0000h
- 0304h freeze VM
- ???
- 0305h unfreeze VM
- ???
- ---name registration functions---
- 0401h register name
- EDX = magic number to associate with name
- ES:(E)SI -> name to register
- Return: AX = status (0000h,0009h) (see #02695)
- 0402h unregister name
- ES:(E)SI -> name to be unregistered
- Return: AX = status (0000h,0009h) (see #02695)
- 0403h look up name
- ES:(E)SI -> name to look up
- Return: DX:AX = magic number or 0000h:0000h if not registered
- 0404h get name list handle
- Return: DX:AX = name list handle
- 0000h:0000h if not initialized
- ---special DOS server routines (undocumented)---
- 0501h register
- 0502h unregister
- 0503h validate VM
- 0504h get INT9 count
- 0505h get screen line
- 0506h get shift status
- 0507h get server PB pointer
- 0508h initialize DOS shell
- 0509h get last VM handle
- (Table 02695)
- Values for PHARLAPX function status:
- 00h successful
- 01h data is too large to fit in queue
- 02h queue is full
- 03h invalid queue handle
- 04h invalid VM handle for queue
- 05h error starting a paste operation
- 06h queue is empty
- 07h a VM is blocked waiting on the queue
- 08h message was too long (truncated)
- 09h unable to register or unregister specified callback
- SeeAlso: #02694
- Format of PHARLAPX PasteKey structure:
- Offset Size Description (Table 02696)
- 00h BYTE ASCII code
- 01h BYTE scan code (see #00006)
- 02h WORD shift states
- SeeAlso: #02694
- Format of PHARLAPX VxD-call register structure:
- Offset Size Description (Table 02697)
- 00h DWORD call number
- 04h WORD input register map (see #02698)
- 06h WORD output register map (see #02698)
- 08h 7 DWORDs values for EAX, EBX, ECX, EDX, EBP, ESI, EDI on call
- 24h 4 WORDs values for DS, ES, FG, GS on call
- 2Ch DWORD EFLAGS on call
- 30h 7 DWORDs returned values of EAX, EBX, ECX, EDX, EBP, ESI, EDI
- 4Ch 4 WORDs returned values of DS, ES, FS, GS
- 54h DWORD returned EFLAGS
- SeeAlso: #02694
- Bitfields for PHARLAPX VxD-call register map:
- Bit(s) Description (Table 02698)
- 0 value in EAX field is valid
- 1 value in EBX field is valid
- 2 value in ECX field is valid
- 3 value in EDX field is valid
- 4 value in EBP field is valid
- 5 value in ESI field is valid
- 6 value in EDI field is valid
- 7 value in DS field is valid
- 8 value in ES field is valid
- 9 value in FS field is valid
- 10 value in GS field is valid
- 11 value in EFLAGS field is valid
- SeeAlso: #02697
- --------W-2F1684BX28A1-----------------------
- INT 2F - MS Windows - PharLap VxD - GET API ENTRY POINT
- AX = 1684h
- BX = 28A1h (virtual device ID for PharLap device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",AX=1684h/BX=28A0h,INT 20"Windows"
- --------W-2F1684BX2925-----------------------
- INT 2F - MS Windows - EDOS - GET API ENTRY POINT
- AX = 1684h
- BX = 2925h (virtual device ID for EDOS device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02699)
- 0000h:0000h if the VxD does not support an API
- (Table 02699)
- Call EDOS entry point with:
- AX = 0000h get EDOS version number
- Return: AH = major version
- AL = minor version
- AX = 0001h display message
- CX = 0
- DX:BX -> ASCIZ Message
- AX = 0002h get EDOS error coded
- Return: EAX = time in milliseconds that Windows has been running
- AX = 0003h execute windows program
- Return: EAX = cumulative amount of time the virtual machine has
- been active, in milliseconds
- AX = 0008h get/set priority
- BX = 0000h??? foreground
- 0001h background
- DI = 0000h get
- 0001h set
- DX = priority setting
- Return: CX = foreground priority
- DX = background priority
- BX:AX = flags
- 00000001h exclusive ON
- 00000010h background ON
- SI = CPU percentage
- --------W-2F1684BX292D-----------------------
- INT 2F - MS Windows - VSBPD - GET API ENTRY POINT
- AX = 1684h
- BX = 292Dh (virtual device ID for VSBPD device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------W-2F1684BX295A-----------------------
- INT 2F - MS Windows - GRVSULTR - GET API ENTRY POINT
- AX = 1684h
- BX = 295Ah (virtual device ID for GRVSULTR device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- --------x-2F1684BX304C-----------------------
- INT 2F - Intel Plug-and-Play - CONFIGURATION ACCESS - GET ENTRY POINT
- AX = 1684h
- BX = 304Ch (ID for Configuration Access) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> API entry point (see #02700)
- 0000h:0000h if Configuration Access not loaded
- Note: this API is often provided by a DOS device driver, in which case it
- is available whether or not MSWindows is running
- Index: installation check;Plug-and-Play Configuration Access
- SeeAlso: AX=1684h/BX=0034h
- (Table 02700)
- Call Plug-and-Play Configuration Access entry point with:
- AX = function
- 0000h "CA_GetVersion"
- Return: AX = BCD version (AH = major, AL = minor)
- 0001h "CA_PCI_Read_Config_Byte" (see also INT 1A/AX=B108h)
- !!!
- 0002h "CA_PCI_Read_Config_Word" (see also INT 1A/AX=B109h)
- 0003h "CA_PCI_Read_Config_DWord" (see also INT 1A/AX=B10Ah)
- 0004h "CA_PCI_Write_Config_Byte" (see also INT 1A/AX=B10Bh)
- 0005h "CA_PCI_Write_Config_Word" (see also INT 1A/AX=B10Ch)
- 0006h "CA_PCI_Write_Config_DWord" (see also INT 1A/AX=B10Dh)
- 0007h "CA_PCI_Generate_Special_Cycle" (see also INT 1A/AX=B106h)
- 0008h "CA_PCI_Get_Routing_Options" (see also INT 1A/AX=B10Eh)
- 0009h invalid function
- 000Ah invalid function
- 000Bh "CA_PnPISA_Get_Info"
- 000Ch "CA_PnPISA_Read_Config_Byte"
- 000Dh "CA_PnPISA_Write_Config_Byte"
- 000Eh "CA_PnPISA_Get_Resource_Data"
- 000Fh invalid function
- 0010h "CA_EISA_Get_Board_ID"
- 0011h "CA_EISA_Get_Slot_Config"
- 0012h "CA_EISA_Get_SlotFunc_Config"
- 0013h "CA_EISA_Clear_NVRAM_Config"
- 0014h "CA_EISA_Write_Config"
- 0015h invalid function
- 0016h "CA_ESCD_Get_Info"
- 0017h "CA_ESCD_Read_Config"
- 0018h "CA_ESCD_Write_Config"
- 0019h invalid function
- 001Ah "CA_Acfg_PCI_Manage_IRQs"
- DL = IRQ???
- ES:DI -> ???
- Return: AX = status
- 001Bh "CA_Acfg_PCI_Get_Routing_Options"
- ES:DI -> IRQ routing table header
- (see #01259 at INT 1A/AX=B406h)
- Return: AX = status
- 001Ch-001Fh invalid functions
- 0020h "CA_PnPB_Get_Num_Sys_Dev_Nodes"
- 0021h "CA_PnPB_Get_Sys_Dev_Node"
- 0022h "CA_PnPB_Set_Sys_Dev_Node"
- 0023h "CA_PnPB_Get_Stat_Res_Info"
- 0024h "CA_PnPB_Set_Stat_Res_Info"
- Return: AX = FFFFh if unsupported function
- SeeAlso: #02701
- --------W-2F1684BX3099-----------------------
- INT 2F - MS Windows - VVidramD - GET API ENTRY POINT
- AX = 1684h
- BX = 3099h (virtual device ID for VVidramD device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02701)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02701)
- Call VVidramD (VIDRAM.VXD) virtual-86 entry point with:
- AX = function number
- 0000h map page???
- BX = page number???
- Return: CF clear if successful
- CF set on error
- 0001h ???
- Return: CF clear if successful
- CF set on error
- else
- Return: CF set
- SeeAlso: #02700,#02702
- --------W-2F1684BX30F6-----------------------
- INT 2F P - MS Windows - WSVV - GET API ENTRY POINT
- AX = 1684h
- BX = 30F6h (virtual device ID for WSVV device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02702)
- Call WSVV.VXD protected-mode entry point with:
- AX = function number
- ????
- Return: ???
- SeeAlso: #02701,#02703
- --------W-2F1684BX310E-----------------------
- INT 2F - MS Windows - WPS - GET API ENTRY POINT
- AX = 1684h
- BX = 310Eh (virtual device ID for WPS device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02703)
- 0000h:0000h if the VxD does not support an API
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02703)
- Call WPS protected-mode entry point with:
- DX = function
- 0000h get WPS.386 version
- Return: CF clear
- AX = version (AH = major, AL = minor)
- 0001h get number of installed VxDs
- Return: CF clear
- AX = number of installed VxDs
- 0002h get VxD characteristics
- AX = number of VxD
- ES:BX -> buffer for VxD characteristics structure (see #02704)
- Return: CF clear
- ES:BX buffer filled
- SeeAlso: #02702,#02706
- Format of WPS.386 VxD characteristics structure:
- Offset Size Description (Table 02704)
- 00h WORD VxD ID number
- 02h BYTE VxD minor version
- 03h BYTE VxD major version
- 04h BYTE DDK minor version
- 05h BYTE DDK major version
- 06h WORD flags
- bit 0: V86 API supported
- bit 1: PM API supported
- bit 2: services supported
- 08h DWORD start order
- 0Ch 9 BYTEs ASCIZ VxD name
- SeeAlso: #02703
- --------W-2F1684BX3110-----------------------
- INT 2F - MS Windows - VSGLX16.386 - GET API ENTRY POINT
- AX = 1684h
- BX = 3110h (virtual device ID for VSGLX16.386) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02705)
- 0000h:0000h if the VxD does not support an API
- SeeAlso: AX=1684h/BX=045Fh,AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02705)
- Call VSGLX16.386 entry point with:
- DX = function number
- 0000h get azt16 version
- Return: CF clear
- AX = version returned by "azt16" device
- 0001h get ???
- AX = ??? (always fails if nonzero)
- ES:BX -> buffer for ???
- first DWORD of buffer must be set to length of buffer
- (in bytes, 1 <= size <= 92) before calling
- Return: CF clear if successful
- AX = 0001h
- CF set on error (invalid pointer, bad buffer size)
- AX = 0000h
- 0002h
- AX = ???
- BX = ???
- Return: CF clear if successful
- AX = ???
- CF set on error
- AX = error code
- 0003h
- AX = ???
- BX = ???
- Return: CF clear if successful
- CF set on error
- 0004h set ???
- ES:DI -> buffer containing ???
- BX = ???
- CX = number of bytes to copy
- Return: CF clear if successful
- AX = 0001h
- CF set on error
- AX = 0000h
- 0005h get ???
- ES:DI -> buffer for ???
- BX = ???
- CX = number of bytes to copy
- Return: CF clear if successful
- AX = 0001h
- CF set on error
- AX = 0000h
- else
- Return: CF set
- SeeAlso: #02686
- --------W-2F1684BX31CF-----------------------
- INT 2F - MS Windows - STAT.386 - GET API ENTRY POINT
- AX = 1684h
- BX = 31CFh (virtual device ID for STAT.386) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02706)
- 0000h:0000h if the VxD does not support an API
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02706)
- Call STAT.386 entry point with:
- AX = function
- 0000h get version
- Return: AX = STAT.386 version (AH = major, AL = minor)
- 0001h execute RDMSR/WRMSR/RDTSC
- BH = 00h
- BL = second opcode byte (30h=WRMSR,31h=RDTSC,32h=RDMSR)
- EDX:EDI = value to be written (for BL=30h)
- ECX = MSR number for RDMSR/WRMSR
- Return: EDX:EAX = value read (RDTSR/RDMSR only)
- SeeAlso: #02703,#02707
- --------W-2F1684BX34DC-----------------------
- INT 2F - QEMM v8.01 - MAGNARAM VxD - GET API ENTRY POINT
- AX = 1684h
- BX = 34DCh (virtual device ID for MAGNARAM) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02707)
- 0000h:0000h if the VxD does not support an API
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02707)
- Call MAGNARAM MAGNA95.VXD protected-mode entry point with:
- AX = function number
- 0000h get version and ???
- Return: AX = version (AH = major, AL = minor)
- CX = ???
- bit 0: ???
- bit 1: ???
- 0001h get ???
- Return: CF clear
- DX:AX = ??? SHL 2
- 0002h
- Return: CF clear if successful
- AX = ???
- DX = ???
- CF set on error
- 0003h get ???
- Return: CF clear
- DX:AX = ??? SHL 2
- 0004h ???
- Return: CF clear
- DX:AX = ???
- 0005h ???
- Return: CF clear
- DX:AX = ???
- 0006h ???
- Return: CF clear
- DX:AX = ???
- 0007h ???
- Return: CF clear
- DX:AX = ???
- 0008h ???
- Return: CF clear
- DX:AX = ???
- 0009h ???
- Return: CF clear
- DX:AX = ???
- 000Ah ???
- Return: CF clear
- DX:AX = ???
- 000Bh get ???
- Return: CF clear
- DX:AX = ??? SHL 2
- 000Ch get ???
- Return: CF clear
- DX:AX = ??? SHL 2
- 000Dh get ???
- Return: CF clear
- DX:AX = ??? SHL 2
- 000Eh get ???
- Return: CF clear
- AX = ???
- DX = ???
- 000Fh get ???
- Return: CF clear
- DX:AX = ???
- 0010h get ???
- Return: CF clear
- DX:AX = ???
- 0011h get ???
- Return: CF clear
- DX:AX = ???
- 0012h get ???
- Return: CF clear
- DX:AX = ???
- 0013h get ???
- Return: CF clear
- DX:AX = ???
- 0014h get ???
- Return: CF clear
- DX:AX = ???
- 0015h get ???
- Return: CF clear
- DX:AX = ???
- else
- Return: CF set
- SeeAlso: #02706,#02708
- --------W-2F1684BX357E-----------------------
- INT 2F - MS Windows - DSOUND - GET API ENTRY POINT
- AX = 1684h
- BX = 357Eh (virtual device ID for DSOUND device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- ----------2F1684BX377B-----------------------
- INT 2F - MS Windows - MX1501HAD - GET API ENTRY POINT
- AX = 1684h
- BX = 377Bh (virtual device ID for MX1501HAD device)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02708)
- 0000h:0000h if the VxD does not support an API
- Note: The drivers VCMD95C.VXD and VCMD.386 are part of the driver disks
- provided with the chip-card-reader/keyboard combination MX 1501 HAD,
- produced by Cherry
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02708)
- Call CHERRY VCMD95C.VXD entry point with:
- AX = function
- 0001h get version
- Return: AX = version number (0100h) (AH = major, AL = minor)
- 0002h hook INT 09 (and 8???)
- 0003h unhook INT 09 (and 8???)
- 0004h get number of bytes in FIFO
- Return: AX = bytes in FIFO
- 0005h get next FIFO-data
- Return: AX = data
- BL = port number
- BH = direction (1=in, 0=out)
- DX:CX = timestamp
- 0006h clear FIFO
- 0007h output byte
- DX = port number
- BL = keyboard command
- Return: data in FIFO (see #02710)
- (value, port, in/out, timestamp)
- 0008h input byte
- DX = port number
- Return: data in FIFO (see #02710)
- (value, port, in/out, timestamp)
- 0009h input byte immediately
- DX = port number
- Return: AX = data
- 000Ah read next FIFO data (nondestructive)
- Return: AX = data
- BL = port number
- BH = direction (1=in, 0=out)
- DX:CX = timestamp
- 000Bh get timestamp
- Return: DX:CX = timestamp (in ms)
- 000Ch enable IRQ 1
- 000Dh disable IRQ 1
- 000Eh enable data retrieval
- Note: Sets a flag in the internal mode-byte which
- tells the driver to recognize the data
- 000Fh disable data retrieval
- Note: resets a flag in the internal mode-byte
- 0010h get retrieval mode
- Return: AX = current retrieval mode
- 0011h set retrieval mode
- BX = new retrieval mode (see #02709)
- Return: AX = old retrieval mode
- 0012h get command value
- Return: AX = command value
- 0013h set command value
- BX = command value
- SeeAlso: #02706,#02711
- Bitfields for retrieval mode:
- Bit(s) Description (Table 02709)
- 0 enable data retrieval
- 1 0 = interrupt-driven
- 1 = polling mode
- 2 0 = read port 60h everytime
- 1 = read port 60h only when OBF of port 64h is set
- 3 0 = don't call old INT 9
- 1 = call INT 9 before our INT-handler
- 4-7 reserved
- SeeAlso: #02708,#02710
- Format of FIFO entry (1024 entries in FIFO):
- Offset Size Description (Table 02710)
- 00h BYTE data byte
- 01h BYTE I/O port
- 02h BYTE direction (1=in, 0=out)
- 03h BYTE reserved
- 04h DWORD timestamp
- SeeAlso: #02708,#02709
- --------W-2F1684BX38DA-----------------------
- INT 2F - MS Windows - VIWD - GET API ENTRY POINT
- AX = 1684h
- BX = 38DAh (virtual device ID for VIWD device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02711)
- 0000h:0000h if the VxD does not support API in current mode
- SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
- (Table 02711)
- Call VIWD.VXD entry point with:
- DX = function number
- 0000h ???
- Return: CF clear
- AX = ???
- 0004h ???
- Return: CF clear
- DX = 0000h
- 0006h
- Return: CF clear
- 000Ah
- AX = ???
- Return: CF clear if successful
- CF set on error
- 000Ch
- 000Dh
- 000Eh
- Return: CF clear
- 000Fh
- Return: CF clear
- 0010h
- 0011h
- 0015h
- Return: CF clear if successful
- AX = ???
- CF set on error
- AX = ???
- DX = 0000h
- 0016h
- 0017h
- Return: CF clear if successful
- AX = ???
- CF set on error
- AX = ???
- DX = 0000h
- 0018h ???
- CX = ???
- Return: CF clear if successful
- AX = 0000h
- CF set on error
- else
- Return: CF set
- SeeAlso: #02708,#02712
- --------W-2F1684BX4321-----------------------
- INT 2F - MS Windows - POSTMSG - GET API ENTRY POINT
- AX = 1684h
- BX = 4321h (virtual device ID for POSTMSG device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02712,#02714)
- 0000h:0000h if the VxD does not support an API
- (Table 02712)
- Call POSTMSG protected-mode entry point with:
- AX = window handle
- CX:BX -> callback procedure (see #02713)
- Return: nothing
- Note: this call registers a WinApp with the VxD; the callback must be in a
- fixed, non-discardable code segment
- SeeAlso: #02714,#02715
- (Table 02713)
- Values POSTMSG callback routine is called with:
- STACK: DWORD "lParam" parameter from DOSApp
- WORD "wParam" parameter from DOSApp
- WORD Windows message number (WM_USER + 100h)
- WORD registered HWND
- (Table 02714)
- Call POSTMSG V86-mode entry point with:
- BX = wParam value to pass to protected-mode callback
- DX:AX = lParam value to pass to protected-mode callback
- Return: CF clear if successful
- CF set on error (no WinApp registered)
- SeeAlso: #02712
- --------W-2F1684BX7FE0-----------------------
- INT 2F - MS Windows - VSWITCHD - GET API ENTRY POINT
- AX = 1684h
- BX = 7FE0h (virtual device ID for VSWITCHD device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02715)
- 0000h:0000h if the VxD does not support an API
- (Table 02715)
- Call VSWITCHD entry point with:
- AX = function
- 0000h toggle windowed mode (simulate Alt-Enter keypress)
- Return: nothing
- 0001h get windowed mode
- Return: CF clear if VM is windowed
- CF set if VM is full-screen
- SeeAlso: #02712,#02716
- --------W-2F1684BX8888-----------------------
- INT 2F - MS Windows - VbillD - GET API ENTRY POINT
- AX = 1684h
- BX = 8888h (virtual device ID for VbillD device) (see #02642)
- ES:DI = 0000h:0000h
- Return: ES:DI -> VxD API entry point (see #02716)
- 0000h:0000h if the VxD does not support an API
- (Table 02716)
- Call VbillD entry point with:
- AX = function
- 0001h set reverse video
- 0002h set normal video
- Return: ???
- SeeAlso: #02715
- --------W-2F1685-----------------------------
- INT 2F - MS Windows - SWITCH VMs AND CALLBACK
- AX = 1685h
- BX = VM ID of virtual machine to switch to
- CX = flags (see #02717)
- DX:SI = priority boost (refer to VMM.INC)
- ES:DI -> FAR procedure to callback
- Return: CF set on error
- AX = error code
- 01h invalid VM ID
- 02h invalid priority boost
- 03h invalid flags
- CF clear if successful
- event will be or has been called
- Notes: some DOS devices, such as networks, need to call functions in a
- specific VM. This call forces the appropriate VM to be installed.
- the callback procedure must preserve all registers and return with IRET
- SeeAlso: AX=1683h,INT 15/AX=1117h,AX=DB06h"WINGO"
- Bitfields for VM switching flags:
- Bit(s) Description (Table 02717)
- 0 wait until interrupts enabled
- 1 wait until critical section unowned
- 2-15 reserved (zero)
- --------E-2F1686-----------------------------
- INT 2F - DOS Protected-Mode Interface - DETECT MODE
- AX = 1686h
- Return: AX = 0000h if operating in protected mode under DPMI (INT 31 available)
- AX nonzero if in real/V86 mode or no DPMI (INT 31 not available)
- SeeAlso: AX=1687h
- --------E-2F1687-----------------------------
- INT 2F - DOS Protected-Mode Interface - INSTALLATION CHECK
- AX = 1687h
- Return: AX = 0000h if installed
- BX = flags
- bit 0: 32-bit programs supported
- CL = processor type (02h=80286, 03h=80386, 04h=80486)
- DH = DPMI major version
- DL = two-digit DPMI minor version (binary)
- SI = number of paragraphs of DOS extender private data
- ES:DI -> DPMI mode-switch entry point (see #02718)
- AX nonzero if not installed
- SeeAlso: AX=1686h,AX=43E0h,AX=DE01h/BX=4450h,AX=FB42h/BX=0001h
- SeeAlso: INT 31/AX=0400h,INT 31/AX=5702h,INT D4/AH=10h
- (Table 02718)
- Call DPMI mode switch entry point with:
- AX = flags
- bit 0: set if 32-bit program
- ES = real mode segment of buffer for DPMI private data (ignored if
- SI was zero)
- Return: CF set on error
- program still in real mode
- AX = error code (DPMI 1.0+)
- 8011h unable to allocate all necessary descriptors
- 8021h 32-bit program specified, but 16-bit DPMI host
- CF clear if successful
- CS = 16-bit selector corresponding to real-mode CS
- SS = selector corresponding to real-mode SS (64K limit)
- DS = selector corresponding to real-mode DS (64K limit)
- ES = selector to program's PSP (100h byte limit)
- FS = GS = 0
- high word of ESP = 0 if 32-bit program
- program now in protected mode
- Note: this entry point is only called for the initial switch to protected
- mode
- --------W-2F1688BX0BAD-----------------------
- INT 2F U - MS Windows 3.0, 386MAX v6.01 - GET ALIAS SELECTOR TO LDT
- AX = 1688h
- BX = 0BADh
- Return: AX = 0000h if supported
- BX = alias selector for LDT
- Note: use the LSL instruction or GetSelectorLimit() to find LDT size
- this call should be considered obsolete for Windows 3.1+, as the
- alias selector can be retrieved via the API entry point for
- "MS-DOS" retrieved from INT 2F/AX=168Ah (see #02720)
- SeeAlso: AX=1687h,#02720
- --------W-2F1689-----------------------------
- INT 2F U - MS Windows 3.0+ - KERNEL IDLE CALL
- AX = 1689h
- ???
- Return: ???
- Desc: the Windows KERNEL idle loop calls this function, which VMM uses as an
- indication that the system is idle, which in turn generates INT 28
- and INT 2F/AX=1607h/BX=0018h callouts
- SeeAlso: AX=1680h,AX=1607h/BX=0018h,INT 15/AX=1000h,INT 28
- --------E-2F168A-----------------------------
- INT 2F - DPMI 0.9+ - GET VENDOR-SPECIFIC API ENTRY POINT
- AX = 168Ah
- DS:(E)SI = selector:offset of ASCIZ vendor name (see #02719)
- Return: AL = status
- 00h successful
- ES:(E)DI -> extended API entry point
- 8Ah unsuccessful
- Notes: the vendor name is used to determine which entry point to return; it is
- case-sensitive
- available in protected mode only
- 32-bit applications use ESI and EDI, 16-bit applications use SI and DI
- this call is present but not documented for DPMI 0.9
- the Borland C++ 3.1 DPMILOAD does not handle requests for entry points
- other than the MS-DOS one gracefully, producing an unhandled
- exception report; this has been fixed in the Borland Pascal 7 version
- SeeAlso: AX=1687h,INT 31/AX=0A00h,INT 31/AH=57h
- (Table 02719)
- Values for DPMI vendor-specific API names:
- "MS-DOS" MS Windows and 386MAX v6.00+ (see #02720)
- "386MAX" 386MAX v6.00+
- "HELIX_DPMI" Helix Netroom's DPMI server
- "Phar Lap" Phar Lap 286|DOS-Extender RUN286 (see #02721)
- "RATIONAL DOS/4G" DOS/4G, DOS/4GW
- "VIRTUAL SUPPORT" Borland 32RTM
- (Table 02720)
- Call Windows-support ("MS-DOS") entry point with:
- AX = 0100h get LDT alias selector
- Return: CF clear if successful
- AX = alias selector
- CF set on error
- SeeAlso: #02719,AX=1688h/BX=0BADh
- (Table 02721)
- Call Phar Lap RUN286 entry point with:
- AX = 0000h (function "load MSW")
- BX = new value for MSW register (low word of CR0)
- Return: ???
- SeeAlso: #02719
- --------W-2F168B-----------------------------
- INT 2F - MS Windows 3.1 - SET FOCUS TO SPECIFIED VIRTUAL MACHINE
- AX = 168Bh
- BX = virtual machine ID (see AX=1683h), 0000h for current DOS box
- Return: AL = 00h if focus set to specified VM
- Notes: documented on the Microsoft Developer's Network CD-ROM
- if the VM is a windowed DOS box, it will be set to full screen
- SeeAlso: AX=1683h
- --------W-2F168C-----------------------------
- INT 2F - MS Windows 3.1 - RESTART COMMAND
- AX = 168Ch
- ???
- Return: ???
- Note: WIN.COM executes specified application
- --------W-2F168EDX0000-----------------------
- INT 2F - Windows95 - TITLE - SET APPLICATION TITLE
- AX = 168Eh
- DX = 0000h
- ES:DI -> ASCIZ application title (max 79 chars+NUL)
- Return: AX = status
- 0000h failed
- 0001h successful
- Note: if ES:DI is 0000h:0000h or points at an empty string, the current
- title is removed
- BUG: this function can return a successful status even though the title was
- not changed; reportedly, waiting for two clock ticks after program
- startup solves this problem
- SeeAlso: AX=168Eh/DX=0001h,AX=168Eh/DX=0002h
- --------W-2F168EDX0001-----------------------
- INT 2F - Windows95 - TITLE - SET VIRTUAL MACHINE TITLE
- AX = 168Eh
- DX = 0001h
- ES:DI -> ASCIZ virtual machine title (max 29 chars+NUL)
- Return: AX = status
- 0000h failed
- 0001h successful
- Notes: if ES:DI is 0000h:0000h or points at an empty string, the current
- title is removed
- the VM title should only be changed on explicit instruction from the
- user
- BUG: this function can return a successful status even though the title was
- not changed; reportedly, waiting for two clock ticks after program
- startup solves this problem
- SeeAlso: AX=168Eh/DX=0000h,AX=168Eh/DX=0003h
- --------W-2F168EDX0002-----------------------
- INT 2F - Windows95 - TITLE - GET APPLICATION TITLE
- AX = 168Eh
- DX = 0002h
- ES:DI -> buffer for ASCIZ application title
- CX = size of buffer in bytes
- Return: AX = status
- 0000h failed
- 0001h successful
- Desc: copy as much of the application's window title as possible to the given
- buffer, appending a terminating NUL to the buffer
- SeeAlso: AX=168Eh/DX=0000h,AX=168Eh/DX=0003h
- --------W-2F168EDX0003-----------------------
- INT 2F - Windows95 - TITLE - GET VIRTUAL MACHINE TITLE
- AX = 168Eh
- DX = 0003h
- ES:DI -> buffer for ASCIZ virtual-machine title
- CX = size of buffer in bytes
- Return: AX = status
- 0000h failed
- 0001h successful
- Desc: copy as much of the virtual machine's title as possible to the given
- buffer, appending a terminating NUL to the buffer
- SeeAlso: AX=168Eh/DX=0001h,AX=168Eh/DX=0002h
- --------W-2F168FDH00-------------------------
- INT 2F - Windows95 - CLOSE-AWARENESS - ENABLE/DISABLE CLOSE COMMAND
- AX = 168Fh
- DH = 00h
- DL = new state
- 00h disabled
- 01h enabled
- Return: AX = status
- 0000h successful
- else failed
- Desc: enable or disable the system menu Close command for an application
- SeeAlso: AX=168Fh/DH=01h,AX=168Fh/DH=02h
- --------W-2F168FDH01-------------------------
- INT 2F - Windows95 - CLOSE-AWARENESS - QUERY CLOSE
- AX = 168Fh
- DH = 01h
- DL = 00h (reserved)
- Return: AX = status
- 0000h Close command selected but not yet acknowledged
- 0001h Close command issued and acknowledged
- 168Fh Close command not selected -- application should continue
- Desc: determine whether the user has requested that the application be closed
- by selecting the system menu's Close option
- SeeAlso: AX=168Fh/DH=00h,AX=168Fh/DH=02h
- --------W-2F168FDH02-------------------------
- INT 2F - Windows95 - CLOSE-AWARENESS - ACKNOWLEDGE CLOSE
- AX = 168Fh
- DH = 02h
- DL = 00h (reserved)
- Return: AX = status
- 0000h successful
- else failed
- Note: once a Close command has been issued, no further keyboard input is
- available to the application until it calls this function to
- acknowledge the Close request
- SeeAlso: AX=168Fh/DH=00h,AX=168Fh/DH=03h
- --------W-2F168FDH03-------------------------
- INT 2F - Windows95 - CLOSE-AWARENESS - CANCEL CLOSE
- AX = 168Fh
- DH = 03h
- DL = 00h (reserved)
- Return: AX = status
- 0000h successful
- else failed
- Desc: cancels a close request which has already been acknowledged if the
- application determines that it will not exit at this time
- SeeAlso: AX=168Fh/DH=00h,AX=168Fh/DH=03h
- --------D-2F1690-----------------------------
- INT 2F U - MS-DOS 7 kernel - GET/SET ???
- AX = 1690h
- ES:BX -> ???
- Return: ES:BX -> ??? data (see #02722)
- SeeAlso: AX=1611h,AX=1614h
- Format of MS-DOS 7 kernel ??? data:
- Offset Size Description (Table 02722)
- 00h DWORD -> ??? data (appears to list the installed drivers)
- 04h DWORD -> ??? (value passed in via ES:BX is stored here)
- --------!---Section--------------------------
- Interrupt List, part 12 of 18
- Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
- --------W-2F1700-----------------------------
- INT 2F - MS Windows "WINOLDAP" - IDENTIFY WinOldAp VERSION
- AX = 1700h
- Return: AX = 1700h if this version of WINOLDAP doesn't support clipboard
- AX <> 1700h
- AL = WINOLDAP major version
- AH = WINOLDAP minor version
- Program: WinOldAp (WINOLDAP.MOD) is a Microsoft Windows extension supporting
- "old" (character-mode) application access to Dynamic Data Exchange,
- menus, and the Windows clipboard.
- Note: this installation check DOES NOT follow the format used by other
- software of returning AL=FFh
- SeeAlso: AX=1701h,AX=4601h
- Index: installation check;WINOLDAP
- --------W-2F1701-----------------------------
- INT 2F - MS Windows "WINOLDAP" - OPEN CLIPBOARD
- AX = 1701h
- Return: AX = status
- nonzero success
- 0000h clipboard is already open
- SeeAlso: AX=1700h,AX=1702h,AX=1703h,AX=1704h,INT 16/AX=CB00h
- --------W-2F1702-----------------------------
- INT 2F - MS Windows "WINOLDAP" - EMPTY CLIPBOARD
- AX = 1702h
- Return: AX = status
- nonzero clipboard has been emptied
- 0000h failure
- SeeAlso: AX=1700h,AX=1701h,AX=1703h,AX=1704h,INT 16/AX=CB05h
- --------W-2F1703-----------------------------
- INT 2F - MS Windows "WINOLDAP" - SET CLIPBOARD DATA
- AX = 1703h
- DX = clipboard format supported by WinOldAp (see #02723)
- ES:BX -> data (see #02724,#02725)
- SI:CX = size of data
- Return: AX = status
- nonzero data copied into the Clipboard
- 0000h failure
- SeeAlso: AX=1701h,AX=1705h,INT 16/AX=CB04h
- (Table 02723)
- Values for WinOldAp clipboard format:
- 01h text
- 02h bitmap
- 03h metafile picture
- 04h SYLK
- 05h DIF
- 06h TIFF
- 07h OEM text
- 08h DIB bitmap
- 80h special format (used by Windows WRITE, maybe other Windows applets???)
- 81h DSP text
- 82h DSP bitmap
- Format of Windows Clipboard bitmap:
- Offset Size Description (Table 02724)
- 00h WORD type (0000h)
- 02h WORD width of bitmap in pixels
- 04h WORD height of bitmap in pixels
- 06h WORD bytes per line
- 08h BYTE number of color planes
- 09h BYTE number of adjacent color bits in pixel
- 0Ah DWORD pointer to start of data
- 0Eh WORD width in 0.1mm units
- 10h WORD height in 0.1mm units
- 12h N BYTEs bitmap data
- Format of Windows metafile picture:
- Offset Size Description (Table 02725)
- 00h WORD mapping mode
- 02h WORD X extent
- 04h WORD Y extent
- 06h WORD picture data
- --------W-2F1704-----------------------------
- INT 2F - MS Windows "WINOLDAP" - GET CLIPBOARD DATA SIZE
- AX = 1704h
- DX = clipboard format supported by WinOldAp (see #02723)
- Return: DX:AX = size of data in bytes, including any headers
- 0000h:0000h if no data in this format in the Clipboard
- Note: Windows reportedly rounds up the size of the data to a multiple of 32
- bytes
- SeeAlso: AX=1700h,AX=1703h,AX=1705h
- --------W-2F1705-----------------------------
- INT 2F - MS Windows "WINOLDAP" - GET CLIPBOARD DATA
- AX = 1705h
- DX = clipboard format supported by WinOldAp (see #02723)
- ES:BX -> buffer
- Return: AX = status
- nonzero success
- 0000h error, or no data in this format in Clipboard
- SeeAlso: AX=1700h,AX=1704h,INT 16/AX=CB03h
- --------W-2F1708-----------------------------
- INT 2F - MS Windows "WINOLDAP" - CloseClipboard
- AX = 1708h
- Return: AX = status
- 0000h failure
- nonzero success
- --------W-2F1709-----------------------------
- INT 2F - MS Windows "WINOLDAP" - COMPACT CLIPBOARD
- AX = 1709h
- SI:CX = desired size in bytes
- Return: DX:AX = number of bytes in largest block of free memory
- Note: WinOldAp is responsible for including the size of any headers
- --------W-2F170A-----------------------------
- INT 2F - MS Windows "WINOLDAP" - GET DEVICE CAPABILITIES
- AX = 170Ah
- DX = GDI information index (see #02726)
- Return: AX = integer value of the desired item
- (see #02727,#02728,#02729,#02730,#02731,#02732,#02733)
- Note: This function returns the device-capability bits for the given display
- (Table 02726)
- Values for GDI information index:
- 00h device driver version
- 02h device classification
- 04h width in mm
- 06h height in mm
- 08h width in pixels
- 0Ah height in pixels
- 0Ch bits per pixel
- 0Eh number of bit planes
- 10h number of brushes supported by device
- 12h number of pens supported by device
- 14h number of markers supported by device
- 16h number of fonts supported by device
- 18h number of colors
- 1Ah size required for device descriptor
- 1Ch curve capabilities
- 1Eh line capabilities
- 20h polygon capabilities
- 22h text capabilities
- 24h clipping capabilities
- 26h bitblt capabilities
- 28h X aspect
- 2Ah Y aspect
- 2Ch length of hypotenuse of aspect
- 58h logical pixels per inch of width
- 5Ah logical pixels per inch of height
- SeeAlso: #02727,#02728,#02729,#02730,#02731,#02732,#02733
- (Table 02727)
- Values for device classification:
- 00h vector plotter
- 01h raster display
- 02h raster printer
- 03h raster camera
- 04h character-stream, PLP
- 05h Metafile, VDM
- 06h display-file
- SeeAlso: #02726,#02728,#02729,#02730,#02731,#02732,#02733
- Bitfields for curve capabilities:
- Bit(s) Description (Table 02728)
- 0 circles
- 1 pie wedges
- 2 chord arcs
- 3 ellipses
- 4 wide lines
- 5 styled lines
- 6 wide styled lines
- 7 interiors
- SeeAlso: #02726,#02727,#02729,#02730,#02731,#02732,#02733
- Bitfields for line capabilities:
- Bit(s) Description (Table 02729)
- 1 polylines
- 2 markers
- 3 polymarkers
- 4 wide lines
- 5 styled lines
- 6 wide styled lines
- 7 interiors
- SeeAlso: #02726,#02727,#02728,#02730,#02731,#02732,#02733
- Bitfields for polygon capabilities:
- Bit(s) Description (Table 02730)
- 0 polygons
- 1 rectangles
- 2 trapezoids
- 3 scanlines
- 4 wide borders
- 5 styled borders
- 6 wide styled borders
- 7 interiors
- SeeAlso: #02726,#02727,#02728,#02729,#02731,#02732,#02733
- Bitfields for text capabilities:
- Bit(s) Description (Table 02731)
- 0 output precision character
- 1 output precision stroke
- 2 clippping precision stroke
- 3 90-degree character rotation
- 4 arbitrary character rotation
- 5 independent X and Y scaling
- 6 double-size
- 7 integer scaling
- 8 continuous scaling
- 9 bold
- 10 italic
- 11 underline
- 12 strikeout
- 13 raster fonts
- 14 vector fonts
- 15 reserved
- SeeAlso: #02726,#02727,#02728,#02729,#02730,#02732,#02733
- (Table 02732)
- Values for clipping capabilities:
- 00h none
- 01h clipping to rectangles
- SeeAlso: #02726,#02727,#02728,#02729,#02730,#02731,#02733
- Bitfields for raster capabilities:
- Bit(s) Description (Table 02733)
- 0 simple bitBLT
- 1 device requires banding support
- 2 device requires scaling support
- 3 supports >64K bitmap
- SeeAlso: #02726,#02727,#02728,#02729,#02730,#02731,#02732
- ----------2F18-------------------------------
- INT 2F U - MS-Manager
- AH = 18h
- ???
- Return: ???
- --------l-2F1900-----------------------------
- INT 2F U - DOS 4.x only SHELLB.COM - INSTALLATION CHECK
- AX = 1900h
- Return: AL = status
- 00h not installed
- FFh installed
- --------l-2F1901-----------------------------
- INT 2F U - DOS 4.x only SHELLB.COM - SHELLC.EXE INTERFACE
- AX = 1901h
- BL = SHELLC type
- 00h transient
- 01h resident
- DS:DX -> far call entry point for resident SHELLC.EXE
- Return: ES:DI -> SHELLC.EXE workspace within SHELLB.COM
- Note: SHELLB.COM and SHELLC.EXE are parts of the DOS 4.x shell
- --------l-2F1902-----------------------------
- INT 2F U - DOS 4.x only SHELLB.COM - COMMAND.COM INTERFACE
- AX = 1902h
- ES:DI -> ASCIZ full filename of current batch file, with at least the
- final filename element uppercased
- DS:DX -> buffer for results
- Return: AL = 00h failed, either
- (a) final filename element quoted at ES:DI does not match
- identity of shell batch file quoted as parameter of most
- recent call of SHELLB command, or
- (b) no more Program Start Commands available.
- AL= FFh success, then:
- memory at DS:[DX+1] onwards filled as:
- DX+1: BYTE count of bytes of PSC
- DX+2: N BYTEs Program Start Command text
- BYTE 0Dh terminator
- Desc: COMMAND.COM executes the result of this call in preference to
- reading a command from a batch file. Thus the batch file does not
- advance in execution for so long as SHELLB provides PSCs from its
- workspace.
- Note: The PSCs are planted in SHELLB workspace by SHELLC, the user
- menu interface. The final PSC of a sequence is finished with a
- GOTO COMMON, which causes a loop back in the batch file which called
- SHELLC so as to execute SHELLC again. The check on batch file name
- permits PSCs to CALL nested batch files while PSCs are still stacked
- up for subsequent execution.
- --------l-2F1903-----------------------------
- INT 2F U - DOS 4.x only SHELLB.COM - COMMAND.COM interface
- AX = 1903h
- ES:DI -> ASCIZ batch file name as for AX=1902h
- Return: AL = status
- FFh quoted batch file name matches last SHELLB parameter
- 00h it does not
- --------l-2F1904-----------------------------
- INT 2F U - DOS 4.x only SHELLB.COM - SHELLB transient to TSR intrface
- AX = 1904h
- Return: ES:DI -> name of current shell batch file:
- WORD number of bytes of name following
- BYTEs (8 max) uppercase name of shell batch file
- ----------2F1980-----------------------------
- INT 2F U - IBM ROM-DOS v4.0 - INSTALLATION CHECK
- AX = 1980h
- Return: AL = FFh if ??? installed/supported
- Note: called at the very beginning of SHELLSTB.COM, which exits if AL is not
- FFh on return
- SeeAlso: AX=1981h,AX=1982h
- ----------2F1981-----------------------------
- INT 2F U - IBM ROM-DOS v4.0 - GET ??? STRING
- AX = 1981h
- DS:DX -> buffer for ???
- Return: AL = status
- FFh if successful
- DS:DX buffer filled (refer to note below)
- 81h on error
- Note: the first byte of the buffer is unchanged; depending on a byte in
- IBMBIO.COM, the remainder of the buffer is filled with either
- "C:\ROMSHELL.COM",0Dh or xxh,xxh,0Fh,"C:\ROMSHELL.COM",0Dh
- SeeAlso: AX=1980h,AX=1982h
- ----------2F1982-----------------------------
- INT 2F U - IBM ROM-DOS v4.0 - GET ??? TABLE
- AX = 1982h
- Return: AL = FFh if supported
- ES:DI -> ??? table (see #02734)
- Note: called by ROMSHELL.COM
- SeeAlso: AX=1980h,AX=1981h
- Format of ROM-DOS v4.0 ??? table:
- Offset Size Description (Table 02734)
- 00h BYTE ??? (00h)
- 01h BYTE ??? (41h) (ROMSHELL.COM checks if =00h)
- 02h BYTE ??? (00h) (ROMSHELL.COM checks if =01h)
- 03h WORD ??? (0001h) (ROMSHELL.COM checks if =0001h)
- 05h BYTE ??? (00h)
- 06h WORD ??? (04D5h)
- --------V-2F1A00-----------------------------
- INT 2F - DOS 4.0+ ANSI.SYS - INSTALLATION CHECK
- AX = 1A00h
- Return: AL = FFh if installed
- Notes: AVATAR.SYS also responds to this call
- documented for DOS 5+, but undocumented for DOS 4.x
- --------V-2F1A00BX414E-----------------------
- INT 2F - ANSIPLUS.SYS v2.00+ - INSTALLATION CHECK
- AX = 1A00h
- BX = 414Eh ('AN')
- CX = 5349h ('SI')
- DX = 2B2Bh ('++')
- Return: AL = FFh if installed
- CF clear
- ES:BX -> INT 29 entry point
- CX = ANSIPLUS BCD version number (v3.10+, CH=major, CL=minor)
- DL = capabilities (v4.00+)
- 00h full capability driver
- 01h reduced capability driver
- 2Bh full capability driver (before v4.00)
- Program: ANSIPLUS.SYS is a CON device driver by Kristofer Sweger which
- replaces the normal ANSI.SYS with a more powerful version having
- many additional features
- Notes: ANSIPLUS also identifies itself as ANSI.SYS if BX,CX, or DX differ
- from the magic values above
- an additional installation check is to test for the signature
- "ANSIPLUS" 12 bytes before the INT 29 entry point; the version
- number is also available as a four-character ASCII string (e.g.
- "4.00") four bytes before the entry point
- SeeAlso: AX=1AA5h,AX=1AA6h,AX=1AA7h,AX=1AA8h,AX=1AA9h,AX=1AAAh,AX=D44Fh
- --------V-2F1A00BX4156-----------------------
- INT 2F - AVATAR.SYS - INSTALLATION CHECK
- AX = 1A00h
- BX = 4156h ('AV')
- CX = 4154h ('AT')
- DX = 4152h ('AR')
- Return: AL = FFh if installed
- CF clear
- BX = AVATAR protocol level supported
- CX = driver type
- 0000h AVATAR.SYS
- 4456h DVAVATAR.COM inside DESQview window
- DX = 0016h
- Program: AVATAR.SYS is a CON replacement by George Adam Stanislav which
- interprets AVATAR command codes in the same way that ANSI interprets
- ANSI command codes
- Notes: AVATAR also identifies itself as ANSI.SYS if BX, CX, or DX differ from
- the magic values
- SeeAlso: AX=1A21h,AX=1A3Ch,AX=1A3Fh,AX=1A52h,AX=1A72h,AX=1A7Dh,AX=1AADh"AVATAR"
- --------V-2F1A01-----------------------------
- INT 2F U - DOS 4.0+ ANSI.SYS internal - GET/SET DISPLAY INFORMATION
- AX = 1A01h
- CL = function
- 7Fh for GET
- 5Fh for SET
- DS:DX -> parm block as for INT 21,AX=440Ch,CX=037Fh/035Fh respectively
- Return: CF clear if successful
- AX destroyed
- CF set on error
- AX = error code (many non-standard)
- Note: presumably this is the DOS IOCTL interface to ANSI.SYS
- SeeAlso: AX=1A02h,INT 21/AX=440Ch
- --------V-2F1A02-----------------------------
- INT 2F U - DOS 4.0+ ANSI.SYS internal - MISCELLANEOUS REQUESTS
- AX = 1A02h
- DS:DX -> parameter block (see #02735)
- Return: CF clear if successful
- CF set on error
- AX = error code
- Note: DOS 5+ chains to previous handler if AL > 02h on call
- SeeAlso: AX=1A01h
- Format of ANSI.SYS parameter block:
- Offset Size Description (Table 02735)
- 00h BYTE subfunction
- 00h set/reset interlock
- 01h get /L flag
- 01h BYTE interlock state
- 00h=reset, 01h=set
- This interlock prevents some of the ANSI.SYS post-processing
- in its hook onto INT 10, AH=00h mode set
- 02h BYTE (returned)
- 00h if /L not in effect
- 01h if /L in effect
- --------V-2F1A21-----------------------------
- INT 2F - AVATAR.SYS - SET DRIVER STATE
- AX = 1A21h (AL='!')
- DS:SI -> command string with one or more state characters (see #02736)
- CX = length of command string
- Return: CF set on error (invalid subfunction)
- CF clear if successful
- Note: the characters in the state string are interpreted left to right, and
- need not be in any particular order
- SeeAlso: AX=1A00h/BX=4156h,AX=1A3Fh
- (Table 02736)
- Values for AVATAR.SYS state characters:
- 'a' activate driver
- 'd' disable driver
- 'f' use fast screen output
- 'g' always convert gray keys (+ and -) to function keys
- 'G' never convert gray keys
- 'l' convert gray keys only when ScrollLock active
- 's' use slow screen output
- 't' Tandy 1000 keyboard (not yet implemented)
- --------V-2F1A3C-----------------------------
- INT 2F U - AVATAR.SYS v0.11 - ???
- AX = 1A3Ch
- ???
- Return: CX = 0000h
- SeeAlso: AX=1A00h/BX=4156h,AX=1A21h,AX=1A3Eh
- --------V-2F1A3E-----------------------------
- INT 2F U - AVATAR.SYS v0.11 - ???
- AX = 1A3Eh
- CL = ???
- CH = ???
- DL = ???
- DH = ???
- Return: CL = ???
- CH = ???
- DL = ???
- DH = ???
- SeeAlso: AX=1A3Ch,AX=1A3Fh
- --------V-2F1A3F-----------------------------
- INT 2F - AVATAR.SYS - QUERY DRIVER STATE
- AX = 1A3Fh (AL='?')
- ES:DI -> buffer
- CX = length of buffer in bytes
- Return: CF clear
- CX = actual size of returned info
- Note: the returned information consists of multiple letters whose meanings
- are described under AX=1A21h
- SeeAlso: AX=1A00h/BX=4156h,AX=1A21h,AX=1A44h
- --------S-2F1A42BX4156-----------------------
- INT 2F - AVATAR Serial Dispatcher - INSTALL IRQ3 HANDLER
- AX = 1A42h
- BX = 4156h ('AV')
- ES:DI -> FAR handler for serial port using IRQ3
- DS = data segment needed by handler
- Return: AX = status/return value
- 0000h if no more room
- 1A42h if ASD not installed
- else handle to use when uninstalling
- Notes: the handler need not save/restore registers or signal EOI to the
- interrupt controller
- the handler should return AX=0000h if the interrupt was meant for it,
- and either leave AX unchanged or return a non-zero value otherwise
- the most recently installed handler will be called first, continuing
- to earlier handlers until one returns AX=0000h
- SeeAlso: AX=1A43h,AX=1A62h
- --------S-2F1A43BX4156-----------------------
- INT 2F - AVATAR Serial Dispatcher - INSTALL IRQ4 HANDLER
- AX = 1A43h
- BX = 4156h ('AV')
- ES:DI -> FAR handler for serial port using IRQ4
- DS = data segment needed by handler
- Return: AX = status/return value
- 0000h if no more room
- 1A43h if ASD not installed
- else handle to use when uninstalling
- Notes: (see AX=1A42h)
- SeeAlso: AX=1A42h,AX=1A63h
- --------V-2F1A44BX4156-----------------------
- INT 2F - AVATAR.SYS v0.11+ - GET DATA SEGMENT
- AX = 1A44h
- BX = 4156h ('AV')
- Return: AX = 0000h
- DS = data segment
- CX = size of data segment
- Note: AVATAR.SYS calls this function whenever it is invoked. If each
- process under a multitasker hooks this function and provides a
- separate data segment, AVATAR.SYS becomes fully reentrant.
- SeeAlso: AX=1A21h,AX=1A3Fh,AX=1A52h
- --------V-2F1A52-----------------------------
- INT 2F U - AVATAR.SYS v0.11 - GET ???
- AX = 1A52h
- CX = size of buffer
- ES:DI -> buffer
- Return: ??? copied into user buffer
- Note: the maximum size of the data which may be copied is returned by
- AX=1A72h
- SeeAlso: AX=1A53h,AX=1A72h
- --------V-2F1A53-----------------------------
- INT 2F U - AVATAR.SYS v0.11 - ???
- AX = 1A53h
- CL = ??? (00h-05h)
- ???
- Return: ???
- SeeAlso: AX=1A00h/BX=4156h,AX=1A52h,AX=1A72h
- --------S-2F1A62BX4156-----------------------
- INT 2F - AVATAR Serial Dispatcher - UNINSTALL IRQ3 HANDLER
- AX = 1A62h
- BX = 4156h ('AV')
- CX = handle for IRQ routine returned by AX=1A42h
- SeeAlso: AX=1A42h,AX=1A63h
- --------S-2F1A63BX4156-----------------------
- INT 2F - AVATAR Serial Dispatcher - UNINSTALL IRQ4 HANDLER
- AX = 1A63h
- BX = 4156h ('AV')
- CX = handle for IRQ routine returned by AX=1A43h
- SeeAlso: AX=1A43h,AX=1A62h
- --------V-2F1A72-----------------------------
- INT 2F U - AVATAR.SYS v0.11 - GET ??? SIZE
- AX = 1A72h
- Return: CX = maximum size of ???
- SeeAlso: AX=1A00h/BX=4156h,AX=1A52h,AX=1A7Bh,AX=1AADh"AVATAR"
- --------V-2F1A7B-----------------------------
- INT 2F U - AVATAR.SYS v0.11 - ???
- AX = 1A7Bh
- Return: AX = 0000h
- CX = 0000h
- SeeAlso: AX=1A00h/BX=4156h,AX=1A72h,AX=1A7Dh
- --------V-2F1A7D-----------------------------
- INT 2F U - AVATAR.SYS v0.11 - ???
- AX = 1A7Dh
- Return: AX = ???
- SeeAlso: AX=1A00h/BX=4156h,AX=1A7Bh
- --------V-2F1AA3-----------------------------
- INT 2F - ANSIPLUS v4.03+ - GET/SET ANSIPLUS INTERNAL VARIABLES
- AX = 1AA3h
- BH = function
- 00h get current/default colors
- Return: CH = default colors
- CL = current colors
- 01h set current/default colors
- CH = default colors (00h = leave unchanged)
- CL = current colors
- 02h get current subscreen region
- Return: BH,BL = true screen rows,columns
- CH,CL = top left row,column of region
- DH,DL = bottom right row,column of region
- 03h set subscreen region
- CH,CL = top left row,column of region
- DH,DL = bottom right row,column of region
- 04h get driver features (bits 0-31)
- Return: DX:CX = current feature bits
- 05h set driver features (bits 0-31)
- DX:CX = feature bits
- 06h get driver features (bits 32-63)
- Return: DX:CX = current feature bits
- 07h set driver features (bits 32-63)
- DX:CX = feature bits
- other: reserved for future use
- SeeAlso: AX=1AA4h,AX=1AA5h
- --------V-2F1AA4-----------------------------
- INT 2F - ANSIPLUS v4.02+ - GET/SET ANSIPLUS SMOOTH SCROLLING RATE
- AX = 1AA4h
- BL = function
- 00h get scrolling rate
- 01h set scrolling rate
- BH = new minimum scrolling rate in scan lines per retrace
- Return: BH = smooth scrolling rate
- SeeAlso: AX=1AA3h,AX=1AA5h
- --------V-2F1AA5-----------------------------
- INT 2F - ANSIPLUS v4.00+ - GET/SET ANSIPLUS CLIPBOARD
- AX = 1AA5h
- DH = subfunction
- 00h get clipboard information
- 01h get clipboard text
- 02h set clipboard text
- 03h append text to clipboard
- 04h clear clipboard
- 05h paste clipboard to keyboard
- ES:BX -> data area for subfunctions 01h, 02h, and 03h
- CX = size of data area (maximum size for subfunction 01h, actual size
- to add to clipboard for subfunctions 02h and 03h)
- Return: AL = status
- 00h successful
- 01h unsupported subfunction (reduced capability driver)
- 02h insufficient space
- A5h unsupported function (ANSIPLUS before v4.00)
- ES:BX -> ANSIPLUS local clipboard data
- CX = number of bytes currently in local clipboard
- DX = maximum size of local clipboard
- SeeAlso: AX=1A00h/BX=414Eh,AX=1AA4h,AX=1AA6h
- --------V-2F1AA6-----------------------------
- INT 2F - ANSIPLUS v4.00+ - ENABLE/DISABLE ANSIPLUS DRIVER
- AX = 1AA6h
- BH = function
- 00h get hooked interrupts
- 01h set hooked interrupts mask
- BL = new interrupts mask (see #02737)
- Return: BL = previous interrupts mask (see #02737)
- SeeAlso: AX=1A00h/BX=414Eh,AX=1AA7h
- Desc: used to temporarily disable any prior copies of ANSIPLUS when a new
- copy is installed, such as in a multitasking system like DESQview
- Note: only the most-recently loaded copy of ANSIPLUS on the current INT 2F
- chain responds to this call
- Bitfields for ANSIPLUS hooked interrupts mask:
- Bit(s) Description (Table 02737)
- 0 INT 09 hook disabled
- 1 INT 10 hook disabled
- 2 INT 15 hook disabled
- 3 INT 16 hook disabled
- 4 INT 1C hook disabled
- 5 reset all bits when INT 29 called
- 6 INT 29 hook disabled
- 7 INT 33, INT 74, or other mouse event hook disabled
- --------V-2F1AA7-----------------------------
- INT 2F - ANSIPLUS v4.00+ - ENABLE/DISABLE ANSIPLUS FEATURES
- AX = 1AA7h
- BL = function
- 00h prevent scroll-back saves
- 01h enable scroll-back saves
- 02h disable key reprogramming and lock changes by escape sequences
- 03h enable key reprogramming by escape sequences
- 04h disable and lock key stacking changes by escape sequences
- 05h allow key stacking by escape sequences
- Return: nothing
- SeeAlso: AX=1AA6h
- --------V-2F1AA8-----------------------------
- INT 2F - ANSIPLUS v3.10+ - GET NEXT ANSIPLUS SCROLLBACK LINE
- AX = 1AA8h
- Return: AL = status
- 00h successful
- ES:BX -> screen line (character and attribute pairs)
- CX = length of line in bytes, 0000h if no more lines or
- unsupported video mode
- 01h unsupported video mode active
- 02h screen currently scrolled back
- 03h reduced capability driver
- A8h unsupported function (driver before v3.10)
- SeeAlso: AX=1A00h/BX=414Eh,AX=1AA9h
- --------V-2F1AA9-----------------------------
- INT 2F - ANSIPLUS v3.10+ - GET ANSIPLUS SCROLLBACK INFORMATION
- AX = 1AA9h
- Return: AL = status
- 00h successful
- BX = current number of lines in scrollback buffer
- CX = number of bytes in one line
- 01h unsupported video mode active
- 02h screen currently scrolled back
- 03h reduced capability driver
- A9h unsupported function (driver before v3.10)
- Desc: determine how much data is in the scrollback buffer and initialize
- scrollback retrieval to return the first line on the next call to
- AX=1AA8h
- SeeAlso: AX=1A00h/BX=414Eh,AX=1AA8h
- --------V-2F1AAA-----------------------------
- INT 2F - ANSIPLUS v3.01+ - GET/SET ANSIPLUS SCREEN SAVER BLANKING TIME
- AX = 1AAAh
- BX = function
- FFFFh to get current blanking time
- other to set time
- CX = blanking time in clock ticks (0000h-7FFFh)
- Return: BX = current blanking time
- CX = blanking time when last set
- SeeAlso: AX=1A00h/BX=414Eh,AX=1AABh
- --------V-2F1AAB-----------------------------
- INT 2F - ANSIPLUS v3.01+ - SET ANSIPLUS KEY REPEAT RATE
- AX = 1AABh
- BX = repeat rate in characters per second
- 0000h use BIOS repeat rate
- Return: nothing
- SeeAlso: AX=1A00h/BX=414Eh,AX=1AAAh,AX=1AACh
- --------V-2F1AAC-----------------------------
- INT 2F - ANSIPLUS v3.00+ - LOAD CHARACTER GENERATOR
- AX = 1AACh
- BH = number of bytes per character pattern
- BL = VGA/EGA character table to be loaded
- CX = number of characters to load
- DX = starting character code (offset into Map2 block)
- ES:BP -> user character table to be loaded
- Return: AX = 1100h
- Desc: load the EGA/VGA character generator without the BIOS function's
- side effects of resetting the video mode and color palette
- SeeAlso: AX=1A00h/BX=414Eh,AX=1AABh,AX=1AADh"ANSIPLUS",INT 10/AX=1100h
- --------V-2F1AAD-----------------------------
- INT 2F - ANSIPLUS v2.00+ - ANSIPLUS DEVICE STATUS REPORT
- AX = 1AADh
- BL = report request code (81h-96h for v4.00)
- CX = color selector or key code, if required by request
- Return: AX = first reported result
- BX = second result
- CX = third result, if applicable (unchanged otherwise)
- DX = fourth result, if applicable (unchanged otherwise)
- Desc: get device status reports equivalent to those for Esc [#n sequences
- while bypassing any device redirection and avoiding the need to
- parse the returned result
- Note: the report request code in BL is identical to the number in the
- corresponding Esc [#n sequence
- SeeAlso: AX=1A00h/BX=414Eh,AX=1AACh
- --------V-2F1AADDX0000-----------------------
- INT 2F U - AVATAR.SYS v0.11 - ???
- AX = 1AADh
- DX = 0000h
- CX = subfunction (00h-0Ch)
- ???
- Return: AX = 0000h if DX was nonzero
- ???
- SeeAlso: AX=1A00h/BX=4156h,AX=1A72h
- --------m-2F1B00-----------------------------
- INT 2F U - DOS 4+ XMA2EMS.SYS extension internal - INSTALLATION CHECK
- AX = 1B00h
- Return: AL = FFh if installed
- Note: XMA2EMS.SYS extension is only installed if DOS has page frames to hide.
- This extension hooks onto INT 67/AH=58h and returns from that call data
- which excludes the physical pages being used by DOS.
- SeeAlso: AH=1Bh"FRAME INFO"
- --------m-2F1B-------------------------------
- INT 2F U - DOS 4+ XMA2EMS.SYS extension internal - GET HIDDEN FRAME INFORMATION
- AH = 1Bh
- AL <> 00h
- DI = hidden physical page number
- Return: AX = FFFFh if failed (no such hidden page)
- AX = 0000h if OK, then
- ES = segment of page frame
- DI = physical page number
- Notes: this corresponds to the data edited out of the INT 67/AH=58h call
- FASTOPEN makes this call with AL = FFh
- SeeAlso: AX=1B00h
- --------V-2F2300-----------------------------
- INT 2F - DR DOS 5.0 GRAFTABL - INSTALLATION CHECK
- AX = 2300h
- Return: AH = FFh
- Note: this installation check does not follow the usual format
- SeeAlso: AH=23h,AX=2E00h
- --------V-2F23-------------------------------
- INT 2F - DR DOS 5.0 GRAFTABL - GET GRAPHICS DATA
- AH = 23h
- AL nonzero
- Return: AH = FFh
- ES:BX -> graphics data (8 bytes for each character from 80h to FFh)
- SeeAlso: AX=2300h,AX=2E00h
- --------T-2F2700-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - INSTALLATION CHECK
- AX = 2700h
- Return: AL = status
- 00h not installed
- FFh installed
- Note: the TaskMAX API is also supported by Novell DOS 7 TASKMGR in both
- taskswitching and multitasking modes
- --------T-2F2701-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - GET STATUS
- AX = 2701h
- Return: AX = maximum simultaneous tasks
- BX = index into TASK_IDS of current foreground task
- CX = currently-active tasks
- DX = version number (DL = major, DH = minor)
- (DR DOS 6.0 = 0001h, Novell DOS 7 = 0002h)
- ES:SI -> TASK_IDS
- ES:DI -> name table (array of 8-byte names, NUL-terminated if <8 chars)
- Notes: do not attempt to create a new task if CX == AX
- the task's index is its position on the task menu, while its ID is the
- position within the internal task name table
- SeeAlso: AX=2714h,AX=2716h
- --------T-2F2702-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - GET PER-TASK EMS LIMIT
- AX = 2702h
- Return: DX = maximum pages INT 67/AH=42h will report available
- Note: TaskMAX does not limit EMS allocations other than by limiting the
- amount which is reported as being available at a given time
- SeeAlso: AX=2703h,INT 67/AH=42h
- --------T-2F2703-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - SET PER-TASK EMS LIMIT
- AX = 2703h
- DX = maximum pages INT 67/AH=42h should report available
- Return: DX = new maximum for reporting
- Note: the TaskMAX API is also supported by Novell DOS 7 TASKMGR in
- both taskswitching and multitasking modes
- SeeAlso: AX=2702h,INT 67/AH=42h
- --------T-2F2704-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - REGISTER/UNREGISTER TASK MANAGER
- AX = 2704h
- DL = subfunction
- 00h unregister task manager
- 01h register task manager
- Return: DL = status
- 00h registered
- 01h unregistered
- Notes: a task manager replaces TaskMAX's menu system with its own user
- interface; while one is registered, the TaskMAX hotkeys and
- Ctrl-Alt-Del invoke the manager rather than the built-in menu system
- unregister the task manager before terminating it
- SeeAlso: AX=2705h
- Index: hotkeys;TaskMAX
- --------T-2F2705-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - ENABLE/DISABLE DIRECT SWITCHING
- AX = 2705h
- DL = subfunction
- 00h disable keystrokes for switching to next/prev/specified task
- 01h enable
- Return: nothing
- Note: should only be called by a registered task manager (see AX=2704h)
- SeeAlso: AX=2704h,AX=2706h
- --------T-2F2706-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - SWITCH TO SPECIFIED TASK
- AX = 2706h
- DX = task index (see AX=2701h) of task to be activated
- Return: DX = task index of previously-active task
- Note: the TaskMAX API is also supported by Novell DOS 7 TASKMGR in
- both taskswitching and multitasking modes
- SeeAlso: AX=2705h,AX=2707h,AX=2715h
- --------T-2F2707-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - CREATE NEW TASK
- AX = 2707h
- DS:DX -> ASCIZ pathname of executable
- ES:BX -> parameter block (see #02738)
- CX = number of ticks before automatic return to task manager
- (0000h = run until termination or explicitly switched)
- Return: DX = new task's task index (FFFFh if task terminated)
- SeeAlso: AX=2706h,AX=2708h
- Format of TaskMAX parameter block:
- Offset Size Description (Table 02738)
- 00h WORD reserved, should be 0000h
- 02h DWORD pointer to command tail to be copied into child's PSP
- 06h DWORD pointer to first FCB to be copied into child's PSP
- 0Ah DWORD pointer to second FCB to be copied into child's PSP
- --------T-2F2708-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - DELETE TASK
- AX = 2708h
- DX = task index
- Return: DX = FFFFh (task deleted)
- Notes: this call should only be used for abnormal task termination, after
- first checking for open files with AX=270Ch; should not be used
- with programs that allocate EMS or XMS memory
- switches to specified task first
- SeeAlso: AX=2707h
- --------T-2F2709-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - NAME TASK
- AX = 2709h
- DX = task index
- DS:SI -> 8-byte name (8 NULs = remove name)
- Return: AL = task flags
- 00h ID unused or task terminated
- 01h ID in use, task name table entry valid
- 81h ID in use, task name fixed
- BX = task ID
- ES:DI -> name in task name table (see AX=2701h)
- Note: the task retains the given name until it terminates or the name is
- removed by specifying a name of 8 NULs.
- SeeAlso: AX=2701h,AX=2707h
- --------T-2F270A-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - CONVERT TASK INDEX TO TASK ID
- AX = 270Ah
- DX = task index
- Return: DX = task ID (FFFFh if index invalid)
- Note: task IDs stay constant, while indexes can change when other tasks are
- deleted
- SeeAlso: AX=2701h,AX=270Bh
- --------T-2F270B-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - CONVERT TASK ID TO TASK INDEX
- AX = 270Bh
- DX = task ID
- Return: DX = task index (FFFFh if task not active)
- Note: the TaskMAX API is also supported by Novell DOS 7 TASKMGR in both
- taskswitching and multitasking modes
- SeeAlso: AX=270Ah
- --------T-2F270C-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - CHECK OPEN FILES
- AX = 270Ch
- DX = task index
- Return: AX = number of files currently open for specified task
- SeeAlso: AX=2708h
- --------T-2F270D-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - CHECK IF TASK RUNNING PRIMARY COMMAND INTERPRETER
- AX = 270Dh
- DX = task index
- Return: DX = status
- 0000h if primary command interpreter (COMMAND.COM, etc.) running
- 0001h if not in root shell for task
- Note: TaskMAX will return 0001h if the specified task has spawned another
- command interpreter with AX=2707h
- SeeAlso: AX=2707h,AX=270Ch
- --------T-2F270E-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - GET/SET TEXT PASTE LEAD-IN
- AX = 270Eh
- CX = length of string (max 15 keystrokes, 0000h to get current string)
- DS:SI -> pasting lead-in string (character/scan-code pairs)
- Return: ES:DI -> current lead-in string
- Note: the specified sequence of keystrokes is sent to the application before
- every line of a text-mode spreadsheet paste
- SeeAlso: AX=270Fh,AX=2710h,AX=2713h
- --------T-2F270F-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - GET/SET NUMERIC PASTE LEAD-IN
- AX = 270Fh
- CX = length of string (max 15 keystrokes, 0000h to get current string)
- DS:SI -> pasting lead-in string (character/scan-code pairs)
- Return: ES:DI -> current lead-in string
- Note: the specified sequence of keystrokes is sent to the application before
- every number in a numeric-mode spreadsheet paste
- SeeAlso: AX=270Eh,AX=2710h,AX=2711h,AX=2713h
- --------T-2F2710-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - GET/SET PASTE LINE TERMINATOR STRING
- AX = 2710h
- CX = length of string (max 15 keystrokes, 0000h to get current string)
- DS:SI -> pasting terminator string (character/scan-code pairs)
- Return: ES:DI -> current terminator string
- Note: the specified sequence of keystrokes is sent to the application after
- every line of a spreadsheet paste operation
- SeeAlso: AX=270Eh,AX=270Fh,AX=2713h
- --------T-2F2711-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - GET/SET NUMERIC PASTE DECIMAL POINT
- AX = 2711h
- DX = ASCII code for separator (FFFFh to get current)
- Return: DL = current separator character
- SeeAlso: AX=270Fh
- --------T-2F2712-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - INITIATE EXPORTING TASK DATA
- AX = 2712h
- DX = task index
- --------T-2F2713-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - INITIATE PASTE OPERATION
- AX = 2713h
- DX = task index
- CX = paste mode
- 0000h alphanumeric
- 0001h numeric
- 0002h text
- SeeAlso: AX=270Eh,AX=270Fh,AX=2710h,AX=2711h
- --------T-2F2714-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - GET SWAP SPACE INFO
- AX = 2714h
- Return: CX = total KB of swap space
- DX = available KB of swap space
- Note: the TaskMAX API is also supported by Novell DOS 7 TASKMGR in both
- taskswitching and multitasking modes
- SeeAlso: AX=2701h
- --------T-2F2715-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - SWITCH TO TASK MANAGER
- AX = 2715h
- Return: only after calling task is again selected
- SeeAlso: AX=2706h
- --------T-2F2716-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - GET PASTE BUFFER STATUS
- AX = 2716h
- Return: AX = 0000h if AX=2716h,AX=2717h,AX=2718h supported
- CX = bytes in paste buffer
- DX = current generation number (updated after every copy operation)
- BUG: Novell DOS 7 TASKMGR returns AX=0000h even though it does not support
- this call (it does support the remainder of the TaskMAX API)
- SeeAlso: AX=2701h,AX=2713h,AX=2714h,AX=2717h,AX=2718h
- --------T-2F2717-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - PASTE DATA DIRECTLY TO APPLICATION BUFFER
- AX = 2717h
- CX = bytes in destination buffer
- ES:DI -> destination buffer
- Return: AX = 0000h if function supported
- CX = bytes actually copied (FFFFh if buffer too small)
- DX = current generation number for paste buffer
- BUG: Novell DOS 7 TASKMGR returns AX=0000h even though it does not support
- this call (it does support the remainder of the TaskMAX API)
- Note: the destination buffer may be too small if another task adds more data
- to the paste buffer after the AX=2716h call but before this call
- SeeAlso: AX=2713h,AX=2716h,AX=2718h
- --------T-2F2718-----------------------------
- INT 2F - DR DOS 6.0 TaskMAX - COPY DATA DIRECTLY INTO PASTE BUFFER
- AX = 2718h
- CX = bytes in source buffer
- DS:SI -> source buffer (plain ASCII, lines terminated with CR LF)
- Return: AX = 0000h if function supported
- CX = bytes actually copied
- DX = current generation number for paste buffer
- BUG: Novell DOS 7 TASKMGR returns AX=0000h even though it does not support
- this call (it does support the remainder of the TaskMAX API)
- SeeAlso: AX=2712h,AX=2716h,AX=2717h
- --------T-2F2719-----------------------------
- INT 2F - Novell DOS 7 TaskMGR - NOP
- AX = 2719h to 271Bh
- --------T-2F271C-----------------------------
- INT 2F U - Novell DOS 7 TaskMGR - ???
- AX = 271Ch
- DX = ???
- bit 0: ???
- Return: ???
- ---if DX bit 0 set---
- AX = 0031h
- CX = 0000h
- BUG: if the task switcher is running, and DX bit 0 is set on call, this
- function will crash because its exit code attempts to pop several
- registers which are not pushed when DX bit 0 is set
- --------m-2F2780CL01-------------------------
- INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API - SUPERVISOR MODULE
- AX = 2780h
- CL = 01h (module: Supervisor)
- CH = subfunction
- 00h unused
- Return: CX = status (0002h) (see #02739)
- 01h unused
- Return: CX = status (0002h) (see #02739)
- 02h "Z_ModuleReg" register an OS module
- EBX = module number (0005h-000Fh)
- DS:EDX -> module descriptor (see #02741)
- Return: CX = status (0000h,0030h) (see #02739)
- 03h allocate SYSDAT memory
- DX = number of ??? to allocate
- Return: CX = status (0000h,0003h) (see #02739)
- 04h get selector to SYSDAT
- Return: CX = 0000h (successful)
- BX = selector for EMM386 data segment
- EBX high word cleared
- 05h "Z_MoveReal" relocate segment into extended memory
- DS:EDX -> descriptor parameter block
- Return: ECX = status (00h,03h,31h,32h) (see #02739)
- ---if successful---
- parameter block filled
- 06h "Z_Reboot" return to real mode via triple fault
- 07h debugger break
- Note: calls INT 03, then INT 21/AH=02h to output a question
- mark
- 08h "X_ForeCheck" check if domain is in foreground
- Return: CX = 0000h (successful)
- EBX = ??? (0 or 2)
- 09h register VxD with system
- 0Ah unload VxD hook
- 0Bh indicate end of initialization phase
- Return: CX = status (0002h) (see #02739)
- 0Ch "F_AllocWindow" allocate 4K mapping window
- 0Dh "F_RegisterBoot" register reboot addresses
- EBX = ???
- EDX = ???
- Return: ???
- 0Eh "F_EnquireBoot" check if reboot active
- Return: CX = 0000h (successful)
- BL = ??? \ or BX = 0000h
- BH = ??? /
- 0Fh get debugging level
- Return: CX = 0000h (successful)
- EBX = new value for debugging level
- 10h set debugging level
- EDX = ???
- Return: CX = 0000h (successful)
- EBX = old value of debugging level
- 11h installation check (documented)
- Return: CX = status
- 0000h if multitasker is installed
- EBX = version (0100h for v1.00)
- 1101h if multitasker is not present
- 12h "F_V86BPInstall" install V86 breakpoint
- DX = ???
- Return: CX = 0000h (successful)
- AX = old value of ???
- 13h "F_V86BPRemove" remove V86 breakpoint
- Return: CX = status (0000h,003Fh) (see #02739)
- AX = ???
- 14h "F_V86BPOffer" indicate INT 03 to be used as V86 breakpoint
- EDX = linear address ??? of INT 03 instruction for breakpoint
- Return: CX = status (0000h,003Fh) (see #02739)
- 15h "F_LoaderCleanup" offer opportunity to clean up
- BX = segment of ???
- Return: CX = 0000h (successful)
- BX = segment of ???
- 16h "F_RegisterVxDWindow" register VxD mapping window
- 17h "F_RegisterPNW" register Personal NetWare information
- EBX = subfunction (0-2)
- Return: CX = status (0002h if EBX>2) (see #02739)
- ???
- 18h unused
- Return: CX = status (0002h) (see #02739)
- Return: CX = status (most subfunctions)
- (E)AX and/or (E)BX contain return values, depending on function
- Notes: called by DPMS.EXE and EMM386.EXE
- this API is only available if AX=12FFh/BX=0EDCh returns successfully;
- because the request is handled on the initial trap to the memory
- manager caused by INT instructions, this API must be invoked with
- an actual INT 2F instruction instead of some simulation such as a
- far call to the address in the interrupt vector table
- SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=02h,AX=2780h/CL=03h,AX=2780h/CL=04h
- (Table 02739)
- Values for Novell DOS 7 EMM386 function status:
- 0000h successful
- 0001h not implemented
- 0002h invalid subfunction
- 0003h unable to find memory
- 0004h invalid flag (semaphore) number
- 0005h flag (semaphore) overrun
- 0006h flag (semaphore) underrun
- 0007h no queue handles available
- 0009h no queue buffers available
- 000Ah queue is in use
- 000Bh invalid process handle
- 000Ch no process handles available
- 000Dh queue access not permitted
- 000Eh queue is empty
- 000Fh queue is full
- 0012h no memory handles available
- 0014h can't find process in process list
- 001Bh invalid memory handle
- 0023h unable to terminate process
- 002Ah flag set ignored
- 002Dh no more system flags
- 002Eh flag (semaphore) not in idle state
- 002Fh flag (semaphore) wait timed out
- 0030h bad module number in CL
- 0031h bad descriptor
- invalid value for DESC_PB_SINFO in a descriptor parameter block
- 0032h no free descriptors
- 0033h error while locking/unlocking a page
- 0034h error getting or setting a page
- 0035h no pages available
- 0036h invalid domain
- 0037h process already frozen
- 0038h process not frozen
- 0039h fork failure (no registered swaplist)
- 003Ah page already free
- 003Bh page already allocated
- 003Ch unable to switch tasks
- 003Dh attempted to free critical section which is not active
- 003Eh too many active critical sections
- 003Fh ???
- 41FFh current domain is invalid, or no domain in context
- 42FFh domain ID is not a valid descriptor
- 43FFh domain creation still in progress
- 44FFh domain currently being deleted
- 45FFh task manager is busy, cannot unload it
- 46FFh task manager already loaded
- 47FFh task manager not yet loaded
- 48FFh cannot save/restore because prior switch not complete
- 49FFh console already has owner
- 4BFFh unsupported opcode
- 4CFFh 32-bit address prefix not supported
- 4FFFh timeout, but not on timer queue
- 50FFh unable to lock timer queue
- 53FFh unable to switch while in Global Message Mode
- 54FFh error while setting Global Message Mode
- 55FFh not in Global Message Mode
- 56FFh system already in Domain Message Mode
- 57FFh not in Domain Message Mode
- 58FFh unable to allocate timeout structure
- 59FFh unsupported video type
- 5AFFh function not handled by any VM
- 5BFFh error in Serial..Set call
- 5CFFh error in Parallel..Set call
- 5DFFh domain list overflowed
- 5FFFh unable to free domain while in nobuffers mode
- Format of Novell DOS/OpenDOS EMM386 descriptor parameter block:
- Offset Size Description (Table 02740)
- 00h DWORD "DESC_PB_BASE"
- 04h DWORD "DESC_PB_LIMIT"
- 08h WORD "DESC_PB_SEL"
- 0Ah BYTE "DESC_PB_MINFO"
- 0Bh BYTE "DESC_PB_SINFO"
- SeeAlso: #02741
- Format of Novell DOS/OpenDOS EMM386 module descriptor:
- Offset Size Description (Table 02741)
- 00h 12 BYTEs descriptor parameter block (see #02740)
- 0Ch DWORD -> module entry point
- Note: for function "Z_ModuleReg", only DESC_PB_SEL and the module entry point
- need to be initialized before calling EMM386
- SeeAlso: #02740
- --------m-2F2780CL02-------------------------
- INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API - REAL-TIME MONITOR
- AX = 2780h
- CL = 02h (module: Real-Time Monitor)
- CH = subfunction
- 00h ???
- ???
- Return: CX = status (0000h,0023h, others???) (see #02739)
- BX = ??? (0000h if CX=0000h, FFFFh if CX=0023h)
- Note: calls func 04h/sf 03h, func 04h/sf 1Eh,func 02h/sf 43h,
- func 02h/sf 0Bh, and func 04h/sf 01h
- 01h "Z_PCountGet" get and clear count of dispatches
- DX = ??? handle or 0000h for default
- Return: CX = status (0000h,000Bh) (see #02739)
- EBX = old value of ??? if successful
- EDX destroyed
- 02h "Z_FlagWait" wait on semaphore
- DX = index of semaphore???
- Return: CX = status (0000h,0004h,0005h) (see #02739)
- EBX = 0000FFFFh on error, 00000000h if successful
- 03h "Z_FlagSet" set a semaphore flag
- DX = index of semaphore???
- Return: CX = status (0000h,0004h,0006h) (see #02739)
- BX = FFFFh on error, 0000h if successful
- 04h "X_QCreate" create a new queue
- Return: CX = status (0000h,0007h,000Ah) (see #02739)
- 05h "X_QOpen" open queue for reading/writing
- EDX -> ??? data (first 8 bytes seem to be name)
- Return: CX = status (0000h,0009h,000Dh) (see #02739)
- 06h "X_QDelete" delete a queue
- Note: calls fn 02h/subfn 05h, then fn 02h/subfn 40h
- 07h "X_QRead" read message from queue
- EDX = ???
- Return: CX = status (0000h,0009h,000Eh) (see #02739)
- 08h "X_QReadC" read message from queue, if any
- EDX = ???
- Return: CX = status (0000h,0009h,000Eh) (see #02739)
- 09h "X_QWrite" write message to queue
- EDX = ???
- Return: CX = status (0000h,0009h,000Fh) (see #02739)
- 0Ah "X_QWriteC" write message to queue, if space available
- EDX = ???
- Return: CX = status (0000h,0009h,000Fh) (see #02739)
- 0Bh "X_PDelay" put process to sleep for specified period
- DX = number of clock ticks to sleep???
- Return: CX = 0000h (successful)
- 0Ch "X_PDispatch" force a dispatch (run scheduler)
- Return: CX = 0000h (successful)
- 0Dh "F_PTerm" terminate process???
- Return: CX = status (0000h,0023h) (see #02739)
- BX = FFFFh on error, 0000h if successful
- Note: calls fn 04h/subfn 03h, fn 04h/subfn 1Eh,
- fn 02h/subfn 43h, fn 02h/subfn 0Bh, fn 04h/sub 01h
- 0Eh "X_PCreate" create new process
- ???
- Return: CX = status (0000h,000Ch) (see #02739)
- EBX = ??? if successful
- 0Fh "Z_PPriorSet" set process priority
- BX = ???
- DX = ??? handle or 0000h for default
- Return: CX = status (0000h,000Bh) (see #02739)
- 10h "X_PHandleGet" get current process handle
- Return: CX = 0000h (successful)
- BX = handle of default ???
- EBX high word cleared
- 11h "X_PTerm" terminate process
- DX = process handle or 0000h for current
- BX = ??? (handle???)
- Return: CX = status (0000h,000Bh,0014h) (see #02739)
- 12h "F_Sleep" ???
- BX = ???
- DX = ???
- Return: CX = 0000h (successful)
- 13h "F_Wakeup" ???
- DX = ???
- Return: CX = status (see #02739)
- 14h "F_FindPDName" find process by name???
- BX = ???
- DX = ???
- Return: CX = status (0000h,0014h) (see #02739)
- BX = FFFFh on error, ??? if successful
- 15h "F_SetFlags" set ??? flags
- BX = ??? (low two bits only)
- DX = ??? handle or 0000h for default
- Return: CX = status (0000h,000Bh) (see #02739)
- BX = new value of ??? flags (entire word)
- EBX high register cleared
- 16h "F_EndOfInterrupt" issue EOI to PIC
- Return: CX = 0000h (successful)
- 17h "X_PTermOff" disable process termination
- 18h "X_PTermOK" enable process termination
- 19h "Z_FlagStatusGet" get semahprore's status
- 1Ah "F_QRdMX" ???
- 1Bh "F_QWrMX" ???
- 1Ch "Z_FlagAlloc" allocate a new semaphore
- 1Dh "Z_FlagFree" free semaphore
- 1Eh "X_FlagsMaxGet" get number of semaphores supported
- 1Fh "X_QReadNDC" non-destructive read from queue (peek)
- 20h "Z_FlagWWTO" wait on semaphore, with timeout
- 21h "F_UdaAlloc" ???
- 22h "F_UdaFree" ???
- 23h "X_PSuspend" suspend process
- 24h "X_PUnsuspend" restart process after suspension
- 25h "X_CritEnter" enter critical region
- 26h "X_CritExit" leave critical region
- 27h "F_PCreate" ???
- 28h "Z_PHandleListGet" get list of process handles
- 29h "Z_PNameGet" get process name
- 2Ah "Z_PStatusGet" get process status
- 2Bh "F_PDToDomain" get process' domain???
- 2Ch "Z_PPriorGet" get process priority
- 2Dh "F_QDList" get list of queues???
- 2Eh "Z_QNameGet" get queue's name
- 2Fh "X_QMsgLenGet" get message length of queue
- 30h "X_QMsgMaxGet" get message capacity of queue
- 31h "Z_QWriterGet" get handle of process waiting to write queue
- 32h "Z_QReaderGet" get handle of process waiting to read queue
- 33h "X_QMsgNumGet" get number of messages in queue
- 34h "Z_QFlagsGet" get queue's flags
- 35h "F_NameToQD" get queue by name???
- 36h "F_NameToPD" get process by name???
- 37h "X_MXCreate" create a mutex
- 38h "X_MXDelete" delete a mutex
- 39h "X_MXEnter" enter mutual-exclusion zone
- 3Ah "X_MXEnterC" enter mutual-exclusion zone if it is free
- 3Bh "X_MXExit" leave mutual-exclusion zone
- 3Ch "Z_TicksSet" set length of foreground time slices
- 3Dh "X_TickGet" get clock tick period
- 3Eh "F_ProcessID" ???
- 3Fh "X_QClose" close a queue
- 40h "F_QDispose" delete queue???
- 41h "F_PDToFlags" get process flags???
- 42h "F_PDToDParam" ???
- 43h "F_ReleaseMX" release mutex???
- 44h "F_SimulateInt" ???
- 45h "Z_QFlagsSet" set queue's flags
- 46h "F_TickRate" ???
- 47h ???
- Return: CX = status (most subfunctions)
- (E)AX and/or (E)BX contain return values, depending on function
- Notes: called by DPMS.EXE and EMM386.EXE
- this API is only available if AX=12FFh/BX=0EDCh returns successfully;
- because the request is handled on the initial trap to the memory
- manager caused by INT instructions, this API must be invoked with
- an actual INT 2F instruction instead of some simulation such as a
- far call to the address in the interrupt vector table
- SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=03h,AX=2780h/CL=04h
- --------m-2F2780CL03-------------------------
- INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API - MEMORY
- AX = 2780h
- CL = 03h (module: Memory)
- CH = subfunction
- 00h ???
- 01h "F_PdirGet" ???
- 02h "F_PdirSet" ???
- 03h "Z_PageAlloc" allocate a given page of memory
- 04h "F_PageAllocG" allocate global page???
- 05h "F_PageAllocI" allocate instance page???
- 06h "F_PtblRead" get page table???
- 07h "F_PtrlWrite" select page table???
- 08h "Z_PtblGet" read page table
- 09h "Z_PtblSet" change page table
- 0Ah "Z_PagesAlloc" allocate pages of memory
- 0Bh "Z_PageFree" free a given page of memory
- 0Ch "Z_MemAlloc" allocate a memory block
- 0Dh "Z_MemFree" release memory block
- 0Eh "Z_MemSizeGet" get size of memory block
- 0Fh "Z_MemResize" resize a memory block
- 10h "Z_DescAlloc" allocate a memory descriptor
- 11h "Z_DescFree" release a memory descriptor
- 12h "Z_DescGet" get details on memory descriptor
- 13h "Z_DescSet" set a memory descriptor
- 14h "Z_MemDescAlloc" allocate a memory block and its descriptor
- 15h "Z_MemDescFree" release a memory block and its descriptor
- 16h "Z_MemDescSizeGet" get size of memory block
- 17h "Z_MemDescResize" resize a memory block
- 18h "Z_PageLock" lock a page, with existing contents
- 19h "Z_PageUnlock" unlock a page
- 1Ah "Z_PageLockAny" lock a page, contents undefined
- 1Bh "Z_PageUnlockReuse" unlock page, reuse phsyical memory
- 1Ch "Z_PageLockNone" lock a page, no physical memory assigned
- 1Dh "Z_PageUnlockNone" unlock a page, don't reuse physical memory
- 1Eh "F_CallRealRaw" call real mode (SS:ESP supplied)
- 1Fh "F_IntRealRaw" perform real-mode interrupt (SS:ESP supplied)
- 20h "F_CallReal" call real mode with RETF frame
- 21h "F_IntReal" perform real-mode interrupt
- 22h "F_PagedCallReal" paged real-mode call
- 23h "F_PagedIntReal" paged real-mode interrupt
- 24h "F_CallIretReal" call real mode with IRET frame
- 25h "F_CallIretRealRaw" call real mode with IRET (SS:ESP supplied)
- 26h "F_CallProt16" call 16-bit protected-mode code
- 27h "F_CallProt32" call 32-bit protected-mode code
- 28h "F_IAddPage" add kernel instance data
- 29h "Z_PageDomLock" lock page in specific domain, preserve contents
- 2Ah "Z_PatgeDomUnlock" unlock page in specific domain
- 2Bh "Z_PageDomLockAny" lock page in specific domain, undef contents
- 2Ch "Z_PageDomUnlockReuse" unlock page in spec. domain,reuse ph.mem
- 2Dh "Z_PageDomLockNone" lock page in spec. domain, no phys memory
- 2Eh "Z_PageDomUnlockNone" unlock page in spec. domain, no phys. mem
- 2Fh "Z_GateAlloc" allocate a gate
- 30h "Z_GateFree" release a gate
- 31h "X_MemFreeGet" get total free memory
- 32h "X_MemTopGet" get highest memory address
- 33h "X_MemTotalGet" get total memory size
- 34h "F_DescRead" ???
- 35h "F_DescWrite" ???
- 36h "F_GetStack" ???
- 37h "F_SetStack" ???
- Return: CX = status (most subfunctions)
- (E)AX and/or (E)BX contain return values, depending on function
- Notes: called by DPMS.EXE and EMM386.EXE
- this API is only available if AX=12FFh/BX=0EDCh returns successfully;
- because the request is handled on the initial trap to the memory
- manager caused by INT instructions, this API must be invoked with
- an actual INT 2F instruction instead of some simulation such as a
- far call to the address in the interrupt vector table
- SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=04h
- --------m-2F2780CL04-------------------------
- INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API - DOMAINS
- AX = 2780h
- CL = 04h (module: Domains)
- CH = subfunction
- 00h "F_DAlloc" create new domain
- 01h "F_DFree" delete a domain
- 02h "X_DomHandleGetMy" get current domain handle
- 03h "F_DSet" switch to another domain
- 04h "Z_HandlerSWInt" install software-interrupt handler
- 05h "Z_HandlerPageFault" install page-fault handler
- 06h "Z_HandlerIOEx" install I/O exception handler
- 07h "Z_HandlerGenEx" install general exception handler
- 08h "Z_HandlerHWInt" install hardware interrupt handler
- 09h "Z_IOBitmapGet" get current domain's I/O bitmap entry
- 0Ah "Z_IOBitmapSet" set current domain's I/O bitmap entry
- 0Bh "Z_IOBitmapDomGet" get domain's I/O bitmap entry
- 0Ch "Z_IOBitmapDomSet" set domain's I/O bitmap entry
- 0Dh "Z_DomMemRead" read memory in another domain
- 0Eh "Z_DomMemWrite" write memory in another domain
- 0Fh "Z_PtblDomGet" read domain's page table
- 10h "Z_PtblDomSet" write domain's page table
- 11h "Z_InstanceSet" register instanced memory
- 12h "X_DomNProcessesGet" get number of processes in domain
- 13h "X_DomSuspend" suspend a domain
- 14h "Z_DomUnsuspend" resume execution of a domain
- 15h "Z_DomFork" make a copy of the current domain
- 16h "Z_DomTerm" terminate domain and all processes in it
- 17h "Z_HandlerUnlink" remove a handler
- 18h "Z_HandlerHWIntDflt" install default hardware interrupt handler
- 19h "Z_HandlerVHWInt" install virtual hardware interrupt handler
- 1Ah "Z_HandlerVHWIntDflt" install default virtual hware int handler
- 1Bh "Z_HandlerSwapIn" install swap-in handler
- 1Ch "Z_HandlerSwapOut" install swap-out handler
- 1Dh "Z_EndOfInterrupt" signal EOI
- 1Eh ???
- 1Fh "Z_HandlerPCreate" install process-creation handler
- 20h "Z_HandlerPTerm" install process-termination handler
- 21h "Z_DomRootProcessGet" get domain's root process' handle
- 22h "F_DForeground" domain has just switched to foreground
- 23h "F_DBackground" domain has just switched to background
- 24h "F_MapHMA" map domain's HMA
- 25h "F_AddInstData" add DOS instance data
- 26h "X_DomMemFreeGet" get free memory in a domain
- 27h "X_DomMemUsedGet" get memory used by current domain
- 28h "Z_DomMemMaxGet" get per-domain memory limit
- 29h "Z_DomMemMaxSet" set per-domain memory limit
- 2Ah "F_ReflectInt21" protected-mode INT 21 support
- 2Bh "Z_DomHandleGet" get domain for a process
- 2Ch ???
- 2Dh ???
- 2Eh ???
- 2Fh ???
- 30h ???
- 31h ???
- 32h ???
- Return: CX = status (most subfunctions)
- (E)AX and/or (E)BX contain return values, depending on function
- Notes: called by DPMS.EXE and EMM386.EXE
- this API is only available if AX=12FFh/BX=0EDCh returns successfully;
- because the request is handled on the initial trap to the memory
- manager caused by INT instructions, this API must be invoked with
- an actual INT 2F instruction instead of some simulation such as a
- far call to the address in the interrupt vector table
- SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h
- --------m-2F2780CL05-------------------------
- INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API - VIRTUAL MACHINES
- AX = 2780h
- CL = 05h (module: VM)
- CH = function
- 00h "F_VMProtInit" internal protected-mode initialization
- 01h "Z_TMLoad" load task manager
- 02h "Z_TMUnload" unload task manager
- 03h "Z_VMBackSet" send virtual machine to background
- 04h "Z_VMForeSet" send virtual machine to foreground
- 05h "Z_VMSaveEnable" enable saving virtual machine
- 06h "Z-VMSaveDisable" disable saving virtual machine
- 07h "Z_TMInit" intialize task manager
- 08h "Z_TMHotKeyGet" get task manager hotkey
- 09h "Z_TMHitKeyEnable" restart scanning for task manager key
- 0Ah "Z_TMHotKeyDisable" stop scanning for task manager key
- 0Bh "X_ForeGet" get current foreground domain
- 0Ch "F_DMAHandlerEnable" (re)enable DMA address translation
- 0Dh "F_DMAHandlerDisable" disable DMA address translation
- 0Eh "Z_SerialTimeoutGet" set serial port timeout
- 0Fh "Z_ParallelTimeoutSet" set parallel port timeout
- 10h "F_VCPIEntry" domain is entering VCPI mode
- 11h "F_VCPIExit" domain is leaving VCPI mode
- 12h "X_MsgGlobalEnter" enter Global Message Mode
- 13h "X_MsgGlobalDisplay" display global message
- 14h "X_MsgGlobalExit" leave Global Message Mode
- 15h "X_MsgDomEnter" enter Domain Message Mode
- 16h "X_MsgDomDisplay" display domain-specific message
- 17h "X_MsgDomExit" leave Domain Message Mode
- 18h "X_MsgFatalDisplay" display fatal error message
- 19h "Z_SerialBaseSet" set serial port address
- 1Ah "Z_ParallelBaseSet" set parallel port address
- 1Bh "Z_SerialIRQSet" set serial port IRQ
- 1Ch "Z_ParallelIRQSet" set parallel port IRQ
- 1Dh "F_ResetVideo" emergency video system reset
- 1Eh "F_SetMouseIRQ" set which IRQ is used by mouse
- 1Fh "F_CheckNotIdle" check whether system is idle
- 20h "F_GetMouseInfo"
- 21h "Z_SerialOwnerGet" get serial port owner
- 22h "Z_SerialTimeoutGet" get serial port timeout
- 23h "Z_ParallelOwnerGet" get parallel port owner
- 24h "Z_ParallelTimeoutGet" get parallel port timeout
- ???
- Return: ???
- Notes: called by DPMS.EXE and EMM386.EXE
- the handler for this function may be set by one of the subfunctions
- of AX=2780h/CL=01h; the default handler returns AX=BX=FFFFh and
- CX=0001h (see #02739)
- this API is only available if AX=12FFh/BX=0EDCh returns successfully;
- because the request is handled on the initial trap to the memory
- manager caused by INT instructions, this API must be invoked with
- an actual INT 2F instruction instead of some simulation such as a
- far call to the address in the interrupt vector table
- SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h
- --------m-2F2780CL06-------------------------
- INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API - DPMI SERVICES
- AX = 2780h
- CL = 06h
- CH = function
- 00h "F_InitDPMI" used for internal initialization
- 01h "F_DescAllocLDT" allocate LDT descriptor
- 02h "F_DescFreeLDT" free LDT descriptor
- 03h "F_DescGetLDT" get details on LDT descriptor
- 04h "F_DescSetLDT" set up LDT descriptor
- 05h "F_DescAllocInt21" allocate descriptor for PM INT 21
- 06h "F_WhereIsDPMI" get address of DPMI global data
- Return: ???
- Notes: called by DPMS.EXE and EMM386.EXE
- the handler for this function may be set by one of the subfunctions
- of AX=2780h/CL=01h; the default handler returns AX=BX=FFFFh and
- CX=0001h (see #02739)
- this API is only available if AX=12FFh/BX=0EDCh returns successfully;
- because the request is handled on the initial trap to the memory
- manager caused by INT instructions, this API must be invoked with
- an actual INT 2F instruction instead of some simulation such as a
- far call to the address in the interrupt vector table
- SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h
- --------m-2F2780-----------------------------
- INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API - AVAILABLE FOR APPS
- AX = 2780h
- CL = function (07h-0Fh)
- ???
- Return: ???
- Notes: called by DPMS.EXE and EMM386.EXE
- the handlers for each of these functions may be set individually by
- one of the subfunctions of AX=2780h/CL=01h; the default handlers
- return with all registers unchanged
- this API is only available if AX=12FFh/BX=0EDCh returns successfully;
- because the request is handled on the initial trap to the memory
- manager caused by INT instructions, this API must be invoked with
- an actual INT 2F instruction instead of some simulation such as a
- far call to the address in the interrupt vector table
- SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h
- --------T-2F2781-----------------------------
- INT 2F U - Novell DOS 7 TaskMGR - BEGIN CRITICAL SECTION???
- AX = 2781h
- Return: ???
- SeeAlso: AX=2782h
- --------T-2F2782-----------------------------
- INT 2F U - Novell DOS 7 TaskMGR - END CRITICAL SECTION???
- AX = 2782h
- Return: ???
- SeeAlso: AX=2781h
- --------m-2F2783-----------------------------
- INT 2F U - Novell DOS 7 - EMM386.EXE - GET ???
- AX = 2783h
- Return: AX = ???
- BX = ???
- --------T-2F278F-----------------------------
- INT 2F U - Novell DOS 7 TaskMGR - ??? API
- AX = 278Fh
- as for INT 2F/AX=2780h
- Return: as for INT 2F/AX=2780h
- Note: Novell DOS 7 TaskMGR passes this call through to INT 2F/AX=2780h
- without changing any other registers
- SeeAlso: AX=2780h/CL=01h,AX=2782h
- --------F-2F2A-------------------------------
- INT 2F - Gammafax DOS Dispatcher INTERFACE
- AH = 2Ah
- Note: details not available at this time
- SeeAlso: AX=8000h"FaxBIOS",AX=C000h/BX=444Bh,AX=CB00h,AX=CBDDh,INT 66"BitFax"
- --------V-2F2E00-----------------------------
- INT 2F U - Novell DOS 7 - GRAFTABL - INSTALLATION CHECK
- AX = 2E00h
- Return: AH = FFh if installed
- Note: this installation check does not follow the usual format of setting
- AL to FFh
- SeeAlso: AX=2300h,AH=2Eh"GRAFTABL"
- --------V-2F2E-------------------------------
- INT 2F U - Novell DOS 7 - GRAFTABL - GET FONT TABLE
- AH = 2Eh
- AL nonzero
- Return: AH = FFh if installed
- ES:BX -> graphics data (8 bytes per character from 80h to FFh)
- SeeAlso: AX=2E00h,AH=23h"GRAFTABL"
- --------t-2F3900-----------------------------
- INT 2F - Kingswood TSR INTERFACE - COMPATIBILITY MODE
- AX = 3900h
- Return: AL = status
- 00h not installed
- FFh one or more TSRs using this interface is installed
- DX may be destroyed
- Note: this function is provided to that the multiplex number will appear used
- to other programs
- SeeAlso: AH=39h/BL=00h
- --------t-2F39--BL00-------------------------
- INT 2F - Kingswood TSR INTERFACE - INSTALLATION CHECK
- AH = 39h
- BL = 00h
- AL = TSR ID number (01h-FFh, currently only 01h-1Bh used) (see #02742)
- Return: AL = status
- 00h not installed
- FFh installed
- DX = segment address of resident module
- Note: All of Kingswood Software's TSRs use this interface. Usually the
- resident module is installed by allocating a block of upper memory,
- setting its owner ID to 000Ah (used by DOS), and filling the MCB name
- field with the TSR's name.
- SeeAlso: #02743,AX=3900h,AH=39h/BL=01h
- (Table 02742)
- Values for Kingswood TSR ID number:
- 01h TSR Windows
- 02h NOBUSY
- 03h CD STACK
- 04h DISK WATCH
- 05h PUSHBP
- 06h ALIAS
- 07h KEYMACRO
- 08h SLOWDOWN
- 09h ANSIGRAB
- 0Ah TEE
- 0Bh FASTMOUS
- 0Ch EXTWILD
- 0Dh BREAKOUT
- 0Eh STOPDISK
- 0Fh MEMINIT
- 10h JANUSEXT
- 11h CAPS
- 12h ANSI
- 13h TRAPPER
- 14h EATMEM
- 15h WPJOKE
- 16h SHOWDOS
- 17h LOGINTS
- 18h BLANKVGA
- 19h SWAPEXEC
- 1Ah SHELL
- 1Bh TSRGAMES
- Format of Kingswood TSR modules:
- Offset Size Description (Table 02743)
- 00h 4 BYTEs signature "FTSR"
- 04h WORD segment address of this module (used to check validity)
- 06h WORD number of words to skip (usually 0000h if no PSP present)
- 08h N WORDs module-defined data that must be at a fixed segment offset
- (usually only a PSP if file access is required)
- 5N BYTEs interrupt list (see #02744)
- BYTE FFh terminator
- Format of Kingswood TSR interrupt list entry:
- Offset Size Description (Table 02744)
- 00h BYTE interrupt number (00h-FEh)
- 01h WORD offset within segment of DWORD pointer to previous interrupt
- 03h WORD offset within segment of begin of interrupt handler code
- --------t-2F39--BL01-------------------------
- INT 2F - Kingswood TSR INTERFACE - REMOVAL CHECK
- AH = 39h
- BL = 01h
- AL = TSR ID number (01h-FFh) (see #02742)
- Return: AL = status
- 00h not ready to be removed
- FFh resident module may be removed by deassigning the interrupts
- hooked by the TSR and deallocating the TSR's memory block
- AH,BX,CX,DX,ES may be destroyed
- SeeAlso: AX=3900h,AH=39h/BL=00h
- --------t-2F39-------------------------------
- INT 2F - Kingswood TSR INTERFACE - APPLICATION-SPECIFIC FUNCTION CALLS
- AH = 39h
- BL = function number (02h-FFh)
- AL = TSR ID number (01h-FFh) (see #02742)
- CX,DX,SI,DI,DS,ES may contain parameters
- BH reserved for use by the function dispatcher
- Return: as appropriate for the called function
- SeeAlso: AX=3900h,AH=39h/BL=00h,AX=3901h/BL=02h
- --------r-2F3901BL02-------------------------
- INT 2F - Kingswood TSR Windows - OPEN WINDOW
- AX = 3901h
- BL = 02h
- Return: AX = error code (0000h if successful)
- SI,DI,DS,ES preserved
- Notes: opens the next TSR window on top of any others. Only three
- TSR windows can be opened at any one time. The three windows
- are all 40x11 characters, partly overlapping.
- SeeAlso: AH=39h/BL=00h,AX=3901h/BL=03h,AX=3901h/BL=05h,AX=3901h/BL=06h
- --------r-2F3901BL03-------------------------
- INT 2F - Kingswood TSR Windows - HIDE WINDOWS
- AX = 3901h
- BL = 03h
- Return: AX = error code (0000h if successful)
- SI,DI,DS,ES preserved
- Notes: Hide any visible TSR windows from view.
- SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h,AX=3901h/BL=05h
- --------r-2F3901BL04-------------------------
- INT 2F - Kingswood TSR Windows - SHOW WINDOWS
- AX = 3901h
- BL = 04h
- Return: AX = error code (0000h if successful)
- SI,DI,DS,ES preserved
- Notes: Re-display all TSR windows after a HIDE WINDOWS call.
- SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h,AX=3901h/BL=03h
- --------r-2F3901BL05-------------------------
- INT 2F - Kingswood TSR Windows - CLOSE WINDOW
- AX = 3901h
- BL = 05h
- Return: AX = error code (0000h if successful)
- SI,DI,DS,ES preserved
- Notes: Close the last opened TSR window.
- SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h
- --------r-2F3901BL06-------------------------
- INT 2F - Kingswood TSR Windows - SET WINDOW TITLE
- AX = 3901h
- BL = 06h
- DS:SI -> title string
- Return: AX = error code (0000h if successful)
- SI,DI,DS,ES preserved
- SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h
- --------r-2F3901BL07-------------------------
- INT 2F - Kingswood TSR Windows - POSITION CURSOR
- AX = 3901h
- BL = 07h
- CH = Y coordinate (0-10)
- CL = X coordinate (0-39)
- Return: AX = error code (0000h if successful)
- SI,DI,DS,ES preserved
- Note: the hardware cursor is always disabled when a TSR window is opened;
- this call only sets a text position
- SeeAlso: AH=39h/BL=00h,AX=3901h/BL=08h,AX=3901h/BL=09h
- --------r-2F3901BL08-------------------------
- INT 2F - Kingswood TSR Windows - DISPLAY STRING
- AX = 3901h
- BL = 08h
- DS:SI -> string
- Return: AX = error code (0000h if successful)
- SI,DI,DS,ES preserved
- Notes: The text is not clipped.
- This routine understands Tab, NewLine and Carriage Return
- SeeAlso: AH=39h/BL=00h,AX=3901h/BL=07h
- --------r-2F3901BL09-------------------------
- INT 2F - Kingswood TSR Windows - SCROLL WINDOW
- AX = 3901h
- BL = 09h
- CL = scroll direction: 01h up, FFh down, 00h clear window
- Return: AX = error code (0000h if successful)
- SI,DI,DS,ES preserved
- SeeAlso: AH=39h/BL=00h,AX=3901h/BL=07h
- --------r-2F3901BL0A-------------------------
- INT 2F - Kingswood TSR Windows - SOUND BEEPER
- AX = 3901h
- BL = 0Ah
- DX = sound divisor, or 0 for silence.
- (divide 1843200 by required frequency to get value for DX)
- CL = sound length in 18.2 Hz clock ticks
- Return: AX = error code (0000h if successful)
- SI,DI,DS,ES preserved
- SeeAlso: AH=39h/BL=00h
- --------r-2F3901BL0B-------------------------
- INT 2F - Kingswood TSR Windows - ADD OR REMOVE USER
- AX = 3901h
- BL = 0Bh
- CL = number of users increment: +1 if adding a new user
- -1 if removing a user
- Return: AX = error code (0000h if successful)
- SI,DI,DS,ES preserved
- Note: the TSR windows resident module may only be removed when the internal
- user count is zero
- SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h
- --------V-2F3912BL03-------------------------
- INT 2F - Kingswood ANSI display driver - SET COMPATIBILITY MODE
- AX = 3912h
- BL = 03h
- CL = new mode (00h fast, FFh BIOS)
- Return: AL = old compatibility mode
- SI,DI,DS,ES preserved
- SeeAlso: AX=3900h,AX=3912h/BL=04h
- --------V-2F3912BL04-------------------------
- INT 2F - Kingswood ANSI display driver - SET FLAGS
- AX = 3912h
- BL = 04h
- CL = new flags (see #02745)
- Return: AL = old flags
- SI,DI,DS,ES preserved
- SeeAlso: AX=3900h,AX=3912h/BL=03h
- Bitfields for Kingswood ANSI flags:
- Bit(s) Description (Table 02745)
- 0 do not wrap at end of line
- 1 wait for beeps to end before displaying next character
- 2 do not use graphics cursor
- --------W-2F4000-----------------------------
- INT 2F - Windows 3+ (OS/2 2.x???) - GET VIRTUAL DEVICE DRIVER (VDD) CAPABILTIES
- AX = 4000h
- Return: AL = video virtualization (see #02746)
- Note: this function is used by display drivers to find out what capabilities
- exist for the VDD driver and also trigger the VDD driver to call
- functions 4005h and 4006h. This function also gives the Video Driver
- hardware access to the video registers.
- (Table 02746)
- Values for Windows video virtualization:
- 01h does not virtualize video access
- 02h virtualizes the video when in text mode
- 03h virtualizes the video when in text mode or single plane graphics modes
- 04h virtualizes the video when in text mode, single plane graphics modes,
- and VGA multiplane modes
- FFh virtualizes the video fully
- --------O-2F4001-----------------------------
- INT 2F C - OS/2 compatibility box - SWITCHING DOS TO BACKGROUND
- AX = 4001h
- Note: called by OS/2 when the DOS box is about to be placed in the background
- and the video driver should save any necessary state
- SeeAlso: AX=4002h,AX=4005h
- --------O-2F4002-----------------------------
- INT 2F C - OS/2 compatibility box - SWITCHING DOS TO FOREGROUND
- AX = 4002h
- Note: called by OS/2 when the DOS box is about to be placed in the foreground
- and the video driver should restore the previously-saved state
- SeeAlso: AX=4001h,AX=4006h
- --------W-2F4003-----------------------------
- INT 2F - Windows 3.x - ENTERING VIDEO DRIVER CRITICAL SECTION
- AX = 4003h
- Note: This critical section must be exited within 1 second.
- SeeAlso: AX=4004h
- --------W-2F4004-----------------------------
- INT 2F - Windows 3.x - EXITING VIDEO DRIVER CRITICAL SECTION
- AX = 4004h
- SeeAlso: AX=4003h
- --------W-2F4005-----------------------------
- INT 2F C - Windows 3.x - SWITCHING DOS TO BACKGROUND
- AX = 4005h
- Note: called by Windows when the DOS box is about to be placed in the
- background and the video driver should save any necessary state
- information (this may be called only in Standard mode)
- SeeAlso: AX=4001h,AX=4006h
- --------W-2F4006-----------------------------
- INT 2F C - Windows 3.x - SWITCHING DOS TO FOREGROUND
- AX = 4006h
- Note: called by Windows when the DOS box is about to be placed in the
- foreground and the video driver should restore any necessary state
- information (this may be called only in Standard mode)
- SeeAlso: AX=4002h,AX=4005h
- --------W-2F4007-----------------------------
- INT 2F - Windows 3.x - ENABLE VDD TRAPPING OF VIDEO REGISTERS
- AX = 4007h
- Note: used by Windows Standard mode
- --------O-2F4010-----------------------------
- INT 2F - OS/2 v2.0+ - INSTALLATION CHECK / GET VERSION
- AX = 4010h
- Return: AX = 4010h if OS/2 not installed
- AX = 0000h for OS/2 Warp 3.0
- BX = OS/2 version if installed
- Note: OS/2 Warp 3.0
- SeeAlso: INT 21/AH=30h,INT 21/AX=3306h
- --------O-2F4011-----------------------------
- INT 2F - OS/2 - GET VDD API ENTRY POINT
- AX = 4011h
- DS:(E)SI -> ASCIZ name of VDD registered with VDHRegisterAPI
- Return: ES:DI -> breakpoint address to call for VDD API, or 0000h:0000h
- Note: this function may be invoked from either V86 or protected mode, and
- will return the appropriate address to call for invoking the VDD
- in that mode
- SeeAlso: AX=1684h"DEVICE API"
- --------V-2F4021-----------------------------
- INT 2F UC - Diamond Stealth64 Video - STLTH64.VXD - ???
- AX = 4021h
- ???
- Return: ???
- SeeAlso: AX=4022h,AX=4023h
- --------V-2F4022-----------------------------
- INT 2F UC - Diamond Stealth64 Video - STLTH64.VXD - ???
- AX = 4022h
- ???
- Return: ???
- SeeAlso: AX=4021h,AX=4023h
- --------V-2F4023-----------------------------
- INT 2F UC - Diamond Stealth64 Video - STLTH64.VXD - ???
- AX = 4023h
- ???
- Return: ???
- SeeAlso: AX=4021h,AX=4022h
- --------V-2F4027-----------------------------
- INT 2F UC - Diamond Stealth64 Video - DMSSTL.DRV - ???
- AX = 4027h
- ???
- Return: ???
- Notes: called when ???
- a protected-mode handler for this function may be installed with the
- function RFV_HOOKINT2FHANDLER
- SeeAlso: AX=4021h,AX=4022h
- --------E-2F4040-----------------------------
- INT 2F - PharLap 286|DOS-Extender Lite v2.5 - ???
- AX = 4040h
- Return: BX:CX -> ???
- --------N-2F4100-----------------------------
- INT 2F - DOS Enhanced LAN Manager 2.0+ MINIPOP/NETPOPUP - INSTALLATION CHECK
- AX = 4100h
- Return: CF clear if successful
- AL = FFh
- CF set on error
- AX = ???
- Notes: MINIPOP and NETPOPUP provide a network message popup service
- LAN Manager enhanced mode adds features beyond the standard redirector
- file/printer services
- SeeAlso: AX=118Ah,AX=4103h,AX=4104h,AH=42h,AH=4Bh
- --------N-2F4103-----------------------------
- INT 2F - DOS Enhanced LAN Manager 2.0+ MINIPOP/NETPOPUP - ???
- AX = 4103h
- Return: ???
- SeeAlso: AX=4100h,AX=4104h
- --------N-2F4104-----------------------------
- INT 2F - DOS Enhanced LAN Manager 2.0+ MINIPOP/NETPOPUP - ???
- AX = 4104h
- Return: ???
- SeeAlso: AX=4100h,AX=4103h
- --------N-2F42-------------------------------
- INT 2F - LAN Manager 2.0 DOS Enhanced MSRV.EXE - MESSENGER SERVICE
- AH = 42h
- ???
- Return: ???
- Note: LAN Manager enhanced mode adds features beyond the standard redirector
- file/printer services
- SeeAlso: AX=118Ah,AX=4100h,AH=4Bh
- --------m-2F4300-----------------------------
- INT 2F - EXTENDED MEMORY SPECIFICATION (XMS) v2+ - INSTALLATION CHECK
- AX = 4300h
- Return: AL = 80h XMS driver installed
- AL <> 80h no driver
- Notes: XMS gives access to extended memory and noncontiguous/nonEMS memory
- above 640K
- this installation check DOES NOT follow the format used by other
- software
- SeeAlso: AX=4310h,AX=1687h,INT 67/AH=40h,@xxxxh:xxxxh"PMM"
- Index: installation check;XMS version 2+
- --------m-2F4308-----------------------------
- INT 2F U - HIMEM.SYS v2.77+ - GET A20 HANDLER NUMBER
- AX = 4308h
- Return: AL = 43h if supported
- BL = A20 handler number (value of /MACHINE:nn switch)
- BH = AT A20 switch time (00h medium, 01h fast, 02h slow)
- Note: if the A20 handler number returned in BL is 00h, an external handler
- is being used (see AX=4330h)
- SeeAlso: AX=4309h,AX=4330h
- --------m-2F4309-----------------------------
- INT 2F U - HIMEM.SYS v3.09+ - GET XMS HANDLE TABLE
- AX = 4309h
- Return: AL = 43h if function supported
- ES:BX -> XMS handle table (see #02747)
- Note: HIMEM.SYS v3.09 is part of MS-DOS 6.0.
- SeeAlso: AX=4308h
- Format of XMS handle table:
- Offset Size Description (Table 02747)
- 00h BYTE ??? (01h in HIMEM.SYS v3.09)
- 01h BYTE size of one handle descriptor
- 02h WORD number of handles (default = 20h)
- 04h DWORD pointer to XMS handle array (see #02748)
- SeeAlso: #02777
- Format of XMS handle descriptor [array]:
- Offset Size Description (Table 02748)
- 00h BYTE flag
- 01h=free, 02h=used, 04h=in pool but not associated with any EMB
- 01h BYTE lock count (00h=unlocked)
- 02h DWORD address of XMS block in KB (shift left by 10 for abs. address)
- 06h DWORD size of XMS block in KB
- --------m-2F4310-----------------------------
- INT 2F - EXTENDED MEMORY SPECIFICATION (XMS) v2+ - GET DRIVER ADDRESS
- AX = 4310h
- Return: ES:BX -> driver entry point (see #02749,#02750,#02753,#02760,#02769,#02774)
- Notes: HIMEM.SYS v2.77 chains to previous handler if AH is not 00h or 10h
- HIMEM.SYS requires at least 256 bytes free stack space when calling
- the driver entry point
- SeeAlso: AX=4300h,AX=4310h"Cloaking",AX=4310h"Netroom",AX=4310h"XMZ"
- Format of XMS driver entry point:
- Offset Size Description (Table 02749)
- 00h 5 BYTEs jump to actual handler
- either short jump (EBh XXh) followed by three NOPs or
- far jump (EAh XXXX:XXXX) to a program which has hooked itself
- into the XMS driver chain
- Note: to hook into the XMS driver chain, a program should follow the chain of
- far jumps until it reaches the short jump of the driver at the end
- of the chain; this short jump is to be replaced with a far jump to
- the new handler's entry point, which should contain a short jump
- followed by three NOPs. The new handler must return to the address
- pointed at by the short jump which was overwritten. Using this
- method, the new handler becomes the first to see every XMS request.
- (Table 02750)
- Call the XMS driver "Get XMS version number" function with:
- AH = 00h
- Return: AX = XMS version (in BCD, AH=major, AL=minor)
- BX = internal revision number (in BCD for HIMEM.SYS)
- DX = High Memory Area (HMA) state
- 0001h HMA (1M to 1M + 64K) exists
- 0000h HMA does not exist
- SeeAlso: #02751,#02752,#02757,#02758,#02764
- (Table 02751)
- Call the XMS driver "Request High Memory Area" function with:
- AH = 01h
- DX = memory in bytes (for TSR or device drivers)
- FFFFh if application program
- Return: AX = status
- 0001h success
- 0000h failure
- BL = error code (80h,81h,90h,91h,92h) (see #02775)
- Note: HIMEM.SYS will fail function 01h with error code 91h if AL=40h and
- DX=KB free extended memory returned by last call of function 08h
- SeeAlso: #02752,#02784
- (Table 02752)
- Call the XMS driver "Release High Memory Area" function with:
- AH = 02h
- Return: AX = status
- 0001h success
- 0000h failure
- BL = error code (80h,81h,90h,93h) (see #02775)
- SeeAlso: #02751
- (Table 02753)
- Call the XMS driver "Global enable A20, for using the HMA" function with:
- AH = 03h
- Return: AX = status
- 0001h success
- 0000h failure
- BL = error code (80h,81h,82h) (see #02775)
- SeeAlso: #02754,#02755,MSR 00001000h
- (Table 02754)
- Call the XMS driver "Global disable A20" function with:
- AH = 04h
- Return: AX = status
- 0001h success
- 0000h failure
- BL = error code (80h,81h,82h,94h) (see #02775)
- SeeAlso: #02753,#02756,MSR 00001000h
- (Table 02755)
- Call the XMS driver "Local enable A20" function with:
- AH = 05h
- Return: AX = status
- 0001h success
- 0000h failure
- BL = error code (80h,81h,82h) (see #02775)
- Note: this function is used for direct access to extended memory
- SeeAlso: #02753,#02756
- (Table 02756)
- Call the XMS driver "Local disable A20" function with:
- AH = 06h
- Return: AX = status
- 0001h success
- 0000h failure
- BL = error code (80h,81h,82h,94h) (see #02775)
- SeeAlso: #02754,#02755
- (Table 02757)
- Call the XMS driver "Query A20 state" function with:
- AH = 07h
- Return: AX = status
- 0001h enabled
- 0000h disabled
- BL = error code (00h,80h,81h) (see #02775)
- SeeAlso: #02750,#02758
- (Table 02758)
- Call the XMS driver "Query free extended memory" function with:
- AH = 08h
- BL = 00h (some implementations leave BL unchanged on success)
- Return: AX = size of largest extended memory block in KB
- DX = total extended memory in KB
- BL = error code (00h,80h,81h,A0h) (see #02775)
- Note: this function does not include the HMA in the returned memory sizes
- SeeAlso: #02750,#02757,#02759,#02771
- (Table 02759)
- Call the XMS driver "Allocate extended memory block" function with:
- AH = 09h
- DX = Kbytes needed
- Return: AX = status
- 0001h success
- DX = handle for memory block
- 0000h failure
- BL = error code (80h,81h,A0h) (see #02775)
- SeeAlso: #02758,#02761,#02764,#02765,#02766,#02772
- (Table 02760)
- Call the XMS driver "Free extended memory block" function with:
- AH = 0Ah
- DX = handle of block to free
- Return: AX = status
- 0001h success
- 0000h failure
- BL = error code (80h,81h,A2h,ABh) (see #02775)
- SeeAlso: #02759,#02772
- (Table 02761)
- Call the XMS driver "Move extended memory block" function with:
- AH = 0Bh
- DS:SI -> EMM structure (see #02776)
- Return: AX = status
- 0001h success
- 0000h failure
- BL = error code (80h-82h,A3h-A9h) (see #02775)
- Note: if either handle in the EMM structure is 0000h, the corresponding
- offset is considered to be an absolute segment:offset address in
- directly addressable memory
- SeeAlso: #02759,#02762
- (Table 02762)
- Call the XMS driver "Lock extended memory block" function with:
- AH = 0Ch
- DX = handle of block to lock
- Return: AX = status
- 0001h success
- DX:BX = 32-bit physical address of locked block
- 0000h failure
- BL = error code (80h,81h,A2h,ACh,ADh) (see #02775)
- Note: MS Windows 3.x rejects this function for handles allocated after
- Windows started
- SeeAlso: #02759,#02761,#02763,#02777
- (Table 02763)
- Call the XMS driver "Unlock extended memory block" function with:
- AH = 0Dh
- DX = handle of block to unlock
- Return: AX = status
- 0001h success
- 0000h failure
- BL = error code (80h,81h,A2h,AAh) (see #02775)
- SeeAlso: #02762
- (Table 02764)
- Call the XMS driver "Get handle information" function with:
- AH = 0Eh
- DX = handle for which to get info
- Return: AX = status
- 0001h success
- BH = block's lock count
- BL = number of free handles left
- DX = block size in KB
- 0000h failure
- BL = error code (80h,81h,A2h) (see #02775)
- BUG: MS Windows 3.10 acts as though unallocated handles are in use
- Note: MS Windows 3.00 has problems with this call
- SeeAlso: #02750,#02759,#02773
- (Table 02765)
- Call the XMS driver "Reallocate extended memory block" function with:
- AH = 0Fh
- DX = handle of block
- BX = new size of block in KB
- Return: AX = status
- 0001h success
- 0000h failure
- BL = error code (80h,81h,A0h-A2h,ABh) (see #02775)
- SeeAlso: #02759,#02768
- (Table 02766)
- Call the XMS driver "Request upper memory block" function with:
- AH = 10h
- DX = size of block in paragraphs
- Return: AX = status
- 0001h success
- BX = segment address of UMB
- DX = actual size of block
- 0000h failure
- BL = error code (80h,B0h,B1h) (see #02775)
- DX = largest available block
- Notes: Upper Memory consists of non-EMS memory between 640K and 1024K
- the XMS driver need not implement functions 10h through 12h to be
- considered compliant with the standard
- under DOS 5+, if CONFIG.SYS contains the line DOS=UMB, then no upper
- memory blocks will be available for allocation because all blocks
- have been grabbed by MS-DOS while booting
- SeeAlso: #02759,#02767,#02785,INT 21/AH=58h"UMB"
- (Table 02767)
- Call the XMS driver "Release upper memory block" function with:
- AH = 11h
- DX = segment address of UMB to release
- Return: AX = status
- 0001h success
- 0000h failure
- BL = error code (80h,B2h) (see #02775)
- Note: the XMS driver need not implement functions 10h through 12h to be
- considered compliant with the standard
- SeeAlso: #02760,#02766,#02768
- (Table 02768)
- Call the XMS v3.0+ driver "Reallocate upper memory block" function with:
- AH = 12h
- DX = segment address of UMB to resize
- BX = new size of block in paragraphs
- Return: AX = status
- 0001h success
- 0000h failure
- BL = error code (80h,B0h,B2h) (see #02775)
- DX = maximum available size (RM386)
- Note: the XMS driver need not implement functions 10h through 12h to be
- considered compliant with the standard
- SeeAlso: #02765,#02766,#02767,#02783
- (Table 02769)
- Call the QEMM v5.11 "???" function with:
- AH = 34h (QEMM 5.11 only, undocumented)
- ???
- Return: ???
- SeeAlso: #02770
- (Table 02770)
- Call the QEMM v5.11 "???" function with:
- AH = 44h (QEMM 5.11 only, undocumented)
- ???
- Return: ???
- SeeAlso: #02769,#02783
- (Table 02771)
- Call the XMS v3.0 driver "Query free extended memory" function with:
- AH = 88h
- Return: EAX = largest block of extended memory, in KB
- BL = status (00h,80h,81h,A0h) (see #02775)
- ECX = physical address of highest byte of memory
- (valid even on error codes 81h and A0h)
- EDX = total Kbytes of extended memory (0 if status A0h)
- BUG: HIMEM v3.03-3.07 crash on an 80286 machine if any of the 8Xh functions
- are called
- SeeAlso: #02758,#02772
- (Table 02772)
- Call the XMS v3.0 driver "Allocate any extended memory" function with:
- AH = 89h
- EDX = Kbytes needed
- Return: AX = status
- 0001h success
- DX = handle for allocated block (free with AH=0Ah) (see #02760)
- 0000h failure
- BL = status (80h,81h,A0h,A1h,A2h) (see #02775)
- SeeAlso: #02759,#02771
- (Table 02773)
- Call the XMS v3.0 driver "Get extended EMB handle information" function with:
- AH = 8Eh
- DX = handle
- Return: AX = status
- 0001h success
- BH = block's lock count
- CX = number of free handles left
- EDX = block size in KB
- 0000h failure
- BL = status (80h,81h,A2h) (see #02775)
- BUG: MS-DOS 6.0 HIMEM.SYS leaves CX unchanged
- SeeAlso: #02764,#02772,#02774
- (Table 02774)
- Call the XMS v3.0 driver "Reallocate any extended memory block" function with:
- AH = 8Fh
- DX = unlocked memory block handle
- EBX = new size in KB
- Return: AX = status
- 0001h success
- 0000h failure
- BL = status (80h,81h,A0h-A2h,ABh) (see #02775)
- BUG: HIMEM v3.03-3.07 crash on an 80286 machine if any of the 8Xh functions
- are called
- SeeAlso: #02765,#02773
- (Table 02775)
- Values for XMS error code returned in BL:
- 00h successful
- 80h function not implemented
- 81h Vdisk was detected
- 82h an A20 error occurred
- 8Eh a general driver error
- 8Fh unrecoverable driver error
- 90h HMA does not exist or is not managed by XMS provider
- 91h HMA is already in use
- 92h DX is less than the /HMAMIN= parameter
- 93h HMA is not allocated
- 94h A20 line still enabled
- A0h all extended memory is allocated
- A1h all available extended memory handles are allocated
- A2h invalid handle
- A3h source handle is invalid
- A4h source offset is invalid
- A5h destination handle is invalid
- A6h destination offset is invalid
- A7h length is invalid
- A8h move has an invalid overlap
- A9h parity error occurred
- AAh block is not locked
- ABh block is locked
- ACh block lock count overflowed
- ADh lock failed
- B0h only a smaller UMB is available
- B1h no UMB's are available
- B2h UMB segment number is invalid
- Format of EMM structure:
- Offset Size Description (Table 02776)
- 00h DWORD number of bytes to move (must be even)
- 04h WORD source handle
- 06h DWORD offset into source block
- 0Ah WORD destination handle
- 0Ch DWORD offset into destination block
- Notes: if source and destination overlap, only forward moves (source base
- less than destination base) are guaranteed to work properly
- if either handle is zero, the corresponding offset is interpreted
- as a real-mode address referring to memory directly addressable
- by the processor
- Format of XMS handle info [array]:
- Offset Size Description (Table 02777)
- 00h BYTE handle
- 01h BYTE lock count
- 02h DWORD handle size
- 06h DWORD handle physical address (only valid if lock count nonzero)
- SeeAlso: #02747,#02762
- --------m-2F4310-----------------------------
- INT 2F - Cloaking - REAL-MODE API
- AX = 4310h
- Return: ES:BX -> driver entry point (see #02749,#02778,#02779,#02780,#02781)
- SeeAlso: AX=4310h"XMS"
- (Table 02778)
- Call the Cloaking v1.01 "Client Registration" function with:
- AH = 7Eh
- BX = subfunction
- 0000h get client registration count
- 0001h get client registration structures
- ES:DI -> buffer for registration structures
- Return: AX = status
- 0000h failed
- 0001h successful
- ---subfunction 00h---
- BX = size of client structure in bytes
- CX = number of clients installed
- ---subfunction 01h---
- ES:DI buffer filled
- SeeAlso: #02779,#02781,INT 2C/AX=0033h
- (Table 02779)
- Call the Cloaking v1.01 "Verify Cloaking Host" function with:
- AH = 7Fh
- Return: AX = status
- 0000h failed
- 0001h (successful) if installed
- BX = version (0101h for v1.01)
- CX = flags
- bit 0: host is VCPI-based
- DS:DX -> ASCIZ Cloaking host signature
- "CLOAKING.EXE"0, followed by a far-call entry point to
- uninstall host (see #02780) in Helix's CLOAKING.EXE
- SeeAlso: #02778,#02781
- Index: installation check;Cloaking host|installation check;CLOAKING.EXE
- (Table 02780)
- Call the CLOAKING.EXE "Uninstall Host" function with:
- Return: AX = 4F4Bh ('OK') if successfully uninstalled protected-mode code
- (Table 02781)
- Call the Cloaking "Start Protected-Mode Client" function with:
- AH = 82h
- DX = XMS handle of locked block containing protected-mode code
- CL = code size (00h 16-bit, else 32-bit)
- ESI, EDI = parameters to pass to protected-mode code
- Return: AX = status
- nonzero success
- 0000h failed
- BL = error code (A2h,B0h) (see #02775)
- Notes: this function calls a user initialization function at offset 0 in
- the XMS memory block (see #02782)
- supported by Helix's RM386 v6.00 and Helix's CLOAKING.EXE
- SeeAlso: #02778,#02779
- (Table 02782)
- Values user initialization function is called with:
- EBX = physical address of block's start
- ESI = user data from function 82h call
- EDI = user data from function 82h call
- CS = code selector for XMS block at EBX (16-bit or 32-bit)
- DS = data selector for XMS block, starting at EBX
- ES = selector for V86 memory access to full real-mode 1088K
- GS = selector for full 4G flat address space
- SS:ESP -> stack provided by host
- Return: via 32-bit FAR return
- Note: the initialization function may call any protected-mode Cloaking
- service; it should store the values of DS, ES, and GS for future
- reference
- --------m-2F4310-----------------------------
- INT 2F - Helix Netroom RM386 v6.00 - XMS EXTENSIONS
- AX = 4310h
- Return: ES:BX -> driver entry point (see #02783,#02784,#02785,#02786)
- Notes: HIMEM.SYS v2.77 chains to previous handler if AH is not 00h or 10h
- HIMEM.SYS requires at least 256 bytes free stack space when calling
- the driver entry point
- SeeAlso: AX=4300h,AX=4310h"XMS",AX=4310h"Cloaking"
- (Table 02783)
- Call the Netroom RM386 v6.00 "Reallocate upper memory block" function with:
- AH = 80h
- DX = segment address of UMB to resize
- BX = new size of block in paragraphs
- Return: AX = status
- 0001h success
- 0000h failure
- BL = error code (80h,B0h,B2h) (see #02775)
- DX = maximum available size
- Note: this function is identical to function 12h
- SeeAlso: #02768,#02784
- (Table 02784)
- Call the Netroom RM386 v6.00 "re-enable HMA allocation" function with:
- AH = 81h
- Return: AX = 0001h (success)
- SeeAlso: #02751,#02783,#02785
- (Table 02785)
- Call the Netroom RM386 v6.00 "Create new UMB entry" function with:
- AH = 83h
- BX = segment of high-memory block
- DX = first page of start of block
- CX = number of consecutive pages in block
- DI = start of UMB in block
- Return: AX = 0001h (success)
- DI = segment of first high-DOS block
- Note: the new UMB is not linked into the high-memory chain
- SeeAlso: #02766,#02784,#02786
- (Table 02786)
- Call the Netroom RM386 v6.00 "Get all XMS handles info" function with:
- AH = 84h
- CX = size of buffer for handle info
- ES:DI -> buffer for handle info (see #02777)
- Return: AX = 0001h (success)
- DX = current number of allocated XMS handles
- SeeAlso: #02785,#02771
- --------m-2F4310-----------------------------
- INT 2F - NEC PC-9800 - XMZ - PRIVATE API
- AX = 4310h
- Return: ES:BX -> driver entry point (see #02787,#02788)
- Program: XMZ is an XMS 2.x-compatible driver for the NEC PC-98 series written
- by ZOBplus Hayami and available at
- ftp:/ftp.tohoku.ac.jp/pub/msdos/Memory/xmz/
- SeeAlso: AX=4300h,AX=4310h"XMS"
- (Table 02787)
- Call XMZ v1.02 "Get HMA Information" function with:
- AH = FFh (XMZ only)
- AL = 01h
- Return: AX = 1 on success
- DX = minimum HMA allocation size (/HMAMIN=)
- BX = actual size of HMA allocation, if in use (i.e. the value in DX
- when XMS function 1 was called)
- SeeAlso: #02788
- (Table 02788)
- Call XMZ v1.02 "Get EMB Handle Information" function with:
- AH = FFh (XMZ only)
- AL = 02h
- Return: AX = 1 on success
- DX = number of EMB handles configured (/NUMHANDLES=)
- BX = offset in XMZ's segment of the handle table (use segment of
- entry point) (see #02789)
- SeeAlso: #02787
- Format of XMZ v1.02 EMB Handle structure:
- Offset Size Description (Table 02789)
- 00h BYTE flag byte
- 04h unused handle slot
- 02h in-use handle slot
- 01h handle slot that represents a free block
- 01h BYTE lock count
- 02h WORD block start address (1K increments)
- 04h WORD block length (1K increments)
- SeeAlso: #02788
- --------m-2F4320-----------------------------
- INT 2F U - HIMEM.SYS - Mach 20 SUPPORT
- AX = 4320h
- ???
- Return: ???
- --------m-2F4330-----------------------------
- INT 2F CU - HIMEM.SYS v2.77+ - GET EXTERNAL A20 HANDLER ADDRESS
- AX = 4330h
- Return: AL = 80h if external A20 handler provided
- ES:BX -> external A20 handler (see #02790)
- CL = A20 detection support
- 00h handler is unable to report A20 state
- 01h handler supports function 0002h to report A20 state
- Note: HIMEM.SYS calls this function to allow an external program to provide
- an A20 handler (i.e. to support a machine not supported by HIMEM
- itself)
- SeeAlso: AX=4308h,AX=4310h
- (Table 02790)
- Call parameters for external A20 handler are:
- AX = function
- 0000h disable A20
- 0001h enable A20
- 0002h get A20 state
- Return: AX = status (functions 0000h and 0001h)
- 0000h failure
- 0001h successful
- AX = A20 state (function 0002h)
- 0000h disabled
- 0001h enabled
- Note: HIMEM.SYS only calls function 0002h if the returned CL indicated that
- the handler supports the call
- ----------2F43D6-----------------------------
- INT 2F - Multiplex - ???
- AX = 43D6h
- Note: Central Point's CPBACKUP v9 calls this function with CX=07FFh and
- DX=80D3h at startup
- --------E-2F43E0BX0000-----------------------
- INT 2F - DOS Protected Mode Services (DPMS) v1.0 - INSTALLATION CHECK
- AX = 43E0h
- BX = 0000h
- CX = 4450h ('DP')
- DX = 4D53h ('MS')
- Return: AX = 0000h if installed
- CF clear
- ES:DI -> server structure (see #02791)
- ES:BX -> registration structure (pre-NWDOS 7 beta spec) (see #02793)
- Note: the DPMS 1.0 server included with the original release of Novell DOS
- 7.0 supports both the beta and 1.0 specification, setting ES:BX even
- if CX and DX are not as specified on entry (since the beta
- specification did not use those registers). However, the DPMS 1.1
- server included with the March 1994 update does not support the beta
- specification
- SeeAlso: AX=43E1h,AX=43E2h,AX=43E3h,INT 2F/AX=1687h
- Index: signature strings;DPMS
- Format of DPMS 1.0 server structure:
- Offset Size Description (Table 02791)
- 00h 4 BYTEs signature string "DPMS"
- 04h 2 BYTEs DPMS version (major,minor)
- 06h 8 BYTEs blank-padded server OEM name
- 0Eh 2 BYTEs OEM server version (major,minor)
- 10h WORD DPMS flags (see #02792)
- 12h BYTE CPU type
- (02h = 286, 03h = 386 or higher, higher values allowed)
- Bitfields for DPMS flags:
- Bit(s) Description (Table 02792)
- 0 fast processor reset available (286 only)
- 1 DPMS server is enabled
- 2 memory is remapped
- 3-15 reserved (undefined)
- Format of beta DPMS registration structure:
- Offset Size Description (Table 02793)
- 00h DWORD real-mode API entry point (see #02795)
- 04h DWORD 16-bit protected-mode API entry point (see #02795)
- 08h 8 BYTEs reserved (0)
- 10h 8 BYTEs blank-padded server OEM name
- 18h WORD flags
- bit 0: fast processor reset available (286 only)
- bits 1-15 reserved (undefined)
- 1Ah 2 BYTEs DPMS version (major,minor)
- 1Ch BYTE CPU type (02h = 286, 03h = 386 or higher)
- --------m-2F43E1-----------------------------
- INT 2F - DOS Protected Mode Services (DPMS) v1.0 - REGISTER CLIENT
- AX = 43E1h
- CX = required protected-mode stack size in bytes
- ES:DI -> DPMS client interface structure (see #02794)
- Return: AX = 0000h if supported
- CF clear
- ES:DI buffer filled with API entry point code from offset 0Ah
- Note: the client is allowed to copy the returned API code to any location in
- memory, and need not keep the three code fields together
- SeeAlso: AX=43E0h,AX=43E2h,AX=43E3h
- Format of DPMS client interface structure:
- Offset Size Description (Table 02794)
- 00h WORD 0000h (structure version / flags)
- 02h 8 BYTEs blank-padded client name
- 0Ah 7 BYTEs real/virtual-86 mode API code (see #02795)
- 11h BYTE space for return instruction
- set to C3h for near return, CBh for far return
- 12h 7 BYTEs 16-bit protected-mode API code (see #02795)
- 19h BYTE space for return instruction
- set to C3h for near return, CBh for far return
- 1Ah 9 BYTEs 32-bit protected-mode API code (see #02795)
- 23h BYTE space for return instruction
- set to C3h for near return, CBh for far return
- Note: the DPMS server fills the return opcode bytes with zeros and DPMS
- requests will thus crash the system unless the application
- explicitly sets them (some early versions set them to C3h by
- default, but one should not rely on that)
- (Table 02795)
- Call DPMS entry point with:
- AX = 0000h unregister client from server
- ---control transfer functions---
- AX = 0100h call protected-mode procedure
- CX = number of words of stack to copy
- ES:(E)DI -> callup/down register structure (see #02797)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02796)
- AX = 0101h call real-mode procedure (RETF return)
- CX = number of words of stack to copy
- ES:(E)DI -> callup/down register structure (see #02797)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02796)
- AX = 0102h call real-mode procedure (IRET return)
- CX = number of words of stack to copy
- ES:(E)DI -> callup/down register structure (see #02797)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02796)
- AX = 0103h call real-mode interrupt handler
- BL = interrupt number
- CX = number of words of stack to copy
- ES:(E)DI -> callup/down register structure (see #02797)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02796)
- AX = 0104h register default protected mode procedure
- ES:(E)DI -> default register structure (see #02798)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02796)
- AX = 0105h register default real-mode procedure (RETF return)
- ES:(E)DI -> default register structure (see #02798)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02796)
- Note: the procedure will be called from 16-bit prot. mode
- AX = 0106h register default real-mode procedure (IRET return)
- ES:(E)DI -> default register structure (see #02798)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02796)
- Note: the procedure will be called from 16-bit prot. mode
- AX = 0107h register default real-mode interrupt handler
- BL = interrupt number
- ES:(E)DI -> default register structure (see #02798)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02796)
- Note: the handler will be called from 16-bit protected mode
- AX = 0108h register default real-mode procedure (RETF return)
- ES:(E)DI -> default register structure (see #02798)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02796)
- Note: the procedure will be called from 32-bit prot. mode
- AX = 0109h register default real-mode procedure (IRET return)
- ES:(E)DI -> default register structure (see #02798)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02796)
- Note: the procedure will be called from 32-bit prot. mode
- AX = 010Ah register default real-mode interrupt handler
- BL = interrupt number
- ES:(E)DI -> default register structure (see #02798)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02796)
- Note: the handler will be called from 32-bit protected mode
- ---descriptor management---
- AX = 0200h allocate descriptors
- CX = number of descriptors to allocate
- Return: CF clear if successful
- AX = selector for first descriptor allocated
- CF set on error
- AX = error code (see #02796)
- AX = 0201h free a descriptor
- BX = selector for descriptor
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02796)
- AX = 0202h create alias descriptor
- BX = selector for descriptor to be aliased
- Return: CF clear if successful
- AX = alias descriptor
- CF set on error
- AX = error code (see #02796)
- AX = 0203h build alias to real-mode segment
- BX = descriptor
- CX = real-mode segment
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02796)
- AX = 0204h set descriptor base
- BX = descriptor
- CX:DX = base address
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02796)
- AX = 0205h set descriptor limit
- BX = descriptor
- CX = limit
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02796)
- AX = 0206h set descriptor type/attribute
- BX = descriptor
- CL = type
- CH = attribute
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02796)
- AX = 0207h get descriptor base
- BX = descriptor
- Return: CF clear if successful
- CX:DX = base address
- CF set on error
- AX = error code (see #02796)
- ---linear memory functions---
- AX = 0300h get size of largest free block of memory
- Return: CF clear if successful
- BX:CX = size
- CF set on error
- AX = error code (see #02796)
- AX = 0301h allocate block of extended memory
- BX:CX = required size
- Return: CF clear if successful
- BX:CX = base address
- SI:DI = handle
- CF set on error
- AX = error code (see #02796)
- AX = 0302h free block of extended memory
- SI:DI = handle
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02796)
- AX = 0303h map linear memory
- ES:(E)DI -> DDS (see #02799)
- Return: CF clear if successful
- BX:CX = base address
- SI:DI = handle
- CF set on error
- AX = error code (see #02796)
- AX = 0304h unmap linear memory
- SI:DI = handle
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02796)
- AX = 0305h get page table entries
- ESI = linear address
- (E)CX = count
- ES:(E)DI -> buffer for page table entries
- Return: CF clear if successful
- ES:(E)DI buffer filled
- CF set on error
- AX = error code (see #02796)
- AX = 0306h set page table entries
- EBX = linear memory handle
- ESI = linear address
- (E)CX = count
- ES:(E)DI -> buffer containing page table entries
- Return: CF clear if successful
- CF set on error
- AX = error code (see #02796)
- AX = 0307h get largest mappable block size
- Return: CF clear if successful
- BX:CX = size
- CF set on error
- AX = error code (see #02796)
- ---miscellaneous---
- AX = 0400h relocate segment to extended memory
- ES:SI = base address
- CX = limit
- BL = type
- BH = attribute
- DX = selector or 0000h
- Return: CF clear if successful
- AX = selector
- BX:CX = new base address
- SI:DI = handle
- CF set on error
- AX = error code (see #02796)
- Note: the beta DPMS specification, which is still supported by the Novell
- DOS 7.0 DPMS host, only supported functions 0100h-0103h, 0200h-0207h,
- 0300h-0304h, and 0400h
- (Table 02796)
- Values for DPMS error code:
- 8000h general error
- 8001h unsupported function
- 8002h unable to switch to protected mode
- 8004h no default stack defined
- 8005h unknown client
- 8010h resource unavailable
- 8011h descriptor unavailable
- 8012h linear memory unavailable
- 8013h physical memory unavailable
- 8021h invalid value
- 8022h invalid selector
- 8023h invalid handle
- 8025h invalid linear address
- Format of DPMS callup/down register structure:
- Offset Size Description (Table 02797)
- 00h DWORD EDI
- 04h DWORD ESI
- 08h DWORD EBP
- 0Ch 4 BYTEs reserved (0) (ESP, may be used by DPMS server)
- 10h DWORD EBX
- 14h DWORD EDX
- 18h DWORD ECX
- 20h DWORD EAX
- 24h DWORD EIP
- 28h WORD CS
- 2Ah 2 BYTEs reserved (0)
- 2Ch DWORD EFLAGS
- 30h DWORD ESP
- 34h WORD SS
- 36h 2 BYTEs reserved (0)
- 38h WORD ES
- 3Ah 2 BYTEs reserved (0)
- 3Ch WORD DS
- 3Eh 2 BYTEs reserved (0)
- 40h WORD FS
- 42h 2 BYTEs reserved (0)
- 44h WORD GS
- 46h 2 BYTEs reserved (0)
- Format of DPMS default register structure:
- Offset Size Description (Table 02798)
- 00h DWORD EIP
- 04h WORD CS
- 06h 2 BYTEs reserved (0)
- 08h WORD number of words to copy from stack to stack
- 0Ah BYTE (call) 00h
- (ret) nonzero if call could not be made
- 0Bh BYTE reserved (may be used by some servers)
- 0Ch DWORD ESP
- 10h WORD SS
- 12h 2 BYTEs reserved (0)
- 14h WORD ES
- 16h 2 BYTEs reserved (0)
- 18h WORD DS
- 1Ah 2 BYTEs reserved (0)
- 1Ch WORD FS
- 1Eh 2 BYTEs reserved (0)
- 20h WORD GS
- 22h 2 BYTEs reserved (0)
- 24h 9 BYTEs API entry code (filled in by server)
- Format of DPMS lock DDS:
- Offset Size Description (Table 02799)
- 00h DWORD total size in bytes
- 04h DWORD offset
- 08h WORD segment or selector
- 0Ah WORD reserved
- 0Ch WORD maximum number of physical blocks structure has space for
- 0Eh WORD number of physical blocks listed
- 10h DWORD physical address of first block
- 14h DWORD size in bytes of first block
- ...
- --------m-2F43E2-----------------------------
- INT 2F - DOS Protected Mode Services (DPMS) v1.0 - ENABLE/DISABLE DPMS
- AX = 43E2h
- BX = new state (0000h disable, 0001h enable)
- Return: AX = 0000h if supported
- Note: this function should normally be called only by system software
- SeeAlso: AX=43E0h,AX=43E1h,AX=43E3h
- --------m-2F43E3BX0000-----------------------
- INT 2F C - DOS Protected Mode Services (DPMS) v1.0 - DPMS STARTUP BROADCAST
- AX = 43E3h
- BX = 0000h
- CX = 4450h ('DP')
- DX = 4D53h ('MS')
- ES:DI -> DPMS server structure (see #02791)
- Return: BX = status
- bit 0 set if server is not allowed to load (e.g. some resident
- program is incompatible)
- Note: this callout is made while the potential server is running as a normal
- real-mode DOS program, so there are no BIOS/DOS re-entrancy issues
- SeeAlso: AX=43E0h,AX=43E4h
- --------m-2F43E4BX0000-----------------------
- INT 2F C - DOS Protected Mode Services (DPMS) v1.0 - DPMS EXIT BROADCAST
- AX = 43E4h
- BX = 0000h
- CX = 4450h ('DP')
- DX = 4D53h ('MS')
- Return: BX = status
- bit 0 set if server is not allowed to unload
- Note: servers never unload until all clients unregister
- SeeAlso: AX=43E0h,AX=43E3h
- --------E-2F44-------------------------------
- INT 2F U - DOS Extender support???
- AH = 44h
- AL = function (at least 0Bh, 15h, 17h)
- ???
- Return: ???
- Note: called by Codeview for Windows
- SeeAlso: AH=86h
- --------G-2F4500-----------------------------
- INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - INSTALLATION CHECK
- AX = 4500h
- Return: AL = installation status
- 01h if PROF.COM installed
- 02h if VPROD.386 installed
- SeeAlso: AX=4501h,AX=4502h
- --------G-2F4501-----------------------------
- INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - SETUP PROFILER
- AX = 4501h
- BX = CSIPS buffer size in KB (first parameter for ProfSetup)
- CX = output limit in KB (second parameter for ProfSetup)
- Note: this call is not supported by PROF.COM
- SeeAlso: AX=4502h,AX=4503h
- --------G-2F4502-----------------------------
- INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - SET SAMPLING RATE
- AX = 4502h
- BL = sampling rate for PROF.COM (0 < BL <= 13)
- (01h = 8192/s, 04h = 1024/s, 08h = 32/s, 0Dh = 1/s)
- CX = sampling rate for VPROD.386
- Note: for PROF.COM, this programs the CMOS clock by setting BL+2 as the
- low four bits of CMOS register 0Ah. The interruption rate is
- 1 SHL (15 - BL) per second.
- SeeAlso: AX=4501h,AX=4503h
- --------G-2F4503-----------------------------
- INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - START PROFILING
- AX = 4503h
- Notes: Profiling is also turned on by the key combinations
- LeftShift + RightShift + Alt and LeftShift + RightShift + Ctrl
- for PROF.COM, this call programs the CMOS clock by reading register
- 0Ch, and setting bit 6 of register 0Bh. It then makes sure that IRQ8
- is unmasked
- SeeAlso: AX=4504h
- --------G-2F4504-----------------------------
- INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - STOP PROFILING
- AX = 4504h
- Notes: profiling is also turned off by the key combination
- LeftShift + RightShift
- for PROF.COM, this programs the CMOS clock by reading register 0Ch
- and clearing bit 6 of register 0Bh. It then masks IRQ8.
- SeeAlso: AX=4503h,AX=4505h,AX=4506h,AX=4507h
- --------G-2F4505-----------------------------
- INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - CLEAR PROFILING DATA
- AX = 4505h
- SeeAlso: AX=4503h,AX=4504h,AX=4506h
- --------G-2F4506-----------------------------
- INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - "ProfFlush"
- AX = 4506h
- SeeAlso: AX=4505h,AX=4507h
- --------G-2F4507-----------------------------
- INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - "ProfFinish"
- AX = 4507h
- Note: this call is essentially a "ProfStop" (AX=4504h) followed by
- "ProfFlush" (AX=4506h)
- SeeAlso: AX=4504h,AX=4505h,AX=4506h
- --------G-2F4508-----------------------------
- INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - ALTERNATE SEGDEBUG IFACE
- AX = 4508h
- BX = ordinal (or 0000h)
- CX = segment
- DX = instance (or 0000h)
- SI = type (or 0000h)
- ES:DI -> ASCIZ module name
- Notes: this call is an alternate entry to the profiler's SEGDEBUG
- interface, but only to function 0, for notifying the profiler of
- each new segment loaded. The SHOWHITS utility then examines the
- profiler's output files (CSIPS.DAT and SEGENTRY.DAT) in conjunction
- with symbol files to provide information in a useful form.
- this call does not have a corresponding Windows function
- SeeAlso: AX=4500h
- --------D-2F4601-----------------------------
- INT 2F CU - MS Windows WINOLDAP - SWITCHING ???
- AX = 4601h
- Return: ???
- Note: the DOS 5+ kernel intercepts this function and copies the MCB
- following the caller's PSP memory block into the DOS data segment;
- in conjunction with AX=4602h, this intercept is used by DOS to
- avoid corruption of the Windows real-mode heap's end sentinel
- SeeAlso: AX=1700h,AX=4602h
- --------D-2F4602-----------------------------
- INT 2F CU - MS Windows WINOLDAP - SWITCHING ???
- AX = 4602h
- Return: ???
- Note: the DOS 5+ kernel intercepts this function and copies the
- previously-saved MCB from the DOS data segment into the MCB following
- the caller's PSP memory block; in conjunction with AX=4601h, this
- intercept is used by DOS to avoid corruption of the Windows real-mode
- heap's end sentinel
- SeeAlso: AX=1700h,AX=4601h
- --------E-2F46-------------------------------
- INT 2F U - Windows/286 DOS Extender
- AH = 46h
- AL = subfunction (03h,04h)
- Return: ???
- Note: these two subfunctions are called by MS Windows 3.0
- --------v-2F4653CX0002-----------------------
- INT 2F - F-PROT v1.x only - F-LOCK.EXE - API
- AX = 4653h ('FS')
- CX = 0002h
- BX = subfunction
- 0000h installation check
- Return: AX = FFFFh
- 0001h uninstall
- Return: AX,BX,ES destroyed
- 0002h disable (v1.08 and below only)
- 0003h enable (v1.08 and below only)
- Program: F-LOCK is part of the shareware F-PROT virus/trojan protection
- package by Fridrik Skulason
- SeeAlso: AX=4653h/CX=0003h,AX=CA00h,INT 21/AX=4BEEh
- Index: installation check;F-LOCK|uninstall;F-LOCK
- --------v-2F4653CX0003-----------------------
- INT 2F - F-PROT v1.x only - F-XCHK.EXE - API
- AX = 4653h ('FS')
- CX = 0003h
- BX = subfunction
- 0000h installation check
- Return: AX = FFFFh
- 0001h uninstall
- Return: AX,BX,ES destroyed
- Program: F-XCHK is part of the shareware F-PROT virus/trojan protection
- package by Fridrik Skulason
- SeeAlso: AX=4653h/CX=0002h,AX=4653h/CX=0004h,AX=CA00h
- Index: installation check;F-XCHK|uninstall;F-XCHK
- --------v-2F4653CX0004-----------------------
- INT 2F - F-PROT v1.x only - F-POPUP.EXE - API
- AX = 4653h ('FS')
- CX = 0004h
- BX = subfunction
- 0000h installation check
- Return: AX = FFFFh
- 0001h uninstall
- Return: AX,BX,ES destroyed
- 0002h disable (v1.08 and below only)
- display message (v1.14+)
- other registers: ???
- 0003h enable (v1.08 and below only)
- display message (v1.14+)
- other registers: ???
- Return: AX = key pressed by user
- Program: F-POPUP is part of the shareware F-PROT virus/trojan protection
- package by Fridrik Skulason
- SeeAlso: AX=4653h/CX=0003h,AX=4653h/CX=0005h,AX=CA00h
- Index: installation check;F-POPUP|uninstall;F-POPUP
- --------v-2F4653CX0005-----------------------
- INT 2F - F-PROT v1.x only - F-DLOCK.EXE - API
- AX = 4653h ('FS')
- CX = 0005h
- BX = subfunction
- 0000h installation check
- Return: AX = FFFFh
- 0001h uninstall
- Return: AX,BX,ES destroyed
- Program: F-DLOCK is part of the shareware F-PROT virus/trojan protection
- package by Fridrik Skulason
- SeeAlso: AX=4653h/CX=0004h,AX=CA00h
- Index: installation check;F-DLOCK|uninstall;F-DLOCK
- ----------2F4653CX0007-----------------------
- INT 2F - F-PROT v2.x - VIRSTOP - ENABLE/DISABLE BOOTSECTOR READ CHECKING
- AX = 4653h ('FS')
- CX = 0007h
- BL = new state of bootsector checking (01h = disabled)
- Program: VIRSTOP is the resident virus-checker from Fridrik Skulason's F-PROT
- virus/trojan protection package
- ----------2F4653CX0008-----------------------
- INT 2F - F-PROT v2.x - ???
- AX = 4653h ('FS')
- CX = 0008h
- ???
- Return: ???
- Note: called by F-PROT v2.x VIRSTOP
- ----------2F4653CX0008-----------------------
- INT 2F - F-PROT v2.x - VIRSTOP - INSTALLATION CHECK
- AX = 4653h ('FS')
- CX = 0008h
- Return: AX = 5346h if installed
- BX = version???
- DS:SI -> ASCIZ name of file containing virus signatures
- DS:DI -> 80-byte buffer for ???
- --------W-2F4680-----------------------------
- INT 2F U - MS Windows v3.0 - INSTALLATION CHECK
- AX = 4680h
- Return: AX = result
- 0000h MS Windows 3.0 running in real (/R) or standard (/S) mode,
- or DOS 5 DOSSHELL active
- nonzero no Windows, Windows prior to 3.0, or Windows3 in enhanced
- mode
- Note: Windows 3.1 finally provides an installation check which works in all
- modes (see AX=160Ah)
- SeeAlso: AX=1600h,AX=160Ah
- ----------2F47-------------------------------
- INT 2F U - ???
- AH = 47h
- ???
- Return: ???
- Note: reportedly called by Microsoft BASIC Compiler v7.0
- --------K-2F4800-----------------------------
- INT 2F - DOS 5+ DOSKEY - INSTALLATION CHECK
- AX = 4800h
- Return: AL = nonzero if installed
- (DOS 5.0 and 6.0 return AX=AA02h, Novell DOS 7 returns AX=EDFFh)
- ES = segment of DOSKEY resident portion
- DX = ??? (Novell DOS only; 02E6h for shipped v0.01)
- Notes: DOSKEY chains if AL is not 00h or 10h on entry
- this function is supported by Novell DOS 7 DOSKEY
- SeeAlso: AX=4800h"PCED",AX=4810h
- --------K-2F4800-----------------------------
- INT 2F - PCED v2.1 - INSTALLATION CHECK
- AX = 4800h
- Return: AX = AACDh if installed
- ES = segment of PCED kernel (PCED has multiple code segments)
- Program: PCED v2.1 is a command line editor/history/macro facility by
- Cove Software. It is the commercial version of the freeware CED.
- Notes: DOSKEY also responds to this call if installed, returning AX=AA02h.
- unlike DOSKEY, PCED does *not* chain if AL contains an
- unsupported function code. It IRETs with all registers intact.
- --------K-2F4810-----------------------------
- INT 2F - DOS 5+ DOSKEY, PCED v2.1 - READ INPUT LINE FROM CONSOLE
- AX = 4810h
- DS:DX -> line buffer (see #01344 at INT 21/AH=0Ah)
- Return: AX = 0000h if successful
- Notes: the first byte (length) of the buffer MUST be 80h, or MS-DOS's DOSKEY
- chains to the previous handler; PCED and Novell DOS allow sizes
- other than 80h
- if the user's input is a macro name, no text is placed in the buffer
- even though AX=0000h on return; the program must immediately issue
- this call again to retrieve the expansion of the macro. Similarly,
- if the user enters a special parameter such as $*, this call must
- be repeated to retrieve the expansion; on the second call, DOSKEY
- overwrites the macro name on the screen with its expansion.
- unlike DOSKEY, PCED expands all macros on the first call, so it is
- not necessary to make two calls; since the buffer is not empty on
- return, DOSKEY-aware programs will not make the second call
- DOSKEY chains if AL is not 00h or 10h on entry
- this function is supported by Novell DOS 7 DOSKEY
- SeeAlso: AX=4800h,INT 21/AH=0Ah
- --------K-2F48C0-----------------------------
- INT 2F - PCED v2.1 - PCED API
- AX = 48C0h
- DX = API function code
- other registers as required by the specified function
- Return: CF clear if successful
- CF set on error
- AX = PCED error code
- other registers as appropriate for API function
- Program: PCED v2.1 is a command line editor/history/macro facility by
- Cove Software. It is the commercial version of the freeware CED.
- Note: the full API information is available from Cove Software
- SeeAlso: AX=4800h"PCED",AX=48C1h,AX=48C2h,AX=48C3h
- --------U-2F48C1BL00-------------------------
- INT 2F - PCED/VSTACK - INSTALLATION CHECK
- AX = 48C1h
- BL = 00h
- Return: AX = 0000h if installed
- BX = VSTACK resident segment
- Program: VSTACK is a resident backscroll utility included as part of the PCED
- package by Cove Software
- Note: chains if BL <> 00h on entry
- SeeAlso: AX=48C0h,AX=48C2h
- --------U-2F48C2BL00-------------------------
- INT 2F - PCED/ATTRIB - INSTALLATION CHECK
- AX = 48C2h
- BL = 00h
- Return: AX = 0000h if installed
- BX = ATTRIB resident segment
- Program: ATTRIB is a resident file attribute changer included as part of the
- PCED package by Cove Software
- Note: chains if BL <> 00h on entry
- SeeAlso: AX=48C0h,AX=48C1h,AX=48C3h
- --------K-2F48C3BL00-------------------------
- INT 2F - PCED/KEYDEF - INSTALLATION CHECK
- AX = 48C3h
- BL = 00h
- Return: AX = 0000h if installed
- BX = KEYDEF resident segment
- Program: KEYDEF is a resident keyboard redefinition utility included as part
- of the PCED package by Cove Software
- Note: chains if BL <> 00h on entry
- SeeAlso: AX=48C0h,AX=48C2h,AX=48C4h
- --------U-2F48C4BL00-------------------------
- INT 2F - PCED/FLIST - INSTALLATION CHECK
- AX = 48C4h
- BL = 00h
- Return: AX = 0000h if installed
- BX = FLIST resident segment
- Program: FLIST is a resident filelist processor included as part of the PCED
- package by Cove Software
- Note: chains if BL <> 00h on entry
- SeeAlso: AX=48C0h,AX=48C3h,AX=48C5h
- --------U-2F48C5BL00-------------------------
- INT 2F - PCED/ASSOC - INSTALLATION CHECK
- AX = 48C5h
- BL = 00h
- Return: AX = 0000h if installed
- BX = ASSOC resident segment
- Program: ASSOC is a resident utility included as part of the PCED package which
- associates files with executable programs based on their extensions
- Note: chains if BL > 02h on entry
- SeeAlso: AX=48C0h,AX=48C4h,AX=48C5h/BL=01h,AX=48C5h/BL=02h
- --------U-2F48C5BL01-------------------------
- INT 2F - PCED/ASSOC - GET VERSION
- AX = 48C5h
- BL = 01h
- Return: AX = 0000h if installed
- BX = binary ASSOC version (BL = major, BH = minor)
- Note: chains if BL > 02h on entry
- SeeAlso: AX=48C0h,AX=48C5h/BL=00h,AX=48C5h/BL=02h
- --------U-2F48C5BL02-------------------------
- INT 2F - PCED/ASSOC - ASSOCIATION TEST
- AX = 48C5h
- BL = 02h
- DS:SI -> ASCIZ filename
- Return: AX = status
- 0000h if filename is unknown
- 0001h if there is an association defined for the file
- BX destroyed
- Program: ASSOC is a resident utility included as part of the PCED package which
- associates files with executable programs based on their extensions
- Note: chains if BL > 02h on entry
- SeeAlso: AX=48C0h,AX=48C5h/BL=00h,AX=48C5h/BL=01h
- ----------2F49-------------------------------
- INT 2F U - ???
- AH = 49h
- ???
- Return: ???
- Note: reportedly called by DOS 5.0 installation
- --------D-2F4A00CX0000-----------------------
- INT 2F CU - DOS 5+ - FLOPPY-DISK LOGICAL DRIVE CHANGE NOTIFICATION
- AX = 4A00h
- CX = 0000h
- DH = new drive number
- DL = current drive number
- Return: CX = FFFFh to skip "Insert diskette for drive X:" message
- Note: called by MS-DOS 5.0+ IO.SYS just before displaying the message
- "Insert diskette for drive X:" on single-floppy systems
- --------D-2F4A01-----------------------------
- INT 2F - DOS 5+ - QUERY FREE HMA SPACE
- AX = 4A01h
- Return: BX = number of bytes available in HMA (0000h if DOS not using HMA)
- ES:DI -> start of available HMA area (FFFFh:FFFFh if not using HMA)
- Notes: called by Windows 3.1 DOSX.EXE
- supported by Novell DOS 7
- SeeAlso: AX=4310h,AX=4A02h
- --------D-2F4A02-----------------------------
- INT 2F - DOS 5+ - ALLOCATE HMA SPACE
- AX = 4A02h
- BX = number of bytes
- Return: ES:DI -> start of allocated HMA block or FFFFh:FFFFh
- BX = number of bytes actually allocated (rounded up to next paragraph
- for DOS 5.0 and 6.0)
- Notes: this call is not valid unless DOS is loaded in the HMA (DOS=HIGH)
- called by Windows 3.1 DOSX.EXE
- supported by Novell DOS 7
- SeeAlso: AX=4A01h,AX=4A03h
- --------D-2F4A03-----------------------------
- INT 2F U - Windows95 - DOS KERNEL - (DE)ALLOCATE HMA MEMORY BLOCK
- AX = 4A03h
- CX = segment of block's owner???
- DL = subfunction
- 00h allocate block
- BX = number of bytes
- Return: DI=FFFFh if unable to allocate
- ES:DI -> allocated block
- 01h resize block
- ES:DI -> previously-allocated block
- BX = new size in bytes (must be less than original size???)
- Return: DI=FFFFh if unable to allocate
- ES:DI -> reallocated block
- Note: the contents of the original block are NOT copied
- 02h free block???
- ES:DI -> block to be freed
- Note: in MS-DOS 7.x, function 4A02h is implemented by calling this function
- with DL=00h
- SeeAlso: AX=4A02h
- --------D-2F4A04-----------------------------
- INT 2F U - Windows95 - DOS KERNEL - GET START OF HMA MEMORY CHAIN
- AX = 4A04h
- Return: AX = 0000h if function supported
- ES:DI -> first HMA memory control block (see #02800)
- Format of Windows95 HMA memory control block:
- Offset Size Description (Table 02800)
- 00h 2 BYTEs signature "MS" (4Dh 53h)
- 02h WORD segment of owner (or segment at which to address block???)
- 0000h = free
- 0001h = DOS???
- FF33h = IO.SYS
- FFFFh = MSDOS.SYS
- 04h WORD size of memory block (not including this header)
- 06h WORD offset of next memory block in segment FFFFh, or 0000h if last
- 08h 8 BYTEs unused (explicitly set to 0 for MS-DOS 7.10)
- --------T-2F4A05-----------------------------
- INT 2F U - DOS 5+ DOSSHELL - TASK SWITCHING API???
- AX = 4A05h
- SI = function
- 0000h reset???
- 0001h ???
- ES:BP -> 80-byte buffer containing ???
- 0002h ???
- 0003h ???
- 0004h ???
- BL = ???
- 0005h ???
- 0006h get ???
- Return: ES:SI -> ???
- 0007h get ???
- Return: AX = ???
- 0008h get ???
- Return: DX:AX -> ??? (internal control data of some kind)
- 0009h get ???
- Return: ES:SI -> ??? (apparently identical to function 0006h)
- 000Ah ???
- BL = length of buffer
- ES:BP -> buffer containing ???
- 000Bh get ???
- Return: AX = ???
- 000Ch ???
- BL = ???
- Return: if BL nonzero on entry
- DX:AX -> ???
- if BL = 00h on entry
- ES:SI -> ???
- Notes: DOSSHELL chains to the previous handler if SI is not one of the values
- listed above
- the DOSSWAP.EXE module calls functions 03h,04h,05h,07h,08h,09h,0Ch
- the Windows 3.1 DSWAP.EXE and WSWAP.EXE task switchers use these calls
- SeeAlso: AX=4B01h
- --------D-2F4A06-----------------------------
- INT 2F CU - DOS 5+ - DOS SUPERVISOR "REBOOT PANEL" - ADJUST MEMORY SIZE
- AX = 4A06h
- DX = segment following last byte of conventional memory
- Return: DX = segment following last byte of memory available for use by DOS
- Desc: used to override the default memory size when booting diskless
- workstations
- Notes: called by MS-DOS 5+ IO.SYS startup code if the signature "RPL" is
- present three bytes beyond the INT 2F handler; this call overrides
- the value returned by INT 12
- hooked by RPL code at the top of memory to protect itself from being
- overwritten; DOS builds a memory block with owner = 0008h and name
- "RPL" which must be freed by the RPL code when it is done
- SeeAlso: INT 12"BIOS",INT 18"BOOT HOOK"
- --------N-2F4A07-----------------------------
- INT 2F U - RESERVED FOR PROTMAN SUPPORT
- AX = 4A07h
- ???
- Return: ???
- --------c-2F4A10BX0000-----------------------
- INT 2F - SMARTDRV v4.00+ - INSTALLATION CHECK AND HIT RATIOS
- AX = 4A10h
- BX = 0000h
- CX = EBABh (v4.1+; see Note)
- Return: AX = BABEh if installed
- DX:BX = cache hits
- DI:SI = cache misses
- CX = number of dirty cache elements
- BP = version in BCD (4.10 = 0410h)
- Notes: most of the SMARTDRV API, including this call, is supported by
- PC-Cache v8.0 and recent versions of the Norton Caches
- if DBLSPACE.BIN is installed but SMARTDRV has not yet been installed,
- then calls of this function with CX<>EBABh on entry cause
- DBLSPACE.BIN to display the error message
- "Cannot run SMARTDrive 4.0 with DoubleSpace" and abort the caller
- with INT 21/AX=4C00h
- SMARTDRV v3.x had a completely different API using IOCTL calls, which
- was also supported by the Norton Caches
- SeeAlso: AX=4A10h/BX=0001h,AX=4A10h/BX=0004h,AX=4A10h/BX=0005h
- SeeAlso: AX=4A10h/BX=0007h,AX=4A10h/BX=1234h,AX=4A11h/BX=0000h
- SeeAlso: INT 21/AX=4402h"SMARTDRV",INT 21/AX=4403h"SMARTDRV"
- --------c-2F4A10BX0000-----------------------
- INT 2F U - Novell NWCACHE - ???
- AX = 4A10h
- BX = 0000h
- CX = 0EDCh ('EDC' = Novell European Development Center)
- Return: ???
- SeeAlso: AX=4A10h/BX=0001h"NWCACHE"
- --------c-2F4A10BX0001-----------------------
- INT 2F - SMARTDRV v4.00+ - FLUSH BUFFERS (COMMIT CACHE)
- AX = 4A10h
- BX = 0001h
- Note: this function is also supported by PC-Cache v8.0.
- SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0002h,INT 21/AH=0Dh
- --------c-2F4A10BX0001-----------------------
- INT 2F U - Novell NWCACHE - ???
- AX = 4A10h
- BX = 0001h
- CX = 0EDCh ('EDC' = Novell European Development Center)
- Return: ???
- SeeAlso: AX=4A10h/BX=0000h"NWCACHE"
- --------c-2F4A10BX0002-----------------------
- INT 2F - SMARTDRV v4.00+ - RESET CACHE
- AX = 4A10h
- BX = 0002h
- Note: this function is also supported by PC-Cache v8.0.
- SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0001h
- --------c-2F4A10BX0003-----------------------
- INT 2F - SMARTDRV v4.00+ - STATUS
- AX = 4A10h
- BX = 0003h
- BP = drive number (0=A, 1=B, etc.)
- DL = subfunction
- 00h only get information
- 01h turn on read cache
- 02h turn off read cache
- 03h turn on write cache
- 04h turn off write cache
- ---NWCACHE---
- 05h ???
- 06h ???
- Return: AX = BABEh if OK
- DL = status (see #02801)
- DL = FFh if drive does not exist
- Notes: If the read cache is off, reads will not be cached, but writes will
- continue to be cached if the write-cache is enabled.
- this function is also supported by PC-Cache v8.0.
- SeeAlso: AX=4A10h/BX=0000h
- Bitfields for SMARTDRV status:
- Bit(s) Description (Table 02801)
- 7 not cached
- 6 write-through (not write-cached)
- 0-5 real drive number (0=A, 1=B...)
- Note: the "real" drive number is always set to 00h for RAM disks and to 3Fh
- for CD-ROMs; unfortunately, the latter means that an uncached CD-ROM
- has status FFh, just as a nonexistent drive does
- --------c-2F4A10BX0004-----------------------
- INT 2F - SMARTDRV v4.00+ - GET CACHE SIZE
- AX = 4A10h
- BX = 0004h
- Return: AX = size in elements of full-sized cache
- BX = current size in elements
- CX = size of one element in bytes
- DX = number of elements under Windows
- Note: this function is also supported by PC-Cache v8.0.
- SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0003h,AX=4A10h/BX=0005h
- --------c-2F4A10BX0005-----------------------
- INT 2F - SMARTDRV v4.00+ - GET DOUBLE-BUFFER STATUS
- AX = 4A10h
- BX = 0005h
- BP = drive number (0=A, 1=B...)
- Return: AX = BABEh if double-buffered
- ES:DI -> 16-byte array of status bytes for fixed disks (see #02802)
- SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0003h,AX=4A10h/BX=0006h
- (Table 02802)
- Values for SMARTDRV status byte:
- 00h state unknown
- FFh drive double-buffered
- else not double-buffered
- --------c-2F4A10BX0006-----------------------
- INT 2F CU - SMARTDRV v4.00+ - CHECK IF DRIVE CACHEABLE
- AX = 4A10h
- BX = 0006h
- CL = drive number (01h = A:)
- Return: AX = 0006h if drive should not be cached by SMARTDRV
- Note: called by SMARTDRV at startup to determine whether it should cache
- a particular drive
- SeeAlso: AX=4A10h/BX=0000h
- --------c-2F4A10BX0007-----------------------
- INT 2F - SMARTDRV v4.00+ - GET DEVICE DRIVER FOR DRIVE
- AX = 4A10h
- BX = 0007h
- BP = drive number (00h=A:)
- Return: DL = unit number within device driver
- ES:DI -> device driver header for drive (see #01646)
- Note: this function is also supported by PC-Cache v8.0.
- this call is reported to always return the driver header of the
- standard block driver (A:-C:+) for SmartDrive v5.00 from MS-DOS 6.2
- SeeAlso: AX=4A10h/BX=0000h,AX=4A11h/BX=0003h,AX=4A11h/BX=0004h
- --------c-2F4A10BX0008-----------------------
- INT 2F - SMARTDRV v4.20+ - GET/SET FLUSH BEFORE PROMPT, CD-ROM SUPPORT
- AX = 4A10h
- BX = 0008h
- DL = subfunction
- 00h set
- DH = new states
- bit 0: flush before prompt
- bits 1-7 reserved (0)
- 01h get
- Return: DH = status flags
- bit 0: (v4.2+) flush before prompt
- bit 1: (v5.0+) CD-ROM caching support installed
- Note: v4.2 was an interim release to fix problems in the SMARTDRV included
- with MS-DOS 6.00; v5.00 is included with MS-DOS 6.2
- --------c-2F4A10BX000A-----------------------
- INT 2F - SMARTDRV v4.00+ - GET ELEMENT STATUS TABLE
- AX = 4A10h
- BX = 000Ah
- Return: ES:BX -> information pointer table (see #02803)
- Note: this function is also supported by PC-Cache v8.0.
- SeeAlso: AX=4A10h/BX=0000h
- Format of SMARTDRV information pointer table:
- Offset Size Description (Table 02803)
- 00h WORD offset of ??? byte/word array (byte if elements < 2000h bytes)
- 02h WORD offset of dirty flag byte/word array (byte if elts < 2000h)
- each byte/word is a bit string of the dirty sectors in element
- 04h WORD offset of word array containing low halves of unique
- identifiers for the corresponding element's contents
- 06h WORD offset of word array containing high halves of unique
- identifiers for the corresponding element's contents
- 08h WORD offset of WORD containing current number of elements in cache
- --------c-2F4A10BX1234-----------------------
- INT 2F - SMARTDRV v4.00+ - SIGNAL SERIOUS ERROR
- AX = 4A10h
- BX = 1234h
- Desc: this function pops up a message box saying that a serious error
- occurred and to hit R to retry, then waits for the keypress
- Note: this function is also supported by PC-Cache v8.0.
- SeeAlso: AX=4A10h/BX=0000h
- --------k-2F4A11BX0000-----------------------
- INT 2F - DBLSPACE.BIN - "GetVersion" - INSTALLATION CHECK
- AX = 4A11h
- BX = 0000h
- Return: AX = 0000h (successful)
- BX = 444Dh ("DM")
- CL = first drive letter used by DBLSPACE (41h ['A'] = A:)
- CH = number of drive letters used by DBLSPACE
- DX = internal DBLSPACE.BIN version number (bits 14-0)
- bit 15 set if DBLSPACE.BIN has not yet been relocated to final
- position in memory (i.e. DBLSPACE.SYS /MOVE)
- Program: DBLSPACE.BIN is the resident driver for DoubleSpace, the
- disk-compression software bundled with MS-DOS 6.0 and 6.20
- Notes: this function is also supported by the version of SuperStor bundled
- with IBM DOS 6.x and "preloading" versions of Stacker
- the complete DBLSPACE.BIN API is still supported by MS-DOS 6.22's
- DRVSPACE.BIN
- SeeAlso: AX=4A11h/BX=0001h,AX=4A11h/BX=0002h,AX=4A11h/BX=0003h
- SeeAlso: AX=4A11h/BX=0005h,AX=4A11h/BX=0007h,AX=4A11h/BX=FFFFh
- SeeAlso: INT 21/AX=4404h"DBLSPACE"
- --------k-2F4A11BX0001-----------------------
- INT 2F - DBLSPACE.BIN - "GetDriveMapping" - GET DRIVE MAPPING
- AX = 4A11h
- BX = 0001h
- DL = drive number (0=A:)
- Return: AX = status (see also #02804)
- 0000h successful
- if DL was compressed drive,
- BL = host drive (bit 7 set if drive is compressed)
- else if DL was host drive,
- BL = compressed drive
- else
- BL = specified drive (if available for DoubleSpace)
- BH = DoubleSpace sequence number
- other error code (0101h) (see #02804)
- apparently never returned for the MS-DOS 6.2 DoubleSpace
- Note: the compressed volume file for the specified compressed drive is
- host:\DBLSPACE.sequence
- SeeAlso: AX=4A11h/BX=0000h
- (Table 02804)
- Values for DBLSPACE function status:
- 0000h successful
- 0100h bad function
- 0101h invalid drive
- 0102h not a compressed drive
- 0103h drive already swapped
- 0104h drive not swapped
- SeeAlso: #02806
- --------k-2F4A11BX0002-----------------------
- INT 2F - DBLSPACE.BIN - "Swap Drive" - SWAP DRIVE LETTERS OF CVF AND HOST DRIVE
- AX = 4A11h
- BX = 0002h
- DL = drive number (0=A:) of compressed drive to swap with its host
- Return: AX = status (0000h,0101h,0102h,0103h) (see #02804)
- Note: this function is intended for use by DBLSPACE.EXE only
- SeeAlso: AX=4A11h/BX=0000h
- --------k-2F4A11BX0003-----------------------
- INT 2F - DBLSPACE.BIN - "DSGetEntryPoints" - GET DEVICE DRIVER ENTRY POINTS
- AX = 4A11h
- BX = 0003h
- CL = drive number (0=A:) of compressed drive
- Return: CL = FFh on error (not compressed drive)
- CL <> FFh driver unit number of host drive
- ES:SI -> device driver's strategy routine
- ES:DI -> device driver's interrupt routine
- BX destroyed
- Note: in conjunction with subfunction 0004h, this call allows disk caches
- like SMARTDRV to apply a device driver wrapper to DoubleSpaced
- drives just like SMARTDRV applies to regular block devices
- SeeAlso: AX=4A10h/BX=0007h,AX=4A11h/BX=0000h,AX=4A11h/BX=0004h
- --------k-2F4A11BX0004-----------------------
- INT 2F - DBLSPACE.BIN - "DSSetEntryPoints" - SET DEVICE DRIVER ENTRY POINTS
- AX = 4A11h
- BX = 0004h
- CL = drive number (0=A:) of compressed drive
- DL = unit number for new driver entry points
- DH = 00h
- ES:SI -> device driver strategy routine to call for drive
- ES:DI -> device driver interrupt routine to call for drive
- Return: CL = FFh on error (not a compressed drive)
- BX destroyed
- Program: DBLSPACE.BIN is the resident driver for DoubleSpace, the
- disk-compression software bundled with MS-DOS 6.0
- Note: in conjunction with subfunction 0003h, this call allows disk caches
- like SMARTDRV to apply a device driver wrapper to DoubleSpaced
- drives just like SMARTDRV applies to regular block devices
- SeeAlso: AX=4A10h/BX=0007h,AX=4A11h/BX=0000h,AX=4A11h/BX=0003h
- --------k-2F4A11BX0005-----------------------
- INT 2F - DBLSPACE.BIN - "ActivateDrive" - MOUNT COMPRESSED DRIVE
- AX = 4A11h
- BX = 0005h
- DL = drive number (0=A:) to assign to new drive
- ES:SI -> activation record (see #02805)
- Return: status returned in activation record (see #02806)
- SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0006h
- Format of DBLSPACE activation record:
- Offset Size Description (Table 02805)
- 00h 2 BYTEs signature "MD" (4Dh 44h)
- 02h BYTE 4Dh ('M') mount command
- 03h BYTE error code (set to FFh before calling) (see #02806)
- 04h BYTE host drive number (0=A:)
- 05h ??? DISK_UNIT structure (not documented)
- (Table 02806)
- Values for DBLSPACE Mount error code:
- 00h successful
- 01h drive letter not available for DoubleSpace
- 02h drive letter already in use
- 03h no more disk units (increase MaxRemovableDrives in .INI)
- 09h CVF too fragmented
- SeeAlso: #02805,#02804
- --------k-2F4A11BX0006-----------------------
- INT 2F - DBLSPACE.BIN - "DeactivateDrive" - UNMOUNT COMPRESSED DRIVE
- AX = 4A11h
- BX = 0006h
- DL = drive number (0=A:) to unmount
- Return: AX = status (0000h,0102h) (see #02804)
- SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0005h
- --------k-2F4A11BX0007-----------------------
- INT 2F - DBLSPACE.BIN - "GetDriveSpace" - GET SPACE AVAIL ON COMPRESSED DRIVE
- AX = 4A11h
- BX = 0007h
- DL = compressed drive number (0=A:)
- Return: AX = status (0000h,0102h) (see also #02804)
- 0000h successful
- DS:SI -> free space record (see #02807)
- Program: DBLSPACE.BIN is the resident driver for DoubleSpace, the
- disk-compression software bundled with MS-DOS 6.0
- SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0008h
- Format of DBLSPACE free space record:
- Offset Size Description (Table 02807)
- 00h DWORD total number of sectors in drive's sector heap
- 04h DWORD number of free sectors in drive's sector heap
- --------k-2F4A11BX0008-----------------------
- INT 2F - DBLSPACE.BIN - "GetFileFragmentSpace" - GET SIZE OF FRAGMENT HEAP
- AX = 4A11h
- BX = 0008h
- DL = compressed drive number (0=A:)
- Return: AX = status (0000h,0102h) (see also #02804)
- 0000h successful
- BX = maximum entries in File Fragment heap
- CX = available entries in File Fragment heap
- SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0007h,AX=4A11h/BX=0009h
- --------k-2F4A11BX0009-----------------------
- INT 2F - DBLSPACE.BIN - "GetExtraInfo" - DETERMINE NUMBER OF DISK_UNIT STRUCTS
- AX = 4A11h
- BX = 0009h
- DL = compressed drive number (0=A:)
- Return: AX = status (see also #02804)
- 0000h successful
- CL = number of DISK_UNIT structures allocated
- (see AX=4A11h/BX=0005h)
- CH = DoubleGuard enabled-checks bitflags in bits 6-0 (DOS 6.2)
- Note: the DoubleGuard checks are enabled or disabled as a block by the
- DoubleGuard= line in DBLSPACE.INI; they may be individually set with
- the CheckSum= line.
- SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0008h
- --------k-2F4A11BX000A-----------------------
- INT 2F - DBLSPACE.BIN v6.2 - SET AUTOMOUNT DRIVES
- AX = 4A11h
- BX = 000Ah
- CX:DX = bitmask of drives on which to enable AutoMount
- (DX bit 0 = A:, CX bit 0 = P:, etc.)
- Return: AX = 0000h if supported
- CX:DX = old mask or 0000h:0000h on error
- BX destroyed
- SeeAlso: AX=4A11h/BX=000Bh
- --------k-2F4A11BX000B-----------------------
- INT 2F - DBLSPACE.BIN v6.2 - GET AUTOMOUNT DRIVES
- AX = 4A11h
- BX = 000Bh
- Return: AX = 0000h if supported
- CX:DX = mask of drives with AutoMount enabled
- 0000h:0000h on error
- BX destroyed
- SeeAlso: AX=4A11h/BX=000Ah
- --------k-2F4A11BXFFFE-----------------------
- INT 2F U - DBLSPACE.BIN - RELOCATE
- AX = 4A11h
- BX = FFFEh
- ES = segment to which to relocate DBLSPACE.BIN
- Return: ???
- Notes: called by DBLSPACE.SYS to relocate DBLSPACE.BIN to its final position
- in memory
- this function also unhooks and discards the code providing this
- function and AX=4A11h/BX=FFFFh
- this function is also supported by the version of SuperStor bundled
- with IBM DOS 6.x and "preloading" versions of Stacker
- SeeAlso: AX=4A11h/BX=FFFFh
- --------k-2F4A11BXFFFF-----------------------
- INT 2F U - DBLSPACE.BIN - GET RELOCATION SIZE
- AX = 4A11h
- BX = FFFFh
- Return: AX = number of paragraphs needed by DBLSPACE.BIN
- Note: used by DBLSPACE.SYS to relocate the DBLSPACE driver to its final
- position in memory
- this function is also supported by the version of SuperStor bundled
- with IBM DOS 6.x and "preloading" versions of Stacker
- SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=FFFEh
- --------k-2F4A12CX4D52-----------------------
- INT 2F - Microsoft Realtime Compression Interface (MRCI) - RAM-BASED SERVER
- AX = 4A12h
- CX = 4D52h ("MR")
- DX = 4349h ("CI")
- Return: CX = 4943h ("IC") if installed
- DX = 524Dh ("RM") if installed
- ES:DI -> MRCINFO structure (see #00725 at INT 1A/AX=B001h)
- Note: this call is functionally identical to INT 1A/AX=B001h, but should be
- called first, as the latter call is used for the first, ROM-based
- MRCI server, while this call is used for RAM-based servers which
- may be partially or entirely replacing a prior server
- SeeAlso: AX=4A12h/CX=5354h,INT 1A/AX=B001h
- --------k-2F4A12CX5354-----------------------
- INT 2F - Stacker 4 LZS Compression Interface (LZSAPI)
- AX = 4A12h
- CX = 5354h ("ST")
- DX = 4143h ("AC")
- Return: AX = 4F4Bh ("OK") if installed
- CX = 7374h ("st") if installed
- DX = 6163h ("ac") if installed
- ES:DI -> entry point in LZSAPI server (usually, driver
- STACKER.COM) containing far address of an actual
- LZSINFO structure (see #02808)
- SeeAlso: AX=4A12h/CX=4D52h,INT 25/AX=CDCDh
- Format of LZSINFO structure:
- Offset Size Description (Table 02808)
- 00h 6 BYTEs signature "LZSAPI"
- 06h WORD server version (200 (0C8h) for Stacker 4 and Stacker Anywhere)
- 08h 4 BYTEs vendor signature
- "STAC" = Stac Electronics, Inc.
- 0Ch 6 BYTEs ???
- 12h WORD bit flags: server status/capabilities (see #02809)
- 14h DWORD -> Stacker 3.X-compatible compression procedure
- 18h DWORD -> Stacker 3.X-compatible decompression procedure
- 1Ch 4 BYTEs reserved (always set to 0)
- 20h DWORD -> incremental Stacker 3.x-compatible compression procedure
- (see #02810)
- 24h 4 BYTEs ???
- 28h DWORD -> incremental Stacker 3.x-compatible decompression procedure
- (see #02811)
- 2Ch 4 BYTES ???
- 30h DWORD -> new (Stacker 4) compression procedure
- 34h 4 BYTEs ???
- 38h DWORD -> new (Stacker 4) decompression procedure
- Notes: Stacker 4 usally keeps two different data-compression algorithms in
- memory (preferably in XMA):
- 1) new (Stacker 4) data compression algorithm (4K LZ77 with hashing
- and static Huffman encoding), and
- 2) old (Stacker 3.x-compatible) one (2K LZ77 with hashing), which
- is used to work with STACVOL files created under older
- versions of Stacker.
- Bitfields for LZSAPI capabilities:
- Bit(s) Description (Table 02809)
- 0 ???
- 1 busy/error flag
- 2-10 ???
- 11 maximum compressor/decompressor presented
- (Table 02810)
- Call Stacker 3.x-style non-incremental functions with:
- STACK: DWORD return address for compress/decompress procedure
- WORD compression algorithm parameters (see #02812)
- WORD size of destination buffer (in bytes)
- DWORD address of destination buffer
- WORD size of source buffer (in bytes)
- DWORD address of source buffer
- Return: (compression/decompression procedure)
- AX = size of resulting data in destination buffer
- 0000h if error (either destination buffer too small or error in
- compressed data)
- (Table 02811)
- Call Stacker 4-style incremental procedures with:
- STACK: DWORD return address for compr./decompr. procedure
- DWORD address of LZSSWAP structure (see #02813)
- if 0000:0000, procedure uses non-incremental technique
- WORD compression algorithm parameters (see #02812)
- WORD size of destination buffer (in bytes)
- DWORD address of destination buffer
- WORD size of source buffer (in bytes)
- DWORD address of source buffer
- (Table 02812)
- Values for Compression algorithm parameters:
- Value Compression level (/P=xx parameter)
- 07F9h 1
- 0621h 2
- 0625h 3
- 0665h 4
- 0669h 5
- 06E9h 6
- 06EDh 7
- 07D1h 8
- 07D9h 9
- Format of LZSSWAP structure:
- Offset Size Description (Table 02813)
- 00h 2 BYTEs signature "CS"
- 02h 6 BYTEs reserved
- 08h DWORD address of destination buffer swapping procedure
- 0Ch DWORD address of stack swapping procedure
- --------k-2F4A13-----------------------------
- INT 2F U - DBLSPACE.BIN - GET ??? ENTRY POINTS
- AX = 4A13h
- Return: AX = 134Ah if supported
- ES:BX -> entry point record (see #02814)
- SeeAlso: AX=4A11h/BX=0000h
- Format of DBLSPACE entry point record:
- Offset Size Description (Table 02814)
- 00h DWORD pointer to FAR function for ???
- 04h 5 BYTEs FAR JUMP instruction to ???
- ----------2F4A15BX0000-----------------------
- INT 2F - MS EMM386.EXE v4.46+ - INSTALL I/O VIRTUALIZATION HANDLER
- AX = 4A15h
- BX = 0000h (function number)
- DX = starting I/O address
- EDX high word = ending I/O address
- CX = number of ports to trap
- DS:SI -> I/O dispatch table (see #02815)
- DI = size of client's code and data (size of DS segment which must be
- made available to I/O dispatch function in protected mode)
- Return: CF clear if successful
- CF set on error
- Notes: this interface is only available in virtual-86 mode; the I/O handlers
- will be called in protected mode
- only ports 0100h-FFFFh may be trapped; EMM386 reserved ports 0000h-
- 00FFh
- Format of EMM386 I/O dispatch table [array]:
- Offset Size Description (Table 02815)
- 00h WORD I/O port number
- 02h WORD offset of I/O handler for port (see #02816)
- (Table 02816)
- Values EMM386 I/O dispatch function is called with:
- CX = Ring0 code selector for I/O handler's segment
- DS = Ring0 data selector for I/O handler's segment (alias of CS)
- EDX = faulting I/O address
- ECX = direction (00000008h for byte output, 00000000h for byte input)
- (reportedly 00h for byte/word input, 04h for byte/word output
- under DOS 6.22 EMM386)
- EAX = data in/out
- Return: (via FAR RET)
- CF clear if I/O access successfully virtualized
- CF set if access not virtualized (default handler will be called to
- perform the I/O)
- BUG: 32-bit I/O on trapped ports hangs the DOS 6.22 EMM386
- SeeAlso: #02815
- --------D-2F4A16-----------------------------
- INT 2F U - Windows95 - OPEN BOOT LOG
- AX = 4A16h
- Return: AX = status
- 0000h successful
- FFFFh boot log file already open
- else DOS error code
- BX destroyed
- SeeAlso: AX=4A17h,AX=4A18h
- --------D-2F4A17-----------------------------
- INT 2F U - Windows95 - WRITE TO BOOT LOG
- AX = 4A17h
- CX = number of bytes to write
- DS:DX -> message to write (must include CR-LF if it is desired)
- Return: AX = status
- 0000h successful
- FFFFh boot log file not open
- else DOS error code
- Note: calls the code for INT 2F/AX=4A21h after writing to the file
- SeeAlso: AX=4A17h,AX=4A18h,AX=4A21h
- --------D-2F4A18-----------------------------
- INT 2F U - Windows95 - CLOSE BOOT LOG
- AX = 4A18h
- Return: AX = status
- 0000h successful
- FFFFh boot log file not open
- else DOS error code from closing file
- BX destroyed
- SeeAlso: AX=4A16h,AX=4A17h
- --------D-2F4A21-----------------------------
- INT 2F U - Windows95 - ???
- AX = 4A21h
- Return: AX destroyed
- Note: calls INT 21/AX=4404h"IOCTL" with a five-byte buffer containing "MDF??"
- SeeAlso: AX=4A17h
- --------D-2F4A31-----------------------------
- INT 2F U - Windows95 - ???
- AX = 4A31h
- CL = new value for ???
- DS:SI -> BYTE to be set to CL
- Return: nothing
- --------D-2F4A32-----------------------------
- INT 2F U - Windows95 - PATCH ???
- AX = 4A32h
- BL = subfunction
- 00h get ???
- Return: AX = flag: subfunction 04h has been used (0000h/FFFFh)
- DX = ??? (0000h/?)
- 01h patch ??? in IO.SYS (segment 0070h)
- 02h unpatch ??? in IO.SYS
- 03h ???
- 04h set ???, then do subfunction 01h
- 05h unset ???, then do subfunction 02h
- else
- Return: nothing
- --------D-2F4A33-----------------------------
- INT 2F - Windows95 - CHECK MS-DOS VERSION 7
- AX = 4A33h
- Return: AX = 0000h for MS-DOS 7.00+
- (officially) BX,DX,SI,DS may be destroyed
- (undoc) DS:DX -> ASCIZ primary shell executable name
- (undoc) DS:SI -> CONFIG.SYS SHELL= command line (counted string)
- (undoc) BH = ??? (0000h)
- (undoc) BL = ??? (0000h)
- AX nonzero (usually 4A33h) if MS-DOS 6- or other DOS
- SeeAlso: AX=1611h,INT 21/AH=30h
- --------N-2F4B-------------------------------
- INT 2F - LAN Manager 2.0 DOS Enh NETWKSTA.EXE - NETWORK WORKSTATION REDIRECTOR
- AH = 4Bh
- ???
- Return: ???
- Note: LAN Manager enhanced mode adds features beyond the standard redirector
- file/printer services
- SeeAlso: AX=118Ah,AX=4100h,AH=42h
- --------T-2F4B01-----------------------------
- INT 2F C - DOS 5+ TASK SWITCHER - BUILD CALLOUT CHAIN
- AX = 4B01h
- CX:DX -> task switcher entry point (see #02819)
- ES:BX = 0000h:0000h
- Return: ES:BX -> callback info structure (see #02817) or 0000h:0000h
- Notes: called by the task switcher
- this function is hooked by clients which require notification of task
- switcher activities; the call must first be passed on to the prior
- handler with registers unchanged using a simulated interrupt. On
- return, the client must build a callback info structure and store
- the returned ES:BX in the "next" field, then return the address of
- its own callback info structure.
- a client program must add itself to the notification chain if it
- provides services to other programs; before terminating, it must
- remove itself from the chain by calling the task switcher's entry
- point with AX=0005h (see #02819)
- the task switcher entry point should not be saved, as it is subject to
- change and will be provided on any notification call
- the Windows 3.1 Standard Mode supports this API
- SeeAlso: AX=160Bh,AX=4B02h
- Format of task switcher callback info structure:
- Offset Size Description (Table 02817)
- 00h DWORD pointer to next callback info structure
- 04h DWORD pointer to notification function (see #02818)
- 08h DWORD reserved
- 0Ch DWORD address of zero-terminated list of API info structures
- (see #02821)
- (Table 02818)
- Values task switcher notification function is called with:
- AX = function
- 0000h switcher initialization
- Return: AX = status
- 0000h if OK to load
- nonzero to abort task switcher
- 0001h query suspend
- BX = session ID
- Return: AX = status
- 0000h if OK to switch session
- 0001h if not
- 0002h suspend session
- BX = session ID
- interrupts disabled
- Return: AX = 0000h if OK to switch session
- = 0001h if not
- 0003h activate session
- BX = session ID
- CX = session status flags
- bit 0: set if first activation of session
- bits 1-15: reserved (0)
- interrupts disabled
- Return: AX = 0000h
- 0004h session active
- BX = session ID
- CX = session status flags
- bit 0: set if first activation of session
- bits 1-15: reserved (0)
- Return: AX = 0000h
- 0005h create session
- BX = session ID
- Return: AX = 0000h if OK to create session
- = 0001h if not
- 0006h destroy session
- BX = session ID
- Return: AX = 0000h
- 0007h switcher termination
- BX = flags
- bit 0: set if calling switcher is only switcher loaded
- bits 1-15: reserved (0)
- Return: AX = 0000h
- ES:DI -> task switcher entry point (see #02819)
- Notes: function 0000h is generally called by the program which controls or
- invokes the task switcher, rather than by the task switcher itself;
- the entry point supplied to this function is not necessarily the
- entry point to the task switcher itself, and may be 0000h:0000h. If
- any client indicates that loading is not possible, all clients will
- be called with function 0007h; thus it is possible for a client to
- receive a termination notice without a corresponding initialization
- notice.
- except for functions 0002h and 0003h, the notification handler is
- called with interrupts enabled and may make any INT 21h function
- call; interrupts must not be enabled in functions 0002h and 0003h
- function 0007h may be called with ES:DI = 0000h:0000h if the entry
- point is no longer valid
- --------T-2F4B02BX0000-----------------------
- INT 2F - DOS 5+ TASK SWITCHER - INSTALLATION CHECK
- AX = 4B02h
- BX = 0000h
- ES:DI = 0000h:0000h
- Return: ES:DI = 0000h:0000h if task switcher not loaded
- ES:DI -> task switcher entry point (see #02819) if loaded
- AX = 0000h
- Notes: the returned entry point is that for the most-recently loaded task
- switcher; the entry points for prior task switchers may be determined
- with the "get version" call (see #02819)
- this function is supported by PC Tools v8+ CPTASK
- SeeAlso: AX=4A05h,AX=4B03h
- (Table 02819)
- Call task switcher entry point with:
- AX = 0000h get version
- Return: CF clear if successful
- AX = 0000h
- ES:BX -> task switcher version struct (see #02820)
- CF set if unsupported function
- AX = 0001h test memory region
- ES:DI -> first byte to be tested
- CX = size of region to test
- Return: CF clear if successful
- AX = memory type of tested region
- 0000h global
- 0001h global and local
- 0002h local (replaced on session switch)
- CF set if unsupported function
- AX = 0002h suspend switcher
- ES:DI -> new task switcher's entry point
- Return: CF clear if successful
- AX = state
- 0000h switcher has been suspended
- 0001h switcher not suspended, new switcher must
- abort
- 0002h switcher not suspended, but new switcher
- may run anyway
- CF set if unsupported function
- AX = 0003h resume switcher
- ES:DI -> new task switcher's entry point
- Return: CF clear if successful
- AX = 0000h
- CF set if unsupported function
- AX = 0004h hook notification chain
- ES:DI -> callback info structure to be added to chain
- (see #02817)
- Return: CF clear if successful
- AX = 0000h
- CF set if unsupported function
- AX = 0005h unhook notification chain
- ES:DI -> callback info structure to be removed from chain
- (see #02817)
- Return: CF clear if successful
- AX = 0000h
- CF set if unsupported function
- AX = 0006h query API support
- BX = asynchronous API identifier
- Return: CF clear if successful
- AX = 0000h
- ES:BX -> API info structure (see #02821) for the
- client which provides the highest
- level of API support
- CF set if unsupported function
- Format of task switcher version structure:
- Offset Size Description (Table 02820)
- 00h WORD major version of supported protocol (current protocol is 1.0)
- 02h WORD minor version of supported protocol
- 04h WORD major version of task switcher
- 06h WORD minor version of task switcher
- 08h WORD task switcher ID (see AX=4B03h)
- 0Ah WORD operation flags
- bit 0: set if task switcher disabled
- bits 1-15: reserved (0)
- 0Ch DWORD pointer to ASCIZ task switcher name
- ("MS-DOS Shell Task Switcher" for DOSSHELL task switcher)
- 10h DWORD pointer to previous task switcher's entry point or 0000h:0000h
- Format of API info structure:
- Offset Size Description (Table 02821)
- 00h WORD size of structure in bytes (000Ah)
- 02h WORD API identifier
- 0001h NetBIOS
- 0002h 802.2
- 0003h TCP/IP
- 0004h LAN Manager named pipes
- 0005h Novell NetWare IPX
- 04h WORD major version \ of highest version of API for which the support
- 06h WORD minor version / level specified in the next field is provided
- 08h WORD support level
- 0001h minimal support
- 0002h API-level support
- 0003h switcher compatibility
- 0004h seamless compatibility
- --------T-2F4B03-----------------------------
- INT 2F - DOS 5+ TASK SWITCHER - ALLOCATE SWITCHER ID
- AX = 4B03h
- ES:DI -> task switcher entry point (see #02819)
- Return: AX = 0000h
- BX = switcher ID (0001h-000Fh), or 0000h if no more available
- Notes: if a task switcher has determined that it is the first to be loaded, it
- must allocate an identifier for itself and provide this function to
- all subsequent task switchers; if it is not the first to be loaded,
- it must call this function to allocate an ID. The switcher ID is
- used as the high four bits of all session identifiers to ensure
- unique session IDs.
- if no more switcher IDs are available, the new task switcher making the
- call must terminate or disable itself
- the task switcher providing the identifiers may call the new task
- switcher's entry point as needed
- this call is available from within DOSSHELL even if the task switcher
- is not installed
- this function is supported by PC Tools v8+ CPTASK, but appears to
- always return an ID of 0000h
- SeeAlso: AX=4B02h,AX=4B04h
- --------T-2F4B04-----------------------------
- INT 2F - DOS 5+ TASK SWITCHER - FREE SWITCHER ID
- AX = 4B04h
- BX = switcher ID
- ES:DI -> task switcher entry point (see #02819)
- Return: AX = 0000h
- BX = status
- 0000h successful
- other error (invalid ID or ID not allocated)
- Notes: called by a task switcher when it exits, unless it was the first loaded
- and is providing the support for AX=4B03h and AX=4B04h
- the task switcher providing the identifiers may call the terminating
- task switcher's entry point as needed
- this call is available from within DOSSHELL even if the task switcher
- is not installed
- this call is supported by PC Tools v8+ CPTASK, but appears to return
- sucessfully no matter which ID is given
- SeeAlso: AX=4B02h,AX=4B03h
- --------T-2F4B05-----------------------------
- INT 2F C - DOS 5+ TASK SWITCHER - IDENTIFY INSTANCE DATA
- AX = 4B05h
- ES:BX = 0000h:0000h
- CX:DX -> task switcher entry point (see #02819)
- Return: ES:BX -> startup info structure (see #02822) or 0000h:0000h
- Notes: called by task switcher
- clients with instance data should hook this call, pass it through to
- the previous handler with unchanged registers using a simulated
- interrupt. On return, the client should create a startup info
- structure (see #02822), store the returned ES:BX in the "next"
- field, and return the address of the created structure in ES:BX
- all MS-DOS function calls are available from within this call
- this function is supported by Novell DOS 7 DOSKEY, with structure v3.00
- SeeAlso: AX=1605h,AX=160Bh,AX=4B02h
- Format of task switcher startup info structure:
- Offset Size Description (Table 02822)
- 00h 2 BYTEs major, minor version of info structure (03h,00h)
- 02h DWORD pointer to next startup info structure or 0000h:0000h
- 06h DWORD 0000h:0000h (ignored)
- 0Ah DWORD ignored
- 0Eh DWORD pointer to instance data records (see #02823)
- Format of one instance data record in array:
- Offset Size Description (Table 02823)
- 00h DWORD address of instance data (end of array if 0000h:0000h)
- 04h WORD size of instance data
- --------W-2F4B06-----------------------------
- INT 2F - MS Windows - WIN.COM - GET ??? POINTER TO WIN.COM
- AX = 4B06h
- Return: AX = 0000h
- ES:BX -> ??? function in WIN.COM
- Note: the entry point is called with
- AX = 0001h or 0003h
- BX = ???
- SeeAlso: AX=4B80h
- --------W-2F4B20-----------------------------
- INT 2F - MS Windows 3+ - WIN.COM - SET PROGRAM TO EXECUTE ON EXIT
- AX = 4B20h
- Return: AX = 0000h if successful
- DX:CX -> 256-byte buffer for pathname and commandline (see #02824)
- Notes: when the Windows function ExitWindows is called with an exit code of
- 44h, WIN.COM executes the program specified in the returned buffer
- and then restarts Windows
- the returned address is a real-mode segment:offset value
- SeeAlso: AX=4B21h
- Format of WIN.COM buffer:
- Offset Size Description (Table 02824)
- 00h 128 BYTEs commandline for program (count byte, command tail, 0Dh)
- 80h 128 BYTEs ASCIZ pathname of program to execute
- Note: the order above is for a Windows95 DOS box; it may be reversed under
- Windows 3.x
- --------W-2F4B21-----------------------------
- INT 2F - Windows95 - WIN.COM - GET NESTING LEVEL
- AX = 4B21h
- Return: AH = 00h if WIN.COM already active
- AL = number of instances of WIN.COM in memory
- SeeAlso: AX=4B20h
- --------K-2F4B52-----------------------------
- INT 2F - KeyRus v7.3 - API
- AX = 4B52h ('KR')
- BL = function number
- 00h installation check
- Return: AL = 82h if installed
- BH = major version number
- BL = minor version number
- ES destroyed
- 01h get driver status
- Return: AL??? = current status (see #02825)
- 02h set driver state
- AL = new driver state (see #02825)
- 03h blank screen (if blanking enabled when TSR was loaded)
- 04h unblank screen
- 4Ch switch to English keyboard mode
- 90h switch to Russian keyboard mode
- Return:
- Bitfields for KeyRus driver status:
- Bit(s) Description (Table 02825)
- 1-0 language mode
- 00 Latin
- 01 Russian
- 10 Alternative
- 11 unused
- 2 allow character loading (if disabled, use ROM fonts)
- 3 English keyboard support
- 7-4 used internally (read-only)
- --------W-2F4B80-----------------------------
- INT 2F - MS Windows - WSWAP.EXE - RESET INTERNAL VARIABLES
- AX = 4B80h
- Return: nothing
- Note: called by WINOLDAP.MOD
- SeeAlso: AX=4B06h
- --------p-2F4C-------------------------------
- INT 2F U - Advanced Power Management
- AH = 4Ch
- AL = function
- 00h version check
- 01h suspend system requested
- FFh suspend/resume battery notification
- ???
- Return: ???
- ----------2F4D-------------------------------
- INT 2F U - ???
- AH = 4Dh
- ???
- Return: ???
- Note: reportedly called by Kana Kanji Converter and MSKK
- --------N-2F4E53BL00-------------------------
- INT 2F - SilverNET v2+ - INSTALLATION CHECK
- AX = 4E53h ("NS")
- BL = 00h (function "installation check")
- BH = module ID (see #02826)
- Return: AX = 0000h if specified module installed
- BX = 4E53h if installed
- Program: SilverNET is an SMB-compatible peer-to-peer NOS for DOS or
- Windows systems, by Net-Source, Inc. of Santa Clara, CA.
- SeeAlso: AX=4E53h/BL=01h,AX=4E53h/BL=02h,AX=B800h,AX=B809h
- (Table 02826)
- Values for SilverNET module ID:
- 01h SilverCACHE
- 02h Workstation
- 03h NetBIOS
- 04h Peer
- 20h NS Share
- 80h NetWare help TSR
- --------N-2F4E53BL01-------------------------
- INT 2F - SilverNET - GET RUNTIME PARAMETER
- AX = 4E53h ("NS")
- BL = 01h (function "get runtime parameter")
- BH = module ID (see #02826)
- CX = parameter index (see #02827,#02829,#02830)
- Return: AX = WORD value at specified index (see #02828)
- Desc: retrieve a word of data from the specified SilverNET module
- (Table 02827)
- Values for SilverNET Peer parameter index (* = read-only):
- 00h * maximum outstanding SMB buffers
- 02h * maximum logged-in nodes
- 04h * number of shareable resources
- 06h * number of characters to print per time slice
- 08h * number of printers that can be shared
- 0Ah * number of nodes logged in
- 0Ch * number of files to allow opened
- 0Eh how fast to despool (/PSLICE)
- 10h audit flag
- 24h * far pointer to resource table (each resource is 96 bytes in length)
- 32h * far pointer to SFT (internal if SilverNET files > CONFIG.SYS files,
- else DOS SFT)
- 36h spool flags (see #02828)
- SeeAlso: #02829
- Bitfields for spool flags:
- Bit(s) Description (Table 02828)
- 0 LPT1 needs despooling
- 1 LPT2 needs despooling
- 2 LPT2 needs despooling
- 4 COM1 needs despooling
- 5 COM2 needs despooling
- 6 COM3 needs despooling
- SeeAlso: #02827
- (Table 02829)
- Values for NS Share parameter index (* = read-only):
- 00h version number (high byte = minor, low byte = major)
- 10h * segment of first lock record (other records in consecutive paragraphs)
- (if PSP field = 0000h, lock record is free)
- 12h * maximum possible number of lock records
- 14h * starting segment of sharing buffer
- (NS Share's sharing records are identical to DOS SHARE except that
- fields which are normally offsets into SHARE are segment numbers)
- 18h * size of sharing buffer in paragraphs
- 1Ah * total free paragraphs in sharing buffer
- 1Ch * current number of shared files
- 1Eh * current number of locked records
- SeeAlso: #02827,#02830
- (Table 02830)
- Values for Workstation parameter index (* = read-only):
- 00h version number (high byte = minor, low byte = major)
- 02h * size of each network buffer for file operations
- 04h * number of redirector file buffers
- 06h * size of each print cache buffer
- 08h * number of network LPT printers
- 0Ch flush time in ticks (idle time on network printer before flushing)
- 0Eh (16 WORDs) last active time for each printer
- 2Eh * stub segment if program split into two parts
- 60h receive name number for datagram listens
- 62h * 18-byte machine name
- 74h * LASTDRIVE (01h = A:, etc.)
- 7Ch row number of message box on screen
- 7Eh message time in clock ticks
- 82h * number of network adapters in use
- 84h station ID broadcast flag (never set on redirectors)
- 96h * NetBIOS names left
- 98h * NCBs left
- 9Ah * sessions left
- A2h * total number of network printers (LPT+COM)
- A4h * number of serial network printers
- A8h * segment containing file cache buffers
- AAh * segment containing print cache buffers
- ACh * bytes remaining free in HMA before program loaded
- AEh * start of free memory in HMA
- B2h * flag: using HMA
- SeeAlso: #02829
- --------N-2F4E53BL02-------------------------
- INT 2F - SilverNET - SET RUNTIME PARAMETERS
- AX = 4E53h ("NS")
- BL = 02h (function "set runtime parameters")
- BH = module ID (see #02826)
- CX = parameter index (see #02829,#02830)
- DX = new value for specified parameter
- Desc: set a WORD value in the specified SilverNET module
- Note: not all indexed parameters are writable; modifying a read-only
- parameter can result in system crashes
- SeeAlso: AX=4E53h/BL=00h,AX=4E53h/BL=01h
- --------N-2F5100-----------------------------
- INT 2F U - ODIHLP.EXE - INSTALLATION CHECK
- AX = 5100h
- Return: AL = FFh if installed
- BX = 0000h
- DX:SI -> signature string "ODI$HLP$"
- Program: ODIHLP is a real-mode helper allowing the Windows for Workgroups 3.11
- protected-mode NDIS3 protocol to work with real-mode ODI drivers
- and LSL.COM
- Note: the returned signature string might be the first field of a structure
- SeeAlso: AX=C000h"LSL.COM"
- --------k-2F5200-----------------------------
- INT 2F - JAM.SYS v1.10+ - "GetVersion" - INSTALLATION CHECK
- AX = 5200h
- Return: AH = 80h (successful) if installed
- BX = internal JAM.SYS version number
- CX = size of JAMINFO structure (see #02831,#02832)
- DX = JAM.SYS segment address
- Program: JAM.SYS is a main component of the JAM Real-Time Data Compression
- Utilities by George A. Reznik and friends (JAM Software).
- SeeAlso: AX=5201h
- Format of JAMINFO v1.10 structure:
- Offset Size Description (Table 02831)
- 00h 25 BYTEs extended BIOS parameter block (BPB)
- 19h 11 BYTEs ???
- 25h DWORD total number of sectors in JAM archive file
- (size of compressed data area)
- 29h BYTE flags (see #02833)
- 2Ah 127 BYTEs full JAM archive file name
- A9h WORD the number of fragments in archive file
- ABh 96 BYTEs archive file fragmentation list -
- array of 16 FRAGMENT structures (see #02834)
- 10Bh DWORD address of the host-drive DPB (Drive Parameter Block)
- 10Fh DWORD number of free sectors in JAM archive file
- 113h WORD device status word (see #02835)
- SeeAlso: #02832
- Format of JAMINFO v1.20 structure:
- Offset Size Description (Table 02832)
- 00h 25 BYTEs extended BIOS parameter block (BPB)
- 19h BYTE physical driver number
- 1Ah BYTE reserved
- 1Bh BYTE extended boot record signature
- 1Ch DWORD volume serial number
- 20h 11 BYTEs volume label
- 2Bh 8 BYTEs file system ID
- 33h DWORD total number of sectors in JAM archive file
- (size of compressed data area)
- 37h BYTE flags (see #02833)
- 38h 128 BYTEs full JAM archive file name
- B8h WORD the number of fragments in archive file
- BAh 96 BYTEs archive file fragmentation list -
- array of 16 FRAGMENT structures (see #02834)
- 11Ah DWORD address of the host-drive DPB (Drive Parameter Block)
- 11Eh DWORD number of free sectors in JAM archive file
- 122h WORD device status word (see #02835)
- Note: the first 33h bytes are copied from the archive file's boot sector
- SeeAlso: #02831
- Bitfields for JAMINFO flags:
- Bit(s) Description (Table 02833)
- 2-0 reserved
- 3 (v1.20+)
- 4 enable direct write requests (Int 26h, non-DOS requests, etc.)
- 5 read-only mode
- 6 no write-behind caching
- 7 full undelete-compatible allocation strategy
- SeeAlso: #02831,#02832
- Format of JAM FRAGMENT structure:
- Offset Size Description (Table 02834)
- 00h WORD starting sector (low word)
- 02h BYTE starting sector (high byte)
- 03h WORD size of fragment (low word)
- 05h BYTE size of fragment (high byte)
- SeeAlso: #02831,#02832
- (Table 02835)
- Values for JAM.SYS status (high byte):
- 00h successful
- 01h drive is not a JAM drive
- 02h drive is already attached
- 03h archive file cluster size value is larger than driver's one
- 04h drive is not attached
- 05h drive is locked
- 06h drive is not locked
- 07h bad physical-level request
- 08h host drive reading/writing error
- 09h bad entries in JAM descriptor table
- 0Ah compressed data integrity error
- 0Bh archive file overflow
- 0Ch bad DOS request
- 0Dh incorrect parameters in JAMINFO structure
- Note: the low byte of the status is the DOS error code for the Host drive
- SeeAlso: #02598 at INT 2F/AX=0802h
- --------k-2F5201-----------------------------
- INT 2F - JAM.SYS v1.10+ - "GetInfo" - GET COMPRESSED DRIVE INFORMATION
- AX = 5201h
- DL = compressed drive number (0-default, 1-A:, etc.)
- DS:BX -> buffer for JAMINFO structure (see #02831,#02832)
- Return: AH = status (00h,01h) (see #02835)
- SeeAlso: AX=5200h
- --------k-2F5202-----------------------------
- INT 2F - JAM.SYS v1.10+ - "Attach" - MOUNT COMPRESSED DRIVE
- AX = 5202h
- DL = drive number (0-default, 1-A:, etc.) to attach to the JAM
- archive file
- DS:BX -> pointer to JAMINFO structure (see #02831,#02832), which
- contains parameters of the JAM file to mount, and pointer
- to the host drive DPB (i.e. DPB of the drive on which the
- JAM file is located)
- Return: AH = status (00h,02h,03h,08h,09h,0Dh) (see also #02835)
- 03h archive file cluster size value is larger than driver's - not
- mounted
- 09h bad entries in JAM descriptor table - file mounted read-only
- AL = host drive error code (see #02598 at INT 2F/AX=0802h)
- SeeAlso: AX=5203h
- --------k-2F5203-----------------------------
- INT 2F - JAM.SYS v1.10+ - "Detach" - UNMOUNT COMPRESSED DRIVE
- AX = 5203h
- DL = drive number (0-default, 1-A:, etc.) to detach
- Return: AH = status (00h,01h,04h,05h,08h,09h,0Bh,0Dh) (see #02835)
- AL = host drive error code (see #02598 at INT 2F/AX=0802h)
- SeeAlso: AX=5202h
- --------k-2F5204-----------------------------
- INT 2F - JAM.SYS v1.10+ - "Lock" - LOCK COMPRESSED DRIVE
- AX = 5204h
- DL = drive number (0-default, 1-A:, etc.) to lock
- Return: AH = status (00h,01h,04h,05h,08h,09h,0Bh,0Dh) (see #02835)
- AL = host drive error code (see #02598 at INT 2F/AX=0802h)
- SeeAlso: AX=5205h, AX=5206h, AX=5207h
- --------k-2F5205-----------------------------
- INT 2F - JAM.SYS v1.10+ - "UnLock" - UNLOCK COMPRESSED DRIVE
- AX = 5205h
- DL = drive number (0-default, 1-A:, etc.) to unlock
- Return: AH = status (00h,01h,04h,06h,08h,09h,0Dh) (see #02835)
- AL = host drive error code (see #02598 at INT 2F/AX=0802h)
- SeeAlso: AX=5204h, AX=5206h, AX=5207h
- Note: Lock and UnLock functions were added to the JAM API to prevent
- asynchronous physical-level access (see AX=5206h,AX=5207h) to
- compressed data on JAM drives. In other words, two or more programs
- which use JAM API (say, JMAX optimizer and JCHKDSK - disk checker)
- cannot be run on the same JAM drive simultaneously.
- --------k-2F5206-----------------------------
- INT 2F - JAM.SYS v1.10+ - "Read" - PHYSICAL READ DATA FROM JAM ARCHIVE
- AX = 5206h
- DL = drive number (0-default, 1-A:, etc.)
- DS:BX -> disk transfer packet (see #02836)
- Return: AH = status (00h,01h,04h,06h,07h,08h,0Dh) (see #02835)
- AL = host drive error code (see #02598 at INT 2F/AX=0802h)
- Program: JAM.SYS is a main component of the JAM Real-Time Data Compression
- Utilities by George A. Reznik and friends (JAM Software).
- SeeAlso: AX=5207h
- Format of disk transfer packet:
- Offset Size Description (Table 02836)
- 00h DWORD sector number
- 04h WORD number of sectors to read(write)
- 06h DWORD transfer address
- --------k-2F5207-----------------------------
- INT 2F - JAM.SYS v1.10+ - "Write" - PHYSICAL WRITE DATA TO JAM ARCHIVE
- AX = 5207h
- DL = drive number (0-default, 1-A:, etc.)
- DS:BX -> disk transfer packet (see #02836)
- Return: AH = status (00h,01h,04h,06h,07h,08h,0Dh) (see #02835)
- AL = host drive error code (see #02598 at INT 2F/AX=0802h)
- SeeAlso: AX=5206h
- --------p-2F53-------------------------------
- INT 2F U - POWER.EXE - APM event broadcasting???
- AH = 53h
- AL = event???
- 05h CPU idle
- 0Bh PM event broadcast API
- Return: ???
- Note: called by MS Windows 3.1 POWER.DRV; hooked by MS Mouse driver v8.20+
- and PC-Cache v8.0
- SeeAlso: AX=530Bh,AX=5400h,INT 33/AX=002Fh
- --------p-2F530B-----------------------------
- INT 2F U - ??? (MOUSEPWR.COM, others) - ???
- AX = 530Bh
- BX = subfunction
- 0003h ???
- 0004h ???
- ???
- Return: ???
- Note: it appears that subfunction 0003h reads or restores the current mouse
- settings (the MS Mouse driver hooks AX=530Bh), and 0004h might be
- the converse
- --------p-2F5400-----------------------------
- INT 2F U - POWER.EXE - INSTALLATION CHECK
- AX = 5400h
- Return: AX = POWER.EXE version (AH = major, AL = minor) if installed
- BX = 504Dh ("PM")
- CF clear
- Note: called by MS Windows 3.1 POWER.DRV
- SeeAlso: AH=53h,AX=5401h,AX=5402h,AX=5481h,AX=5482h
- --------p-2F5401-----------------------------
- INT 2F U - POWER.EXE - GET/SET POWER STATUS
- AX = 5401h
- BH = function
- 00h get status
- Return: BL = current power management status (see #02837)
- 01h set status
- BL = new power managment status (see #02837)
- Return: AX = function status (see #02838)
- Note: called by MS Windows 3.1 POWER.DRV
- SeeAlso: AH=53h,AX=5400h,AX=5402h,AX=5403h
- Bitfields for power management status:
- Bit(s) Description (Table 02837)
- 0 POWER.EXE power management enabled
- 1 APM firmware power management enabled
- 2-7 reserved (0)
- Notes: bit 1 is ignored if there is no APM firmware
- bits 1-0: 00 = POWER OFF, 10 = POWER STD, 11 = POWER ADV
- (Table 02838)
- Values for POWER.EXE function status:
- 0000h successful
- 0002h "ERROR_PM_ALREADY_CONNECTED"
- 0003h "ERROR_PM_NOT_CONNECTED"
- 0087h "ERROR_PM_INVALID_PARAMETER"
- --------p-2F5402-----------------------------
- INT 2F U - POWER.EXE - GET/SET IDLE DETECTION STRATEGY
- AX = 5402h
- BH = subfunction
- 00h get
- other set
- BL = detection strategy (00h-0Fh or FFh)
- Return: BX = current/new detection strategy
- SeeAlso: AH=53h,AX=5400h,AX=5401h,AX=5481h,AX=5482h
- --------p-2F5403-----------------------------
- INT 2F U - POWER.EXE - GET/SET ADVANCED POWER MANAGEMENT SETTING
- AX = 5403h
- BX = new power management setting or 0000h to get current setting
- Return: AX = status
- 0000h successful
- BX = power management setting (see #02839)
- other error code
- SeeAlso: AX=5401h,AX=5480h
- (Table 02839)
- Values for power management setting:
- 0001h-0005h "min"
- 0006h "reg"
- 0007h-0008h "max"
- --------t-2F5453-----------------------------
- INT 2F - TesSeRact RAM-RESIDENT PROGRAM INTERFACE
- AX = 5453h
- BX = subfunction
- 00h installation check
- CX = 0000h
- DS:SI -> 8-char blank-padded name (see #02840)
- Return: AX = FFFFh installed
- CX = ID number of already-installed copy
- AX = anything else, not installed
- CX = ID number for TSR when installed
- 01h get user parameters
- CX = TSR ID number
- Return: AX = status
- 0000h successful
- ES:BX -> user parameter block (see #02841)
- nonzero failed
- 02h check if hotkey in use
- CL = scan code of hot key (see #00006)
- Return: AX = FFFFh hot key conflicts with another TSR
- otherwise safe to use the hotkey
- 03h replace default critical error handler
- CX = TSR ID number
- DS:SI -> new routine for INT 24h
- Return: AX = nonzero, unable to install new handler
- 04h get internal data area
- CX = TSR ID number
- Return: AX = status
- 0000h successful
- ES:BX -> TSR's internal data area (see #02842)
- nonzero, TSR not found
- 05h set multiple hot keys
- CX = TSR ID number
- DL = number of additional hot keys to allocate
- DS:SI -> table of hot keys
- BYTE hotkey scan code (see #00006)
- BYTE hotkey shift state
- BYTE flag value to pass to TSR (nonzero)
- Return: AX = nonzero, unable to install hot keys
- 06h - 0Fh reserved
- 10h enable TSR
- CX = TSR ID number
- Return: AX = nonzero, unable to enable
- 11h disable TSR
- CX = TSR ID number
- Return: AX = nonzero, unable to disable
- 12h unload TSR
- CX = TSR ID number
- Return: AX = nonzero, invalid TSR number
- Note: if any interrupts used by TSR have been grabbed by
- another TSR, the TesSeRact routines will wait until
- it is safe to remove the indicated TSR from memory
- 13h restart TSR
- CX = TSR ID number of TSR which was unloaded but is still in
- memory
- Return: AX = nonzero, unable to restart TSR
- 14h get status word
- CX = TSR ID number
- Return: AX = FFFFh invalid ID number
- = other, successful
- BX = bit flags
- 15h set status word
- CX = TSR ID number
- DX = new bit flags
- Return: AX = nonzero, unable to set status word
- 16h get INDOS state at popup
- CX = TSR ID number
- Return: AX = 0000h successful
- BX = value of INDOS flag
- 17h - 1Fh reserved
- 20h call user procedure
- CX = TSR ID number
- ES:DI -> user-defined data
- Return: AX = 0000h successful
- 21h stuff keystrokes into keyboard buffer
- CX = TSR ID number
- DL = speed
- 00h stuff keystrokes only when buffer is empty
- 01h stuff up to four keystrokes per clock tick
- 02h stuff up to 15 keystrokes per clock tick
- DH = scan code flag
- if zero, buffer contains alternating ASCII and scan codes
- if nonzero, buffer contains only ASCII codes
- SI = number of keystrokes
- ES:DI -> buffer to stuff
- Return: AX = 0000h success
- F0F0h user aborted with ^C or ^Break
- other unable to stuff keystrokes
- 22h (v1.10) trigger popup
- CX = TSR ID number
- Return: AX = 0000h success, TSR will either pop up or beep to
- indicate that it is unable to pop up
- nonzero invalid ID number
- 23h (v1.10) invoke TSR's background function
- CX = TSR ID number
- Return: AX = 0000h success
- FFFFh not safe to call background function
- nonzero invalid ID number
- 24h - 2Fh reserved
- Notes: Borland's THELP.COM popup help system for Turbo Pascal and Turbo C
- (versions 1.x and 2.x only) fully supports the TesSeRact API, as
- do the SWAP?? programs by Innovative Data Concepts.
- AVATAR.SYS supports functions 00h and 01h (only the first three fields
- of the user parameter block) using the name "AVATAR "
- SeeAlso: AX=CAFEh,INT 16/AX=55FFh,INT 2D"AMIS"
- Index: installation check;TesSeRact TSR interface|uninstall;TesSeRact
- (Table 02840)
- Values for TesSeRact names:
- "AVATAR " AVATAR.SYS
- "QeditTSR" TSR version of SemWare's Qedit editor
- "SCRNBLNK" Trusted Access screen blanker
- Format of TesSeRact User Parameter Block:
- Offset Size Description (Table 02841)
- 00h 8 BYTEs blank-padded TSR name
- 08h WORD TSR ID number
- 0Ah DWORD bitmap of supported functions
- 0Eh BYTE scan code of primary hotkey (see #00006)
- 00h = pop up when shift states match
- FFh = no popup (if shift state also FFh)
- 0Fh BYTE shift state of primary hotkey
- FFh = no popup (if scan code also FFh)
- 10h BYTE number of secondary hotkeys
- 11h DWORD pointer to extra hotkeys set by func 05h
- 15h WORD current TSR status flags
- 17h WORD PSP segment of TSR
- 19h DWORD DTA for TSR
- 1Dh WORD default DS for TSR
- 1Fh DWORD stack at popup
- 23h DWORD stack at background invocation
- Index: hotkeys;TesSeRact TSR interface
- Format of TSR internal data area:
- Offset Size Description (Table 02842)
- 00h BYTE revision level of TesSeRact library
- 01h BYTE type of popup in effect
- 02h BYTE INT 08 occurred since last invocation
- 03h BYTE INT 13 occurred since last invocation
- 04h BYTE active interrupts
- 05h BYTE active soft interrupts
- 06h BYTE DOS major version
- 07h BYTE how long to wait before popping up
- 08h DWORD pointer to INDOS flag
- 0CH DWORD pointer to DOS critical error flag
- 10h WORD PSP segment of interrupted program
- 12h WORD PSP segment of prog interrupted by INT 28
- 14h DWORD DTA of interrupted program
- 18h DWORD DTA of program interrupted by INT 28
- 1Ch WORD SS of interrupted program
- 1Eh WORD SP of interrupted program
- 20h WORD SS of program interrupted by INT 28
- 22h WORD SP of program interrupted by INT 28
- 24h DWORD INT 24 of interrupted program
- 28h 3 WORDs DOS 3.0+ extended error info
- 2Eh BYTE old BREAK setting
- 2Fh BYTE old VERIFY setting
- 30h BYTE were running MS WORD 4.0 before popup
- 31h BYTE MS WORD 4.0 special popup flag
- 32h BYTE enhanced keyboard call in use
- 33h BYTE delay for MS WORD 4.0
- 11 times (for INTs 08h,09h,13h,16h,1Ch,21h,28h,2Fh,1Bh,23h, and 24h):
- DWORD old interrupt vector
- BYTE interrupt number
- WORD offset in TesSeRact code segment of new interrupt handler
- --------p-2F5480-----------------------------
- INT 2F U - POWER.EXE - GET/SET ???
- AX = 5480h
- BX = direction
- 0000h get
- other set
- CX = size of buffer (at least 0010h)
- DS:SI -> buffer
- Return: AX = status
- 0000h successful
- other error code
- SeeAlso: AX=5400h,AX=5481h,AX=548Fh
- --------p-2F5481-----------------------------
- INT 2F U - POWER.EXE - GET STATISTICS
- AX = 5481h
- BX = which statistics
- 0000h idle detection
- 0001h APM statistics
- CX = length of buffer in bytes
- DS:SI -> buffer for statistics (see #02843,#02844)
- Return: AX = status
- 0000h successful
- 0071h "ERROR_PM_BUFFER_TOO_SMALL"
- 0087h "ERROR_PM_INVALID_PARAMETER"
- SeeAlso: AH=53h,AX=5400h,AX=5480h,AX=5402h,AX=5482h
- Format of POWER.EXE idle detection statistics:
- Offset Size Description (Table 02843)
- 00h DWORD "CPU_ON_TIME" total time CPU is active with POWER.EXE idle
- detection enabled, in timer ticks
- 04h DWORD "CPU_IDLE_TIME" timer ticks during which CPU was idle
- (divide by previous to get idle rate)
- 08h DWORD total idle calls
- 0Ch DWORD "TOTAL_APP_IDLE" total INT 2Fh idle calls
- 10h DWORD "TOTAL_DOS_YIELD" total INT 28h idle calls
- 14h DWORD "TOTAL_KEY_IDLE" total INT 16h idle calls
- 18h DWORD "TOTAL_DOS_IDLE" total INT 2Ah idle calls
- Format of APM statistics:
- Offset Size Description (Table 02844)
- 00h DWORD "RESUME_COUNT" total number of resumes since last APM_ENABLE
- --------p-2F5482-----------------------------
- INT 2F U - POWER.EXE - GET/SET APM POLLING FREQUENCY
- AX = 5482h
- BX = new polling frequency or 0000h to get current frequency
- Return: AX = 0000h (successful)
- BX = current frequency if BX=0000h on entry
- SeeAlso: AH=53h,AX=5400h,AX=5401h,AX=5480h,AX=5481h,AX=548Fh
- --------p-2F548F-----------------------------
- INT 2F U - POWER.EXE - GET/SET ???
- AX = 548Fh
- BX = ??? or 0000h to get current ???
- Return: AX = 0000h (successful)
- BX = current ???
- CX = ???
- SeeAlso: AX=5400h,AX=5480h,AX=5482h
- --------l-2F5500-----------------------------
- INT 2F U - DOS 5+ - COMMAND.COM INTERFACE
- AX = 5500h
- Return: AX = 0000h if an instance of COMMAND.COM is already running
- DS:SI -> entry point table
- Notes: used to access the shareable portion of COMMAND.COM, which may have
- been moved into the HMA; only the primary COMMAND.COM retains this
- portion
- procedures called from a dispatcher in COMMAND's resident portion;
- most assume that the segment address of the resident portion is on
- the stack and are thus not of general use
- SeeAlso: AX=5501h
- --------l-2F5501-----------------------------
- INT 2F U - DOS 5+ - ROM COMMAND.COM INTERFACE
- AX = 5501h
- Return: ???
- Note: used to determine whether the caller is the first instance of ROM
- COMMAND.COM
- SeeAlso: AX=5500h
- --------R-2F5600-----------------------------
- INT 2F - INTERLNK - INSTALLATION CHECK
- AX = 5600h
- DX = magic value FFFFh
- BL = instance number (00h = any, 01h = first loaded, etc.)
- Return: AL = FFh if installed
- BL = instance number
- CX = version number (CL = major, CH = minor)
- DX = resident CS of driver, DX:0000h -> header (see #02845)
- SeeAlso: AX=5601h,AX=5602h,INT 60/AX=0000h
- Format of Interlnk device driver header:
- Offset Size Description (Table 02845)
- 00h DWORD pointer to next driver, offset=FFFFh if last driver
- 04h WORD device attributes (see #01647,#01648)
- 06h WORD device strategy entry point
- 08h WORD device interrupt entry point
- 0Ah 8 BYTEs character device name "NUL2 "
- 12h 165 BYTEs ???
- B7h 67 BYTEs fully qualified Interlnk filename
- FAh 6 BYTEs ???
- 100h DWORD pointer back to Interlnk filename at offset B7h
- 104h 8 BYTEs ???
- 10Ch BYTE total number of redirected drives
- 10Dh BYTE first local drive number (0=A:)
- 10Eh BYTE printer redirection (0=no, 1=yes)
- 10Fh BYTE ???
- 110h 3 BYTEs LPT1...3 status (0FFh=invalid)
- 113h 26 BYTEs remote drive number (0=A:, 0FEh=unused) (refer to note below)
- 12Dh 26 BYTEs always 0FEh ???
- 147h 26 BYTEs always 0FFh ???
- Note: to obtain the remote drive number, subtract the value at offset 10Ch
- from the local drive number before indexing into the table at 113h
- (example: if local drives F, G, H are remote drives C, F, E then
- the first three bytes at offset 113h are 02h, 05h, 04h)
- for each instance of Interlnk, an extra device driver is loaded, but
- all have the same device name NUL2
- SeeAlso: #01646 at INT 21/AH=52h
- --------R-2F5601-----------------------------
- INT 2F - INTERLNK - CHECK IF REDIRECTED DRIVE
- AX = 5601h
- DX = magic value FFFFh
- BH = drive number (0=A:)
- BL = instance number (00h=any, 01h=first loaded, etc.)
- Return: (as for AL=00h if redirected drive)
- SeeAlso: AX=5600h,AX=5601h
- --------R-2F5602-----------------------------
- INT 2F - INTERLNK - CHECK IF PORT IN USE
- AX = 5602h
- DX = magic value FFFFh
- BL = instance number (00h=any, 01h=first loaded, etc.)
- CX = base port address of COM / LPT port to check
- Return: (as for AL=00h if port in use for a redirected drive)
- SeeAlso: AX=5600h
- --------d-2F5700-----------------------------
- INT 2F U - IOMEGA DRIVERS - INSTALLATION CHECK
- AX = 5700h
- BX = program ID??? (0201h used by GUEST.EXE)
- DX = 496Fh ('Io')
- Return: AL = status
- 00h not installed
- FFh installed
- SeeAlso: AX=5701h,AX=5710h,AX=5711h,AX=5712h
- --------d-2F5701-----------------------------
- INT 2F U - IOMEGA DRIVERS - ???
- AX = 5701h
- BX = program ID??? (0201h used by GUEST.EXE)
- DX = 496Fh ('Io')
- Return: AX = 0001h
- SeeAlso: AX=5700h,AX=5710h,AX=5711h,AX=5712h
- --------d-2F5710-----------------------------
- INT 2F U - IOMEGA DRIVERS - GET DRIVER INFORMATION???
- AX = 5710h
- BX = program ID??? (0201h used by GUEST.EXE)
- DX = 496Fh ('Io')
- Return: AX = ??? (BX ORed with ???)
- BX = ??? (internal variable)
- CX = ??? (internal variable)
- DX = ??? (CX ORed with ???)
- SeeAlso: AX=5700h,AX=5701h,AX=5711h,AX=5712h
- --------d-2F5711-----------------------------
- INT 2F U - IOMEGA DRIVERS - LOCK MEDIA IN DRIVE
- AX = 5711h
- BX = program ID??? (0201h used by GUEST.EXE)
- DX = 496Fh ('Io')
- Return: CF clear if successful (storage medium in drive)
- AX = new lock count
- CF set on error (drive empty)
- SeeAlso: AX=5700h,AX=5701h,AX=5710h,AX=5712h
- --------d-2F5712-----------------------------
- INT 2F U - IOMEGA DRIVERS - UNLOCK MEDIA IN DRIVE / EJECT
- AX = 5712h
- BX = program ID??? (0201h used by GUEST.EXE)
- DX = 496Fh ('Io')
- Return: AX = new lock count (00h = unlocked)
- Note: if the lock count was already zero, the storage medium is ejected
- from the drive
- SeeAlso: AX=5700h,AX=5701h,AX=5710h,AX=5711h
- --------c-2F5758BX4858-----------------------
- INT 2F U - Helix Multimedia Cloaking - CACHECLK - INSTALLATION CHECK
- AX = 5758h
- BX = 4858h ('HX')
- DX = 4443h ('DC')
- CX <> 5758h
- Return: BX = 6878h if installed
- DX = 6463h if installed
- CX = version (CH=major,CL=minor)
- Program: CACHECLK is a 'Cloaked' disk cache by Helix Software
- Note: returns with registers unchanged if CX=5758h on entry
- SeeAlso: INT 16/AX=5758h/BX=4858h,INT 2F/AX=4310h"Cloaking"
- --------X-2F5D00-----------------------------
- INT 2F U - PCMCIA - AWARD PCDISK - GET INFO FROM DRIVER ???
- AX = 5D00h
- Return: ES:BX -> ???
- Note: supported by Ventura Micro / Award PCDISK.EXE v1.02c PCMCIA/ATA driver
- SeeAlso: AX=5D01h,INT 21/AX=440Dh"DOS 3.2+"
- --------X-2F5D01-----------------------------
- INT 2F U - PCMCIA - AWARD PCDISK - PUT INFO INTO DRIVER ???
- AX = 5D01h
- ES:BX -> ???
- Return: nothing
- Note: supported by Ventura Micro / Award PCDISK.EXE v1.02c PCMCIA/ATA driver
- SeeAlso: AX=5D00h,INT 21/AX=440Dh"DOS 3.2+"
- --------s-2F60FFDL00-------------------------
- INT 2F U - IPLAY v1.00b - INSTALLATION CHECK
- AX = 60FFh
- DL = 00h (function number)
- BX = 5344h ('SD')
- CX = 4D50h ('MP')
- Return: AX = 4F4Bh ('OK') if installed
- Program: IPLAY is the Inertia Player by Prime and Excalibur for .MODules
- (digitized music files)
- Note: in version 1.00b, any value for DL except 01h invokes this function
- SeeAlso: AX=60FFh/DL=01h
- --------s-2F60FFDL01-------------------------
- INT 2F U - IPLAY v1.00b - GET DATA SEGMENT
- AX = 60FFh
- DL = 01h (function number)
- BX = 5344h ('SD')
- CX = 4D50h ('MP')
- Return: AX = data segment
- Program: IPLAY is the Inertia Player by Prime and Excalibur for .MODules
- (digitized music files)
- SeeAlso: AX=60FFh/DL=00h
- --------v-2F6282-----------------------------
- INT 2F U - PC Tools v7.0+ VDEFEND, VSAFE, VWATCH, DATAMON - SET ??? ADDRESS
- AX = 6282h
- CX:DX -> ??? or 0000h:0000h
- DI = segment of ??? record (see #02846) or 0000h/FFFFh to ignore
- Return: BX = 0062h
- Note: if CX:DX = 0000h:0000h on entry, the ??? address is not changed
- (DATAMON only)
- SeeAlso: INT 13/AH=FAh"VSAFE",INT 21/AH=FAh"VDEFEND"
- Format of VSAFE/VWATCH record:
- Offset Size Description (Table 02846)
- 00h DWORD ???
- 04h WORD offset of ??? in record's segment
- VSAFE 2.0 sets byte at +01h to 56h or 58h
- VWATCH 2.1 sets byte at +02h to 56h or 58h
- 06h 2 BYTEs ???
- 08h BYTE ??? (01h/other)
- --------v-2F6284BX0000-----------------------
- INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - INSTALLATION CHECK
- AX = 6284h
- BX = 0000h
- CX = 0000h
- Return: AX = segment of resident code
- BX = 5555h
- CX = 5555h
- Note: also supported by DOS 6 UNDELETE which is licensed from PC Tools
- SeeAlso: AX=6284h/BX=0001h,INT 16/AX=FFA3h/BX=0000h
- --------v-2F6284BX0001-----------------------
- INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
- AX = 6284h
- BX = 0001h
- CX = 0001h
- Return: AX:BX -> ??? data (see #02847)
- CX = BX
- SeeAlso: AX=6284h/BX=0000h
- Format of DPROTECT data for v9.0:
- Offset Size Description (Table 02847)
- 00h 5 BYTEs ???
- 05h WORD resident code segment (may be segment of DWORD at +03h)
- 07h DWORD -> FAR function to sound alert tone
- ???
- --------v-2F6284BX0002-----------------------
- INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET OPTIONS
- AX = 6284h
- BX = 0002h
- CX = 0002h
- Return: AX = options (see #02848)
- BX = ??? (0000h for v9)
- CX = AX
- DX = BX
- Note: also supported by DOS 6 UNDELETE which is licensed from PC Tools
- SeeAlso: AX=6284h/BX=0000h,AX=6284h/BX=0003h
- Bitfields for DATAMON/DPROTECT options:
- Bit(s) Description (Table 02848)
- 1 ???
- 12 disabled
- 13 using Delete Sentry
- 14 using Delete Tracker
- --------v-2F6284BX0003-----------------------
- INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - SET OPTION??? FLAGS
- AX = 6284h
- BX = 0003h
- CX = flags (see #02849)
- DX = flags
- bit 15: ???
- Note: v9 DPROTECT only checks bit 12 of CX, and ignores DX entirely
- SeeAlso: AX=6284h/BX=0002h
- Bitfields for DATAMON/DPROTECT CX flags:
- Bit(s) Description (Table 02849)
- 3 ???
- 5 ???
- 10 ???
- 12 disable DATAMON/DPROTECT
- --------v-2F6284BX0004-----------------------
- INT 2F U - PC Tools v8 DATAMON, v9+ DPROTECT - ???
- AX = 6284h
- BX = 0004h
- CX = 0004h
- Return: AX = 5555h
- BX = ??? (0800h)
- CX = ??? (FCCCh for v8, FCCBh for v9)
- --------V-2F6400-----------------------------
- INT 2F - SCRNSAV2.COM - INSTALLATION CHECK
- AX = 6400h
- Return: AL = installation state
- 00h not installed
- FFh installed
- Program: SCRNSAV2.COM is a screen saver for PS/2s with VGA by Alan Ballard
- SeeAlso: INT 10/AX=5555h,INT 14/AX=AA01h
- Index: screen saver;SCRNSAV2
- --------N-2F7000-----------------------------
- INT 2F - License Service API - INSTALLATION CHECK
- AX = 7000h
- CX = license server index (0000h to 001Fh)
- Return: AL = status
- 00h not installed
- FFh installed
- Notes: The License Service API is being maintained by Microsoft but is being
- supported by a large number of companies including Apple, Banyan,
- DEC, HP, Lotus, Microsoft, Novell, Software Publishers Association,
- and Wordperfect (not a complete list!)
- Each license service provider must search for the next free index
- slot to use
- SeeAlso: AX=7001h,AX=7003h,AX=7004h,AX=7005h
- --------N-2F7001-----------------------------
- INT 2F - License Service API - REQUEST LICENSE
- AX = 7001h
- CX = license server index (0000h to 001Fh)
- DS:DX -> SLSREQUEST structure (see #02850)
- Return: AX = status
- 0000h success
- else provider error code
- ES:BX = provider specific handle for the license context
- SeeAlso: AX=7002h,AX=7004h,AX=7005h
- Format of License Service SLSREQUEST structure:
- Offset Size Description (Table 02850)
- 00h DWORD (ret) status code
- 04h DWORD (ret) handle identifying context
- 08h DWORD (call) address of Publisher string
- 0Ch DWORD (call) address of Product string
- 10h DWORD (call) address of Version string
- 14h DWORD units required
- 18h DWORD address of comment string
- 1Ch DWORD address of SLSCHALLENGE structure (see #02851)
- Format of License Service SLSCHALLENGE structure:
- Offset Size Description (Table 02851)
- 00h DWORD algorithm (currently always 1)
- 04h DWORD secret to be challenged (1-255)
- 08h DWORD size of challenge in bytes (1-255)
- 0Ch N BYTEs challenge data
- --------N-2F7002-----------------------------
- INT 2F - License Service API - RELEASE LICENSE
- AX = 7002h
- CX = license server index (0000h to 001Fh)
- DS:DX -> SLSRELEASE structure (see #02852)
- ES:BX = provider specific handle for the license context
- Return: AL = status
- 00h not installed
- FFh installed
- SeeAlso: AX=7001h,AX=7005h
- Format of License Service SLSRELEASE structure:
- Offset Size Description (Table 02852)
- 00h DWORD handle indentifying license context
- 04h DWORD total units consumed
- 08h DWORD address of comment string
- --------N-2F7003-----------------------------
- INT 2F - License Service API - UPDATE
- AX = 7003h
- CX = license server index (0000h to 001Fh)
- DS:DX -> SLSUPDATE structure (see #02853)
- ES:BX = provider specific handle for the license context
- Return: AL = status
- 00h not installed
- FFh installed
- SeeAlso: AX=7004h,AX=7005h
- Format of License Service SLSUPDATE structure:
- Offset Size Description (Table 02853)
- 00h DWORD (ret) status code
- 04h DWORD (call) handle identifying license context
- 08h DWORD (call) total units consumed
- 0Ch DWORD additional units required
- 10h DWORD address of comment string
- 14h DWORD address of SLSCHALLENGE structure (see #02851)
- --------N-2F7004-----------------------------
- INT 2F - License Service API - GET ERROR
- AX = 7004h
- CX = license server index (0000h to 001Fh)
- DS:DX -> SLSGETERROR structure (see #02854)
- ES:BX = provider specific handle for the license context
- Return: AL = status
- 00h not installed
- FFh installed
- SeeAlso: AX=7000h,AX=7001h
- Format of License Service SLSGETERROR structure:
- Offset Size Description (Table 02854)
- 00h DWORD (ret) status code
- 04h DWORD handle identifying license context
- 08h DWORD error code
- 0Ch DWORD buffer size in bytes
- 10h N BYTEs data buffer
- --------N-2F7005-----------------------------
- INT 2F - License Service API - QUERY LICENSE
- AX = 7005h
- CX = license server index (0000h to 001Fh)
- DS:DX -> SLSQUERY structure (see #02855)
- ES:BX = provider specific handle for the license context
- Return: AL = status
- 00h not installed
- FFh installed
- SeeAlso: AX=7001h,AX=7002h
- Format of License Service SLSQUERY structure:
- Offset Size Description (Table 02855)
- 00h DWORD (ret) status code
- 04h DWORD handle identifying license context
- 08h DWORD information index
- 0Ch DWORD buffer size in bytes
- 10h N BYTEs data buffer
- --------K-2F7041BX4B70-----------------------
- INT 2F U - HP 200LX - KEY200 - INSTALLATION CHECK
- AX = 7041h
- BX = 4B70h
- Return: BX = 7965h if keyboard remapper KEY200.COM installed
- --------d-2F7200-----------------------------
- INT 2F - SRDISK v1.30+ - INSTALLATION CHECK
- AX = 7200h
- Return: AL = FFh if installed
- ES = segment of device driver header (see #02856)
- Program: SRDISK is a freeware resizeable RAMdisk by Marko Kohtala
- SeeAlso: AX=7201h
- Format of SRDISK device driver header:
- Offset Size Description (Table 02856)
- 00h 10 BYTEs same as standard device driver header
- (see #01646 at INT 21/AH=52h)
- 0Ah BYTE number of subunits (drives) supported by driver
- 0Bh 3 BYTEs signature "SRD"
- 0Eh 4 BYTEs memory type string ("XMS "/"EMS ")
- 12h 4 BYTEs ASCII driver version string "N.NN"
- 16h BYTE 00h
- 17h BYTE configuration format version (currently 00h or 01h)
- 18h WORD offset of drive configuration data
- SeeAlso: #01646
- --------d-2F7201-----------------------------
- INT 2F - SRDISK v2.02 - GET CODE/DATA SEGMENT
- AX = 7201h
- Return: AL = FFh if installed
- ES = segment of device driver header (see #02856)
- Program: SRDISK is a freeware resizeable RAMdisk by Marko Kohtala
- SeeAlso: AX=7200h
- --------N-2F7A00-----------------------------
- INT 2F - Novell NetWare - LOW-LEVEL API (IPX) INSTALLATION CHECK
- AX = 7A00h
- Return: AL = status
- 00h not installed
- FFh installed
- ES:DI -> FAR entry point for routines accessed exclusively
- through INT 7A in NetWare versions through 2.0a.
- Call with same values as INT 7A
- ES:BX -> two bytes containing IPX major/minor version
- (IPXODI v2.12; BX unchanged by older IPX drivers)
- CX = ES ???
- SeeAlso: AX=7AFFh/BX=0000h,AX=D800h,INT 64"Novell",INT 7A"LOW-LEVEL API"
- --------N-2F7A10-----------------------------
- INT 2F U - Novell NetWare - TBMI v1.1+ - GET TBMI STATUS
- AX = 7A10h
- Return: DH = major TBMI version number
- DL = minor TBMI version number (01h for v1.1)
- CX = segment address of TBMI resident part
- BX = status word of TBMI (see #02857)
- Note: TBMI is the Task-Switched Buffer Manager Interface
- SeeAlso: AX=7A11h,AX=7A12h,AX=7A13h,AX=7A14h
- Bitfields for NetWare TBMI status word:
- Bit(s) Description (Table 02857)
- 0 INT2F intercepted by TBMI
- 1 INT7A intercepted by TBMI
- 2 INT64 intercepted by TBMI
- 3-14 reserved or unused ???
- 15 outstanding task ID was detected
- --------N-2F7A11-----------------------------
- INT 2F U - Novell NetWare - TBMI v1.1+ - GET INT2F HANDLERS
- AX = 7A11h
- Return: ES:BX -> old INT 2F handler
- DS:DX -> TBMI INT 2F handler
- SeeAlso: AX=7A10h,AX=7A12h,AX=7A13h,AX=7A1Ah
- --------N-2F7A12-----------------------------
- INT 2F U - Novell NetWare - TBMI v1.1+ - GET INT64 HANDLERS
- AX = 7A12h
- Return: ES:BX -> old INT 64 handler
- DS:DX -> TBMI INT 64 handler
- SeeAlso: AX=7A10h,AX=7A11h,AX=7A13h
- --------N-2F7A13-----------------------------
- INT 2F U - Novell NetWare - TBMI v1.1+ - GET INT7A HANDLERS
- AX = 7A13h
- Return: ES:BX -> old INT 7A handler
- DS:DX -> TBMI INT 7A handler
- SeeAlso: AX=7A10h,AX=7A11h,AX=7A12h
- --------N-2F7A14-----------------------------
- INT 2F U - Novell NetWare - TBMI v1.1+ - GET STATISTICS
- AX = 7A14h
- CX = statistic to retrieve
- 0000h available diagnostic functions???
- Return: CX = maximum available function??? (000Ch for v2.0)
- 0001h buffers in use
- Return: CX = TBMI buffers currently in use
- 0002h maximum buffers used
- Return: CX = maximum number of buffers ever in use
- 0003h unavailable buffers
- Return: CX = count of unavailable TBMI buffers
- 0004h old interrupt usage
- Return: CX = TBMI accesses to intercepted old vectors INT 2F,
- INT 64, and INT 7A
- 0005h far call usage
- Return: CX = TBMI accesses to IPX/SPX far call handler (not
- including internal accesses)
- 0006h task buffering
- Return: CX = TBMI task buffering status (enabled/disabled or
- disable/enable switch count???)
- 0007h current task ID
- Return: CX = TBMI current task ID number (0000h if ???)
- 0008h outstanding ID count
- Return: CX = number of outstanding TBMI IDs
- 0009h configured ECBs
- Return: CX = number of TBMI Event Control Blocks configured
- 000Ah configured data ECBs
- Return: CX = number of TBMI data ECBs configured
- 000Bh configured sockets
- Return: CX = number of TBMI sockets configured (from NETCFG)
- 000Ch current sockets
- Return: CX = number of TBMI sockets currently in use
- Return: BX = maximum supported subfunction (000Ch)
- SeeAlso: AX=7A10h
- --------N-2F7A15-----------------------------
- INT 2F OU - Novell NetWare - TBMI v1.1 only - RESET ???
- AX = 7A15h
- Return: BX = new value of ???
- Desc: set ??? to its default value
- Note: this call is a NOP under TBMI v2.0 (TBMI2)
- SeeAlso: AX=7A17h
- --------N-2F7A16-----------------------------
- INT 2F OU - Novell NetWare - TBMI v1.1 only - ???
- AX = 7A16h
- CX = ???
- ???
- Return: ???
- Note: this call is a NOP under TBMI v2.0 (TBMI2)
- --------N-2F7A17-----------------------------
- INT 2F OU - Novell NetWare - TBMI v1.1 only - ???
- AX = 7A17h
- ???
- Return: BX = old value of ???
- CX = new value of ???
- Note: this call is a NOP under TBMI v2.0 (TBMI2)
- SeeAlso: AX=7A15h
- --------N-2F7A18-----------------------------
- INT 2F U - Novell NetWare - TASKID v1.0 - INSTALLATION CHECK
- AX = 7A18h
- Return: AL = FFh if installed
- BX = configuration flags (see #02858)
- CX = resident code segment
- SeeAlso: AX=7A10h
- Bitfields for NetWare TASKID configuration flags:
- Bit(s) Description (Table 02858)
- 0 INT 2F hooked
- 3 INT 08 hooked
- other unused
- --------N-2F7A19-----------------------------
- INT 2F U - Novell NetWare - TASKID v1.0 - GET INT 08 HANDLERS
- AX = 7A19h
- Return: AL = FFh
- DS:DX -> TASKID INT 08 handler
- ES:BX -> original INT 08 handler
- --------N-2F7A1A-----------------------------
- INT 2F U - Novell NetWare - TASKID v1.0 - GET INT 2F HANDLERS
- AX = 7A1Ah
- Return: AL = FFh
- DX:DX -> TASKID INT 2F handler
- ES:BX -> original INT 2F handler
- SeeAlso: AX=7A11h,AX=7A19h
- --------N-2F7A1B-----------------------------
- INT 2F U - Novell NetWare - TASKID v1.0 - GET DIAGNOSTICS INFORMATION
- AX = 7A1Bh
- CX = desired information
- 0000h supported functions
- 0001h TASKID ID number
- Return: CX = ID number
- 0002h set-ID count
- Return: CX = ID set count
- Return: AL = FFh
- BX = highest supported subfunction number (0002h)
- SeeAlso: AX=7A14h,AX=7A18h
- --------N-2F7A1C-----------------------------
- INT 2F U - Novell NetWare - TBMI v1.1+ - ???
- AX = 7A1Ch
- BP = ???
- CX:DX = ???
- Return: AX = 70FFh
- --------N-2F7A1D-----------------------------
- INT 2F U - Novell NetWare - TBMI v1.1+ - ???
- AX = 7A1Dh
- ???
- Return: ES = ???
- ???
- SI destroyed
- --------N-2F7A1E-----------------------------
- INT 2F U - Novell NetWare - TBMI v1.1+ - ???
- AX = 7A1Eh
- ES:SI -> ???
- ???
- Return: ???
- --------N-2F7A20BX0000-----------------------
- INT 2F - Novell NetWare - Adv NetWare 4.0 DOS Requester - GET VLM CALL ADDRESS
- AX = 7A20h
- BX = 0000h
- Return: AX = 0000h on success (installed)
- ES:BX -> far call address for DOS Requester (see #02859)
- Notes: the DOS Requester replaces the NetWare Shell (ANETx, NETx) on
- NetWare LAN's as of the release of Advanced NetWare 4.0 (1993). It
- is backward compatible with NetWare 2.1x through 3.11 servers as
- well. Note that there was a NetWare 4.0 in the early 1980's, which
- can cause confusion.
- this call is used as the installation check by VLM.EXE, which is the
- loader for all the modules of the DOS Requester
- .VLMs are standard old .EXE format executables whose normal entry point
- merely terminates to prevent loading from the command line (Novell's
- VLMs all return errorlevel 6). The real entry point is found by
- looking at the VLM header at the beginning of the load image
- (see #02862)
- Index: installation check;NetWare 4.0 DOS Requester
- SeeAlso: AX=7A20h/BX=0001h,AX=7A20h/BX=0002h
- (Table 02859)
- Call DOS Requester entry point with:
- STACK: WORD destination function
- WORD destination VLM ID (see #02861)
- WORD source VLM ID (0000h = application program)
- other registers (except BP) as appropriate for function
- Return: AX = status code (0000h,8811h,8846h,8848h,8853h) (see #02860)
- ZF set if successful, clear on error
- other registers as appropriate for function
- STACK popped
- BP destroyed
- (Table 02860)
- Values for VLM status code:
- 0000h successful
- 88xxh error generated by requester
- 8801h invalid or non-attached connection handle
- 8802h drive in use (OS/2 only)
- 8803h cannot add CDS
- 8804h bad path
- 8805h error sending or receiving NCP packets
- 8806h unknown network error
- 8807h invalid server connection slot
- 8808h no connection slots available
- 880Ah no route to server
- 880Bh "BAD_LOCAL_TARGET" (OS/2 only)
- 880Ch too many request fragments
- 880Dh "CONNECT_LIST_OVERFLOW" (OS/2 only)
- 880Eh buffer overflow on receive
- 880Fh no connection to server
- 8810h no router found (OS/2 only)
- 8811h nonexistent function called
- 8830h internal server request attempted between two separate connections
- 8831h no primary connection set
- 8833h invalid buffer length
- 8834h invalid user name
- 8835h no local print spooler installed
- 8836h attempted function with invalid parameter
- 8837h failed to open configuration file (OS/2 only)
- 8838h no configuration file (OS/2 only)
- 8839h configuration file read failed (OS/2 only)
- 883Ah line too long in configuration file (OS/2 only)
- 883Bh configuration lines ignored (OS/2 only)
- 883Ch foreign resource
- 883Dh daemon already installed (OS/2 only)
- 883Eh print spooler already installed
- 883Fh local connection table already full
- 8840h configuration section not found (OS/2 only)
- 8841h invalid transport type
- 8842h TDS tag in use (OS/2 only)
- 8843h TDS out of memory (OS/2 only)
- 8844h called TDS function with invalid tag
- 8845h TDS write was truncated
- 8846h called partially asynchronous function while it was busy
- 8847h unable to find any responding servers
- 8848h non-loaded or nonexistent VLM called
- 8849h network drive already mapped
- 884Ah attempted map to local drive which was already in use
- 884Bh no more drives available for mapping
- 884Ch device is not redirected
- 884Dh no more SFT entries (too many handles)
- 884Eh unable to unload
- 884Fh connection entry was already in use
- 8850h too many reply fragments
- 8851h name table already full
- 8852h socket not open
- 8853h memory management error
- 8854h SFT III switch occurred in mid-transfer
- 8855h preferred server was not found (alternate returned)
- 8856h device not recognized
- 8857h bad network byte
- 88A0h memory allocation error
- 88A1h connection timeout failure
- 88A2h transport: bad request
- 88A3h specified transport not installed
- 88A4h unable to open connection with specified parameters
- 88A6h unsupported function
- 88A7h no such task
- 88A8h too many tasks
- 88A9h version mismatch
- 88AAh request cancelled
- 88ABh invalid NDS name
- 88ACh unable to perform operation while logged into NDS
- 88ADh requester not available for use
- 88AEh MacIPX not configured properly
- 88AFh no servers found
- 88B0h no volume or session associated with identifier
- 88B1h not a NetWare volume
- 88B2h MacIPX version incompatible with Requester
- 88B4h MacIPX not open
- 88B5h insufficient stack
- 88B6h client API already initialized
- 88B7h checksums required by client are not available
- 88B8h packet signing required by client are not available
- 88B9h server requires checksum
- 88BAh server requires packet signing
- 88BBh already logged in
- 88BCh negotiated checksums but connection timed out
- 89xxh error generated by server
- low byte = return code from server (see also #01927,#01961)
- 8900h server successful
- 8901h out of disk space
- 897Eh NCP boundary check failed
- 897Fh ???
- 8980h lock failed; file in use
- 8981h out of handles
- 8982h no open privileges
- 8983h hard (non-correctable) I/O error
- 8984h no creation privileges
- 8985h no create/delete privileges
- 8986h attempted to create a file which already exists read-only
- 8987h filename error during creation (wildcards in name)
- 8988h invalid file handle
- 8989h no search privileges
- 898Ah no deletion privileges
- 898Bh no rename privileges
- 898Ch no modify privileges
- 898Dh some affected files are in use
- 898Eh all affected files are in use
- 898Fh some affected files are read-only
- 8990h all affected files are read-only; volume read-only
- 8991h some files could not be renamed because target names already exist
- 8992h all affected names exist
- 8993h no read privileges
- 8994h no write privileges
- 8995h file detached
- 8996h server out of memory
- 8997h no disk space for spool file
- 8998h disk map error; volume does not exist
- 8999h directory full
- 899Ah attempt to rename across volumes
- 899Bh bad directory handle
- 899Ch invalid path; no more trustees
- 899Dh no directory handles
- 899Eh bad filename
- 899Fh directory active
- 89A0h directory not empty
- 89A1h directory I/O error
- 89A2h I/O lock error
- 89A3h-89A5h ???
- 89A6h auditing is active
- 89A7h auditing version error
- 89A8h no auditing rights
- 89A3h-89BEh ???
- 89BFh invalid name space
- 89C0h no account privileges
- 89C1h no account balance
- 89C2h credit limit exceeded
- 89C4h account disabled
- 89C5h login lockout (intruder detection activated)
- 89C6h no console rights
- 89C7h-89CFh
- 89D0h queue error
- 89D1h no queue
- 89D2h no queue server
- 89D3h no queue rights
- 89D4h queue full
- 89D5h no queue job
- 89D6h no job rights; unencrypted password
- 89D7h queue servicing error; duplicate password; bad account
- 89D8h queue not active; password too short
- 89D9h station not queue server; maximum logins exceeded
- 89DAh queue halted; bad login time
- 89DBh maximum queue servers; unauthorized login station
- 89DCh account disabled or expired
- 89DEh password expired (all grace logins used up)
- 89DFh password expired but login allowed (grace login)
- 89E0h-89E6h ???
- 89E7h no disk track
- 89E8h property is not an item property; write to group
- 89E9h member exists
- 89EAh no such member
- 89EBh property is not a set property
- 89ECh no such set
- 89EDh property exists
- 89EEh object exists
- 89EFh illegal name
- 89F0h illegal wildcard
- 89F1h invalid bindery security level
- 89F2h not allowed to read object
- 89F3h not allowed to write/rename object
- 89F4h not allowed to delete object
- 89F5h not allowed to create object
- 89F6h not allowed to delete property
- 89F7h not allowed to create property; attempt to use non-local drive
- 89F8h not allowed to write property; already attached to server
- 89F9h not allowed to read property; no free connection slots
- 89FAh temporary remap error; no more server slots
- 89FBh no such property; invalid parameters
- 89FCh no such object; internet packet request canceled; unknown file server
- 89FDh bad station number; lock collision
- 89FEh directory locked; bindery locked; timeout
- 89FFh general error; hard error; lock error
- Note: some server-generated error codes have multiple interpretations; use
- the one appropriate to the failing call
- (Table 02861)
- Values for VLM identifier:
- 0001h VLM.EXE Virtual Loadable Modules manager (see also #02864)
- 0010h CONN.VLM connection table manager (see also #02867)
- 0020h TRAN.VLM transport protocol multiplexor (see also #02871)
- 0021h IPXNCP.VLM transport protocol implementation using IPX (see #02873)
- 0022h TCPNCP.VLM TCP/IP transport
- 0030h NWP.VLM NetWare protocol multiplexor (see also #02875)
- 0031h BIND.VLM bindery
- 0032h NDS.VLM NetWare Directory Services (see also #02877)
- 0033h PNW.VLM Personal NetWare
- 0034h RSA.VLM RSA encryption for directory services re-authentication
- 0040h REDIR.VLM DOS redirector (see also #02879)
- 0041h FIO.VLM file I/O (see also #02882)
- 0042h PRINT.VLM printer redirector (see also #02884)
- 0043h GENERAL.VLM misc functions for NETx and REDIR (see also #02888)
- 0050h NETX.VLM NetWare shell compatibility (see also #02890)
- 0060h AUTO.VLM auto-reconnect/auto-retry
- 0061h SECURITY.VLM enhanced security module (see #02892)
- 0100h NMR.VLM NetWare management responder
- 09F2h DRVPRN.VLM Desktop SNMP Services - Drive/Printer Mappings
- 09F5h SAA.VLM SAA client API for Netware
- 09F6h IPXMIB.VLM SNMP IPX-monitoring Module???
- 09F7h PNWMIB.VLM Personal Netware SNMP Instrumentation Module
- 09F8h PNWTRAP.VLM Personal Netware SNMP Trap Module
- 09F9h MIB2PROT.VLM MIB-II Protocol Groups
- 09FAh MIB2IF.VLM MIB-II Interfaces Group
- 09FBh NVT.VLM ???
- 09FCh WSTRAP.VLM Desktop SNMP Services - Trap Module
- 09FDh WSREG.VLM Desktop SNMP Services - Registration Module
- 09FEh WSASN1.VLM Desktop SNMP Services - ASN.1 Module
- 09FFh WSSNMP.VLM Desktop SNMP Services - Agent Module
- Format of VLM header:
- Offset Size Description (Table 02862)
- 00h DWORD -> initialization entry point
- 04h DWORD -> VLM API entry point
- 08h DWORD -> ??? entry point
- 0Ch DWORD -> ??? entry point
- 10h DWORD -> ??? entry point
- ...
- var DWORD 00000000h (end of entry point list)
- 4 BYTEs signature "NVlm"
- WORD VLM identifier (see #02861)
- ---v1.20+ ---
- 1Eh WORD ???
- 20h WORD Transient Switch Count
- 22h WORD VLM Call Count
- 24h WORD Offset ControlBlocks (See #02863)
- 26h WORD Current VLMID
- 28h BYTE Memory Type
- 00h=Conventional 02h=EMS 04h=XMS
- 29h BYTE Modules Loaded
- 2Ah WORD BlockId
- 2Ch WORD Transient Block
- 2Eh WORD Global Segment
- 30h 3 DWORDs pointers to AsyncQueue head, tail, and s???
- 3Ch 3 DWORDs pointers BusyQueue head, tail, and s???
- 48h WORD ReEntrance Level
- 4Ah WORD Full Map Count
- 4Ch WORD ???
- 4Eh 80 BYTEs ASCIZ configuration file filename
- Note: the number of entry points in the header is reported as "Func" in the
- VLM /D display.
- Format of VLM Control Block for VLM v1.20 [array]:
- Offset Size Description (Table 02863)
- 00h WORD Flag
- 02h WORD VLM Identifier (See #02861)
- 04h WORD Func
- 06h WORD Maps
- 08h WORD number of times called
- 0Ah WORD ???
- 0Ch WORD Transient Segment
- 0Eh WORD Global Segment
- 10h WORD Address Low
- 12h WORD Address High
- 14h WORD TSegSize
- 16h WORD GSegSize
- 18h WORD SSegSize
- 1Ah BYTE VLMName[9] ASCIZ
- Note: this information is shown in VLM /d under the dashed line. There are
- as many 35-byte blocks as modules loaded
- SeeAlso: #02862
- (Table 02864)
- Call VLM Manager (VLM.EXE, ID 0001h) with:
- Func Description/Registers
- 01h VLM Notify
- BX = function
- 0000h get version
- Return: AX = status (see #02860)
- BX = major version of VLM supported (0001h)
- CX = minor version of VLM supported (0000h)
- 03h VLM Statistics
- CX = length of buffer
- ES:DI -> buffer for statistics (see #02865)
- Return: AX = status (0000h if successful)
- buffer filled if successful
- 04h VLM internal use
- BX = function
- 0000h get interrupt vector (calls INT 21/AH=35h)
- 0001h begin critical section (calls INT 2F/AX=1681h)
- 0002h end critical section (calls INT 2F/AX=1682h)
- 0003h ???
- Format of VLM.EXE statistics:
- Offset Size Description (Table 02865)
- 00h WORD size of statistics record in bytes (including this word)
- 02h WORD number of times a VLM has been mapped into memory
- 04h WORD number of times a VLM has been called
- 06h WORD offset of vcbArray buffer
- 08h WORD VLM ID of VLM currently mapped into memory
- 0Ah BYTE memory type: conventional/EMS/XMS
- 0Bh BYTE number of loaded VLMs
- 0Ch WORD EMS/XMS handle or 0000h if conventional memory
- 0Eh WORD start segment for conventional memory swap
- 10h WORD segment for global memory, or 0000h if conventional memory
- 12h 12 BYTEs queue structure for asynchronous calls (see #02866)
- 1Eh 12 BYTEs queue structure for synchronous calls (see #02866)
- 2Ah WORD current re-entrance level
- 2Ch WORD number of times EMS/XMS map-out performed
- 2Eh BYTE stack switch control
- 2Fh BYTE flag: nonzero if switcher loaded
- 30h 80 BYTEs pathname of configuration file
- SeeAlso: #02864
- Format of VLM.EXE queue structure:
- Offset Size Description (Table 02866)
- 00h DWORD queue head (initially 00000000h)
- 04h DWORD queue tail (initialized to be same as head)
- 08h WORD current queue size (number of nodes in queue)
- 0Ah WORD maximum queue size (in nodes)
- SeeAlso: #02865
- (Table 02867)
- Call Connection Manager (CONN.VLM, ID 0010h) with:
- Func Description/Registers
- 01h Conn Get Version
- BX = function
- 0000h get version
- Return: AX = status (see #02860)
- BX = major version of VLM supported (0001h)
- CX = minor version of VLM supported (0000h)
- 03h Conn Statistics
- CX = length of buffer
- ES:DI -> buffer for connection statistics (see #02868)
- Return: AX = status (0000h successful)
- 04h Conn Alloc Handle
- Return: AX = status (0000h successful)
- CX = connection handle
- 05h Conn Validate Handle
- CX = connection handle
- Return: AX = 0000h if valid handle
- 06h Conn Free Handle
- CX = connection handle
- Return: AX = status (0000h successful)
- 07h Conn Get Entry Field
- BH = connection parameter (see #02870)
- CX = connection handle
- DX = value if BH is non-array parameter
- DH = offset in array if BH is array parameter
- DL = number of bytes to copy if BH is array
- ES:DI -> return buffer if BH is array
- Return: AX = 0000h if successful
- DL/DX = value if non-array parameter
- DH = maximum number of bytes in buffer if array parameter
- DL = number of bytes copied if array
- BX destroyed
- 08h Conn Set Entry Field
- BH = connection parameter (see #02870)
- CX = connection handle
- DL/DX = value if BH is non-array parameter
- DH = offset in array if BH is array parameter
- DL = number of bytes to copy if BH is array
- DS:SI -> buffer if BH is array
- Return: AX = 0000h if successful
- DH = maximum number of bytes in buffer
- DL = number of bytes copied
- BX destroyed
- 09h Conn Reset Entry Field
- BH = connection parameter (see #02870)
- CX = connection handle
- Return: AX = 0000h if successful
- BX,DX destroyed
- 0Ah Conn Lookup Handle
- BL = lookup type (00h equal, 40h not equal)
- BH = connection parameter (see #02870)
- CX = connection handle, 0000h if first
- DL/DX = value if BH is non-array parameter
- DH = offset in array if BH is array parameter
- DL = number of bytes to copy if BH is array
- DS:SI (ES:DI???) -> buffer if BH is array
- Return: AX = 0000h if successful
- CX = handle matching given parameters
- 0Dh Conn Name Lookup
- CX = connection handle
- ES:DI -> 49-byte buffer for server name or 0000h:0000h
- Return: AX = 0000h if successful
- BX = length of server name
- ES:DI buffer filled if pointer not 0000h:0000h
- 0Eh Conn Name To Handle
- DS:SI -> uppercased server name
- CX = length of server name, 0000h if ASCIZ name
- Return: AX = error code or 0000h if successful
- CX = connection handle if successful
- 0Fh Conn Get Num Connections
- Return: AX = status (0000h if successful)
- DX = number of connections
- CX = segment of connection table
- first entry in table (See #02869)
- Format of VLM connection statistics:
- Offset Size Description (Table 02868)
- 00h WORD total length of statistics record (including this word)
- 02h WORD number of connection handles allocated
- 04h WORD average name length (configured in NET.CFG)
- 06h WORD maximum number of tasks (configured in NET.CFG)
- 08h WORD number of failed "allocate handle" calls
- 0Ah WORD number of failed "add name" calls
- 0Ch WORD number of failed task calls
- Note: some versions of the NetWare requester reportedly do not implement
- this correctly
- SeeAlso: #02867
- Format of NetWare VLM Connection Table [array]:
- Offset Size Description (Table 02869)
- 00h WORD Protocol VLMid 0032(NDS) 0031(BIND) Func 07 equiv.
- 0033(PNW) 0000(unused) BH=01h
- 02h BYTE (connection status)
- bit 6: connection locked BH=16h
- bit 5: authenticated BH=03h
- bit 4: permanent BH=02h
- bit 2: broadcast msg waiting BH=12h
- 03h BYTE (connection capabilities)
- bit 5: Large Internet Packets none
- bit 3: Packet Burst Reset BH=07h
- bit 2: Max I/O BH=06h
- bit 1: SFT3 change BH=05h
- bit 0: Packet Burst Support BH=04h
- 04h WORD reference count BH=09h
- 06h WORD soft resource count BH=15h
- 08h BYTE NCP Order Number BH=0Eh
- 09h BYTE Server security options BH=14h
- bit 0: CRC enabled
- bit 1: packet signing required
- bit 5: packet signing enabled
- 0Ah BYTE OS Major Version BH=08h
- 0Bh BYTE OS Minor Version BH=08h
- 0Ch WORD Hops to Server BH=0Ah
- 0Eh WORD Maximum Packet Size for this connection BH=0Bh
- 10h WORD LIP Parameters BH=13h
- 12h WORD NCP Request Type BH=10h
- 14h BYTE NCP Sequence BH=0Ch
- 15h WORD Connection Number BH=0Dh
- 17h BYTE ??? none
- 18h WORD Transport VLMid 21(IPXNCP) 22(TCPNCP) BH=0Fh
- 1Ah BYTE Node Address[4] BH=11h
- 1Eh BYTE Network[6] BH=11h
- 24h BYTE Socket[2] BH=11h
- 26h BYTE Local Target[6] BH=11h
- 2Ch WORD Round Trip Time BH=11h
- 2Eh WORD ??? none
- SeeAlso: #02867
- (Table 02870)
- Values for NetWare Connection Manager CEI (Connection Entry Information):
- number flags description
- 00h FR error
- 01h WL VLM id of transport protocol (NDS/BIND/PNW)
- 00h = wildcard
- 02h FR permanent flag (01h if connection is permanent)
- 03h F authenticated flag (01h if connection is authenticated)
- 04h F packet burst supported
- 05h FR SFT3 change status
- 06h FR connection needs maximum I/O transmission
- 07h FR packet burst reset needed
- 08h W server version
- 09h W reference count (tasks using connection, 00h = dynamic)
- 0Ah W distance to server associated with connection
- 0Bh W maximum packet size supported by transport protocol
- 0Ch B NCP sequence number
- 0Dh W connection number
- 0Eh B NCP order number
- 0Fh WL VLM id for transport protocol
- 00h = wildcard, 21h = IPX, 22h = TCP
- 10h W NCP request type
- 11h A transport specific buffer
- 12 byte server address
- 6 byte router address
- 2 byte round trip time
- 12h FR broadcast message waiting
- 13h W large internet packets supported
- 14h B security options
- bit 0: CRC enabled
- bit 1: packet signing enabled
- bit 5: packet signing active
- 15h W soft resource count
- 16h FR connection locked
- Note: flag meanings
- F=flag value
- B=byte value
- W=word value
- A=array
- R=resettable
- L=settable only before authentication
- others=read only
- SeeAlso: #02867
- (Table 02871)
- Call TRAN.VLM (VLM ID 0020h) with:
- Func Description/Registers
- 01h TRAN Get Version
- BX = function
- 0000h get version
- Return: AX = status (see #02860)
- BX = major version of VLM supported (0001h)
- CX = minor version of VLM supported (0000h)
- 03h TRAN Statistics
- 06h TRAN Request Reply (see INT 21/AH=F2h)
- AL = NCP request code (see #02095 at INT 21/AH=F2h)
- BH = error handler flag
- 00h default error handler
- 01h return network errors to caller
- 02h handle network errors in requester
- BL = request list length (max 5 fragments) (see #02872)
- CX = connection handle
- DH = 00h (reserved)
- DL = reply list length (max 5 fragments) (see #02872)
- DS:SI -> address list (each element is DWORD address + WORD length)
- ES:DI -> address list
- Return: AX = error code, 0000h if successful (see #02860)
- BX,DX destroyed
- ES:DI buffer filled with reply packet fragments
- 08h TRAN Schedule/Cancel Event
- BX = subfunction
- 0000h schedule event
- AX = number of timer ticks to delay before calling function
- ES:SI -> event control block (including valid call address)
- 0001h cancel event
- ES:SI -> event control block (including call address)
- Return: AX = status (0000h = successful) (see #02860)
- 09h TRAN Get Max Phys Size
- BX = subfunction
- 00h get maximum node size
- Return: AX = status (0000h = successful) (see #02860)
- BX = maximum supported physical packet size
- DX = size of protocol header
- SI = RequestReply socket number
- 01h get maximum route size to specified server
- CX = connection handle for route to be checked
- Return: AX = status (0000h = successful) (see #02860)
- DX = maximum supported packet size for current route
- 0Ah TRAN Broadcast Mux
- BX = subfunction
- 0001h get stored broadcast (Personal NetWare)
- ES:DI -> 60-byte buffer for counted ASCIZ message string
- Return: AX = status (0000h = successful) (see #02860)
- Format of TRAN.VLM request/reply fragment descriptor (array):
- Offset Size Description (Table 02872)
- 00h DWORD address of buffer
- 04h WORD length of buffer
- (Table 02873)
- Call IPXNCP.VLM (VLM ID 0021h) with:
- Func Description/Registers
- 01h IPX Get Version
- BX = function
- 0000h get version
- Return: AX = status (see #02860)
- BX = major version of VLM supported (0001h)
- CX = minor version of VLM supported (0000h)
- 03h IPX Statistics
- CX = length of buffer
- ES:DI -> buffer for statistics (see #02874)
- Return: AX = status (see #02860)
- 06h IPXNCP Request Reply???
- functionally equivalent to Tran Request Reply???
- Format of NetWare IPX statistics:
- Offset Size Description (Table 02874)
- 00h WORD size of statistics, including this word
- 02h DWORD number of TRAN Request Reply calls made
- 06h WORD number of user aborts
- 08h WORD number of user retries
- 0Ah WORD IPX receive errors
- 0Ch WORD IPX send errors
- 0Eh WORD number of unrecognized responses
- 10h WORD number of bad connection numbers in requests
- 12h WORD number of bad sequence responses
- 14h WORD receive buffer overflows
- 16h WORD number of times route to attached server was lost
- 18h WORD number of times server responded "busy"
- 1Ah WORD number of unknown "NCPRepCompCode" values
- 1Ch WORD number of bad connection numbers in responses
- 1Eh WORD padding for NETX compatibility
- 20h WORD padding for NETX compatibility
- 22h WORD number of attach requests to server without route
- 24h WORD number of times server responded to attach without slot
- 26h WORD number of times a server went down during a request
- 28h DWORD same-server optimizations
- 2Ch WORD local route changes
- 2Eh WORD IPX CRC errors
- 30h WORD number of user fails
- 32h BYTE flag: CRCs enabled
- 33h BYTE flag: LIP enabled
- 34h BYTE flag: configurable NET error handler
- SeeAlso: #02873
- (Table 02875)
- Call NWP.VLM (VLM ID 0030h) with:
- Func Description/Registers
- 01h NWP Get Version
- BX = function
- 0000h get version
- Return: AX = status (see #02860)
- BX = major version of VLM supported (0001h)
- CX = minor version of VLM supported (0000h)
- 03h NWP Statistics
- CX = size of buffer for statistics
- ES:DI -> buffer for statistics (see #02876)
- Return: AX = status (see #02860)
- 04h NWP Connect
- DL = resource count state (NDS connections only)
- CX = proposed connection handle (not yet connected to server)
- DS:SI -> 48-byte server name (NUL-terminated if less than 48 bytes)
- Return: AX = status (0000h = successful) (see #02860)
- CX = actual connection handle to use
- Note: if the returned handle differs from the proposed handle, the
- proposed handle should be freed
- 05h NWP Disconnect
- DL = ???
- 00h global disconnect -- clear all resources associated with conn.
- 01h destroy connection -- send disconnect request to server
- CX = connected connection handle
- Return: AX = status (0000h = successful) (see #02860)
- 06h NWP Attach
- DL = resource count state (NDS connections only)
- CX = connection handle (allocated by not yet attached to server)
- DS:SI -> full network address for desired server
- Return: AX = status (0000h = successful) (see #02860)
- 08h NWP Login
- BX = object type
- CX = connection handle (must be connected) to be authenticated
- DS:SI -> ASCIZ user name (max 48 bytes)
- ES:DI -> ASCIZ user password (max 128 bytes)
- Return: AX = status (0000h = successful) (see #02860)
- 09h NWP Logout
- CX = connection handle
- Return: AX = status (0000h = successful) (see #02860)
- 0Ah NWP Get Bindery Object/Get Message Handler
- BX = subfunction
- 0002h set workstation's broadcast message mode
- DL = message mode
- 00h client hold client message set on, retrieve/display on
- 01h client hold client message set off, retr/display on
- 02h client hold client message set on, retrieve/dislay off
- 03h client hold client message set off, retr/display off
- 04h get current message mode
- 05h set broadcast callback
- CX:SI -> callback handler
- 06h get broadcast timeout
- 07h set broadcast timeout
- CX = timeout in timer ticks (0000h = never)
- CX = connection handle, or 0000h to notify all servers
- 0003h get object ID for object name
- AX = object type (big-endian)
- CX = connection handle
- DX = length of object name
- ES:DI -> uppercased ASCIZ object name
- Return: AX = status (see #02860)
- DX:BX = object ID
- 0004h get object name for object ID
- DX:SI = object ID
- CX = connection handle for server which is to do the lookup
- ES:DI -> 48-byte buffer for object name
- Return: AX = status (see #02860)
- 0005h retrieve broadcast message
- 0Ch NDS Fragment Request (passed to NDS.VLM's function 0Ch) (see #02877)
- AX = verb or request type
- CX = connection handle
- DS:SI -> request structure (DWORD data address followed by WORD size)
- ES:DI -> buffer for reply structure (same format as request)
- Return: AX = status (0000h = successful) (see #02860)
- 0Eh NWP Ordered Send To All
- AL = NCP request code
- AH = inverse request code (FFh if none) to back out from failures
- BX = number of fragments in request list
- DX = number of fragments in reply list buffer
- DS:SI -> request fragment list
- ES:DI -> reply fragment list
- Return: AX = status (see #02860)
- BX, CX, DX destroyed
- Note: the available functions are described under INT 21/AX=F2xxh
- 0Fh NWP Preferred Handler
- BX = subfunction
- 0000h get preferred connection name
- DX = VLM ID (NDS/BIND/PNW)
- ES:DI -> 49-byte buffer for connection name
- Return: ES:DI buffer filled
- 0001h set preferred connection name
- DX = VLM ID (NDS/BIND/PNW)
- CX = length of connection name (may be 0000h, max 48)
- DS:SI -> name of preferred connection
- 0002h get preferred connection ID
- DX = VLM ID (NDS/BIND/PNW)
- Return: AX = status (see #02860)
- CX = connection handle if successful
- 0003h get server address
- CX = connection handle or 0000h
- DS:SI -> ASCIZ name to be resolved
- ES:DI -> 12-byte buffer for server address
- 10h NWP Security???
- BX = subfunction
- 0001h get security flags (see also INT 21/AX=B301h)
- Return: BX:CX indicates signature level
- = 0100h:0000h if signature level=0
- = 0300h:0000h if signature level=1
- = 0302h:0000h if signature level=2
- = 0302h:0202h if signature level=3
- 0002h create session keys (see also INT 21/AX=B302h)
- CX = server connection handle
- DS:SI -> 24-byte input buffer
- 0004h set security flags (see also INT 21/AX=B304h)
- BL:CL = new flags
- 0006h renegotiate security level (see also INT 21/AX=B306h)
- CX = server connection number (01h-08h)
- Format of NWP.VLM statistics:
- Offset Size Description (Table 02876)
- 00h WORD size of statistics record (including this byte)
- 02h BYTE flag: Large Internet Packets enabled
- 03h BYTE bit flags: enabled security features
- 04h BYTE bit flags: preferred security features
- 05h BYTE bit flags: required security features
- 06h BYTE minimum level of required security
- SeeAlso: #02875
- (Table 02877)
- Call NDS.VLM (VLM ID 0032h) with:
- Func Description/Registers
- 01h NDS Get Version
- BX = function
- 0000h get version
- Return: AX = status (see #02860)
- BX = major version of VLM supported (0001h)
- CX = minor version of VLM supported (0000h)
- 03h NDS Statistics
- 06h NDS Attach
- CX = allocated connection handle
- DS:SI -> server address
- 08h NDS Fragment Requst
- Return: AX = 8836h (invalid parameter)
- Note: this function was documented but does not work
- 0Ch NDS context
- BX = subfunction
- 0000h get default name context
- CX = length of buffer for default context
- ES:DI -> buffer to receive name
- Return: ES:DI buffer filled
- 0001h set default context
- CX = length of new default context name
- DS:SI -> context name
- 0002h read from TDS
- CX = reply buffer length
- DX = 0110h ???
- SI = offset in TDS
- ES:DI -> reply buffer
- 0003h write to TDS
- 0005h "NWDSChangeResourceConnection/Lock Connection"
- CX = connection handle
- DL = subfunction (00h-09h)
- 04h = NWDSChangeResourceOnConnection
- 07h = NWDSChangeResourceOnConnection
- 08h = NWDSLockConnection
- 0006h NDS change connection state (internal)
- CX = connection handle
- AL = 00h or 01h
- 0007h "NWDSSetMonitoredConnection"
- AX = subfunction
- 0001h get monitored connection
- Return: CX = connection handle???
- 0002h set monitored connection
- CX = connection handle???
- 0008h send NDS request
- AX = NDS function
- CX = connection handle
- DS:SI -> request buffer descriptor (see #02878)
- ES:DI -> reply buffer descriptor (see #02878)
- 000Ah set NDS CEI Info
- DL = buffer length
- DS:SI -> input buffer
- Format of NetWare NDS request/reply buffer descriptor:
- Offset Size Description (Table 02878)
- 00h DWORD -> buffer
- 04h WORD length of buffer in bytes
- SeeAlso: #02877
- (Table 02879)
- Call REDIR.VLM (VLM ID 0040h) with:
- Func Description/Registers
- 01h Redir Get Version
- BX = function
- 0000h get version
- Return: AX = status (see #02860)
- BX = major version of VLM supported (0001h)
- CX = minor version of VLM supported (0000h)
- 03h Redir Statistics
- CX = length of buffer
- ES:DI -> buffer for statistics (see #02880)
- Return: AX = status (0000h if successful) (see #02860)
- buffer filled if successful
- 04h Redir Build SFT (see INT 21/AH=B4h"NetWare")
- CX = connection handle
- ES:DI -> SFT build request (see #02881)
- Return: AX = 0000h if successful
- BX = DOS file handle
- 05h Redir DOS To NW Handle
- BX = DOS file handle
- ES:DI -> 11-byte buffer for NetWare handle
- 08h Redir Specific
- BX = 0000h get item
- DS:SI -> ASCIZ string "LPTx" (x='1'-'9') or drive spec ("d:")
- ES:DI -> 512-byte reply buffer for
- "\\server\resource",00h,"path",00h
- Return: AX = status (0000h if successful) (see #02860)
- Format of REDIR.VLM statistics:
- Offset Size Description (Table 02880)
- 00h WORD size of statistics record (including this word)
- 02h WORD number of network errors causing a critical error (see INT 24)
- 04h WORD number of drives currently redirected
- SeeAlso: #02879
- Format of NetWare SFT build request:
- Offset Size Description (Table 02881)
- 00h 6 BYTEs NetWare handle
- 06h WORD reserved for internal use
- 08h 14 BYTEs ASCIZ filename
- 16h BYTE DOS file attributes
- bit 7: file is shareable
- 17h BYTE reserved
- 18h LONG file size
- 1Ch WORD creation date
- 1Eh WORD last access date or 0000h
- 20h WORD last update date or 0000h
- 22h WORD last update time or 0000h
- (Table 02882)
- Call File I/O FIO.VLM (VLM ID 0041h) with:
- Func Description/Registers
- 01h FIO Get Version
- BX = function
- 0000h get version
- Return: AX = status (see #02860)
- BX = major version of VLM supported (0001h)
- CX = minor version of VLM supported (0000h)
- 03h FIO Statistics
- CX = length of buffer
- ES:DI -> buffer for statistics (see #02883)
- Return: AX = status (0000h if successful)
- buffer filled if successful
- 04h FIO Remote Copy
- Format of NetWare FIO statistics:
- Offset Size Description (Table 02883)
- 00h WORD length of statistics record (including this word)
- 02h WORD number of read requests
- 04h WORD number of write requests
- 06h WORD number of cache read hits
- 08h WORD number of cache write hits
- 0Ah WORD number of cacheable files with free blocks
- 0Ch WORD number of cacheable files without free blocks
- 0Eh WORD number of standard read requests
- 10h WORD number of standard write requests
- 12h WORD number of burst read requests
- 14h WORD number of burst write requests
- 16h BYTE flag: cache writes enabled
- 17h BYTE flag: true commits enabled
- 18h WORD number of cache blocks
- 1Ah WORD size of a cache buffer
- 1Ch WORD number of ECBs for packet bursts (0000h if bursts disabled)
- SeeAlso: #02882
- (Table 02884)
- Call PRINT.VLM (VLM ID 0042h) with:
- Func Description/Registers
- 01h Print Get Version
- BX = function
- 0000h get version
- Return: AX = status (see #02860)
- BX = major version of VLM supported (0001h)
- CX = minor version of VLM supported (0000h)
- 03h Print Statistics
- CX = length of buffer
- ES:DI -> buffer for statistics (see #02885)
- Return: AX = status (0000h if successful) (see #02860)
- buffer filled if successful
- 04h Print Get/Set Data
- BX = subfunction
- 00h set printer control flags (see #02886)
- 01h get printer control flags
- 02h set extended printer control flags (see #02887)
- 03h get extended printer control flags
- AX = offset within Print structures at which to start read/write
- CX = number of bytes to transfer
- DX = printing device number (00h=LPT1/PRN, 01h=LPT2, etc.)
- DS:SI -> buffer containing values for flags (subfunctions 00h/02h)
- ES:DI -> buffer for flags (subfunctions 01h/03h
- Return: AX = status (see #02860)
- ---if successful---
- CX = number of bytes returned (subfunctions 01h/03h)
- DX = maximum supported size for function/type of data
- 05h Print Open Capture File
- 07h Print Get Num Of Printers
- BX = subfunction
- 0000h get number of physical printers
- nonzero: get configured printer (from NET.CFG)
- Return: AX = status (see #02860)
- ---if successful---
- BX = number of physical/configured printers
- 08h Print Redirection
- BX = subfunction
- 0000h redirect device to queue
- AX = length of queue name, 0000h to use queue ID
- CX = connection handle
- DX = printer/device number (00h=LPT1/PRN, 01h=LPT2, etc.)
- DS:SI -> uppercased ASCIZ queue name
- ES:DI -> DWORD queue ID, 00000000h to use queue name
- 0001h test whether device is redirected
- DX = printer/device number (00h=LPT1/PRN, 01h=LPT2, etc.)
- 0002h cancel redirection
- DX = printer/device number (00h=LPT1/PRN, 01h=LPT2, etc.)
- 0003h redirect device to file
- AX = 0000h or 4E57h ('NW')
- CX = connection handle
- DX = printer/device number (00h=LPT1/PRN, 01h=LPT2, etc.)
- ES:DI -> ASCIZ path of file
- 0004h get extended redirection information (see #02886)
- DX = printer/device number (00h=LPT1/PRN, 01h=LPT2, etc.)
- ES:DI -> buffer for server/queue name
- Return: ES:DI buffer filled
- Return: AX = 0000h if successful
- 09h Print Flush And Close Job
- BX = subfunction
- 0000h unconditional close
- nonzero: conditional close -- close only if concatenate flag is
- clear
- DX = index of printing device (00h=LPT1/PRN, 01h=LPT2, etc.)
- Return: AX = status (see #02860)
- 0Ch Print Get/Set Banner Name
- BL = subfunction
- 00h set banner name
- DS:SI -> ASCIZ banner name (12 bytes, including NUL)
- 01h get banner name
- ES:DI -> 12-byte buffer for banner name
- Return: AX = status (see #02860)
- Format of PRINT.VLM statistics:
- Offset Size Description (Table 02885)
- 00h WOFD size of statistics buffer (including this word)
- 02h DWORD -> old INT 17 handler
- 06h WORD number of physical printers reported by BIOS
- SeeAlso: #02884
- Format of PRINT.VLM standard print control information:
- Offset Size Description (Table 02886)
- 00h BYTE PFStatus (reserved, 00h)
- 01h BYTE print flags (default 80h)
- bit 2: release job for printing if capture interrupted
- bit 3: suppress form feed
- bit 4: notify
- bit 6: text file
- bit 7: print banner
- 02h BYTE tab size (01h-12h, default 08h)
- 03h BYTE number of copies (default 01h)
- 04h BYTE ??? (may be number of copies instead of offset 03h)
- 05h BYTE form type to be mounted in printer (default 00h)
- 06h BYTE reserved (00h)
- 07h 14 BYTEs banner
- 15h BYTE capture printer (LPT) number
- 16h WORD capture timeout in seconds
- 18h BYTE job concatenation flag (00h or 01h, default 00h)
- 19h BYTE maximum lines per page (default 66)
- 1Ah BYTE ??? (may be maximum lines instead of offset 19h)
- 1Bh BYTE maximum characters per line (default 132)
- 1Ch BYTE ??? (may be maximum characters instead of offset 1Ch)
- 1Dh 13 BYTEs name of form to be mounted in printer
- 2Ah BYTE flag: capture active (00h or FFh, default 00h)
- 2Bh BYTE flag: capturing to file (00h or 01h, default 00h)
- 2Ch BYTE flag: timeout field is being decremented (default 00h)
- 2Dh DWORD -> printer setup string
- 31h DWORD -> printer reset string
- 35h BYTE reserved (01h)
- ---remainder is read-only---
- 36h BYTE flag: job has started printing (00h or FFh, default 00h)
- 37h BYTE flag: job placed in queue (00h or FFh, default 00h)
- 38h BYTE flag: PJobValid (00h or FFh, default 00h)
- FFh if associated capture file is open for capturing data
- 39h DWORD print-queue ID
- 3Dh WORD print-job number (default 00h) (1-999)
- 3Fh BYTE number of chars in INT 17h print cache buffer (default 00h)
- 40h BYTE ???
- 41h WORD high word of print-job number (default 00h)
- SeeAlso: #02884,#02887
- Format of PRINT.VLM extended print control information:
- Offset Size Description (Table 02887)
- 00h DWORD NDS printer object ID or directory entry number (when capturing
- to a file)
- 04h BYTE connection handle for server
- 06h 48 BYTEs ASCIZ print queue name on server
- 36h DWORD ID of target server, or FFFFFFFFh if any server may be used
- 3Ah 6 BYTEs target print time, FFFFFFFFFFFFh for immediate printing
- 40h BYTE status flags
- 41h BYTE ???
- 42h 13 BYTEs client's banner name (overrides global banner if set)
- 4Fh 13 BYTEs job description
- 5Ch 4 BYTEs reserved (0)
- SeeAlso: #02884,#02886
- (Table 02888)
- Call GENERAL.VLM (VLM ID 0043h) with:
- Func Description/Registers
- 01h Gen Get Version
- BX = function
- 0000h get version
- Return: AX = status (see #02860)
- BX = major version of VLM supported (0001h)
- CX = minor version of VLM supported (0000h)
- 03h Gen Statistics
- CX = length of statistics buffer
- ES:DI -> buffer for statistics (see #02889)
- Return: AX = status (see #02860)
- 04h Gen Get/Set Primary
- BX = subfunction
- 0001h get primary connection
- CX = primary connection handle to be retrieved
- Return: AX = status (see #02860)
- CX = primary connection handle
- 0002h set primary connection
- CX = primary connection handle to be stored
- Return: AX = status (see #02860)
- 06h Gen Specific
- BX = subfunction
- 0000h get command processor and master environment addresses
- Return: DX = segment of master environment
- ES:DI -> command processor's private COMSPEC= copy
- 0001h get default or primary connection
- Return: AX = status (0000h successful)
- CX = connection handle if successful
- 0002h last queue information
- AL = operation
- 00h zap
- 01h set
- 02h get
- DI:DX = queue file handle
- CX = connection handle
- Return: AX = status (0000h successful)
- DI:DX = queue file handle
- CX = connection handle or 0000h if queue info invalid
- 0003h get/set machine name(s)
- AX = name type
- 00h get short machine name
- 02h get long machine name
- 04h set short machine name
- 06h set long machine name
- 08h get DOS name
- 0Ah set DOS name
- ES:SI -> ASCIZ name if setting
- Return: AX = status (0000h if successful)
- ES:SI -> ASCIZ name if getting
- 0004h set per-task EXEC search mode
- Return: AX = status (0000h if successful)
- 09h Gen Return Drive Info
- BX = subfunction
- 0000h get first available drive
- Return: AX = status (see #02860)
- BX = drive letter of first drive
- 0001h get Lastdrive
- Return: AX = status (see #02860)
- CH = number lastdrive 1=A: - 1Ah=Z:
- Format of NetWare GENERAL.VLM statistics:
- Offset Size Description (Table 02889)
- 00h WORD size of statistics record, including this word
- 02h DWORD previous INT 21 vector
- SeeAlso: #02888
- (Table 02890)
- Call NETX.VLM (VLM ID 0050h) with:
- Func Description/Registers
- 01h NetX Get Version
- BX = function
- 0000h get version
- Return: AX = status (see #02860)
- BX = major version of VLM supported (0001h)
- CX = minor version of VLM supported (0000h)
- 03h NetX Statistics
- CX = length of statistics buffer
- ES:DI -> buffer for statistics (see #02891)
- Return: AX = status (see #02860)
- Format of NETX.VLM statistics:
- Offset Size Description (Table 02891)
- 00h WORD buffer size, including this word
- 02h DWORD previous INT 21 handler
- SeeAlso: #02890
- (Table 02892)
- Call SECURITY.VLM (VLM ID 0061h) with:
- Func Description/Registers
- 01h Security Get Version
- BX = function
- 0000h get version
- Return: AX = status (see #02860)
- BX = major version of VLM supported (0001h)
- CX = minor version of VLM supported (0000h)
- 03h Security Statistics
- 04h ???
- AL = subfunction
- 01h compute session key
- DS:SI -> 24-byte input buffer
- ES:DI -> 8-byte output buffer
- --------N-2F7A20BX0001-----------------------
- INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM CallA ADDRESS
- AX = 7A20h
- BX = 0001h
- Return: AX = 0000h if request was handled
- ES:BX -> CallA entry point (see #02893)
- SeeAlso: AX=7A20h/BX=0000h
- (Table 02893)
- Call VLM CallA entry point with:
- AX = function
- 0000h submit
- 0001h cancel (not implemented)
- ES:DI -> Overlay Asynchronous Control Block structure (see #02894)
- Return: DI, DS, ES preserved; all other registers may be destroyed
- interrupts disabled
- Desc: asychronously call the specified VLM and then return to caller, which
- might be another VLM
- Format of Overlay Asynchronous Control Block (OACB):
- Offset Size Description (Table 02894)
- 00h DWORD link to next OACB, 0000h:0000h if last (filled by VLM.EXE)
- 04h DWORD callback address or 0000h:0000h
- 08h BYTE InUse flag (00h if complete) (set by VLM.EXE)
- 09h BYTE flag, reserved for VLM use
- 0Ah WORD destination VLM
- 0Ch WORD destination function
- 0Eh WORD temporary storage for VLM.EXE
- 10h 6 BYTEs reserved
- 16h 6 DWORDs EAX,EBX,ECX,EDX,ESI,EDI
- 2Eh 4 WORDs DS,ES,FS,GS (FS and GS not used)
- --------N-2F7A20BX0002-----------------------
- INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM MULTIPLEX ADDRESS
- AX = 7A20h
- BX = 0002h
- Return: AX = 0000h
- ES:BX -> VLM multiplex entry point (see #02895)
- Note: for v1.10, this function is only available while VLM.EXE is loading
- the .VLM modules, because ES is destroyed on return
- SeeAlso: AX=7A20h/BX=0000h,AX=7A20h/BX=0001h,AX=7A20h/BX=0003h
- (Table 02895)
- Call DOS Requester entry point with:
- BX = function???
- 0000h
- DX = ???
- DI = ???
- BP = ???
- 0002h
- CX = ???
- 0003h
- DX = ???
- BP = ???
- 0006h
- AH = subfunction???
- AL = ???
- STACK: variable (0, 4, 10, 14 bytes seen)
- --------N-2F7A20BX0003-----------------------
- INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM PARSE API ADDRESS
- AX = 7A20h
- BX = 0003h
- Return: AX = 0000h if request was handled
- ES:BX -> VLM parse API entry point
- --------N-2F7A20BX0004-----------------------
- INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM MULTICAST CALLOUT
- AX = 7A20h
- BX = 0004h
- Return: AX = 0000h if request was handled
- ES:BX -> VLM multicast data (see #02896)
- SeeAlso: AX=7A20h/BX=0000h,AX=7A20h/BX=0002h,AX=7A20h/BX=0005h
- Format of DOS Requester data:
- Offset Size Description (Table 02896)
- 00h DWORD pointer to ??? (code)
- 04h 4 BYTEs ???
- 08h DWORD pointer to ??? (code) (see #02897)
- ???
- (Table 02897)
- Call offset 08h function with:
- AL = function (00h-07h)
- ???
- Return: ???
- --------N-2F7A20BX0005-----------------------
- INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM INT 24 ADDRESS
- AX = 7A20h
- BX = 0005h
- Return: AX = 0000h if request was handled
- ES:BX -> VLM INT 24 handler
- SeeAlso: AX=7A20h/BX=0000h,AX=7A20h/BX=0002h,AX=7A20h/BX=0004h
- --------N-2F7A20BX0006-----------------------
- INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
- AX = 7A20h
- BX = 0006h
- Return: AX = 0000h if request was handled
- ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
- --------N-2F7A20BX0007-----------------------
- INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
- AX = 7A20h
- BX = 0007h
- Return: AX = 0000h
- ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
- --------N-2F7A20BX0008-----------------------
- INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
- AX = 7A20h
- BX = 0008h
- Return: AX = 0000h
- ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
- --------N-2F7A20BX0080-----------------------
- INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
- AX = 7A20h
- BX = 0080h
- Return: AX = 0000h
- ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
- Note: this function is identical to AX=7A20h/BX=0006h in v1.03 and v1.10
- --------N-2F7A20BX0081-----------------------
- INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
- AX = 7A20h
- BX = 0081h
- Return: AX = 0000h
- ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
- Note: this function is identical to AX=7A20h/BX=0007h in v1.03 and v1.10
- --------N-2F7A20BX0082-----------------------
- INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
- AX = 7A20h
- BX = 0082h
- Return: AX = 0000h
- ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
- Note: this function is identical to AX=7A20h/BX=0008h in v1.03 and v1.10
- --------N-2F7A21-----------------------------
- INT 2F C - Novell NetWare - DOS Requester - BROADCAST CALLBACK
- AX = 7A21h
- CX = server connection (FFFFh if message from Personal NetWare user)
- interrupts disabled
- Return: CX = 0000h if broadcast handled
- interrupts disabled
- Note: this function is only linked into INT 2F when INT 21/AH=DEh/DL=05h
- has been issued
- SeeAlso: AX=7A22h,AX=7A85h,INT 21/AH=DEh
- --------N-2F7A22-----------------------------
- INT 2F C - Novell NetWare - DOS Requester - BROADCAST/SFT3 INFORM
- AX = 7A22h
- DL = function
- 21h ('!') broadcast waiting for workstation
- 40h ('@') SFT3 server-change inform
- BX = transport type
- 0021h IPX
- 0022h TCP
- ES:SI -> transport-specific data block
- (ECB for IPX, undefined for TCP)
- interrupts disabled
- Return: AX = 0000h if event handled, unchanged if not
- interrupts disabled
- Note: this callback is made from within a hardware interrupt handler; a
- separate call to AX=7A21h is made once the system is in a safe
- state for receiving the message
- SeeAlso: AX=7A21h
- --------N-2F7A2F-----------------------------
- INT 2F - Novell NetWare - IPXODI v2.12 - GET GNMA SUPPORT
- AX = 7A2Fh
- Return: AX = 0000h if supported and active
- BX = support level (0001h)
- ES:DI -> GNMA entry point (see #02898)
- Program: GNMA is the Generic NetWare Management Agent
- Note: IPXODI v2.12 is distributed as part of the Personal NetWare system
- bundled with Novell DOS 7
- SeeAlso: INT 7A/BX=001Fh
- (Table 02898)
- Call IPXODI GNMA entry point with:
- BX = function
- 0000h Register Responder
- ES:SI -> responder structure (see #02899)
- Return: CF clear if successful
- CF set on error
- AX = status
- FFFFh if specified responder is already registered
- interrupts enabled
- all other registers except DS, CS:IP, SS:SP destroyed
- Note: the responder structure must not be deallocated until
- the responder is deregistered
- 0001h Deregister Responder
- AX = type of responder to deregister
- Return: AX = status
- FFFFh if specified responder not registered
- interrupts enabled
- ES:SI buffer from original registration may now be
- freed
- all other registers except DS, CS:IP, SS:SP destroyed
- 0002h Get Responders
- Return: ES:SI -> head of responder structure list (read-only)
- interrupts enabled
- all other registers except DS, CS:IP, SS:SP destroyed
- Note: the returned list may change as tasks are swapped in
- and out
- 0003h Send Acknowledgement
- AL = completion code
- 00h successful
- 01h-FCh responder-specific
- FDh invalid function
- CX = length of return data (0000h if none)
- DX:SI -> return data
- Return: interrupts enabled
- all other registers except DS, CS:IP, SS:SP destroyed
- Format of NetWare GNMA responder structure:
- Offset Size Description (Table 02899)
- 00h DWORD -> next responder structure (used by GNMA)
- 04h DWORD -> responder's request handler (called by GNMA) (see #02900)
- 08h WORD responder ID
- 0Ah WORD number of functions supported by responder
- 0Ch DWORD reserved for use by GNMA
- SeeAlso: #02898
- (Table 02900)
- Values GNMA responder's request handler is called with:
- AL = function
- 00h responder request
- CX = length of request data (not including header) (see #02901)
- DS:DI -> request data (see #02901)
- DS:BX -> 528-byte reply buffer
- ES:SI -> responder structure (see #02899) from registration
- DF clear
- interrupts disabled
- Return: AH = acknowledement status
- 00h acknowledgment being returned synchronously
- nonzero: acknowledgment will be sent via GNMA
- function 0003h (see #02898)
- CX = length of acknowledement data
- DX:BX -> acknowledgment (may use provided
- buffer or another buffer)
- AL = completion code
- 00h successful
- 01h-FCh responder-specific
- FDh invalid request
- DF clear
- interrupts disabled
- other registers may be destroyed
- 01h responder acknowledgement complete
- ES:SI -> responder structure (see #02899) from registration
- DF clear
- interrupts disabled
- Return: DF clear
- interrupts disabled
- all registers (except SS:SP) may be destroyed
- Note: this function is called if function 00h returned a
- responder-provided data buffer; once this function
- is called, the responder may deallocate the buffer
- 02h responder reset
- ES:SI -> responder structure (see #02899) from registration
- DF clear
- interrupts disabled
- Return: DF clear
- interrupts disabled
- all registers (except SS:SP) may be destroyed
- Note: called whenever a network managment application
- terminates
- Note: the responder handler should switch to a local stack if it enables
- interrupts or uses more than a few words of stack space
- SeeAlso: #02899
- Format of GNMA responder request data:
- Offset Size Description (Table 02901)
- 00h WORD responder's assigned ID
- 02h WORD function number (defined by responder)
- 04h N BYTEs data for request (max 528 bytes; actual amount is determined
- by CX)
- SeeAlso: #02900
- --------N-2F7A2FBX0EDC-----------------------
- INT 2F U - Personal NetWare - HRMIB - UNINSTALL
- AX = 7A2Fh
- BX = 0EDCh ('EDC' = Novell European Development Center)
- Return: ???
- SeeAlso: AX=7AA0h
- --------N-2F7A40-----------------------------
- INT 2F - Novell NetWare - TCP/IP Protocol Stack - INSTALLATION CHECK
- AX = 7A40h
- Return: AX = 7AFFh if installed
- 0000h:BX = address of interrupt vector for MLID ISR
- CX = version (CH=major, CL=minor)
- DX = 0000h
- ES:DI -> entry point for TCP/IP stack (see #02903)
- Notes: Novell's LAN Workplace for DOS TCPIP.EXE also supports this interface
- this function is also supported by the Beame&Whiteside BWLWP40 shim,
- but it only returns AL and ES:DI, and does not support AX=7A41h
- SeeAlso: AX=7A41h,INT 15/AX=DE2Eh,INT 60"Excelan"
- (Table 02902)
- Values for NetWare TCP/IP function code:
- 01h "accept" accept a network connection request
- 02h "bind" associate an address with a socket
- 03h close socket
- Call: socket number field set
- 04h "connect" connect to a remote host
- 05h "getmyipaddr" get IP address
- Call: socket number field in sockaddr set to 0000h
- 06h "getmymacaddr" get hardware address
- 07h "getpeername"
- 08h "getsockname" get socket name
- 09h "getsockopt" get socket options
- 0Ah "getsubnetmask" get subnet mask
- 0Bh "ioctl"
- 0Ch "listen" wait for connection request on socket
- 0Dh "select"
- Return: socket bitmap updated (1=active)
- 0Eh "setmyipaddr" (obsolete) set IP address
- 0Fh "setsockopt" set socket options
- 10h "shutdown"
- 11h "socket" open socket
- Call: socket number field set to 0000h
- Return: socket number set
- 12h "recv" get data from peer
- 13h "recvfrom" get data from specified remote host
- Call: socket number set
- packet length and buffer descriptors set
- Return: packet length and receive buffers updated
- sockaddr field set to source port number + IP address
- 14h "send" write data to socket
- 15h "sendto" write data to specified recipient
- Call: socket number set
- flags at offset 18h = 0000h
- packet length and buffer descriptors set
- ---v4.02+ ---
- 16h get BOOTP data
- Return: BOOTP data stored in parameter block (see #02906)
- 17h "getsnmpinfo"
- 18h "getpathinfo" get/set configuration???
- ---v4.??? ---
- 19h "getifn" get interface number
- 1Ah "setipinfo" set IP information
- 1Bh "getipinfo" get IP information
- 1Ch "setdnsinfo" set DNS information
- 1Dh "getdnsinfo" get DNS information
- 1Eh "setroutes" set/modify route entry(ies)
- 1Fh "getroutes" get route entry(ies)
- 20h "removeroutes" remove route entry(ies)
- 21h "setarpe" set/modify ARP entry(ies)
- 22h "getarpe" get ARP entry(ies)
- 23h "removearpe" remove ARP entry(ies)
- Notes: these functions are based on the Unix socket interface
- OR function number with 80h to call ESR
- SeeAlso: #02904
- (Table 02903)
- Call NetWare TCP/IP entry point with:
- ES:SI -> parameter block (see #02904)
- Return: ES:SI parameter block updated
- DX may be destroyed
- Format of NetWare TCP/IP Request Control Block (RCB):
- Offset Size Description (Table 02904)
- 00h DWORD -> next RCB
- 04h DWORD -> previous RCB
- 08h DWORD -> FAR post routine called if bit 7 of function code set
- 0Ch BYTE flags (internal use)
- bit 0: request in progress
- bit 1: posted
- bit 2: Windows
- bit 3: "PROTBUF"
- bit 4: "ABORTRCB" for Ctrl-Break handling
- bit 5: call INT 21/AX=0B00h while blocking
- 0Dh 7 BYTEs ???
- 14h BYTE (ret) temporary result code
- 15h BYTE (call) function code (bit 7 set if non-blocking) (see #02902)
- 16h BYTE socket number
- 17h BYTE (ret) result or error code (see #02905)
- ---accept/bind/connect/getmyipaddr/getpeername/getsockname commands---
- 18h sockaddr structure (WORD port + DWORD IP address)
- ---close comand---
- no additional fields
- ---getmymacaddr command---
- 18h 6 BYTEs low-level hardware network address
- ---BOOTP command---
- 18h 64 BYTEs BOOTP VSA data (see #02906)
- ---getpathinfo command
- 18h 8 BYTEs key
- "TCP_CFG" used by PING.EXE
- 20h 128 BYTEs path
- A0h WORD length of path in previous field
- ---getsockopt/setsockopt commands---
- 18h WORD option name
- 0004h SO_REUSEADDR
- 0008h SO_KEEPALIVE
- 0080h SO_LINGER
- 1Ah WORD option value
- 1Ch WORD "linger"
- ---getsubnetmask command---
- 18h DWORD sockaddr structure (WORD port + DWORD subnet mask)
- ---ioctl command---
- 18h DWORD argument value
- 1Ch WORD ioctl number
- ---listen command---
- 18h WORD maximum allowable connection backlog
- ---select command---
- 18h WORD number of sockets
- 1Ah fd_set readfds (bitmap of sockets)
- fd_set writefds
- fd_set expectionfds
- DWORD timeout in clock ticks
- ---shutdown command---
- 18h WORD shutdown type
- ---socket command---
- 18h WORD protocol (1 = ICMP, 6 = TCP, 17 = UDP)
- ---I/O commands (recv,recvfrom,send,sendto)---
- 18h WORD flags
- 1Ah 6 BYTEs sockaddr from/to
- WORD port number
- DWORD IP address
- 20h WORD length of packet sent/received
- 22h WORD number of pointer/length pairs following (max 8)
- 24h 6N BYTEs buffer descriptors, each
- Offset Size Description
- 00h DWORD pointer to buffer
- 04h WORD length of buffer
- ---getsnmpinfo command---
- 18h DWORD (ret) -> ??? data in TCPIP code segment
- --getifn command---
- 18h WORD interface number
- 1Ah WORD MLID instance number
- 1Ch 128 BYTEs MLID name
- ---getipinfo/setipinfo commands---
- 18h WORD interface number (00h = default)
- 1Ah DWORD IP address
- 1Eh DWORD IP netmask
- 22h 3 DWORDs router addresses (00000000h = unused entry)
- ---getdnsinfo/setdnsinfo commands---
- 18h WORD interface number (00h = default)
- 1Ah 3 DWORDs name server IP addresses (00000000h = unused entry)
- 26h 128 BYTEs domain name
- ---getroutes/setroutes/removeroutes commands---
- 18h WORD number of route entries to follow (max 5)
- 1Ah 10N BYTEs route entries
- DWORD destination host/net IP address
- DWORD IP address of first router
- WORD route type
- ---getarpe/setarpe/removearpe commands---
- 18h WORD number of ARP entries to follow (max 16)
- 1Ah 10N BYTEs ARP entries
- DWORD destination IP address
- 6 BYTEs destination hardware address
- ---other commands---
- 18h 4 WORDs parameter words 0 to 3 (see #02902 for usage)
- (Table 02905)
- Values for NetWare TCP/IP status:
- 00h successful
- 04h would block
- 09h invalid socket
- 23h would block
- 24h operation in progress
- 25h already in progress
- 26h not a socket
- 27h destination address required
- 28h message too long
- 29h wrong protocol type for socket
- 2Ah protocol not available
- 2Bh protocol not supported
- 2Ch socket type not supported
- 2Dh operation not supported on socket
- 2Eh protocol family not supported
- 2Fh address family not supported by protocol family
- 30h address already in use
- 31h unable to assign requested address
- 32h network is down
- 33h network is unreachable
- 34h network dropped connection
- 35h software caused connection abort
- 36h connection reset by peer
- 37h no buffer space
- 38h socket is already connected
- 39h socket is not connected
- 3Ah socket is in shutdown mode
- 3Bh too many references
- 3Ch connection timed out
- 3Dh connection refused
- 3Eh too many levels of symbolic links
- 3Fh file name too long
- 40h host is down
- 41h host unreachable
- 42h protocol stack not installed
- 43h asynchronous operation not supported
- 44h synchronous operation not supported
- 45h no RCB available
- FFh blocking (call has not yet returned)
- SeeAlso: #02904
- Format of BOOTP data (stored in parameter block):
- Offset Size Description (Table 02906)
- 18h 4 BYTEs ???
- 1Ch BYTE ??? (01h)
- 1Dh BYTE address length (04h)
- 1Eh 4 BYTEs subnet mask
- 22h BYTE ??? (03h)
- 23h BYTE ??? (04h)
- 24h 4 BYTEs IP address of nearest router
- 28h BYTE ??? (06h)
- 29h BYTE length of following data (08h)
- 2Ah 4 BYTEs IP address of nameserver 1
- 2Eh 4 BYTEs IP address of nameserver 2
- 32h BYTE ??? (0Ch)
- 33h BYTE length of local name
- 34h N BYTEs local host name
- BYTE FFh (end marker)
- SeeAlso: #02904,#02902
- --------N-2F7A41-----------------------------
- INT 2F U - Novell NetWare - TCP/IP Protocol Stack - WINDOWS SUPPORT???
- AX = 7A41h
- ES:DI -> FAR entry point for ??? (will be called with BX=1,2,3,4)
- Return: AX = 7AFFh if supported
- 0000h:BX = address of interrupt vector for MLID ISR
- CX = version (CH=major, CL=minor)
- DX = 0000h
- ES:SI -> DWORD containing passed value of ES:DI
- ES:DI -> entry point for TCP/IP stack
- Notes: Novell's LAN Workplace for DOS TCPIP.EXE also supports this interface
- the pointer which is set to ES:DI is cleared to 0000h:0000h when
- a Windows exit broadcast is received
- SeeAlso: AX=7A40h
- --------N-2F7A42-----------------------------
- INT 2F U - Novell NetWare - TCPIP.EXE v4.1 - GET ??? ENTRY POINT
- AX = 7A42h
- Return: AX = 7AFFh if supported
- ES:DI -> ??? entry point (see #02907)
- (Table 02907)
- Call NetWare TCPIP.EXE entry point with:
- DX = ???
- ES:DI -> ??? (see #02908)
- Return: AX = 0000h
- other registers destroyed
- Format of data buffer:
- Offset Size Description (Table 02908)
- 00h WORD offset of WORD ??? or 0000h
- 02h WORD offset of DWORD ??? or 0000h
- 04h WORD offset of DWORD ??? or 0000h
- --------N-2F7A43-----------------------------
- INT 2F U - Novell NetWare - TCPIP.EXE v4.1 - GET ???
- AX = 7A43h
- Return: AX = 7AFFh if supported
- DX = offset of ???
- SeeAlso: AX=7A44h
- --------N-2F7A44-----------------------------
- INT 2F U - Novell NetWare - TCPIP.EXE v4.1 - SET ???
- AX = 7A44h
- DX = offset of ??? (see AX=7A43h)
- Return: AX = 7AFFh if supported
- SeeAlso: AX=7A43h
- --------N-2F7A4C-----------------------------
- INT 2F U - Novell NetWare - TCPIP.EXE v4.1 - GET ???
- AX = 7A4Ch
- Return: AX = 7AFFh if supported
- BX = ??? (0037h)
- CX = ??? (001Ch)
- --------N-2F7A4DBX0001-----------------------
- INT 2F U - Novell NetWare - ???
- AX = 7A4Dh
- BX = 0001h
- ES:DI -> ???
- Return: AL = FFh if ???
- ES:DI -> ???
- Note: called by NETBIOS.EXE v3.01
- --------N-2F7A4E-----------------------------
- INT 2F U - Novell LAN Workplace for DOS - RARPD.EXE - INSTALLATION CHECK
- AX = 7A4Eh
- Return: AX = 7AFFh if installed
- SeeAlso: AX=7A4Fh"RARPD"
- --------N-2F7A4F-----------------------------
- INT 2F U - Novell LAN Workplace for DOS - RARPD.EXE - UNINSTALL
- AX = 7A4Fh
- Return: AX = 7AFFh if installed
- DX,ES destroyed
- Note: this call conflicts with SNMP.EXE (both RARPD and SNMP are supplied
- with LAN Workplace for DOS!), such that running SNMP will uninstall
- RARPD as SNMP checks whether it is already installed!
- SeeAlso: AX=7A4Eh"RARPD",AX=7A4Fh/BX=0001h
- --------N-2F7A4FBX0001-----------------------
- INT 2F U - Novell NetWare - SNMP.EXE - INSTALLATION CHECK
- AX = 7A4Fh
- BX = 0001h
- Return: AX = 7AFFh if installed
- Note: this call conflicts with RARPD.EXE (both SNMP and RARPD are supplied
- with LAN Workplace for DOS!), such that running SNMP will uninstall
- RARPD as SNMP checks whether it is already installed!
- SeeAlso: AX=7A4Fh"RARPD",AX=7A4Fh/BX=0002h
- --------N-2F7A4FBX0002-----------------------
- INT 2F U - Novell NetWare - SNMP.EXE - ???
- AX = 7A4Fh
- BX = 0002h
- Return: AL = status
- 4Fh if failed
- FFh if successful
- SeeAlso: AX=7A4Fh/BX=0001h
- --------N-2F7A80-----------------------------
- INT 2F C - Novell NetWare - SHELL 3.01d BROADCAST - ABNORMAL EXIT
- AX = 7A80h
- Return: nothing
- Notes: called on abnormal exit of the NetWare shell to notify other Novell
- TSRs that it is unsafe to call the shell in the future; also called
- by NETX.VLM when it is unloaded
- must be passed through so that all interested programs see the exit
- on receiving this call, IPXODI clears an internal pointer to a
- default value; Novell's NETBIOS.EXE clears its INT 21h pointer to
- 0000h:0000h and stops calling it
- SeeAlso: AX=7A81h
- --------N-2F7A81-----------------------------
- INT 2F C - Novell NetWare - SHELL 3.01d BROADCAST - SET SHELL INT 21 HANDLER
- AX = 7A81h
- CX:DX -> shell's INT 21h entry point
- Return: nothing
- Notes: the shell calls this function as it loads to allow interested TSRs
- and drivers to make a local copy of the shell's entry point
- must be passed through so that all interested programs see it
- --------N-2F7A85-----------------------------
- INT 2F C - Novell NetWare - shell 3.01 - BROADCAST INFORM
- AX = 7A85h
- CX = broadcast server number
- Return: CX = 0000h if broadcast message handled by another program
- CX unchanged if broadcast not handled
- SeeAlso: AX=7A21h
- --------N-2F7A90-----------------------------
- INT 2F U - Novell NetWare - NETBIOS.EXE 3+ - INSTALLATION CHECK
- AX = 7A90h
- Return: AL = 00h if present
- BX = ???
- CX = PSP segment of NETBIOS resident code
- SeeAlso: AX=7AFEh
- --------N-2F7AA0-----------------------------
- INT 2F U - Personal NetWare - HRMIB - ???
- AX = 7AA0h
- BX = function
- 0000h ???
- 0001h ???
- Return: ???
- SeeAlso: AX=7A2Fh/BX=0EDCh
- --------N-2F7AC1-----------------------------
- INT 2F - LAN HiJack - LHR - DISABLE???
- AX = 7AC1h
- Program: LAN HiJack is a NetWare utility by KDS Software which allows a user
- to take over control of a workstation remotely; LHR is the program
- run on the slave workstation
- SeeAlso: AX=7AC8h,AX=7AC9h,AX=7ACFh
- --------N-2F7AC2-----------------------------
- INT 2F - LAN HiJack - LHR - SYNCHRONIZE SHIFT STATES???
- AX = 7AC2h
- Note: sets BIOS keyboard status byte to an internal variable
- SeeAlso: AX=7AC3h,AX=7ACFh
- --------N-2F7AC3-----------------------------
- INT 2F - LAN HiJack - LHR - CLEAR ??? FLAG
- AX = 7AC3h
- SeeAlso: AX=7AC2h,AX=7ACFh
- --------N-2F7AC8-----------------------------
- INT 2F - LAN HiJack - LHR - ENABLE FUNCTIONS
- AX = 7AC8h
- BL = function(s) to enable (see #02909)
- SeeAlso: AX=7AC1h,AX=7AC9h,AX=7ACFh
- Bitfields for LAN HiJack function(s) to enable/disable:
- Bit(s) Description (Table 02909)
- 0 ???
- 1 remote keyboard enabled
- 2 support remote's mouse
- 3-7 unused
- --------N-2F7AC9-----------------------------
- INT 2F - LAN HiJack - LHR - DISABLE FUNCTIONS
- AX = 7AC9h
- BL = function(s) to disable (see #02909)
- SeeAlso: AX=7AC1h,AX=7AC8h
- --------N-2F7ACA-----------------------------
- INT 2F - LAN HiJack - LHJ - ???
- AX = 7ACAh
- BL = ???
- Return: ???
- Program: LAN HiJack is a NetWare utility by KDS Software which allows a user
- to take over control of a workstation remotely; LHJ is the program
- run on the controlling workstation
- --------N-2F7ACB-----------------------------
- INT 2F - LAN HiJack - LHJ - ???
- AX = 7ACBh
- BX = ???
- Return: ???
- Note: this function appears to be related to the keyboard
- SeeAlso: AX=7ACCh
- --------N-2F7ACC-----------------------------
- INT 2F - LAN HiJack - LHJ - ???
- AX = 7ACCh
- BX = ???
- Return: ???
- Note: this function appears to be related to the mouse
- SeeAlso: AX=7ACBh
- --------N-2F7ACFBX0000-----------------------
- INT 2F - LAN HiJack - LHR - INSTALLATION CHECK
- AX = 7ACFh
- BX = 0000h
- Return: BX = segment of resident code if installed
- Program: LAN HiJack is a NetWare utility by KDS Software which allows a user
- to take over control of a workstation remotely; LHR is the program
- run on the slave workstation
- --------N-2F7AF0-----------------------------
- INT 2F - Novell NetWare - DOSNP.EXE v1.30G - INSTALLATION CHECK
- AX = 7AF0h
- Return: AL = FFh if present
- ES = 7AF0h
- CX = PSP segment of resident code
- --------N-2F7AF1-----------------------------
- INT 2F - Novell NetWare - Access Server Driver - INSTALLATION CHECK
- AX = 7AF1h
- BL = sequence number (01h first driver, 02h second, 00h no driver)
- Return: AX <> 7AF1h if present
- BH = total number of drivers
- ---if BL nonzero on entry---
- AL = number of ports provided by specified driver
- ES:DI -> driver entry point
- (see #02910,#02911,#02912,#02913,#02914,#02915,#02916,#02917)
- ES:DX -> ID string
- SeeAlso: INT 7A/BX=001Ch
- (Table 02910)
- Call Access Server driver "initialize port" function with:
- AH = 01h
- AL = port number (00h-0Fh)
- ES:BX -> configuration parameter block (see #02923)
- interrupts disabled
- Return: CF clear if successful
- CF set on error
- SeeAlso: #02911
- (Table 02911)
- Call Access Server driver "get port status" function with:
- AH = 02h
- AL = port number (00h-0Fh)
- interrupts disabled
- Return: CF clear if successful
- BL = transmitter status (see #02920)
- BH = receiver status (see #02921)
- DL = external status signals (see #02922)
- CF set on error
- interrupts disabled
- SeeAlso: #02910,#02912,#02915
- (Table 02912)
- Call Access Server driver "get input from port" function with:
- AH = 03h
- AL = port number (00h-0Fh)
- CX = size of data buffer
- ES:BX -> buffer for data
- interrupts disabled
- Return: CF clear if successful
- CF set on error
- interrupts disabled
- CX = number of bytes read
- Note: the driver will add a NUL to the buffer when a break signal is detected
- SeeAlso: #02912,#02913
- (Table 02913)
- Call driver "send output data to port" function with:
- AH = 04h
- AL = port number (00h-0Fh)
- CX = number of bytes to send
- ES:BX -> buffer containing data
- interrupts disabled
- Return: CF clear if successful
- CF set on error
- interrupts disabled
- CX = number of bytes actually written
- SeeAlso: #02912,#02914
- (Table 02914)
- Call driver "get I/O character counts" function with:
- AH = 05h
- AL = port number (00h-0Fh)
- interrupts disabled
- Return: CF clear if successful
- BX = number of bytes pending transmission
- CX = number of bytes available for reading
- CF set on error
- interrupts disabled
- SeeAlso: #02912,#02913
- (Table 02915)
- Call driver "control XON/XOFF" function with:
- AH = 06h
- AL = port number (00h-0Fh)
- DL = new state
- (00h software flow control disabled, else enabled)
- interrupts disabled
- Return: CF clear if successful
- CF set on error
- interrupts disabled
- SeeAlso: #02916
- (Table 02916)
- Call driver "get error counts and statistics" function with:
- AH = 07h
- AL = port number (00h-0Fh)
- ES:BX -> buffer for statistics (see #02924)
- interrupts disabled
- Return: CF clear if successful
- ES:BX buffer filled
- CF set on error
- interrupts disabled
- SeeAlso: #02917,#02918,#02919
- (Table 02917)
- Call driver "general request" function with:
- AH = 08h
- AL = port number (00h-0Fh)
- DX = requested operations
- bit 0: flush transmit buffers
- bit 1: flush receive buffers
- bit 4: define XON/XOFF characters
- ES:BX -> XON/XOFF characters (see #02925) if DX bit 4 set
- interrupts disabled
- Return: CF clear if successful
- CF set on error
- interrupts disabled
- (Table 02918)
- Call driver "deadman timer management" function with:
- AH = 09h
- AL = port number (00h-0Fh)
- BX = next time interval in seconds (0000h to disable timer)
- interrupts disabled
- Return: CF clear
- interrupts disabled
- SeeAlso: #02919
- (Table 02919)
- Call driver "get buffer sizes" function with:
- AH = 0Ah
- AL = port number (00h-0Fh)
- interrupts disabled
- Return: CF clear if successful
- BX = size of transmit buffer
- CX = size of receive buffer
- CF set on error
- interrupts disabled
- SeeAlso: #02918
- (Table 02920)
- Values for Access Server transmitter status:
- 00h uninitialized
- 01h ready, not transmitting
- 02h transmitting
- 03h XOFF received
- 04h transmitting, buffer full
- 05h XOFF received and buffer full
- (Table 02921)
- Values for Access Server receiver status:
- 00h uninitialized
- 01h ready
- 02h receive buffer full, data may have been lost
- Bitfields for external status signals:
- Bit(s) Description (Table 02922)
- 7,6 undefined
- 5 CTS active
- 4 DSR active
- 3 DCD active
- 2,1 undefined
- 0 ring indicator
- Format of Access Server configuration parameter block:
- Offset Size Description (Table 02923)
- 00h BYTE receive baud rate index
- 00h 50 bps, 01h 75 bps, 02h 110 bps, 03h 134.5 bps,
- 04h 150 bps, 05h 300 bps, 06h 600 bps, 07h 1200 bps,
- 08h 1800 bps, 09h 2000 bps, 0Ah 2400 bps, 0Bh 3600 bps,
- 0Ch 4800 bps, 0Dh 7200 bps, 0Eh 9600 bps, 0Fh 19200 bps,
- 10h 38400 bps, 11h 57600 bps, 12h 115200 bps
- 01h BYTE receive bits per character (0=5 bits..3=8 bits)
- 02h BYTE receive stop bits
- 03h BYTE receive parity
- 00h none, 01h odd, 02h even, 03h mark, 04h space
- 04h BYTE transmit baud rate index (same as receive baud rate)
- 05h BYTE transmit bits per character (0=5 bits..3=8 bits)
- 06h BYTE transmit stop bits
- 07h BYTE transmit parity (same as receive parity)
- 08h BYTE DTR state (00h off, 01h on)
- 09h BYTE RTS state (00h off, 01h on)
- 0Ah BYTE flow control (00h none, 01h XON/XOFF, 02h RTS/CTS, 03h both)
- 0Bh BYTE break control (00h off, 01h on)
- Format of Access Server statistics:
- Offset Size Description (Table 02924)
- 00h BYTE port number
- 01h BYTE external status signals (see #02922)
- 02h BYTE transmitter status (see #02920)
- 03h BYTE receiver status (see #02921)
- 04h DWORD number of characters received
- 08h DWORD number of characters transmitted
- 0Ch WORD input parity errors
- 0Eh WORD input framing errors
- 10h WORD lost characters due to hardware overrun
- 12h WORD lost characters due to data buffer overrun
- Note: the counts are not allowed to wrap around; once a count reaches FFFFh
- or FFFFFFFFh, it is no longer incremented
- Format of Access Server XON/XOFF characters:
- Offset Size Description (Table 02925)
- 00h BYTE 04h (number of bytes following)
- 01h BYTE transmit XON character
- 02h BYTE transmit XOFF character
- 03h BYTE receive XON character
- 04h BYTE receive XOFF character
- --------N-2F7AFE-----------------------------
- INT 2F U - Novell NetWare - DOSNP.EXE - INSTALLATION CHECK
- AX = 7AFEh
- Return: AL = FFh if present
- ES = (data???) segment of DOSNP
- Program: DOSNP.EXE provides "named pipes" support for DOS workstations running
- NetWare
- Note: the NetWare shell calls this function and refuses to load if DOSNP is
- present
- SeeAlso: AX=7A90h
- --------N-2F7AFFBX0000-----------------------
- INT 2F - Novell NetWare - TBMI v1.1+ - INSTALLATION CHECK / Windows SUPPORT
- AX = 7AFFh
- BX = 0000h
- CX = 4E65h ("Ne")
- DX = 7457h ("tW")
- ES:DI -> Windows support procedure (see #02926)
- Return: AL = FFh if installed
- CX = configured sockets (14h)
- DS:SI -> data table ???
- ES:DI -> IPX far call handler
- Notes: for IPX/SPX this call reportedly returns DS:SI pointing to the table
- of pointers to service events queue head and tail
- this function is also supported by IPXODI; v2.12 does not change DS,
- but does set SI to an internal address
- SeeAlso: AX=7AFFh/BX=0001h
- (Table 02926)
- Values Windows support procedure called with:
- BP = function
- 0001h Get ECB
- BX = socket number
- Return: ES:SI -> ECB or 0000h:0000h if none available
- 0002h Count Listen ECBs
- AX = BX = socket
- Return: CX = number of listen ECBs for socket
- (must be >= 2 for SPX to work)
- 0003h ???
- 0004h Inform task switcher of ECB locations
- Note: registers other than those listed above are equal
- to the values when IPX was called
- Note: the support function will not be called if IPX is called with BX
- bit 15 set
- --------N-2F7AFFBX0001-----------------------
- INT 2F - Novell NetWare - TBMI v1.1+, shell v3.01d - INSTALLATION CHECK???
- AX = 7AFFh
- BX = 0001h
- CX = 4E65h ("Ne")
- DX = 7457h ("tW")
- Return: AL = FFh if installed
- CX = ??? (8000h)
- SI = ??? (or -> ???) (0002h and 0007h seen)
- ES:DI -> IPX far call handler
- ES:DX -> 6-byte data area ???
- Note: this function is also supported by IPXODI, but IPXODI v2.12 does not
- return ES:DX
- SeeAlso: AX=7AFFh/BX=0000h
- --------d-2F7F00-----------------------------
- INT 2F - Jim Harper's CD-ROM redirector SCSI driver - INSTALLATION CHECK
- AX = 7F00h
- Return: AL = FFh if installed
- SeeAlso: AX=7F01h"Harper",AX=7F02h"Harper",AX=7F03h"Harper"
- --------P-2F7F00-----------------------------
- INT 2F - PRINDIR v9.0 - INSTALLATION CHECK
- AX = 7F00h
- Return: AL = FFh if installed
- BX = version (BH = major, BL = minor)
- CX:DX -> ASCIZ signature "PRINDIR"
- Range: AH=7Fh is the default, may be changed at installation time
- Note: prior versions of PRINDIR used INT 7C or INT 7A
- SeeAlso: AX=7F01h"PRINDIR",AX=7F02h"PRINDIR",AX=7F03h"PRINDIR"
- SeeAlso: AX=7F06h"PRINDIR",AX=7F08h,AX=7F0Ah,AX=7F0Ch,AX=7F0Eh,INT 7C"PRINDIR"
- --------d-2F7F01-----------------------------
- INT 2F - Jim Harper's CD-ROM redirector SCSI driver - DO COMMAND
- AX = 7F01h
- DS:DX -> command record (see #02927)
- Return: AL = status
- 00h successful
- else error code
- SeeAlso: AX=7F00h"Harper",AX=7F02h"Harper",INT 11/AH=FFh"SDLP"
- SeeAlso: INT 21/AX=4402h"ASPI",INT 4F/AX=8100h
- Format of CD-ROM redirector command record:
- Offset Size Description (Table 02927)
- 00h BYTE ID
- 01h 10 BYTEs CDB (Command Descriptor Block) for operation (see #03236,#03237)
- 0Bh WORD segment of buffer
- 0Dh WORD offset of buffer
- 0Fh BYTE status
- 10h BYTE sense
- 12h WORD count
- --------P-2F7F01-----------------------------
- INT 2F - PRINDIR v9.0 - SET CAPTURE DEVICE
- AX = 7F01h
- DX = capture device (as used by /GET commandline option)
- Return: AX = status
- 0000h successful
- FFFFh invalid device
- SeeAlso: AX=7F00h"PRINDIR",AX=7F02h"PRINDIR",AX=7F03h"PRINDIR"
- SeeAlso: AX=7F05h"PRINDIR"
- --------d-2F7F02-----------------------------
- INT 2F - Jim Harper's CD-ROM redirector SCSI driver - DO RESET
- AX = 7F02h
- SeeAlso: AX=7F00h,AX=7F01h
- --------P-2F7F02-----------------------------
- INT 2F - PRINDIR v9.0 - SET DESTINATION DEVICE
- AX = 7F02h
- DX = destination device number (as used by /PUT commandline option)
- Return: AX = status
- 0000h successful
- FFFFh invalid device number
- SeeAlso: AX=7F00h"PRINDIR",AX=7F01h"PRINDIR",AX=7F04h"PRINDIR"
- SeeAlso: AX=7F06h"PRINDIR"
- --------d-2F7F03-----------------------------
- INT 2F - Jim Harper's CD-ROM redirector SCSI driver - UNINSTALL
- AX = 7F03h
- Return: AL = status
- 00h successful
- 01h unable to uninstall
- SeeAlso: AX=7F00h
- --------P-2F7F03-----------------------------
- INT 2F - PRINDIR v9.0 - SET CAPTURE FILENAME
- AX = 7F03h
- CX:DX -> ASCIZ name of capture file
- Return: AX = status
- 0000h successful
- FFFFh name too long
- SeeAlso: AX=7F00h"PRINDIR",AX=7F01h"PRINDIR",AX=7F04h"PRINDIR"
- SeeAlso: AX=7F05h"PRINDIR",AX=7F07h"PRINDIR"
- --------P-2F7F04-----------------------------
- INT 2F - PRINDIR v9.0 - SET LOCK FILENAME
- AX = 7F04h
- CX:DX -> ASCIZ name of lock file
- Return: AX = status
- 0000h successful
- FFFFh invalid device number
- SeeAlso: AX=7F00h"PRINDIR",AX=7F01h"PRINDIR",AX=7F03h"PRINDIR"
- SeeAlso: AX=7F05h,AX=7F06h,AX=7F08h,AX=7F0Ah,AX=7F0Bh
- --------P-2F7F05-----------------------------
- INT 2F - PRINDIR v9.0 - DUMP CAPTURE BUFFER
- AX = 7F05h
- Return: AX = status
- 0000h successful
- SeeAlso: AX=7F00h"PRINDIR",AX=7F01h"PRINDIR",AX=7F04h"PRINDIR",AX=7F06h
- --------P-2F7F06-----------------------------
- INT 2F - PRINDIR v9.0 - SET NORMAL TEXT COLOR
- AX = 7F06h
- DH = new attribute for normal text
- Return: AX = status
- 0000h successful
- SeeAlso: AX=7F00h"PRINDIR",AX=7F01h"PRINDIR",AX=7F05h"PRINDIR",AX=7F07h
- --------P-2F7F07-----------------------------
- INT 2F - PRINDIR v9.0 - SET HIGHLIGHT TEXT COLOR
- AX = 7F07h
- DH = new attribute for highlighted text
- Return: AX = status
- 0000h successful
- SeeAlso: AX=7F00h"PRINDIR",AX=7F01h"PRINDIR",AX=7F06h"PRINDIR",AX=7F08h
- --------P-2F7F08-----------------------------
- INT 2F - PRINDIR v9.0 - SET POPUP HOTKEY
- AX = 7F08h
- DH = new scancode for hotkey
- Return: AX = status
- 0000h successful
- SeeAlso: AX=7F00h"PRINDIR",AX=7F05h"PRINDIR",AX=7F09h,AX=7F0Bh,AX=7F0Dh
- --------P-2F7F09-----------------------------
- INT 2F - PRINDIR v9.0 - SET BYTE COUNTER DISPLAY
- AX = 7F09h
- DH = new state (00h off, 01h on)
- Return: AX = status
- 0000h successful
- SeeAlso: AX=7F00h"PRINDIR",AX=7F07h"PRINDIR",AX=7F08h,AX=7F0Ah,AX=7F0Ch
- --------P-2F7F0A-----------------------------
- INT 2F - PRINDIR v9.0 - SET FLUSH DELAY
- AX = 7F0Ah
- DX = number of clock ticks before flushing
- Return: AX = status
- 0000h successful
- SeeAlso: AX=7F00h"PRINDIR",AX=7F07h"PRINDIR",AX=7F09h,AX=7F0Bh,AX=7F0Ch
- --------P-2F7F0B-----------------------------
- INT 2F - PRINDIR v9.0 - SET MINIMUM DUMP SIZE
- AX = 7F0Bh
- DX = number of kilobytes to accumulate before dumping
- Return: AX = status
- 0000h successful
- SeeAlso: AX=7F00h"PRINDIR",AX=7F0Ah,AX=7F0Ch,AX=7F0Dh,AX=7F0Eh
- --------P-2F7F0C-----------------------------
- INT 2F - PRINDIR v9.0 - SET ECHO STATE
- AX = 7F0Ch
- DX = new state (00h echo off, 01h echo on)
- Return: AX = status
- 0000h successful
- SeeAlso: AX=7F00h"PRINDIR",AX=7F0Ah,AX=7F0Bh,AX=7F0Dh,AX=7F0Eh
- --------P-2F7F0D-----------------------------
- INT 2F - PRINDIR v9.0 - SHOW POPUP PARAMETER MENU
- AX = 7F0Dh
- Return: AX = status
- 0000h successful
- else failed
- SeeAlso: AX=7F00h"PRINDIR",AX=7F0Ah,AX=7F0Bh,AX=7F0Ch,AX=7F0Eh
- --------P-2F7F0E-----------------------------
- INT 2F - PRINDIR v9.0 - SUBMIT BYTE TO CURRENT DESTINATION DEVICE
- AX = 7F0Eh
- DL = byte to send to destination device
- Return: AX = status
- 0000h successful
- else failed
- SeeAlso: AX=7F00h"PRINDIR",AX=7F0Ah,AX=7F0Bh,AX=7F0Ch,AX=7F0Dh
- ----------2F7F24-----------------------------
- INT 2F - Multiplex - ???
- AX = 7F24h
- ???
- Return: ???
- Note: called by PC/370, an IBM 370 emulator by Donald S. Higgins
- ----------2F7F26-----------------------------
- INT 2F - Multiplex - ???
- AX = 7F26h
- ???
- Return: ???
- Note: called by PC/370, an IBM 370 emulator by Donald S. Higgins
- --------N-2F8000-----------------------------
- INT 2F - EASY-NET - INSTALLATION CHECK
- AX = 8000h
- Return: AL = 00h not installed
- FFh installed
- Program: EASY-NET is a shareware two-machine serial-port network
- --------N-2F8000-----------------------------
- INT 2F - Nanosoft, Inc. TurboNET server - INSTALLATION CHECK
- AX = 8000h
- Return: AL = FFh if installed
- BX = CS of resident code
- CX = ??? (03FCh)
- Program: TurboNET is a NetBIOS-based file redirector and server; a
- demonstration version may be downloaded from Nanosoft's BBS
- SeeAlso: AX=8100h
- --------t-2F8000-----------------------------
- INT 2F - CS_TSR specification - TSR INSTALLATION CHECK
- AX = 8000h
- DS:SI -> 4-byte CS_TSR signature (11h 43h 53h 10h)
- Return: AL = status
- 00h no CS_TSR-compliant TSRs installed
- 01h installed, but signature did not match
- FFh installed, signature matches
- ES:DI -> resident process block (see #02928) of last installed
- TSR (if DS:SI pointed at signature on entry)
- Program: the CS_TSR specification is a standardized TSR interface by Compact
- Soft group in Kiev, Ukraine
- Desc: determine whether any CS_TSR-compliant TSRs are installed on the
- selected multiplex number
- Range: AH=80h to AH=FFh
- SeeAlso: AX=8001h"CS_TSR",AX=8002h"CS_TSR",AX=8003h"CS_TSR"
- Format of CS_TSR process block:
- Offset Size Description (Table 02928)
- 00h 4 BYTEs CS_TSR signature 11h 43h 53h 10h
- 04h BYTE INT 2F multiplex number
- 05h WORD virtual process handle (unique among loaded TSRs)
- 07h 2 BYTEs version (binary minor version, then major version)
- 09h WORD PSP segment of TSR
- 0Bh DWORD pointer to ASCIZ program name
- 0Fh 3 BYTEs program creation date (day, month, year)
- 12h 3 BYTEs process start time (seconds, minutes, hours)
- 15h 3 BYTEs process start date (day, month, year)
- --------F-2F8000DX0000-----------------------
- INT 2F - FaxBIOS interface - INSTALLATION CHECK
- AX = 8000h
- DX = 0000h
- DI = 0000h
- Return: AL = FFh if installed
- DX:DI -> signature "FaxBiosjpc"
- Range: AH=80h to AH=FFh, selected by scanning multiplex numbers for signature
- SeeAlso: AH=2Ah,AX=80FBh
- --------N-2F8001-----------------------------
- INT 2F - Nanosoft, Inc. TurboNET server - ???
- AX = 8001h
- DS:SI -> 16-byte buffer for ???
- Return: AH = status
- 00h successful
- 01h error (TurboNET busy)
- Note: makes NetBIOS calls
- --------t-2F8001-----------------------------
- INT 2F - CS_TSR specification - GET HANDLE (TSR-SPECIFIC INSTALLATION CHECK)
- AX = 8001h
- DS:SI -> ASCIZ signature string for desired TSR (see #02929)
- Return: BX = process handle or 0000h if specified TSR not installed
- ES:DI -> process block for TSR (see #02928) if BX<>0000h
- Note: A widely-available copy of ASCII billing itself as "ASCII 2.OO by
- Nick Zaikin Jr." is in fact a hacked copy of the Compact Soft
- ASCII v4.23 which is identical except for the changed attribution
- and version (in fact, some instances of "4.23" were missed); the
- hacked copy requires the signature string
- "ASCII 2.OO by Nick Zaikin Jr." instead of the unhacked version's
- simple signature "ASCII"
- SeeAlso: AX=8000h"CS_TSR",AX=8002h"CS_TSR"
- (Table 02929)
- Values for CS_TSR signature strings:
- "ASCII" ASCII, a popup ASCII table with character input
- "Halculator" HALC, a 32-bit RPN WYSIWIH calculator with undo and ptr support
- "AntiTurbo" AT!, an intelligent system slow-down utility
- --------t-2F8002-----------------------------
- INT 2F - CS_TSR specification - GET PROCESS BLOCK BY PROCESS HANDLE
- AX = 8002h
- BX = process handle for TSR (see AX=8001h"CS_TSR")
- Return: ES:DI -> process block for specified TSR (see #02928)
- unchanged if no match for process handle
- Note: This function is used to allocate a process handle when the TSR
- installs itself, by setting ES:DI to point at something other than
- a CS_TSR process block's signature string and iterating through the
- possible process handles (0001h to FFFFh) until ES:DI is returned
- unchanged
- SeeAlso: AX=8000h"CS_TSR",AX=8001h"CS_TSR",AX=8003h"CS_TSR"
- --------t-2F8003-----------------------------
- INT 2F - CS_TSR specification - CUSTOM SUBFUNCTION
- AX = 8003h
- BX = process handle for TSR (see AX=8001h"CS_TSR")
- other registers vary by TSR
- Return: vary by TSR, unchanged if not supported
- Program: the CS_TSR specification is a standardized TSR interface by Compact
- Soft group in Kiev, Ukraine
- SeeAlso: AX=8000h"CS_TSR",AX=8001h"CS_TSR",AX=8002h"CS_TSR"
- --------F-2F80FB-----------------------------
- INT 2F - FaxBIOS interface - COMMAND SUBMISSION
- AX = 80FBh
- BX = function number (see #02930)
- DX:DI -> command buffer
- (see #02932,#02935,#02936,#02937,#02938,#02939,#02944,#02950,#02957)
- Return: AL = FFh if submitted OK
- CX = result code (see #02931)
- Range: AH=80h to AH=FFh, selected by scanning multiplex numbers for signature
- SeeAlso: AX=8000h"FaxBIOS",AX=CBDDh
- (Table 02930)
- Values for FaxBIOS function number:
- 0001h SYS_LOGIN
- 0002h SYS_LOGOUT
- 0003h SYS_GET_FAXAPP_INFO
- 0004h STAT_IO_GET
- 0005h STAT_FAXBIOS_GET
- 0006h PDIR_OPEN
- 0007h PDIR_CLOSE (see #02940)
- 0008h PDIR_READ_PERSON (see #02941)
- 0009h PDIR_PARTIAL_READ
- 000Ah PDIR_READ_GROUP
- 000Bh PDIR_READ_MEMBER_LIST
- 000Ch PDIR_WRITE_PERSON
- 000Dh PDIR_WRITE_GROUP
- 000Eh PDIR_DELETE_PERSON
- 000Fh PDIR_DELETE_GROUP
- 0010h PDIR_READ_GROUP_LIST
- 0011h PDIR_IN_GROUP
- 0012h PDIR_OUT_GROUP
- 0013h SCHED_OPEN (see #02942)
- 0014h SCHED_ADD_DEST (see #02943)
- 0015h SCHED_ADD_FILE (see #02944)
- 0016h SCHED_SET_PARAMS (see #02945)
- 0017h SCHED_CANCEL (see #02942)
- 0018h SCHED_CLOSE (see #02946)
- 0019h SLOG_OPEN (see #02947)
- 001Ah SLOG_CLOSE (see #02947)
- 001Bh SLOG_SHORT_ENV_STAT
- 001Ch SLOG_LONG_ENV_STAT
- 001Dh SLOG_DEST_STAT
- 001Eh SLOG_FILE_STAT
- 001Fh SLOG_CANCEL_ENV
- 0020h RLOG_OPEN (see #02947)
- 0021h RLOG_CLOSE (see #02947)
- 0022h RLOG_READ
- 0023h GRAPH_GET_FILE_TYPE (see #02948)
- 0024h GRAPH_EXPORT_FILE
- 0025h GRAPH_GET_LAYOUT_INFO
- 0026h GRAPH_CREATE_FILE (see #02949)
- 0027h GRAPH_CLOSE_FILE (see #02950)
- 0028h GRAPH_CREATE_PAGE (see #02951)
- 0029h GRAPH_WRITE (see #02952)
- 002Ah GRAPH_END_PAGE
- 002Bh GRAPH_OPEN_FILE (see #02953)
- 002Ch GRAPH_GOTO_PAGE (see #02954)
- 002Dh GRAPH_READ (see #02955)
- 002Eh IOCTL_GET
- 002Fh IOCTL_SET
- 0030h IOCTL_ANSWER_FAX (see #02956)
- 0031h IOCTL_DIAL (see #02957)
- (Table 02931)
- Values for FaxBIOS result code:
- 0000h successful
- 0001h not prepared or servicing another client (busy)
- 0002h call failed due to sharing (LOCKED)
- 0003h logged-in client limit reached (FULL)
- 0004h transport denied (TRANSPORT_DENIED)
- 0005h not implemented (NOT_IMPLEMENTED)
- 0006h aborted while in progress (ABORTED)
- 0007h permissions denied (PERMISSION_DENIED)
- 0008h requested data is no longer valid (NO_LONGER_VALID)
- 0080h unspecified system error occurred
- 0081h an internal file was not found
- 0082h an internal file could not be created
- 0083h an internal file could not be opened
- 0084h an internal file could not be closed
- 0085h error occurred writing to an internal file
- 0086h error occurred reading from an internal file
- 0087h bad or corrupted file encountered
- 0088h an access violation occurred
- 0089h an internal file is empty
- 008Ah insufficient memory to process request
- 008Bh FaxBIOS was unable to issue a handle
- 008Ch an error internal to FaxBIOS occurred
- 008Dh no room on disk
- 0100h unspecified error accessing client file
- 0101h file not found
- 0102h creation fault
- 0103h open fault
- 0104h close fault
- 0105h write fault
- 0106h read fault
- 0107h file corrupted
- 0108h access violation
- 0109h empty file
- 0200h unspecified argument error
- 0201h bad function
- 0202h bad option
- 0203h bad structure size
- 0204h bad buffer size
- 0205h bad client ID
- 0300h unspecified error with token
- 0301h cover sheet token was invalid
- 0302h logo token was invalid
- 0303h signature token was invalid
- 0304h font token was invalid
- 0305h phone directory token was invalid
- 0306h outbound route token was invalid
- 0307h priority token was invalid
- 0308h sort token was invalid
- 0309h billing token was invalid
- 0400h unspecified handle error
- 0401h bad Phone Directory handle
- 0402h bad scheduling handle
- 0403h bad read send log handle
- 0404h bad read receive log handle
- 0405h bad graphics handle
- 0500h data passed in structure was invalid
- 0501h name field given is invalid
- 0502h phone number given is invalid
- 0503h poll code submitted is invalid
- 0504h file type constant was invalid
- 0505h BFT constant not defined or supported
- 0506h resolution not defined or supported
- 0507h page length not defined or supported
- 0508h page width not defined or supported
- 0509h date & time requested are ridiculous
- 050Ah Subject text was not an ASCIZ string
- 050Bh From text was not an ASCIZ string
- 050Ch requested envelope ID was not found
- 050Dh requested envelope ID is not valid
- 050Eh envelope requested was not found
- 050Fh destination index is out of range
- 0510h file index is out of range
- 0511h index into receive log is out of range
- 0512h file name specified was incomplete or invalid
- 0513h page selected was out of range
- 0514h bit width more than byte width
- 0515h mode for open is not defined
- 0516h person index is out of range
- 0517h person ID is out of range
- 0518h group index out of range or invalid
- 0519h group ID out of range or invalid
- 051Ah range of indices to read is invalid
- 051Bh group name given is invalid
- 051Ch field_to_use is badly specified
- 051Dh predicate invalid for field specified
- 0600h unspecified client procedure error
- 0601h device of interest is not present
- 0602h device of interest has been removed
- 0603h device of interest is not responding
- 0604h device of interest is disabled
- 0605h could not dial because device was in use
- 0606h maximum destination limit exceeded
- 0607h maximum file limit exceeded
- 0608h scheduling closed with no destination
- 0609h scheduling closed with no files or poll
- 060Ah scheduling closed with no parameters specified
- 060Bh file type specified does not match file
- 060Ch file type specified is not supported
- 060Dh file submitted is not exportable
- 060Eh file type specified is not imageable
- 060Fh error converting file
- 0610h envelope could not be cancelled
- 0611h Phone Directory is full
- 0612h record is already in the Phone Directory
- 0613h selected group in Phone Directory is full
- 0614h person is already in the group
- 0615h person is not in the group & cannot be removed
- 0616h a graphics file to be created already exists
- 0617h a graphics file to be read is empty
- 0618h GRAPH_CREATE_PAGE called before GRAPH_END_PAGE
- 0619h graph read or write attempted without goto or create
- 061Ah graph page contains no data
- 061Bh Phone Directory is already open for this client
- 061Ch schedule log is already open for this client
- 061Dh receive log is aready open for this client
- 061Eh Phone Directory function requires write mode
- 0800h denied exclusive use of the API
- Format of FaxBIOS SYS_LOGIN command buffer:
- Offset Size Description (Table 02932)
- 00h WORD structure size
- 02h WORD function number
- 04h WORD return code
- 06h WORD client ID
- 08h WORD API Major Version
- 0Ah WORD API Minor Version
- 0Ch DWORD reserved for manufacturer's use
- 10h 22 BYTEs manufacturer's ID
- 26h WORD highest possible device number
- 28h WORD maximum destinations per envelope
- 2Ah WORD maximum files per envelope
- 2Ch WORD FaxBIOS capabilities (see #02933)
- 2Eh DWORD T.30 capabilities (see #02934)
- 32h WORD IPC handle
- 34h DWORD amount of memory needed to load
- 38h WORD scope (00h for public, nonzero for private)
- 3Ah 6 BYTEs future expansion
- 40h WORD structure size
- Bitfields for FaxBIOS capabilities:
- Bit(s) Description (Table 02933)
- 0 transmit supported
- 1 receive supported
- 2 IOCTL supported
- 3 IOCTL_DIAL supported
- 4 IOCTL_ANSWER_FAX supported
- 5 manual transmit supported
- 6 optional phone services supported
- 7 canonical phone objects
- 8 seam with next supported
- Bitfields for T.30 capabilities:
- Bit(s) Description (Table 02934)
- 0 low vertical resolution (minimum)
- 1 high vertical resolution
- 2 page width 107mm (4.21 in)
- 3 page width 151mm (5.91 in)
- 4 page width 215mm (8.46 in) (minimum)
- 5 page width 255mm (10.04 in)
- 6 page width 303mm (11.93 in)
- 7 unused
- 8 page length 297mm (11.69 in) (minimum)
- 9 page length 364mm (14.33 in)
- 10 page length 279mm (11 in)
- 11 page length unlimited
- 12 Group 4 resolution 300x300
- 13 Group 4 resolution 400x400
- 14 able to respond to poll from remote
- 15 able to poll remote
- 16 binary file transfer supported
- Format of FaxBIOS SYS_LOGOUT command buffer:
- Offset Size Description (Table 02935)
- 00h WORD structure size
- 02h WORD function number
- 04h WORD return code
- 06h WORD client ID
- 08h DWORD client tag (for client's internal use)
- 0Ch 6 BYTEs future expansion
- 12h WORD structure size
- Format of FaxBIOS SYS_GET_FAXAPP_INFO command buffer:
- Offset Size Description (Table 02936)
- 00h 12 BYTEs common data (see #02935)
- 0Ch 80 BYTEs FaxBIOS data
- 5Ch 80 BYTEs default cover
- ACh 80 BYTEs default logo
- FCh 80 BYTEs default signature
- 14Ch 80 BYTEs default font 10
- 19Ch 80 BYTEs default font 165
- 1ECh 80 BYTEs default user font
- 23Ch 80 BYTEs default Pdir
- 28Ch 80 BYTEs default sort
- 2DCh 10 BYTEs default bill
- 2E6h 10 BYTEs default route
- 2F0h 40 BYTEs default cover sheet form
- 318h 34 BYTEs valid dial characters
- 33Ah 6 BYTEs local country code
- 340h 6 BYTEs local city or area code
- 346h 6 BYTEs future expansion
- 34Ch WORD structure size
- Format of FaxBIOS STAT_IO_GET command buffer:
- Offset Size Description (Table 02937)
- 00h 12 BYTEs common data (see #02935)
- 0Ch WORD device number
- 0Eh WORD current activity
- 10h WORD number of rings (if ringing)
- 12h WORD number of fascimiles transmitted
- 14h WORD number of fascimiles received
- 16h WORD status of last transmission
- 18h WORD envelope number of last transmission
- 1Ah WORD index of last destination in envelope
- 1Ch WORD status of last reception
- 1Eh WORD current page (if session in progress)
- 20h 80 BYTEs current file
- 70h 104 BYTEs remote number
- D8h 20 BYTEs last name
- ECh 20 BYTEs first name
- 100h 32 BYTEs company name
- 120h 32 BYTEs notes
- 140h WORD current envelope ID (if sending)
- 142h WORD total pages in transmission (if sending)
- 144h 6 BYTEs future expansion
- 14h WORD structure size
- Format of FaxBIOS STAT_FAXBIOS_GET command buffer:
- Offset Size Description (Table 02938)
- 00h 12 BYTEs common data (see #02935)
- 0Ch WORD status ID
- 0Eh WORD currenty FaxBIOS function number
- 10h WORD current Client ID being serviced
- 12h WORD number of things to do
- 14h WORD number of them done
- 16h WORD number of pages to do (if any)
- 18h WORD number of them done
- 1Ah WORD number of files to do
- 1Ch WORD number of them done
- 1Eh 80 BYTEs current File
- 6Eh WORD 0 if all devices are idle
- 70h WORD number of fascimiles transmitted
- 72h WORD number of fascimiles received
- 74h WORD status of last transmission in system
- 76h WORD envelope ID of last transmission
- 78h WORD index of last destination in envelope
- 7Ah WORD status of last reception in system
- 7Ch DWORD time of next transmission
- 80h 6 BYTEs future expansion
- 86h WORD structure size
- Format of FaxBIOS PDIR_OPEN command buffer:
- Offset Size Description (Table 02939)
- 00h 12 BYTEs common data (see #02935)
- 0Ch 80 BYTEs Phone Directory token
- 5Ch 80 BYTEs sort order token
- ACh WORD open Mode (0 = read, 1 = write)
- AEh WORD Phone Directory handle
- B0h WORD number of people
- B2h WORD number of groups
- B4h WORD bitmap of fields supported by partial read
- B6h 6 BYTEs future expansion
- BCh WORD structure size
- Format of FaxBIOS PDIR_CLOSE command buffer:
- Offset Size Description (Table 02940)
- 00h 12 BYTEs common data (see #02935)
- 0Ch WORD Phone Directory handle
- 0Eh 6 BYTEs future expansion
- 14h WORD structure size
- Format of FaxBIOS PDIR_READ_PERSON command buffer:
- Offset Size Description (Table 02941)
- 00h 12 BYTEs common data (see #02935)
- 0Ch WORD Phone Directory handle
- 0Eh WORD retrieve by index
- 10h WORD person ID or index
- 12h WORD how many groups person is in
- 14h WORD person ID
- 16h 20 BYTEs last name
- 2Ah 20 BYTEs first name
- 3Eh 32 BYTEs company
- 5Eh 32 BYTEs notes
- 7Eh 6 BYTEs FAX country code
- 84h 6 BYTEs FAX city/area code
- 8Ah 14 BYTEs FAX local number
- 98h 14 BYTEs FAX extension
- A6h 24 BYTEs reserved
- BEh 6 BYTEs voice country code
- C4h 6 BYTEs voice city/area code
- CAh 14 BYTEs voice local number
- D8h 14 BYTEs voice extension
- E6h 24 BYTEs reserved
- FEh 10 BYTEs outbound routing information
- 108h 10 BYTEs billing information, credit card etc
- 112h DWORD remote FAX capabilities
- 116h 21 BYTEs T.30 poll code of FAX number
- 12Bh 15 BYTEs reserved
- 13Ah 6 BYTEs future expansion
- 140h WORD structure size
- Format of FaxBIOS SCHED_OPEN, SCHED_CANCEL command buffer:
- Offset Size Description (Table 02942)
- 00h 12 BYTEs common data (see #02935)
- 0Ch WORD scheduler handle
- 0Eh 6 BYTEs future expansion
- 14h WORD structure size
- Format of FaxBIOS SCHED_ADD_DEST command buffer:
- Offset Size Description (Table 02943)
- 00h 12 BYTEs common data (see #02935)
- 0Ch WORD schedule handle
- 0Eh WORD device number if manual send wanted
- 10h WORD non-zero if poll desired
- 12h WORD person ID
- 14h 20 BYTEs last name
- 28h 20 BYTEs first name
- 3Ch 32 BYTEs company
- 5Ch 32 BYTEs notes
- 7Ch 6 BYTEs FAX country code
- 82h 6 BYTEs FAX city/area code
- 88h 14 BYTEs FAX local number
- 96h 14 BYTEs FAX extension
- A4h 24 BYTEs reserved
- BCh 6 BYTEs voice country code
- C2h 6 BYTEs voice city/area code
- C8h 14 BYTEs voice local number
- D6h 14 BYTEs voice extension
- E4h 24 BYTEs reserved
- FCh 10 BYTEs outbound routing information
- 106h 10 BYTEs billing information, credit card etc
- 110h DWORD remote FAX capabilities
- 114h 21 BYTEs T.30 poll code of FAX number
- 129h 15 BYTEs reserved
- 138h 6 BYTEs future expansion
- 13Eh WORD structure size
- SeeAlso: #02944
- Format of FaxBIOS SCHED_ADD_FILE command buffer:
- Offset Size Description (Table 02944)
- 00h 12 BYTEs common data (see #02935)
- 0Ch WORD schedule handle
- 0Eh WORD file type
- 0000h unidentified
- 0001h native file format
- 0002h ASCII
- 0003h FaxBIOS Tiff Class F
- 10h 80 BYTEs file name
- 60h 80 BYTEs font token
- B0h WORD conversion options bitmap
- B2h WORD resolution
- 0000h standard 98 lines per inch, 204 dpi
- 0001h fine 196 lines per inch, 204 dpi
- 0002h Group4 300 dpi
- 0003h Group4 400 dpi
- B4h WORD page length
- 0000h 279 mm (11 in)
- 0001h 297 mm (11.69 in)
- 0002h 364 mm (14.33 in)
- 0003h unlimited
- B6h WORD page width
- 0000h 215 mm (8.46 in)
- 0001h 255 mm (10.04 in)
- 0002h 303 mm (11.93 in)
- 0003h 151 mm (5.91 in)
- 0004h 107 mm (4.21 in)
- B8h WORD binary file transfer specification
- 0000h only as FAX
- 0001h only as file (for non-faxable files)
- 0002h as file when possible else FAX
- BAh WORD seam flag (nonzero for seam with next)
- BCh WORD delete flag (nonzero to delete when done)
- BEh 6 BYTEs future expansion
- C4h WORD structure size
- SeeAlso: #02943,#02945
- Format of FaxBIOS SCHED_SET_PARAMS command buffer:
- Offset Size Description (Table 02945)
- 00h 12 BYTEs common data (see #02935)
- 0Ch WORD scheduler handle
- 0Eh DWORD time to send
- 10h 10 BYTEs priority token
- 1Ch 80 BYTEs logo file token
- 6Ch 80 BYTEs signature file token
- BCh 80 BYTEs cover page token
- 10Ch 40 BYTEs Subject text
- 134h 40 BYTEs From text
- 15Ch WORD user ID
- 15Eh 6 BYTEs future expansion
- 164h WORD structure size
- SeeAlso: #02943,#02944,#02946
- Format of FaxBIOS SCHED_CLOSE command buffer:
- Offset Size Description (Table 02946)
- 00h 12 BYTEs common data (see #02935)
- 0Ch WORD scheduler handle
- 0Eh WORD envelope ID generated
- 10h 6 BYTEs future expansion
- 16h WORD structure size
- SeeAlso: #02945
- Format of FaxBIOS SLOG_OPEN, SLOG_CLOSE, RLOG_OPEN, RLOG_CLOSE command buffer:
- Offset Size Description (Table 02947)
- 00h 12 BYTEs common data (see #02935)
- 0Ch WORD log handle
- 0Eh WORD number of entries
- 10h 6 BYTEs future expansion
- 16h WORD structure size
- Format of FaxBIOS GRAPH_GET_FILE_TYPE command buffer:
- Offset Size Description (Table 02948)
- 00h 12 BYTEs common data (see #02935)
- 0Ch 80 BYTEs filename
- 5Ch WORD file type
- 0000h unidentified
- 0001h native file format
- 0002h ASCII
- 0003h FaxBIOS Tiff Class F
- 5Eh WORD bitmap of supported capabilities
- 60h 6 BYTEs future expansion
- 66h WORD structure size
- SeeAlso: #02949,#02950
- Format of FaxBIOS GRAPH_CREATE_FILE command buffer:
- Offset Size Description (Table 02949)
- 00h 12 BYTEs common data (see #02935)
- 0Ch 80 BYTEs filename
- 5Ch WORD graph handle
- 5Eh 6 BYTEs future expansion
- 64h WORD structure size
- SeeAlso: #02948,#02950,#02951
- Format of FaxBIOS GRAPH_CLOSE_FILE, GRAPH_END_PAGE command buffer:
- Offset Size Description (Table 02950)
- 00h 12 BYTEs common data (see #02935)
- 0Ch WORD graph handle
- 0Eh 6 BYTEs future expansion
- 14h WORD structure size
- SeeAlso: #02949,#02951
- Format of FaxBIOS GRAPH_CREATE_PAGE command buffer:
- Offset Size Description (Table 02951)
- 00h 12 BYTEs common data (see #02935)
- 0Ch WORD graph handle
- 0Eh WORD resolution
- 10h WORD page width
- 12h 6 BYTEs future expansion
- 18h WORD structure size
- SeeAlso: #02949,#02950,#02952
- Format of FaxBIOS GRAPH_WRITE_PAGE command buffer:
- Offset Size Description (Table 02952)
- 00h 12 BYTEs common data (see #02935)
- 0Ch WORD graph handle
- 0Eh DWORD pointer to storage for image
- 12h WORD band height in lines
- 14h WORD width of page image in bytes
- 16h WORD facsimile page width constant
- 18h WORD width of page image in bits
- 1Ah WORD number of bytes actually processed
- 1Ch 6 BYTEs future expansion
- 22h WORD structure size
- SeeAlso: #02951,#02953
- Format of FaxBIOS GRAPH_OPEN_FILE command buffer:
- Offset Size Description (Table 02953)
- 00h 12 BYTEs common data (see #02935)
- 0Ch 80 BYTEs filename
- 5Ch WORD file type
- 5Eh WORD graph handle
- 60h WORD number of pages
- 62h 6 BYTEs future expansion
- 68h WORD structure size
- SeeAlso: #02952,#02954
- Format of FaxBIOS GRAPH_GOTO_PAGE command buffer:
- Offset Size Description (Table 02954)
- 00h 12 BYTEs common data (see #02935)
- 0Ch WORD graph handle
- 0Eh WORD page number
- 10h WORD vertical resolution
- 12h WORD page width
- 14h DWORD page length
- 18h 6 BYTEs future expansion
- 1Eh WORD structure size
- SeeAlso: #02952,#02953,#02955
- Format of FaxBIOS GRAPH_READ_PAGE command buffer:
- Offset Size Description (Table 02955)
- 00h 12 BYTEs common data (see #02935)
- 0Ch WORD graph handle
- 0Eh DWORD pointer to storage for image
- 12h WORD band height in lines
- 14h WORD width of page image in bytes
- 16h WORD facsimile page width constant
- 18h WORD width of page image in bits
- 1Ah WORD number of bytes actually processed
- 1Ch 6 BYTEs future expansion
- 22h WORD structure size
- Format of FaxBIOS IOCTL_ANSWER_FAX command buffer:
- Offset Size Description (Table 02956)
- 00h 12 BYTEs common data (see #02935)
- 0Ch WORD device number
- 0Eh 6 BYTEs future expansion
- 14h WORD structure size
- SeeAlso: #02957
- Format of FaxBIOS IOCTL_DIAL command buffer:
- Offset Size Description (Table 02957)
- 00h 12 BYTEs common data (see #02935)
- 0Ch WORD device number
- 0Eh 6 BYTEs country code
- 14h 6 BYTEs city or area code
- 1Ah 14 BYTEs local number
- 28h 14 BYTEs extension
- 36h 14 BYTEs reserved
- 4Eh 6 BYTEs future expansion
- 54h WORD structure size
- SeeAlso: #02956
- --------N-2F8100-----------------------------
- INT 2F U - Nanosoft, Inc. TurboNET redirector - INSTALLATION CHECK
- AX = 8100h
- Return: AL = FFh if installed
- Program: TurboNET is a NetBIOS-based file redirector and server; a
- demonstration version may be downloaded from Nanosoft's BBS
- SeeAlso: AX=8000h"TurboNET"
- --------N-2F8101-----------------------------
- INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
- AX = 8101h
- Return: AL = ???
- DL = ???
- --------N-2F8102-----------------------------
- INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
- AX = 8102h
- Return: AL = ???
- DL = ???
- --------N-2F8103-----------------------------
- INT 2F U - Nanosoft, Inc. TurboNET redirector - GET MACHINE NAME???
- AX = 8103h
- ES:DI -> 17-byte buffer
- Return: buffer filled
- --------N-2F8104-----------------------------
- INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
- AX = 8104h
- BL = ???
- BH = ???
- CX = ???
- DX = ???
- DS:SI -> 16-byte buffer containing ???
- Return: AL = 00h ???
- --------N-2F8105-----------------------------
- INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
- AX = 8105h
- CX = ??? (don't change current value if 0000h)
- DX = ??? (don't change current value if 0000h)
- Return: AL = 00h successful
- --------s-2F8200-----------------------------
- INT 2F - RESPLAY - SAMPLE/PLAYBACK
- AX = 8200h
- DX:DI -> start of sample space
- CX:BX = length in bytes
- Return: AX = status (see #02958)
- Program: RESPLAY is a freeware sound sampling/playback utility by Mark J. Cox
- SeeAlso: AX=8201h"RESPLAY",AX=8210h
- (Table 02958)
- Values for RESPLAY status:
- 1000h successful
- 2000h not initialized (see AX=8210h)
- other RESPLAY not installed
- --------G-2F8200-----------------------------
- INT 2F U - Nanosoft, Inc. CAPDOS - INSTALLATION CHECK
- AX = 8200h
- Return: AL = FFh if installed
- Program: CAPDOS is a TSR by Nanosoft, Inc. which allows INT 21h calls to be
- captured and recorded for later analysis
- SeeAlso: AX=8100h,AX=8201h"CAPDOS",AX=8202h"CAPDOS",AX=8203h"CAPDOS"
- SeeAlso: AX=8204h"CAPDOS"
- --------s-2F8201-----------------------------
- INT 2F - RESPLAY - INSTALLATION CHECK
- AX = 8201h
- Return: AX = 7746h if installed
- SeeAlso: AX=8202h"RESPLAY",AX=8210h
- --------G-2F8201-----------------------------
- INT 2F - Nanosoft, Inc. CAPDOS - CLEAR QUEUE
- AX = 8201h
- Note: resets queue of captured INT 21 calls
- SeeAlso: AX=8200h"CAPDOS"
- --------s-2F8202-----------------------------
- INT 2F - RESPLAY - UNINSTALL
- AX = 8202h
- Return: AX = status
- 1000h successful
- SeeAlso: AX=8201h"RESPLAY",AX=8210h"RESPLAY"
- --------G-2F8202-----------------------------
- INT 2F - Nanosoft, Inc. CAPDOS - START COLLECTION
- AX = 8202h
- SeeAlso: AX=8200h"CAPDOS",AX=8203h"CAPDOS"
- --------G-2F8203-----------------------------
- INT 2F - Nanosoft, Inc. CAPDOS - STOP COLLECTION
- AX = 8203h
- SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8204h"CAPDOS"
- --------G-2F8204-----------------------------
- INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE PARAMETERS
- AX = 8204h
- Return: AH = flag: queue wrapped if nonzero
- BX = index of current start of queue
- CX = size of queue in entries
- SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8205h"CAPDOS"
- --------G-2F8205-----------------------------
- INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE ITEM
- AX = 8205h
- BX = queue item number
- Return: AX,BX,CX,DX,SI,DI,DS,ES as on entry to captured DOS call
- SeeAlso: AX=8200h"CAPDOS",AX=8204h"CAPDOS"
- --------s-2F8210-----------------------------
- INT 2F - RESPLAY - INITIALIZE
- AX = 8210h
- BL = sound device number (see #02959)
- BH = sample rate in multiples of 250 Hz (14h to A0h)
- CL = direction
- 00h playback
- 01h sample
- Return: AX = status (see #02958)
- SeeAlso: AX=8200h"RESPLAY",AX=8220h"MODRES"
- (Table 02959)
- Values for RESPLAY sound device:
- 00h printer port LPT1
- 01h printer port LPT2
- 02h prototype board at I/O address 0300h
- 03h printer port (alternative LPT1)
- 04h internal speaker
- --------s-2F8220-----------------------------
- INT 2F - MODRES - PLAY MODULE
- AX = 8220h
- DX:CX -> MODPARM structure (see #02960)
- Return: AX = status
- 5722h succesful
- 2000h parameters out of range
- other MODRES not installed
- SeeAlso: AX=8221h,AX=8223h,AX=8225h,AX=8227h,AX=8200h"RESPLAY"
- Format of MODPARM Structure:
- Offset Size Description (Table 02960)
- 00h WORD signature 504Dh ("MP" = Modparm)
- 02h BYTE output device (see #02962 at INT 2F/AX=8221h)
- 03h WORD segment of start of main module (pattern) data
- 05h 31 WORDs segment of start of sample numbers 1-31
- 43h BYTE pattern at which to start playing (00h to 7Fh)
- 44h BYTE function
- 00h play from pattern [offset 43h] until end of the song
- 01h play indicated pattern [offset 43h] only
- 45h BYTE Machine speed
- 00h 10-12Mhz
- 01h 12-25Mhz (default)
- 02h 25Mhz+
- 03h mix speed 10kHz (fast 8Mhz machines)
- 04h mix speed 12kHz (10Mhz machines)
- 05h mix speed 13kHz
- 06h mix speed 8kHz (test for 8Mhz machines)
- 46h BYTE allow >64k sample playing
- 80h MOD has samples >64k in it
- else all samples in MOD are <64k
- Notes: Main module data and all samples must start on segment boundaries.
- In version 2.00 (ONLY) this function carries on playing (works in
- the background)
- SeeAlso: #02961
- --------s-2F8221-----------------------------
- INT 2F - MODRES - INSTALLATION CHECK
- AX = 8221h
- Return: AX = status
- 5722h successful
- other MODRES not installed
- BX = BCD version number (BH = major, BL = minor)
- DX:CX -> Output Device structure (read-only) (see #02961)
- SeeAlso: AX=8220h,AX=8222h,AX=8225h,AX=8227h
- Format of Output Device structure [array]:
- Offset Size Description (Table 02961)
- 00h 20 BYTEs ASCIZ name of the output device
- (end of list if first char is FFh)
- 14h WORD apparently always FFFFh
- 16h WORD 0000h if output device not available
- else first I/O port for the output device
- 18h WORD second I/O port for the output device (for example
- if it is stereo)
- 000oh if only one port used or device is not available
- 1Ah 7 BYTEs ???
- SeeAlso: #02960,#02962
- (Table 02962)
- Values for MODRES v1.52 output device index:
- 00h PC speaker
- 01h D/A Converter on LPT1
- 02h D/A Converter on LPT2
- 03h D/A Converter on LPT3
- 04h D/A Converter on LPT4
- 05h D/A Converter on LPT1&LPT2 (stereo)
- 06h D/A Converter on LPT1&LPT2 (mono)
- 07h Sound Blaster (port 02x0h)
- 08h User Defined D/A (mono)
- 09h User Defined D/A (stereo)
- 0Ah Stereo-on-1
- 0Bh Disney SS su LPT1
- 0Ch Disney SS su LPT2
- 0Dh Disney SS su LPT3
- 0Eh Disney SS su LPT4
- Note: this list may vary between versions of MODRES
- --------s-2F8222-----------------------------
- INT 2F - MODRES - UNINSTALL
- AX = 8222h
- Return: AX = code segment of the program
- Note: this function does not release the TSRs memory; the caller must do so
- SeeAlso: AX=8220h,AX=8221h,AX=8223h
- --------s-2F8223-----------------------------
- INT 2F - MODRES - PLAY SAMPLE
- AX = 8223h
- DX:CX -> SAMPARM structure (see #02963)
- Return: AX = status
- 5722h succesful
- 2000h parameters out of range
- other MODRES not installed
- SeeAlso: AX=8221h,AX=8224h,AX=8225h,AX=8226h
- Format of SAMPARM Structure:
- Offset Size Description (Table 02963)
- 00h WORD signature 5053h ("SP" = SAMPARM)
- 02h WORD segment of start of sample to play
- 04h WORD length of sample (IN WORD)
- 06h BYTE output device (see #02962 at INT 2F/AX=8221h)
- 07h WORD pitch to play (see #02964)
- 09h BYTE volume (from 00h to 40h)
- 0Ah WORD loop start
- 0Ch WORD loop length
- 0Eh BYTE machine speed (see INT 2F/AX=8220h)
- SeeAlso: #02960
- (Table 02964)
- Values for Pitch to play::
- C 0 is 06B0h
- C#0 is 06B0h / 2^(1/12)
- D 0 is (06B0h / 2^(1/12)) / 2^(1/12)
- ...
- Note: C 1 is 06B0h / 2
- C 2 is 06B0h / 4
- etc.
- SeeAlso: #02963
- --------s-2F8224-----------------------------
- INT 2F - MODRES - ???
- AX = 8224h
- DX:CX -> ???
- Return: ???
- SeeAlso: AX=8221h,AX=8223h,AX=8224h
- --------s-2F8225-----------------------------
- INT 2F - MODRES v2.00+ - GET LOCATION IN MOD
- AX = 8225h
- Return: AL = status
- 00h playing
- 01h reached end or stopped
- AH = speed of MOD
- BX = position within pattern 0000h-0400h
- CL = position within the song (track number)
- SeeAlso: AX=8220h,AX=8221h,AX=8223h,AX=8226h
- --------s-2F8226-----------------------------
- INT 2F - MODRES v2.00+ - STOP PLAYING
- AX = 8226h
- Return: AX = status
- 5722h succesful
- other MODRES not installed
- Desc: stops playing the MOD file before performing critical operations such
- as disk accesses
- SeeAlso: AX=8220h,AX=8221h,AX=8223h,AX=8225h,AX=8227h
- --------s-2F8227-----------------------------
- INT 2F - MODRES - CONFIGURE
- AX = 8227h
- BX = function
- 0001h set default playing speed (06h)
- 0002h select output device
- CL = output device (see #02962 at INT 2F/AX=8221h)
- Return: AX = status
- 5722h succesful
- 2000h parameters out of range
- other MODRES not installed
- Note: function 0001h should be called every time a new module is loaded
- SeeAlso: AX=8220h,AX=8221h,AX=8222h,AX=8223h
- ----------2F86-------------------------------
- INT 2F U - ???
- AH = 86h
- AL = function (at least 06h and 07h)
- ???
- Return: ???
- Note: called by Codeview for Windows
- SeeAlso: AH=44h
- --------U-2F8900-----------------------------
- INT 2F - WHOA!.COM - INSTALLATION CHECK
- AX = 8900h
- Return: AL = state
- 00h not installed
- FFh installed
- Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
- SeeAlso: AX=8901h,AX=8902h
- --------U-2F8901-----------------------------
- INT 2F - WHOA!.COM - UNINSTALL
- AX = 8901h
- Return: AL = status
- FDh successful
- FEh error
- SeeAlso: AX=8900h
- --------U-2F8902-----------------------------
- INT 2F - WHOA!.COM - SET DELAY COUNT
- AX = 8902h
- BX = delay count (larger values slow system down more)
- Return: AL = status
- FDh successful
- FEh error
- Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
- SeeAlso: AX=8900h
- --------U-2F9000-----------------------------
- INT 2F U - RAID - INSTALLATION CHECK
- AX = 9000h
- Return: AL = FFh if installed
- Program: RAID (Resident AID) is a TSR utility program by Ross Neilson
- Wentworth that resides mostly in EMS
- --------U-2F9001-----------------------------
- INT 2F U - RAID - GET ???
- AX = 9001h
- Return: DX:AX -> ???
- SeeAlso: AX=9000h
- --------U-2F9002-----------------------------
- INT 2F U - RAID - GET RESIDENT SEGMENT
- AX = 9002h
- Return: AX = segment of resident (conventional memory) portion
- SeeAlso: AX=9000h
- --------U-2F9003-----------------------------
- INT 2F U - RAID - UNINSTALL
- AX = 9003h
- Return: ???
- SeeAlso: AX=9000h
- --------U-2F9004-----------------------------
- INT 2F U - RAID - GET ???
- AX = 9004h
- Return: AX = first available paragraph past end of resident portion???
- CX destroyed
- SeeAlso: AX=9000h
- --------e-2F92-------------------------------
- INT 2F - Network Courier E-Mail - API
- AH = 92h
- AL = function
- 00h installation check
- 01h uninstall
- 02h pop down MICRO.EXE notification window
- 03h ???
- 04h ???
- 05h ???
- Return: ???
- Program: The Network Courier is an electronic mail package by Consumers
- Software of Vancouver, BC which was bought by Microsoft in 1991 and
- renamed Microsoft Mail v3.0.
- SeeAlso: AX=9400h,AX=9401h,AX=9402h,AH=9Ch
- Index: installation check;Network Courier E-Mail
- Index: uninstall;Network Courier E-Mail
- --------R-2F9200-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - BUG
- AX = 9200h
- Program: DRIVEMAP is a redirector which allows drives on computers connected
- over the parallel or serial ports to appear as local drives
- BUG: jumps to data because jump table entry is 0000h
- Note: DRIVEMAP returns AX=FFFFh if not a valid function number in AL
- --------R-2F9201-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - CHECK IF MAPPED DRIVE
- AX = 9201h
- DL = drive number (01h = A:, etc.)
- Return: AL = 92h if mapped drive
- AH may be destroyed (v8.0 DRIVEMAP returns AX=0000h if not mapped)
- SeeAlso: AX=9204h,AX=920Bh
- --------R-2F9202-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - UNINSTALL
- AX = 9202h
- BX = caller's CS
- Return: AX = status
- 0000h failed
- nonzero successful
- SeeAlso: AX=9204h
- --------R-2F9203-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - GET VERSION
- AX = 9203h
- Return: AH = major version
- AL = minor version
- CX = segment of resident code
- Note: the DRIVEMAP included with PC Tools v8.0 is version 1.00
- SeeAlso: AX=9204h,INT 16/AX=FF70h
- --------R-2F9204-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - INSTALLATION CHECK
- AX = 9204h
- Return: AX = 9200h if installed
- BL = ???
- CX = segment of resident code
- Program: DRIVEMAP is a redirector which allows drives on computers connected
- over the parallel or serial ports to appear as local drives
- SeeAlso: AX=9201h,AX=9202h,AX=9203h
- --------R-2F9205-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - SET ???
- AX = 9205h
- BX = ??? to set
- Return: CX = new value of ???
- --------R-2F9206-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - ???
- AX = 9206h
- ???
- Return: ???
- --------R-2F9207-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
- AX = 9207h
- ???
- Return: AX = ???
- --------R-2F9208-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - ???
- AX = 9208h
- ???
- Return: ???
- --------R-2F9209-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - ???
- AX = 9209h
- ???
- Return: AX = ???
- BX = ???
- CX = ???
- DX = ???
- --------R-2F920A-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - ???
- AX = 920Ah
- BX = ???
- Return: AX = ??? or FFFBh on error
- --------R-2F920B-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - SET DRIVE MAPPING
- AX = 920Bh
- BL = drive letter (41h ['A'] = A:, etc)
- CX = ??? (0000h removes mapping)
- Return: AX = ??? or FFF8h on error
- SeeAlso: AX=9201h,AX=920Dh
- --------R-2F920C-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - ???
- AX = 920Ch
- ???
- Return: AX = ??? (0002h)
- CX = ??? (0000h)
- --------R-2F920D-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - GET DRIVE TYPE
- AX = 920Dh
- BL = drive letter (41h ['A'] = A:, etc)
- Return: AX = type flags
- bit 0: ???
- bit 1: available
- bit 5: local
- BX = ???
- CX = segment of resident code (apparently an unintended side effect)
- Program: DRIVEMAP is a redirector which allows drives on computers connected
- over the parallel or serial ports to appear as local drives
- SeeAlso: AX=9218h,INT 16/AX=FF70h
- --------R-2F920E-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - SET LPT MAPPING
- AX = 920Eh
- BX = port number (0-2)
- CX = ??? (0000h to unmap)
- Return: ???
- --------R-2F920F-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
- AX = 920Fh
- ES:DI -> 3-byte buffer for ???
- Return: CX = 0000h
- ES:DI buffer filled
- --------R-2F9210-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - ???
- AX = 9210h
- ???
- Return: ???
- --------R-2F9211-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
- AX = 9211h
- ES:DI -> 8-word buffer for ???
- Return: CX = 0000h
- ES:DI buffer filled
- --------R-2F9212-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - CRITICAL SECTION???
- AX = 9212h
- BX = phase
- 0000h leave critical section???
- nonzero enter critical section???
- --------R-2F9213-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - ???
- AX = 9213h
- BX = function number (0000h-000Bh)
- ???
- Return: ???
- --------R-2F9214-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
- AX = 9214h
- ES:DI -> 6-word buffer for ???
- Return: CX = 0000h
- AX = ???
- ES:DI buffer filled
- --------R-2F9215-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
- AX = 9215h
- ES:DI -> 100-word buffer for ???
- Return: CX = 0000h
- ES:DI buffer filled
- --------R-2F9216-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - ???
- AX = 9216h
- ES:DI -> ???
- Return: ???
- --------R-2F9217-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - ???
- AX = 9217h
- DS:SI -> 25-word buffer containing ???
- Return: ???
- --------R-2F9218-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - GET LPT TYPE???
- AX = 9218h
- BX = port number???
- Return: AX = ???
- BX = ??? (0000h)
- CX = ??? (0000h)
- Program: DRIVEMAP is a redirector which allows drives on computers connected
- over the parallel or serial ports to appear as local drives
- --------R-2F9219-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - ???
- AX = 9219h
- ???
- Return: ???
- --------R-2F921A-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - ???
- AX = 921Ah
- ???
- Return: AH = ???
- AL = ???
- BX = ???
- --------R-2F921B-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - ???
- AX = 921Bh
- ???
- Return: AX = ???
- CX = segment of resident code (apparently an unintended side effect)
- --------R-2F921C-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - ???
- AX = 921Ch
- ???
- Return: ???
- --------R-2F921D-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
- AX = 921Dh
- Return: AX = ???
- --------R-2F921E-----------------------------
- INT 2F U - PC Tools v8.0 DRIVEMAP - ???
- AX = 921Eh
- ???
- Return: ???
- Program: DRIVEMAP is a redirector which allows drives on computers connected
- over the parallel or serial ports to appear as local drives
- Note: this function sets two variables to 24h each
- SeeAlso: INT 16/AX=FF70h
- --------V-2F93-------------------------------
- INT 2F - InnerMission v1.7+ - INSTALLATION CHECK
- AH = 93h
- BX = CX = AX
- Return: AL = state
- FFh if installed and BX=CX=AX on entry
- BX = segment of resident code
- 01h if installed but BX or CX differ from AX (multiplex number not
- available)
- Program: InnerMission is a shareware graphical screen blanker by Kevin Stokes
- SeeAlso: INT 14/AX=AA01h,INT 2F/AX=6400h
- Index: screen saver;InnerMission
- --------e-2F9400-----------------------------
- INT 2F - MICRO.EXE - INSTALLATION CHECK
- AX = 9400h
- Return: AL = 07h or 08h if installed
- Program: MICRO.EXE is a TSR of the Microsoft Mail part of Workgroup Connection
- SeeAlso: AH=92h"Network Courier",AX=9401h,AX=9402h,AX=9403h,AX=9404h
- SeeAlso: INT 21/AH=3Fh"WORKGRP.SYS"
- --------e-2F9401-----------------------------
- INT 2F - MICRO.EXE - SET ??? FLAG
- AX = 9401h
- SeeAlso: AX=9400h,AX=9403h
- --------e-2F9402-----------------------------
- INT 2F - MICRO.EXE - ???
- AX = 9402h
- ???
- Return: ???
- SeeAlso: AX=9400h
- --------e-2F9403-----------------------------
- INT 2F - MICRO.EXE - SET ??? FLAG
- AX = 9403h
- SeeAlso: AX=9400h,AX=9404h
- --------e-2F9404-----------------------------
- INT 2F - MICRO.EXE - CLEAR ??? FLAG
- AX = 9404h
- ES:DI -> name of executable from which MICRO.EXE was started
- Note: if the specified name is identical to the name of the program file
- from which MICRO was started, the ??? flag is cleared; otherwise,
- it is left unchanged
- SeeAlso: AX=9400h,AX=9403h
- --------V-2F96C7-----------------------------
- INT 2F U - STRETCH - INSTALLATION CHECK
- AX = 96C7h
- Return: AX = AAAAh if installed
- Program: stretch.exe is a TSR for Toshiba Laptops with WD90C24 video chip
- to avoid blank screen areas in VGA text modes by increasing
- inter-line spacing
- ----------2F97-------------------------------
- INT 2F U - Micro Focus COBOL v3.1.31 internal - ???
- AH = 97h
- AL = function
- 00h installation check
- Return: AL = FFh if installed
- 08h get ???
- Return: AL = ???
- BX = ???
- DX = ???
- AH destroyed
- 20h get ???
- Return: AX:BX = far entry point of ???
- CX = segment of ???
- 80h ???
- Return: ???
- Notes: Micro Focus COBOL compiler v3.1.31 and companion programs supply
- these functions for internal use; these programs call the
- installation check at startup (before installing the INT 2F
- handler) and crash the system if a not authorized program answers
- with AL=FFh
- the handler checks AL only if an internal flag is 1, otherwise ???
- SeeAlso: AH=98h"COBOL",AH=99h"COBOL",AH=9Ah"COBOL"
- ----------2F98-------------------------------
- INT 2F U - Micro Focus COBOL v3.1.31 internal - ???
- AH = 98h
- AL = function
- 00h installation check
- Return: AL = FFh if installed
- 10h get ???
- Return: AX = ???
- 18h get segment of ???
- Return: AX = segment of ???
- 19h get pointer to ???
- Return: AX:BX -> ???
- Notes: Micro Focus COBOL compiler v3.1.31 and companion programs supply
- these functions for internal use; these programs call the
- installation check at startup (before installing the INT 2F
- handler) and crash the system if a not authorized program answers
- with AL=FFh
- the handler checks AL only if an internal flag is 0, otherwise ???
- SeeAlso: AH=97h"COBOL",AH=99h"COBOL",AH=9Ah"COBOL"
- --------V-2F9800-----------------------------
- INT 2F U - S3RMDRV.SYS - INSTALLATION CHECK / VERSION CHECK
- AX = 9800h
- BX = function
- 0000h installation check
- Return: AX = 524Dh ('RM') if installed
- 0001h get driver version
- Return: AX = driver version (AH=major, AL=BCD minor)
- Program: S3RMDRV.SYS provides support for the S3 MPEG driver FMPDRV
- SeeAlso: AX=9803h
- --------V-2F9803-----------------------------
- INT 2F U - S3RMDRV.SYS - COPY ??? INTO USER BUFFER
- AX = 9803h
- DX:BX -> 116-byte buffer for ASCIZ ???
- Return: AX = 0000h
- DX:BX buffer filled with string stored in driver from its parameter
- list when it was loaded
- Note: the examined version of the driver returns CF set for any AL other
- than 00h or 03h
- SeeAlso: AX=9800h
- ----------2F99-------------------------------
- INT 2F U - Micro Focus COBOL v3.1.31 internal - ???
- AH = 99h
- ???
- Return: ???
- Note: used internally by Micro Focus COBOL compiler v3.1.31 and companion
- programs
- SeeAlso: AH=97h"COBOL",AH=98h"COBOL",AH=9Ah"COBOL"
- --------l-2F9900-----------------------------
- INT 2F U - DOS Navigator II - INSTALLATION CHECK
- AX = 9900h
- Return: BX = 444Eh ('DN') if installed
- AX = number of DOS Navigator executions
- CL = child process exit code
- DX = version number (see #02965)
- Notes: old versions of DOS Navigator II always returned AH=1, while newer
- ones return AH=0 and store AL in the DN.FLG file
- Program: DOS Navigator is a multi-window shell for MS-DOS by RIT S.R.L.
- DOS Navigator(TM) is a registered trademark of RIT S.R.L.
- SeeAlso: AX=9901h,AX=9902h,AX=9903h,AX=9904h,AX=9905h,AX=9906h
- (Table 02965)
- Values for DOS Navigator II version code:
- 2100h version 1.35
- 2138h version 1.38
- 2141h version 1.41
- 2150h version 1.50
- --------l-2F9901-----------------------------
- INT 2F U - DOS Navigator II - RETURN POINTER TO COMMAND LINE
- AX = 9901h
- Return: ES:BX -> command line (terminated with 0Dh)
- AX = ES
- SeeAlso: AX=9900h,AX=9902h,AX=9903h
- --------l-2F9902-----------------------------
- INT 2F U - DOS Navigator II - SET 'TRUE' EXIT CODE OF DN.PRG
- AX = 9902h
- CL = exit code
- Return: AX destroyed
- SeeAlso: AX=9900h,AX=9901h,AX=9903h
- --------l-2F9903-----------------------------
- INT 2F U - DOS Navigator II - SPECIFY HOW TO EXECUTE COMMANDS
- AX = 9903h
- CL = 1 to use INT 2E
- CL <> 1 to use INT 21/AH=4Bh
- SeeAlso: AX=9900h,AX=9901h,AX=9902h
- --------l-2F9904-----------------------------
- INT 2F U - DOS Navigator II v1.49 - SET ???
- AX = 9904h
- CX:DX = new value for ???
- SeeAlso: AX=9900h,AX=9905h,AX=9906h
- --------l-2F9905-----------------------------
- INT 2F U - DOS Navigator II v1.49 - GET ???
- AX = 9905h
- Return: CX:DX = current value of ??? (set by AX=9904h)
- SeeAlso: AX=9900h,AX=9904h,AX=9906h
- --------l-2F9906-----------------------------
- INT 2F U - DOS Navigator II v1.49 - GET ???
- AX = 9906h
- DX = new value for ??? (bit 15 must be set, otherwise not changed)
- Return: CX = previous value for ???
- SeeAlso: AX=9900h,AX=9904h,AX=9905h
- ----------2F9A-------------------------------
- INT 2F U - Micro Focus COBOL v3.1.31 internal - ???
- AH = 9Ah
- ???
- Return: ???
- Note: used internally by Micro Focus COBOL compiler v3.1.31 and companion
- programs
- SeeAlso: AH=97h"COBOL",AH=98h"COBOL",AH=99h"COBOL"
- --------e-2F9C-------------------------------
- INT 2F - Network Courier E-Mail OPERATOR.EXE - API
- AH = 9Ch
- AL = subfunction
- 01h uninstall
- Return: ???
- Program: The Network Courier is an electronic mail package by Consumers
- Software of Vancouver, BC which was bought by Microsoft in 1991 and
- renamed Microsoft Mail v3.0.
- SeeAlso: AH=92h
- Index: uninstall;Network Courier E-Mail OPERATOR.EXE
- --------G-2F9E00-----------------------------
- INT 2F U - INTMON v2.1 - INSTALLATION CHECK
- AX = 9E00h
- Return: AX = FFFFh if installed
- BX = segment of resident code
- Program: INTMON is a shareware interactive interrupt monitoring TSR for 386
- and higher machines by Celso Minnitti, Jr.
- SeeAlso: AX=9E01h,AX=9E02h,AX=9E03h,AX=9F00h
- --------G-2F9E01-----------------------------
- INT 2F U - INTMON v2.1 - RESET
- AX = 9E01h
- Return: ???
- Desc: this function specifies that INTMON should assume that any interrupts
- on which it is currently awaiting a return have completed (i.e.
- interrupts which never return such as INT 20 and INT 27)
- SeeAlso: AX=9E00h,AX=9E03h
- --------G-2F9E02-----------------------------
- INT 2F U - INTMON v2.1 - DISPLAY CPU REGISTERS???
- AX = 9E02h
- Return: ???
- SeeAlso: AX=9E00h
- --------G-2F9E03-----------------------------
- INT 2F U - INTMON v2.1 - HOOK INTERRUPT???
- AX = 9E03h
- BH = interrupt number???
- Return: ???
- Note: if AL > 03h on entry, INTMON 2.1 returns immediately
- SeeAlso: AX=9E00h,AX=9E01h
- --------G-2F9F00-----------------------------
- INT 2F U - INTCFG v2.1 - INSTALLATION CHECK
- AX = 9F00h
- Return: AX = FFFFh if installed
- Program: INTCFG is an optionally-resident control program for INTMON by Celso
- Minnitti, Jr.
- SeeAlso: AX=9E00h,AX=9F01h,AX=9F30h,AX=9F49h
- --------G-2F9F01-----------------------------
- INT 2F U - INTCFG v2.1 - ???
- AX = 9F01h
- ???
- Return: ???
- SeeAlso: AX=9F00h
- --------G-2F9F30-----------------------------
- INT 2F U - INTCFG v2.1 - GET ???
- AX = 9F30h
- Return: AX = ??? (0002h)
- SeeAlso: AX=9F00h
- --------G-2F9F49-----------------------------
- INT 2F U - INTCFG v2.1 - UNINSTALL
- AX = 9F49h
- Return: AX,DX,DS,ES destroyed
- SeeAlso: AX=9F00h
- --------E-2FA1--BX0081-----------------------
- INT 2F - Ergo DOS extenders - INSTALLATION CHECK
- AH = A1h
- BX = 0081h
- AL = which
- FEh OS/286,OS/386
- FFh HummingBoard DOS extender
- ES:DI -> 16-byte buffer
- Return: if installed, first four bytes of ES:DI buffer are "IABH"
- Note: since TKERNEL is a licensed version, it is likely that subfunctions
- BX=0082h and BX=0084h are present and function identically to the
- AX=FBA1h/BX=008xh calls
- SeeAlso: AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
- --------m-2FA189-----------------------------
- INT 2F U - Biologic HRAMDEV.SYS - API
- AX = A189h
- BX = subfunction
- 0000h set ???
- 0001h remove ???
- 0002h get status ???
- 0003h enable ???
- 0004h disable ???
- 0005h set ??? flag
- 0006h clear ??? flag
- 0007h set ??? flag
- 0008h clear ??? flag
- 0009h set ???
- ES:DI -> function-specific arguments
- if func 0000h: 20-byte buffer containing ???
- if func 0001h: 20-byte buffer for returned ???
- if func 0002h: 16-byte buffer for returned ???
- if func 0009h: WORD containing ???
- Return: BX = A189h if installed
- AH = status
- 00h successful
- FFh failed or invalid function number
- Program: HRAMDEV.SYS is a part of the shareware package HRAM by Biologic which
- provides improved high memory access under MS-DOS 5.0
- Note: functions 00h and 01h use a stack of four entries; function 01h always
- removes the values stored with the most recent function 00h call
- which has not yet been matched with a function 01h call.
- --------U-2FA4E0-----------------------------
- INT 2F - Futurus Team - INSTALLATION CHECK
- AX = A4E0h
- Return: AL = 52h ("R") if installed
- AH = major version plus 30h ("0")
- ES:BX -> ??? (INT A4 handler???)
- Note: older versions of Right Hand Man (from which Team evolved) store the
- signature "RH" at offset 103h in the INT 2F handler's segment
- SeeAlso: INT A4"Right Hand Man"
- --------U-2FA900-----------------------------
- INT 2F - METZTSR.COM - INSTALLATION CHECK
- AX = A900h
- CF set
- Return: CF clear if resident
- AX = 97FFh
- CF set if not present
- Notes: METZTSR.COM prevents METZ applications (such as the MAGIC screen
- saver) inactivity timeout while running a DOSapp under MS Windows.
- the default multiplex number is A9h, but may be set to any value from
- 80h to FFh with a commandline switch
- SeeAlso: AX=A901h,AX=A902h
- --------U-2FA901-----------------------------
- INT 2F - METZTSR.COM - GET TIME OF LAST KEYBOARD ACTIVITY
- AX = A901h
- CF set
- Return: CF clear if successful
- AX:DX = BIOS time at which INT 09 was last invoked
- CF set if not present
- SeeAlso: INT 09,INT 1A/AH=00h
- --------U-2FA902-----------------------------
- INT 2F - METZTSR.COM - SET METZ Ctrl-Alt-Del FLAG
- AX = A902h
- BL = new value
- 00h Ctrl-Alt-Del not allowed
- else Ctrl-Alt-Del allowed (startup default is 01h)
- CF set
- Return: CF clear if successful
- AX = 97FFh
- CF set if not resident
- SeeAlso: AX=A903h
- --------U-2FA903-----------------------------
- INT 2F - METZTSR.COM - GET METZ Ctrl-Alt-Del FLAG
- AX = A903h
- CF set
- Return: CF clear if successful
- AX = 97FFh if Ctrl-Alt-Del allowed
- AX = 0000h if Ctrl-Alt-Del not allowed
- CF set if not resident
- SeeAlso: AX=A902h
- --------U-2FAA-------------------------------
- INT 2F - Player's Tool 3.996b+ - UNINSTALL
- AH = AAh
- Return: AL = status
- 00h unloaded successfully
- 01h unable to unload: in DOS shell
- Program: Player's Tool is a game cheater by Dima Yakunin & Andy Robinson
- SeeAlso: AH=ABh"Player's Tool",AH=ACh"Player's Tool",INT 10/AH=AAh
- --------U-2FAA00-----------------------------
- INT 2F - VIDCLOCK.COM - INSTALLATION CHECK
- AX = AA00h
- Return: AL = 00h not installed
- FFh installed
- Program: VIDCLOCK.COM is a memory-resident clock by Thomas G. Hanlin III
- --------U-2FAB-------------------------------
- INT 2F - Player's Tool 3.996b+ - INSTALLATION CHECK
- AH = ABh
- Return: BH = FFh if installed
- BL = DOS shell state
- 01h in DOS shell
- 00h not in DOS shell
- SeeAlso: AH=AAh"Player's Tool",AH=ACh"Player's Tool",INT 10/AH=ABh
- --------f-2FAB00-----------------------------
- INT 2F - Btrieve Multi-User - INSTALLATION CHECK
- AX = AB00h
- Return: AL = 4Dh if installed
- SeeAlso: AX=AB01h,AX=AB02h,INT 7B"Btrieve"
- ----------2FAB00-----------------------------
- INT 2F - SRSoft MODAL PC v2+ - INSTALLATION CHECK / GET VERSION
- AX = AB00h
- Return: AX = 5253h ('SR' byte-swapped) if installed
- BX = MODAL PC version (BL = major, BH = minor)
- Program: MODAL PC is an algorithm/real-system simulation package by SR Soft
- using Petri-nets to describe simulated objects
- SeeAlso: AX=AB01h"MODAL",AX=AB02h"MODAL",AX=AB06h"MODAL"
- --------f-2FAB01-----------------------------
- INT 2F - Btrieve Multi-User - EXECUTE Btrieve OPERATION
- AX = AB01h
- BX = process ID
- DS:DX -> 38-byte parameter record (see #03840 at INT 7B"Btrieve")
- Return: AL = status
- 00h OK
- other retry after calling INT 7F/AX=0200h
- SeeAlso: AX=AB00h"Btrieve",AX=AB02h"Btrieve",INT 7B"Btrieve",INT 7F/AX=0200h
- ----------2FAB01-----------------------------
- INT 2F - SRSoft MODAL PC v2+ - GET PROCESS RUN PARAMETER
- AX = AB01h
- Return: AX = 5253h ('SR' byte-swapped) if installed
- BL = run parameter
- 00h normal process
- 01h run with tracing enabled
- 02h run initialization process (first thread of main task)
- SeeAlso: AX=AB00h"MODAL",AX=AB02h"MODAL"
- --------f-2FAB02-----------------------------
- INT 2F - Btrieve Multi-User - GET NEW PROCESS ID
- AX = AB02h
- Return: AL = 00h successful
- BX = process ID
- AL > 00h failed, retry after calling INT 7F/AX=0200h
- SeeAlso: AX=AB00h,AX=AB01h,INT 7B"Btrieve",INT 7F/AX=0200h
- ----------2FAB02-----------------------------
- INT 2F - SRSoft MODAL PC v2+ - SET PROCESS EXIT CODE
- AX = AB02h
- BL = exit code
- Return: AX = 5253h ('SR' byte-swapped) if installed
- SeeAlso: AX=AB00h"MODAL",AX=AB01h"MODAL",AX=AB03h"MODAL"
- ----------2FAB03-----------------------------
- INT 2F - SRSoft MODAL PC v2+ - ALLOCATE COMMON MEMORY
- AX = AB03h
- BX = required size of common memory for variables/semaphores in bytes
- Return: AX = 5253h ('SR' byte-swapped) if installed
- SeeAlso: AX=AB00h"MODAL",AX=AB02h"MODAL",AX=AB04h"MODAL"
- ----------2FAB04-----------------------------
- INT 2F - SRSoft MODAL PC v2+ - GET ALL COMMON VARIABLES AND SEMAPHORES
- AX = AB04h
- DS:DX -> buffer for common data
- Return: AX = 5253h ('SR' byte-swapped) if installed
- CF clear if successful
- CF set on error
- SeeAlso: AX=AB00h"MODAL",AX=AB03h"MODAL",AX=AB05h"MODAL",AX=AB06h,AX=AB07h
- ----------2FAB05-----------------------------
- INT 2F - SRSoft MODAL PC v2+ - SET ALL COMMON VARIABLES AND SEMAPHORES
- AX = AB05h
- DS:DX -> buffer containing common data
- Return: AX = 5253h ('SR' byte-swapped) if installed
- CF clear if successful
- CF set on error
- SeeAlso: AX=AB00h"MODAL",AX=AB03h"MODAL",AX=AB04h"MODAL",AX=AB06h,AX=AB07h
- ----------2FAB06-----------------------------
- INT 2F - SRSoft MODAL PC v2+ - GET A COMMON VARIABLE OR SEMAPHORE
- AX = AB06h
- BX = offset of variable or semaphore in common memory
- CX = variable/semaphore size in bytes
- DS:DX -> buffer for variable or semaphore
- Return: AX = 5253h ('SR' byte-swapped) if installed
- CF clear if successful
- CF set on error
- SeeAlso: AX=AB00h"MODAL",AX=AB04h,AX=AB05h,AX=AB07h
- ----------2FAB07-----------------------------
- INT 2F - SRSoft MODAL PC v2+ - SET A COMMON VARIABLE OR SEMAPHORE
- AX = AB07h
- BX = offset of variable or semaphore in common memory
- CX = variable/semaphore size in bytes
- DS:DX -> buffer containing variable or semaphore
- Return: AX = 5253h ('SR' byte-swapped) if installed
- CF clear if successful
- CF set on error
- SeeAlso: AX=AB00h"MODAL",AX=AB04h,AX=AB05h,AX=AB06h
- --------U-2FAC-------------------------------
- INT 2F u - Player's Tool 3.996b+ - POP UP
- AH = ACh
- Return: AX = 1001h
- SeeAlso: AH=AAh"Player's Tool",AH=ABh"Player's Tool"
- --------V-2FAC00-----------------------------
- INT 2F - DOS 4.01+ GRAPHICS.COM - INSTALLATION CHECK
- AX = AC00h
- Return: AX = FFFFh
- ES:DI -> ??? (graphics data?) (not documented)
- Note: this installation check was moved here to avoid the conflict with the
- CD-ROM extensions that occurred in DOS 4.00
- SeeAlso: AX=1500h"GRAPHICS"
- --------V-2FAC00DI1092-----------------------
- INT 2F - QRIP/TSR - GIVE CPU TO QRIP
- AX = AC00h
- DI = 1092h
- Return: nothing
- Program: QRIP/TSR is a shareware TSR by Shane Hathaway implementing the Remote
- Imaging Protocol (RIP, RIPscrip) used by several BBS systems to
- provide a graphical user interface
- Desc: give QRIP some CPU time to update music and flashing timers
- Notes: if DI <> 1092h on entry, QRIP chains the call
- this function should be called regularly whenever the terminal program
- is otherwise idle; the updates are automatically performed on any
- other QRIP call
- SeeAlso: AX=AC01h,AX=ACF0h
- --------V-2FAC01DI1092-----------------------
- INT 2F - QRIP/TSR - CHANGE INTERNAL FLAGS
- AX = AC01h
- DI = 1092h
- BX = flags to be turned on (see #02966)
- CX = flags to be turned off (see #02966)
- Return: AX = 9142h if installed
- DX = DOS-takeover flag (nonzero if QRIP able to take over DOS)
- ---if DX nonzero---
- BX = QRIP version number in hex (BH = major, BL = minor)
- CX = new flags (see #02966)
- Note: if DI <> 1092h on entry, QRIP chains the call
- SeeAlso: AX=AC00h/DI=1092h,AX=ACF0h
- Bitfields for QRIP internal flags:
- Bit(s) Description (Table 02966)
- 0 ANSI emulation enabled (default on)
- 1 RIP emulation enabled (default on)
- 2 graphical commands allowed (default on)
- 3 TTY text allowed (default on)
- 4 disable @ variables (default off in TSR mode)
- 5 wait for key on RIP "end scene" command (default off)
- 6 anti-stripping (default off in TSR mode)
- 7 sound enabled (default on)
- 8 automatic message filter (default off in TSR mode)
- 9 display-only mode (no user prompts)
- 10 TTY text suppression (default off in TSR mode)
- 11-15 reserved
- --------V-2FAC02DI1092-----------------------
- INT 2F - QRIP/TSR - TURN OFF GRAPHICS SCREEN
- AX = AC02h
- DI = 1092h
- Return: nothing
- Note: if DI <> 1092h on entry, QRIP chains the call
- SeeAlso: AX=AC03h,AX=ACF0h
- --------V-2FAC03DI1092-----------------------
- INT 2F - QRIP/TSR - TURN ON GRAPHICS SCREEN
- AX = AC03h
- DI = 1092h
- Return: nothing
- Notes: if DI <> 1092h on entry, QRIP chains the call
- this function does not restore the contents of the screen (see AX=AC15h)
- SeeAlso: AX=AC02h,AX=AC14h,AX=AC15h
- --------V-2FAC04DI1092-----------------------
- INT 2F - QRIP/TSR - OUTPUT STRING THROUGH QRIP
- AX = AC04h
- DI = 1092h
- DX:BX -> string
- CX = length of string
- Return: nothing
- Note: if DI <> 1092h on entry, QRIP chains the call
- SeeAlso: AX=AC05h,AX=AC09h,AX=AC0Ah,AX=ACF0h
- --------V-2FAC05DI1092-----------------------
- INT 2F - QRIP/TSR - OUTPUT NULL-TERMINATED STRING THROUGH QRIP
- AX = AC05h
- DI = 1092h
- DX:BX -> ASCIZ string
- Return: nothing
- Note: if DI <> 1092h on entry, QRIP chains the call
- SeeAlso: AX=AC04h,AX=AC06h,AX=AC09h,AX=AC0Ah,AX=ACF0h
- --------V-2FAC06DI1092-----------------------
- INT 2F - QRIP/TSR - RECEIVE CHARACTERS FROM QRIP
- AX = AC06h
- DI = 1092h
- Return: AX = character to send to BBS (0001h-00FFh) or special code (see #02967)
- BX = string-waiting flag
- 0001h entire string waiting to be sent to terminal (call AX=AC0Ch)
- CX = DX = AX
- Note: if DI <> 1092h on entry, QRIP chains the call
- SeeAlso: AX=AC04h,AX=AC05h,AX=AC0Ch,AX=AC16h,AX=AC18h,AX=AC1Ah
- (Table 02967)
- Values for QRIP special codes:
- 0000h if none
- 0100h wait for user keypress (must call AX=AC16h/BL=00h or AX=AC18h)
- 0101h both/middle mouse button pressed
- 0102h entering block mode (up/download) (call AX=AC1Ah)
- 0103h right mouse button pressed
- 0104h BBS requested status bar on
- 0105h BBS requested status bar off
- 0106h BBS requested VT-102 terminal emulation
- (keypad keys should send VT-102 escape codes)
- 0107h BBS requested VT-102 mode off
- 0108h BBS requested doorway mode (raw IBM keyboard ASCII/scan code pairs)
- 0109h BBS requested doorway mode off
- 010Ah hotkey mode on
- 010Bh hotkey mode off
- 010Ch BBS requested Tab-key button changing on
- 010Dh BBS requested Tab-key mode off
- 010Eh XOFF (use flow control to stop incoming characters)
- 010Fh XON (use flow control to resume incoming characters)
- 0110h-0119h BBS requested application (0-9) be run
- application 0 should be a standard text editor
- 01FFh send ASCII 00h to BBS
- Note: for special codes 0104h to 010Dh, the terminal program should report
- any mode changes it make in response by calling AX=AC16h
- --------V-2FAC07DI1092-----------------------
- INT 2F - QRIP/TSR - GET FONT DIRECTORY
- AX = AC07h
- DI = 1092h
- Return: DX:BX -> 80-byte internal buffer containing ASCIZ font directory name
- Notes: if DI <> 1092h on entry, QRIP chains the call
- the application may change the font directory by overwriting the
- returned buffer, ensuring that it does not exceed 80 bytes incl. NUL
- if changed, the new path will not become effective until the graphics
- screen is reinitialized
- SeeAlso: AX=AC08h,AX=ACF0h
- --------V-2FAC08DI1092-----------------------
- INT 2F - QRIP/TSR - GET ICON DIRECTORY
- AX = AC08h
- DI = 1092h
- Return: DX:BX -> 80-byte internal buffer containing ASCIZ icon directory name
- Notes: if DI <> 1092h on entry, QRIP chains the call
- the application may change the icon directory by overwriting the
- returned buffer, ensuring that it does not exceed 80 bytes incl. NUL,
- and includes a trailing backslash
- if changed, the new path becomes effective immediately
- SeeAlso: AX=AC07h,AX=ACF0h
- --------V-2FAC09DI1092-----------------------
- INT 2F - QRIP/TSR - OUTPUT STRING THROUGH QRIP
- AX = AC09h
- DI = 1092h
- DX:BX -> string
- CX = length of string
- Return: AX = character to send to BBS (0001h-00FFh) or special code (see #02967)
- BX = string-waiting flag
- 0001h entire string waiting to be sent to terminal (call AX=AC0Ch)
- CX = DX = AX
- Note: if DI <> 1092h on entry, QRIP chains the call
- SeeAlso: AX=AC04h,AX=AC06h,AX=AC0Ah,AX=ACF0h
- --------V-2FAC0ADI1092-----------------------
- INT 2F - QRIP/TSR - OUTPUT NULL-TERMINATED STRING THROUGH QRIP
- AX = AC0Ah
- DI = 1092h
- DX:BX -> ASCIZ string
- Return: AX = character to send to BBS (0001h-00FFh) or special code (see #02967)
- BX = string-waiting flag
- 0001h entire string waiting to be sent to terminal (call AX=AC0Ch)
- CX = DX = AX
- Note: if DI <> 1092h on entry, QRIP chains the call
- SeeAlso: AX=AC05h,AX=AC06h,AX=AC09h,AX=ACF0h
- --------V-2FAC0BDI1092-----------------------
- INT 2F - QRIP/TSR - EXECUTE RIP "END SCENE" COMMAND
- AX = AC0Bh
- DI = 1092h
- Return: nothing
- Notes: if DI <> 1092h on entry, QRIP chains the call
- enables all mouse buttons and cancels the RIP timeout
- SeeAlso: AX=AC01h,AX=AC04h,AX=ACF0h
- --------V-2FAC0CDI1092-----------------------
- INT 2F - QRIP/TSR - GET STRING TO BE SENT TO BBS
- AX = AC0Ch
- DI = 1092h
- Return: AX = status
- 0000h nothing to be sent
- 0001h a string is waiting to be sent
- DX:BX -> string to be sent (may contain NULs)
- CX = length of string
- 0002h special code waiting (call AX=AC06h)
- Note: if DI <> 1092h on entry, QRIP chains the call
- SeeAlso: AX=AC06h,AX=ACF0h
- --------V-2FAC0DDI1092-----------------------
- INT 2F - QRIP/TSR - SET PROTECTED SCREEN AREA
- AX = AC0Dh
- DI = 1092h
- CL = number of text lines at bottom of screen to protect (00h = off)
- BL = attribute with which to fill area (bit 7 = high-int. background)
- Return: nothing
- Note: if DI <> 1092h on entry, QRIP chains the call
- SeeAlso: AX=AC0Eh,AX=AC0Fh,AX=AC10h,AX=ACF0h
- --------V-2FAC0EDI1092-----------------------
- INT 2F - QRIP/TSR - WRITE ASCIZ STRING IN PROTECTED AREA
- AX = AC0Eh
- DI = 1092h
- DX:BX -> ASCIZ string to be written
- CL = column at which to begin writing
- CH = row number within protected area (00h = first line)
- Return: nothing
- Note: if DI <> 1092h on entry, QRIP chains the call
- SeeAlso: AX=AC0Dh,AX=AC0Fh,AX=AC10h,AX=ACF0h
- --------V-2FAC0FDI1092-----------------------
- INT 2F - QRIP/TSR - SCROLL PROTECTED AREA
- AX = AC0Fh
- DI = 1092h
- BH,BL = row,column of upper-left corner in protected area
- DH,DL = row,column of lower-right corner
- CL = number of lines to scroll up
- Return: nothing
- Note: if DI <> 1092h on entry, QRIP chains the call
- SeeAlso: AX=AC0Dh,AX=AC0Eh,AX=AC10h,AX=ACF0h
- --------V-2FAC10DI1092-----------------------
- INT 2F - QRIP/TSR - SET OUTPUT COLOR FOR PROTECTED AREA
- AX = AC10h
- DI = 1092h
- BL = new attribute (bit 7 set for high-intensity background)
- Return: nothing
- Note: if DI <> 1092h on entry, QRIP chains the call
- SeeAlso: AX=AC0Dh,AX=AC0Eh,AX=AC0Fh,AX=AC11h,AX=ACF0h
- --------V-2FAC11DI1092-----------------------
- INT 2F - QRIP/TSR - CONVERT PROTECTED AREA TO ENTIRE SCREEN
- AX = AC11h
- DI = 1092h
- BX = mode (0000h = normal protect, 0001h = allow full-screen access)
- Note: if DI <> 1092h on entry, QRIP chains the call
- SeeAlso: AX=AC0Dh,AX=AC0Eh,AX=AC0Fh,AX=AC10h,AX=AC12h,AX=ACF0h
- --------V-2FAC12DI1092-----------------------
- INT 2F - QRIP/TSR - BEGIN POPUP-WINDOW MODE
- AX = AC12h
- DI = 1092h
- Return: nothing
- Notes: if DI <> 1092h on entry, QRIP chains the call
- while popup-mode is in effect, the terminal program can write to the
- screen (and easily restore it) by outputting a RIP file with AX=AC04h
- or AX=AC05h
- QRIP will automatically drop out of popup-window mode if the terminal
- program invokes RIP pick-lists
- any changes to the protected area will be restored when popup-window
- mode is cancelled
- SeeAlso: AX=AC04h,AX=AC11h,AX=AC13h,AX=ACF0h
- --------V-2FAC13DI1092-----------------------
- INT 2F - QRIP/TSR - END POPUP-WINDOW MODE
- AX = AC13h
- DI = 1092h
- Return: nothing
- Notes: if DI <> 1092h on entry, QRIP chains the call
- restores screen
- SeeAlso: AX=AC12h,AX=ACF0h
- --------V-2FAC14DI1092-----------------------
- INT 2F - QRIP/TSR - SAVE GRAPHICS SCREEN AND SWITCH TO TEXT MODE
- AX = AC14h
- DI = 1092h
- Return: nothing
- Note: if DI <> 1092h on entry, QRIP chains the call
- SeeAlso: AX=AC03h,AX=AC15h
- --------V-2FAC15DI1092-----------------------
- INT 2F - QRIP/TSR - RESTORE GRAPHICS SCREEN
- AX = AC15h
- DI = 1092h
- Return: nothing
- Desc: restores the graphics screen saved by the last call to AX=AC14h
- Note: if DI <> 1092h on entry, QRIP chains the call
- SeeAlso: AX=AC03h,AX=AC14h
- --------V-2FAC16DI1092-----------------------
- INT 2F - QRIP/TSR - REPORT MODE CHANGE TO QRIP
- AX = AC16h
- DI = 1092h
- BL = new mode
- 00h terminate key wait
- 01h status bar on
- 02h status bar off
- 03h VT-102 mode on
- 04h VT-102 mode off
- 05h doorway mode on
- 06h doorway mode off
- 07h hotkeys mode on
- 08h hotkeys mode off
- 09h tabkey mode on
- 0Ah tabkey mode off
- Return: nothing
- Notes: if DI <> 1092h on entry, QRIP chains the call
- all modes default to OFF when QRIP is first installed
- --------V-2FAC17DI1092-----------------------
- INT 2F - QRIP/TSR - CALL (EXECUTE) A RIP FILE
- AX = AC17h
- DI = 1092h
- DX:BX -> ASCIZ filename for RIP file to be executed
- Return: nothing
- Notes: if DI <> 1092h on entry, QRIP chains the call
- the specified file may be in the current icon directory, the QRIP
- startup directory, or the current directory; any pathnames specified
- with the filename are ignored
- --------V-2FAC18DI1092-----------------------
- INT 2F - QRIP/TSR - SEND USER KEY TO QRIP
- AX = AC18h
- DI = 1092h
- BX = key (00xxh is normal ASCII, xx00h is an extended key)
- Return: nothing
- Note: if DI <> 1092h on entry, QRIP chains the call
- SeeAlso: AX=AC06h,AX=ACF0h
- --------V-2FAC19DI1092-----------------------
- INT 2F - QRIP/TSR - HANGUP
- AX = AC19h
- DI = 1092h
- Return: nothing
- Desc: inform QRIP that carrier has been lost
- Note: if DI <> 1092h on entry, QRIP chains the call
- SeeAlso: AX=ACF0h
- --------V-2FAC1ADI1092-----------------------
- INT 2F - QRIP/TSR - GET RIP_ENTER_BLOCK_MODE INFORMATION
- AX = AC1Ah
- DI = 1092h
- Return: AH = requested protocol (see #02968)
- AL = file type (see #02969)
- DX:BX -> ASCIZ filename or 0000h:0000h
- CX = length of filename
- Note: if DI <> 1092h on entry, QRIP chains the call
- SeeAlso: AX=ACF0h
- (Table 02968)
- Values for QRIP protocol identifier:
- 00h Xmodem (checksum)
- 01h Xmodem-CRC
- 02h Xmodem-1K
- 03h Xmodem-1K-G
- 04h Kermit
- 05h Ymodem
- 06h Ymodem-G
- 07h Zmodem with crash recovery
- 08h-0Fh same as 00h-07h, but for uploading instead of downloading
- SeeAlso: #02969
- (Table 02969)
- Values for QRIP file type:
- 00h RIP file sequence to be displayed
- 01h RIP file sequence to be stored in icon directory
- 02h ICN file sequence to be stored in icon directory
- 03h HLP file sequence to be stored, then auto-loaded if needed
- 04h COMPOSITE DYNAMIC file sequence (batch protocols only)
- 05h ACTIVE DYNAMIC file sequence (batch protocols only)
- Note: for file types 04h and 05h, any .RIP or .ICN files are stored in
- the icon directory; in mode 05h, any .RIP files are also played
- back as they are received
- SeeAlso: #02968
- --------V-2FAC1BDI1092-----------------------
- INT 2F - QRIP/TSR - SET SYSTEM FONT SIZE
- AX = AC1Bh
- DI = 1092h
- BX = font size (see #02970)
- Return: nothing
- Note: if DI <> 1092h on entry, QRIP chains the call
- SeeAlso: AX=AC04h,AX=ACF0h
- (Table 02970)
- Values for QRIP font size specifier:
- 00h 8x8 font, 80x43 screen
- 01h 7x8 font, 90x43 screen
- 02h 8x14 font, 80x25 screen
- 03h 7x14 font, 90x25 screen
- 04h 16x14 font, 40x25 screen
- --------V-2FACF0DI1092-----------------------
- INT 2F - QRIP/TSR - INSTALLATION CHECK
- AX = ACF0h
- DI = 1092h
- Return: AX = 9142h if installed
- DX = DOS-takeover flag (nonzero if QRIP able to take over DOS)
- ---if DX nonzero---
- BX = QRIP version number in hex (BH = major, BL = minor)
- CX = current flags (see AX=AC01h)
- Note: if DI <> 1092h on entry, QRIP chains the call
- SeeAlso: AX=AC00h/DI=1092h,AX=AC01h,AX=AC04h,AX=AC06h,AX=AC1Ah,AX=ACFFh
- --------V-2FACFFDI1092-----------------------
- INT 2F - QRIP/TSR - UNINSTALL
- AX = ACFFh
- DI = 1092h
- Return: AX = status
- 0000h unable to remove (interrupt vector hooked by another prog)
- 0001h successful
- 0002h unable to take over DOS at this time (retry uninstall)
- Note: if DI <> 1092h on entry, QRIP chains the call
- SeeAlso: AX=ACF0h
- --------!---Section--------------------------
- Interrupt List, part 13 of 18
- Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
- --------V-2FAD00-----------------------------
- INT 2F U - DOS 3.3+ DISPLAY.SYS internal - INSTALLATION CHECK
- AX = AD00h
- Return: AL = FFh if installed
- BX = ??? (0100h for MS-DOS 3.3+)
- Note: DOS 5+ DISPLAY.SYS chains to previous handler if AL is not one of the
- subfunctions listed here
- SeeAlso: AX=AD01h"DISPLAY",AX=AD02h"DISPLAY"
- --------O-2FAD00-----------------------------
- INT 2F U - DR DOS 3.41-5.0, Novell DOS 7 KEYB - INSTALLATION CHECK
- AX = AD00h
- Return: AX = FFFFh if installed
- flags destroyed
- Note: the Novell DOS 7 KEYB driver only checks AL to determine whether it
- is already installed
- SeeAlso: AX=AD80h"Novell"
- --------V-2FAD01-----------------------------
- INT 2F U - DOS 3.3+ DISPLAY.SYS internal - SET ACTIVE CODE PAGE
- AX = AD01h
- BX = new code page (see #01757 at INT 21/AX=6602h)
- Return: CF clear if successful
- AX = 0001h
- CF set on error (unsupported code page)
- AX = 0000h
- SeeAlso: AX=AD02h"DISPLAY"
- --------O-2FAD01-----------------------------
- INT 2F U - DR DOS 3.41,5.0 KEYB - GET CONFIGURATION
- AX = AD01h
- Return: BX = current code page (see #01757 at INT 21/AX=6602h)
- CX = current keyboard layout (0100h = US, 0102h = foreign)
- ES = resident code segment
- SeeAlso: AX=AD01h"Novell",AX=AD00h"KEYB",AX=AD02h"KEYB",AX=AD83h"KEYB"
- --------O-2FAD01-----------------------------
- INT 2F U - Novell DOS 7 KEYB - GET/SET??? CONFIGURATION
- AX = AD01h
- CX = ??? (0000h)
- Return: AX = FFFFh if Novell DOS 7 KEYB installed
- BX = current code page (see #01757 at INT 21/AX=6602h)
- CX = current keyboard layout (0100h = US, 0102h = foreign)
- ES = resident code segment
- SeeAlso: AX=AD01h"DR DOS",AX=AD00h"KEYB",AX=AD02h"KEYB",AX=AD83h"KEYB"
- --------V-2FAD02-----------------------------
- INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET ACTIVE CODE PAGE
- AX = AD02h
- Return: CF set if code page never set
- AX = 0001h
- BX = FFFFh (assume first hardware code page)
- CF clear if successful
- BX = current code page (see #01757 at INT 21/AX=6602h)
- SeeAlso: AX=AD01h"DISPLAY",AX=AD03h
- --------O-2FAD02-----------------------------
- INT 2F U - Novell DOS 7 KEYB - ???
- AX = AD02h
- DX = ??? (0000h)
- Return: AX = FFFFh if installed
- flags destroyed
- SeeAlso: AX=AD01h"KEYB"
- --------V-2FAD03-----------------------------
- INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET CODE PAGE INFORMATION
- AX = AD03h
- ES:DI -> buffer for code page information (see #02971)
- CX = size of buffer in bytes
- Return: CF set if buffer too small
- CF clear if successful
- ES:DI buffer filled
- SeeAlso: AX=AD01h,AX=AD02h
- Format of DOS 5.0-6.0 DISPLAY.SYS code page information:
- Offset Size Description (Table 02971)
- 00h WORD number of software code pages
- 02h WORD ??? (0003h)
- 04h WORD number of hardware code pages
- 06h N WORDs hardware code page numbers (see #01757 at INT 21/AX=6602h)
- N WORDs software (prepared) code pages (FFFFh if not yet prepared)
- --------V-2FAD04-----------------------------
- INT 2F U - DOS 4.x only DISPLAY.SYS internal - ???
- AX = AD04h
- ???
- Return: ???
- --------V-2FAD10-----------------------------
- INT 2F U - DOS 4.x DISPLAY.SYS internal - INSTALLATION CHECK???
- AX = AD10h
- ???
- Return: AX = FFFFh
- BX = ??? (0100h in PC-DOS 4.01)
- --------V-2FAD10-----------------------------
- INT 2F U - DOS 5+ DISPLAY.SYS internal - ???
- AX = AD10h
- ???
- Return: CF clear if successful
- CF set on error
- Note: this function is a NOP if the active code page has never been set
- (AX=AD02h returns BX=FFFFh); its purpose otherwise is not known
- --------V-2FAD40-----------------------------
- INT 2F - DOS 4.0+ - ???
- AX = AD40h
- DX = ???
- ???
- Return: ???
- Note: called by PC-DOS 4.01 PRINT.COM
- --------K-2FAD80-----------------------------
- INT 2F u - MS-DOS 3.3+ KEYB.COM internal - INSTALLATION CHECK
- AX = AD80h
- Return: AL = FFh if installed
- BX = version number (BH = major, BL = minor)
- ES:DI -> internal data (see #02972)
- AH destroyed (set to FFh by some implementations/versions)
- Notes: MS-DOS 3.30, PC-DOS 4.01, MS-DOS 5.00, and MS-DOS 6.22 all report
- version 1.00.
- this function was undocumented prior to the release of DOS 5.0
- most versions of KEYB completely replace the BIOS INT 09 handler, but
- Novell DOS's KEYB partially uses the BIOS code and thus continues
- to chain to the original INT 09 at times
- some utilities check for AX=FFFFh on return
- SeeAlso: AX=AD80h"Novell",AX=AD81h,AX=AD82h,AX=AD83h
- Format of KEYB internal data:
- Offset Size Description (Table 02972)
- 00h DWORD original INT 09
- 04h DWORD original INT 2F
- 08h DWORD unused (0) original INT 16 in older KEYB versions???
- 0Ch WORD flags A (see #02973)
- 0Eh WORD flags B (see #02974)
- 10h BYTE flags??? (bit1 used)
- 11h BYTE ???
- 12h 4 BYTEs ???
- 16h 2 BYTEs country ID letters, default is "US"
- 18h WORD current code page (see #01757 at INT 21/AX=6602h)
- ---DOS 3.3---
- 1Ah WORD pointer to first item in list of code page tables???
- 1Ch WORD pointer to ??? item in list of code page tables
- 1Eh 2 BYTEs unused???
- 20h WORD pointer to key translation data (see #02976)
- 22h WORD pointer to last item in code page table list (see #02975)
- 24h 9 BYTEs ???
- ---DOS 4.01---
- 1Ah 2 BYTEs ???
- 1Ch WORD pointer to first item in list of code page tables???
- 1Eh WORD pointer to ??? item in list of code page tables
- 20h 2 BYTEs unused???
- 22h WORD pointer to key translation data (see #02976)
- 24h WORD pointer to last item in code page table list (see #02975)
- 26h 9 BYTEs ???
- ---DOS 6.22--- (checked out with 6.22, but might be earlier)
- 1Ah 2 BYTEs ???
- 1Ch WORD pointer to current (first???) item in list of code page tables
- (corresponding to codepage indicated at offset 18h)
- (initial value is FFFFh)
- 1Eh WORD pointer to (entry to) list of code page tables (see #02975)
- If not FFFFh, INT 2F/AX=AD81h scans this list of code page
- tables until the requested code page was found in list or
- end of table was reached (FFFFh). If found, offsets 18h and
- 1Ch will be changed to requested new code page. If not found,
- it returns with AX=0001h 'code page not supported').
- 20h WORD unused??? (initial value: FFFFh)
- 22h WORD pointer to key translation data (see #02455)
- 24h WORD pointer to last item in code page table list (see #02454)
- 26h WORD CAPSLock/ShiftLock management flags??? (0)
- Note: It appears that none of the bits is ever set inside
- KEYBs code!
- The following is guesswork:
- bit15: =1: With country specific keyboard mapping (<Ctrl>+
- <Alt>+<F2>) active, <CapsLock> works as CAPSLock
- instead of ShiftLock??? Pressing a key in first row
- resets CapsLock???
- (Effective only on PC Convertible or with Enhanced
- keyboard).
- bit14-10: unused (0)
- bit 9: =1: With country specific keyboard mapping active:
- some kind of temporary (table) shift???
- bit 8-0: unused (0)
- 28h BYTE unused (0)
- 29h BYTE make code xx for <Ctrl>+<Alt>+<xx> to set keyboard mapping
- to US-layout (default is 3Bh=<F1>???)
- (see INT 2F/AX=AD82h,INT 2F/AX=AD83h)
- 2Ah BYTE make code yy for <Ctrl>+<Alt>+<yy> to set keyboard mapping
- to country specific layout (default is 3Ch=<F2>???),
- (see INT 2F/AX=AD82h,INT 2F/AX=AD83h)
- 2Bh 16 BYTEs unused (0) ???
- Note: at least in MS-DOS v6.22, the signature "SHARED DATA" immediately
- precedes this structure
- Bitfields for MS-DOS v6.22 KEYB flags A:
- Bit(s) Description (Table 02973)
- 15 unused??? (0)
- 14 set on machine with BIOS machine type FBh or FEh/FFh without enh kbd
- 13 not FAh: ???
- 12 set on start of machine detection, cleared on machine types F9h, FBh,
- FEh, FFh
- 11 not FAh: ???
- (on ATs: override bit12 NOT to set NumLock on)
- 10 set on machine type F9h
- 9 unused??? (0)
- 8 unused??? (0)
- 7 used by INT 09, but never set!
- =1: after keyboard self test resulting AAh, INT 09 handler will (re)set
- keyboard code-set 1 and temporarily disable a PS/2 mouseport.
- 6 used by INT09, but never set!
- =1: after keyboard self test resulting AAh, INT 09 handler will (re)set
- keyboard code-set 1 and temporarily disable a PS/2 mouseport.
- 5 set for JP, KO, PR, TA layouts during installation???
- =1: some special codepage (>932???) management???
- 4-0 unused??? (0)
- SeeAlso: #02974,MEM F000h:FFFEh,INT 15/AH=C0h
- Bitfields for MS-DOS v6.22 KEYB flags B:
- Bit(s) Description (Table 02974)
- 15 INT 16/AH=1xh supported (INT 16h/AH=92h call returns AH<=80h)
- if clear, extended keyboard scan codes are immediately discarded
- 14 INT 16/AH=2xh supported (INT 16h/AH=A2h call returns AH<=80h)
- 13 unused (0)
- 12 network installed (INT 2F/AX=B800h)
- 11 original IBM PC (BIOS date 1981)
- 10 PC or PC/XT (BIOS machine type byte of FBh or FEh)
- 9 PC Convertible (BIOS machine type byte of F9h); use INT 15/AX=4104h
- 8 unused (0)
- 7 IBM PS/2 model 30 (BIOS machine type byte of FAh)
- 6 IBM AT (BIOS machine type FCh)
- 5 IBM PS/2 (BIOS machine type F8h)
- 4 PS/2 and unknown only: non-standard 8042 reported by INT 15/AH=C0h
- =1: after keyboard self test resulting AAh, INT 09 handler will (re)set
- keyboard code-set 1 and temporarily disable a PS/2 mouseport.
- 3 temporary flag???
- 2-0 ???
- SeeAlso: #02972,#02973
- Format of code page table list entries:
- Offset Size Description (Table 02975)
- 00h WORD pointer to next item, FFFFh = last
- 02h WORD code page (see #01757 at INT 21/AX=6602h)
- 04h 2 BYTEs ???
- Format of KEYB translation data:
- Offset Size Description (Table 02976)
- 00h WORD size of data in bytes, including this word
- 02h N-2 BYTEs ???
- --------K-2FAD80-----------------------------
- INT 2F u - Novell DOS 7 KEYB.COM - INSTALLATION CHECK
- AX = AD80h
- Return: AX = FFFFh if installed
- CX = Novell DOS KEYB version number (CL = major, CH = minor)
- DX = current keyboard codepage
- ES:DI -> internal data and tables (ES=FFFEh if KEYB in HMA)
- flags destroyed
- Notes: versions: v2.08 (original ship 4/94), v2.09 (Update 10, 11/18/94),
- v2.10 (Update 12, 2/22/95), v2.11 (Update 13, 5/8/95),
- v2.12 (Update 14, 7/31/95)
- although the installation check is via this INT 2F call, Novell DOS 7's
- KEYB has no known INT 2F entry point! Presumably, the handler is
- either coded in the kernel or reached via a FAR JMP from the kernel
- SeeAlso: AX=AD80h"MS-DOS"
- --------K-2FAD81-----------------------------
- INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD CODE PAGE
- AX = AD81h
- BX = code page (see #01757 at INT 21/AX=6601h)
- Return: CF set on error
- AX = 0001h (code page not available)
- CF clear if successful
- Notes: called by DISPLAY.SYS
- this function was undocumented prior to the release of DOS 5.0
- SeeAlso: AX=AD80h,AX=AD82h
- --------K-2FAD82-----------------------------
- INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD MAPPING
- AX = AD82h
- BL = new state
- 00h US keyboard (Control-Alt-F1)
- FFh foreign keyboard (Control-Alt-F2)
- Return: CF set on error (BL not 00h or FFh)
- CF clear if successful
- Note: this function was undocumented prior to the release of DOS 5.0
- SeeAlso: AX=AD80h,AX=AD81h,AX=AD83h
- --------K-2FAD83-----------------------------
- INT 2F - DOS 5+ KEYB.COM - GET KEYBOARD MAPPING
- AX = AD83h
- Return: BL = current state
- 00h US keyboard
- FFh foreign keyboard
- SeeAlso: AX=AD82h
- --------l-2FAE00-----------------------------
- INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - INSTALLATION CHECK
- AX = AE00h
- DX = magic value FFFFh
- CH = FFh
- CL = length of command line tail (4DOS v4.0)
- DS:BX -> command line buffer (see #02977)
- DS:SI -> command name buffer (see #02978)
- DI = 0000h (4DOS v4.0)
- Return: AL = FFh if this command is a TSR extension to COMMAND.COM
- AL = 00h if the command should be executed as usual
- Notes: This call provides a mechanism for TSRs to install permanent
- extensions to the command repertoire of COMMAND.COM. It appears
- that COMMAND.COM makes this call before executing the current
- command line, and does not execute it itself if the return is FFh.
- APPEND hooks this call, to allow subsequent APPEND commands to
- execute without re-running APPEND
- SeeAlso: AX=AE01h
- Format of COMMAND.COM command line buffer:
- Offset Size Description (Table 02977)
- 00h BYTE max length of command line, as in INT 21/AH=0Ah
- 01h BYTE count of bytes to follow, excluding terminating 0Dh
- N BYTEs command line text, terminated by 0Dh
- Format of command name buffer:
- Offset Size Description (Table 02978)
- 00h BYTE length of command name
- 01h N BYTEs uppercased command name (blank-padded to 11 chars by 4DOS v4)
- --------l-2FAE01-----------------------------
- INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - EXECUTE
- AX = AE01h
- DX = magic value FFFFh
- CH = 00h
- CL = length of command name (4DOS v4.0)
- DS:BX -> command line buffer (see #02977)
- DS:SI -> command name buffer (see #02978)
- Return: DS:SI buffer updated
- if length byte is nonzero, the following bytes contain the uppercase
- internal command to execute and the command line buffer contains the
- command's parameters (the first DS:[SI] bytes are ignored)
- Notes: this call requests execution of the command which a previous call to
- AX=AE00h indicated was resident
- APPEND hooks this call
- BUG: Novell DOS 7.0's COMMAND.COM (prior to Update 12) will attempt to run
- a disk program with the indicated name even if the returned length
- byte is zero, because the register used to flag this case is
- clobbered without first checking it. The workaround is to set the
- command name buffer to "REM" followed by enough blanks to pad out
- the original command's length, which will also work with MS-DOS 6.
- (from padgett@tccslr.dnet.mmc.com)
- SeeAlso: AX=AE00h
- --------O-2FAF00-----------------------------
- INT 2F - WinDOS v2.11 - INSTALLATION CHECK
- AX = AF00h
- Return: AL = FFh if installed
- Program: WinDOS is a DOS clone (claimed to be mostly MS-DOS 5.0 API compatible)
- written by Heiko Goemann
- SeeAlso: AX=AF01h"WinDOS",INT 21/AH=30h
- ----------2FAF00-----------------------------
- INT 2F U - ???
- AX = AF00h
- ???
- Return: AX = 0000h if interface supported
- SeeAlso: AX=AF02h,AX=AF03h,AX=AF04h,AX=AF13h,AX=AF30h
- --------O-2FAF01-----------------------------
- INT 2F - WinDOS v2.11 - TURN ON ONLINE MODE
- AX = AF01h
- Return: nothing
- Desc: indicate that the user will not exchange floppy disks, allowing WinDOS
- to cache disk sectors in memory and avoid writing modified sectors
- back out to the floppy disk
- SeeAlso: AX=AF00h"WinDOS",AX=AF02h"WinDOS"
- --------O-2FAF02-----------------------------
- INT 2F - WinDOS v2.11 - TURN OFF ONLINE MODE
- AX = AF02h
- Return: nothing
- Desc: indicate that the floppy disk may be removed, and that WinDOS should
- write all buffered sectors out to the floppy disk
- SeeAlso: AX=AF00h"WinDOS",AX=AF01h"WinDOS"
- ----------2FAF02-----------------------------
- INT 2F U - ???
- AX = AF02h
- ???
- Return: ES = ???
- SeeAlso: AX=AF00h
- --------O-2FAF03-----------------------------
- INT 2F - WinDOS v2.11 - TURN VIDMEM ON
- AX = AF03h
- Return: AX = status
- 0000h successful
- 0001h CPU not in mode set by DOS386=On
- 0002h video adapter in graphics mode
- 0003h memory chain corrupted
- SeeAlso: AX=AF00h"WinDOS",AX=AF04h"WinDOS",AX=AF05h"WinDOS"
- ----------2FAF03-----------------------------
- INT 2F U - ???
- AX = AF03h
- ???
- Return: DX = ???
- SeeAlso: AX=AF00h
- --------O-2FAF04-----------------------------
- INT 2F - WinDOS v2.11 - TURN VIDMEM OFF
- AX = AF04h
- Return: AX = status
- 0000h successful
- 0001h video memory is in use
- SeeAlso: AX=AF00h"WinDOS",AX=AF03h"WinDOS",AX=AF05h"WinDOS"
- ----------2FAF04-----------------------------
- INT 2F U - ???
- AX = AF04h
- ???
- Return: ???
- SeeAlso: AX=AF00h
- --------O-2FAF05-----------------------------
- INT 2F - WinDOS v2.11 - GET VIDMEM STATE
- AX = AF05h
- Return: AX = status (0000h off, 0001h on)
- SeeAlso: AX=AF00h"WinDOS",AX=AF03h"WinDOS",AX=AF04h"WinDOS"
- ----------2FAF05-----------------------------
- INT 2F U - ???
- AX = AF05h
- ???
- Return: ???
- SeeAlso: AX=AF00h
- --------O-2FAF06-----------------------------
- INT 2F - WinDOS v2.11 - MAKE PROGRAM UNBREAKABLE
- AX = AF06h
- DS:DX -> break handler
- DI:BX = stack to use for break handler
- Return: nothing
- Desc: set a handler which should be invoked when Ctrl-C is pressed instead of
- aborting the program
- SeeAlso: AX=AF00h"WinDOS",AX=AF0Ah"WinDOS",AX=AF0Ch"WinDOS"
- --------O-2FAF07-----------------------------
- INT 2F - WinDOS v2.11 - SIGNAL FATAL OVERLAY FAULT
- AX = AF07h
- Return: never -- system reset
- Desc: pop up a window indicating that the system overlay file can not be
- loaded
- SeeAlso: AX=AF00h"WinDOS",AX=AF08h"WinDOS"
- --------O-2FAF08-----------------------------
- INT 2F - WinDOS v2.11 - SIGNAL RECOVERABLE OVERLAY FAULT
- AX = AF08h
- Return: nothing
- Desc: pop up a window requesting that a disk containing SH.OVL be inserted
- SeeAlso: AX=AF00h"WinDOS",AX=AF07h"WinDOS",AX=AF0Bh
- --------O-2FAF09-----------------------------
- INT 2F - WinDOS v2.11 - GET TERMINATED PSP
- AX = AF09h
- Return: DS = PSP segment of most recently ended TSR
- SeeAlso: AX=AF00h"WinDOS",AX=AF0Ah
- --------O-2FAF0A-----------------------------
- INT 2F - WinDOS v2.11 - GET MAIN SHELL PSP
- AX = AF0Ah
- Return: AX = shell's PSP (same as DS on last call to AX=AF06h)
- Desc: get the PSP address of the last program to call AX=AF06h (normally
- the main command interpreter)
- SeeAlso: AX=AF00h"WinDOS",AX=AF06h"WinDOS",AX=AF09h
- --------O-2FAF0B-----------------------------
- INT 2F - WinDOS v2.11 - SIGNAL FATAL ERROR
- AX = AF0Bh
- Return: never -- system reset
- Desc: pop up a window indicating a terminal system error
- SeeAlso: AX=AF00h"WinDOS",AX=AF07h,AX=AF08h,AX=AF15h"WinDOS"
- --------O-2FAF0C-----------------------------
- INT 2F - WinDOS v2.11 - GET OTHER MAIN SHELL PARAMETERS
- AX = AF0Ch
- Return: DI:AX = stack
- SI = offset of break handler
- Desc: retrieve the parameters last set by AX=AF06h (normally by the main
- command interpreter)
- SeeAlso: AX=AF00h"WinDOS",AX=AF06h"WinDOS"
- --------O-2FAF0D-----------------------------
- INT 2F - WinDOS v2.11 - GET CURRENT PARAMETER
- AX = AF0Dh
- BX = offset of desired parameter in global data area
- Return: AX = current value of parameter (AH undefined if byte value)
- SeeAlso: AX=AF00h"WinDOS",AX=AF0Eh
- --------O-2FAF0E-----------------------------
- INT 2F - WinDOS v2.11 - SET CURRENT PARAMETER BYTE VALUE
- AX = AF0Eh
- BX = offset of desired parameter in global data area
- DL = new value of parameter
- Return: nothing
- SeeAlso: AX=AF00h"WinDOS",AX=AF0Dh
- --------O-2FAF0F-----------------------------
- INT 2F - WinDOS v2.11 - GET HISTORY SEGMENT
- AX = AF0Fh
- Return: AX = segment of buffer for input history, or 0000h if none
- SeeAlso: AX=AF00h"WinDOS",AX=AF10h"WinDOS"
- --------O-2FAF10-----------------------------
- INT 2F - WinDOS v2.11 - SET HISTORY SEGMENT
- AX = AF10h
- BX = segment of new buffer for input history
- Return: nothing
- Note: the buffer must have been allocated with INT 21/AH=48h
- SeeAlso: AX=AF00h"WinDOS",AX=AF0Fh"WinDOS"
- --------O-2FAF11-----------------------------
- INT 2F - WinDOS v2.11 - FREE XMS BLOCKS
- AX = AF11h
- Return: nothing
- Desc: free all XMS blocks whose XMS identification value (see AX=AF12h)
- equals the current PSP
- SeeAlso: AX=AF00h"WinDOS",AX=AF12h"WinDOS",INT 21/AH=50h
- --------O-2FAF12-----------------------------
- INT 2F - WinDOS v2.11 - SET XMS IDENTIFICATION VALUE
- AX = AF12h
- DS = new XMS identification value (normally caller's PSP segment)
- Return: nothing
- SeeAlso: AX=AF00h"WinDOS",AX=AF11h"WinDOS"
- ----------2FAF12-----------------------------
- INT 2F U - ???
- AX = AF12h
- ???
- Return: ES = ???
- SeeAlso: AX=AF00h
- --------O-2FAF13-----------------------------
- INT 2F - WinDOS v2.11 - SET ASSIGN VALUE
- AX = AF13h
- BL = number of drive to remap (00h = A:)
- DL = number of drive to be accessed via drive number BL
- Return: nothing
- Desc: remap a drive letter
- Note: the remapping can be canceled by specifying DL=BL
- SeeAlso: AX=AF00h"WinDOS",AX=AF14h"WinDOS",AX=0601h
- ----------2FAF13-----------------------------
- INT 2F U - ???
- AX = AF13h
- ???
- Return: ???
- SeeAlso: AX=AF00h
- --------O-2FAF14-----------------------------
- INT 2F - WinDOS v2.11 - GET ASSIGN VALUE
- AX = AF14h
- BL = drive number (00h = A:)
- Return: DL = drive number which is actually accessed by drive number BL
- Desc: determine the current mapping for a drive
- SeeAlso: AX=AF00h"WinDOS",AX=AF13h"WinDOS",AX=0601h
- --------O-2FAF15-----------------------------
- INT 2F - WinDOS v2.11 - SIGNAL STACK ERROR
- AX = AF15h
- Return: never -- system reset
- Desc: pop up a window indicating a stack overflow
- SeeAlso: AX=AF00h"WinDOS",AX=AF0Bh"WinDOS"
- --------O-2FAF16-----------------------------
- INT 2F - WinDOS v2.11 - GET SIMPLE TRUENAME
- AX = AF16h
- DS:SI -> path to be canonicalized
- ES:DI -> buffer for canonicalized filename/pathname
- Return: CF clear if successful
- AX = 0000h
- CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- Desc: partially canonicalize a path, omitting SUBST, JOIN, ASSIGN, and
- network redirections
- SeeAlso: AX=AF00h"WinDOS",INT 21/AH=60h
- --------O-2FAF17-----------------------------
- INT 2F - WinDOS v2.11 - QUERY FOR NEW CURRENT DRIVE
- AX = AF17h
- Return: nothing
- Desc: pop up a dialog allowing the user to select a new default drive
- SeeAlso: AX=AF00h"WinDOS"
- --------O-2FAF18-----------------------------
- INT 2F - WinDOS v2.11 - SET CTRL-C/CTRL-BREAK DISABLE FLAG
- AX = AF18h
- DL = new break-checking state (00h enabled, 01h disabled)
- Return: nothing
- SeeAlso: AX=AF00h"WinDOS"
- --------O-2FAF19-----------------------------
- INT 2F - WinDOS v2.11 - SET HEAD SETTLE FLAG
- AX = AF19h
- DL = new state
- 00h diskette head settling time reset to 15ms before each access
- 01h no additional head settling time used between accesses
- Return: nothing
- SeeAlso: AX=AF00h"WinDOS"
- --------O-2FAF1A-----------------------------
- INT 2F - WinDOS v2.11 - SEARCH FOR NON-FRAGMENTED DISK AREA
- AX = AF1Ah
- BL = drive (00h = current, 01h = A:, etc.)
- CX = number of clusters desired
- Return: CF clear if successful
- DI = first free cluster on logical drive
- BP = first cluster of contiguous free area
- AX destroyed
- CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- Desc: attempt to find an area of the disk containing the specified number
- of contiguous unallocated clusters
- SeeAlso: AX=AF00h"WinDOS"
- ----------2FAF30-----------------------------
- INT 2F U - ???
- AX = AF30h
- ???
- Return: ???
- SeeAlso: AX=AF00h
- --------d-2FAFDE-----------------------------
- INT 2F - Disk-Emu - INSTALLATION CHECK / GET VERSION
- AX = AFDEh
- ES:DI -> 14-byte buffer for data (see #02979)
- Return: AX = CFDEh (Carlos Fernandez Disk-Emu) if installed
- BX = version (BH = major, BL = minor)
- Format of Disk-Emu information data:
- Offset Size Description (Table 02979)
- 00h BYTE number of tracks
- 01h BYTE sectors per track
- 02h WORD bytes per sector
- 04h BYTE number of heads
- 05h BYTE flag: 00h inactive, 01h active
- 06h BYTE write protection (00h none, 01h full, 02h pseudo)
- 07h BYTE saved (00h some unsaved data, 01h all data saved)
- 08h BYTE disk in memory (00h no, 01h yes)
- 09h WORD EMS handle
- 0Bh WORD XMS handle
- 0Dh BYTE memory type used for disk (00h XMS, 01h EMS)
- --------V-2FB000-----------------------------
- INT 2F - DOS 3.3+ GRAFTABL.COM - INSTALLATION CHECK
- AX = B000h
- Return: AL = status
- 00h not installed, OK to install
- 01h not installed, not OK to install
- FFh installed
- Notes: called by DISPLAY.SYS
- documented for DOS 5.0, but undocumented in prior versions
- SeeAlso: AX=2300h,AX=2E00h,AX=B001h
- --------V-2FB001-----------------------------
- INT 2F - DOS 3.3+ GRAFTABL.COM - GET GRAPHICS FONT TABLE
- AX = B001h
- DS:BX -> DWORD buffer for address of 8x8 font table
- Return: buffer filled
- AL = FFh
- Note: PC-DOS 3.30/4.01 and MS-DOS 6.0 set the font table offset to 0130h,
- MS-DOS 3.30 sets it to 0030h
- SeeAlso: AH=2Eh"GRAFTABL",AX=B000h
- --------I-2FB400-----------------------------
- INT 2F - IBM PC3270 EMULATION PROG v3 - INSTALLATION CHECK
- AX = B400h
- Return: AL = FFh if installed
- --------I-2FB401-----------------------------
- INT 2F - IBM PC3270 EMULATION PROG v3 - GET HOST BUFFER ADDRESS
- AX = B401h
- Return: ES -> host screen buffer (PC ASCII format)
- ES unchanged if communications not started
- --------I-2FB402-----------------------------
- INT 2F - IBM PC3270 EMULATION PROG v3 - ???
- AX = B402h
- BX = ???
- Return: ???
- --------I-2FB403-----------------------------
- INT 2F - IBM PC3270 EMULATION PROG v3 - ???
- AX = B403h
- ???
- Return: ???
- --------I-2FB404-----------------------------
- INT 2F - IBM PC3270 EMULATION PROG v3 - ???
- AX = B404h
- ???
- Return: ???
- --------I-2FB405-----------------------------
- INT 2F - IBM PC3270 EMULATION PROG v3 - ???
- AX = B405h
- ???
- Return: ???
- --------f-2FB700-----------------------------
- INT 2F - APPEND - INSTALLATION CHECK
- AX = B700h
- Return: AL = status
- 00h not installed
- FFh installed
- Note: MS-DOS 3.30 APPEND refuses to install itself when run inside TopView or
- a TopView-compatible environment
- SeeAlso: AX=B702h
- --------f-2FB701-----------------------------
- INT 2F U - APPEND v3.21 only - GET APPEND PATH
- AX = B701h
- Return: ES:DI -> active APPEND path
- Notes: the only version of APPEND known to support this call is the APPEND
- shipped with Microtek MS-DOS 3.21; MS-DOS 3.30-6.00 APPEND displays
- "Incorrect APPEND Version" and aborts the caller
- use AX=B704h first, and only call this function if that one is not
- supported
- SeeAlso: AX=B700h,AX=B704h
- --------f-2FB702-----------------------------
- INT 2F - APPEND - GET VERSION
- AX = B702h
- Return: AX = FFFFh if not DOS 4.0 APPEND (also if DOS 5.0 APPEND)
- AL = major version number
- AH = minor version number, otherwise
- SeeAlso: AX=B700h,AX=B710h
- --------f-2FB703-----------------------------
- INT 2F U - DOS 3.3, DOS 5.0 APPEND - HOOK INT 21
- AX = B703h
- ES:DI -> INT 21 handler APPEND should chain to
- Return: ES:DI -> APPEND's INT 21 handler
- Note: each invocation of this function toggles a flag which APPEND uses to
- determine whether to chain to the user handler or the original
- INT 21
- SeeAlso: AX=B700h,AX=B706h
- --------f-2FB704-----------------------------
- INT 2F - DOS 3.3+ APPEND - GET APPEND PATH
- AX = B704h
- Return: ES:DI -> active APPEND path (128 bytes max)
- Note: some versions of append do not support this call, and return ES
- unchanged; in this case, you should call AX=B701h to get the APPEND
- path
- SeeAlso: AX=B701h
- --------f-2FB706-----------------------------
- INT 2F - DOS 4.0+ APPEND - GET APPEND FUNCTION STATE
- AX = B706h
- Return: BX = APPEND state (see #02980)
- SeeAlso: AX=B700h,AX=B707h
- Bitfields for APPEND state:
- Bit(s) Description (Table 02980)
- 0 set if APPEND enabled
- 1-11 reserved
- 12 (DOS 5.0) set if APPEND applies directory search even if a drive has
- been specified
- 13 set if /PATH flag active
- 14 set if /E flag active (environment var APPEND exists)
- 15 set if /X flag active
- --------f-2FB707-----------------------------
- INT 2F - DOS 4.0+ APPEND - SET APPEND FUNCTION STATE
- AX = B707h
- BX = APPEND state bits (see #02980)
- SeeAlso: AX=B700h,AX=B706h
- --------f-2FB710-----------------------------
- INT 2F U - DOS 3.3+ APPEND - GET VERSION INFO
- AX = B710h
- Return: AX = current APPEND state (see #02980)
- BX = ??? (0000h in MS-DOS 3.30 and 5.00)
- CX = ??? (0000h in MS-DOS 3.30 and 5.00)
- DL = major version
- DH = minor version
- SeeAlso: AX=B700h,AX=B702h
- --------f-2FB711-----------------------------
- INT 2F - DOS 4.0+ APPEND - SET RETURN FOUND NAME STATE
- AX = B711h
- Note: if the next INT 21h call (and ONLY the next) is function 3Dh, 43h, or
- 6Ch (also 4B03h and 4Eh if /X active), the fully qualified filename
- is written over top of the filename passed to the INT 21h call. The
- application must provide a sufficiently large buffer. This state is
- reset after the next INT 21h call processed by APPEND.
- APPEND uses the byte at offset 3Dh in the PSP
- (see #01378 at INT 21/AH=26h) to store the flag telling it to
- overwrite the filename
- BUG: DOS 4.0 APPEND reportedly overwrites DS:DX instead of DS:SI for
- INT 21/AH=6Ch
- SeeAlso: INT 21/AH=26h,INT 21/AH=4Eh
- --------N-2FB800-----------------------------
- INT 2F - NETWORK - INSTALLATION CHECK
- AX = B800h
- Return: AL = status
- 00h not installed
- nonzero installed
- BX = installed component flags (test in this order!)
- bit 6 server
- bit 2 messenger
- bit 7 receiver
- bit 3 redirector
- bit 1 LANPUP (LANtastic 4.0)
- Notes: this function is supported by PC LAN Program, LAN Manager, LANtastic,
- NetWare Lite, SilverNET, 10NET, etc.
- LANtastic and NetWare Lite use only BL for the return value, preserving
- BH; LAN Manager and DOS LAN Requester return BH=00h. This permits
- differentiation between those two groups by setting BH to a nonzero
- value before the call and checking its value on return.
- SeeAlso: AX=4E53h,AX=B809h
- --------N-2FB800CXF041-----------------------
- INT 2F - 10NET - INSTALLATION CHECK
- AX = B800h
- CX = F041h
- Return: AL = status
- 00h not installed
- nonzero installed
- BX = installed component flags (test in this order!)
- bit 6 server
- bit 2 messenger
- bit 7 receiver
- bit 3 redirector
- bit 1 LANPUP (LANtastic 4.0)
- CX = 10Net data segment
- CX:DX -> 10Net Configuration Table
- (see #01691 at INT 21/AX=5E01h"10NET")
- Note: if CX <> F041h on entry, neither CX nor DX will be changed, and this
- call becomes identical to the standard installation check above
- SeeAlso: AX=B800h"network",INT 21/AX=5E01h"10NET"
- --------N-2FB803-----------------------------
- INT 2F - NETWORK - GET NETWORK EVENT POST HANDLER
- AX = B803h
- Return: ES:BX -> current event post handler (see AX=B804h)
- Note: this function is supported by PC LAN Program, 10NET v5.0,
- NetSoft DOS-NET v1.20+
- SeeAlso: AX=B800h,AX=B804h,AX=B903h
- --------N-2FB804-----------------------------
- INT 2F - NETWORK - SET NETWORK EVENT POST HANDLER
- AX = B804h
- CX = (10NET) 0370h if 10Windows is hooking post handler
- ES:BX -> new event post handler (see #02981)
- Notes: used in conjunction with AX=B803h to hook into the network event post
- routine
- this function is supported by PC LAN Program, 10NET v5.0,
- NetSoft DOS-NET v1.20+
- The specified handler is called on any network event. Two events are
- defined: message received and critical network error.
- SeeAlso: AX=B800h,AX=B803h,AX=B904h
- (Table 02981)
- Values network post routine is called with:
- AX = 0000h single block message
- DS:SI -> ASCIZ originator name
- DS:DI -> ASCIZ destination name
- ES:BX -> text header (see #02982)
- AX = 0001h start multiple message block
- CX = block group ID
- DS:SI -> ASCIZ originator name
- DS:DI -> ASCIZ destination name
- AX = 0002h multiple block text
- CX = block group ID
- ES:BX -> text header (see #02982)
- AX = 0003h end multiple block message
- CX = block group ID
- AX = 0004h message aborted due to error
- CX = block group ID
- AX = 0101h server received badly formatted network request
- Return: AX = FFFFh (PC LAN will process error)
- AX = 0102h unexpected network error
- ES:BX -> NCB (see #03249 at INT 5C"NetBIOS")
- AX = 0103h server received INT 24 error
- other registers as for INT 24, except AH is in BH
- Return: as below, but only 0000h and FFFFh allowed
- Return: AX = response code
- 0000h user post routine processed message
- 0001h PC LAN will process message, but message window not displayed
- FFFFh PC LAN will process message
- Format of text header:
- Offset Size Description (Table 02982)
- 00h WORD length of text (maximum 512 bytes)
- 02h N BYTEs text of message
- Note: all CRLF sequences in message text are replaced by 14h; all other
- values below 20h (space) are reserved
- --------N-2FB807-----------------------------
- INT 2F - NETWORK - GET NetBIOS NAME NUMBER OF MACHINE NAME
- AX = B807h
- Return: CH = NetBIOS name number of the machine name
- SeeAlso: INT 21/AX=5E00h
- --------N-2FB808-----------------------------
- INT 2F U - NETWORK - RELINK KEYBOARD HANDLER
- AX = B808h
- ES:BX -> INT 09 handler network should call after it finishes INT 09
- Notes: this call replaces the address to which the network software chains on
- an INT 09 without preserving the original value. This allows a prior
- handler to unlink, but does not allow a new handler to be added
- such that the network gets the INT 09 first unless the new handler
- completely takes over INT 09 and never chains.
- this function is called by the DOS 3.2 KEYBxx.COM
- SeeAlso: AX=B908h
- --------N-2FB809-----------------------------
- INT 2F - NETWORK - LANtastic, NetWare Lite - GET VERSION
- AX = B809h
- Return: AH = major version
- AL = minor version (decimal)
- Notes: this function is supported in this form by LANtastic, NetWare Lite,
- SilverNET, ...
- NetWare Lite returns its own version number rather than a PC LAN
- compatibility version
- SeeAlso: AX=4E53h,AX=B800h,AX=B809h"PC LAN Program"
- --------N-2FB809-----------------------------
- INT 2F - NETWORK - PC LAN Program, Microsoft Networking - GET VERSION
- AX = B809h
- Return: AH = minor version (decimal)
- AL = major version
- Notes: this function is supported in this form by PC LAN Program, LAN Manager,
- the DOS LAN Requester, 10NET v5.0, and Microsoft Networking under
- WfWg 3.11
- 10NET returns version 1.10 (AX=0A01h) for compatibility
- SeeAlso: AX=4E53h,AX=B800h,AX=B809h"LANtastic"
- --------N-2FB80A-----------------------------
- INT 2F u - PC Network 1.00 - ???
- AX = B80Ah
- ???
- Return: ???
- Program: PC Network is an early networking package which was renamed the
- IBM PC Local Area Network Program (PC LAN Program) as of v1.10
- Note: called by RECEIVER (equivalent to NetWare Lite SERVER)
- --------N-2FB80E-----------------------------
- INT 2F U - DOS LAN Requester - GET XSI2 ADDRESS / DATA
- AX = B80Eh
- Return: DS:DI -> XSI2 TSR's resident data (see #02983)
- Note: this function is used by NET.COM to locate the USERID and DOMAIN of
- the logged-in user (which may differ from the NET START domain
- name from DOSLAN.INI which is returned by AX=B80Fh)
- SeeAlso: AX=B800h,AX=B80Fh
- Format of XSI2 resident data:
- Offset Size Description (Table 02983)
- 00h 254 BYTEs ???
- FEh 10 BYTEs user ID 1
- 108h 10 BYTEs user ID 2
- 112h 10 BYTEs domain name 1
- 11Ch 10 BYTEs domain name 2
- 126h ? BYTEs domain controller
- --------N-2FB80F-----------------------------
- INT 2F - DOS LAN Requester - GET START PARAMETERS
- AX = B80Fh
- CX = size of return data buffer
- ES:DI -> return data buffer (see #02984)
- Return: AX = status
- 00h network started
- nonzero network not started
- CX = number of bytes returned in buffer
- ES:DI buffer filled
- SeeAlso: AX=B809h"PC LAN Program",AX=B80Eh
- Format of DOS LAN Requester return data buffer:
- Offset Size Description (Table 02984)
- 00h BYTE major version
- 01h BYTE minor version
- 02h WORD configuration flags given when network was started (see #02985)
- 04h 15 BYTEs NET START machine name (space padded)
- 13h BYTE 00h
- 14h 9 BYTEs NET START domain name (NULL padded)
- 1Dh BYTE 00h
- 1Eh 32 BYTEs /WRK heuristics string (space padded, not terminated)
- 3Eh WORD /SRV value
- 40h WORD /ASG value
- 42h WORD /NBC value
- 44h WORD /NBS value
- 46h WORD /BBC value
- 48h WORD /BBS value
- 4Ah WORD /PBC value
- 4Ch WORD /PBS value
- 4Eh WORD /PFS value
- 50h WORD /PFT value
- 52h WORD /PWT value
- 54h WORD /KUC value
- 56h WORD /KST value
- 58h WORD /NVS value
- 5Ah WORD /NMS value
- 5Ch WORD /NDB value
- 5Eh WORD /MBI value
- 60h BYTE NetBIOS name number for machine name
- 61h BYTE NetBIOS name number for domain name
- 62h WORD NetBIOS sessions required for configuration
- 64h WORD NetBIOS commands required for configuration
- 66h WORD NetBIOS names required for configuration
- 68h 128 BYTEs NET START path (LANROOT)
- E8h BYTE 00h
- Bitfields for configuration flags:
- Bit(s) Description (Table 02985)
- 0 /NVS nonzero
- 1 /NMS nonzero
- 2 /API
- 3 /HIM
- 4 /LIM
- 5 /ENC
- 6 /POP
- 7 /EMS
- 8 /RPL
- 9-12 reserved
- 13 RDR started
- 14 RCV started
- 15 User is currently logged on
- --------N-2FB900-----------------------------
- INT 2F - PC Network RECEIVER.COM - INSTALLATION CHECK
- AX = B900h
- Return: AL = state
- 00h if not installed
- FFh if installed
- --------N-2FB901-----------------------------
- INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM INT 2F HANDLER ADDRESS
- AX = B901h
- Return: AL = ???
- ES:BX -> RECEIVER.COM INT 2F handler
- Desc: allows more efficient execution by letting the caller bypass any other
- INT 2F handlers which have been added since RECEIVER.COM was
- installed
- --------N-2FB903-----------------------------
- INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM POST ADDRESS
- AX = B903h
- Return: ES:BX -> POST handler
- SeeAlso: AX=B803h,AX=B904h
- --------N-2FB904-----------------------------
- INT 2F - PC Network RECEIVER.COM - SET RECEIVER.COM POST ADDRESS
- AX = B904h
- ES:BX -> new POST handler
- SeeAlso: AX=B804h,AX=B903h
- --------N-2FB905-----------------------------
- INT 2F - PC Network RECEIVER.COM - GET FILENAME
- AX = B905h
- DS:BX -> 128-byte buffer for filename 1
- DS:DX -> 128-byte buffer for filename 2
- Return: buffers filled from RECEIVER.COM internal buffers
- Note: use of filenames is unknown, but one appears to be for storing messages
- SeeAlso: AX=B906h
- --------N-2FB906-----------------------------
- INT 2F - PC Network RECEIVER.COM - SET FILENAME
- AX = B906h
- DS:BX -> 128-byte buffer for filename 1
- DS:DX -> 128-byte buffer for filename 2
- Return: RECEIVER.COM internal buffers filled from user buffers
- Note: use of filenames is unknown, but one appears to be for storing messages
- SeeAlso: AX=B905h
- --------N-2FB908-----------------------------
- INT 2F - PC Network RECEIVER.COM - UNLINK KEYBOARD HANDLER
- AX = B908h
- ES:BX -> INT 09 handler RECEIVER should call after it finishes INT 09
- Note: this call replaces the address to which RECEIVER.COM chains on an
- INT 09 without preserving the original value. This allows a prior
- handler to unlink, but does not allow a new handler to be added
- such that RECEIVER gets the INT 09 first.
- SeeAlso: AX=B808h
- --------V-2FBC00-----------------------------
- INT 2F - Windows 3.0, DOS 5+ EGA.SYS - INSTALLATION CHECK
- AX = BC00h
- Return: AL = state
- 00h not installed, OK to install
- 01h not installed, not OK to install
- FFh installed
- BX = 5456h ("TV")
- Range: AH=80h to AH=FFh, selected by commandline switch
- SeeAlso: AX=BC06h"EGA",INT 10/AH=FAh"EGA"
- --------s-2FBC00BX3F3F-----------------------
- INT 2F - MediaVision MVSOUND.SYS - INSTALLATION CHECK
- AX = BC00h
- BX = 3F3Fh ('??')
- CX = 0000h
- DX = 0000h
- Return: if installed, BX XOR CX XOR DX = 4D56h ('MV')
- Program: MVSOUND.SYS is a driver for the MediaVision ProAudio Spectrum family
- of sound boards; its primary programmer was Bryan Crane
- SeeAlso: AX=BC01h"MVSOUND",AX=BC02h,AX=BC03h,AX=BC04h,AX=BC06h"MVSOUND"
- --------s-2FBC01-----------------------------
- INT 2F - MediaVision MVSOUND.SYS - GET VERSION
- AX = BC01h
- BX = magic value 6D20h ('m ')
- CX = magic value 2076h (' v')
- DX = magic value 2020h (' ')
- Return: BX = ASCII major version (leading zeros significant)
- CX = ASCII minor version (leading zeros significant)
- SeeAlso: AX=BC00h/BX=3F3Fh
- --------s-2FBC02-----------------------------
- INT 2F - MediaVision MVSOUND.SYS - GET STATE TABLE POINTER
- AX = BC02h
- Return: AX = 4D56h ('MV')
- BX:DX -> state table
- SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC03h
- --------s-2FBC03-----------------------------
- INT 2F - MediaVision MVSOUND.SYS - GET FUNCTION TABLE POINTER
- AX = BC03h
- Return: AX = 4D56h ('MV')
- BX:DX -> function table
- CX = ??? (000Eh)
- SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC02h
- --------s-2FBC04-----------------------------
- INT 2F - MediaVision MVSOUND.SYS - GET DMA AND IRQ CHANNELS
- AX = BC04h
- Return: AX = 4D56h ('MV')
- BL = DMA channel
- CL = IRQ number
- SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC01h"MVSOUND"
- --------V-2FBC06-----------------------------
- INT 2F U - MS Windows 3.0, DOS 5+ EGA.SYS - GET VERSION INFO
- AX = BC06h
- Return: BX = 5456h ("TV")
- CH = major version
- CL = minor version
- DL = revision
- SeeAlso: AX=BC00h"EGA",INT 10/AH=FAh"EGA"
- --------s-2FBC06-----------------------------
- INT 2F - MediaVision MVSOUND.SYS - GET STATUS STRING
- AX = BC06h
- Return: AX = 4D56h ('MV')
- DX:BX -> status string (first byte 0Ch if no status message to display)
- SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC01h"MVSOUND",AX=BC0Bh"MVSOUND"
- --------s-2FBC0B-----------------------------
- INT 2F - MediaVision MVSOUND.SYS - GET EXECUTABLE PATH
- AX = BC0Bh
- Return: BX:DX -> ASCIZ path for MVPROAS.EXE, 0000h:0000h if not available
- SeeAlso: AX=BC00h/BX=3F3Fh
- --------s-2FBC0E-----------------------------
- INT 2F - MediaVision MVSOUND.SYS - RE-INITIALIZE INT 09 HANDLER
- AX = BC0Eh
- Return: BX = status
- 0000h on failure
- AX = 0000h
- FFFFh if successful
- DX:AX -> prior INT 09 handler
- Desc: re-initialize INT 09 handler to re-enable hotkeys (e.g. after loading
- KEYB)
- --------U-2FBE00-----------------------------
- INT 2F - REDVIEW - INSTALLATION CHECK
- AX = BE00h
- Return: AL = FFh if installed
- Program: REDVIEW is a public-domain TSR by Alexandr Novy and Petr Horak which
- copies data sent to standard output to standard error when the
- former has been redirected to a file, thus allowing the data to
- be seen on the screen at the same time it is captured in a file
- --------N-2FBF00-----------------------------
- INT 2F - PC LAN PROGRAM REDIRIFS.EXE internal - INSTALLATION CHECK
- AX = BF00h
- Return: AL = FFh if installed
- Note: this function is also supported by NetSoft's DOS-NET v1.20+; however,
- none of the remaining BFxxh calls are supported
- SeeAlso: AX=BF01h,AX=BF80h,INT 2A/AX=4147h
- --------N-2FBF01-----------------------------
- INT 2F U - PC LAN PROGRAM REDIRIFS.EXE internal - ???
- AX = BF01h
- ???
- Return: ???
- SeeAlso: AX=BF00h
- --------N-2FBF80-----------------------------
- INT 2F - PC LAN PROG REDIR.SYS internal - SET REDIRIFS ENTRY POINT
- AX = BF80h
- ES:DI -> FAR entry point to IFS handler in REDIRIFS
- Return: AL = FFh if installed
- ES:DI -> internal workspace
- Note: all future IFS calls to REDIR.SYS are passed to the ES:DI entry point
- SeeAlso: AX=BF00h
- --------F-2FC0-------------------------------
- INT 2F - METZ XpressFax Hardware TSR (CLASS2) - API
- AH = C0h
- AL = function code (01h to 15h)
- Return: ???
- SeeAlso: AX=C000h/BX=444Bh,AX=CB00h/BX=4D53h
- --------N-2FC000-----------------------------
- INT 2F - Novell ODI Link Support Layer (LSL.COM) - INSTALLATION CHECK
- AX = C000h
- Return: AL = FFh if installed
- DX:BX -> FAR entry point (see #02986,#02987,#02988)
- ES:SI -> signature string "LINKSUP$"
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- Note: on return, ES = DX for LSL v1.10 and v2.05; LSL makes use of this in
- its search for a previous installation
- SeeAlso: AX=5100h,AX=C000h"NESL"
- (Table 02986)
- Call LSL function "Request MLID Registration" with:
- BX = 0001h
- ES:SI -> registration??? record (see #02990)
- DS:DI -> buffer for LSL information block (see #02991)
- Return: AX = completion code (0000h,8001h) (see #02989)
- DS:DI buffer filled if successful
- BX,CX corrupted
- Note: see "Novell LAN Driver Developer's Guide, Volume III" for more details
- (Table 02987)
- Call LSL function "get support entry points" with:
- BX = 0002h
- ES:SI -> buffer for entry point record (see #02992)
- Return: ES:SI buffer filled
- (Table 02988)
- Call LSL function "Request MLID API entry point" with:
- BX = 0003h
- Return: ES:SI -> MLID (Multiple Link Interface Driver) API entry point
- (call with BX=function 00h-10h, not range-checked)
- Note: LSL v1.10 and v2.05 execute BX=0003h for BX=0000h and any BX >= 0003h
- (Table 02989)
- Values for LSL completion code:
- 0000h successful
- 8001h out of resources
- 8002h bad parameter
- 8003h no more items
- 8004h item not present
- 8005h failed
- 8006h receive overflow
- 8007h canceled
- 8008h bad command
- 8009h duplicate entry
- 800Ah no such handler
- 800Bh no such driver
- Format of LSL registration record:
- Offset Size Description (Table 02990)
- 00h DWORD -> ??? FAR function (to be called with ES:SI -> ??? and
- returning AX = completion code)
- 04h DWORD -> ???
- 08h DWORD -> ??? data (at least 3Eh bytes)
- Format of LSL information block:
- Offset Size Description (Table 02991)
- 00h DWORD -> ??? entry point (called with BX=function 00h-11h)
- 04h WORD ???
- 06h WORD ???
- Note: due to a fencepost error, LSL v2.05 (distributed with Novell DOS 7)
- will crash if the above entry point is called with BX=0012h
- Format of entry point record:
- Offset Size Description (Table 02992)
- 00h DWORD pointer to protocol support entry point in LSL (see #02993)
- 04h DWORD pointer to general support entry point in LSL (see #02994)
- (Table 02993)
- Call protocol support entry point with:
- BX = function number
- 0000h ???
- 0001h ???
- 0002h ???
- 0003h "ScheduleAESEvent"
- ES:SI -> AES ECB to be scheduled (see #02997)
- Return: ES,SI preserved
- 0004h "CancelAESEvent"
- ES:SI -> ECB to be cancelled (see #02997)
- Return: ES,SI preserved
- 0005h "GetIntervalMarker"
- Return: DX:AX = current interval marker in milliseconds
- all other registers preserved
- 0006h "RegisterStack"
- AX = logical board number
- ES:SI -> bound stack info structure (see #03007)
- Return: BX = assigned Stack ID if AX=0000h
- 0007h "DeRegisterStack"
- AX = protocol stack's assigned Stack ID
- 0008h "RegisterDefaultStack"
- AX = logical board number
- ES:SI -> stack info structure (see #03008)
- 0009h "DeRegisterDefaultStack"
- AX = logical board number
- 000Ah "RegisterPrescanStack"
- AX = logical board number
- ES:SI -> stack info structure (see #03008)
- 000Bh "DeRegisterPrescanStack"
- AX = logical board number
- 000Ch "SendPacket"
- ES:SI -> send ECB
- Return: interrupts disabled
- 000Dh ???
- 000Eh ???
- 000Fh ???
- 0010h "GetStackIDFromName"
- ES:SI -> counted NUL-terminated protocol name (max 15 chars)
- Return: BX = Stack ID if AX=0000h
- 0011h "GetPIDFromStackIDBoard"
- AX = Stack ID for protocol
- CX = logical board number
- ES:SI -> 6-byte buffer for protocol ID
- 0012h "GetMLIDControlEntry"
- AX = logical board number
- Return: ES:SI -> MLID control handler (see #02995) if AX=0000h
- 0013h "GetProtocolControlEntry"
- AX = Stack ID or
- FFFEh Prescan stack
- CX = logical board number
- FFFFh default protocol
- CX = logical board number
- Return: ES:SI -> protocol stack control entry point if AX=0000h
- (see #02996)
- 0014h "GetLSLStatistics"
- Return: AX = 0000h (successful)
- ZF set
- ES:SI -> LSL statistics table (see #02999)
- 0015h "BindStack"
- AX = protocol stack's assigned Stack ID
- CX = logical board number
- 0016h "UnbindStack"
- AX = protocol stack's assigned Stack ID
- CX = logical board number
- 0017h "AddProtocolID"
- AX = frame type ID code
- ES:SI -> 6-byte protocol ID
- CX:DI -> counted NUL-terminated short protocol name (max 15 ch)
- 0018h "RelinquishControl"
- Return: after LSL performs any necessary background processing
- 0019h "GetLSLConfiguration"
- Return: AX = 0000h (successful)
- ZF set
- ES:SI -> LSL configuration table (see #02998)
- 001Ah "GetTickMarker"
- Return: AX = number of 55ms ticks since LSL loaded
- BX destroyed
- Return: AX = completion code (see #02989)
- ZF set if successful
- SS:SP, DS, BP preserved; most other registers may be destroyed
- (Table 02994)
- Call general support entry point with:
- BX = function number
- 0000h "Allocate Memory" (obsolete)
- always returns AX=8008h (BAD_COMMAND)
- 0001h "Free Memory" (obsolete)
- always returns AX=8008h (BAD_COMMAND)
- 0002h "Realloc Memory" (obsolete)
- always returns AX=8008h (BAD_COMMAND)
- 0003h "Memory Statistics" (obsolete)
- always returns AX=8008h (BAD_COMMAND)
- 0004h "Add Memory To Pool" (obsolete)
- always returns AX=8008h (BAD_COMMAND)
- 0005h "AddGeneralService"
- ES:SI -> General Service Control Block (see #03009)
- 0006h "RemoveGeneralService"
- ES:SI -> General Service Control Block (see #03009)
- 0007h "GetNETcfgPath"
- Return: AX = 0000h (successful)
- DS:DX -> ASCIZ pathname for NET.CFG
- 0008h U ??? (in LSL 1.10)
- Return: AX = 0000h
- ES:SI -> ??? (a 22-byte data area)
- 000Ah "GetCriticalSectionStatus"
- Return: BX = total outstanding calls to "StartCriticalSection"
- 000Bh "ServiceEvents"
- interrupts disabled
- Return: interrupts disabled
- 0010h "GetStackECB"
- DS:DI -> Lookahead structure (see #03010)
- interrupts disabled
- Return: ES:SI -> ECB if successful (AX=0000h,ZF set)
- interrupts disabled
- 8000h-FFFFh reserved for user general service providers
- Return: AX = completion code (see #02989)
- ZF set if successful
- SS:SP, DS, BP preserved
- (Table 02995)
- Call MLID control handler with:
- AX = logical board number
- BX = function number
- 0000h "GetMLIDConfiguration"
- Return: ES:SI -> MLID's configuration table if successful
- (see #03002 for format)
- 0001h "GetMLIDStatistics"
- Return: ES:SI -> MLID's statistics table if successful
- (see #03002 for format)
- 0002h "AddMulticastAddress"
- ES:SI -> 6-byte multicast address to add
- 0003h "DeleteMulticastAddress"
- ES:SI -> 6-byte multicast address to delete
- 0005h "MLIDShutdown"
- CX = type
- 0000h permanent (also deregisters from LSL)
- other temporary (shutdown hardware only)
- 0006h "MLIDReset" reinitialize board / restart from temp shutdown
- 0007h "Create Connection" (obsolete?)
- ???
- 0008h "Delete Connection" (obsolete?)
- ???
- 0009h "SetLookAheadSize"
- CX = requested lookahead size (00h-80h)
- 000Ah "PromiscuousChange"
- CX = what to receive promiscuously
- bit 0: MAC frames
- bit 1: non-MAC frames
- 000Bh "RegisterReceiveMonitor"
- CX = subfunction
- 0000h disable receive monitoring
- else enable receive monitoring
- ES:SI -> monitor receive routine
- ES:DI -> monitor transmit routine
- 000Ch "Driver Poll" (obsolete?)
- ???
- Return: AX = completion code (see #02989)
- ZF set if successful
- Note: not all boards/MLIDs support function 0010h; see bit 13 in the MLID
- mode flags field of the MLID's configuration table
- (Table 02996)
- Call protocol stack control entry point with:
- BX = function number
- 0000h "GetProtocolStackConfiguration"
- Return: ES:SI -> protocol stack's configuration table
- (see #03001)
- 0001h "GetProtocolStackStatistics"
- Return: ES:SI -> protocol stack's statistics table (see #03000)
- 0002h "BindToMLID"
- CX = board number to bind to
- ES:SI -> implementation-dependant parameter string
- 0003h "UnBindFromMLID"
- CX = board number from which protocol should unbind
- ES:SI -> optional implementation-dependant parameter string
- 0004h "MLIDDeRegistered"
- CX = board number that has de-registered from LSL
- Return: AX = status
- 0000h successful
- else implementation-dependant error codes
- ZF set if successful
- SS:SP, DS, BP preserved
- Format of AES ECB:
- Offset Size Description (Table 02997)
- 00h DWORD "AESLink" pointer used by LSL for list management
- 04h DWORD number of milliseconds to wait
- 08h DWORD "AESStatus" (is set to 00000000h when AES ESR is invoked)
- 0Ch DWORD -> function to be invoked when time expires
- ES:SI will point to this structure on entry,
- DS, BP, and SS:SP must be preserved.
- SeeAlso: #03011
- Format of LSL Configuration Table:
- Offset Size Description (Table 02998)
- 00h BYTE major version of configuration table
- 01h BYTE minor version of configuration table (decimal, 0-99)
- 02h 8 BYTEs reserved
- 0Ah BYTE LSL major version (decimal)
- 0Bh BYTE LSL minor version (decimal, 0-99)
- ---LSL 1.0x ---
- 0Ch 14 BYTEs reserved
- ---LSL 1.10+ ---
- 0Ch WORD maximum number of boards which LSL can handle
- 0Eh WORD maximum number of protocol IDs which LSL can handle
- 10h 12 BYTEs reserved
- Format of LSL Statistics Table:
- Offset Size Description (Table 02999)
- 00h BYTE major version of statistics table format
- 01h BYTE minor version of statistics table format (decimal, 0-99)
- 02h WORD "GenericCounters" number of counters in static portion of
- table
- 04h DWORD "ValidCountersMask" bit mask indicating which generic
- counters are actually used. Bit 31 = TotalTxPackets, bit 30
- is the next field, etc.
- 08h DWORD "TotalTxPackets" total SendPacket requests made
- 0Ch DWORD reserved
- 10h DWORD reserved
- 14h DWORD "AESEventsCount" number of completed AES events
- 18h DWORD "PostponedEvents" number of events postponed due to critical
- sections inside the MLIDs
- 1Ch DWORD "CancelAESFailures" number of times CancelAESEvent failed
- 20h DWORD reserved
- 24h DWORD reserved
- 28h DWORD "TotalRxPackets" total number of GetStackECB requests
- 2Ch DWORD "UnclaimedPackets" total number of packets not consumed by a
- protocol stack
- 30h WORD "NumberCustom" number of custom variables that follow
- 32h N DWORDs custom counters
- N DWORDs -> CustomCounterStrN (one per custom counter)
- var length-prepended and NULL terminated string for Counter 0
- ...
- var length-prepended and NULL terminated string for Counter N-1
- SeeAlso: #03000,#03006
- Format of Protocol Stack Statistics Table:
- Offset Size Description (Table 03000)
- 00h BYTE statistics table major version
- 01h BYTE statistics table minor version (decimal, 0-99)
- 02h WORD number of generic counters following
- 04h DWORD "ValidCountersMask" (bitmask, bit 31 is TotalTxPackets)
- 08h DWORD TotalTxPackets
- 0Ch DWORD TotalRxPackets
- 10h DWORD IgnoredRxPackets
- 14h WORD number of custom counters
- 16h N DWORDs custom counters
- N DWORDs -> CustomCounterStrN (one per custom counter)
- var length-prepended and NULL terminated string for Counter 0
- ...
- var length-prepended and NULL terminated string for Counter N-1
- SeeAlso: #02999,#03006
- Format of Protocol Stack Configuration Table:
- Offset Size Description (Table 03001)
- 00h BYTE configuration table major version
- 01h BYTE configuration table minor version (decimal, 0-99)
- 02h DWORD -> counted NUL-terminated long descriptive name for protocol
- 06h DWORD -> counted NUL-terminated short name for protocol (15 chars)
- 0Ah BYTE protocol stack major version
- 0Bh BYTE protocol stack minor version (decimal, 0-99)
- 0Ch 16 BYTEs reserved for future use
- Format of MLID Configuration Table:
- Offset Size Description (Table 03002)
- 00h 26 BYTEs signature 'HardwareDriverMLID ' (8 spaces on end)
- 1Ah BYTE configuration table major version
- 1Bh BYTE configuration table minor version (decimal, 0-99)
- 1Ch 6 BYTEs node address
- 22h WORD MLID mode flags (see #03003)
- 24h WORD board number
- 26h WORD board instance (if more than one of same board installed)
- 28h WORD maximum packet size
- 2Ah WORD BestDataSize
- 2Ch WORD WorstDataSize
- 2Eh DWORD -> counted NUL-terminated long name for NIC
- 32h DWORD -> counted NUL-terminated short name for NIC (8 chars max)
- 36h DWORD -> counted NUL-terminated Frame and Media type
- 3Ah WORD reserved (0000h)
- 3Ch WORD frame type ID
- 3Eh WORD TransportTime (milliseconds)
- 40h DWORD -> SourceRouteHandler for TokenRing. (Used by ROUTE.COM)
- 44h WORD lookahead size
- 46h WORD line speed (Mbps if high bit clear, else Kbps)
- 48h WORD QueueDepth
- 4Ah 6 BYTEs reserved (0)
- 50h BYTE driver major version
- 51h BYTE driver minor version (decimal, 0-99)
- 52h WORD bus/multicast flags (see #03004)
- 54h WORD send retries
- 56h DWORD ConfigTableLink
- 5Ah WORD MLID sharing flags (see #03005)
- 5Ch WORD slot number
- 5Eh WORD I/O address 1
- 60h WORD I/O range 1
- 62h WORD I/O address 2
- 64h WORD I/O range 2
- 66h DWORD memory address 1
- 6Ah WORD memory size 1
- 6Ch DWORD memory address 2
- 70h WORD memory size 2
- 72h BYTE interrupt line 1
- 73h BYTE interrupt line 2
- 74h BYTE DMA line 1
- 75h BYTE DMA line 2
- Bitfields for MLID mode flags:
- Bit(s) Description (Table 03003)
- 15 MLID supports Octet Reversal
- 14 node address is non-canonical
- 13 promiscuous mode is supported
- 12-8 reserved
- 7 LDataSize field in LookAhead structure supported
- 6 raw send supported
- 5 MLID needs to be polled by LSL
- 4 reserved (0)
- 3 multicasting is supported
- 2 not currently used by DOS ODI, set to 0.
- 1 network card uses DMA.
- 0 RealDriverBit, always set to 1.
- Bitfields for bus/multicast flags:
- Bit(s) Description (Table 03004)
- 10-9 specialized multicast support
- 00 = Group addressing is default for medium
- 01 = Invalid
- 10 = Filter group address in MLID.
- 11 = Adapter filters group address.
- 2 supports Micro Channel cards
- 1 supports ISA cards
- 0 supports EISA cards
- Bitfields for MLID sharing flags:
- Bit(s) Description (Table 03005)
- 8 NIC can share DMA2
- 7 NIC can share DMA1
- 6 NIC can share IRQ2
- 5 NIC can share IRQ1
- 4 NIC can share Memory2
- 3 NIC can share Memory1
- 2 NIC can share IO2
- 1 NIC can share IO1
- 0 MLID is currently shut down
- Format of MLID Statistics Table:
- Offset Size Description (Table 03006)
- 00h BYTE driver statistics table major version
- 01h BYTE driver statistics table minor version (decimal, 0-99)
- 02h WORD number of generic counters (typically 13)
- 04h DWORD "ValidCountersMask" (bit mask, bit 31 is TotalTxCount)
- 08h DWORD TotalTxCount
- 0Ch DWORD TotalRxCount
- 10h DWORD NoECBAvailableCount
- 14h DWORD TxTooBigCount
- 18h DWORD TxTooSmallCount
- 1Ch DWORD RxOverflowCount
- 20h DWORD RxTooBigCount
- 24h DWORD RxTooSmallCount
- 28h DWORD TxMiscCount
- 2Ch DWORD RxMiscCount
- 30h DWORD TxRetryCount
- 34h DWORD RxChecksumErrorCount
- 38h DWORD RxMismatchCount
- 3Ch WORD number of custom counters
- 3Eh N DWORDs custom counters
- N DWORDs -> CustomCounterStrN (one per custom counter)
- var length-prepended and NULL terminated string for Counter 0
- ...
- var length-prepended and NULL terminated string for Counter N-1
- SeeAlso: #02999,#03000
- Format of bound stack info structure:
- Offset Size Description (Table 03007)
- 00h DWORD -> protocol stack's short name (counted, NUL-terminated)
- 04h DWORD -> receive handler
- 08h DWORD -> control handler
- Format of stack info structure:
- Offset Size Description (Table 03008)
- 00h DWORD -> receive handler
- 04h DWORD -> control handler
- Format of General Service Control Block:
- Offset Size Description (Table 03009)
- 00h DWORD -> next GSCB (maintained internally by LSL)
- 04h DWORD -> entry point for general service handler
- 08h WORD command code for this general service (8000h-FFFFh)
- Note: the control block must not be altered or deallocated until the general
- service is removed
- Format of Lookahead structure:
- Offset Size Description (Table 03010)
- 00h DWORD -> Media header
- 04h DWORD -> lookahead buffer
- 08h WORD length of lookahead buffer
- 0Ah 6 BYTEs protocol ID
- 10h WORD logical board number
- 12h WORD lookahead size
- Format of ODI ECB:
- Offset Size Description (Table 03011)
- 00h DWORD link to next ECB
- 04h DWORD link to previous ECB
- 08h WORD general status
- 0000h received successfully
- 8006h packet overflow
- 8007h reception aborted (data not valid)
- 0Ah DWORD -> event service routine or RETF (never 0000h:0000h)(see #03012)
- 0Eh WORD protocol stack identifier
- 10h 6 BYTEs protocol ID (sending only)
- 16h WORD MLID board number (sending only)
- 18h 6 BYTEs MAC destination address
- 1Eh 4 BYTEs driver workspace
- 22h 8 BYTEs protocol workspace
- 2Ah WORD total length of sent buffer
- 2Ch WORD fragment count
- 2Eh 2 WORDs segment,offset of first fragment buffer
- 32h WORD length of first fragment buffer
- ...
- SeeAlso: #02997
- (Table 03012)
- Values event service routine is called with:
- ES:SI -> associated ODI ECB (see #03011)
- interrupts disabled
- Return: DS,BP,SS,SP preserved
- interrupt disabled
- Notes: the service routine may invoke any IPX/ODI function except CloseSocket
- it is safe to send a packet and wait for completion if enough stack
- space is available
- --------N-2FC000-----------------------------
- INT 2F - Novell NetWare Event Service Layer (NESL) 1.0 - INSTALLATION CHECK
- AX = C000h
- Return: AL = FFh if installed
- DX:BX -> FAR entry point (see #03013,#03014,#03015,#03016,#03017,#03018)
- ES:SI -> signature string "NESL_EVENTS"
- Program: NESL is a generic interface for event handling in ODI drivers and
- other NetWare-oriented modules. Primarily intended to support
- power management and "hot swapping" of PCMCIA cards, but it is not
- limited to this.
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- SeeAlso: AX=C000h"Link Support Layer",AX=C000h"NETWARN"
- (Table 03013)
- Call NESL function GetNESLConfigPointer with:
- BX = 0000h
- Return: AX = completion code (0000h,8008h) (see #03019)
- ES:SI -> NESL configuration table if successful (see #03020)
- BP,DS,STACK preserved
- Desc: Obtain a pointer to the NESL Configuration Table
- SeeAlso: #03014,#03017
- (Table 03014)
- Call NESL function RegisterEventProducer with:
- BX = 0001h
- ES:SI -> Producer Event Control Block (PECB) (see #03021)
- Return: AX = completion code (0000h, 8005h, 8008h) (see #03019)
- ES:SI -> still points to PECB
- BP,DS,STACK preserved
- Desc: Allows a module to register as a producer of a given event class
- Note: PECB_ClassName and PECB_Flags must be filled in on entry
- SeeAlso: #02870,#03015,#03016,#03017
- (Table 03015)
- Call NESL function DeRegisterEventProducer with:
- BX = 0002h
- ES:SI -> PECB previously passed to RegisterEventProducer (see #03021)
- Return: AX = completion code (0000h, 8002h, 8008h) (see #03019)
- ES:SI -> still points to PECB
- BP,DS,STACK preserved
- Desc: Allows a module to de-register as a producer of a given event class
- SeeAlso: #03014,#03018
- (Table 03016)
- Call NESL function EventNotification with:
- BX = 0003h
- ES:SI -> PECB previously registered (see #03021)
- Return: AX = completion code (0h, 8005h, 8008h) (see #03019)
- ES:SI -> still points to PECB
- BP,DS,STACK preserved
- Desc: Allows a module to signal that an event has just occurred in a given
- event class.
- Notes: Once called, NESL will generate corresponding callouts for this
- event, as described in Table #03023.
- on entry, the PECB_DataPtr must point at an Event Parameter Block (EPB)
- (see #03024) filled in to match the desired event
- SeeAlso: #03014
- (Table 03017)
- Call NESL function RegisterEventConsumer with:
- BX = 0004h
- ES:SI -> Consumer Event Control Block (CECB) (see #03022)
- Return: AX = completion code (0h, 8005h, 8008h) (see #03019)
- ES:SI -> still points to CECB
- BP,DS,STACK preserved
- Desc: Allows a module to register as a consumer of a given event class
- Note: on entry, the CECB_ClassName, CECB_NotifProc and CECB_OSILevel must be
- filled in.
- SeeAlso: #03014,#03018
- (Table 03018)
- Call NESL function DeRegisterEventConsumer with:
- BX = 0005h
- ES:SI -> CECB previously passed to RegisterEventConsumer (see #03022)
- Return: AX = completion code (0h, 8002h, 8008h) (see #03019)
- ES:SI -> still points to CECB
- BP,DS,STACK preserved
- Desc: Allows a module to de-register as a consumer of a given event class
- SeeAlso: #03015,#03017
- (Table 03019)
- Values for NESL Error code:
- 0000h Successful
- 8002h Bad Parameter
- 8005h Fail
- 8008h Bad Command
- Format of NESL Configuration Table:
- Offset Size Description (Table 03020)
- 00h WORD NESL_Cfg_MajVer Major Version of this table (=1)
- 02h WORD NESL_Cfg_MinVer Minor Version of this table (=0)
- 04h DWORD NESL_Cfg_ModLName -> ASCIZ long name of NESL module
- (typically -> "NetWare Event Service Layer for 16-Bit DOS")
- 08h DWORD NESL_Cfg_ModSName -> ASCIZ short name of NESL module
- (typically -> "NESL")
- 0Ch WORD NESL_Cfg_ModMajVer Major Version of NESL itself (=1)
- 0Eh WORD NESL_Cfg_ModMinVer Minor Version of NESL itself (=0)
- Format of NESL Producer Event Control Block (PECB):
- Offset Size Description (Table 03021)
- 00h WORD PECB_MajVer Major Version of this structure (=1)
- 02h WORD PECB_MinVer Minor Version of this structure (=0)
- 04h DWORD PECB_NextProducer -> next PECB. NULL if last.
- 08h DWORD PECB_ClassName -> ASCIZ string identifying event
- class (see #03025)
- 0Ch DWORD PECB_ConsumerList -> list of consumers for this event class
- 10h DWORD PECB_DataPtr -> points to additional data during events
- 14h DWORD PECB_Flags
- Bit 0 =0 consumers should be called "top down" for this
- event class. (OSI level 7 down to OSI level 1)
- =1 consumers should be called "bottom up"
- Bits 1-31 Reserved =0
- 18h 8 BYTEs PECB_Reserved (all zeros)
- Note: Although the event producer provides the memory for the PECB, the
- NESL module controls this memory until the event class is
- de-registered.
- While owned by NESL, this structure should be treated as read-only,
- except for the PECB_DataPtr field.
- Format of NESL Consumer Event Control Block (CECB):
- Offset Size Description (Table 03022)
- 00h WORD CECB_MajVer Major Version of this structure (=1)
- 02h WORD CECB_MinVer Minor Version of this structure (=0)
- 04h DWORD CECB_NextConsumer -> next CECB. NULL if last.
- 08h DWORD CECB_ClassName -> ASCIZ string identifying event
- class (see #03025)
- 0Ch DWORD CECB_NotifProc -> FAR CALL event handler (see #03023)
- 10h WORD CECB_OSILevel
- Bits 4-7 = OSI Layer of this module (1 through 7)
- Bits 0-3 = relative ordering with other modules on same layer
- 13h 14 BYTEs CECB_Reserved (all zeros)
- Note: Although the event consumer provides the memory for the CECB, the
- NESL module controls this memory until the consumer is de-registered.
- While owned by NESL, this structure should be treated as read-only,
- (Table 03023)
- Values NESL Consumer Notification Procedure is called with:
- ES:SI -> Event Parameter Block (EPB) (see #03024)
- Return: AX = completion code (0000h, 8005h) (see #03019)
- ES:SI -> still points to EPB
- Desc: Called by NESL to notify the consumer when an event has occurred in
- an event class for which it has registered.
- SeeAlso: #03022
- Format of NESL Event Parameter Block (EPB):
- Offset Size Description (Table 03024)
- 00h WORD EPB_MajVer Major Version of this structure (=1)
- 02h WORD EPB_MinVer Minor Version of this structure (=0)
- 04h DWORD EPB_ClassName -> ASCIZ string identifying event class
- (see #03025)
- 08h DWORD EPB_EventName -> ASCIZ string identifying event within
- class (see #03026)
- 0Ch DWORD EPB_ModuleName -> ASCIZ string identifying module
- producing event
- 10h DWORD EPB_DataPtr0 -> event-defined data or NULL if not used
- 14h DWORD EPB_DataPtr1 -> event-defined data or NULL if not used
- 18h 8 BYTEs EPB_Reserved (all zeros)
- (Table 03025)
- Values for NESL Event Class Names:
- Event Class Description
- ------------------- -----------------------------------------
- Service Suspend Suspension of a service. Called top-down.
- Service Resume Resumption/availability of a service. Called bottom-up.
- Service/Status Change Change in status or level of service. Called top-down.
- Suspend Request Request to suspend a service. Called bottom-up.
- Note: Contact Novell Labs to register new event classes.
- (Table 03026)
- Values for NESL Event Names:
- Event Name Class Description
- -------------------------- ------------- ---------------------------
- MLID Cable Disconnect Service Suspend Cable disconnected from NIC
- MLID Card Removal Service Suspend PCMCIA card removed
- MLID Hardware Failure Service Suspend Serious hardware
- failure in NIC
- MLID Not In Range Service Suspend Wireless access point
- is out of range
- MLID Shutdown Service Suspend MLID was shut down
- MLID Media Access Denied Service Suspend Access to physical
- medium unsuccessful
- MLID Cable Reconnect Service Resume Cable re-connected to NIC
- MLID Card Insertion Complete Service Resume PCMCIA card inserted
- MLID In Range Service Resume Wireless access point
- in range
- MLID Reset Service Resume MLID was just reset
- MLID Access Point Change Serv/Status Change Station has moved to
- new access point
- MLID Speed Change Serv/Status Change Change in communic. speed
- Note: Contact Novell Labs to register new event names.
- For all predefined events above, EPB_DataPtr0 (see #03024) points
- to the MLID Configuration table (see AX=C000h"ODI") for the
- affected MLID.
- --------N-2FC000-----------------------------
- INT 2F - Novell NetWare Connect NETWARN - INSTALLATION CHECK
- AX = C000h
- Return: AL = FFh if installed
- SI = segment of resident portion
- Program: NETWARN is a utility supplied with NetWare Connect to warn a
- remote dialup user when programs are about to be loaded slowly over
- the modem link.
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- Note: on return, verify that it is NETWARN responding by examining signature
- at in NETWARN's data table in the resident segment (see #03027)
- SeeAlso: AX=C000h"ODI",AX=C000h"NESL"
- Format of NETWARN Configuration structure:
- Offset Size Description (Table 03027)
- 103h 7 BYTEs signature string "NETWARN"
- 10Ah BYTE major version in ASCII (="1")
- 10Bh BYTE minor version in ASCII (="0")
- 10Ch DWORD minimum size of EXE cared about in bytes (/S=xxxx)
- 110h WORD same value in kilobytes (see #03028 [bit 4])
- 112h BYTE multiplex code (AH value) actually being used
- 113h WORD options (see #03028)
- 115h DWORD INT 21h vector before NETWARN loaded
- 119h DWORD INT 2Fh vector before NETWARN loaded
- 11Dh 16 BYTEs ASCIIZ local name of last device which was checked
- 12Dh 128 BYTEs ASCIIZ remote name of last device which was checked
- Note: the specified offsets are from the start of the resident segment
- Bitfields for NETWARN options:
- Bit(s) Description (Table 03028)
- 0 ??? (=0)
- 1 /U (Unload) selected (never in resident)
- 2 /E (Enabled) Will trap & check EXEC's
- 3 /D (Disabled) No EXEC checking done
- 4 /S (Size) was set (see #03027 [offsets 010Ch and 0110h])
- 5 /P (Path shown)
- 6 /H or /? (Help) (never in resident)
- SeeAlso: #03027
- --------f-2FC000-----------------------------
- INT 2F - FN32 32 character filename utilities - INSTALLATION CHECK
- AX = C000h
- Return: AL = FFh if installed
- ES:DI -> signature string "FN32 32CHAR TSR"
- Program: FN32 is a TSR which supports 32 character filenames under PC/MS-DOS
- Note: the TSR intercepts INT 21 calls and performs filename substitution by
- managing dictionary files in each directory which contains long
- filenames
- --------M-2FC000-----------------------------
- INT 2F - QMR - INSTALLATION CHECK
- AX = C000h
- Return: AL = FFh if installed
- ES:DI -> signature string "QMR1!"
- Program: QMR (Cove Software, Quick Mouse Reset) monitors the mouse
- service interrupt (int 33h) and substitutes a fast software
- reset (mouse fn 21h) for the slow hardware reset (mouse fn 0).
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- SeeAlso: AX=C001h"QMR",AX=C002h"QMR",AX=C003h"QMR"
- --------V-2FC000-----------------------------
- INT 2F - VGAsave v1.93 - INSTALLATION CHECK
- AX = C000h
- Return: AL = FFh if installed
- BX = segment of resident code
- Program: VGAsave is a freeware VGA-specific, mouse-aware screenblanker by Bill
- Javurek
- Range: AH=C0h to AH=FFh, selected by scanning for a free multiplex number
- Note: the transient portion of VGAsave compares the first 38 bytes of the
- resident code (addressed through BX) against its own copy of the
- resident code to complete the installation check
- SeeAlso: INT 14/AX=AA01h,INT 2F/AH=93h
- Index: screen saver;VGAsave
- --------V-2FC000-----------------------------
- INT 2F - AD-DOS - INSTALLATION CHECK
- AX = C000h
- Return: AL = FFh if installed
- BX = 4144h ('AD')
- CX = 2D44h ('-D')
- DX = 4F53h ('OS')
- Program: AD-DOS is the DOS version of the After Dark screen blanker for
- MS Windows
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- SeeAlso: AX=C001h"AD-DOS",AX=C003h"AD-DOS",AX=C005h"AD-DOS",AX=C007h"AD-DOS"
- SeeAlso: AX=C009h"AD-DOS",AX=C020h"AD-DOS",INT 14/AX=AA01h
- Index: screen saver;AD-DOS
- --------U-2FC000-----------------------------
- INT 2F U - WANG_ER.COM - INSTALLATION CHECK
- AX = C000h
- Return: AL = FFh if installed
- ES = segment of resident code
- Program: WANG_ER is a TSR from Compaq which permits Compaq systems equipped
- with 3-mode floppy drives to read Wang document diskettes
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- Note: The installation check is completed by comparing the resident code
- with the copy in the transient program
- --------i-2FC000-----------------------------
- INT 2F O - ASPIHOOK.SYS - INSTALLATION CHECK
- AX = C000h
- Return: AL = FFh if multiplex number in use
- ES:DI -> ASCIZ signature "ASPIHOOK" if ASPIHOOK.SYS installed
- Program: ASPIHOOK is a device driver for monitoring SCSI activity through an
- ASPI host manager; it is part of the Personal Measure system
- activity monitor from Spirit of Performance, Inc.
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- SeeAlso: AX=C000h"PMEASURE"
- --------i-2FC000-----------------------------
- INT 2F - PMEASURE.EXE - INSTALLATION CHECK
- AX = C000h
- Return: AL = FFh if multiplex number in use
- ES:DI -> ASCIZ signature "PMEASURE.EXE" if PMEASURE.EXE installed
- Program: PMEASURE.EXE is a TSR for monitoring system hardware activity which
- is part of the Personal Measure system activity monitor from Spirit
- of Performance, Inc.
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- Note: If a Personal Measure Hook Module, such as ASPIHOOK.SYS, is already
- installed, PMEASURE.EXE uses the next highest free multiplex number.
- SeeAlso: AX=C000h"ASPIHOOK",AX=C000h"PERSONAL MEASURE"
- --------i-2FC000-----------------------------
- INT 2F - PERSONAL MEASURE - HOOK MODULE INSTALLATION CHECK
- AX = C000h
- Return: AL = FFh if installed
- ES:DI -> signature string "PMEASUREHOOK"
- AX = C000 if not installed, per mux id conventions
- DH = major release number (binary)
- DL = minor release number (binary)
- Program: The Personal Measure system activity monitor from Spirit of
- Performance, Inc. uses an extensible series of modules to hook
- into various operating system interfaces and monitor system calls.
- Current hook modules are ASPIHOOK.SYS for ASPI device activity
- and CDRHOOK.SYS for non-ASPI CD-ROM activity. All hook modules
- share the same mux id.
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- SeeAlso: AX=C000h"PMEASURE.EXE",AX=C001h"PERSONAL MEASURE"
- --------c-2FC000-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALLATION CHECK
- AX = C000h
- Return: AL = FFh if installed
- SI = signature value 20D6h
- DI = signature value 8761h
- ES:BX -> configuration table (see #03029)
- CX = ??? (0300h)
- DX = ??? (0020h)
- Program: PCACHE is the resident print spooler portion of PrintCache by
- LaserTools; it may use either memory or disk space to spool output
- Range: AH=C0h to AH=FFh, selected by commandline switch
- SeeAlso: AX=0100h/SI=20D6h,AX=C001h"PCACHE"
- Format of PrintCache configuration table:
- Offset Size Description (Table 03029)
- 00h 26 BYTEs ASCIZ signature string "TORQ Configuration Table: "
- 1Ah 2 BYTEs ???
- 1Ch DWORD -> data table (see #03030)
- 20h 4 BYTEs ASCIZ version string ("3.1" for v3.1)
- 24h 5 BYTEs ???
- 29h 12 BYTEs ASCIZ version date string ("Aug 31 1993" for v3.1)
- 35h WORD buffered port type (01h = LPT, 02h = COM)
- 37h WORD buffered port BIOS port number
- 39h 5 BYTEs ASCIZ buffered port name ("LPTn" or "COMn")
- 3Eh WORD physical port type (01h = LPT, 02h = COM)
- 40h WORD physical port BIOS port number
- 42h 5 BYTEs ASCIZ physical port name ("LPTn" or "COMn")
- 47h BYTE port driver IRQ
- 48h 21 BYTEs ???
- 5Dh WORD buffer size in K
- 5Fh 27 BYTEs ???
- 7Ah BYTE popup hotkey shift states (see #00582 at INT 16/AH=02h)
- 7Bh BYTE popup hotkey scan code (see #00006 at INT 09"IRQ1")
- 7Ch 4 BYTEs ???
- 80h 20 BYTEs ASCIZ printer type name
- ???
- Format of PrintCache data table:
- Offset Size Description (Table 03030)
- 00h 2 BYTEs ???
- 02h DWORD -> ??? entry point
- ???
- --------U-2FC000-----------------------------
- INT 2F - Frank Kintrup TSR Utilities - INSTALLATION CHECK
- AX = C000h
- Return: AL = FFh if installed
- BX = program ID (see #03031)
- CX = 464Bh (signature "FK")
- DX = revision number (DH = major, DL = minor)
- ES = resident segment of TSR
- Range: AH=C0h to AH=FFh, selected by searching for a free multiplex number
- SeeAlso: AX=C001h"Kintrup",AX=C002h"Kintrup"
- (Table 03031)
- Values for Frank Kintrup TSR program ID:
- 4153h "AS" ASCII.COM ASCII table with paste function
- 434Ch "CL" CLOCK.COM clock with date/time display and alarm
- 5043h "PC" PCALC.COM programmer's calculator with paste function
- 5343h "SC" SCRSAVE.COM screen saver with mouse support and hotkey
- 5544h "UD" UNDEL.COM undelete program like SMARTCAN or DPROTECT
- --------K-2FC000-----------------------------
- INT 2F U - HP 100LX/200LX - PUSHKEYS - INSTALLATION CHECK
- AX = C000h
- Return: AL = FFh if possibly installed
- Range: AH=C0h to AH=FFh, selected by scanning for signature with AL=AEh
- SeeAlso: AX=C001h"HP 100LX",AX=C0AEh"HP 100LX",AX=C0AFh"HP 100LX"
- --------V-2FC000-----------------------------
- INT 2F - DIMWIT - INSTALLATION CHECK
- AX = C000h
- Return: AL = FFh if installed
- ES:DI -> signature string "DIMDOS" or "DIMWIN"
- Program: DIMWIT is a freeware Windows-aware screen blanker by Larry Board
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- SeeAlso: AX=C000h"AD-DOS",AX=C001h"DIMWIT"
- Index: screen saver;DIMWIT
- --------F-2FC000BX444B-----------------------
- INT 2F - METZ XpressFax Hardware TSR (CLASS2) - INSTALLATION CHECK
- AX = C000h
- BX = 444Bh ('DK')
- CX = 4A4Eh ('AN')
- Return: AL = status
- 00h not installed, OK to install
- FFh installed
- BX = 646Bh ('dk')
- CX = 6A6Eh ('an')
- Range: AH=C0h to AH=FFh, selected automatically
- SeeAlso: AH=C0h"METZ"
- --------V-2FC000-----------------------------
- INT 2F U - TSENGP.COM - INSTALLATION CHECK
- AX = C000h
- Return: AL = status
- 00h not installed, OK to install
- FFh installed
- DS = segment of resident code
- Program: TSENGP.COM is a TSR supplied by Compaq to fix an incompatibility
- between some applications and Tseng ET4000-based video adapters
- Range: AH=C0h to AH=FFh, selected automatically
- Note: the installation check is completed by comparing the first eleven
- bytes at DS:005Fh against the TSR's code (80h FCh 06h 74h 0Ah
- 80h FCh 07h 74h 05h EAh)
- --------N-2FC000-----------------------------
- INT 2F U - LapLink RemoteAccess (LLRA) - INSTALLATION CHECK
- AX = C000h
- Return: AL = FFh if one of the components is installed
- CX:BX -> signature within LLRA component:
- "TSI_LapLinkCore" for LLRA1.EXE
- "TSI_Blackbird" for LLRA2.EXE
- "TSI_Redirector" for LLRA3.EXE
- "TSI_Compression" for LLRA4.EXE
- DL = major version number
- DH = minor version number
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- Note: LapLink components are installed in the order listed above, but not
- necessarily all four; each gets its own multiplex number (default
- C0h-C3h)
- SeeAlso: AX=C002h"LapLink",AX=C205h"LapLink",AX=C2F0h"LapLink"
- SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink",AX=C3F0h"LapLink"
- SeeAlso: AX=C3F1h"LapLink"
- --------M-2FC001-----------------------------
- INT 2F - QMR - REQUEST HARDWARE RESET
- AX = C001h
- Return: ES = QMR code segment
- AL destroyed
- Desc: this function is used to force a full mouse reset when QMR is installed
- SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
- --------V-2FC001-----------------------------
- INT 2F - DIMWIT - GET CONFIGURATION DATA
- AX = C001h
- Return: ES:DI -> TSR configuration data (see #03032)
- Program: DIMWIT is a freeware Windows-aware screen blanker by Larry Board
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- SeeAlso: AX=C000h"DIMWIT",AX=C001h"AD-DOS"
- Index: screen saver;DIMWIT
- Format of DIMWIT TSR configuration data:
- Offset Size Description (Table 03032)
- 00h WORD blanking delay in clock ticks
- 02h BYTE instant-blanking hotkey scan code (see #00006)
- Ctrl and Alt must also be pressed
- --------V-2FC001ES0000-----------------------
- INT 2F - AD-DOS - GET RESIDENT CODE SEGMENT
- AX = C001h
- ES = 0000h
- Return: AL = 00h if successful
- ES = AD-DOS TSR Code Segment
- SeeAlso: AX=C000h"AD-DOS",AX=C001h"DIMWIT"
- Index: screen saver;AD-DOS
- --------c-2FC001-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ENTRY POINTS
- AX = C001h
- Return: AL = FFh if installed
- ES:BX -> ???
- ES:DX -> ???
- ES:SI -> ???
- ES:DI -> ??? (equivalent to AX=C002h)
- SeeAlso: AX=C000h"PCACHE",AX=C002h"PCACHE"
- --------U-2FC001-----------------------------
- INT 2F - Frank Kintrup TSR Utilities - CLOCK - DISABLE DISPLAY UPDATE
- AX = C001h
- Range: AH=C0h to AH=FFh, selected by searching for a free multiplex number
- SeeAlso: AX=C000h"Kintrup",AX=C002h"Kintrup"
- --------K-2FC001CX03FB-----------------------
- INT 2F U - HP 100LX/200LX - PUSHKEYS - INTERNAL - UNINSTALL
- AX = C001h
- CX = 03FBh return address to continue uninstall if possible
- Return: program uninstalled
- Range: AH=C0h to AH=FFh, selected by scanning for signature with AL=AEh
- SeeAlso: AX=C000h"HP 100LX",AX=C0AEh"HP 100LX",AX=C0AFh"HP 100LX"
- --------i-2FC001-----------------------------
- INT 2F - PERSONAL MEASURE - PASS PARAMETERS TO HOOK MODULE(S)
- AX = C001h
- DX = segment of PMEASURE.EXE or 0000h
- BX = offset in PMEASURE.EXE or 0000h
- CX = offset in PMEASURE.EXE or 0000h
- Return: None
- Program: PMEASURE.EXE is a TSR for monitoring system hardware activity which
- is part of the Personal Measure system activity monitor from Spirit
- of Performance, Inc. PMEASURE uses this call to inform its hook
- modules whether or not it is running and to pass information about
- shared data and procedures.
- Warning: This information documents a function that is private to Personal
- Measure and is provided as information only. It should NOT be called
- by any software other than Personal Measure.
- SeeAlso: AX=C000h"PERSONAL MEASURE"
- --------V-2FC002-----------------------------
- INT 2F - AD-DOS - CHECK FOR NEW INPUT
- AX = C002h
- Return: AL = 00h if successful
- BX = status
- 0000h no input since last check
- 0001h new input available
- Note: this call also resets the new-input flag
- SeeAlso: AX=C000h"AD-DOS",AX=C004h
- Index: screen saver;AD-DOS
- --------M-2FC002-----------------------------
- INT 2F - QMR - DISABLE QMR
- AX = C002h
- Return: ES = QMR code segment
- AL destroyed
- Desc: this call temporarily disables QMR
- SeeAlso: AX=C000h"QMR",AX=C003h"QMR"
- --------c-2FC002-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - GET BUFFER SIZE
- AX = C002h
- Return: AX = ??? in K
- BX = size of print buffer in K
- Program: PCACHE is the resident print spooler portion of PrintCache by
- LaserTools; it may use either memory or disk space to spool output
- SeeAlso: AX=C000h"PCACHE"
- --------U-2FC002-----------------------------
- INT 2F - Frank Kintrup TSR Utilities - CLOCK - ENABLE DISPLAY UPDATE
- AX = C002h
- Range: AH=C0h to AH=FFh, selected by searching for a free multiplex number
- SeeAlso: AX=C000h"Kintrup",AX=C002h"Kintrup"
- --------N-2FC002-----------------------------
- INT 2F U - LapLink RemoteAccess (LLRA) - Core - ???
- AX = C002h
- details not yet available
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C2F0h"LapLink"
- SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink"
- --------V-2FC003-----------------------------
- INT 2F - AD-DOS - SET MINUTES TO WAIT
- AX = C003h
- BX = minutes to wait before blanking screen
- Return: AL = 00h if successful
- Program: AD-DOS is the DOS version of the After Dark screen blanker for
- MS Windows
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- Note: this call also resets the delay timer
- SeeAlso: AX=C000h"AD-DOS",AX=C004h
- Index: screen saver;AD-DOS
- --------M-2FC003-----------------------------
- INT 2F - QMR - ENABLE QMR
- AX = C003h
- Return: ES = QMR code segment
- AL destroyed
- Desc: this call enables QMR after it has been disabled
- SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
- --------c-2FC003-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
- AX = C003h
- Return: BX destroyed
- SeeAlso: AX=C004h"PCACHE"
- --------V-2FC004-----------------------------
- INT 2F - AD-DOS - GET MINUTES TO WAIT
- AX = C004h
- Return: AL = 00h if successful
- BX = minutes to wait before blanking screen
- SeeAlso: AX=C000h"AD-DOS",AX=C003h"AD-DOS"
- Index: screen saver;AD-DOS
- --------c-2FC004-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
- AX = C004h
- Return: BX destroyed
- SeeAlso: AX=C003h"PCACHE"
- --------V-2FC005-----------------------------
- INT 2F - AD-DOS - SET BLANKER STATUS
- AX = C005h
- BX = new state (0000h inactive, 0001h active) (default 0001h)
- Return: AL = 00h if successful
- SeeAlso: AX=C006h"AD-DOS"
- Index: screen saver;AD-DOS
- --------c-2FC005-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
- AX = C005h
- ???
- Return: BX destroyed
- ???
- Program: PCACHE is the resident print spooler portion of PrintCache by
- LaserTools; it may use either memory or disk space to spool output
- Range: AH=C0h to AH=FFh, selected by commandline switch
- SeeAlso: AX=C000h"PCACHE"
- --------V-2FC006-----------------------------
- INT 2F - AD-DOS - GET BLANKER STATUS
- AX = C006h
- Return: AL = 00h if successful
- BX = current state of screen blanker (0000h inactive, 0001h active)
- Program: AD-DOS is the DOS version of the After Dark screen blanker for
- MS Windows
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- SeeAlso: AX=C000h"AD-DOS",AX=C005h"AD-DOS"
- Index: screen saver;AD-DOS
- --------c-2FC006-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
- AX = C006h
- ???
- Return: BX destroyed
- ???
- Note: this function appears to be identical to AX=C007h
- SeeAlso: AX=C000h"PCACHE",AX=C007h"PCACHE"
- --------V-2FC007-----------------------------
- INT 2F - AD-DOS - SET HOT KEY
- AX = C007h
- BX = hot key
- CL = hot key shift status
- Return: AL = 00h if successful
- SeeAlso: AX=C008h"AD-DOS"
- Index: screen saver;AD-DOS
- --------c-2FC007-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
- AX = C007h
- ???
- Return: BX destroyed
- ???
- Note: this function appears to be identical to AX=C006h
- SeeAlso: AX=C000h"PCACHE",AX=C006h"PCACHE"
- --------V-2FC008-----------------------------
- INT 2F - AD-DOS - GET CURRENT HOT KEY
- AX = C008h
- Return: AX = status
- 0000h successful
- BX = Hot Key
- CL = Hot Key Shift Status
- 0008h otherwise
- SeeAlso: AX=C000h"AD-DOS",AX=C007h"AD-DOS"
- Index: screen saver;AD-DOS
- --------c-2FC008-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
- AX = C008h
- Return: BX destroyed
- SeeAlso: AX=C000h"PCACHE",AX=C009h"PCACHE"
- --------V-2FC009-----------------------------
- INT 2F - AD-DOS - UNBLANK MONITOR
- AX = C009h
- Return: AL = 00h if successful
- Program: AD-DOS is the DOS version of the After Dark screen blanker for
- MS Windows
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- Note: this function works by simulating keyboard activity
- Index: screen saver;AD-DOS
- --------c-2FC009-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
- AX = C009h
- Return: BX destroyed
- Program: PCACHE is the resident print spooler portion of PrintCache by
- LaserTools; it may use either memory or disk space to spool output
- Range: AH=C0h to AH=FFh, selected by commandline switch
- SeeAlso: AX=C000h"PCACHE",AX=C008h"PCACHE"
- --------V-2FC00A-----------------------------
- INT 2F - AD-DOS - ???
- AX = C00Ah
- Return: AX = status
- 0000h successful
- BH = ??
- BL = ??
- 000Ah failed
- Index: screen saver;AD-DOS
- --------c-2FC00A-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
- AX = C00Ah
- ???
- Return: AH = bit flags
- bit 5: ???
- AL = bit flags
- bit 4: ???
- bit 3: ???
- BX destroyed
- ???
- SeeAlso: AX=C000h"PCACHE"
- --------V-2FC00B-----------------------------
- INT 2F - AD-DOS - ???
- AX = C00Bh
- Return: AX = status
- 0000h successful
- 000Bh failed
- Index: screen saver;AD-DOS
- --------c-2FC00B-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
- AX = C00Bh
- Return: BX destroyed
- SeeAlso: AX=C000h"PCACHE"
- --------V-2FC00C-----------------------------
- INT 2F - AD-DOS - SET ??? INTERNAL FLAG TO 01h
- AX = C00Ch
- Return: AX = status
- 0000h successful
- 000Ch failed
- Program: AD-DOS is the DOS version of the After Dark screen blanker for
- MS Windows
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- Index: screen saver;AD-DOS
- --------c-2FC00C-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
- AX = C00Ch
- Return: AX = ??? (0000h)
- BX = ??? (0000h)
- CX = ??? (0100h)
- DL = ???
- DH = ???
- SeeAlso: AX=C000h"PCACHE"
- --------c-2FC00D-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ???
- AX = C00Dh
- DL = ???
- Return: BX destroyed
- Program: PCACHE is the resident print spooler portion of PrintCache by
- LaserTools; it may use either memory or disk space to spool output
- Range: AH=C0h to AH=FFh, selected by commandline switch
- SeeAlso: AX=C000h"PCACHE"
- --------V-2FC00E-----------------------------
- INT 2F - AD-DOS - SET PASSWORD STATUS
- AX = C00Eh
- BX = new state (0000h disabled, 0001h enabled)
- Return: ???
- SeeAlso: AX=C000h"AD-DOS",AX=C00Fh"AD-DOS"
- Index: screen saver;AD-DOS
- --------c-2FC00E-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALL ???
- AX = C00Eh
- ES:DX -> ???
- Return: BX destroyed
- Note: ES:DX is stored internally if the variable is currently 0000h:0000h,
- but ignored if already set; a counter is incremented
- SeeAlso: AX=C000h"PCACHE",AX=C00Fh"PCACHE"
- --------V-2FC00F-----------------------------
- INT 2F - AD-DOS - GET PASSWORD STATUS
- AX = C00Fh
- Return: BX = current state (0000h disabled, 0001h enabled)
- SeeAlso: AX=C00Eh"AD-DOS"
- Index: screen saver;AD-DOS
- --------c-2FC00F-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - REMOVE ???
- AX = C00Fh
- Return: BX destroyed
- Note: this function decrements the counter used by AX=C00Eh, and clears the
- internal pointer variable to 0000h:0000h when it reaches zero
- SeeAlso: AX=C000h"PCACHE",AX=C00Eh"PCACHE"
- --------c-2FC010-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
- AX = C010h
- CX = index of ??? table (00h-02h, others treated as 00h)
- SI = offset into data table
- Return: AL = byte at specified offset into table
- BX destroyed
- SeeAlso: AX=C000h"PCACHE"
- --------c-2FC011-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
- AX = C011h
- Return: AX = ??? (0007h)
- BX = ??? (0001h)
- CH = ???
- CL = ???
- SeeAlso: AX=C000h"PCACHE"
- --------c-2FC012-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
- AX = C012h
- Return: AX = ???
- BX = ???
- CX = ???
- DX = ???
- SeeAlso: AX=C000h"PCACHE"
- --------c-2FC013-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
- AX = C013h
- ???
- Return: BX destroyed
- ???
- Program: PCACHE is the resident print spooler portion of PrintCache by
- LaserTools; it may use either memory or disk space to spool output
- Range: AH=C0h to AH=FFh, selected by commandline switch
- SeeAlso: AX=C000h"PCACHE"
- --------c-2FC014-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
- AX = C014h
- ???
- Return: BX destroyed
- ???
- SeeAlso: AX=C000h"PCACHE"
- --------c-2FC015-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
- AX = C015h
- ???
- Return: BX destroyed
- ???
- SeeAlso: AX=C000h"PCACHE"
- --------c-2FC016-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - INCREMENT ???
- AX = C016h
- Return: BX destroyed
- SeeAlso: AX=C000h"PCACHE",AX=C017h"PCACHE"
- --------c-2FC017-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - DECREMENT ???
- AX = C017h
- Return: BX destroyed
- SeeAlso: AX=C000h"PCACHE",AX=C016h"PCACH"
- --------c-2FC018-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
- AX = C018h
- ???
- Return: BX destroyed
- ???
- Note: the first instruction of this function is an indirect jump which points
- at a RET by default
- SeeAlso: AX=C000h"PCACHE",AX=C019h"PCACHE"
- --------c-2FC019-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
- AX = C019h
- ???
- Return: BX destroyed
- ???
- Note: the first instruction of this function is an indirect jump which points
- at a RET by default
- SeeAlso: AX=C000h"PCACHE",AX=C018h"PCACHE"
- --------c-2FC01A-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
- AX = C01Ah
- Return: BX destroyed
- SeeAlso: AX=C000h"PCACHE",AX=C01Bh"PCACHE"
- --------c-2FC01B-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
- AX = C01Bh
- Return: BX destroyed
- SeeAlso: AX=C000h"PCACHE",AX=C01Ah"PCACHE"
- --------c-2FC01C-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
- AX = C01Ch
- ???
- Return: AX = ???
- BX destroyed
- SeeAlso: AX=C000h"PCACHE"
- --------c-2FC01D-----------------------------
- INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
- AX = C01Dh to C01Fh
- Return: BX destroyed
- Program: PCACHE is the resident print spooler portion of PrintCache by
- LaserTools; it may use either memory or disk space to spool output
- Range: AH=C0h to AH=FFh, selected by commandline switch
- SeeAlso: AX=C000h"PCACHE"
- --------V-2FC020-----------------------------
- INT 2F - AD-DOS - GET AND RESET VxD API STATUS
- AX = C020h
- Return: AL = 00h if successful
- BX = VxD API Status
- 0000h no error
- 0001h error
- 0100h neither Windows 3.X enhanced mode nor Windows/386 2.x
- is running
- 0200h VM API entry point not found (VxD not installed)
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- Note: this call resets the VxD API Status to zero
- SeeAlso: AX=1602h,AX=1607h"CALL OUT API"
- Index: screen saver;AD-DOS
- --------V-2FC04E-----------------------------
- INT 2F - Explosiv v2.00+ - NON-TSR EXECUTING CHECK
- AX = C04Eh
- Return: AL = 4Fh if Explosiv is running but not memory-resident
- Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
- by H&G Software (Reidar Gresseth and Chris Hook)
- Range: AH=C0h to AH=C9h, selected by configuration
- SeeAlso: AX=C050h
- Index: screen saver;Explosiv
- --------V-2FC050-----------------------------
- INT 2F - Explosiv v2.00+ - INSTALLATION CHECK
- AX = C050h
- Return: AL = 51h if installed
- ---v3.0+ ---
- BX = interval in clock ticks
- CH = animation display color (00h mono, 01h tinge, 02h color)
- CL = animation delay factor
- DH = animation parameters
- DL = INT 10 checking (00h on, 01h off)
- SI = number of bytes available for animation code
- DI = display type (00h VGA, 01h EGA, 02h CGA, 03h HGC, 04h MDA)
- Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
- by H&G Software (Reidar Gresseth and Chris Hook)
- Range: AH=C0h to AH=C9h, selected by configuration
- SeeAlso: AH=93h,AX=C000h"AD-DOS",AX=C04Eh,AX=C052h,AX=C054h"v3"
- SeeAlso: INT 14/AX=AA01h
- Index: screen saver;Explosiv
- --------V-2FC052-----------------------------
- INT 2F - Explosiv v2.00+ - UNINSTALL
- AX = C052h
- DX:BX = address to return to on successful uninstall
- Return: at specified address if successful
- AL = 53h on error
- Note: specified return address must have the segment of the caller's PSP
- SeeAlso: AX=C050h
- Index: screen saver;Explosiv
- --------V-2FC054-----------------------------
- INT 2F - Explosiv v2.x - GET ANIMATION DELAY FACTOR
- AX = C054h
- Return: AL = delay factor
- SeeAlso: AX=C057h
- Index: screen saver;Explosiv
- --------V-2FC054-----------------------------
- INT 2F - Explosiv v3.0+ - UPDATE PARAMETERS
- AX = C054h
- BX = new interval in clock ticks
- CH = animation display color (00h mono, 01h tinge, 02h color)
- CL = animation delay factor
- DH = animation parameters
- DL = INT 10 checking (00h on, 01h off)
- SeeAlso: AX=C050h
- Index: screen saver;Explosiv
- --------V-2FC055-----------------------------
- INT 2F - Explosiv v2.x - SET BLANKING INTERVAL
- AX = C055h
- BX = new interval in clock ticks
- Index: screen saver;Explosiv
- --------V-2FC056-----------------------------
- INT 2F - Explosiv v2.x - SET ANIMATION DISPLAY TYPE
- AX = C056h
- BL = animated display type (00h mono, 01h color)
- SeeAlso: AX=C058h"v2.x"
- Index: screen saver;Explosiv
- --------V-2FC056-----------------------------
- INT 2F - Explosiv v3.0+ - ENABLE/DISABLE EXPLOSIV
- AX = C056h
- BX = new state
- 0000h disabled
- 0100h enabled
- 0101h enabled, but never blank
- 0102h enabled, always blank
- --------V-2FC057-----------------------------
- INT 2F - Explosiv v2.x - SET ANIMATION DELAY FACTOR
- AX = C057h
- BL = delay factor
- SeeAlso: AX=C054h"v2.x"
- Index: screen saver;Explosiv
- --------V-2FC058-----------------------------
- INT 2F - Explosiv v2.x - SET ANIMATION PARAMETER
- AX = C058h
- BL = animation parameter
- Note: the animation parameter has different interpretations for each display
- SeeAlso: AX=C056h"v2.x"
- Index: screen saver;Explosiv
- --------V-2FC058-----------------------------
- INT 2F - Explosiv v3.0+ - LOAD NEW ANIMATION DISPLAY CODE
- AX = C058h
- BX = file handle for file containing display code
- CX = number of bytes to load
- DX = offset at which animation code should be loaded
- Return: AL = status (see #03033)
- Note: if AL=00h-03h on return, the file will be closed
- Index: screen saver;Explosiv
- (Table 03033)
- Values for Explosiv function status:
- 00h successful
- 01h code too large to available space
- 02h no data read, load aborted
- 03h incomplete load, default blanking display loaded instead
- 58h unexpected offset in DX
- --------V-2FC059-----------------------------
- INT 2F - Explosiv v2.x - DISABLE EXPLOSIV
- AX = C059h
- Note: clears flag set by AX=C05Ah
- SeeAlso: AX=C05Ah
- Index: screen saver;Explosiv
- --------V-2FC05A-----------------------------
- INT 2F u - Explosiv v2.x - ENABLE EXPLOSIV
- AX = C05Ah
- BL = ???
- Note: sets flag cleared by AX=C059h then stores BL
- SeeAlso: AX=C059h,AX=C05Bh
- Index: screen saver;Explosiv
- --------V-2FC05B-----------------------------
- INT 2F - Explosiv v2.x - CHANGE ANIMATION DISPLAY
- AX = C05Bh
- BL = animation display
- Note: this function fails silently if the requested display is not in memory
- SeeAlso: AX=C05Ah,AX=C05Ch
- Index: screen saver;Explosiv
- --------V-2FC05C-----------------------------
- INT 2F - Explosiv v2.x - SET INT 10 CHECKING
- AX = C05Ch
- BL = new state of INT 10 checking (00h enabled, 01h disabled)
- SeeAlso: AX=C05Bh
- Index: screen saver;Explosiv
- --------v-2FC080-----------------------------
- INT 2F U - AMI IAM.SYS - INSTALL ??? CALLBACK
- AX = C080h
- CX:DX -> ??? callback
- DI = segment of ??? buffer (first WORD copied into IAM.SYS)
- Program: IAM.SYS is the Illegal Activity Monitor portion of American
- Megatrends, Inc.'s PC-Defender anti-virus product
- Note: also sets ??? flag
- SeeAlso: AX=C081h
- Format of IAM.SYS buffer:
- Offset Size Description (Table 03034)
- 00h BYTE ???
- 01h BYTE ???
- 02h N BYTEs ??? (ASCIZ strings)
- --------v-2FC081-----------------------------
- INT 2F U - AMI IAM.SYS - CLEAR ???
- AX = C081h
- Desc: clears the ??? flag that AX=C080h sets
- SeeAlso: AX=C080h
- --------K-2FC0AE-----------------------------
- INT 2F U - HP 100LX/200LX - PUSHKEYS - INSTALLATION CHECK
- AX = C0AEh
- Return: AX = 4453h if installed
- CX = 5259h if installed
- Range: AH=C0h to AH=FFh, selected by scanning for signature
- SeeAlso: AX=C000h"HP 100LX",AX=C001h"HP 100LX",AX=C0AFh"HP 100LX"
- --------K-2FC0AF-----------------------------
- INT 2F U - HP 100LX/200LX - PUSHKEYS - INTERNAL - GET BUFFER ADDRESS
- AX = C0AFh
- Return: ES:DI -> buffer (behind code)
- Range: AH=C0h to AH=FFh, selected by scanning for signature with AL=AEh
- SeeAlso: AX=C000h"HP 100LX",AX=C001h"HP 100LX",AX=C0AEh"HP 100LX"
- --------N-2FC100-----------------------------
- INT 2F U - Personal NetWare - STPIPX v1.00 - INSTALLATION CHECK
- AX = C100h
- Return: AL = FFh if installed
- ES:SI -> signature string "STP-IPX$"
- BX = version??? (0001h for v1.00)
- DI corrupted
- Note: AH=C1h is the default value; STPIPX probably scans a range of
- multiplex numbers to find a free one, as LSL does
- SeeAlso: AX=C000h"LSL",AX=C101h
- --------N-2FC101-----------------------------
- INT 2F U - Personal NetWare - STPIPX v1.00 - UNINSTALL
- AX = C101h
- Return: AL = status???
- BX corrupted
- SeeAlso: AX=C101h
- --------N-2FC205-----------------------------
- INT 2F U - LapLink RemoteAccess (LLRA) - Redirector - ???
- AX = C205h
- details not yet available
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C2F0h"LapLink"
- SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink"
- --------N-2FC2F0-----------------------------
- INT 2F U - LapLink RemoteAccess (LLRA) - Redirector - ???
- AX = C2F0h
- details not yet available
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
- SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink"
- --------N-2FC2F1-----------------------------
- INT 2F U - LapLink RemoteAccess (LLRA) - Redirector - ???
- AX = C2F1h
- details not yet available
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
- SeeAlso: AX=C2F0h"LapLink",AX=C301h"LapLink"
- --------d-2FC300-----------------------------
- INT 2F - SETWPR.COM - INSTALLATION CHECK
- AX = C300h
- Return: AL = FFh if installed
- Program: SETWPR is a hard-disk write-protection TSR by Jaroslaw Rafa
- SeeAlso: AX=C302h"SETWPR"
- --------k-2FC300DX0000-----------------------
- INT 2F U - SpaceManager - INSTALLATION CHECK
- AX = C300h
- DX = 0000h
- Return: AL = FFh if any SpaceManager programs installed
- BX = 6F73h
- CX = 6F68h
- Program: SpaceManager is an enhancement for MS-DOS DoubleSpace by Vertisoft
- Systems, Inc.
- Range: AH=C3h to AH=FFh, selected by scanning for first free multiplex number
- SeeAlso: AX=C300h/BX=4F53h
- --------k-2FC300BX4F53-----------------------
- INT 2F U - SpaceManager - INSTALLATION VERIFICATION
- AX = C300h
- BX = 4F53h ('OS')
- CX = 4F48h ('OH')
- DX = program identifier (see #03035) or 0666h for any SpaceManager prog
- Return: AL = FFh if BX/CX as specified and specified program installed
- BX = 6F73h ('os')
- CX = 6F68h ('oh')
- Range: AH=C3h to AH=FFh, selected by scanning for first free multiplex number
- Note: this call is chained if BX,CX, or DX are not as specified above
- SeeAlso: AX=C300h/DX=0000h
- (Table 03035)
- Values for SpaceManager program identifier:
- 9000h SMOUNT (SuperMount)
- 9001h SELECTC (SelectCompress)
- 9002h SUPERX (SuperExchange)
- 9003h FORTUNE (FortuneTeller)
- --------k-2FC301-----------------------------
- INT 2F U - SpaceManager - ???
- AX = C301h
- DX = program identifier (9000h,9001h,9003h) (see #03035)
- ???
- Return: ???
- --------N-2FC301-----------------------------
- INT 2F U - LapLink RemoteAccess (LLRA) - Compression - ???
- AX = C301h
- details not yet available
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
- SeeAlso: AX=C2F0h"LapLink",AX=C3F0h"LapLink",AX=C3F1h"LapLink"
- --------k-2FC302-----------------------------
- INT 2F U - SpaceManager - ENABLE PROGRAM
- AX = C302h
- DX = program identifier (9000h,9001h,9003h) (see #03035)
- Return: AX destroyed
- SeeAlso: AX=C303h,AX=C306h
- --------d-2FC302-----------------------------
- INT 2F - SETWPR.COM - SET WRITE-PROTECTION STATE
- AX = C302h
- BL = new state
- 00h disk may be written
- 01h disk write-protected
- Return: AL = FFh if installed
- Program: SETWPR is a hard-disk write-protection TSR by Jaroslaw Rafa
- SeeAlso: AX=C300h"SETWPR"
- --------k-2FC303-----------------------------
- INT 2F U - SpaceManager - DISABLE PROGRAM
- AX = C303h
- DX = program identifier (9000h,9001h,9003h) (see #03035)
- Return: AX destroyed
- SeeAlso: AX=C302h,AX=C306h
- --------k-2FC304-----------------------------
- INT 2F U - SpaceManager - GET PER-DRIVE ENABLEMENT TABLE
- AX = C304h
- DX = program identifier (9000h,9001h,9003h) (see #03035)
- Return: ES:BX -> 26-byte drive table (00h disabled for drive, 01h enabled)
- AX destroyed
- --------k-2FC305DX9003-----------------------
- INT 2F U - SpaceManager - FORTUNE.EXE - NOP
- AX = C305h
- DX = 9003h
- Return: AX destroyed
- --------k-2FC305-----------------------------
- INT 2F U - SpaceManager - ???
- AX = C305h
- DX = program identifier (9000h,9001h) (see #03035)
- ???
- Return: ???
- --------k-2FC306-----------------------------
- INT 2F U - SpaceManager - CHECK WHETHER PROGRAM ENABLED
- AX = C306h
- DX = program identifier (9000h,9001h,9003h) (see #03035)
- Return: AL = current state (00h disabled, FAh enabled)
- AH destroyed
- SeeAlso: AX=C302h,AX=C303h
- --------k-2FC307DX9001-----------------------
- INT 2F U - SpaceManager - SELECTC - ???
- AX = C307h
- DX = 9001h
- BX = ???
- CX = ???
- ???
- Return: ???
- --------k-2FC308DX9001-----------------------
- INT 2F U - SpaceManager - SELECTC - ???
- AX = C308h
- DX = 9001h
- ???
- Return: ???
- --------N-2FC3F0-----------------------------
- INT 2F U - LapLink RemoteAccess (LLRA) - Compression - ???
- AX = C3F0h
- details not yet available
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
- SeeAlso: AX=C2F0h"LapLink",AX=C301h"LapLink",AX=C3F1h"LapLink"
- --------N-2FC3F1-----------------------------
- INT 2F U - LapLink RemoteAccess (LLRA) - Compression - ???
- AX = C3F1h
- details not yet available
- Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
- SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
- SeeAlso: AX=C2F0h"LapLink",AX=C301h"LapLink",AX=C3F0h"LapLink"
- --------N-2FC500-----------------------------
- INT 2F - PC-DOS Econet v1.05 - INSTALLATION CHECK
- AX = C500h
- Return: AL = status
- 00h not installed, OK to install
- 01h not installed, can't install
- FFh installed
- Note: the interrupt-enable state will be preserved, but interrupts may be
- enabled during processing of this function
- SeeAlso: AX=C501h,AX=C508h
- --------N-2FC501-----------------------------
- INT 2F - PC-DOS Econet v1.05 - RESET BOARD AND DRIVER
- AX = C501h
- Return: AX = return code (see #03037)
- Desc: reset both the network board and the driver software
- Notes: use this function with caution, as it will affect any other resident
- software using the network board
- the interrupt-enable state will be preserved, but interrupts may be
- enabled during processing of this function
- SeeAlso: AX=C500h
- --------N-2FC502-----------------------------
- INT 2F - PC-DOS Econet v1.05 - PERFORM NETWORK OPERATION
- AX = C502h
- DS:DX -> control block (see #03036)
- Return: AX = return code (see #03037) (same as returned in control block)
- Note: the interrupt-enable state will be preserved, but interrupts may be
- enabled during processing of this function
- SeeAlso: AX=C500h
- Format of Econet control block:
- Offset Size Description (Table 03036)
- 00h DWORD -> command block (see #03038)
- 04h WORD length of transmit data block
- 06h DWORD -> transmit data block
- 0Ah WORD length of reply block (set to 0000h prior to call)
- 0Ch DWORD -> reply block
- 10h WORD return code (set to 0000h prior to call) (see #03037)
- 12h DWORD reserved for Econet use
- (Table 03037)
- Values for Econet return code:
- 0000h successful
- 0001h bad command in command block
- 0002h no handles left
- 0003h bad handle
- 0004h bad argument in command
- 0005h buffer too small
- 0006h kill condition failed
- 0007h control block in use
- 007Fh command aborted
- 01xxh retryable board error XXh
- 02xxh fatal board error XXh
- 0300h invalid subfunction number in AL
- 0301h timeout
- 03xxh other driver errors
- SeeAlso: #03036
- Format of Econet command block:
- Offset Size Description (Table 03038)
- 00h BYTE command code (see #03039)
- ---command 00h---
- 01h BYTE direction (00h = read initialization data, 01h = set init data)
- 02h WORD "TxCB" transmit control block size
- 04h WORD "RxCB" receive control block size
- Notes: TxCB and RxCB are always the same size in v1.05,
- permitting any CB to be used for either receive
- or transmit
- this command should not be used by applications to
- set the buffer sizes
- 06h 6 BYTEs padding (0)
- ---command 01h---
- 01h BYTE port number (00h = receive on all ports)
- if the RxCB is opened for RPC, the port number indicates the
- allowable RPC (see #03040)
- 02h WORD station number (FEFFh = broadcast)
- 04h BYTE RPC flags
- bit 7: CB is open for RPCs only
- bit 6: restrict to RPC number given in next field
- 05h WORD RPC number
- 07h BYTE timeout in 1/2-second units (00h = never)
- if a timeout occurs, the RxCB can still receive data, and may
- generate another event after the timeout unless it is
- explicitly killed
- 08h 4 BYTEs padding (0)
- ---command 02h---
- 01h BYTE control byte
- 02h BYTE port number
- 03h WORD station number
- 05h BYTE number of retries
- 06h WORD length of data to be sent (bits 14-0), 0000h allowed
- if bit 15 is set, no data will be transferred, but this field
- will be updated (needed for peeking)
- 08h DWORD -> destination address on remote machine
- ---command 03h---
- 01h BYTE Control Block Handle
- FEh first filled-in RxCB
- FFh first TxCB which has been sent
- 02h 10 BYTEs padding (0)
- ---command 04h---
- 01h BYTE Control Block Handle
- 02h BYTE kill condition
- 00h always
- 01h kill only if bit7 of control byte is clear
- 81h kill only if bit7 of control byte is set
- 03h 9 BYTEs padding (0)
- Notes: control blocks are not freed until explicitly killed
- because all TxCBs for a given destination are stored
- on a separate subchain, it is necessary to kill all
- failed TxCBs to a given destination before any new
- ones are opened to that destination
- ---command 06h---
- 01h BYTE Control Block Handle
- 02h WORD starting byte within CB to read
- 04h WORD number of bytes
- if 0000h or greater than remaining bytes in CB, return all
- bytes from starting byte to end of CB
- 06h 6 BYTEs padding (0)
- ---command 07h---
- 01h BYTE subfunction
- 00h-0Fh get/set M/C type (bit N=1 indicates to set byte N)
- four data bytes
- 10h get station number
- 11h set station number
- 12h get Tx pause in 5ms units (default 20)
- 13h set Tx pause
- 14h get software version numbers
- 16h get event enable mask
- 17h set event enable mask
- 18h get number of non-volatile bytes available
- 80h+2N get non-volatile byte N
- 81h+2N set non-volatile byte N
- 02h var new data
- Note: all command blocks should be padded to twelve bytes with zeros if
- needed
- SeeAlso: #03036
- (Table 03039)
- Values for Econet command code:
- 00h initialize
- 01h open receive
- 02h open transmit
- 03h poll
- 04h kill
- 06h read
- 07h get/set system parameters
- SeeAlso: #03038
- (Table 03040)
- Values for Econet RPC type:
- 00h all
- 81h peek
- 82h poke
- 83h remote JSR
- 84h remote procedure call
- 85h OS procedure
- 86h Halt
- 87h Continue
- SeeAlso: #03038
- Format of Econet Reply Block (command 00h):
- Offset Size Description (Table 03041)
- 00h WORD TxCB size (default is 0500h, the maximum Econet packet length)
- 02h WORD RxCB size
- 04h BYTE number of TxCBs allocated
- 05h BYTE number of RxCBs allocated
- SeeAlso: #03036,#03042,#03044
- Format of Econet Reply Block (commands 01h,02h):
- Offset Size Description (Table 03042)
- 00h BYTE control block handle
- SeeAlso: #03036,#03041,#03045
- Format of Econet Reply Block (command 03h):
- Offset Size Description (Table 03043)
- 00h BYTE CB number (when wildcard specified for poll)
- 01h BYTE control
- (RxCB) 00h until received, then Sent Control byte
- (TxCB) transmit status
- bit 7: transmission pending
- bit 6: transmission failed
- bits 3-0: error number
- 02h BYTE Port number
- 03h WORD station number
- 05h WORD length
- 07h WORD 0000h
- SeeAlso: #03036,#03041,#03044
- Format of Econet Reply Block (command 06h):
- Offset Size Description (Table 03044)
- 00h N BYTEs data read from network
- SeeAlso: #03036,#03043,#03045
- Format of Econet Reply Block (command 07h):
- Offset Size Description (Table 03045)
- 00h N BYTEs returned information
- SeeAlso: #03036,#03044
- --------N-2FC503-----------------------------
- INT 2F - PC-DOS Econet v1.05 - ADD EVENT HANDLER
- AX = C503h
- DS:DX -> event handler (see #03046)
- Return: AX = return code (see #03037)
- Note: the interrupt-enable state will be preserved, but interrupts may be
- enabled during processing of this function
- SeeAlso: AX=C500h,AX=C504h,AX=C505h,AX=C508h
- Format of Econet event handler:
- Offset Size Description (Table 03046)
- 00h DWORD -> next handler's code (at offset 8, filled in by Econet)
- 04h DWORD -> previous event handler (filled in by Econet)
- 08h var entry point (executable code called on event) (see #03047)
- (Table 03047)
- Values Econet event handler is called with:
- AL = event number
- AH = timeout flag (01h if timeout, else 00h)
- Return: all registers preserved
- if event trapped by this handler, issue RETF
- if event not trapped, jump to address stored at offset 0
- SeeAlso: #03046
- --------N-2FC504-----------------------------
- INT 2F - PC-DOS Econet v1.05 - REMOVE EVENT HANDLER
- AX = C504h
- DS:DX -> event handler
- Return: AX = return code (see #03037)
- Note: the interrupt-enable state will be preserved, but interrupts may be
- enabled during processing of this function
- SeeAlso: AX=C500h,AX=C503h,AX=C506h,AX=C508h
- --------N-2FC505-----------------------------
- INT 2F - PC-DOS Econet v1.05 - SET DEFAULT EVENT ACTION
- AX = C505h
- DL = new default action
- 00h disable event handling (ignore incoming events)
- 01h enable (call event handler chain)
- 02h store until enabled or disabled (default)
- Return: AX = return code (see #03037)
- Note: the interrupt-enable state will be preserved, but interrupts may be
- enabled during processing of this function
- SeeAlso: AX=C500h,AX=C503h,AX=C506h,AX=C508h
- --------N-2FC506-----------------------------
- INT 2F - PC-DOS Econet v1.05 - SET INDIVIDUAL EVENT ACTION
- AX = C506h
- DH = event number
- DL = new default action
- 00h disable event handling (ignore incoming events)
- 01h enable (call event handler chain)
- 02h store until enabled or disabled (default)
- Return: AX = return code (see #03037)
- Note: the interrupt-enable state will be preserved, but interrupts may be
- enabled during processing of this function
- SeeAlso: AX=C500h,AX=C504h,AX=C505h,AX=C507h
- --------N-2FC507-----------------------------
- INT 2F - PC-DOS Econet v1.05 - TEST/CLEAR EVENT STATUS
- AX = C507h
- DH = event number (FFh = first event in queue)
- DL = disposition (00h test only, 01h test and clear)
- Return: AX = return code (see #03037)
- DH = event number if one is pending, 00h if none
- Note: the interrupt-enable state will be preserved, but interrupts may be
- enabled during processing of this function
- SeeAlso: AX=C500h,AX=C503h,AX=C506h,AX=C508h
- --------N-2FC508-----------------------------
- INT 2F - PC-DOS Econet v1.05 - ENABLE/DISABLE EVENT SCHEDULER
- AX = C508h
- DL = new state of scheduler (01h enabled, 02h disabled)
- Return: AX = return code (see #03037)
- DL = previous state
- Notes: the interrupt-enable state will be preserved, but interrupts may be
- enabled during processing of this function
- while the scheduler is disabled, all events are queued until the
- scheduler is re-enabled
- SeeAlso: AX=C500h,AX=C503h,AX=C504h,AX=C506h,AX=C507h
- --------d-2FC64CBX5553-----------------------
- INT 2F U - Smart Prompt - INSTALLATION CHECK
- AX = C64Ch
- BX = 5553h
- Return: AX = 4CC6h if installed
- BX = 5355h if installed
- Program: Smart Prompt (SMARTPMT) is a freeware TSR by Steve Gibson which
- forces an immediate flush of SmartDrive's (and compatible caches')
- buffers on returning to the DOS prompt
- --------V-2FC700CX434C-----------------------
- INT 2F u - COLAP - INSTALLATION CHECK
- AX = C700h
- CX = 434Ch "CL"
- Return: AL = FFh if installed
- Program: colap.com is a freeware TSR by Eric Meyer which controls contrast
- and brightness of color laptops by changing the VGA palette colors;
- for Toshiba laptops there are more hotkeys for shutting off display
- and harddisk.
- --------v-2FC900BP0000-----------------------
- INT 2F U - ThunderByte??? - INSTALLATION CHECK
- AX = C900h
- BP = 0000h
- Return: AL = FFh if installed
- BP >= 0014h
- Note: called by TBSCANX
- SeeAlso: AX=C987h,AX=CA00h
- --------v-2FC987-----------------------------
- INT 2F U - ThunderByte??? - DISINFECT FILE???
- AX = C987h
- BX:DX -> filename
- BX:CX -> virus name
- Return: AX = status
- 0000h successful???
- Note: called by TBSCANX
- SeeAlso: AX=CA00h
- --------v-2FC9FD-----------------------------
- INT 2F - ThunderByte TBLOG - WRITE STRING TO LOG
- AX = C9FDh
- DS:SI -> ASCIZ string (max 110 chars)
- Return: AH = 00h
- AL = last character in string
- CX = number of unused characters in string
- SI,DI destroyed
- Notes: The string can also be terminated with a '%'-character.
- This function is never called within ThunderBYTE Anti-Virus.
- SeeAlso: AX=C900h
- --------r-2FC9FF-----------------------------
- INT 2F C - StackMan - INSTALLATION BROADCAST
- AX = C9FFh
- BL = BCD version number
- CX = number of stacks
- DX = stack size in bytes
- Program: StackMan is a freeware stack manager by Franz Veldman of ESaSS B.V.
- which functions as a replacement for the DOS STACK= command as well
- as permitting multiple TSRs to share a pool of stack space
- InstallCheck: test for the string "STACKXXX" at offset 0Ah from the INT B4
- handler
- Note: called by StackMan when it goes resident to inform interested TSRs that
- its API is available
- SeeAlso: INT B4"StackMan",INT B5"StackMan"
- Index: installation check;STACKMAN|broadcasts;STACKMAN installation
- --------F-2FCA-------------------------------
- INT 2F - FAXPLUS - FAX TSR
- AH = CAh
- ???
- Return: ???
- Program: FAXTSR is a resident FAX send/receive module for FAXPLUS by Frans
- Veldman
- SeeAlso: AH=2Ah"Gammafax"
- --------v-2FCA00BX5442-----------------------
- INT 2F - TBSCANX - INSTALLATION CHECK
- AX = CA00h
- BX = 5442h ('TB')
- Return: AL = state
- 00h not installed
- FFh installed
- BX = 7462h ('tb') if BX was 5442h on entry
- Program: TBSCANX is a resident virus scanning module by Frans Veldman.
- Notes: programs may perform virus checks on themselves, other program files,
- or their data files by invoking the TBSCANX API.
- current versions of TBScanX don't actually check the value of BX
- SeeAlso: AX=4653h/CX=0002h,AX=4653h/CX=0007h,AX=C900h
- --------v-2FCA01-----------------------------
- INT 2F - TBSCANX - GET STATUS
- AX = CA01h
- Return: AH = BCD version number (v2.2+)
- CAh for versions before 2.2
- AL = state (00h = disabled, 01h = enabled)
- CX = number of signatures which will be searched
- ---v2.0---
- BX = EMS handle, 0000h if not using EMS
- ---v2.3+---
- BX = segment of swap area, 0000h if not swapped
- DX = EMS or XMS handle (XMS handle if BX=0000h), FFFFh if not using EMS
- SeeAlso: AX=CA02h
- --------v-2FCA02-----------------------------
- INT 2F - TBSCANX - SET STATE
- AX = CA02h
- BL = new state (00h = disabled, 01h = enabled)
- SeeAlso: AX=CA01h
- --------v-2FCA03-----------------------------
- INT 2F - TBSCANX - SCAN BUFFER
- AX = CA03h
- CX = size of buffer
- DS:DX -> buffer containing data to scan
- Return: CF clear if no virus signatures found
- BX,ES destroyed
- CF set if signature found
- ES:BX -> ASCIZ virus name (v2.3+)
- DS:DX -> ASCIZ virus name (v2.0)
- AX,CX,DX destroyed (v2.3+)
- all other registers except CS:IP and SS:SP destroyed (v2.0)
- SeeAlso: AX=CA04h
- --------v-2FCA04-----------------------------
- INT 2F - TBSCANX - SCAN FILE
- AX = CA04h
- DS:DX -> filename
- Return: CF clear if no virus signatures found
- BX,SI,DI,ES destroyed
- CF set if signature found
- ES:BX -> ASCIZ virus name
- AX,CX,DX destroyed
- Note: this function requires at least 4K free memory
- SeeAlso: AX=CA03h
- --------U-2FCAFEBX0000-----------------------
- INT 2F U - THELP v3.0 - INSTALLATION CHECK
- AX = CAFEh
- BX = 0000h
- Return: BX = segment of resident code if installed
- 0000h if not installed
- SeeAlso: AX=5453h,INT 2D"AMIS"
- --------F-2FCB00-----------------------------
- INT 2F - Communicating Applications Specification - INSTALLATION CHECK
- AX = CB00h
- Return: AL = status
- 00h not installed, OK to install
- 01h not installed, not OK to install
- FFh installed
- Note: AH = CBh is the default identifier, but may be reconfigured
- SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=CB0Eh,AX=CBDCh
- --------F-2FCB00BX4D53-----------------------
- INT 2F - METZ XpressFax CASMGR - INSTALLATION CHECK
- AX = CB00h
- BX = 4D53h ('MS')
- CX = 4949h ('II')
- Return: AL = status
- 00h not installed, OK to install
- 01h not installed, not OK to install
- FFh installed
- BX = 6D73h ('ms')
- CX = 6969h ('ii')
- Note: this function is equivalent to the standard CASMGR installation check,
- but uses the additional magic values to identify which CAS is
- installed
- SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=C000h/BX=444Bh,AX=CB0Eh,AX=CB16h
- --------F-2FCB01-----------------------------
- INT 2F - Communicating Applications Specification - SUBMIT A TASK
- AX = CB01h
- DS:DX -> ASCIZ name of task control file
- Return: AX >= 0: event handle
- AX < 0: two's complement of error code (see #03048)
- Note: files needed for an event must be kept until task is complete or error
- SeeAlso: AX=CB0Bh,AX=CB15h
- (Table 03048)
- Values for CAS error code:
- (AH = class, AL = subcode, value passed back is 2's complement)
- Class 00h --- FAX warnings
- Subcode 00h no error
- 02h bad scanline count
- 03h page sent with errors, could not retransmit
- 04h received data lost
- 05h invalid or missing logo file
- 06h filename does not match nonstandard format (NSF) header
- 07h file size does not match NSF header
- Class 01h --- DOS warnings (data was sent)
- Subcode 01h invalid function
- 05h access denied
- 06h invalid handle
- others see #01680 at INT 21/AH=59h/BX=0000h
- Class 02h --- fatal errors (data not sent)
- Subcode 00h multiplex handler failed
- 01h unknown command
- 02h bad event handle
- 03h FIND NEXT attempted before FIND FIRST
- 04h no more events
- 07h invalid queue type
- 08h bad control file
- 09h communication board busy
- 0Ah invalid command parameter
- 0Bh can't uninstall resident code
- 0Ch file exists
- 80h unknown task type
- 81h bad phone number
- 82h bad .PCX file header
- 83h unexpected EOF
- 84h unexpected disconnect
- 85h too many dialing retries
- 86h no file specified for send
- 87h communication board timeout
- 88h received too many pages (>1023) of data
- 89h manual connect initiated too long ago
- 8Ah hardware command set error
- 8Bh bad NonStandard Format (NSF) header file
- Class 03h --- fatal DOS errors
- Subcode 02h file not found
- 03h path not found
- others see #01680 at INT 21/AH=59h/BX=0000h
- Class 04h --- FAX errors
- Subcode 01h remote unit not Group 3 compatible
- 02h remote unit did not send capabilities
- 03h other FAX machine incompatible
- 04h other FAX incapable of file transfers
- 05h exceeded retrain or FAX resend limit
- 06h line noise or failure to agree on bit rate
- 07h remote disconnected after receiving data
- 08h no response from remote after sending data
- 09h remote's capabilities incompatible
- 0Ah no dial tone (v1.2+)
- 0Bh invalid response from remote unit after sending data
- 0Dh phone line dead or remote unit disconnected
- 0Eh timeout while waiting for secondary dial tone (v1.2+)
- 11h invalid command from remote after receiving data
- 15h tried to receive from incompatible hardware
- 5Ch received data overflowed input buffer
- 5Dh remote unexpectedly stopped sending data
- 5Eh other FAX machine jammed (no data sent)
- 5Fh remote took too long to send fax scan line
- 63h can't get through to remote unit
- 64h user canceled event
- Class 05h --- application-specific (v1.2+)
- ---Intel FAXPOP.EXE
- Subcode 00h tried to send while in graphics mode
- 01h insufficient disk space
- 02h internal buffer overflow
- Class 06h --- CAS implementation-specific (v1.2+)
- --------F-2FCB02-----------------------------
- INT 2F - Communicating Applications Specification - ABORT CURRENT EVENT
- AX = CB02h
- Return: AX >= 0: event handle of aborted event
- AX < 0: error code (see #03048)
- Note: termination could take up to 30 seconds
- SeeAlso: AX=CB08h,AX=CB10h
- --------F-2FCB05-----------------------------
- INT 2F - Communicating Applications Specification - FIND FIRST QUEUE ENTRY
- AX = CB05h
- CX = status of events to find
- 0000h successful completion
- 0001h waiting to be processed
- 0002h number has been dialed
- 0003h connection established, sending
- 0004h connection established, receiving
- 0005h event aborted
- FFFFh find any event, regardless of status
- other negative values, match error code
- DH = direction
- 00h chronological order, earliest to latest
- 01h reverse chronological order, latest to earliest
- DL = queue to search
- 00h task queue
- 01h receive queue
- 02h log queue
- Return: AX = 0000h successful
- BX = event handle for found event
- AX < 0 error code (see #03048)
- SeeAlso: AX=CB06h,AX=CB07h
- --------F-2FCB06-----------------------------
- INT 2F - Communicating Applications Specification - FIND NEXT QUEUE ENTRY
- AX = CB06h
- DL = queue to search
- 00h task queue
- 01h receive queue
- 02h log queue
- Return: AX = 0000h successful
- BX = event handle for found event
- AX < 0 error code (see #03048)
- Note: direction of search is same as preceding FIND FIRST call
- SeeAlso: AX=CB05h
- --------F-2FCB07-----------------------------
- INT 2F - Communicating Applications Specification - OPEN FILE
- AX = CB07h
- BX = event handle from find (AL=05h,06h) or submit task (AL=01h)
- CX = receive file number (ignored for task queue and log queue)
- 0000h open receive control file
- N open Nth received data file
- DL = queue
- 00h task queue
- 01h receive queue control file or received file, as given by CX
- 02h log queue
- 03h group file in task queue (v1.2+)
- 04h group file in log queue (v1.2+)
- Return: AX = 0000h successful
- BX = DOS file handle for requested file
- AX < 0 error code (see #03048)
- Note: the returned file handle has been opened in read-only mode and should
- be closed with INT 21/AH=3Eh after use
- SeeAlso: AX=CB01h,AX=CB05h,AX=CB14h
- --------F-2FCB08-----------------------------
- INT 2F - Communicating Applications Specification - DELETE FILE
- AX = CB08h
- BX = event handle
- CX = receive file number
- 0000h delete ALL received files and receive control file
- N delete Nth received file
- DL = queue
- 00h delete control file in task queue and corresponding group file
- if it exists
- 01h delete file in receive queue, as given by CX
- 02h delete control file in log queue (individual deletions not
- recommended, to maintain integrity of log) and corresponding
- group file if it exists
- Return: AX = 0000h successful
- AX < 0 error code (see #03048)
- SeeAlso: AX=CB02h,AX=CB09h
- --------F-2FCB09-----------------------------
- INT 2F - Communicating Applications Specification - DELETE ALL FILES IN Q
- AX = CB09h
- DL = queue
- 00h delete all control files in task queue, including all group
- files
- 01h delete all files in receive queue
- 02h delete all control files in log queue, including all group
- files
- Return: AX = 0000h successful
- AX < 0 error code (see #03048)
- SeeAlso: AX=CB08h
- --------F-2FCB0A-----------------------------
- INT 2F - Communicating Applications Specification - GET EVENT DATE
- AX = CB0Ah
- BX = event handle
- DL = queue
- 00h task queue
- 01h receive queue
- 02h log queue
- Return: AX = 0000h successful
- CX = year
- DH = month
- DL = day
- AX < 0 error code (see #03048)
- SeeAlso: AX=CB0Bh,AX=CB0Ch
- --------F-2FCB0B-----------------------------
- INT 2F - Communicating Applications Specification - SET TASK DATE
- AX = CB0Bh
- BX = event handle (task event only)
- CX = year
- DH = month
- DL = day
- Return: AX = 0000h successful
- AX < 0 error code (see #03048)
- Note: setting a task's date and time to before the current date and time
- causes it to execute immediately
- SeeAlso: AX=CB01h,AX=CB0Ah,AX=CB0Dh
- --------F-2FCB0C-----------------------------
- INT 2F - Communicating Applications Specification - GET EVENT TIME
- AX = CB0Ch
- BX = event handle
- DL = queue
- 00h task queue
- 01h receive queue
- 02h log queue
- Return: AX = 0000h successful
- CH = hour
- CL = minute
- DH = second
- DL = 00h
- AX < 0 error code (see #03048)
- SeeAlso: AX=CB0Ah,AX=CB0Dh
- --------F-2FCB0D-----------------------------
- INT 2F - Communicating Applications Specification - SET TASK TIME
- AX = CB0Dh
- BX = event handle (task events only)
- CH = hour
- CL = minute
- DH = second
- DL unused
- Return: AX = 0000h successful
- AX < 0 error code (see #03048)
- Note: setting a task's date and time to before the current date and time
- causes it to execute immediately
- SeeAlso: AX=CB0Bh,AX=CB0Ch,AX=CB10h
- --------F-2FCB0E-----------------------------
- INT 2F - Communicating Applications Specification - GET EXTERNAL DATA BLOCK
- AX = CB0Eh
- DS:DX -> 256-byte buffer for external data block (see #03049)
- Return: AX = 0000h successful
- DS:DX buffer filled
- AX < 0 error code (see #03048)
- Format of CAS external data block:
- Offset Size Description (Table 03049)
- 00h BYTE CAS major version
- 01h BYTE CAS minor version
- 02h 68 BYTEs ASCIZ path to directory containing CAS software, ends in slash
- 46h 13 BYTEs ASCIZ name of current phonebook (in CAS directory)
- 53h 13 BYTEs ASCIZ name of current logo file (in CAS directory)
- 60h 32 BYTEs ASCIZ default sender name
- 80h 21 BYTEs ASCIZ CCITT identification of fax device
- 95h 107 BYTEs reserved
- --------F-2FCB0F-----------------------------
- INT 2F - Communicating Applications Specification - GET/SET AUTORECEIVE
- AX = CB0Fh
- DL = subfunction
- 00h get current autoreceive state
- 01h set autoreceive state
- DH = number of rings before answer, 00h = never
- Return: AX = 0000h autoreceive disabled
- AX = N number of rings before answer
- AX < 0 error code (see #03048)
- --------F-2FCB10-----------------------------
- INT 2F - Communicating Applications Specification - GET CURRENT EVENT STATUS
- AX = CB10h
- DS:DX -> 512-byte buffer for status area (see #03051)
- Return: AX = 0000h successful
- BX = event handle of current event or negative error code if
- no current event
- buffer filled
- AX < 0 error code (see #03048)
- SeeAlso: AX=CB02h,AX=CB0Dh
- (Table 03050)
- Values for CAS event type:
- 00h send
- 01h receive
- 02h polled send
- 03h polled receive
- 04h to 7Fh reserved
- FFh serious hardware error
- Format of CAS status area:
- Offset Size Description (Table 03051)
- 00h BYTE event type (see #03050)
- 01h BYTE transfer type
- 00h 200x200 dpi, FAX mode
- 01h 100x200 dpi, FAX mode
- 02h file transfer mode
- 03h to 7Fh reserved
- 02h WORD event status (see #03052)
- 04h WORD event time (packed DOS time format, see INT 21/AX=5700h)
- 06h WORD event date (packed DOS date format, see INT 21/AX=5700h)
- 08h WORD number of files to transfer, max 7FFFh
- 0Ah WORD offset of file transfer record
- 0Ch 47 BYTEs ASCIZ phone number to call
- 3Bh 64 BYTEs ASCIZ application-specific tag string
- 7Bh BYTE reserved (00h)
- 7Ch BYTE connect time, seconds
- 7Dh BYTE connect time, minutes
- 7Eh BYTE connect time, hours
- 7Fh DWORD total number of pages in all files
- 83h DWORD pages already transmitted
- 87h WORD number of files already transmitted
- 89h BYTE cover page flag
- 00h don't transmit cover page
- 01h transmit cover page
- 02h to 7Fh reserved
- 8Ah WORD total number of transmission errors
- 8Ch 78 BYTEs reserved (zeros)
- DAh 21 BYTEs ASCIZ remote FAX's CCITT identification
- EFH 32 BYTEs ASCIZ destination name
- 10Fh 32 BYTEs ASCIZ sender name
- 12Fh 80 BYTEs filename of PCX logo file (max 1780x800 pixels)
- 17Fh 128 BYTEs file transfer record for current event (see #03053)
- (Table 03052)
- Values for CAS event status:
- 0000h completed successfully
- 0001h waiting
- 0002h number dialed
- 0003h connected, sending
- 0004h connected, receiving
- 0005h aborted
- 0006h to 007Fh reserved
- 0080h to 7FFFh application-specific events
- 8000h to FFFFh error codes
- Format of CAS file transfer record:
- Offset Size Description (Table 03053)
- 00h BYTE file type (ignored unless FAX)
- 00h ASCII
- 01h PCX
- 02h DCX
- 03h to 7Fh reserved
- 01h BYTE text size for ASCII FAX file
- 00h = 80 columns by 66 lines (11 inches)
- 01h = 132 columns by 88 lines (11 inches)
- 02h to 7Fh reserved
- 02h BYTE status of file
- 00h untouched
- 01h opened
- 02h moved
- 03h deleted
- 04h not yet received
- 05h to 7Fh reserved
- 03h DWORD bytes already transmitted
- 07h DWORD file size in bytes
- 0Bh WORD pages alread transmitted
- 0Dh WORD number of pages in file
- 0Fh 80 BYTEs ASCIZ filename
- 5Fh BYTE 1/8 inch page length
- if page length below set to 01h through 7Fh, this value
- specifies additional 1/8 inch increments to page length
- 60h BYTE page length
- 00h = 11 inches
- 01h to 7Fh = page length is this number of inches plus value of
- 1/8 inch field above
- 80h to FEh reserved
- FFh = ASCII pages ending with formfeed
- 61h 31 BYTEs reserved (zeros)
- --------F-2FCB11-----------------------------
- INT 2F - Communicating Applications Specification - GET QUEUE STATUS
- AX = CB11h
- DL = queue to get status of
- 00h task queue
- 01h receive queue
- 02h log queue
- 03h send events (v1.2+)
- 04h receive events (v1.2+)
- Return: AX >= 0 total number of changes made to queue, modulo 32768
- BX = number of control files currently in queue
- CX = number of received files (zero for task and log queues)
- AX < 0 error code (see #03048)
- SeeAlso: AX=CB12h
- --------F-2FCB11DL03-------------------------
- INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF SEND EVENTS
- AX = CB11h
- DL = 03h
- Return: AX = number of successful sends since resident manager started
- BX = number of unsuccessful sends, including warnings
- SeeAlso: AX=CB11h/DL=04h
- --------F-2FCB11DL04-------------------------
- INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF RECEIVE EVENTS
- AX = CB11h
- DL = 04h
- Return: AX = number of received file events since resident manager started
- BX = number of received FAX events
- SeeAlso: AX=CB11h/DL=03h
- --------F-2FCB12-----------------------------
- INT 2F - Communicating Applications Specification - GET HARDWARE STATUS
- AX = CB12h
- DS:DX -> 128-byte status buffer (see #03054,#03056)
- Return: AX = 0000h successful
- DS:DX buffer filled with hardware-dependent status information
- < 0 error code (see #03048)
- SeeAlso: AX=CB10h,AX=CB11h
- Format of status buffer for Intel Connection CoProcessor:
- Offset Size Description (Table 03054)
- 00h BYTE Connection CoProcessor connection status flags (see #03057)
- 01h BYTE number of kilobytes of free buffer space
- 02h BYTE page buffer status
- bit 7: Connection CoProcessor has documents to send
- bits 6-0: number of pages in buffer
- 03h BYTE number of retries left for dialing number
- 04h BYTE page number to retransmit
- 05h BYTE communications status (see #03058)
- 06h BYTE baud rate (see #03055)
- 07h 3 BYTEs reserved
- 0Ah BYTE Connection CoProcessor hardware status (see #03059)
- 0Bh BYTE Connection CoProcessor switch states (see #03060)
- 0Ch BYTE communications flags (see #03061)
- 0Dh BYTE reserved
- 0Eh WORD error count (only valid while busy, reset when idle)
- 10h DWORD size of nonstandard format (NSF) file in bytes
- 14h BYTE 'A' if Connection CoProcessor board present
- 15h 9 BYTEs reserved
- 1Eh 21 BYTEs ASCIZ CCITT identification
- 33h 77 BYTEs reserved
- Note: the Intel Connection CoProcessor and SatisFAXtion may be distinguished
- by examining the byte at offset 14h
- Bitfields for Connection CoProcessor baud rate:
- Bit(s) Description (Table 03055)
- 7 reserved
- 6-4 baud rate
- 000 = 300 baud (V.21 SDLC or HDLC mode)
- 100 = 2400 baud (V.27 ter)
- 101 = 4800 baud (V.27 ter)
- 110 = 7200 baud (V.29)
- 111 = 9600 baud (V.29)
- 3-0 reserved, should be 0110
- Format of status buffer for Intel SatisFAXtion board:
- Offset Size Description (Table 03056)
- 00h BYTE SatisFAXtion connection status flags (see #03062)
- 01h BYTE SatisFAXtion board state (see #03063)
- 02h BYTE number of KB free in buffer
- 03h BYTE number of pages or files in buffer
- 04h BYTE number of redials remaining on current number
- 05h BYTE FAX page number to retransmit
- 06h BYTE current page/file in block transfer
- 07h BYTE number of rings received (only if auto-answer enabled)
- 08h WORD error count
- 0Ah DWORD length of file being transferred
- 0Eh 6 BYTEs reserved
- 14h BYTE 'B' if SatisFAXtion board present
- 15h 13 BYTEs ASCIZ transfer agent name
- 22h 5 BYTEs ASCIZ transfer agent version number
- 27h 13 BYTEs ASCIZ resident loader name
- 34h 5 BYTEs ASCIZ resident loader version number
- 39h 21 BYTEs ASCIZ remote CSID
- 4Eh 13 BYTEs ASCIZ resident manager name
- 5Bh 5 BYTEs ASCIZ resident manager version number
- 60h 32 BYTEs reserved
- Note: the Intel Connection CoProcessor and SatisFAXtion may be distinguished
- by examining the byte at offset 14h
- Bitfields for Connection CoProcessor connection status flags:
- Bit(s) Description (Table 03057)
- 7 hardware busy sending or receiving
- 6 last page of data
- 5 no data on current page
- 4 retransmit request for current page being transmitted
- 3 NSF (nonstandard file) mode active
- 2-0 reserved
- Bitfields for communications status:
- Bit(s) Description (Table 03058)
- 7 originating call
- 6 FAX message to be sent
- 5 on line
- 4 ring detected and receive enabled
- 3 buffer dumped on receive
- 2-0 hardware sequence state
- 000 idle
- 001 dial
- 010 answer
- 011 transmit
- 100 receive
- 101 pre-message
- 110 post-message
- 111 disconnect
- Bitfields for Connection CoProcessor hardware status:
- Bit(s) Description (Table 03059)
- 7 modem option installed
- 6 Connection CoProcessor has control of DAA (not latched)
- 5 on line (not latched)
- 4 ring detected (not latched)
- 3 data in command buffer (not latched)
- 2 set if using DMA channel 1, clear if using DMA channel 3
- 1 line length compensation 1 set (not latched)
- 0 line length compensation 0 set (not latched)
- Bitfields for Connection CoProcessor switch states:
- Bit(s) Description (Table 03060)
- 7 reserved
- 6 unused
- 5 spare switch open
- 4 FAX ADR1 switch open
- 3 FAX ADR0 switch open
- 2 alternate interrupt switch open
- 1 COM SEL 1 switch open
- 0 COM SEL 0 switch open
- Note: valid combinations of 0-2 are
- 000 COM2 IRQ3 IObase 2F8h
- 001 COM1 IRQ4 IObase 3F8h
- 010 COM4 IRQ3 IObase 2E8h
- 011 COM3 IRQ4 IObase 3E8h
- 110 COM4 IRQ2 IObase 2E8h
- 111 COM3 IRQ5 IObase 3E8h
- Bitfields for communications flags:
- Bit(s) Description (Table 03061)
- 7 reserved
- 6 auxiliary relay forced ON
- 5 modem select relay forced ON
- 4 offhook relay forced ON
- 3 9600 bps enabled
- 2 7200 bps enabled
- 1 4800 bps enabled
- 0 2400 bps enabled
- Bitfields for SatisFAXtion connection status flags:
- Bit(s) Description (Table 03062)
- 7 busy in T.30 CCITT fax protocol
- 6 data on current page/file (only used for block xfers)
- 5 retransmission of last page requested
- 4 in file transfer mode
- 3 data in buffer
- 2 data buffer dumped on receive
- 1 200x100 dpi resolution instead of 200x200 dpi
- 0 data modem in use, FAX image modem not available
- Bitfields for SatisFAXtion board state:
- Bit(s) Description (Table 03063)
- 7 reserved
- 6 handset jack active, data and FAX modems not available
- 5-3 current rate
- 000 300 bps (V.21 HDLC)
- 100 2400 bps (V.27 ter)
- 101 4800 bps (V.27 ter)
- 110 7200 bps (V.29)
- 111 9600 bps (V.29)
- 2-0 T.30 CCITT protocol state
- 000 idle
- 001 dialing
- 010 answering
- 011 transmitting
- 100 receiving
- 101 pre-message
- 110 post-message
- 111 disconnect
- --------F-2FCB13DL00-------------------------
- INT 2F - Communicating Applications Specification - GET DIAGNOSTICS RESULTS
- AX = CB13h
- DL = 00h
- Return: AX = 0040h in progress
- >= 0 passed
- < 0 hardware-dependent failure code (see #03064,#03065)
- SeeAlso: AX=CB13h/DL=01h
- Bitfields for Intel Connection CoProcessor failure codes:
- Bit(s) Description (Table 03064)
- 3 9600 bps FAX modem module failed
- 2 SDLC chip failed
- 1 RAM failed
- 0 ROM checksum failed
- Bitfields for Intel SatisFAXtion failure codes:
- Bit(s) Description (Table 03065)
- 1 2400 bps data modem failed
- 0 9600 bps FAX modem failed
- --------F-2FCB13DL01-------------------------
- INT 2F - Communicating Applications Specification - START DIAGNOSTICS
- AX = CB13h
- DL = 01h
- Return: AX = 0000h successfully started
- AX < 0 error code (see #03048)
- SeeAlso: AX=CB13h/DL=00h
- --------F-2FCB14-----------------------------
- INT 2F - Communicating Applications Specification - MOVE RECEIVED FILE
- AX = CB14h
- BX = event handle
- CX = receive file number
- 0001h first received file
- N Nth received file
- DS:DX -> ASCIZ string specifying new name for file (must not exist)
- Return: AX = 0000h successful
- AX < 0 error code (see #03048)
- --------F-2FCB15-----------------------------
- INT 2F - Communicating Applications Specification - SUBMIT FILE TO SEND
- AX = CB15h
- DS:DX -> variable-length data area (see #03066)
- Return: AX >= 0 event handle
- AX < 0 error code (see #03048)
- SeeAlso: AX=CB01h
- Format of CAS file submission data area:
- Offset Size Description (Table 03066)
- 00h BYTE transfer type
- 00h = 200x200 dpi, fax mode
- 01h = 100x200 dpi, fax mode
- 02h = file transfer mode
- 03h to 7Fh reserved
- 01h BYTE text size
- 00h = 80 columns
- 01h = 132 columns
- 02h to 7Fh reserved
- 02h WORD time to send (DOS packed time, see #01665 at INT 21/AX=5700h)
- 04h WORD date to send (DOS packed date, see #01666 at INT 21/AX=5700h)
- 06h 32 BYTEs ASCIZ destination name
- 26h 80 BYTEs ASCIZ name of file to send
- 76h 47 BYTEs ASCIZ phone number to dial
- A5h 64 BYTEs ASCIZ application-specific tag string
- E5h BYTE reserved (00h)
- E6h BYTE cover page
- 00h don't send cover page
- 01h send cover page
- 02h to 7Fh reserved
- E7h 23 BYTEs reserved (zeros)
- FEh variable ASCIZ string containing text of cover page (if cover page flag
- set to 01h)
- --------F-2FCB16BX1234-----------------------
- INT 2F - Communicating Applications Spec v1.2+ - UNLOAD RESIDENT MANAGER
- AX = CB16h
- BX = 1234h
- CX = 5678h
- DX = 9ABCh
- Return: AX = 0000h successful
- AX < 0 error code
- Note: the METZ XpressFax CASMGR ignores the values in BX,CX, and DX
- SeeAlso: AX=C000h/BX=444Bh,AX=CB00h
- Index: uninstall;CAS Manager
- --------F-2FCB17-----------------------------
- INT 2F - Communicating Applications Spec v1.2+ - SET COVER PAGE STATUS
- AX = CB17h
- BX = event handle
- CL = cover page status
- 00h not read
- 01h read by user
- Return: AX = 0000h successful
- AX < 0 error code
- --------F-2FCB80-----------------------------
- INT 2F - Intel SatisFAXtion CASMGR - ???
- AX = CB80h
- ???
- Return: ???
- --------F-2FCB81-----------------------------
- INT 2F - Intel SatisFAXtion CASMGR - ???
- AX = CB81h
- ???
- Return: ???
- --------F-2FCB82-----------------------------
- INT 2F - Intel SatisFAXtion CASMGR - ???
- AX = CB82h
- ???
- Return: ???
- --------F-2FCBDCBL56-------------------------
- INT 2F - Comwave Microfax Specification - GET STATUS ARRAY
- AX = CBDCh
- BL = 56h
- BH = line number (starts with 1)
- CX:DX -> 32-byte status buffer or 80 character string
- Return: AX = number of cards installed, or FFFFh on error
- Program: Comwave manufacturers the Microfax line of fax cards which are a
- high-performance multi-card FAX solution for OEMs.
- Note: defaults to AH=CBh but can be changed
- SeeAlso: AX=CBDDh,AX=DA00h
- --------F-2FCBDDBL56-------------------------
- INT 2F - Comwave Microfax Specification - COMMAND SUBMISSION
- AX = CBDDh
- BL = 56h
- BH = ?
- CX:DX -> command to execute
- Return: AX = status
- 0000h success
- FFFFh on error
- SeeAlso: AH=2Ah,AX=CBDCh,AX=80FBh
- --------c-2FCC--SI5453-----------------------
- INT 2F U - PC-Kwik Programs - API
- AH = CCh
- SI = 5453h or 7473h
- AL = function number (at least 00h,01h,04h,05h,07h,80h)
- DL = program identifier (see #03067)
- Return: SI = 7473h
- other registers vary by function
- Note: Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
- thus supports this call
- SeeAlso: INT 21/AH=2Bh/CX=4358h
- (Table 03067)
- Values for PC-Kwik program identifier:
- 00h all installed PowerPak programs
- 01h SUPERPCK/SUPER/QCACHE v4.00+ (disk cache)
- 02h PCKSPL (print spooler)
- 04h PCKSCRN (screen accelerator)
- 05h PCKKEY (keyboard enhancer)
- 06h PCKRAMD (RAM disk)
- 08h PCKWIK.SYS
- 10h PCKCDROM (CD-ROM support for SUPERPCK)
- --------N-2FCC00-----------------------------
- INT 2F - Tsoft NFSDRVR - INSTALLATION CHECK
- AX = CC00h
- Return: AX = 7777h
- BX = ???
- CX = ???
- DX = ???
- ES = data segment of resident portion
- SeeAlso: AX=CC01h,AX=CC06h
- --------N-2FCC01-----------------------------
- INT 2F - Tsoft NFSDRVR - ???
- AX = CC01h
- ???
- Return: ???
- SeeAlso: AX=CC00h
- --------N-2FCC02-----------------------------
- INT 2F - Tsoft NFSDRVR - ???
- AX = CC02h
- ???
- Return: ???
- SeeAlso: AX=CC00h
- --------N-2FCC03-----------------------------
- INT 2F - Tsoft NFSDRVR - ???
- AX = CC03h
- ???
- Return: ???
- SeeAlso: AX=CC00h
- --------N-2FCC04-----------------------------
- INT 2F - Tsoft NFSDRVR - ???
- AX = CC04h
- ???
- Return: ???
- SeeAlso: AX=CC00h
- --------N-2FCC05-----------------------------
- INT 2F - Tsoft NFSDRVR - ???
- AX = CC05h
- ???
- Return: ???
- SeeAlso: AX=CC00h
- --------N-2FCC06-----------------------------
- INT 2F - Tsoft NFSDRVR - ???
- AX = CC06h
- ???
- Return: ???
- SeeAlso: AX=CC00h
- --------P-2FCD00-----------------------------
- INT 2F - Intel Image Processing Interface - INSTALLATION CHECK
- AX = CD00h
- Return: AL = state
- 00h not installed, OK to install
- 01h not installed, not OK to install
- FFh installed
- SeeAlso: AX=CD02h"Image"
- --------P-2FCD00-----------------------------
- INT 2F - LaserPort Interface - INSTALLATION CHECK
- AX = CD00h
- Return: AL = status
- FFh installed
- SeeAlso: AX=CD0Fh"LaserPort"
- --------U-2FCD00-----------------------------
- INT 2F - SWELL.EXE - INSTALLATION CHECK
- AX = CD00h
- Return: AX = 00FFh installed
- BH = major version
- BL = minor version
- Program: SWELL.EXE is a TSR which swaps programs to disk when they EXEC a
- child process with INT 21/AH=4Bh
- --------s-2FCD00BX464F-----------------------
- INT 2F - Forte/Gravis ULTRAMID - INSTALLATION CHECK
- AX = CD00h
- BX = 464Fh ('FO')
- CX = 5254h ('RT')
- DX = 4520h ('E ')
- Return: AL = FFh if installed
- BX = 4155h ('AU')
- CX = 4449h ('DI')
- DX = 4F20h ('O ')
- ES:SI -> program ID string
- Program: ULTRAMID is a MIDI driver for the Gravis UltraSound which allows use
- of AIL drivers with other software
- Range: AH=CDh-ECh, selected by scanning for an available multiplex number
- SeeAlso: INT 21/AX=FD12h,AX=CD00h/DX=4957h
- --------s-2FCD00DX4957-----------------------
- INT 2F R - InterWave Game API - INSTALLATION CHECK
- AX = CD00h
- DX = 4957h ('IW')
- SI = 5645h ('VE')
- Return: AL = FFh if installed
- DX = 4554h ('ET')
- SI = 454Bh ('EK')
- Range: AH=CDh-ECh, selected by scanning for an available multiplex number
- SeeAlso: AX=CD00h/BX=464Fh,AX=CD01h"InterWave",AX=CD21h"InterWave"
- SeeAlso: AX=CD80h"InterWave"
- --------P-2FCD01-----------------------------
- INT 2F - Intel Image Processing Interface - SET DEVICE NAME
- AX = CD01h
- CX:BX -> ASCIZ character device name ("LPTn", "COMn", "PRN")
- Return: AL = status
- 00h successful
- CX:BX -> internal character device name
- 80h error
- --------U-2FCD01-----------------------------
- INT 2F - SWELL.EXE - SUSPEND ONCE
- AX = CD01h
- Return: AX = 0000h
- SeeAlso: AX=CD02h"SWELL"
- --------s-2FCD01BX0000-----------------------
- INT 2F R - InterWave Game API - GET NUMBER OF INTERWAVE PROGRAMS / PROGRAM ID
- AX = CD01h
- BX = 0000h
- Return: BX = number of programs currently installed on the Game API
- Desc: get the number of programs supporting the InterWave Game API which are
- currently installed in memory, which also forms the next program ID
- number if the caller wishes to go resident on the API
- Range: AH=CDh-ECh, selected by scanning for an available multiplex number
- Notes: the first program to install on the IW Game API must use ID 00h
- the AMD-recommended implementation is for the handler to increment
- BX and chain to the previous handler (if any), but this will fail
- if TSRs are unloaded out-of-order
- SeeAlso: AX=CD00h"InterWave",AX=CD02h"InterWave",AX=CD03h"InterWave"
- SeeAlso: AX=CD05h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
- --------P-2FCD02-----------------------------
- INT 2F - Intel Image Processing Interface - GET VERSION NUMBER
- AX = CD02h
- Return: AL = status
- 00h/01h successful
- BH = major version number (BCD)
- BL = minor version number (BCD)
- 80h error
- Note: if return AL = 01h, the IPI supports network redirection
- SeeAlso: AX=CD00h"Image"
- --------U-2FCD02-----------------------------
- INT 2F - SWELL.EXE - SUSPEND
- AX = CD02h
- Return: AX = 0000h
- SeeAlso: AX=CD03h"SWELL"
- --------s-2FCD02-----------------------------
- INT 2F R - InterWave Game API - GET PROGRAM STATUS AND INFORMATION
- AX = CD02h
- BX = program identifier
- Return: CX = program status
- bit 0: using synthesizer
- bit 1: using Codec
- bit 2: supports at least one Game Device (see AX=CD21h,AX=CD22h)
- BX = supported API version (BCD, BH=major, BL=minor) if CX bit 2 set
- ES:DI -> ASCIZ identification string
- Range: AH=CDh-ECh, selected by scanning for an available multiplex number
- Note: ordinarily, an application will loop through all valid program
- identifiers (as returned by AX=CD01h); if any of the installed
- programs conflicts with the use the caller wishes to make of the
- InterWave chip, it should be disabled with AX=CD03h first
- SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD03h"InterWave"
- SeeAlso: AX=CD05h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
- --------P-2FCD03-----------------------------
- INT 2F - Intel Image Processing Interface - SELECT SCAN LINE
- AX = CD03h
- BX = scan line
- CX = requested density in dots per inch (300, 600, or 1200)
- Return: AL = status (see also AX=CD04h"Image")
- 00h successful
- CX = density at which scan line was mapped
- ES:DI -> start of scan line
- 80h unsuccessful
- 81h scan line out of range
- 82h unsupported scan line density
- 83h out of memory
- SeeAlso: AX=CD04h"Image"
- --------U-2FCD03-----------------------------
- INT 2F - SWELL.EXE - ACTIVATE
- AX = CD03h
- Return: AX = 0000h
- SeeAlso: AX=CD02h"SWELL"
- --------s-2FCD03-----------------------------
- INT 2F R - InterWave Game API - SUSPEND PROGRAM
- AX = CD03h
- BX = installed program identifier
- CX = InterWave section to be released
- 0000h all
- 0001h synthesizer
- 0002h Codec
- Return: AL = status
- 00h successful
- BX = base port
- CL = IRQ
- CH = DMA channel (Codec only)
- else failed
- SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD02h"InterWave"
- SeeAlso: AX=CD04h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
- --------P-2FCD04-----------------------------
- INT 2F - Intel Image Processing Interface - MOVE BITMAP TO SCANLINE
- AX = CD04h
- CX:BX -> structure (see #03069)
- Return: AL = status (see #03068)
- SeeAlso: AX=CD03h"Image"
- (Table 03068)
- Values for IPI function status:
- 00h successful
- 80h unsuccessful
- 81h scan line out of range
- 82h unsupported scan line density
- 83h out of memory
- 84h unrecognized source
- 85h initialization error
- Format of structure:
- Offset Size Description (Table 03069)
- 00h WORD image source (0 = conventional memory, 1 = expanded memory)
- 02h DWORD pointer to image data
- 06h WORD scan line on which to place
- 08h WORD bit offset from start of scan line at which to place
- 0Ah WORD density of bitmap data (300, 600, or 1200 dpi)
- 0Ch WORD width in bits of data
- 0Eh WORD source logical page number
- 10h WORD source handle (only if source in expanded memory)
- 12h WORD source offset (only if source in expanded memory)
- --------U-2FCD04-----------------------------
- INT 2F - SWELL.EXE - TURN OFF VERBOSE MODE
- AX = CD04h
- Return: AX = 0000h
- SeeAlso: AX=CD05h"SWELL"
- --------s-2FCD04-----------------------------
- INT 2F R - InterWave Game API - WAKE PROGRAM
- AX = CD04h
- BX = installed program identifier
- Return: AL = status
- 00h successful
- else failed
- Note: this function should only be called after the program has been
- suspended with AX=CD03h
- SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD03h"InterWave"
- SeeAlso: AX=CD05h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
- SeeAlso: INT 7E/AL=84h"IWSBSDRV"
- --------P-2FCD05-----------------------------
- INT 2F - Intel Image Processing Interface - PRINT PAGE
- AX = CD05h
- Return: AL = status (00h,80h) (see #03068)
- Note: page image is retained, so multiple calls will print multiple copies of
- the page
- SeeAlso: AX=CD06h"Image"
- --------U-2FCD05-----------------------------
- INT 2F - SWELL.EXE - TURN ON VERBOSE MODE
- AX = CD05h
- Return: AX = 0000h
- SeeAlso: AX=CD04h"SWELL"
- --------s-2FCD05-----------------------------
- INT 2F R - InterWave Game API - UNINSTALL RESIDENT DEVICE DRIVER
- AX = CD05h
- BX = installed program identifier
- Return: AL = status
- 00h successful
- else failed
- SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD02h"InterWave"
- SeeAlso: AX=CD03h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
- --------P-2FCD06-----------------------------
- INT 2F - Intel Image Processing Interface - CLEAR PAGE
- AX = CD06h
- Return: AL = status (00h,80h) (see #03068)
- Note: palette is reset to default
- SeeAlso: AX=CD09h"Image"
- --------U-2FCD06-----------------------------
- INT 2F - SWELL.EXE - UNINSTALL
- AX = CD06h
- Return: AX = status
- 0000h uninstalled
- 8002h programs still swapped, not uninstalled
- --------P-2FCD07-----------------------------
- INT 2F - Intel Image Processing Interface - reserved
- AX = CD07h
- SeeAlso: AX=CD00h"Image"
- --------U-2FCD07-----------------------------
- INT 2F - SWELL.EXE - GET INFO
- AX = CD07h
- ES:BX -> 32-byte buffer for info (see #03070)
- Return: AX = status
- 0000h successful
- ES:BX buffer filled
- 8001h buffer wrong size
- Format of SWELL.EXE info buffer:
- Offset Size Description (Table 03070)
- 00h WORD 20h (total size of buffer)
- 02h BYTE suspend-once mode active if nonzero
- 03h BYTE 00h active, 01h suspended
- 04h BYTE 00h quiet, 01h verbose
- 05h BYTE "Borland support" (allowing INT 21/AX=4B01h) on if nonzero
- 06h 26 BYTEs unused???
- --------P-2FCD08-----------------------------
- INT 2F - Intel Image Processing Interface - SCREEN IMAGE
- AX = CD08h
- CX:BX -> structure (see #03071)
- Return: AL = status (00h,80h-85h) (see #03068)
- SeeAlso: AX=CD05h"Image",AX=CD09h"Image"
- Format of IPI screen image structure:
- Offset Size Description (Table 03071)
- 00h WORD image source (0 = conventional memory, 1 = expanded memory)
- 02h DWORD pointer to image data
- 06h WORD horizontal position on paper of left edge (in 1200 dpi units)
- 08h WORD vertical position on paper of top edge (in 1200 dpi units)
- 0Ah WORD left cropping (currently must be zero)
- 0Ch WORD top cropping (currently must be zero)
- 0Eh WORD width (currently must be 8000h)
- 10h WORD height (currently must be 8000h)
- 12h WORD horizontal size of image in 1200 dpi units
- 14h WORD vertical size of image in 1200 dpi units
- 16h WORD aspect ratio (currently reserved)
- 18h WORD initialization flag (if 01h, initialization is performed)
- 1Ah WORD pixels per line of source data
- 1Ch WORD number of scan lines in source data
- 1Eh WORD number of scan lines in packet
- 20h WORD bits per pixel (1,2,4,6, or 8)
- 22h WORD pixels per byte (1,2,4, or 8)
- 24h WORD compression type (currently only 00h [uncompressed] supported)
- 26h WORD source page number (if in expanded memory)
- 28h WORD source handle (if in expanded memory)
- 2Ah WORD source offset (if in expanded memory)
- --------U-2FCD08-----------------------------
- INT 2F - SWELL.EXE - UNUSED
- AX = CD08h
- Return: AX = FFFFh (error)
- --------P-2FCD09-----------------------------
- INT 2F - Intel Image Processing Interface - LOAD SCREEN
- AX = CD09h
- CX:BX -> structure (see #03072)
- Return: AL = status (00h,80h) (see #03068)
- SeeAlso: AX=CD06h"Image Processing",AX=CD0Ah"Image Processing"
- Format of IPI load screen structure:
- Offset Size Description (Table 03072)
- 00h BYTE style
- 44h ('D') diamond style
- 4Ch ('L') line style
- 01h BYTE reserved (00h)
- 02h WORD frequency in lines per inch [sic]
- currently, coerced to nearest of 50, 60, 68, 70, 75, 85, or 100
- 04h WORD screen angle in degrees (-360 to 360)
- currently coerced to nearest of -45, 0, 45, or 90
- --------U-2FCD09-----------------------------
- INT 2F - SWELL.EXE - TURN OFF "BORLAND SUPPORT"
- AX = CD09h
- Return: AX = 0000h
- SeeAlso: AX=CD0Ah"SWELL"
- --------P-2FCD0A-----------------------------
- INT 2F - Intel Image Processing Interface - LOAD PALETTE
- AX = CD0Ah
- CX:BX -> palette structure (see #03073)
- Return: AL = status (00h,80h) (see #03068)
- SeeAlso: AX=CD09h"Image Processing"
- Format of IPI palette structure:
- Offset Size Description (Table 03073)
- 00h BYTE bits per pixel for which palette is to be used (1,2,4,6, or 8)
- 01h 2**N palette translation values, one per possible pixel value
- --------U-2FCD0A-----------------------------
- INT 2F - SWELL.EXE - TURN ON "BORLAND SUPPORT"
- AX = CD0Ah
- Return: AX = 0000h
- SeeAlso: AX=CD09h"SWELL"
- --------P-2FCD0F-----------------------------
- INT 2F - LaserPort Interface - EXECUTE FUNCTION
- AX = CD0Fh
- BL = function
- 01h enable
- 02h disable
- 03h ???
- Return: AL = status
- 00h success
- SeeAlso: AX=CD00h"LaserPort"
- --------s-2FCD21-----------------------------
- INT 2F R - InterWave Game API - OPEN GAME DEVICE
- AX = CD21h
- BX = installed program identifier
- ES:DI -> ASCIZ device name
- "MIDISIMPLE"
- "MIDICOMPLEX"
- "DIRECTCODEC"
- Return: AL = status
- 00h successful
- DX = device handle
- ---MIDISIMPLE and MIDICOMPLEX---
- BX = real-mode interrupt number (see #03074,#03075)
- ---DIRECTCODEC---
- BX = base port
- CL = IRQ
- CH = DMA channel (04h = no DMA)
- SI = size of FIFO in bytes (0000h = use DMA)
- nonzero failed (not supported or already in use)
- AH may be destroyed
- Range: AH=CDh-ECh, selected by scanning for an available multiplex number
- SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD02h"InterWave"
- SeeAlso: AX=CD05h"InterWave",AX=CD22h"InterWave",AX=CD80h"InterWave"
- (Table 03074)
- Call MIDISIMPLE with:
- EAX = function number
- 0001h MIDI byte out
- BL = MIDI byte to send
- 0002h MIDI string out
- ECX = length of MIDI string in bytes
- ES:EDI -> MIDI string to send (should not include timing info)
- DX = device handle
- INT xxh (as returned by AX=CD21h)
- Return: EAX = status
- 00000000h if successful
- FFFFFFFFh on error (bad handle)
- SeeAlso: #03075,INT 7E/AX=0001h"IWSBSDRV",INT 7E/AX=0002h"IWSBSDRV"
- (Table 03075)
- Call MIDICOMPLEX with:
- EAX = function number
- ??? (specification is still in development)
- DX = device handle
- INT xxh (as returned by AX=CD21h)
- Return: EAX = status
- 00000000h if successful
- FFFFFFFFh on error (bad handle)
- SeeAlso: #03074
- --------s-2FCD22-----------------------------
- INT 2F R - InterWave Game API - CLOSE GAME DEVICE
- AX = CD22h
- BX = installed program identifier
- DX = device handle (from AX=CD21h)
- Return: AL = status
- 00h successful
- FFh inavlid handle or device is not open
- Range: AH=CDh-ECh, selected by scanning for an available multiplex number
- SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD02h"InterWave"
- SeeAlso: AX=CD05h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
- --------s-2FCD80-----------------------------
- INT 2F RC - InterWave Game API - MIXER SETTINGS CHANGED BROADCAST
- AX = CD80h
- Return: nothing
- Desc: called by an application controlling the InterWave chip's mixer
- whenever the mixer's settings are changed
- Range: AH=CDh-ECh, selected by scanning for an available multiplex number
- Note: when an application intercepts this function call, it must read the
- new mixer settings from the InterWave chip
- SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD02h"InterWave"
- SeeAlso: AX=CD05h"InterWave",AX=CD21h"InterWave",AX=CD22h"InterWave"
- --------K-2FCF00-----------------------------
- INT 2F - TEMPLEXX 1.0 - INSTALLATION CHECK
- AX = CF00h
- Return: AL = FFh if installed
- Program: TEMPLEXX is a popup keyboard template by Henson Scientific, Inc.
- Note: values in AL other than 00h cause an immediate return without modifying
- any registers
- --------G-2FD000-----------------------------
- INT 2F C - MDEBUG display driver - GET DRIVER STATUS
- AX = D000h
- Return: CF set on error
- all other registers must be unchanged)
- CF clear if successful
- AL = FFh
- AH = driver semaphor
- 00h driver is not active
- 01h driver is active
- BX = CS of the driver
- CX = driver version (CH = major, CL = minor, must be >= 013Ch)
- DL = buffer semaphor
- 00h driver is not pending
- 01h driver is pending between functions 02h and 03h
- DH = show semaphor
- 00h driver is not pending
- 01h driver is pending between functions 04h and 05h
- Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
- Schemmer, including a memory monitor, an interpreter and a
- disassembler
- Range: AH=C0h to AH=FFh, selected by switch or programmatically
- Notes: MDEBUG can use any two consecutive multiplex numbers between C0h and
- FFh; the default is D0h for the display driver and D1h for the
- command driver (call INT 60/AH=00h"MDEBUG" for the actual multiplex
- numbers used)
- this function MUST be reentrant, as MDEBUG calls it after every popup
- before any other actions. The handler should not change any
- registers if the display is in an unsupported mode or in a mode
- MDEBUG supports itself, e.g. a normal text mode with at least 80x25
- characters (i.e. 80x43 or 132x44 (v1.60+)). In this case MDEBUG will
- not call any of the other functions for this popup session.
- MDEBUG will not call the other functions if the returned version is
- less than the actual version of MDEBUG.
- if the driver is reentrant, DL and DH should be 00h
- SeeAlso: AX=D001h,AX=D002h,AX=D003h,AX=D004h,AX=D005h
- --------M-2FD000-----------------------------
- INT 2F - ZWmous - INSTALLATION CHECK
- AX = D000h
- Return: AX = 5A57h ("ZW") if installed
- BX = segment of resident code
- Program: ZWmous is a shareware TSR by Zen Wu which permits the use of a mouse
- with many non-mouse applications by entering the letter under the
- mouse cursor on button presses
- SeeAlso: INT 33/AX=0003h
- --------N-2FD000-----------------------------
- INT 2F - Lotus CD/Networker - INSTALLATION CHECK
- AX = D000h
- Return: AL = FFh if CD/Networker TSR is loaded
- BX = 4D44h ("MD") signature
- CX = Windows mode word (from INT 2F/AX=1600h) at time of TSR load
- DX = bitmap identifying all loaded CD/Networker TSRs.
- Notes: INT 2F/AH=D0h is used by CD/Networker to communicate between a
- resident redirector TSR and a transient program that controls the
- TSR's CD-ROM drive emulation (volume attachments, caching, etc).
- At present there is only one CD/Networker TSR; the bitmap always = 4.
- SeeAlso: AX=D002h"Lotus",INT 2F/AX=1500h"CD-ROM"
- --------G-2FD001-----------------------------
- INT 2F C - MDEBUG display driver - INITIALIZE DRIVER
- AX = D001h
- Return: CF set on error
- AL = driver semaphor
- AH = buffer semaphor
- Range: AH=C0h to AH=FFh, selected by switch or programmatically
- Notes: MDEBUG calls this function after every successful call of the function
- 00h. The function should reset all internal data and the status of
- the driver. If this function returns an error, MDEBUG will not call
- the other functions in this popup session.
- MDEBUG can use any two consecutive multiplex numbers between C0h and
- FFh; the default is D0h for the display driver and D1h for the
- command driver
- SeeAlso: AX=D000h
- --------G-2FD002-----------------------------
- INT 2F C - MDEBUG display driver - SAVE GRAPHIC DATA
- AX = D002h
- Return: CF set on error
- CF clear if successful
- display memory saved and display switched to one of the text modes
- 02h, 03h or 07h.
- Note: MDEBUG calls this function only once every popup session before
- displaying its windows.
- SeeAlso: AX=D000h,AX=D003h
- --------N-2FD002BX4D44-----------------------
- INT 2F - Multiplex - Lotus CD/Networker GET DATA AREA
- AX = D002h
- BX = 4D44h
- DX = bitmap identifying one loaded CD/Networker TSR
- Return: ES:DI -> data area owned by TSR
- Note: the format of the data area changes with each minor revision, so it
- cannot be counted on
- SeeAlso: AX=D000h"Lotus"
- --------G-2FD003-----------------------------
- INT 2F C - MDEBUG display driver - RESTORE GRAPHIC DATA
- AX = D003h
- Return: CF set on error
- CF clear if successful
- display restored to the mode it was in before calling AX=D002h and
- the display memory is restored
- Note: MDEBUG calls this function only once every popup session just before
- it exits to normal DOS.
- SeeAlso: AX=D000h,AX=D002h
- --------G-2FD004-----------------------------
- INT 2F - MDEBUG display driver - SHOW SAVED DATA
- AX = D004h
- Return: CF set on error
- CF clear if successful
- display switched to mode it was in before calling AX=D002h and the
- display memory is restored
- Note: This function needn't save the display memory before changing it.
- SeeAlso: AX=D000h,AX=D005h
- --------G-2FD005-----------------------------
- INT 2F - MDEBUG display driver - SWITCH BACK TO TEXT SCREEN
- AX = D005h
- Return: CF set on error
- CF clear if successful
- display restored to mode it was in before calling AX=D004h
- Note: This function needn't save or change the display memory
- SeeAlso: AX=D000h,AX=D004h
- --------G-2FD0-------------------------------
- INT 2F - MDEBUG display driver - RESERVED FUNCTION NUMBERS
- AH = D0h
- AL = 06h-7Fh
- Note: these functions are reserved for future use
- --------G-2FD0-------------------------------
- INT 2F - MDEBUG display driver - USER DEFINED FUNCTION NUMBERS
- AH = D0h
- AL = 80h-FFh
- Note: these functions numbers are reserved for user defined features (e.g.
- communication between the transient und resident parts of the driver)
- --------G-2FD100-----------------------------
- INT 2F C - MDEBUG command driver - GET STATUS
- AX = D100h
- BX = version of MDEBUG (BH = major, BL = minor)
- CX = command driver counter
- ---v1.60+---
- DS:SI -> MDEBUG identification table (see #03076)
- ES = segment of display memory used by MDEBUG
- DI = size of video mode used by MDEBUG
- (high byte = lines, low byte = columns)
- Return: DL = FFh
- BX = version number of the driver if it is less than the version in BX,
- else unchanged
- CX incremented
- Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
- Schemmer, including a memory monitor, an interpreter, and a
- disassembler
- Range: AH=C0h to AH=FFh, selected by switch or programmatically
- Notes: called by MDEBUG at start of popup session; if the version number
- returned in BX is less than 1.52 (1.60 for MDEBUG v1.70), MDEBUG will
- not call any of the other functions during this popup session
- MDEBUG can use any two consecutive multiplex numbers between C0h and
- FFh; the default is D0h for the display driver and D1h for the
- command driver (call INT 60/AH=00h"MDEBUG" for the multiplex numbers
- actually used)
- this function must end with a far call to the old INT 2F handler after
- changing the registers
- this function MUST be reentrant
- command drivers must also declare the following data at the given
- offsets in the code segment
- 100h 3 BYTEs JMP-command in .COM-files
- 103h BYTE NOP-command (90h)
- 104h 26 BYTEs signature "Kommandotreiber f�r MDEBUG"
- 11Eh 12 BYTEs name of driver, e.g. "MDHISDRV.COM"
- each driver must have a unique name
- MDEBUG will pass every key and command to the command driver(s) before
- checking for a valid internal command
- SeeAlso: AX=D000h,AX=D101h
- Format of MDEBUG identification table:
- Offset Size Description (Table 03076)
- -2 WORD entry offset
- 00h WORD CS of MDEBUG
- 02h DWORD old INT 08h vector
- 06h DWORD old INT 09h vector
- 0Ah DWORD address INT 16h routine used by MDEBUG
- 0Eh BYTE length of version string
- 0Fh N BYTEs version string
- --------G-2FD101-----------------------------
- INT 2F - MDEBUG command driver - INITIALIZE DRIVER
- AX = D101h
- CX = command driver counter
- Return: DL = status
- FFh if successful
- CX incremented
- else error: all registers unchanged
- Note: this function must end with a far call to the old INT 2F handler after
- changing the registers
- this function must be reentrant
- --------G-2FD102-----------------------------
- INT 2F - MDEBUG command driver - EXECUTE INTERPRETER COMMAND
- AX = D102h
- BL = first character of the interpreter command
- BH = last character of the interpreter command (or blank)
- DS:SI -> parameter for the interpreter command as ASCIZ string
- DS:DI -> MDEBUG data structure (see #03078)
- Return: AL = FFh
- CF set on error
- AH = error number (see #03077)
- DS:SI -> ASCIZ error message (max 30 characters) if AH=0Ch
- CF clear if successful
- AH = return code
- 00h continue processing the command line
- 01h leave MDEBUG popup session
- 02h leave MDEBUG popup session and automatically popup again
- if the InDOS flag is zero
- 03h not used (same as 00h)
- 04h not used (same as 00h)
- 05h put new command line into the input buffer,
- DS:SI -> new command line (ASCIZ string, max 66 chars)
- 06h process new command line
- DS:SI -> new command line (ASCIZ string, max 66 chars)
- else unknown status, but continue processing commmand line
- Note: this function must end with a far call to the old INT 2F handler (with
- registers unchanged) if the driver does not support the interpreter
- command in BX. Otherwise, the driver must not chain to the old
- INT 2F.
- (Table 03077)
- Values for MDEBUG error number:
- 01h syntax error
- 02h first shell of the command.com is activ
- 03h Esc pressed
- 04h break pressed
- 05h DOS is busy
- 06h command ended
- 07h division by zero
- 08h invalid display driver
- 09h invalid command driver
- 0Ah error 8 and 9
- 0Bh unknown error
- 0Ch new error
- else unknown error
- Format of MDEBUG data structure:
- Offset Size Description (Table 03078)
- 00h WORD register SE
- 02h WORD register OF
- 04h WORD register FS
- 06h WORD register FO
- 08h WORD register AX
- 0Ah WORD register BX
- 0Ch WORD register CX
- 0Eh WORD register DX
- 10h WORD register SI
- 12h WORD register DI
- 14h WORD register DS
- 16h WORD register ES
- 18h WORD register BP
- 1Ah WORD register SS
- 1Ch WORD register SP
- 1Eh WORD register FL (flags)
- 20h WORD register R0
- 22h WORD register R1
- 24h WORD register R2
- 26h WORD register R3
- 28h WORD register R4
- 2Ah WORD register R5
- 2Ch WORD register R6
- 2Eh WORD register R7
- 30h WORD register R8
- 32h WORD register CS, return-address
- 34h WORD register IP, return-address
- 36h DWORD saved pointer to data for key <F6> (v1.60)
- saved monitor address (v1.70)
- 3Ah 12 WORDs saved register values on last popup entry (for <F8> key)
- (original register values at popup entry of MDEBUG)
- AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
- 52h 12 WORDs saved register values on last popup exit (for <SHIFT-F8> key)
- AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
- 6Ah DWORD address of the DOS-invars-table
- 6Eh DWORD address of the InDOS flag
- 72h WORD offset of the register which is used for the segment of the
- first monitor window
- 74h WORD offset of the register which is used for the offset of the
- first monitor window
- 76h WORD name of the register which is used for the segment of the
- first monitor segment
- 78h WORD name of the register which is used for the offset of the first
- monitor window
- 7Ah WORD pseudo register 1
- 7Ch WORD pseudo register 2
- --------G-2FD103-----------------------------
- INT 2F - MDEBUG command driver - EXECUTE KEY IN THE MONITOR
- AX = D103h
- BX = key code (like result of an interrupt 16h call)
- CX = cursor position
- 0000h in the ASCII column of the monitor
- 0001h in one of the hex fields of the monitor
- DS:SI -> MDEBUG data structure (see #03078)
- ES:DI -> actual byte in the monitor
- Return: AL = FFh
- AH = return code
- 00h key processed, read next key
- 01h leave MDEBUG popup session
- 02h leave MDEBUG popup session and automatically popup again if DOS
- is not busy
- 03h signal an error (beep)
- 04h driver has redefined the key, proceed with the new key
- BX = new key code
- MDEBUG will not pass the new key to the command driver(s)
- else treat like code 00h
- Note: this function must end with a far call to the old INT 2F handler (with
- registers unchanged) if the driver does not support the key in BX.
- Otherwise, the driver must not chain to the old INT 2F.
- SeeAlso: AX=D104h
- --------G-2FD104-----------------------------
- INT 2F - MDEBUG command driver - EXECUTE KEY IN THE INTERPRETER
- AX = D104h
- DS:SI -> MDEBUG data structure (see #03078)
- Return: AL = FFh
- AH = return code
- 00h key processed, read next key
- 01h leave MDEBUG popup session
- 02h leave MDEBUG popup session and automactically popup again if
- DOS is not busy
- 03h signal an error (beep)
- 04h driver has redefined the key, proceed with the new key
- BX = new key code
- MDEBUG won't pass the new key to the command driver(s)
- 05h put new command line into the input buffer
- DS:SI -> new command line (ASCIZ string, max 66 chars)
- 06h process new command line
- DS:SI -> new command line (ASCIZ string, max 66 chars)
- else treat like code 00h
- Note: this function must end with a far call to the old INT 2F handler if the
- driver does not support the key in BX. Otherwise, the driver must
- not chain to the old INT 2F.
- SeeAlso: AX=D103h
- --------G-2FD1-------------------------------
- INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
- AH = D1h
- AL = 05h-0Ah
- Note: these functions are reserved for future use
- --------G-2FD110-----------------------------
- INT 2F - MDEBUG command driver - GET ADDRESS OF THE OLD INT 2F
- AX = D110h
- Return: DL = FFh
- ES:BX -> next program in the chain for INT 2F
- CX = code segment of this driver
- DI = offset of driver identification table (see #03079) (v1.60+)
- Notes: only called by the transient part of the driver
- must be reentrant and the driver must not chain this function to the
- old INT 2F
- Format of the MDEBUG driver identification table:
- Offset Size Description (Table 03079)
- 00h 26 BYTEs signature "Kommandotreiber f�r MDEBUG"
- ^- Note: ASCII 129,German U-umlaut
- 27h 12 BYTEs name of driver, e.g. "MDHISDRV.COM"
- each driver must have a unique name
- --------G-2FD111-----------------------------
- INT 2F - MDEBUG command driver - START DRIVER
- AX = D111h
- Return: DL = FFh
- Notes: only called by the transient part of the driver to inform the resident
- part that it is installed
- the function must be reentrant and the driver mustn't chain this
- function to the old INT 2F
- SeeAlso: AX=D101h,AX=D112h
- --------G-2FD112-----------------------------
- INT 2F - MDEBUG command driver - END DRIVER
- AX = D112h
- Return: DL = FFh
- Notes: only called by the transient part of the driver to inform the resident
- part that it will be released after this function
- the function must be reentrant and the driver mustn't chain this
- function to the old INT 2F
- SeeAlso: AX=D101h,AX=D111h
- --------G-2FD1-------------------------------
- INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
- AH = D1h
- AL = 13h-7Fh
- Note: these functions are reserved for future use
- --------G-2FD1-------------------------------
- INT 2F - MDEBUG command driver - USER DEFINED FUNCTIONS
- AH = D1h
- AL = 80h-FFh
- Note: these functions are reserved for user defined features (e.g.
- communication between the transient und resident parts of the driver)
- --------U-2FD200-----------------------------
- INT 2F - PCL-838.EXE - INSTALLATION CHECK
- AX = D200h
- Return: AL = FFh if installed??? (documented as AX = return value)
- Program: PCL-838 is a resident utility for controlling a stepmotor adapter
- board by Advantec
- SeeAlso: AX=D201h"PCL-838",AX=D202h"PCL-838"
- --------Q-2FD200BX5144-----------------------
- INT 2F - Quarterdeck RPCI - INSTALLATION CHECK
- AX = D200h
- BX = 5144h ("QD")
- CX = 4D45h ("ME")
- DX = 4D30h ("M0")
- Return: AL = FFh installed
- if BX,CX,DX registers were as specified on entry:
- BX = 4D45h ("ME")
- CX = 4D44h ("MD")
- DX = 5652h ("VR")
- Range: AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
- Notes: the Quarterdeck RPCI (Resident Program Communication Interface) is
- supported by QEMM v5.0+, QRAM, MANIFEST, VIDRAM, etc.
- for AL <> 0, if the BX/CX/DX values don't match the identifier of a
- Quarterdeck product, it just chains to the previous INT 2F handler
- SeeAlso: AX=D201h/BX=4849h,AX=D201h/BX=4D41h,AX=D201h/BX=4D45h
- SeeAlso: AX=D201h/BX=5145h,AX=D201h/BX=5649h
- --------U-2FD201-----------------------------
- INT 2F - PCL-838.EXE - UNINSTALL
- AX = D201h
- Return: AX = return value
- SeeAlso: AX=D200h"PCL-838",AX=D202h"PCL-838"
- --------m-2FD201BX4849-----------------------
- INT 2F - Quarterdeck RPCI - GET QD HIMEM PRESENCE
- AX = D201h
- BX = 4849h ("HI")
- CX = 4D45h ("ME")
- DX = 4D51h ("MQ")
- Return: BX = 4F4Bh ("OK")
- ES:DI -> HIMEM entry point
- Range: AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
- SeeAlso: AX=D200h,AX=D201h/BX=5145h
- --------m-2FD201BX4849-----------------------
- INT 2F - Quarterdeck RPCI - QEMM/QRAM v5.0+ - GET HIRAM MEMORY CHAIN
- AX = D201h
- BX = 4849h ("HI")
- CX = 5241h ("RA")
- DX = 4D30h ("M0")
- Return: BX = 4F4Bh ("OK")
- CX = segment of start of HIRAM chain
- DX = reserved block owner (QEMM/QRAM code segment)
- Range: AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
- Note: the HIRAM memory chain has the same format as the regular DOS 4.0
- memory chain (see #01628 at INT 21/AH=52h), except that XMS Upper
- Memory Blocks have the block header program name field set to
- "UMB"; blocks whose "owner" field is set to the reserved segment
- returned in DX are locked-out regions such as video memory and ROMs.
- SeeAlso: AX=12FFh/BX=0006h,AX=D200h
- --------G-2FD201BX4D41-----------------------
- INT 2F U - Quarterdeck RPCI - MANIFEST v1.0+ - INSTALLATION CHECK
- AX = D201h
- BX = 4D41h ("MA")
- CX = 4E49h ("NI")
- DX = 4645h ("FE")
- Return: BX = 5354h ("ST") if installed
- Range: AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
- SeeAlso: AX=D200h
- --------E-2FD201BX4D45-----------------------
- INT 2F U - Quarterdeck RPCI - DVDOS4GX.DVR - ???
- AX = D201h
- BX = 4D45h ("ME")
- CX = 5155h ("QU")
- DX = 5044h ("PD")
- Return: AL = FFh
- BX = 4F4Bh ("OK")
- Range: AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
- Note: this function is called by QEMM 6.03
- performs a variety of actions before setting return registers
- SeeAlso: AX=D200h
- --------m-2FD201BX5145-----------------------
- INT 2F - Quarterdeck RPCI - QEMM v5.0+ - INSTALLATION CHECK
- AX = D201h
- BX = 5145h ("QE")
- CX = 4D4Dh ("MM")
- DX = 3432h ("42")
- Return: BX = 4F4Bh ("OK")
- ES:DI -> QEMM API entry point (see INT 67/AH=3Fh)
- Range: AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
- Note: this call is not available under QEMM v6.00 unless Windows3 support
- has been disabled with the NW3 switch to QEMM386.SYS
- SeeAlso: AX=D200h,AX=D201h/BX=4849h,INT 67/AH=3Fh
- --------V-2FD201BX5649-----------------------
- INT 2F u - Quarterdeck RPCI - VIDRAM v5.0+ - INSTALLATION CHECK
- AX = D201h
- BX = 5649h ("VI")
- CX = 4452h ("DR")
- DX = 414Dh ("AM")
- Return: BX = 4F4Bh ("OK")
- ES:DI -> VIDRAM entry point (see #03080)
- Range: AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
- SeeAlso: AX=D200h
- (Table 03080)
- Call VIDRAM entry point with:
- AH = 00h get status
- Return: AL = VIDRAM state (see #03081)
- BL = extra RAM status (see #03082)
- BH = feature flags (see #03083)
- CL = current monitor (01h = mono, 80h = color)
- SI = current top of memory (paragraph)
- DI = segment of start of HiRAM chain
- AH = 01h setup
- AL = VIDRAM state (see #03081)
- BL = extra RAM status (see #03082)
- BH = feature flags (see #03083)
- CL = monitor (01h = monochrome, 80h = color)
- SI = new top of memory (paragraph)
- DI = segment of start of HiRAM chain
- AH = 02h get end address of VIDRAM code
- Return: ES:DI -> VIDRAM partial map context (see #03084,#03085)
- Return: CF set on error
- CF clear if successful
- (Table 03081)
- Values for VIDRAM state:
- 00h off
- 01h no EGA graphics
- 02h no graphics at all
- (Table 03082)
- Values for VIDRAM extra RAM status:
- 00h VIDRAM does not use extra RAM
- 01h VIDRAM uses EMS as extra RAM
- 02h VIDRAM uses EGA as extra RAM
- Bitfields for VIDRAM feature flags:
- Bit(s) Description (Table 03083)
- 0 override enabled
- 1 mapped memory detected in A000h-B000h range
- 2 top of memory not at 640K
- 3 MDA detected
- 4 high RAM exists in video area
- 5 mapped memory detected in video area
- 6-7 reserved???
- Format of VIDRAM partial map context (EMS 3.2):
- Offset Size Description (Table 03084)
- 00h BYTE EMS version ID (32h)
- 01h WORD EMM handle for this entry
- 03h BYTE number of frames
- 04h BYTE first page frame
- 05h WORD offset from ES to previously saved map
- Format of VIDRAM partial map context (EMS 4.0):
- Offset Size Description (Table 03085)
- 00h BYTE EMS version ID (40h)
- 01h WORD mappable segment count
- 03h N WORD mappable segments
- WORD offset to previously saved map???
- --------U-2FD202-----------------------------
- INT 2F - PCL-838.EXE - EXECUTE PCL838 COMMANDS
- AX = D202h
- CX:BX -> parameter table
- Return: AX = return value
- SeeAlso: AX=D200h"PCL-838",AX=D201h"PCL-838"
- --------R-2FD300BX4562-----------------------
- INT 2F U - TeleReplica - INSTALLATION CHECK
- AX = D300h
- BX = 4562h
- CX = 2745h
- DX = serial port I/O base address??? (03F8h for v3.9)
- Return: SI = segment of resident code
- AX = 251Dh
- BX = DF21h
- CX = F321h
- DX = ???
- --------R-2FD3CB-----------------------------
- INT 2F U - LapLink Quick Connect v6 - API
- AX = D3CBh
- CX = function
- 0002h get ???
- Return: BX:AX -> ???
- CL = ???
- CH = ???
- DX = ???
- DI = COM1 I/O port???
- SI = COM2 I/O port???
- 0003h initialization???
- 0004h ???
- 0005h initialization???
- 0006h reset/clear ???
- Return: AX = 0000h
- ES:DI -> next byte after ??? cleared by this call
- 0007h initialization???
- 0008h uninstall
- Return: BX = status
- 0000h successful
- FFFFh incomplete, stub remains in memory
- Return: CX = 534Bh (except function 0002h)
- Index: uninstall;LapLink Quick Connect
- --------K-2FD3D3BH00-------------------------
- INT 2F - KDRIVE v2.x - INSTALLATION CHECK
- AX = D3D3h
- BH = 00h
- Return: BX = 3D3Dh if installed
- CF clear if installed
- AX = driver ID??? (returns 0087h for KDRIVE.EXE and 0880h for
- KDRIVOS2.EXE in one examined version)
- Program: KDRIVE is a shareware extended German keyboard driver by Martin
- Austermeier, originally based on K3 by Martin Gerdes as published
- in c't magazine 7/1988
- --------l-2FD44D-----------------------------
- INT 2F - 4DOS.COM v2.1+ - API
- AX = D44Dh
- BH = function
- 00h installation check
- Return: AX = 44DDh
- BL = major version number
- BH = minor version number
- CX = PSP segment address for current invocation
- DL = 4DOS shell number (0 for the first (root) shell,
- updated each time a new copy is loaded)
- 01h (internal, v2.1-3.03) terminate current copy of 4DOS
- Return: nothing
- (internal, v4.0+) ???
- Return: AX = 44DDh
- ES:BX -> data area (see #03086)
- 02h ???
- DX = ???
- Note: v5.52 signals "unrecoverable error" and then terminates
- with INT 21/AH=4Ch or enters a deliberate infinite
- loop if ???
- ---v2.1-3.03 only---
- 03h EXEC program
- CX:DX -> EXEC record (see #03087)
- FEh deallocate shell number (passed through to root shell)
- ???
- FFh allocate shell number (passed through to root shell)
- ---v5.52---
- 03h get ???
- BL = ??? (00h/01h)
- Return: DX = current value of ???
- 04h set ???
- BL = ??? (00h/01h)
- DX = new value for ???
- Note: a bug in v3.00 will crash the system if unrecognized value in BH
- SeeAlso: AX=D44Eh,AX=D44Fh/BX=0000h,AX=E44Dh,INT 21/AX=4403h"DOS"
- SeeAlso: INT 14/AX=7000h
- Index: installation check;4DOS|installation check;NDOS
- Format of 4DOS v4.0 data area:
- Offset Size Description (Table 03086)
- 00h 2 BYTEs ???
- 06h WORD XMS handle for swapping
- ???
- SeeAlso: #03087
- Format of 4DOS EXEC v2.1-v3.03 record:
- Offset Size Description (Table 03087)
- 00h WORD offset of ASCIZ program name in same segment as EXEC record
- 02h WORD offset of DOS commandline in same segment as EXEC record
- 04h WORD segment of environment for child process (see INT 21/AH=26h)
- SeeAlso: #03086
- --------l-2FD44E-----------------------------
- INT 2F C - 4DOS v3.0+ - AWAITING USER INPUT
- AX = D44Eh
- ---4DOS v3.01+---
- BX = condition
- 0000h 4DOS is ready to display prompt
- 0001h 4DOS has displayed the prompt, about to accept user input
- Return: the handler must preserve SI, DI, BP, SP, DS, ES, and SS
- Note: v3.00 only makes the call corresponding to BX=0001h, does not set BX
- SeeAlso: AX=D44Dh
- --------K-2FD44FBX0000-----------------------
- INT 2F - 4DOS v4.0+ - KSTACK.COM - INSTALLATION CHECK
- AX = D44Fh
- BX = 0000h
- Return: AX = 44DDh if installed
- Note: this function is also supported by ANSIPLUS v3.01+ and K3PLUS v6.20+,
- which emulate the 4DOS and NDOS keystack
- SeeAlso: AX=D44Dh,AX=D44Fh/BX=0001h,AX=E44Fh/BX=0000h
- --------K-2FD44FBX0001-----------------------
- INT 2F - 4DOS v4.0+ - KSTACK.COM - PLACE KEYSTROKES INTO KEYSTACK
- AX = D44Fh
- BX = 0001h
- CX = number of keystrokes (01h-FFh)
- DS:DX -> keystroke list (one word per keystroke)
- Return: AX = status
- 0000h successful
- nonzero failed
- BX,CX,DX destroyed
- Notes: the keystrokes are the exact values to return from subsequent calls to
- INT 16 with AH=00h,01h,10h, or 11h, with the following exceptions:
- 0000h causes subfunctions 01h and 11h to indicate an empty
- keyboard buffer
- FFFFh is followed by a word indicating the number of clock
- ticks to delay before the next faked keystroke
- v4.00 KSTACK overwrites any unread keystrokes from the previous
- invocation, and does not range-check CX; it will overwrite memory
- following the resident portion if CX is greater than 100h.
- this function is also supported by ANSIPLUS v3.01+ and K3PLUS v6.20+,
- which emulate the 4DOS and NDOS keystack
- SeeAlso: AX=D44Dh,AX=D44Fh/BX=0000h,INT 16/AH=00h,INT 21/AX=4403h"DOS"
- --------G-2FD600-----------------------------
- INT 2F - HEART.COM - INSTALLATION CHECK
- AX = D600h
- Return: AX = 0303h (two hearts) if installed
- ES:DI -> buffer (see #03088)
- Program: HEART.COM is a CPU lock-up/critical indicator utility by Mitch Davis.
- Notes: Once the host program has identified the address of the data area, it
- can change this to indicate safe/critical, alternate colours, etc.
- The entries for the color table are in char/attrib form. Every two
- entries form a pair which is alternated between 68 times a minute.
- The first half of the table is for color videos, the second mono.
- Within each half, the first half is for the safe chars, and the
- second for the critical chars.
- Format of HEART.COM buffer:
- Offset Size Description (Table 03088)
- 00h 8 WORDs table of colors/attributes (refer to notes above)
- 10h BYTE flags
- bit 0: program is in critical section, so flash double
- exclamation mark
- bit 1: program is in safe code, so flash the heart character
- 11h WORD position of heartbeat on screen, normally 009Eh (last column
- of second line)
- --------T-2FD600-----------------------------
- INT 2F U - VEDIT VSWAP - INSTALLATION CHECK
- AX = D600h
- Return: AL = D6h if installed
- Program: VSWAP is the resident portion of VEDIT's "swapper" capability; VEDIT
- is a programmer's text editor by Greenview Data.
- SeeAlso: AX=D601h,AX=D602h
- --------T-2FD601-----------------------------
- INT 2F U - VEDIT VSWAP - ???
- AX = D601h
- BL = subfunction number???
- Return: BL = return code ???
- ES = resident portion's data??? segment
- DX = resident portion's code segment
- SeeAlso: AX=D600h"VSWAP"
- --------T-2FD602-----------------------------
- INT 2F U - VEDIT VSWAP - EXEC PROGRAM WITH SWAP
- AX = D602h
- other registers set as for INT 21/AX=4B00h
- Return: CF set on error
- AL = error code
- 82h = failure due to ???
- CF clear on success
- SeeAlso: AX=D600h"VSWAP",INT 21/AH=4Bh"EXEC"
- --------N-2FD701BX0000-----------------------
- INT 2F - Banyan VINES v4+ - GET BANV INTERRUPT NUMBER
- AX = D701h
- BX = 0000h
- Return: AX = 0000h if installed
- BX = interrupt number (60h to 66h)
- nonzero not present
- Note: if AX is nonzero, VINES 3.x or earlier may be installed, thus it is
- necessary to examine the four bytes preceding the handlers for
- INT 60 through INT 66 for the string "BANV"
- SeeAlso: AX=D702h,AX=D703h,AX=D704h
- --------N-2FD702-----------------------------
- INT 2F U - Banyan VINES v4+ - PCPRINT interface
- AX = D702h
- BX = function
- ???
- Return: ???
- SeeAlso: AX=D701h,AX=D703h,INT 61/AX=0005h"Banyan"
- --------N-2FD703-----------------------------
- INT 2F U - Banyan VINES v4+ - MAIL interface
- AX = D703h
- BX = function
- ???
- Return: ???
- SeeAlso: AX=D702h,AX=D704h
- --------N-2FD704-----------------------------
- INT 2F U - Banyan VINES v4+ - Streettalk Directory Assistance interface
- AX = D704h
- BX = function
- ???
- Return: ???
- SeeAlso: AX=D703h,INT 61/AX=0007h/BX=0002h"Banyan",INT 61/AX=0007h/BX=0008h
- --------N-2FD800-----------------------------
- INT 2F U - Novell NetWare Lite - CLIENT.EXE - INSTALLATION CHECK
- AX = D800h
- Return: AL = FFh if installed
- DX = version number (0100h for v1.0, 0101h for v1.1)
- BX = data segment of resident copy
- ES:DI -> private API entry point (see #03089)
- SI = segment of resident code
- SeeAlso: AX=7A00h,AX=D880h
- (Table 03089)
- Call CLIENT API entry point with:
- BX = function
- 0000h get ???
- Return: DX = CLIENT version??? (0101h for v1.1)
- ES:BX -> ??? data
- 0001h ???
- 0002h ???
- 0003h ???
- 0004h ???
- 0005h ???
- DL = ???
- ???
- Return: ???
- 0006h get module name???
- ES:DI -> 16-byte buffer
- Return: CX = ???
- ES:DI filled with "NWLITE_CLIENT" 00h 00h 00h
- 0007h ???
- DX:CX = ???
- ???
- Return: ???
- 0008h ???
- 0009h ???
- DL = ???
- ES:DI -> 16-byte buffer for ???
- Return: CF clear if successful
- AX = 0000h
- CX = 0000h
- SI,DI destroyed
- CF set on error
- AX = error code 4903h
- 000Ah ???
- AH = subfunction
- 00h get ???
- 01h clear/set ??? flag
- AL = new state (00h cleared, 01h set)
- 02h set ???
- DX = new value of ???
- Return: DX = old value of ???
- 000Bh ???
- AX = ???
- ???
- Return: ???
- 000Ch ???
- AX = ???
- ???
- Return: ???
- 000Dh ???
- AX = ???
- ???
- Return: ???
- 000Eh get original INT 17
- Return: CF clear
- ES:BX -> original INT 17
- 000Fh ???
- 0010h ???
- AX = ???
- ???
- Return: ???
- 0011h get ???
- Return: CF clear
- DL = ???
- 0012h get ???
- AL = index of ???
- ES:DI -> 10-byte buffer for ???
- Return: CF clear if successful
- ES:DI buffer filled
- AX,CX destroyed
- CF set on error
- AX = error code (4907h if AL out of range)
- 0013h get ???
- Return: CF clear
- DH = ???
- DL = ???
- 0014h ???
- DL = ???
- ???
- Return: CF clear if successful
- ???
- CF set on error
- AX = error code 8056h
- 0015h ???
- DX = ???
- Return: ES:DI -> ???
- other
- Return: CF set
- AX = 0001h (invalid function)
- --------N-2FD856-----------------------------
- INT 2F U - Novell NetWare Lite v1.1 - SERVER - GET ???
- AX = D856h
- Return: AX = 0001h if supported???
- BX = ??? (0004h for v1.1)
- CX = ??? (0F20h for v1.1)
- DS = segment of resident code
- ES = data segment of resident copy
- Note: this function is also supported by Personal NetWare SERVER, bundled
- with Novell DOS 7
- --------N-2FD880-----------------------------
- INT 2F U - Novell NetWare Lite v1.0+ - SERVER - INSTALLATION CHECK
- AX = D880h
- Return: AL = FFh if installed
- DX = version number (binary, DH = major, DL = minor)
- BX = data segment of resident copy
- CL = current state (00h SERVER is disabled, 01h SERVER is active)
- ES:DI -> private API entry point (see #03090)
- SI = ??? (offset of configuration info?)
- AH may be destroyed
- Note: this function is also supported by Personal NetWare SERVER, but DI is
- not set; instead, ES:SI points at the API entry point
- SeeAlso: AX=7A00h,AX=D800h,INT 2A/AX=D852h
- (Table 03090)
- Call SERVER API entry point with:
- BX = function
- 0000h ???
- ???
- Return: ???
- Note: closes open files by calling INT 21/AH=3Eh
- 0001h get connection information
- DX = connection number (0001h-max connections)
- ES:DI -> 28-byte buffer for connection information
- Return: CF clear if successful
- ES:DI buffer filled
- CF set on error
- AX = FFFFh
- ---Personal NetWare only---
- 0002h ???
- 0003h ???
- 0004h ???
- 0005h ???
- 0006h ???
- 0007h ???
- other
- Return: CF set
- AX = 0001h (invalid function)
- --------d-2FD8C0-----------------------------
- INT 2F U - Novell NLCACHE,NWCACHE - INSTALLATION CHECK
- AX = D8C0h
- Return: AL = FFh if installed
- CL = cache variant (01h NLCACHEC, 02h NLCACHEX, 03h NLCACHEM)
- DH = major version??? (01h for v1.1)
- DL = minor version??? (01h for v1.1)
- ES:DI -> private API entry point (see #03091)
- Program: NLCACHE is a disk cache included with NetWare Lite
- SeeAlso: AX=D800h,AX=D880h
- (Table 03091)
- Call NLCACHE/NWCACHE API entry point with:
- BX = function
- 0000h ???
- ???
- Return: CF clear if successful
- AX = 0000h
- ???
- CF set on error
- AX = error code
- 0001h (NWCACHE only) ???
- ES:DI -> buffer for ???
- Return: ???
- other
- Return: CF set
- AX = 0001h (invalid function)
- --------F-2FDA00-----------------------------
- INT 2F - ZyXEL ZFAX v1.x - INSTALLATION CHECK
- AX = DA00h
- Return: AH = enabled state (00h = enabled, 01h = disabled)
- AL = 5Ah installed
- Program: ZFAX is the bundled FAX software which comes with the ZyXEL model
- fax modems.
- Note: This function, and the other DAxxh functions, may apply only to version
- 1 of the software; see AX=DB00h for the version 2 installation check
- SeeAlso: AX=CBDCh,AX=DA01h,AX=DA02h,AX=DA03h,AX=DB00h
- --------F-2FDA01-----------------------------
- INT 2F - ZyXEL ZFAX v1.x - UNINSTALL
- AX = DA01h
- Return: AL = 00h Success
- 01h Failure
- SeeAlso: AX=DA00h,AX=DB01h
- --------F-2FDA02-----------------------------
- INT 2F - ZyXEL ZFAX v.1x - DISABLE
- AX = DA02h
- Return: AL = 00h
- SeeAlso: AX=DA03h,AX=DB02h
- --------F-2FDA03-----------------------------
- INT 2F - ZyXEL ZFAX v1.x - ENABLE
- AX = DA03h
- Return: AL = 00h
- SeeAlso: AX=DA02h,AX=DB03h
- --------G-2FDA55-----------------------------
- INT 2F U - TRAP.COM - INSTALLATION CHECK
- AX = DA55h
- DL = interrupt number
- DH = ???
- Return: if installed
- AH = interrupt number
- AL = ???
- ES:BX -> ???
- Program: TRAP is an interrupt call tracer by Patrick Phillipot/Udo Chrosziel
- Note: a separate copy of TRAP is loaded for each interrupt to be traced; thus
- the interrupt number is part of the installation check
- --------N-2FDAB2-----------------------------
- INT 2F U - Beame&Whiteside BWSNMP - INSTALLATION CHECK
- AX = DAB2h
- Return: AX = 00FFh if installed
- BX:CX -> MIB table
- Program: BWSNMP is part of the BW-NFS package
- SeeAlso: INT 62/AH=00h"ETHDEV"
- --------F-2FDB00-----------------------------
- INT 2F - ZyXEL ZFAX v2+ - INSTALLATION CHECK
- AX = DB00h
- Return: AL = 5Bh if installed (v2.x)
- ES:BX -> configuration table???
- AX = 00DBh if installed (v3)
- ES:BX -> ZFAX configuration table (see #03092)
- Program: ZFAX is the bundled FAX software which comes with the ZyXEL model
- Fax modems.
- SeeAlso: AX=CBDCh,AX=DA00h,AX=DB01h,AX=DB02h,AX=DB03h
- Format of ZFAX Configuration Table:
- Offset Size Description (Table 03092)
- 00h WORD table version number (0300h for v3.0-v4.01)
- 02h BYTE reserved
- 03h 70 BYTEs ZFAX working path
- 49h 128 BYTEs path to external editor
- C9h 128 BYTEs path to external terminal emulator
- 149h 128 BYTEs path to Ring Shell
- 1C9h 128 BYTEs path to DOS Shell
- 249h 128 BYTEs path to Data Shell
- 2C9h 70 BYTEs path to Chinese font
- 30Fh BYTE printer type (see #03093)
- 310h BYTE printer port (00h = LPT1, etc.)
- 311h BYTE type of graphics adapter
- (00h auto-detect, 01h VGA, 02h EGA, 03h CGA, 04h Hercules)
- 312h BYTE display type
- (00h auto-detect, 01h LCD, 02h color, 03h mono)
- 313h BYTE scan code for ZFAX hotkey (see #00006)
- 314h BYTE shift mask for ZFAX hotkey
- 315h BYTE tone/pulse dialing (00h tone, 01h pulse)
- 316h BYTE Caller ID (00h disabled, 01h enabled)
- 317h BYTE Distinctive Ring (00h disabled, 01h enabled)
- 318h BYTE normal ring answer type (see #03094)
- 319h BYTE Ring 1 answer type (see #03094)
- 31Ah BYTE Ring 2 answer type (see #03094)
- 31Bh BYTE Ring 3 answer type (see #03094)
- 31Ch BYTE COM port for modem
- 31Dh BYTE speaker volume (00h-07h)
- 31Eh BYTE modem dial timer, seconds
- 31Fh WORD user-defined COM port I/O address
- 321h BYTE user-defined COM port IRQ number
- 322h 81 BYTEs dial prefix string
- 373h 79 BYTEs dial postfix string
- 3C2h BYTE ring count until automatic answer
- 3C3h BYTE retry count on busy signal
- 3C4h BYTE redial delay in seconds
- 3C5h WORD system password
- 3C7h BYTE reserved
- 3C8h BYTE voice file compression format
- 00h CELP at 9600bps
- 01h two-bit ADPCM at 19200bps
- 02h three-bit ADPCM at 28800bps
- 3C9h BYTE voice system: DTMF 0 action (see #03095)
- 3CAh BYTE voice system: DTMF 1 action
- 3CBh BYTE voice system: DTMF 2 action
- 3CCh BYTE voice system: DTMF 3 action
- 3CDh BYTE voice system: DTMF 4 action
- 3CEh BYTE voice system: DTMF 5 action
- 3CFh BYTE voice system: DTMF 6 action
- 3D0h BYTE voice system: DTMF 7 action
- 3D1h BYTE voice system: DTMF 8 action
- 3D2h BYTE voice system: DTMF 9 action (see #03095)
- 3D3h WORD reserved
- 3D5h 25 BYTEs local FAX ID to display on page header
- 3EEh 20 BYTEs local FAX ID sent to remote FAX
- 402h BYTE FAX page size
- 00h A4 (210x297mm)
- 01h B4 (250x353mm)
- 02h A3 (297x420mm)
- 403h BYTE FAX resolution
- 00h normal (3.85 pixels/mm)
- 01h high (7.7 pixels/mm)
- 404h BYTE FAX coding scheme
- 00h 1-D, modified Huffman coding
- 01h 2-D, modified READ coding
- 405h BYTE left margin for text in millimeters
- 406h BYTE vertical insertion for text in mm (0-20)
- 407h BYTE horizontal insertion in mm (0-20)
- 408h BYTE maximum text lines per page
- 409h BYTE text type (00h ASCII, 01h WordStar-formatted)
- 40Ah BYTE PCX image resize (00h disabled, 01h enabled)
- 40Bh BYTE AutoPrint (00h disabled, 01h enabled)
- 40Ch BYTE cover page (00h disabled, 01h enabled)
- 40Dh 81 BYTEs cover page logo filename
- 45Eh 65 BYTEs cover page sender name
- 49Fh BYTE print capture (00h disabled, 01h enabled)
- 4A0h BYTE send immediately (00h disabled, 01h enabled)
- 4A1h BYTE print capture printer port
- 4A2h BYTE print capture timer in seconds
- 4A3h BYTE scan code for print capture hotkey (see #00006)
- 4A4h BYTE shift mask for print capture hotkey
- 4A5h BYTE DataShell type
- 00h internal Zmodem, 01h Data Shell, 02h disable
- 4A6h BYTE video I/O type
- 00h auto-detect, 01h use BIOS, 02h direct writes
- 4A7h BYTE call transfer digits (0-9)
- 4A8h WORD voice recorder maximum time in seconds (0-999)
- (Table 03093)
- Values for ZFAX printer type:
- 00h EPSON FX (9 pins)
- 01h EPSON LQ (24 pins)
- 02h HP Laser Jet II, letter size
- 03h HP Laser Jet II, legal size
- 04h HP Laser Jet II, A4 size
- 05h HP Laser Jet III, letter size
- 06h HP Laser Jet III, legal size
- 07h HP Laser Jet III, A4 size
- SeeAlso: #03092
- (Table 03094)
- Values for Ring Answer Type:
- 00h voice system
- 01h FAX only
- 02h Data Shell
- 03h Ring Shell
- 04h DOS Shell
- 05h ignore
- SeeAlso: #03092
- (Table 03095)
- Values for DTMF action:
- 00h none
- 01h page operator
- 02h FaxBack
- 03h announcement
- 04h call transfer
- 05h receive FAX
- 06h receive data
- 07h voice mailbox
- 08h DOS Shell Out
- 09h Data Shell Out
- SeeAlso: #03092
- --------U-2FDB00-----------------------------
- INT 2F U - WINGO.COM - INSTALLATION CHECK
- AX = DB00h
- Return: AX = FFFFh if installed
- CX = 5749h ('WI') if installed
- DX = 4E47h ('NG') if installed
- ES = segment of resident code
- Program: WINGO.COM is TSR for starting Windows programs from DOS
- prompt (together with companion Windows program
- WINSTART.EXE) written by Douglas Boling, contributing editor of
- PC Magazine
- Range: AH=DBh to AH=FFh, selected by scanning for a free multiplex number
- SeeAlso: AX=DB01h"WINGO",AX=DB02h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
- SeeAlso: AX=DB05h"WINGO",AX=DB06h"WINGO"
- --------F-2FDB01-----------------------------
- INT 2F - ZyXEL ZFAX v2+ - UNINSTALL
- AX = DB01h
- Return: AX = status
- 0000h successful
- 0001h ZFAX is busy
- 0002h another program resident above ZFAX
- Note: this function unhooks the vectors taken by the ZFAX TSR if they have
- not been hooked by other TSRs and releases the TSR's memory
- ZFAX v2.x crashes the contributor's machine when this function is
- called
- SeeAlso: AX=DA01h,AX=DB00h"ZFAX",AX=DB02h"ZFAX"
- --------U-2FDB01-----------------------------
- INT 2F U - WINGO.COM - SET CALLBACK FUNCTION POINTER
- AX = DB01h
- CX:DX -> new callback function
- Return: AX = 0000h
- CX:DX -> end of resident code (stack ???)
- Desc: the callback function is used for WINGO <-> WINSTART communication
- SeeAlso: AX=DB00h"WINGO",AX=DB02h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
- SeeAlso: AX=DB05h"WINGO",AX=DB06h"WINGO"
- --------F-2FDB02-----------------------------
- INT 2F - ZyXEL ZFAX v2.x - DISABLE
- AX = DB02h
- Return: AL = 00h
- SeeAlso: AX=DA02h,AX=DB00h"ZFAX",AX=DB01h"ZFAX",AX=DB03h"ZFAX"
- --------U-2FDB02-----------------------------
- INT 2F U - WINGO.COM - RESET CALLBACK FUNCTION POINTER
- AX = DB02h
- Return: AX = 0000h
- Desc: the callback function is used for WINGO <-> WINSTART communication
- SeeAlso: AX=DB00h"WINGO",AX=DB01h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
- SeeAlso: AX=DB05h"WINGO",AX=DB06h"WINGO"
- --------F-2FDB03-----------------------------
- INT 2F - ZyXEL ZFAX v2.x - ENABLE
- AX = DB03h
- Return: AL = 00h
- SeeAlso: AX=DA03h,AX=DB00h"ZFAX",AX=DB02h"ZFAX"
- --------U-2FDB03-----------------------------
- INT 2F U - WINGO.COM - SET ??? FLAG
- AX = DB03h
- Return: AX = 0000h
- SeeAlso: AX=DB00h"WINGO",AX=DB04h"WINGO",AX=DB05h"WINGO",AX=DB06h"WINGO"
- --------U-2FDB04-----------------------------
- INT 2F U - WINGO.COM - RESET ??? FLAG
- AX = DB04h
- Return: AX = 0000h
- SeeAlso: AX=DB00h"WINGO",AX=DB03h"WINGO",AX=DB05h"WINGO",AX=DB06h"WINGO"
- --------U-2FDB05-----------------------------
- INT 2F U - WINGO.COM - GET ??? FLAG
- AX = DB05h
- Return: AX = 0000h
- DX = unknown flag - 0 or 1
- Program: WINGO.COM is TSR for starting Windows programs from DOS
- prompt (together with companion Windows program
- WINSTART.EXE) written by Douglas Boling, contributing editor of
- PC Magazine
- SeeAlso: AX=DB00h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
- --------U-2FDB06-----------------------------
- INT 2F U - WINGO.COM - CALL CALLBACK FUNCTION
- AX = DB06h
- Return: AX = return value of INT 2F/AX=1685h
- Note: uses Windows service INT 2F/AX=1685h (SWITCH VMs AND CALLBACK) to
- call the callback function previously set by AX=DB01h
- used for WINGO <-> WINSTART communication
- SeeAlso: AX=1685h, AX=DB00h"WINGO",AX=DB01h"WINGO",AX=DB02h"WINGO",
- SeeAlso: AX=DB03h"WINGO",AX=DB04h"WINGO",AX=DB05h"WINGO"
- --------F-2FDB10-----------------------------
- INT 2F - ZyXEL ZFAX v3+ - EXECUTE ZFAX MAIN MENU
- AX = DB10h
- SeeAlso: AX=DB00h"ZFAX",AX=DB11h"ZFAX"
- --------F-2FDB11-----------------------------
- INT 2F - ZyXEL ZFAX v3+ - SEND FAX
- AX = DB11h
- DS:SI -> filename including path (max 128 characters)
- DS:BX -> remote FAX number
- Return: AX = status (see #03096)
- SeeAlso: AX=DB00h"ZFAX",AX=DB12h,AX=DB13h,AX=DB14h,AX=DB15h,AX=DB20h,AX=DB21h
- (Table 03096)
- Values for ZFAX status:
- 00h OK
- 01h invalid DOS function
- 02h file not found
- 03h path not found
- 04h no file handle available
- 05h access denied by DOS
- 06h invalid handle
- 07h disk full
- 10h printer error
- 11h no graphics font
- 12h no ZFAX font
- 20h DCD dropped while sending
- 21h not ZyXEL modem
- 22h busy
- 23h no response from COM port
- 24h no carrier
- 25h no dial tone
- 26h no answer
- 27h no response
- 28h failed to send FAX
- 30h user aborted
- 40h critical error on disk
- 50h parameter error
- --------F-2FDB12-----------------------------
- INT 2F - ZyXEL ZFAX v3+ - PRINT FAX
- AX = DB12h
- DS:SI -> filename, including path (max 128 characters)
- Return: AX = status (see #03096)
- SeeAlso: AX=DB11h,AX=DB13h,AX=DB14h
- --------F-2FDB13-----------------------------
- INT 2F - ZyXEL ZFAX v3+ - CONVERT FAX
- AX = DB13h
- DS:SI -> source filename, including path (max 128 characters)
- DS:BX -> destination filename, including path (max 80 characters)
- CX = destination file format
- 00h FAX, 01h PCX, 02h TIFF, 03h PRN
- Return: AX = status (see #03096)
- SeeAlso: AX=DB11h,AX=DB12h,AX=DB14h,AX=DB22h
- --------F-2FDB14-----------------------------
- INT 2F - ZyXEL ZFAX v3+ - VIEW FAX
- AX = DB14h
- DS:SI -> source filename, including path (max 128 characters)
- Return: AX = status (see #03096)
- SeeAlso: AX=DB11h,AX=DB12h,AX=DB14h
- --------F-2FDB15-----------------------------
- INT 2F - ZyXEL ZFAX v4.01 - SEND FAX WITH LOGO AND SIGNATURE
- AX = DB15h
- DS:SI -> source filename, including path (max 128 characters)
- DS:BX -> remote FAX number
- DS:CX -> Logo filename
- DS:DX -> Signature filename
- Return: AX = status (see #03096)
- SeeAlso: AX=DB00h"ZFAX",AX=DB11h
- --------F-2FDB16-----------------------------
- INT 2F - ZyXEL ZFAX v4.01 - QUOTE PREVIOUS STATUS
- AX = DB16h
- Return: DX:AX -> previous receive state transaction log (see #03097)
- BX = type (00h incoming FAX, 01h incoming data, 02h incoming voice)
- SeeAlso: AX=DB00h"ZFAX",AX=DB11h,AX=DB17h
- Format of ZFAX transaction log receive state:
- Offset Size Description (Table 03097)
- 00h WORD year
- 02h WORD date
- 04h WORD time
- 06h WORD extension number
- 08h WORD type: 00h incoming FAX, 01h outgoing FAX, 02h voice message
- 0Ah WORD status: 00h normal, 01h remote delete
- 0Ch 125 BYTEs filename
- 89h 24 BYTEs caller ID
- A1h 20 BYTEs FAX number
- B5h 20 BYTEs remote FAX ID
- C9h WORD error code
- CBh WORD connection direction (00h transmit, 01h receive)
- CDh BYTE connection time minutes
- CEh BYTE connection time seconds
- CFh BYTE ???
- D0h WORD connection speed (24, 48, 72, 96, 12, 144)
- D2h WORD connection page size (A4, B4, A3)
- D4h WORD connection coding scheme (1-DN, 1-DH, 2-DN, 2-DH)
- D6h WORD page count
- --------F-2FDB17-----------------------------
- INT 2F - ZyXEL ZFAX v4.01 - BEGIN RECEIVING INCOMING CALL
- AX = DB17h
- Return: AX = status (0000h successful, 0001h unable to start at this time)
- SeeAlso: AX=DB00h"ZFAX"
- --------F-2FDB18-----------------------------
- INT 2F - ZyXEL ZFAX v4.01 - SCHEDULE CALL
- AX = DB18h
- DS:SI -> schedule data (see #03097)
- Return: AX = status (see #03096)
- SeeAlso: AX=DB00h"ZFAX"
- --------F-2FDB20-----------------------------
- INT 2F - ZyXEL ZFAX v3+ - POLL FAX
- AX = DB20h
- DS:SI -> remote FAX number
- Return: AX = status (see #03096)
- SeeAlso: AX=DB11h,AX=DB21h
- --------F-2FDB21-----------------------------
- INT 2F - ZyXEL ZFAX v3+ - SEND VOICE
- AX = DB21h
- DS:SI -> filename including path (max 128 characters)
- DS:BX -> remote phone number
- Return: AX = status (see #03096)
- SeeAlso: AX=DB11h,AX=DB20h,AX=DB22h,AX=DB23h,AX=DB24h
- --------F-2FDB22-----------------------------
- INT 2F - ZyXEL ZFAX v3+ - CONVERT VOICE FILE
- AX = DB22h
- DS:SI -> source filename, including path (max 128 characters)
- DS:BX -> destination filename, including path (max 80 characters)
- CX = destination format
- 00h two-bit ADPCM, 01h three-bit ADPCM, 02h VOC
- Return: AX = status (see #03096)
- SeeAlso: AX=DB13h,AX=DB20h,AX=DB21h,AX=DB23h
- --------F-2FDB23-----------------------------
- INT 2F - ZyXEL ZFAX v3+ - RECORD VOICE FILE
- AX = DB23h
- DS:SI -> destination filename, including path (max 128 characters)
- CX = recording channel (0 = telephone line, 1 = microphone/speaker)
- DX = voice file format
- 00h CELP, 01h two-bit ADPCM, 02h three-bit ADPCM
- Return: AX = status (see #03096)
- SeeAlso: AX=DB21h,AX=DB22h,AX=DB24h
- --------F-2FDB24-----------------------------
- INT 2F - ZyXEL ZFAX v3+ - PLAY VOICE FILE
- AX = DB24h
- DS:SI -> name of voice file, including path (max 128 characters)
- CX = playback channel (0 = telephone line, 1 = microphone/speaker)
- Return: AX = status (see #03096)
- SeeAlso: AX=DB21h,AX=DB22h,AX=DB24h
- --------F-2FDB25-----------------------------
- INT 2F - ZyXEL ZFAX v3+ - ANSWER MODEM WITH VOICE SYSTEM
- AX = DB25h
- Return: AX = status (see #03096)
- SeeAlso: AX=DB21h,AX=DB22h,AX=DB26h,AX=DB27h,AX=DB28h
- --------F-2FDB26-----------------------------
- INT 2F - ZyXEL ZFAX v3+ - DIAL PHONE
- AX = DB26h
- DS:SI -> remote phone number
- Return: AX = status (see #03096)
- SeeAlso: AX=DB25h
- --------F-2FDB27-----------------------------
- INT 2F - ZyXEL ZFAX v3+ - RECEIVE FAX - ANSWER MODEM AND SET TO FAX MODE
- AX = DB27h
- Return: AX = status (see #03096)
- SeeAlso: AX=DB25h,AX=DB28h
- --------F-2FDB28-----------------------------
- INT 2F - ZyXEL ZFAX v3+ - RECEIVE FAX DATA - ANSWER MODEM IN MULTI-AUDIO MODE
- AX = DB28h
- Return: AX = status (see #03096)
- SeeAlso: AX=DB25h,AX=DB27h,AX=DB41h
- --------F-2FDB40-----------------------------
- INT 2F - ZyXEL ZFAX v3+ - INTERNAL TERMINAL
- AX = DB40h
- Return: AX = status (see #03096)
- SeeAlso: AX=DB00h
- --------F-2FDB41-----------------------------
- INT 2F - ZyXEL ZFAX v3+ - SEND DATA - DIAL NUMBER AND UPLOAD FILE WITH ZMODEM
- AX = DB41h
- DS:SI -> source file name, including path (max 128 characters)
- DS:BX -> remote data number
- Return: AX = status (see #03096)
- SeeAlso: AX=DB00h,AX=DB28h
- --------K-2FDC00-----------------------------
- INT 2F - GOLD.COM - INSTALLATION CHECK
- AX = DC00h
- Return: AL = state
- 00h not installed
- FFh installed
- Program: GOLD is a TSR by Bob Eager which makes the NumLock key return the
- code for F1; the purpose is to improve Kermit's VTxxx emulation
- --------K-2FDC01-----------------------------
- INT 2F - GOLD.COM - GET STATE
- AX = DC01h
- Return: AL = status
- 00h off
- 01h on
- SeeAlso: AX=DC00h,AX=DC02h
- --------K-2FDC02-----------------------------
- INT 2F - GOLD.COM - SET STATE
- AX = DC02h
- DL = new state
- 00h off
- 01h on
- Return: AL = 00h (OK)
- SeeAlso: AX=DC01h
- --------t-2FDD-------------------------------
- INT 2F - CappaCom programs - API
- AH = DDh
- AL = 00h general installation check
- Return: AL = FFh if any CappaCom programs are resident
- AL = FEh get info
- Return: ES:BX -> TSR info list (see #03098)
- AL = program identifier
- BH = function
- FDh get version
- Return: BX = version
- FFh installation check
- Return: AL = FFh if installed
- BX = version
- ES = segment of resident code
- others vary by program
- Return: AL = status
- bit 7 set on error
- AL = 81h unknown function
- Note: CappaCom was originally SoftCom but changed its name due to a trademark
- conflict
- Index: installation check;SoftCom programs
- Index: installation check;CappaCom programs
- Format of CappaCom TSR info list:
- Offset Size Description (Table 03098)
- 00h 9 BYTEs blank-padded ASCIZ program name
- 09h BYTE program ID
- 0Ah WORD program's PSP segment
- 0Ch WORD program version (major in high byte)
- 0Eh DWORD pointer to next item in info list or 0000h:0000h
- 12h BYTE number of interrupts hooked
- 13h 5 BYTEs interrupt numbers hooked by program
- 18h 8 BYTEs reserved
- ----------2FDD-------------------------------
- INT 2F - MIXFIX.EXE - API
- AH = DDh
- AL = function
- 00h installation check
- Return: AX = 00DDh if installed
- BX = version (BH = major, BL = minor)
- 41h/61h get From: address
- Return: AX = 0001h
- ES:BX -> ASCIZ 4d address of mail sender ("1:2/3.4")
- 49h/69h get To: address
- Return: AX = 0001h
- ES:BX -> ASCIZ 4d address of recipient ("1:2/3.4")
- 4Ah/6Ah get subject of mail
- Return: AX = 0001h
- ES:BX -> ASCIZ subject of handled mail
- 4Dh/6Dh get mail name
- Return: AX = 0001h
- ES:BX -> ASCIZ full name of current mail file
- 4Eh/6Eh get From: field
- Return: AX = 0001h
- ES:BX -> ASCIZ From: field of mail (mail sender's name)
- Program: MIXFIX by "KIV without Co" is a FidoNet mail robot which may execute
- other programs for mail handling. The called programs may use the
- services described here to retrieve information about the mail being
- handled.
- Index: installation check;MIXFIX.EXE
- --------d-2FDD--BX7844-----------------------
- INT 2F - xDISK v3.32+ - INSTALLATION CHECK
- AH = DDh
- BX = 7844h ('xD')
- CX = 4953h ('IS')
- DX = 4B3Fh ('K?')
- AL = desired drive (01h-1Ah) or 00h to check for xDISK on any drive
- ES:DI -> 25-byte data buffer (see #03099)
- Return: AX = DDFFh if installed (on specified drive if AL nonzero on entry)
- BX = 87BBh
- DX = B4C0h
- ES:DI buffer filled
- CX,CF destroyed
- SeeAlso: INT 21/AX=4404h"xDISK",INT 21/AX=4405h"xDISK"
- Format of xDISK data buffer:
- Offset Size Description (Table 03099)
- 00h DWORD pointer to ASCIZ driver signature "xDISK unit: X"
- 04h BYTE flag: 01h if disk linked to DOS, 00h if unlinked
- 05h BYTE flag: 01h if write protected, 00h if not
- 06h BYTE flag: 01h if root directory full, 00h if not
- 07h BYTE flag: 01h if free space uncompacted, 00h if compacted
- 08h BYTE resizing state: 00h not resizable, 01h resized, 80h resizable
- 09h BYTE flag: 01h inelastic resizable disk, 00h elastic
- 0Ah 2 BYTEs reserved
- 0Ch BYTE flag: 01h collapsed disk, 00h not collapsed
- 0Dh BYTE flag: 01h using all EMS, 00h some EMS free
- 0Eh BYTE flag: 01h password enabled, 00h disabled
- 0Fh BYTE flag: 01h password audio feedback, 00h no feedback
- 10h BYTE flag: 01h password video feedback, 00h no feedback
- 11h BYTE flag: 01h confirm changes, 00h no confirmation
- 12h BYTE flag: 01h terse display, 00h verbose display
- 13h BYTE flag: 01h click speaker on disk access, 00h no click
- 14h BYTE flag: 01h flash icon on disk access, 00h no icon flash
- 15h BYTE FAT entry size: 00h 12-bit, FFh 16-bit
- 16h WORD count of open files in RAM disk
- 18h BYTE unused
- --------N-2FDE00BL00-------------------------
- INT 2F U - Novell Netware - RPRINTER, NPRINTER - INSTALLATION CHECK
- AX = DE00h
- BL = 00h
- Return: AL = FFh If Rprinter/Nprinter Installed
- BX -> Program Segment Prefix N/Rprinter.exe
- --------Q-2FDE00BX4456-----------------------
- INT 2F - DESQview v2.26+ External Device Interface - INSTALLATION CHECK
- AX = DE00h
- BX = 4456h ("DV")
- CX = 5844h ("XD")
- DX = 4931h ("I1")
- Return: AL = FFh if installed (even if other registers do not match)
- if BX,CX, and DX were as specified on entry,
- BX = 4845h ("HE")
- CX = 5245h ("RE")
- DX = 4456h ("DV")
- Range: AH=C0h to AH=FFh, selected by scanning AH=DEh-FFh, then AH=C0h-DDh
- Note: the XDI handler should not issue any DOS or BIOS calls, nor should it
- issue DESQview API calls other than those allowed from hardware ints
- SeeAlso: AX=DE02h,INT 15/AX=5400h
- --------Q-2FDE01-----------------------------
- INT 2F - DESQview v2.26+ External Device Interface - DRIVER CUSTOM SUBFUNCTION
- AX = DE01h
- BX = driver ID
- other registers as needed by driver
- Notes: XDI drivers should pass this call through to previous handler if ID
- does not match
- DESQview never calls this function
- --------Q-2FDE01BX4450-----------------------
- INT 2F U - Quarterdeck QDPMI.SYS v1.0 - INSTALLATION CHECK
- AX = DE01h
- BX = 4450h ("DP")
- CX = 4D49h ("MI")
- DX = 3039h ("09")
- Return: AL = FFh if installed
- BX = 4D42h ("MB")
- CX = 4921h ("I!")
- DX = 8F4Fh
- ES:DI -> filename of DPMI host overlay
- InstallCheck: test for the existence of the character device QDPMI$$$
- SeeAlso: INT 2F/AX=1687h,INT 31/AX=0000h
- Index: installation check;QDPMI
- --------U-2FDE01BX5242-----------------------
- INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, Ralf Brown's XDI drivers
- AX = DE01h
- BX = 5242h ("RB")
- CX:DX = program identifier
- 656F7000h ("eop",0) for DVeop
- Return: AX = 5242h ("RB") if installed
- ES:BX -> data or entry point (see #03100)
- CX = version number (CH = major, CL = minor)
- (Table 03100)
- Call DVeop entry point with:
- ES:DI -> callback address or 0000h:0000h to remove callback
- Return: AX = status
- 0000h failed (callback table full or attempted to remove non-
- existent callback)
- 0001h successful
- ES:DI -> chaining address
- BX,CX,DX destroyed
- Notes: the callback function is called with a simulated interrupt when the
- DESQview window containing it is closed; it should perform all
- necessary cleanup and then perform a FAR jump to the chaining address
- or an IRET if the chaining address is 0000h:0000h
- if the program wishes to remove itself before the window is closed, it
- should call the DVeop entry point with the previously returned
- chaining address and ignore the returned chaining address.
- --------U-2FDE01BX7474-----------------------
- INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVTXDI.COM
- AX = DE01h
- BX = 7474h
- CL = function
- 00h installation check
- Return: AL = FFh
- 01h get process handle
- DX = keys on Open Window menu (DL = first, DH = second)
- Return: AX = process handle or 0000h if not running
- 02h (v1.3+) set TMAN handle
- DX = TMAN process handle
- 03h (v1.3+) set open keys to ignore on next CL=01h call
- DX = keys on Open Window menu (DL = first, DH = second)
- Return: BX = 4F4Bh ("OK")
- DL destroyed
- Note: DVTXDI is distributed as part of the shareware products DVTree (DOS
- shell/DESQview process manager) and DVTMAN by Mike Weaver
- Index: installation check;DVTXDI
- --------U-2FDE01BX7575-----------------------
- INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVSIXDI.COM
- AX = DE01h
- BX = 7575h
- CX = function
- 0000h installation check
- Return: AX = 00FFh if installed
- 0001h turn on notification (currently unused)
- Return: AX = 0001h
- 0002h turn off notification (currently unused)
- Return: AX = 0001h
- 0003h get process information
- Return: AX = status
- 0000h failed
- 0001h successful
- BX = last instantaneous time slice
- in 1/100s (v1.10)
- in 1/18s (v1.11+)
- CX = number of processes
- DX = number of "(starting)" records (v2.00+)
- SI = number of records in process info array
- (v2.00+) (always 15 for v1.x)
- ES:DI -> process info array (see #03101,#03102)
- 0004h get version
- Return: AH = major version
- AL = minor version
- 0005h (v1.10+) get time since DESQview started
- Return: DX:AX = 1/100s since DV start (v1.10)
- DX:AX = 1/18s since DV start (v1.11+)
- 0006h (v1.10+) get number of task switches
- Return: DX:AX = total task switches
- CX = task switches in last instantaneous interval
- Notes: DVSIXDI is part of the DVSI (DESQview System Information) package by
- Daniel J. Bodoh
- for v1.00, function 0003h allocates common memory, which the caller
- must deallocate after reading the process information; only the
- currently used records are placed in the buffer
- for v1.10+, function 0003h merely returns a pointer to the internal
- array of process information; the caller should make a copy of the
- array while inside a critical section (see INT 15/AX=101Bh). Only
- those records with bit 7 of the first byte set are valid.
- Index: installation check;DVSIXDI
- Format of DVSIXDI v1.00 information for one process:
- Offset Size Description (Table 03101)
- 00h BYTE flags
- bit 7: process slot is valid
- 01h WORD offset into DESQVIEW.DVO of program's record if started from
- Open Windows menu, else undefined
- 03h WORD Switch Windows window number
- 05h WORD segment of process handle
- 07h WORD number of tasks owned by process
- 09h WORD mapping context of process (see #00416 at INT 15/AX=1016h)
- 0Bh DWORD hook for other programs
- Format of DVSIXDI v1.10-v2.00 information for one process:
- Offset Size Description (Table 03102)
- 00h BYTE process flags (see #03103)
- 01h WORD Open Window keys
- 03h WORD Switch Windows number
- 05h WORD segment of process handle
- 07h WORD number of tasks for process
- 09h WORD process mapping context
- 0Bh DWORD time process started (relative to start of DESQview)
- 0Fh DWORD time process last got CPU (relative to start of DESQview)
- 13h DWORD time process last gave up CPU (relative to start of DESQview)
- 17h DWORD total CPU time since process started
- 1Bh DWORD CPU time at start of current instantaneous interval
- 1Fh DWORD CPU time in current instantaneous interval
- 23h DWORD hook for other programs
- Note: all times are in 1/100s for v1.10, in 1/18s for v1.11+
- Bitfields for DVSIXDI process flags:
- Bit(s) Description (Table 03103)
- 7 valid record
- 6 (v2.00+) record is allocated; if bit 7 clear, process is "(starting)"
- and only offsets 01h and 09h are valid
- 5 (v2.00+) this app currently owns the CPU
- 4 reserved (0)
- 3 DESQview system task
- 2 reserved (0)
- 1 task has keyboard (currently unused)
- 0 task swapped out (currently unused)
- --------Q-2FDE01BXFFFE-----------------------
- INT 2F U - DESQview v2.26+ XDI - DVXMS.DVR - ???
- AX = DE01h
- BX = FFFEh
- CX = 4D47h ("MG")
- DX = 0052h (0,"R")
- Return: AL = FFh
- DX = 584Dh
- --------Q-2FDE02-----------------------------
- INT 2F C - DESQview v2.26+ External Dev Interface - DV INITIALIZATION COMPLETE
- AX = DE02h
- BX = mapping context of DESQview
- DX = handle of DESQview system task
- Note: driver should pass this call to previous handler after doing its work
- SeeAlso: AX=DE03h,AX=DE0Fh,INT 15/AX=5400h
- --------Q-2FDE03-----------------------------
- INT 2F C - DESQview v2.26+ External Dev Interface - DV TERMINATION
- AX = DE03h
- BX = mapping context of DESQview
- DX = handle of DESQview system task
- Notes: driver should pass this call to previous handler before doing its work
- DESQview makes this call when it is exiting, but before unhooking any
- interrupt vectors
- SeeAlso: AX=DE02h,AX=DE0Fh,INT 15/AX=5407h
- --------Q-2FDE04-----------------------------
- INT 2F C - DESQview v2.26+ External Dev Interface - ADD PROCESS
- AX = DE04h
- BX = mapping context of new process (see #00416 at INT 15/AX=1016h)
- DX = handle of process
- Return: nothing
- Notes: XMS XDI handler (installed by default) allocates a 22-byte record
- (see #03104) from "common" memory to control access to XMS memory
- all DOS, BIOS, and DV API calls are valid in handler
- driver should pass this call to previous handler after processing it
- SeeAlso: AX=DE05h,AX=DE06h,INT 15/AX=5401h
- Format of XMS XDI structure:
- Offset Size Description (Table 03104)
- 00h DWORD pointer to 10-byte record???
- 04h DWORD pointer to next XMS XDI structure
- 08h WORD mapping context
- 0Ah BYTE ???
- 0Bh 5 BYTEs XMS entry point to return for INT 2F/AX=4310h"XMS"
- (FAR jump to next field)
- 10h 6 BYTEs FAR handler for XMS driver entry point
- (consists of a FAR CALL followed by RETF)
- --------Q-2FDE05-----------------------------
- INT 2F C - DESQview v2.26+ External Dev Interface - REMOVE PROCESS
- AX = DE05h
- BX = mapping context of process (see #00416 at INT 15/AX=1016h)
- DX = handle of last task in process
- Return: nothing
- Notes: XMS XDI handler releases the structure allocated by AX=DE04h
- driver should pass this call to previous handler before processing it
- all DOS, BIOS, and DV API calls except those generating a task switch
- are valid in handler
- SeeAlso: AX=DE04h,AX=DE07h,INT 15/AX=5402h
- --------Q-2FDE06-----------------------------
- INT 2F C - DESQview v2.26+ External Dev Interface - CREATE TASK
- AX = DE06h
- BX = mapping context of process containing task
- DX = handle of new task
- Notes: driver should pass this call to previous handler after processing it
- all DOS, BIOS, and DV API calls are valid in handler
- --------Q-2FDE07-----------------------------
- INT 2F C - DESQview v2.26+ External Dev Interface - TERMINATE TASK
- AX = DE07h
- BX = mapping context of process containing task
- DX = handle of task
- Notes: driver should pass this call to previous handler before processing it
- all DOS, BIOS, and DV API calls except those generating a task switch
- are valid in handler
- SeeAlso: AX=DE04h,AX=DE06h,AX=DE10h
- --------Q-2FDE08-----------------------------
- INT 2F C - DESQview v2.26+ External Dev Interface - SAVE STATE
- AX = DE08h
- BX = mapping context of task being switched from
- (see #00416 at INT 15/AX=1016h)
- DX = handle of task being switched from
- Notes: invoked prior to task swap, interrupts, etc
- driver should pass this call to previous handler after processing it
- SeeAlso: AX=DE09h,INT 15/AX=5403h,INT 15/AX=DE27h
- --------Q-2FDE09-----------------------------
- INT 2F C - DESQview v2.26+ External Dev Interface - RESTORE STATE
- AX = DE09h
- BX = mapping context of task being switched to
- (see #00416 at INT 15/AX=1016h)
- DX = handle of task being switched to
- Notes: state is restored except for interrupts
- driver should pass this call to previous handler before processing it
- SeeAlso: AX=DE08h,INT 15/AX=5404h,INT 15/AX=DE27h
- --------Q-2FDE0A-----------------------------
- INT 2F C - DESQview v2.26+ External Dev Interface - CHANGE KEYBOARD FOCUS
- AX = DE0Ah
- BX = mapping context of task receiving focus
- DX = handle of running task
- Notes: driver should pass this call to previous handler before processing it
- this call often occurs inside a keyboard interrupt
- DV 2.42 does not provide this call to XDI handlers running inside a
- window; instead, it directly calls the INT 2F handler which was
- active at the time DV started
- SeeAlso: INT 15/AX=DE26h,INT 15/AX=DE2Fh
- --------Q-2FDE0B-----------------------------
- INT 2F C - DESQview v2.26+ External Dev Interface - DVP PROCESSING COMPLETE
- AX = DE0Bh
- BX = mapping context of DESQview system task
- CX = number of system memory paragraphs required for the use of all
- XDI drivers (DV will add this to system memory in DVP buffer)
- DX = handle of DESQview system task
- SI = mapping context of new process if it starts
- ES:DI -> DVP buffer
- Return: CX incremented as needed
- Notes: once DV invokes this function, the DVP buffer contents may be changed
- driver should pass this call to previous handler before processing it
- --------Q-2FDE0C-----------------------------
- INT 2F C - DESQview v2.26+ External Dev Interface - SWAP OUT PROCESS
- AX = DE0Ch
- BX = mapping context of task being swapped out
- (see #00416 at INT 15/AX=1016h)
- DX = handle of DESQview system task
- Note: driver should pass this call to previous handler after processing it
- --------Q-2FDE0D-----------------------------
- INT 2F C - DESQview v2.26+ External Dev Interface - SWAP IN PROCESS
- AX = DE0Dh
- BX = mapping context of process just swapped in
- (see #00416 at INT 15/AX=1016h)
- DX = handle of DESQview system task
- Note: driver should pass this call to previous handler before processing it
- --------Q-2FDE0E-----------------------------
- INT 2F C - DESQview v2.26+ External Dev Interface - DVP START FAILED
- AX = DE0Eh
- BX = mapping context of DESQview system task
- DX = handle of DESQview system task
- SI = mapping context of failed process (same as for call to AX=DE0Bh)
- Note: driver should pass this call to previous handler after processing it
- --------Q-2FDE0F-----------------------------
- INT 2F C - DESQview v2.50+ External Dev Interface - INITIALIZE DV
- AX = DE0Fh
- Note: DESQview 2.50+ calls this function just before it completes its
- initialization. At the time of the call, DESQview has not yet
- changed any interrupt vectors
- SeeAlso: AX=DE02h
- --------Q-2FDE10-----------------------------
- INT 2F C - DESQview v2.50+ External Dev Interface - FREE TASK
- AX = DE10h
- BX = mapping context of process (see #00416 at INT 15/AX=1016h)
- DX = task handle of process
- Note: DESQview 2.50+ calls this function before it frees the task; it is
- similar to AX=DE07h but allows the XDI handler to make calls which
- cause context switches
- SeeAlso: AX=DE06h,AX=DE07h
- --------c-2FDF00-----------------------------
- INT 2F - HyperWare programs - INSTALLATION CHECK
- AX = DF00h
- BX = product code (see #03105)
- CX = 0000h
- DX = 0000h
- Return: AL = status
- 00h not installed
- FFh multiplex number in use
- CX = 5948h ('YH') if selected product installed
- ---HyperDisk---
- BX = code segment of resident portion
- DX = HyperDisk local data version
- Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
- Range: AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
- SeeAlso: INT 13/AX=8EEDh
- Index: installation check;HyperDisk|installation check;HyperStb
- Index: installation check;HyperKey|installation check;HyperScreen
- Index: HyperDisk;installation check|HyperStb;installation check
- Index: HyperKey;installation check|HyperScreen;installation check
- (Table 03105)
- Values for HyperWare product code:
- 4248h ('BH') HyperStb
- 4448h ('DH') HyperDisk v4.20+
- 4B48h ('KH') HyperKey
- 5348h ('SH') HyperScreen
- --------Q-2FDF00BX5445-----------------------
- INT 2F U - Quarterdeck TELTSR.COM - INSTALLATION CHECK
- AX = DF00h
- BX = 5445h ('TE')
- CX = 4C54h ('LT')
- DX = 5352h ('SR')
- Return: BX = 5454h ('TT') if installed
- CX = 494Eh ('IN') if installed
- DX = 5454h ('ST') if installed
- Program: TELTSR is a Telnet TSR included with Quarterdeck's DESQview/X v2.00
- which provides an INT 14h interface to the network
- Range: AH=DEh to AH=FFh and AH=C0h to AH=DDh, selected by scanning
- SeeAlso: AX=DF01h"TELTSR",AX=DF02h"TELTSR",INT 14/AH=56h
- --------N-2FDF01BX0000-----------------------
- INT 2F U - MSG.COM - INSTALLATION CHECK
- AX = DF01h
- BX = 0000h
- Return: AX = FDFFh if installed
- BX = segment of resident code
- Program: MSG.COM is a TSR for intercepting incoming Novell broadcast
- messages written by Gary Dobbins (Dobbins@Arizona.Edu)
- --------c-2FDF01BX4448-----------------------
- INT 2F - HyperDisk v4.50+ - GET CURRENT CACHE STATE
- AX = DF01h
- BX = 4448h ('DH')
- Return: AX = 0000h if function supported
- BX = number of cache buffers in use
- CX = number of cache buffers which have been modified
- DL = caching flags (see #03106)
- Range: AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
- SeeAlso: AX=DF00h,AX=DF02h
- Bitfields for HyperDisk caching flags:
- Bit(s) Description (Table 03106)
- 0 staged writes enabled for floppy disks
- 1 staged writes enabled for hard disks
- 2 writes verified on floppy disks
- 3 writes verified on hard disks
- 4 reserved (0)
- 5 reserved (0)
- 6 floppy caching enabled
- 7 all caching functions enabled
- --------Q-2FDF01-----------------------------
- INT 2F U - Quarterdeck TELTSR.COM - CLOSE CONNECTION
- AX = DF01h
- Return: nothing???
- Note: invokes the DESQview/X socket API (see INT 15/AX=DE2Eh) function 0006h
- to close the socket corresponding to the file handle set with
- AX=DF02h; NOP if no file handle was ever set
- SeeAlso: AX=DF00h"TELTSR",AX=DF02h"TELTSR"
- --------c-2FDF02BX4448-----------------------
- INT 2F - HyperDisk v4.50+ - SET CACHE STATE
- AX = DF02h
- BX = 4448h ('DH')
- DL = new caching flags (see #03106)
- Return: AX = 0000h if supported
- BX = number of cache buffers in use
- CX = number of cache buffers which have been modified
- DL = previous caching flags (see #03106)
- Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
- Range: AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
- SeeAlso: AX=DF00h,AX=DF01h
- --------Q-2FDF02-----------------------------
- INT 2F U - Quarterdeck TELTSR.COM - OPEN CONNECTION
- AX = DF02h
- BX = file handle for connection's socket
- Return: AX = status
- 0000h successful
- FFFFh no more room in TELTSR's JFT
- Program: TELTSR is a Telnet TSR included with Quarterdeck's DESQview/X v2.00
- Notes: the indicated file handle becomes owned by TELTSR, and is closed in
- the caller's JFT
- multiple calls to this function will override the previous assignment
- without closing the previous file; use AX=DF01h before further calls
- SeeAlso: AX=DF00h"TELTSR",AX=DF01h"TELTSR"
- --------U-2FE000-----------------------------
- INT 2F - SETDRVER.COM v2.10+ - INSTALLATION CHECK
- AX = E000h
- Return: AX = 4A52h ("JR") if present
- Program: SETDRVER is a public domain TSR by Jacob Rieper which sets the
- apparent DOS version analogously to MS-DOS SETVER
- Notes: this installation check differs from the usual one of returning AL=FFh
- the SETDRVER API is fully emulated by Matthias Paul's FREEVER
- SeeAlso: AX=E000h/DX=4D50h,AX=E001h,INT 21/AH=52h
- --------j-2FE000-----------------------------
- INT 2F - KAOSHIDE - INSTALLATION CHECK
- AX = E000h
- Return: AL = FFh if installed
- Program: KAOSHIDE ('Hidden Kaos') is a PD joke TSR which randomly capitalizes
- alphabetic keys, written by Philip Maland. Although not a virus,
- v2.0 uses some viral-like techniques to hide itself from
- memory-reports by reducing DOS memory size.
- --------U-2FE000DX4D50-----------------------
- INT 2F - FREEVER v1.0+ - INSTALLATION CHECK
- AX = E000h
- DX = 4D50h ('MP')
- Return: AL = FFh if installed
- AH = AMIS INT 2Dh multiplex ID
- CX = FREEVER version (CH=major, CL=minor)
- DX:DI -> AMIS-compliant signature (see #02569)
- (vendor ID is "M. Paul ", program name is "FREEVER ")
- Program: FREEVER is an AMIS-conformant freeware DOS version-faking TSR similar
- to SETVER for any DOS-compatible OS, written by Matthias Paul
- Note: FREEVER emulates INT 21/AH=30h, INT 21/AX=3306h, INT 21/AX=4412h,
- INT 21/AX=4452h, and SETDRVER's API on INT 2F/AX=E00xh, as well as
- providing an AMIS API on INT 2Dh
- SeeAlso: AX=E000h"SETDRVER",INT 21/AH=30h,INT 21/AX=3306h,INT 21/AX=4452h
- --------K-2FE000DX5354-----------------------
- INT 2F - StuffIt v3.21+ - INSTALLATION CHECK
- AX = E000h
- DX = 5354h ("ST")
- Return: AL = FFh if installed
- BX = version (BH = major, BL = BCD minor)
- DX = segment of resident code
- Program: StuffIt is a freeware delayed keyboard stuffer by Terje Mathisen
- --------U-2FE001-----------------------------
- INT 2F - SETDRVER.COM v2.10+ - GET SETDRVER VERSION
- AX = E001h
- Return: AH = major version
- AL = minor version
- Note: the SETDRVER API is fully emulated by Matthias Paul's FREEVER, which
- returns version 2.10 for this call; use AX=E000h/DX=45D0h to get
- FREEVER's version number
- SeeAlso: AX=E000h,AX=E000h/DX=45D0h
- --------U-2FE002-----------------------------
- INT 2F - SETDRVER.COM v2.10+ - GET ORIGINAL DOS VERSION INFO
- AX = E002h
- Return: AL = FFh if successful
- BH = major DOS version
- BL = minor DOS version
- CH = DOS version flag
- CL = OEM number
- DH = major DR DOS version number (FFh if unknown)
- DL = minor DR DOS version number (FFh if unknown)
- SeeAlso: AX=E003h,AX=E007h,INT 21/AH=30h
- --------U-2FE003-----------------------------
- INT 2F - SETDRVER.COM v2.10+ - RESET INTERNAL VARIABLES
- AX = E003h
- BH = new major DOS version
- BL = new minor DOS version
- CH = new DOS version flag
- CL = new DOS revision number
- DH = new OEM number
- SeeAlso: AX=E002h
- --------U-2FE004-----------------------------
- INT 2F - SETDRVER.COM v2.10+ - ENABLE TSR
- AX = E004h
- Return: AL = FFh if successful
- SeeAlso: AX=E000h,AX=E005h,AX=E006h
- --------U-2FE005-----------------------------
- INT 2F - SETDRVER.COM v2.10+ - DISABLE TSR
- AX = E005h
- Return: AL = FFh if successful
- SeeAlso: AX=E000h,AX=E004h,AX=E006h
- --------U-2FE006-----------------------------
- INT 2F - SETDRVER.COM v2.10+ - GET TSR STATUS
- AX = E006h
- Return: AL = FFh if successful
- BL = status
- 01h resident and active
- 02h resident and inactive
- --------U-2FE007-----------------------------
- INT 2F - SETDRVER.COM v2.10+ - GET TaskMAX STATUS AT INSTALLATION
- AX = E007h
- Return: AL = FFh if successful
- BL = status
- 00h if TaskMAX not loaded before SETDRVER
- FFh if TaskMAX was loaded before SETDRVER
- SeeAlso: AX=E003h
- --------U-2FE0-------------------------------
- INT 2F - SETDRVER.COM - RESERVED FOR FUTURE USE
- AH = E0h
- AL = 08h-10h
- --------K-2FE100-----------------------------
- INT 2F - Phantom2 v1.1+ - INSTALLATION CHECK
- AX = E100h
- Return: AX = 0001h if installed
- DS:SI -> ASCIZ hotkey name
- DS:DI -> ASCIZ recording filename
- Program: Phantom of the Keyboard II is a shareware keystroke recorder/replayer
- by P2 Enterprises
- SeeAlso: AX=E101h,AX=E102h,AX=E103h,AX=E300h
- Index: hotkeys;Phantom2
- --------K-2FE101-----------------------------
- INT 2F - Phantom2 v1.1+ - FUNCTION REQUEST
- AX = E101h
- BX = function mask (see #03107)
- CX = code for hotkey (as returned by INT 16/AH=00h) if BX bit 6 set
- DS:DX -> ASCIZ filespec if BX bit 7 set
- SeeAlso: AX=E100h
- Index: hotkeys;Phantom2
- Bitfields for Phantom2 function mask:
- Bit(s) Description (Table 03107)
- 0 record
- 1 play
- 2 QuickPlay
- 3 loop
- 4 mode display toggle
- 5 sound toggle
- 6 set hotkey
- 7 set filespec
- --------K-2FE102-----------------------------
- INT 2F - Phantom2 v1.1+ - UNINSTALL
- AX = E102h
- Return: AX = status
- 0001h removal successful
- 0002h not installed as TSR
- FFFFh disabled but not removed
- SeeAlso: AX=E100h
- --------K-2FE103-----------------------------
- INT 2F - Phantom2 v2.8 - SET ??? FLAG
- AX = E103h
- Return: AX = 0001h
- SeeAlso: AX=E100h
- --------y-2FE200-----------------------------
- INT 2F - SecureDevice - LOGIN TO DRIVE
- AX = E200h
- DL = drive number (0 = A:)
- DS:SI -> 104-byte key
- Return: AL = status
- 00h unable to determine key's validity
- 01h key is valid
- FFh key is invalid
- Program: SecureDevice is a copylefted device driver by Max Loewenthal and
- Arthur Helwig which turns one or more disk files into encrypted
- logical drives
- SeeAlso: AX=E201h,AX=E203h,AX=E209h
- --------y-2FE201-----------------------------
- INT 2F - SecureDevice - GET INFORMATION
- AX = E201h
- DX = driver index (0000h = first loaded)
- Return: AL = number of volumes handled by driver
- DL = drive number of first volume (00h = A:)
- SeeAlso: AX=E200h,AX=E203h,AX=E209h
- --------y-2FE203-----------------------------
- INT 2F - SecureDevice - DESTROY PASSWORD (LOGOUT FROM DRIVE)
- AX = E203h
- DL = drive number (00h = A:) or FFh for all drives
- Return: nothing
- SeeAlso: AX=E200h,AX=E209h
- --------y-2FE209DX0000-----------------------
- INT 2F - SecureDevice - INSTALLATION CHECK
- AX = E209h
- DX = 0000h
- Return: AX = 1DEAh if installed
- DX = number of drivers installed
- --------K-2FE300-----------------------------
- INT 2F - ANARKEY.COM - INSTALLATION CHECK
- AX = E300h
- Return: AL = state
- 00h not installed
- FEh if installed but suspended (v3.0+)
- FFh installed
- Program: ANARKEY.COM is a commandline recall program by Steven Calwas
- Range: AH=C0h to AH=FFh, selected by commandline switch
- SeeAlso: AX=E100h,AX=E301h,AX=E302h,AX=E303h,AX=E304h,AX=E305h,AX=E306h
- SeeAlso: AX=E307h,INT 66"Newkey"
- --------V-2FE300-----------------------------
- INT 2F - Blank - INSTALLATION CHECK
- AX = E300h
- Return: AL = FFh if installed
- ES = resident code segment
- Program: Blank is a shareware screen blanker by Yonah Schmeidler
- Note: AH=E3h is the default, which may be reconfigured by the installation
- program in the registered version
- SeeAlso: AH=93h,AX=C050h,INT 14/AX=AA01h
- Index: screen saver;Blank
- --------K-2FE301-----------------------------
- INT 2F U - ANARKEY.COM v2+ - GET ???
- AX = E301h
- Return: DX:BX -> ??? (see #03108,#03109)
- SeeAlso: AX=E300h
- Format of returned data structure for ANARKEY v2.0:
- Offset Size Description (Table 03108)
- -7 7 BYTEs signature ('ANARKEY')
- 00h WORD ??? (I see 0001h in v2.0)
- 02h WORD ??? (I see 0001h in v2.0)
- 04h WORD ??? (I see 0 in v2.0)
- 06h WORD PSP segment of next program loaded
- Format of returned data structure for ANARKEY v3+:
- Offset Size Description (Table 03109)
- -1 BYTE multiplex number
- 00h WORD ??? (I see 0001h in v3.0-4.0)
- 02h WORD ??? (I see 0001h in v3.0-4.0)
- 04h BYTE ??? (I see 0 in v3.0-4.0)
- 05h WORD PSP segment of next program loaded
- --------K-2FE302-----------------------------
- INT 2F U - ANARKEY.COM v3+ - ???
- AX = E302h
- BL = ???
- Return: ???
- SeeAlso: AX=E300h
- --------K-2FE303-----------------------------
- INT 2F U - ANARKEY.COM v3+ - ANARKMD API
- AX = E303h
- BL = function
- 01h toggle insert mode
- 02h display contents of history buffer
- 03h write history buffer to file
- ES:DX -> file name
- 04h clear history buffer
- 05h undefine all aliases
- 06h show aliases
- 07h list programs using Unix switchar
- 08h jump to bottom of history buffer
- 09h (v4.0) add string to history buffer
- ES:DX -> ASCIZ string
- 0Ah (v4.0) ???
- ES:DX -> ???
- 0Bh (v4.0) copy string to edit buffer for use as next input line
- ES:DX -> ASCIZ string
- 0Ch (v4.0) ???
- 0Dh (v4.0) copy ??? to ???
- 0Eh (v4.0) ???
- 0Fh (v4.0) ???
- 10h (v4.0) set ??? flag
- 11h (v4.0) display error message about running in EMS under Windows
- Return: ???
- SeeAlso: AX=E300h
- --------K-2FE304-----------------------------
- INT 2F U - ANARKEY.COM v2+ - ???
- AX = E304h
- BL = ???
- Return: ???
- SeeAlso: AX=E300h
- --------K-2FE305-----------------------------
- INT 2F U - ANARKEY.COM v3+ - ENABLE/SUSPEND ANARKEY
- AX = E305h
- BL = new state
- 01h suspended
- 00h enabled
- SeeAlso: AX=E300h
- --------K-2FE306-----------------------------
- INT 2F U - ANARKEY.COM v4.0 - GET ???
- AX = E306h
- Return: AX = ???
- SeeAlso: AX=E300h
- --------K-2FE307-----------------------------
- INT 2F U - ANARKEY.COM v4.0 - GET ???
- AX = E307h
- Return: AX = ???
- BL = ???
- SeeAlso: AX=E300h
- --------K-2FE337-----------------------------
- INT 2F - INT16.COM - INSTALLATION CHECK
- AX = E337h
- Return: AX = 0013h if installed
- Program: INT16.COM is an INT16 keyboard BIOS replacement for
- INT 16/AH=00h-02h,10h-12h (based on K3) written by Martin Gerdes
- and published in c't 05/1990.
- SeeAlso: AX=ED58h
- --------l-2FE44D-----------------------------
- INT 2F - NDOS - API
- AX = E44Dh
- Program: NDOS is a version of 4DOS licensed to Symantec for inclusion in the
- Norton Utilities
- Note: as NDOS is a licensed version of 4DOS v3.03, the API is identical to
- that for 4DOS, except that AH=E4h instead of D4h and the installation
- check returns AX=44EEh instead of AX=44DDh
- SeeAlso: AX=D44Dh,AX=E44Eh
- --------l-2FE44E-----------------------------
- INT 2F C - NDOS - AWAITING USER INPUT
- AX = E44Eh
- BX = condition
- 0000h NDOS is ready to display prompt
- 0001h NDOS has displayed the prompt, about to accept user input
- Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS
- SeeAlso: AX=E44Dh
- --------K-2FE44FBX0000-----------------------
- INT 2F - NDOS v4.0+ - KSTACK.COM - INSTALLATION CHECK
- AX = E44Fh
- BX = 0000h
- Return: AX = 44EEh if installed
- Program: NDOS is a version of 4DOS licensed to Symantec for inclusion in the
- Norton Utilities
- Note: this function is also supported by ANSIPLUS v3.01+ and K3PLUS v6.20+,
- which emulate the 4DOS and NDOS keystack
- SeeAlso: AX=D44Fh/BX=0000h,AX=E44Fh/BX=0001h
- --------K-2FE44FBX0001-----------------------
- INT 2F - NDOS v4.0+ - KSTACK.COM - PLACE KEYSTROKES INTO KEYSTACK
- AX = E44Fh
- BX = 0001h
- CX = number of keystrokes (01h-FFh)
- DS:DX -> keystroke list (one word per keystroke)
- Return: AX = status
- 0000h successful
- nonzero failed
- BX,CX,DX destroyed
- Notes: the keystrokes are the exact values to return from subsequent calls to
- INT 16 with AH=00h,01h,10h, or 11h, with the following exceptions:
- 0000h causes subfunctions 01h and 11h to indicate an empty
- keyboard buffer
- FFFFh is followed by a word indicating the number of clock
- ticks to delay before the next faked keystroke
- v4.00 KSTACK overwrites any unread keystrokes from the previous
- invocation, and does not range-check CX; it will overwrite memory
- following the resident portion if CX is greater than 100h.
- this function is also supported by ANSIPLUS v3.01+ and K3PLUS v6.20+,
- which emulate the 4DOS and NDOS keystack
- SeeAlso: AX=E44Fh/BX=0000h,INT 16/AH=00h,INT 21/AX=4403h"DOS"
- --------U-2FE600CL30-------------------------
- INT 2F - Virtual 486 - INSTALLATION CHECK
- AX = E600h
- CL = 30h
- BX = C0DEh
- Return: BX = DEC0h if installed
- Program: Virtual 486 is a 80486 CPU emulator for an 80386 by Solar Designer
- ----------2FE700BX4158-----------------------
- INT 2F - Multiplex - ??? - INSTALLATION CHECK???
- AX = E700h
- BX = 4158h ("AX")
- CX = 4953h ("IS")
- DX = 4845h ("HE")
- Return: AL = FFh if installed
- BX = 4C4Fh ("LO") if ??? installed
- CX = 4F4Bh ("OK")
- DX = 4F55h ("OU")
- ES:DI -> ???
- Range: AH=C0h to AH=FFh, selected by scanning AH=E7-FFh, then AH=C0h-E6h
- Note: called by QDPMI when its Real to Protected Mode Switch Entry Point
- is called
- --------f-2FE77EBX0000-----------------------
- INT 2F - CTDEMN - INSTALLATION CHECK
- AX = E77Eh
- BX = 0000h
- CX = 4F4Dh ('OM')
- DX = 5453h ('TS')
- Return: AX = 7EE7h if installed
- BX = resident code segment
- CX = 6F6Dh ('om')
- DX = 7473h ('ts')
- Program: CTDEMN is a file daemon TSR by Simultan AG
- --------E-2FED00-----------------------------
- INT 2F - Phar Lap DOS EXTENDERS - INSTALLATION CHECK
- AX = ED00h
- BL = DOS extender ID (see #03110)
- Return: AL = status
- 00h not installed
- FFh installed
- SI = 5048h ("PH")
- DI = 4152h ("AR")
- CH = major version number
- CL = minor version number
- DX = flags
- bit 0: running under DPMI
- bit 1: running under Phar Lap VMM
- if running under DPMI:
- BX = DPMI version (BH = major, BL = minor)
- SeeAlso: AH=A1h,AX=F100h,AX=FBA1h
- (Table 03110)
- Values for Phar Lap DOS extender ID:
- 01h 286dosx v1.3+ (Software Development Kit)
- 02h 286dosx v1.3+ (Run-Time Kit)
- 03h 386dosx v4.0+ (SDK)
- 04h 386dosx v4.0+ (RTK)
- --------E-2FED03-----------------------------
- INT 2F R - Phar Lap 386/DOS-Extender v4.1 - GET EXTENDER ENTRY POINT
- AX = ED03h
- CX = real-mode code segment
- DX = real-mode data segment
- Return: CF clear if successful
- CX = protected-mode code segment selector
- DX = protected-mode data segment selector
- ES:DI -> real-mode entry point for calling protected-mode functions
- (see INT 21/AX=250Dh)
- CF set on error
- AX = error code
- 0008h unable to allocate LDT descriptors
- --------E-2FED10BL05-------------------------
- INT 2F - Pharlap DOS Extender - ???
- AX = ED10h
- BL = 05h
- ES:SI -> ??? structure
- Return: AX = ???
- SI = ???
- DI = ???
- SeeAlso: AX=ED00h,AX=ED11h
- --------E-2FED11BL05-------------------------
- INT 2F - Pharlap DOS Extender - FATAL EXIT TO REAL MODE ???
- AX = ED11h
- BL = 05h
- CX = ???
- DX = ???
- ES:SI -> ??? structure
- SS:SP = new stack ???
- Return: ???
- Note: called immediately prior to terminating program with INT 21/AX=4CFFh
- SeeAlso: AX=ED00h,AX=ED10h
- --------K-2FED58-----------------------------
- INT 2F U - K5.COM - INSTALLATION CHECK
- AX = ED58h
- Return: AX = 000Dh if installed
- ES = resident code segment
- BX = ??? (9999h)
- ???
- Program: K5 is an extended keyboard driver by Martin Gerdes, based on his K3
- SeeAlso: AX=E337h,INT 16/AX=AF20h
- --------E-2FED80-----------------------------
- INT 2F - Phar Lap 286|DOS Extender Lite v2.5 - ???
- AX = ED80h
- BL = DOS extender ID (see #03110)
- SI = 5048h ("PH")
- DI = 4152h ("AR")
- ???
- Return: ???
- --------O-2FEDC8BX0000-----------------------
- INT 2F - Novell ??? - INSTALLATION CHECK???
- AX = EDC8h ('EDC' = Novell European Development Center)
- BX = 0000h
- CX = 0000h
- DX = 1234h
- Return: ???
- Desc: called by Novell DOS 7 LOCK command during installation; purpose
- unknown
- --------y-2FEE00-----------------------------
- INT 2F - GRIDLOC.EXE - INSTALLATION CHECK
- AX = EE00h
- Return: AL = FFh if installed
- Program: GRIDLOC is a PC security program by Intelligent Security Systems, Inc.
- SeeAlso: INT 21/AH=40h"NB.SYS"
- --------U-2FEE00-----------------------------
- INT 2F - XVIEW - INSTALLATION CHECK
- AX = EE00h
- Return: AX = 00FFh if installed
- Program: XVIEW is a hypertext viewer by Flambeaux Software, Inc.
- --------N-2FEE00-----------------------------
- INT 2F - WEB v4.02 - INSTALLATION CHECK
- AX = EE00h
- Return: AL = status
- 00h not installed
- FFh installed
- Program: WEB is an IPX-based peer-to-peer network by Webcorp.
- SeeAlso: AH=EEh"WEB",AX=EEF0h
- --------U-2FEE01-----------------------------
- INT 2F - XVIEW - POP UP GIVING TOPIC SEARCH KEYWORD
- AX = EE01h
- DS:DX -> ASCIZ string containing case-insensitive keyword to look up
- Return: AX = status (see #03111)
- Note: the specified keyword should be a hyperlink in the _IndexPage of some
- database; the current database is searched first
- SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE03h,AX=EE04h,AX=EE06h
- (Table 03111)
- Values for XVIEW function status:
- 0000h successful
- 00F1h unknown subfunction
- 00F2h unable to pop up
- --------U-2FEE02-----------------------------
- INT 2F - XVIEW - POP UP GIVING A PAGE NUMBER
- AX = EE02h
- DX = physical page number or anchor page number (see #03112)
- Return: AX = status (see #03111)
- Note: physical page numbers are assigned by the hypertext compiler, and
- will change if a page is inserted in the middle
- SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE05h,AX=EE06h
- (Table 03112)
- Values for XVIEW anchor page number:
- FFEAh _Credits
- FFECh _SearchTopics
- FFEDh _SearchText
- FFF0h _ManualList
- FFF5h _HelpOnHelp
- FFF8h _HomePage
- FFF9h _IndexPage
- --------U-2FEE03-----------------------------
- INT 2F - XVIEW - POP UP GIVING FILENAME AND SEARCH TOPIC OR PAGE NUMBER
- AX = EE03h
- DS:DX -> data packet (see #03113)
- Return: AX = status (see #03111)
- SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE06h
- Format of XVIEW data packet:
- Offset Size Description (Table 03113)
- 00h DWORD -> ASCIZ database filespec (0000h:0000h for current database)
- 04h DWORD -> ASCIZ text to look up or 0000h:0000h
- 08h WORD page number (0000h if keyword used)
- 0Ah 6 BYTEs reserved
- --------U-2FEE04-----------------------------
- INT 2F - XVIEW - POP UP AND READ SCREEN FOR SEARCH TOPIC KEYWORD
- AX = EE04h
- Return: AX = status (see #03111)
- Note: equivalent to the action taken when the user presses the Alt-L hotkey
- SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE03h,AX=EE06h
- --------U-2FEE05-----------------------------
- INT 2F - XVIEW - POP UP TO MOST-RECENTLY VIEWED PAGE
- AX = EE05h
- Return: AX = status (see #03111)
- Note: equivalent to the action taken when the user presses the Alt-H hotkey
- SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE06h
- --------U-2FEE06-----------------------------
- INT 2F - XVIEW - WAIT FOR POP-DOWN AND GET EXIT CODE
- AX = EE06h
- Return: AX = status (see also AX=EE01h)
- 0001h specified filename is not an xText database
- 0002h no databases found
- 0003h bad data in file
- 0004h memory shortage
- 0005h unable to open the requested file
- 0007h invalid page number for file
- Note: although this call is not required, the exit code can alert the
- caller to problems; if the call is not made, the program should
- enforce a delay of about 1/2 second to allow the viewer to pop up,
- and should not get keyboard input or attempt disk accesses during
- the delay
- SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE03h,AX=EE04h,AX=EE05h
- --------N-2FEE-------------------------------
- INT 2F - WEB v4.02 - WEB MODULE INSTALLATION CHECK
- AH = EEh
- AL = module ID (see #03114)
- Return: AX = 0000h if installed
- ES:DI -> far entry point for module-specific API calls
- (see #03115,#03116,#03117,#03118,#03119)
- Program: WEB is an IPX-based peer-to-peer network by Webcorp.
- SeeAlso: AX=EE00h"WEB"
- (Table 03114)
- Values for WEB module ID:
- 10h server module (SERVER.EXE)
- 20h client module (CLIENT.EXE)
- 30h mail module (MAIL.EXE)
- 40h spooler (PCSPOOL.EXE)
- 50h kernel module (KERNEL.EXE)
- 60h SAP module (KERNEL.EXE)
- 70h resident station manager (SM.EXE)
- 90h router module (ROUTER.EXE)
- (Table 03115)
- Call server module entry point with:
- BX = function
- 0000h remove server module
- Return: AX = status (0000h if successful, else WEB error code)
- 0001h create SYSINFO file
- Note: the SYSINFO file is used by the station manager when
- displaying info for a particular station
- 0002h get server object table
- Return: CX = number of server objects
- ES:DI -> server object table
- Note: server objects include drives and devices that the
- server module controls
- 0003h get server variables
- Return: ES:DI -> server variables
- (Table 03116)
- Call client module entry point with:
- BX = function
- 0000h remove client module
- Return: AX = status (0000h if successful, else WEB error code)
- 0001h decrement client-only flag
- 0002h increment client-only flag
- 0005h set device capture
- Note: decrements DeviceOutput flag, telling the spooler that
- it may trap device output again
- 0006h clear device capture
- Note: increments DeviceOutput flag, telling the spooler that
- it should not trap device output (this is used
- internally by the spooler to prevent it from trapping
- its own output)
- 0007h get client debug pointer
- Return: ES:DI -> client debug data structure (see #03120)
- 0008h get root drive
- Return: AL = WEB startup drive
- 0009h get maximum possible drive/device redirections
- Return: AL = maximum drive redirections
- CH = maximum LPTx redirections
- CL = maximum COMx redirections
- 000Ah suspend client
- Return: AX = previous value of Suspend flag
- 000Bh resume client
- Return: AX = previous value of Suspend flag
- 000Ch get instance data
- CX = maximum number of structures in array
- ES:DI -> buffer for array of WIN_INSTANCE_DATA structures
- (see #03121)
- Return: CX = number of structures actually returned
- Note: used internally by WEB4WIN
- (Table 03117)
- Call mail module entry point with:
- BX = function
- 0000h remove mail module
- Return: AX = status (0000h successful, else WEB error code)
- 0001h set mail poll
- Note: schedules the WEB mail module
- 0002h set mail notify
- Note: sets the Notify flag, which determines whether the
- user will be notified when mail is received
- 0003h clear mail notify
- Note: clears the Notify flag, which determines whether the
- user will be notified when mail is received
- 0004h check whether new mail has arrived
- Return: AL = new mail status
- 00h no new mail since last call
- else new mail has arrived
- Note: also clears the new-mail flag after retrieving it
- 0005h send notify
- ES:DI -> name of WEB user to be notified
- 0006h get post office
- Return: ES:DI -> full network path of Post Office subdirectory
- (Table 03118)
- Call spooler entry point with:
- BX = function
- 0000h remove PCSpool module
- Return: AX = status (0000h successful, else WEB error code)
- 0001h set spooler poll
- Note: schedules the WEB spooler
- 0002h check spooler changed
- Return: AX = 0000h
- Note: this call is a NOP in current versions of WEB
- (Table 03119)
- Call kernel entry point with:
- BX = function
- 0000h remove kernel module
- Return: AX = status (0000h successful, else WEB error code)
- 0001h set kernel ^S filter
- DL = new state (00h don't filter ^S, nonzero do filter)
- 0002h get kernel data area
- Return: ES:DI -> kernel data area
- 0003h display dialog box
- CL = dialog box type
- 00h password
- 01h E-Note received notification
- 02h Novell login
- 03h general notification
- DL = number of rows to display
- ES:SI -> array of far pointers to rows to be displayed
- ES:DI -> Pascal-style input buffer
- Return: AX = status (0000h successful, else error code)
- 0004h kernel service events
- 0005h get kernel's in-critical-section flag
- Return: ES:DI -> kernel InCriticalSection flag
- 0006h schedule DOS event
- AL = directive
- 00h do not ignore WEB ExtraBusy flag
- 01h ignore ExtraBusy flag
- 02h (WEB4WIN) check that current Windows VM is foregrnd VM
- ES:SI -> WEB AES Event Control Block (ECB) (see #03122)
- Notes: the WEB Asynchronous Event Scheduler is similar to the
- one used by IPX; this call schedules a special ECB
- to be executed at a later time. Unlike IPX ECBs,
- the timeout must be set explicitly by the caller
- this function also calls function 0004h
- 0007h check busy
- AL = directive
- 00h do not ignore WEB ExtraBusy flag
- 01h ignore ExtraBusy flag
- 02h (WEB4WIN) check that current Windows VM is foregrnd VM
- Return: AX = status (0000h not busy, else busy)
- 0008h set keyboard intercept
- Note: currently a NOP which returns immediately
- 0009h get keyboard intercept
- Note: currently a NOP which returns immediately
- 000Ah get dialog flags
- Return: ES:DI -> kernel dialog flags (see #03123)
- 000Bh get network path
- Return: ES:DI -> fully-qualified network path of file where
- the screen is stored on Dialog calls
- 000Ch kernel alternate dialog
- CL = dialog box type
- 00h password
- 01h E-Note received notification
- 02h Novell login
- 03h general notification
- DL = number of rows to display
- ES:SI -> array of far pointers to rows to be displayed
- ES:DI -> Pascal-style input buffer
- Return: AX = status (0000h successful, else error code)
- Note: this function is identical to function 0003h except
- that it does not notify WEB4WIN of the impending
- dialog request
- 000Dh get machine/operating system type
- Return: AX = machine/operating system type
- 01h IBM PC, MS-DOS
- 02h IBM PC, DOSV (Japanese)
- 03h NEC PC-9800, JDOS (Japanese)
- 04h IBM PC, Korean DBC DOS
- Format of client debug data structure:
- Offset Size Description (Table 03120)
- 00h WORD total files
- 02h WORD files free
- 04h WORD no files
- 06h WORD minimum files
- 08h WORD total FCBs
- 0Ah WORD total safe FCBs
- 0Ch WORD FCBs in use
- 0Eh WORD wrong FCB
- 10h WORD compressed
- 12h WORD retransmits
- Format of WIN_INSTANCE_DATA structure:
- Offset Size Description (Table 03121)
- 00h DWORD real-mode pointer to data to be instanced
- 04h WORD size of data to be instanced
- Format of WEB AES Event Control Block:
- Offset Size Description (Table 03122)
- 00h DWORD link address
- 04h WORD ESR address
- 08h BYTE InUse flag
- 09h BYTE completion code
- 0Ah 3 BYTEs reserved
- 0Dh WORD timeout
- 0Fh BYTE IgnoreExtra flag
- 10h WORD PSP
- 12h DWORD DTA
- 16h WORD AX value for DOS critical information
- 18h WORD BX value for DOS critical information
- 1Ah WORD CX value for DOS critical information
- 1Ch WORD DX value for DOS critical information
- (Table 03123)
- Values for kernel dialog flags:
- 01h dialog will timeout
- 02h display stars instead of entered keystrokes
- --------N-2FEEF0-----------------------------
- INT 2F - WEB v4.02 - WEB GENERAL NOTIFICATION
- AX = EEF0h
- BX = notification function ID (see #03124)
- Return: varies by notification function
- Program: WEB is an IPX-based peer-to-peer network by Webcorp.
- Note: the notification functions are used internally by WEB modules to notify
- other modules and external programs of actions or event, and should
- never be called by an application
- SeeAlso: AX=EE00h"WEB"
- (Table 03124)
- Values for WEB Notification Function ID:
- 00h node added
- 01h node deleted
- 02h dial attempt
- 03h dial failed
- 04h file close
- 05h close connection
- 07h check Windows mode
- 20h link up
- 21h link down
- --------K-2FF000-----------------------------
- INT 2F U - 4MAP - INSTALLATION CHECK
- AX = F000h
- Return: AX = 00FFh
- Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
- Note: returns AX=00FFh for any value of AL not listed here
- SeeAlso: AX=D44Dh,AX=F001h,AX=F002h
- --------K-2FF001-----------------------------
- INT 2F U - 4MAP - GET KEY MAPPINGS
- AX = F001h
- Return: ES:BX -> key mappings
- SeeAlso: AX=F000h
- --------K-2FF002-----------------------------
- INT 2F U - 4MAP - INSERT CHARACTER INTO ???
- AX = F002h
- BL = character to insert
- Return: AX = status
- 0000h successful
- 0001h buffer full
- SeeAlso: AX=F000h,AX=F003h
- --------K-2FF003-----------------------------
- INT 2F U - 4MAP - INSERT CHARACTER INTO ???
- AX = F003h
- BL = character to insert
- Return: AX = status
- 0000h successful
- 0001h buffer full
- Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
- SeeAlso: AX=F000h,AX=F002h
- --------m-2FF1-------------------------------
- INT 2F U - MIN-MEM v2.11 - INSTALLATION CHECK
- AH = F1h
- AL <> F1h
- Return: AL = F1h if installed
- Program: MIN-MEM is a shareware TSR manager by Biologic which permits up to 24
- popup TSRs to be loaded but swapped out to disk, EMS, or XMS. One
- TSR at a time is brought back into memory at the user's request.
- --------E-2FF100-----------------------------
- INT 2F - DOS EXTENDER INSTALLATION CHECK
- AX = F100h
- Return: AL = FFh if DOS extender present
- SI = 444Fh ("DO")
- DI = 5358h ("SX")
- Note: supported or soon to be supported by Phar Lap, Rational, Ergo, and IGC
- SeeAlso: AH=A1h,AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
- --------W-2FF200-----------------------------
- INT 2F - WINX - INSTALLATION CHECK
- AX = F200h
- Return: AX = 00FFh if installed
- Program: WINX is a DOS/Windows utilities by Al Williams which can be used to
- launch Windows applications from a DOS Box; it was published in
- "DOS and Windows Protected Mode-Programming with DOS Extenders"
- (Addison-Wesley) and should not be confused with the Windows driver
- of the same name which is part of the DESQview/X package
- --------W-2FF201-----------------------------
- INT 2F - WINX - RETURN ADDRESS OF SERVER BUFFER
- AX = F201h
- Return: AX = status
- FFFFh if WINX is busy processing a different request
- 0000h if successful
- BX:CX = address of server buffer (see #03125)
- Format of WINX server buffer:
- Offset Size Description (Table 03125)
- 00h BYTE command/status
- 00h buffer available
- 01h buffer contains result
- 02h change directory
- 03h execute program
- FFh terminate windows portion of WINX
- 01h ? BYTEs command (03h) or directory (02h)
- or
- 01h DWORD result (01h)
- --------W-2FF202-----------------------------
- INT 2F - WINX - SET SERVER'S WORKING DIRECTORY
- AX = F202h
- BX:CX -> directory
- Return: AX = status
- FFFFh if WINX is busy processing a different request
- 0000h if successful
- SeeAlso: AX=F200h,AX=F203h
- --------W-2FF203-----------------------------
- INT 2F - WINX - EXECUTE COMMAND
- AX = F203h
- BX:CX -> command
- Return: AX = status
- 0000h if successful
- FFFFh if WINX is busy processing a different request
- SeeAlso: AX=F200h,AX=F202h
- --------G-2FF400-----------------------------
- INT 2F - FINDIRQ.COM - INSTALLATION CHECK
- AX = F400h
- Return: AL = 01h if installed
- Program: FINDIRQ is a program by Rick Knoblaugh published in the 9/28/93 issue
- of PC Magazine; when run as a TSR it can determine which IRQs are
- used only when a device is active
- SeeAlso: AX=F401h
- --------N-2FF400-----------------------------
- INT 2F - PowerLAN - INSTALLATION CHECK???
- AX = F400h
- ???
- Return: ???
- Note: this function is called by PowerLAN's NET.EXE just prior to calling
- AX=F401h (get version)
- SeeAlso: AX=F401h"PowerLAN"
- --------N-2FF401-----------------------------
- INT 2F - PowerLAN - GET VERSION
- AX = F401h
- Return: ES:BX -> WORD containing 100*version (in decimal)
- Program: PowerLAN is a networking product by Performance Technology
- SeeAlso: AX=F400h"PowerLAN",AX=F483h"PowerLAN"
- --------G-2FF401CX5121-----------------------
- INT 2F - FINDIRQ.COM - GET HOOKED INTERRUPTS
- AX = F401h
- CX = 5121h ('Q!')
- Return: AX:DX -> hooked interrupt table (see #03126)
- SeeAlso: AX=F400h
- Format of FINDIRQ hooked interrupt table:
- Offset Size Description (Table 03126)
- 00h BYTE 1Ch
- 01h DWORD FINDIRQ's INT 1C handler
- 05h DWORD original INT 1C handler
- 09h BYTE 28h
- 0Ah DWORD FINDIRQ's INT 28 handler
- 0Eh DWORD original INT 28 handler
- 12h BYTE 2Fh
- 13h DWORD FINDIRQ's INT 2F handler
- 17h DWORD original INT 2F handler
- --------N-2FF483-----------------------------
- INT 2F - PowerLAN - ???
- AX = F483h
- ???
- Return: ???
- SeeAlso: AX=F400h"PowerLAN",AX=F401h"PowerLAN"
- --------d-2FF700-----------------------------
- INT 2F - AUTOPARK.COM - INSTALLATION CHECK
- AX = F700h
- Return: AL = state
- 00h not installed
- FFh installed
- Program: AUTOPARK.COM is a resident hard disk parker by Alan D. Jones
- --------d-2FF701-----------------------------
- INT 2F - AUTOPARK.COM - SET PARKING DELAY
- AX = F701h
- BX:CX = 32-bit count of 55ms timer ticks
- --------d-2FF800CX4455-----------------------
- INT 2F U - SuperStor PRO 2XON.COM - INSTALLATION CHECK
- AX = F800h
- CX = 4455h ("DU")
- DL = 45h ("E")
- Return: AL = FFh if installed
- ES:BX -> ASCII signature "Universal Data Exchange"
- Program: SuperStor is a disk-compression program by Addstor.
- Note: returns AX=0001h if AL is not 00h or 01h
- SeeAlso: AX=1001h,AX=F801h
- --------d-2FF801CX4455-----------------------
- INT 2F U - SuperStor PRO 2XON.COM - UNINSTALL
- AX = F801h
- CX = 4455h ("DU")
- DL = 45h ("E")
- ES:BX = return address if successful
- Return: at specified address if successfully removed from memory
- else
- AL = error code
- ???
- Program: SuperStor is a disk-compression program by Addstor.
- Note: returns AX=0001h if AL is not 00h or 01h
- SeeAlso: AX=1001h,AX=F800h
- ----------2FFA00-----------------------------
- INT 2F - Multiplex - ??? - INSTALLATION CHECK???
- AX = FA00h
- BX = ??? (0408h)
- CX = ??? (001Fh)
- DX = ??? (0102h)
- SI = ??? (5ACCh)
- DI = ??? (0632h)
- Return: ???
- Note: called by WinEmacs at startup
- ----------2FFA00-----------------------------
- INT 2F - Multiplex - ??? - INSTALLATION CHECK???
- AX = FA00h
- BX = ??? (03FCh)
- CX = ??? (003Fh)
- DX = ??? (00FFh)
- SI = ??? (5AA6h)
- DI = ??? (0620h)
- Return: ???
- Note: called by Matlab at startup
- --------*-2FFB-------------------------------
- INT 2F - Multiplex - RESERVED BY BORLAND INTERNATIONAL
- AH = FBh
- SeeAlso: AX=FB42h/BX=0001h
- --------f-2FFB-------------------------------
- INT 2F U - Conner Backup Exec AUTORES - API
- AH = FBh
- BL = function number (00h-07h)
- ???
- Return: ???
- Program: AUTORES is a resident program launcher for unattended backups
- --------a-2FFB00-----------------------------
- INT 2F U - AutoBraille v1.1A - INSTALLATION CHECK
- AX = FB00h
- Return: AX = 00FFh if installed
- Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
- SeeAlso: INT 10/AX=3800h,INT 14/AX=F0F1h
- --------U-2FFB00-----------------------------
- INT 2F U - Jot-It! v1.50 - INSTALLATION CHECK
- AX = FB00h
- Return: AX = FFFFh if installed
- BX = version (BCD, BH=major, BL=minor)
- SeeAlso: AX=FB03h"Jot-It",AX=FB01h"Jot-It"
- --------a-2FFB01-----------------------------
- INT 2F U - AutoBraille v1.1A - ???
- AX = FB01h
- ???
- Return: ???
- --------U-2FFB01-----------------------------
- INT 2F U - Jot-It! v1.50 - GET USER NAME
- AX = FB01h
- Return: DX:BX -> ASCIZ user name
- SeeAlso: AX=FB02h"Jot-It"
- --------a-2FFB02-----------------------------
- INT 2F U - AutoBraille v1.1A - ???
- AX = FB02h
- Return: AH = ???
- AL = ???
- --------U-2FFB02-----------------------------
- INT 2F U - Jot-It! v1.50 - GET MESSAGE DIRECTORY
- AX = FB02h
- Return: DX:BX -> ASCIZ name of directory in which messages are stored
- SeeAlso: AX=FB01h"Jot-It"
- --------a-2FFB03-----------------------------
- INT 2F U - AutoBraille v1.1A - GET NEXT ???
- AX = FB03h
- Return: AX = ???
- --------U-2FFB03-----------------------------
- INT 2F U - Jot-It! v1.50 - UNINSTALL
- AX = FB03h
- Return: resident code removed from memory
- Note: CAUTION: NO checks are performed to ensure that the interrupt vectors
- being unhooked (08h,09h,28h,2Fh) actually point at the Jot-It! code
- SeeAlso: AX=FB00h"Jot-It"
- --------a-2FFB-------------------------------
- INT 2F U - AutoBraille v1.1A - SET ???
- AH = FBh
- AL = 04h-08h
- Return: AX = 0000h
- --------a-2FFB-------------------------------
- INT 2F U - AutoBraille v1.1A - SET ???
- AH = FBh
- AL = 09h-0Fh (???, 0Eh = COM1, 0Fh = COM2)
- Return: ???
- Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
- --------a-2FFB-------------------------------
- INT 2F U - AutoBraille v1.1A - SET ???
- AH = FBh
- AL = 10h-1Fh
- ???
- Return: ???
- --------a-2FFB20-----------------------------
- INT 2F U - AutoBraille v1.1A - SET ??? FLAGS
- AX = FB20h
- BL = flags to set
- SeeAlso: AX=FB21h"AutoBraille"
- --------a-2FFB21-----------------------------
- INT 2F U - AutoBraille v1.1A - CLEAR ??? FLAGS
- AX = FB21h
- BL = flags to clear
- SeeAlso: AX=FB20h"AutoBraille"
- --------a-2FFB22-----------------------------
- INT 2F U - AutoBraille v1.1A - SET ???
- AX = FB22h
- BL = ???
- Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
- --------a-2FFB28-----------------------------
- INT 2F U - AutoBraille v1.1A - ???
- AX = FB28h
- BX = ???
- ???
- Return: ???
- SeeAlso: AX=FB29h"AutoBraille"
- --------a-2FFB29-----------------------------
- INT 2F U - AutoBraille v1.1A - ???
- AX = FB29h
- BX = ???
- ???
- Return: ???
- SeeAlso: AX=FB28h"AutoBraille"
- --------a-2FFB-------------------------------
- INT 2F U - AutoBraille v1.1A - SET ???
- AH = FBh
- AL = 2Bh-34h
- BX = ???
- --------a-2FFB35-----------------------------
- INT 2F U - AutoBraille v1.1A - SET ???
- AX = FB35h
- BL = ???
- --------a-2FFB36-----------------------------
- INT 2F U - AutoBraille v1.1A - SET ???
- AX = FB36h
- BL = ???
- --------a-2FFB37-----------------------------
- INT 2F U - AutoBraille v1.1A - SET ???
- AX = FB37h
- BL = ???
- Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
- --------E-2FFB42BX0001-----------------------
- INT 2F PU - Borland C++ DPMILOAD.EXE - INSTALLATION CHECK???
- AX = FB42h
- BX = 0001h
- Return: AX = version number??? (AL=major, AH=minor)
- CX = next-selector increment
- ---BC2.0---
- ES:BX -> 80-byte buffer for ???
- DX = DPMI version
- ---BC3.0---
- BX = ??? (0000h)
- DX = ???
- ES:SI -> list of valid selectors ???
- Notes: The version of DPMILOAD distributed with BC++ v2.0 identifies itself
- as version 1.000, while the version distributed with BC++ 3.0
- identifies itself as version 1.0; the former is 10864 bytes, the
- latter 22180 bytes. The BC2.0 version is a DPMI loader, while
- the BC3.0 version also adds a DPMI host and DOS extender
- the BC++ 2.0 version displays an error message if called with BX
- values other than 0001h-0008h
- SeeAlso: AX=1687h,AX=FB42h/BX=1001h,AX=FB43h
- --------E-2FFB42BX0002-----------------------
- INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ALLOCATE MEMORY
- AX = FB42h
- BX = 0002h
- CX = size in bytes
- DX = bit flags
- bit 2: set to allocate DOS memory, clear for DPMI memory
- SI = selector of descriptor to be modified to access allocated memory
- DI = selector of a second descriptor to be modified
- Return: AX = ??? or 0000h on error
- CX:DX = linear base address of DPMI memory block
- SI:DI = handle for DPMI memory block or FFFFh:FFFFh
- ???
- Note: two segment descriptors may be set if a code and an aliased data
- segment are required; if only one descriptor is needed, SI should
- equal DI on entry
- BUG: when allocating DOS memory, the code computes the linear address by
- multiplying the segment number by 4 rather than shifting by 4
- SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
- --------E-2FFB42BX0002-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ALLOCATE MEMORY
- AX = FB42h
- BX = 0002h
- ES:SI -> memory block info (see #03127)
- Return: ???
- Note: The version of DPMILOAD distributed with BC++ v2.0 identifies itself
- as version 1.000, while the version distributed with BC++ 3.0
- identifies itself as version 1.0; the former is 10864 bytes, the
- latter 22180 bytes.
- SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
- Format of DPMILOAD memory block info:
- Offset Size Description (Table 03127)
- 00h WORD flags (see #03128)
- 02h DWORD block size in bytes
- ---DPMI memory block---
- 06h DWORD DPMI memory block handle
- ---DOS memory block---
- 06h WORD real-mode segment of memory block
- 08h WORD selector of memory block
- ---
- 0Ah DWORD linear address of memory
- 0Eh WORD memory operation error code
- 0008h no more free LDT descriptors
- ---if flags bit 0 clear---
- 10h WORD code segment selector for memory block or 0000h or FFFFh
- 12h WORD data alias selector for memory block or 0000h or FFFFh
- ---if flags bit 0 set---
- 10h WORD data segment selector for memory block or 0000h or FFFFh
- 12h WORD unused???
- Bitfields for DPMILOAD memory block flags:
- Bit(s) Description (Table 03128)
- 0 set if data segment rather than code segment
- 1 information valid
- 2 set if DOS memory block rather than DPMI memory block
- 4 ???
- 15 set if no LDT selectors for memory block???
- SeeAlso: #03127
- --------E-2FFB42BX0003-----------------------
- INT 2F PU - Borland C++ DPMILOAD.EXE - GET AVAILABLE MEMORY
- AX = FB42h
- BX = 0003h
- Return: DX:AX = size of largest free block in paragraphs
- 0000h:0000h on error (BC3.0 version only)
- Note: AX and DX are destroyed on error, but no other error indicator is
- returned, under the BC++ 2.0 version of DPMILOAD
- SeeAlso: AX=FB42h/BX=0002h
- --------E-2FFB42BX0004-----------------------
- INT 2F PU - Borland C++ DPMILOAD.EXE - LOAD PROTECTED-MODE EXECUTABLE???
- AX = FB42h
- BX = 0004h
- DS:DX -> ASCIZ filename of protected-mode executable
- Return: CX = selector of ??? or 0000h
- ---BC3.0---
- DX = status (0000h,FFF4h,others???) (see #03129)
- Note: the filename may also be terminated by a CR rather than a NUL under the
- BC++ 3.0 version of DPMILOAD
- (Table 03129)
- Values for DPMILOAD function status:
- 0000h successful
- 0001h ??? failure
- 0002h invalid selector
- 0004h unknown error
- 0008h no more LDT descriptors available???
- FFDEh unable to set descriptor
- FFDFh unable to get segment base address
- FFE0h ???
- FFF2h invalid parameter value
- FFF4h component of filename too long (name not in 8.3 format)
- FFF5h pathname too long (>79 chars)
- FFF6h ???
- FFF8h ???
- FFF9h index out of range
- FFFAh ???
- FFFCh invalid access to code segment???
- FFFEh ???
- FFFFh general error
- --------E-2FFB42BX0005-----------------------
- INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NAME
- AX = FB42h
- BX = 0005h
- CX = selector of DPMILOAD data (see #03130)
- DS:DX -> ASCIZ or CR-terminated name of ??? (case ignored)
- Return: DX = status (see #03129)
- 0000h successful
- AX:BX -> ??? FAR function (called with two words on top of stk)
- else
- BX destroyed
- SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=000Eh
- Format of DPMILOAD data:
- Offset Size Description (Table 03130)
- 00h 12 BYTEs ???
- 0Ch WORD ??? bit flags
- 0Eh 14 BYTEs ???
- 1Ch WORD number of memory control records (see #03133)
- 1Eh 25 BYTEs ???
- 37h BYTE ??? bit flags
- bit 4: data valid???
- 38h 4 BYTEs ???
- 3Ch WORD ???
- 3Eh 12 BYTEs ???
- 46h BYTE ??? counter
- 47h BYTE ???
- 48h BYTE ???
- 49h BYTE ???
- 4Ah WORD ???
- 4Ch 2 BYTEs ???
- 4Eh WORD offset of array of 64-byte memory control records
- 52h WORD offset of name list (see #03131)
- 54h 4 BYTEs ???
- 58h WORD offset of array of 6-byte objects (see #03132)
- 5Ah 8 BYTEs ???
- 62h 9 BYTEs ASCIZ name for ???
- 6Bh 9 BYTEs ASCIZ name for ???
- ???
- Format of name list entry [array]:
- Offset Size Description (Table 03131)
- 00h BYTE length of name (00h if end of array)
- 01h N BYTEs name
- N+1 WORD 1-based index into array of unknown 6-byte objects
- Format of 6-byte objects:
- Offset Size Description (Table 03132)
- 00h BYTE ???
- 01h BYTE ???
- 02h BYTE ???
- 03h BYTE 1-based index of memory control record
- 04h WORD ???
- Format of memory control record:
- Offset Size Description (Table 03133)
- 00h 20 BYTEs memory block info (see #03127)
- 14h 6 BYTEs ???
- 1Ah BYTE ???
- 1Bh 2 BYTEs ???
- 1Dh BYTE ??? bit flags
- 1Eh 14 BYTEs ???
- 2Ch DWORD pointer to ??? memory control record or 0000h:0000h
- 30h DWORD pointer to ??? memory control record or 0000h:0000h
- 34h DWORD pointer to next??? memory control record or 0000h:0000h
- 38h DWORD pointer to prev??? memory control record or 0000h:0000h
- 3Ch 4 BYTEs ???
- Note: the pointers at offsets 2Ch and 30h form a doubly-linked list, as do
- the pointers at offsets 34h and 38h
- --------E-2FFB42BX0006-----------------------
- INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NUMBER
- AX = FB42h
- BX = 0006h
- CX = selector of DPMILOAD data (see #03130)
- DX = 1-based index into array of ??? 6-byte objects
- Return: DX = status (see #03129)
- 0000h successful
- AX:BX -> ??? FAR function (called with two words on top of stk)
- else
- BX destroyed
- SeeAlso: AX=FB42h/BX=0005h,AX=FB42h/BX=000Eh
- --------E-2FFB42BX0007-----------------------
- INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 0007h
- CX = selector of ???
- Return: ???
- Note: The version of DPMILOAD distributed with BC++ v2.0 identifies itself
- as version 1.000, while the version distributed with BC++ 3.0
- identifies itself as version 1.0; the former is 10864 bytes, the
- latter 22180 bytes.
- --------E-2FFB42BX0007-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 0007h
- CX = selector of DPMILOAD data (see #03130)
- ???
- Return: DX = status (see #03129)
- 0000h successful
- AX = ???
- --------E-2FFB42BX0008-----------------------
- INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - FREE MEMORY BLOCK
- AX = FB42h
- BX = 0008h
- CX = bit flags
- bit 2: set if DPMI memory, clear if DOS memory
- DX = selector of DOS memory block
- SI:DI = handle of DPMI memory block
- Return: DX = 0000h on error, unchanged if succcessful
- Note: The version of DPMILOAD distributed with BC++ v2.0 identifies itself
- as version 1.000, while the version distributed with BC++ 3.0
- identifies itself as version 1.0; the former is 10864 bytes, the
- latter 22180 bytes.
- SeeAlso: AX=FB42h/BX=0002h
- --------E-2FFB42BX0008-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE MEMORY BLOCK
- AX = FB42h
- BX = 0008h
- ES:SI -> memory block info (see #03127)
- Return: ???
- SeeAlso: AX=FB42h/BX=0009h
- --------E-2FFB42BX0009-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - RESIZE MEMORY BLOCK
- AX = FB42h
- BX = 0009h
- ES:SI -> memory block info (see #03127)
- ???
- Return: ???
- SeeAlso: AX=FB42h/BX=0008h"3.0"
- --------E-2FFB42BX000A-----------------------
- INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INIT DPMI HOST AND SPAWN SUBSHELL
- AX = FB42h
- BX = 000Ah
- CX = 0001h
- DX = ???
- SI = ???
- Return: after user exits subshell
- Notes: this call is used by DPMIRES; unlike most of the DPMILOAD calls, this
- function is not available in protected mode.
- the BC2.0 version of DPMILOAD is purely a DPMI loader, while the BC3.0
- version also adds a DPMI host and DOS extender.
- SeeAlso: AX=FB42h/BX=0004h,AX=FB42h/BX=0015h
- --------E-2FFB42BX000B-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - UNUSED
- AX = FB42h
- BX = 000Bh
- --------E-2FFB42BX000C-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE DESCRIPTORS FOR MEMORY BLOCK???
- AX = FB42h
- BX = 000Ch
- ES:SI -> memory block info ??? (see #03127)
- Return: DX = status???
- SeeAlso: AX=FB42h/BX=000Fh
- --------E-2FFB42BX000D-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SIMULATE REAL MODE INTERRUPT
- AX = FB42h
- BX = 000Dh
- CX = number of words to copy from protected-mode to real mode stack
- DL = interrupt number
- DH = flags
- bit 0: reset the interrupt controller and A20 line
- ES:DI -> real-mode call structure (see #03148 at INT 31/AX=0300h)
- Return: CX = status
- 0000h successful
- 0001h failed
- SeeAlso: INT 31/AX=0300h
- --------E-2FFB42BX000E-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
- AX = FB42h
- BX = 000Eh
- DS:DX -> ASCIZ or CR-terminated name of ???
- Return: CX = selector of DPMILOAD data (see #03130) corresponding to name,
- 0000h on error
- SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=001Fh
- --------E-2FFB42BX000F-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - REALLOCATE LDT DESCRPS TO MEMBLK???
- AX = FB42h
- BX = 000Fh
- ES:SI -> memory block info (see #03127)
- Return: ???
- SeeAlso: AX=FB42h/BX=000Ch
- --------E-2FFB42BX0010-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SEGMENT TO SELECTOR
- AX = FB42h
- BX = 0010h
- DX = segment number
- Return: CX = status (0000h,0008h) (see also AX=FB42h/BX=0004h)
- 0000h successful
- DX = selector number for descriptor
- 0008h failed
- SeeAlso: AX=FB42h/BX=0023h
- --------E-2FFB42BX0011-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 0011h
- CX = selector of DPMILOAD data (see #03130)
- ???
- Return: DX = status (0000h,0002h,FFFEh) (see also #03129)
- 0000h successful
- AX:BX -> ??? name
- FFFEh ??? error
- --------E-2FFB42BX0012-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 0012h
- CX = selector for ???
- Return: CX = selector for ???
- --------E-2FFB42BX0013-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 0013h
- CX = selector of DPMILOAD data (see #03130)
- DX = 1-based index of ???
- Return: CX = status (0000h,0002h,FFF9h) (see also #03129)
- 0000h successful
- BX = ??? or 0000h
- FFF9h ??? error
- --------E-2FFB42BX0014-----------------------
- INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INSTALLATION CHECK
- AX = FB42h
- BX = 0014h
- CX = 0001h
- Return: BX = 0000h if installed
- Note: unlike most of the DPMILOAD functions, this call is available only in
- real or V86 mode
- SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=000Ah
- --------E-2FFB42BX0015-----------------------
- INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - UNINSTALL
- AX = FB42h
- BX = 0015h
- CX = 0001h
- Return: ???
- Note: unlike most of the DPMILOAD functions, this call is available only in
- real or V86 mode
- SeeAlso: AX=FB42h/BX=000Ah
- --------E-2FFB42BX0016-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
- AX = FB42h
- BX = 0016h
- CX = selector of DPMILOAD data (see #03130)
- Return: DX = status (see also AX=FB42h/BX=0004h)
- 0000h successful
- CX = ???
- --------E-2FFB42BX0017-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 0017h
- CX = ???
- DX = ???
- ???
- Return: DX = status (0000h,0001h) (see #03129)
- --------E-2FFB42BX0018-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET ???
- AX = FB42h
- BX = 0018h
- CX = ???
- --------E-2FFB42BX0019-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 0019h
- CX = selector for ???
- ???
- Return: DX = status (see also AX=FB42h/BX=0004h)
- 0000h successful
- CX = selector for ???
- --------E-2FFB42BX001A-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 001Ah
- CX = selector for ???
- ???
- Return: DX = status (see also AX=FB42h/BX=0004h)
- 0000h successful
- 0004h failed
- CX:BX -> ???
- --------E-2FFB42BX001B-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 001Bh
- CX = selector of DPMILOAD data (see #03130)
- DX = offset of ???
- Return: DX = status (0000h,0002h) (see also #03129)
- 0000h successful
- BX = selector for ???
- CX = selector for ???
- --------E-2FFB42BX001C-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 001Ch
- ES = selector for DPMILOAD data (see #03130)
- CX = 1-based index of ???
- DX = 1-based index of ???
- Return: DX = status (0000h,0002h,FFF9h) (see #03129)
- --------E-2FFB42BX001D-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
- AX = FB42h
- BX = 001Dh
- Return: CX:DX = ???
- --------E-2FFB42BX001E-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 001Eh
- CX = ???
- ???
- Return: DX = status (see also AX=FB42h/BX=0004h)
- 0000h successful
- FFF7h ??? error
- CX:BX -> ???
- --------E-2FFB42BX001F-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
- AX = FB42h
- BX = 001Fh
- DS:DX -> 8-character name of ???
- ???
- Return: CX = selector of DPMILOAD data (see #03130) for ???
- 0000h on error
- SeeAlso: AX=FB42h/BX=000Eh
- --------E-2FFB42BX0020-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION???
- AX = FB42h
- BX = 0020h
- Return: DX = ??? (always 0000h)
- --------E-2FFB42BX0021-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROCESSOR EXCEPTION HANDLER VECT
- AX = FB42h
- BX = 0021h
- CL = exception number (00h-1Fh)
- Return: DX = status (see also AX=FB42h/BX=0004h)
- 0000h successful
- AX:BX = selector:offset of handler
- FFF2h unable to get exception handler vector
- SeeAlso: AX=FB42h/BX=0022h,AX=FB42h/BX=0024h,INT 31/AX=0202h
- --------E-2FFB42BX0022-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROCESSOR EXCEPTION HANDLER VECT
- AX = FB42h
- BX = 0022h
- CL = exception number (00h-1Fh)
- SI:DX = selector:offset of new handler
- Return: DX = status (0000h,0004h,FFF2h) (see #03129)
- SeeAlso: AX=FB42h/BX=0021h,AX=FB42h/BX=0025h,INT 31/AX=0203h
- --------E-2FFB42BX0023-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SELECTOR TO SEGMENT NUMBER
- AX = FB42h
- BX = 0023h
- CX = selector
- Return: DX = status (see also AX=FB42h/BX=0004h)
- 0000h successful
- CX = real-mode segment number
- FFF2h descriptor has invalid base address for real-mode segment
- SeeAlso: AX=FB42h/BX=0010h
- --------E-2FFB42BX0024-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROTECTED-MODE INTERRUPT VECTOR
- AX = FB42h
- BX = 0024h
- CL = interrupt number
- Return: DX = status (0000h) (see also AX=FB42h/BX=0004h)
- AX:BX = selector:offset of handler
- SeeAlso: AX=FB42h/BX=0025h,INT 31/AX=0204h
- --------E-2FFB42BX0025-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROTECTED-MODE INTERRUPT VECTOR
- AX = FB42h
- BX = 0025h
- CL = interrupt number
- SI:DX = selector:offset of new handler
- Return: DX = status (0000h,0004h,FFF2h) (see #03129)
- SeeAlso: AX=FB42h/BX=0024h,INT 31/AX=0205h
- --------E-2FFB42BX0026-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
- AX = FB42h
- BX = 0026h
- CX = selector of DPMILOAD data (see #03130)
- DX = 1-based index of ???
- ???
- Return: DX = status (0000h,0002h,FFF9h) (see #03129)
- 0000h successful
- BX = offset of ??? within data structure
- --------E-2FFB42BX0027-----------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
- AX = FB42h
- BX = 0027h
- CX = selector of DPMILOAD data (see #03130)
- DX = offset of ???
- Return: DX = status (see also AX=FB42h/BX=0004h)
- 0000h successful
- BX = ???
- --------E-2FFB42BX0080-----------------------
- INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
- AX = FB42h
- BX = 0080h
- ???
- Return: AX = ???
- ???
- --------E-2FFB42BX0081-----------------------
- INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
- AX = FB42h
- BX = 0081h
- ???
- Return: AX = ???
- ???
- --------E-2FFB42BX1001-----------------------
- INT 2F U - Borland RTM.EXE 1.0 - INSTALLATION CHECK???
- AX = FB42h
- BX = 1001h
- Return: BX = 0000h
- SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=1002h,AX=FB42h/BX=1003h
- --------E-2FFB42BX1002-----------------------
- INT 2F U - Borland RTM.EXE 1.0 - EXECUTE COMPILED PROGRAM
- AX = FB42h
- BX = 1002h
- DX = 0014h ???
- ???
- Return: AX = nonzero if successful
- AH = child program exit method??? (usually 4Ch)
- AL = child program exit code (Errorlevel)
- AX = 0000h on load error
- DX = error code (0000h-0027h) (see #03134)
- SeeAlso: AX=FB42h/BX=1001h
- (Table 03134)
- Values for RTM.EXE error code:
- 01h out of memory
- 02h out of selectors
- 03h out of internal tables
- 10h internal error
- 18h internal error
- 1Ah internal error
- 1Bh internal error
- 1Ch internal error
- 20h invalid dynamic link
- 21h internal error
- 22h unable to open file
- 23h invalid .EXE format
- 24h wrong version
- 25h unable to initialize
- 26h DLL initialization error
- other unrecognized error
- --------E-2FFB42BX1003-----------------------
- INT 2F U - Borland RTM.EXE 1.0 - ???
- AX = FB42h
- BX = 1003h
- ???
- Return: ???
- SeeAlso: AX=FB42h/BX=1001h
- --------E-2FFB43-----------------------------
- INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION
- AX = FB43h
- BX = subfunction (at least 0000h-000Eh)
- Notes: this function is only present in protected mode; it does nothing but
- an immediate IRET
- DPMILOAD.EXE itself calls various subfunctions:
- subfunction 0004h is called with CX=selector of ???, DI=selector
- of DPMILOAD data
- subfunction 0008h is called with CX=selector of DPMILOAD data
- SeeAlso: AX=FB42h/BX=0001h
- --------G-2FFB43BX0100-----------------------
- INT 2F PU - Borland TDX - INSTALLATION CHECK
- AX = FB43h
- BX = 0100h
- Return: BX = FB43h if loaded
- Program: TDX is Borland's Turbo Debugger variant for DPMI programs
- Note: Borland Pascal 7 DPMI programs use this call to check whether they
- should install their own stack and general protection exception
- handlers, or allow TDX to handle those exceptions
- --------a-2FFB64-----------------------------
- INT 2F U - AutoBraille v1.1A - GET ???
- AX = FB64h
- Return: AX = ??? (0006h seen)
- Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
- --------E-2FFBA1BX0081-----------------------
- INT 2F U - TKERNEL (Borland DOS extender) - INSTALLATION CHECK
- AX = FBA1h
- BX = 0081h
- ES:DI -> 16-byte buffer
- Return: if installed, first four bytes of ES:DI buffer are "IABH"
- Program: TKERNEL is a licensed version of AI Architects/Ergo's OS/x86.
- Note: TKERNEL was present only in Borland C++ 2.0; with version 3.0, the DOS
- extender was moved into DPMILOAD.
- SeeAlso: AH=A1h,AX=F100h,AX=FBA1h/BX=0082h,AX=FBA1h/BX=0084h,INT 15/AX=BF02h
- SeeAlso: INT 21/AX=4403h"AI Architects"
- --------E-2FFBA1BX0082-----------------------
- INT 2F U - TKERNEL (Borland DOS extender) - GET ENTRY POINT
- AX = FBA1h
- BX = 0082h
- ES:DI -> response buffer (see #03135)
- Return: ES:DI buffer filled
- SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
- Format of TKERNEL response buffer:
- Offset Size Description (Table 03135)
- 00h 4 BYTEs signature "IABH"
- 04h DWORD pointer to FAR extender entry point (see #03136)
- (Table 03136)
- Call TKERNEL entry point with:
- AX = function number
- 0000h initialize???
- STACK: WORD ???
- Return: AX = status???
- STACK unchanged
- 0001h get version???
- Return: AX = 0200h for v2.0.34
- 0002h get ???
- Return: AX = ??? (011Eh or 0182h seen)
- 0003h load protected-mode executable
- STACK: DWORD -> ASCIZ filename of executable
- DWORD ???
- DWORD -> program arguments (counted string plus CR)
- DWORD -> environment for protected-mode executable
- (terminated with two consecutive NULs)
- DWORD -> WORD buffer for ???
- Return: AX = status???
- STACK unchanged
- 0004h get descriptor
- STACK: WORD selector for which to get descriptor
- WORD segment number (when running in real mode)
- DWORD -> buffer for descriptor
- Return: CF clear if successful
- buffer filled
- CF set on error
- AX destroyed???
- STACK unchanged
- 0005h ???
- STACK: WORD selector for ???
- WORD subfunction number???
- 0000h run previously-loaded program???
- 0001h ??? (similar to 0000h)
- 0002h
- 0003h
- 0005h ??? (similar to 0000h and 0001h)
- Return: AX = status???
- STACK unchanged
- 0006h ???
- STACK: WORD ???
- DWORD -> WORD (call) max iterations of ???
- (ret) remaining iterations
- Return: AX = ???
- STACK unchanged
- 0007h unused
- Return: AX = 0001h
- 0008h unused
- Return: AX = 0001h
- 0009h copy protected-mode memory into conventional memory
- STACK: WORD selector for source segment
- WORD segment of source if in real mode???
- DWORD offset of source
- WORD number of bytes to copy
- DWORD -> low-memory destination
- Return: AX = status
- STACK unchanged
- 000Ah copy conventional memory into protected-mode memory
- STACK: WORD selector for destination segment
- WORD segment of destination if in real mode???
- DWORD offset of destination
- WORD number of bytes to copy
- DWORD -> low-memory source
- Return: AX = status
- STACK unchanged
- 000Bh get ??? pointers
- STACK: WORD desired pointer
- 0000h get ???
- 0002h get protected-mode CR3
- 0003h get 4K page table buffer pointer
- else Return: DX:AX = FFFFh:FFFFh
- Return: DX:AX = requested pointer
- STACK unchanged
- 000Ch set ??? pointers
- STACK: WORD desired pointer
- 0000h set ???
- 0002h set protected-mode CR3
- 0003h set 4K page table buffer pointer
- else ignore
- DWORD new value for pointer
- Return: STACK unchanged
- 000Dh get ??? pointers
- STACK: WORD desired pointer
- 0000h get ???
- 0001h get ???
- 0002h get ???
- 0003h get ???
- 0004h get ???
- 0005h get ???
- 0006h get ???
- 0007h get ???
- else Return: DX:AX = FFFFh:FFFFh
- Return: DX:AX = desired pointer
- STACK unchanged
- 000Eh set ??? pointer
- STACK: WORD desired pointer
- 0000h set ???
- 0001h set ???
- 0002h set ???
- 0003h set ???
- 0004h set ???
- 0005h set ???
- 0006h set ???
- 0007h set ???
- else Return: DX:AX = FFFFh:FFFFh
- Return: STACK unchanged
- 000Fh get ???
- Return: AX = ??? (seen 0008h)
- 0010h get ???
- Return: AX = ???
- 0011h determine whether selector is valid
- STACK: WORD possible selector
- Return: AX = selector or 0000h if invalid
- STACK unchanged
- 0012h get physical address
- STACK: WORD selector for desired segment
- WORD segment number if in real mode
- DWORD offset within segment
- Return: DX:AX = 32-bit physical address or 00000000h on error
- BX destroyed
- STACK unchanged
- 0013h ???
- Note: normally jumps to code for function 0012h
- 0014h copy protected-mode memory to conventional memory, with ???
- STACK: WORD selector for source segment
- WORD segment of source if in real mode???
- DWORD offset of source
- WORD number of bytes to copy
- DWORD -> low-memory destination
- Return: AX = status???
- STACK unchanged
- 0015h copy conventional memory to protected-mode memory, with ???
- STACK: WORD selector for destination segment
- WORD segment of destination if in real mode???
- DWORD offset of destination
- WORD number of bytes to copy
- DWORD -> low-memory source
- Return: AX = status???
- STACK unchanged
- 0016h set ??? pointer
- STACK: WORD unused
- DWORD -> ??? or 0000h:0000h
- Return: AX = 0000h
- STACK unchanged
- 0017h allocate real-mode procedure???
- STACK: DWORD ASCIZ name of procedure
- DWORD ???
- DWORD address of subroutine to invoke
- Return: AX = status
- 0032h procedure by that name exists
- 0033h no more real-mode procedures available
- DX destroyed
- STACK unchanged
- 0018h unused
- Return: AX = 0001h
- 0019h get parameter block
- Return: DX:AX -> parameter block (format unknown at this time,
- but 92h bytes)
- (preceded by signature "!!PARAM-BLOCK!!")
- 001Ah get ???
- Return: AX = ??? (0148h seen)
- 001Bh free real-mode procedure???
- STACK: DWORD -> ASCIZ name of procedure
- Return: ???
- STACK unchanged
- 001Ch check whether packets from protected mode task pending
- Return: AX = 0001h if packets pending, 0000h if not
- 001Dh set ???
- STACK: DWORD ??? or 0000h:0000h
- Return: AX,BX destroyed
- STACK unchanged
- 001Eh ???
- STACK: WORD ??? (high byte ignored)
- DWORD -> data structure (below)
- Return: AX,BX,CX,DX destroyed
- data structure updated
- STACK unchanged
- Format of data structure:
- Offset Size Description
- 00h 2 BYTEs unused
- 02h WORD ???
- 04h WORD ???
- 06h WORD ???
- 08h 2 BYTEs unused
- 0Ah WORD ???
- 0Ch WORD (call) ???
- (ret) offset of this data structure (BUG?)
- 001Fh set ???
- STACK: WORD ??? (set to 0001h if zero)
- Return: AX destroyed
- STACK unchanged
- 0020h ???
- STACK: DWORD -> ??? (8 bytes of data)
- Return: AX = ???
- STACK unchanged
- 0021h ???
- STACK: DWORD -> ??? (8 bytes of data)
- WORD ???
- WORD ???
- Return: AX = ???
- STACK unchanged
- 0022h ???
- STACK: DWORD -> ??? (8 bytes of data)
- DWORD -> 4-byte buffer for results
- Return: AX = ???
- STACK unchanged
- 0023h ???
- STACK: DWORD -> ??? (8 bytes of data)
- Return: AX = ???
- STACK unchanged
- 0024h set ???
- STACK: WORD ???
- Return: AX destroyed
- STACK unchanged
- 0025h get ???
- Return: AX = ??? (value set with func 0024h)
- 0026h BUG: jumps to hyperspace due to fencepost error
- FFFFh set DOS memory management functions
- BX:SI -> FAR routine for allocating DOS memory
- (called with AH=48h,BX=number of paragraphs to alloc;
- returns CF clear, AX=segment of allocated memory, or
- CF set on error)
- CX:DI -> FAR routine for freeing DOS memory
- (called with AH=49h,ES=segment of block to free;
- returns CF set on error, AX=error code)
- Note: each of these pointers normally points at INT 21/RETF
- other Return: AX = 0001h
- Note: BX may be destroyed by any of the API calls
- --------E-2FFBA1BX0084-----------------------
- INT 2F U - TKERNEL (Borland DOS extender) - UNINSTALL
- AX = FBA1h
- BX = 0084h
- ES:DI -> response buffer (see #03137)
- Return: ES:DI buffer filled
- SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
- Format of TKERNEL response buffer:
- Offset Size Description (Table 03137)
- 00h 4 BYTEs signature "IABH"
- 04h WORD success indicator
- 0001h failed (INT 2F hooked by another program)
- unchanged if successful
- 06h WORD segment of ???
- 08h WORD segment of ??? memory block to free if nonzero
- 0Ah WORD segment of ??? memory block to free if nonzero
- --------s-2FFBFBES0000-----------------------
- INT 2F U - SoundBlaster speech driver - INSTALLATION CHECK
- AX = FBFBh
- ES = 0000h
- Return: ES nonzero if installed
- ES:BX -> entry point data structure (see #03138)
- SeeAlso: INT 80/BX=0000h,INT F3"SoundBlaster"
- Format of SoundBlaster entry point data structure:
- Offset Size Description (Table 03138)
- 00h 3 BYTEs signature "FB "
- 03h BYTE driver major version number???
- 04h DWORD speech driver entry point (see #03139)
- 08h 24 BYTEs ???
- 20h ? BYTEs data buffer for calling speech driver
- (can be 117 bytes or more)
- (Table 03139)
- Call SoundBlaster speech driver entry point with:
- AL = function
- 07h speak a string
- data buffer (see #03138) contains:
- BYTE length of string
- N BYTEs string to speak
- --------K-2FFD12-----------------------------
- INT 2F - KS/KEYSTKCT.EXE - INSTALLATION CHECK
- AX = FD12h
- Return: AX = 0093h if installed
- ES = resident code segment
- ES:CX -> internal "putbuf" routine
- Program: KS/KEYSTKCT.EXE is a key stacking utility (4DOS KEYSTACK.SYS
- look-alike) by Martin Gerdes, published in c't 11/1991, which can be
- loaded as a device driver or as a TSR. It does not emulate 4DOS
- KSTACK API
- Note: the default buffer size is 128 keys
- --------N-2FFE00BX4454-----------------------
- INT 2F - PC-NFS ??? - INSTALLATION CHECK
- AX = FE00h
- BX = 4454h ("DT")
- CX = 4B52h ("KR")
- DX = 4E4Dh ("NM")
- Return: AL = FFh if installed
- BX = 524Eh ("RM")
- CX = 4D44h ("MD")
- DX = 544Bh ("TK")
- Note: DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
- SeeAlso: AX=FE08h
- --------N-2FFE00BX4454-----------------------
- INT 2F - PC-NFS ??? - INSTALLATION CHECK
- AX = FE00h
- BX = 4454h ("DT")
- CX = 4B52h ("KR")
- DX = 544Dh ("TM")
- Return: AL = FFh if installed
- BX = 5254h ("RT")
- CX = 4D44h ("MD")
- DX = 544Bh ("TK")
- Note: DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
- SeeAlso: AX=FE08h
- --------U-2FFE00DI4E55-----------------------
- INT 2F U - NORTON UTILITIES 5.0+ TSRs - INSTALLATION CHECK/STATUS REPORT
- AX = FE00h
- DI = 4E55h ("NU")
- SI = TSR identifier (see #03140)
- Return: SI = TSR reply
- lowercase version of SI on entry (i.e. SI ORed with 2020h)
- execpt SMARTCAN v8.0, which returns SI=6673h ('fs')
- AH = status
- 00h installed but disabled internally
- 01h installed and enabled
- AL = installed product
- 00h NCACHE-x or DISKREET
- 01h SPEEDRV / FILESAVE / EP / DISKMON v6+ installed
- 02h NCACHE2 / SMARTCAN
- 45h DISKMON v5 installed
- BX = length of *.INI file (DISKMON and FILESAVE/EP/SMARTCAN only)
- (see #03141,#03142)
- CX = segment of resident portion
- FFFFh if completely loaded high (NCACHE)
- DI may be destroyed
- ---FILESAVE/EP---
- DL = ??? (apparently always 00h)
- ---DISKMON---
- DX = ??? (apparently always 1AE6h [v5] / 1B86h [v6] / 1C26h [v7])
- Notes: the value returned in CX is incorrect for NCACHE 6.00
- all Norton Caches install as SMARTAAR drivers like SMARTDRV v3
- NCACHE2 and SPEEDRV both support the SMARTDRV v4+ installation check
- to detect Diskreet NDisk drives use CDS/DPB (see INT 21/AH=52h)
- SeeAlso: AX=4A10h/BX=0000h,AX=FE01h,AX=FE02h,AX=FE03h,AX=FE04h,AX=FE05h
- SeeAlso: INT 21/AX=4402h"SMARTDRV"
- (Table 03140)
- Values for Norton Utilities TSR identifier:
- 4346h ("CF") NCACHE-F (v5) / NCACHE (v6) / NCACHE2 (v7+) / SPEEDRV
- 4353h ("CS") NCACHE-S (v5 only)
- 4443h ("DC") DISKREET
- 444Dh ("DM") DISKMON
- 4653h ("FS") FILESAVE (v5) / EP (v6) / SMARTCAN (v7+)
- Format of DISKMON.INI file:
- Offset Size Description (Table 03141)
- -6Ch 108 BYTEs (in memory copy only)
- list of filenames which are always protected:
- IBMBIO.COM/IBMDOS.COM, IO.SYS/MSDOS.SYS, TBIOS.SYS/TDOS.SYS,
- MIO.SYS/IO.BIN, COMMAND.COM
- 00h BYTE ??? always 01h
- 01h BYTE disk light (00h off, 01h on)
- 02h BYTE disk protection (00h off, 01h on)
- 03h BYTE protected areas
- 01h system area
- 02h files
- 03h system area and files
- 04h entire disk
- 04h BYTE floppy access (00h not allowed, 01h allowed)
- 05h 27 BYTEs filename extension list (9 entries)
- (lowercase, blank padded or = 000000h)
- 20h 240 BYTEs filename list (20 entries)
- (lowercase, name and extension blank padded, with '.')
- Note: CX:0508h -> copy in installed TSR (v5)
- CX:052Fh -> copy in installed TSR (v6)
- CX:04E0h -> copy in installed TSR (v7-v8)
- Format of FILESAVE.INI / EP.INI / SMARTCAN.INI file:
- Offset Size Description (Table 03142)
- 00h 26 BITs drive list (bit set: file protection on, cleared: off):
- 00h BYTE drives A: - H:
- 01h BYTE drives I: - P:
- 02h BYTE drives Q: - X:
- 03h BYTE drives Y: - Z:
- 04h BYTE which files to protect
- 00h all files
- 01h all files with extension in list
- 02h all files except those with extension in list
- 05h 27 BYTEs filename extension list (9 entries, uppercase, ASCIZ)
- 20h BYTE include files with archive bit clear (00h no, 01h yes)
- 21h WORD number of days after which files are purged (0 = never)
- 23h WORD max kilobytes of erased file space to hold (0 = all)
- Note: CX:03D2h -> copy in installed TSR (v5)
- CX:03F5h -> copy in installed TSR (v6)
- CX:0434h -> copy in installed TSR (v7-v8)
- --------U-2FFE00DX474F-----------------------
- INT 2F - GO! v3.22+ - API
- AX = FE00h
- DX = 474Fh ('GO')
- SI = function number
- 0063h (BCD for '?') installation check
- 0078h (BCD for 'N') non-registered search (two levels only)
- 0082h (BCD for 'R') reserved for registered version
- 0083h (BCD for 'S') reserved for registered version
- 0085h (BCD for 'U') uninstall
- BX:CX -> buffer (for search functions)
- buffer filled with search spec, i.e. "APL" to get first
- directory containing the substring APL, ":\APL" to find
- the first top-level directory beginning with the letters
- APL
- Return: BX:CX buffer filled with result (search functions only)
- result is counted ASCIZ directory name, empty string if
- no matches (i.e. first byte is length of name, followed by
- name)
- Program: GO! is a shareware directory locator TSR by Steve Ryckman
- Note: the application-supplied buffer for the requests and results which
- BX:CX points at must lie outside the conventional (low-640K)
- memory, since the TSR swaps memory on pop-up; a common location is
- the last 96 bytes of the video memory or a UMB
- --------U-2FFE01DI4E55-----------------------
- INT 2F U - NORTON UTILITIES 5.0+ TSRs - ENABLE
- AX = FE01h
- DI = 4E55h ("NU")
- SI = TSR identifier (see #03140)
- Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
- AX = status
- 0002h successful (DISKMON, FILESAVE, EP)
- FE00h successful (NCACHE-x, DISKREET)
- Notes: if the enable/disable calls are used on DISKMON or NCACHE-x, the status
- report generated by the programs still indicates the previous state,
- and DISKMON.INI is not updated
- apparently has no effect on DISKREET
- SeeAlso: AX=FE00h,AX=FE02h
- --------U-2FFE02DI4E55-----------------------
- INT 2F U - NORTON UTILITIES 5.0+ TSRs - DISABLE
- AX = FE02h
- DI = 4E55h ("NU")
- SI = TSR identifier (see #03140)
- Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
- AX = status
- 0004h successful (DISKMON, FILESAVE)
- FE00h successful (NCACHE-x, DISKREET)
- Notes: (see also AX=FE01h)
- this function appears to be unsafe, as the cache buffers are not
- flushed
- SeeAlso: AX=FE00h,AX=FE01h
- --------U-2FFE03DI4E55-----------------------
- INT 2F U - NORTON UTILITIES 5.0+ TSRs - FLUSH BUFFERS
- AX = FE03h
- DI = 4E55h ("NU")
- SI = TSR identifier (see #03140)
- Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
- AX = status
- 0006h successful???
- Notes: only supported by DISKMON, FILESAVE, and NCACHE-x
- useful for flushing NCACHE before rebooting
- SeeAlso: AX=FE00h,AX=FE10h
- --------U-2FFE04DI4E55-----------------------
- INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
- AX = FE04h
- DI = 4E55h ("NU")
- SI = TSR identifier (see #03140)
- Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
- AX = status
- 0008h successful???
- SeeAlso: AX=FE00h
- --------U-2FFE05DI4E55-----------------------
- INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
- AX = FE05h
- DI = 4E55h ("NU")
- SI = TSR identifier (see #03140)
- Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
- AX = status
- 000Ah successful???
- Note: reportedly dangerous
- SeeAlso: AX=FE00h
- --------N-2FFE08-----------------------------
- INT 2F - PC-NFS ??? - GET ???
- AX = FE08h
- Return: ES:BX -> ???
- Notes: DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
- both the driver responding to AX=FE00h/DX=4E4Dh and the one responding
- to AX=FE00h/DX=544Dh support this function
- SeeAlso: AX=FE00h/BX=4454h
- --------U-2FFE10DI4E55-----------------------
- INT 2F U - NORTON UTILITIES 6.0 NCACHE - REBOOT
- AX = FE10h
- DI = 4E55h ("NU")
- SI = TSR identifier (see #03140)
- Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
- AX = status
- Note: probably used to flush NCACHE buffers and reboot when Ctrl-Alt-Del is
- detected
- SeeAlso: AX=FE03h
- --------S-2FFEEF-----------------------------
- INT 2F - RTS Control TSR - INSTALLATION CHECK
- AX = FEEFh
- Return: AX = EFFEh if installed
- BX = port address
- Program: RTS Control TSR is a utility by Michal Szokolo to lower the RTS
- signal on a COM port during disk accesses to avoid losing incoming
- data
- --------N-2FFF00-----------------------------
- INT 2F - Topware Network Operating System - INSTALLATION CHECK
- AX = FF00h
- Return: AL = status
- 00h not installed, OK to install
- 01h not installed, not OK to install
- FFh installed
- SeeAlso: AX=FF01h,AX=FF02h,AX=FF10h,INT 21/AX=FF00h"Topware",INT 7A"Topware"
- --------N-2FFF01-----------------------------
- INT 2F - Topware Network Operating System - GET VERSION
- AX = FF01h
- Return: AX = version
- SeeAlso: AX=FF00h,AX=FF02h
- --------N-2FFF02-----------------------------
- INT 2F - TopWare Network OS v5.10+ - GET TopNet VERSION STRING
- AX = FF02h
- Return: ES:BX -> version string
- SeeAlso: AX=FF00h,AX=FF01h
- --------N-2FFF10-----------------------------
- INT 2F - TopWare Network OS v5.10+ - TopTerm - INSTALLATION CHECK
- AX = FF10h
- Return: AL = status (00h not installed, 01h installed)
- SeeAlso: AX=FF00h,AX=FF11h,AX=FF12h,AX=FF13h
- --------N-2FFF11-----------------------------
- INT 2F - TopWare Network OS v5.10+ - TopTerm - ENABLE KEYBOARD SERVICE
- AX = FF11h
- Note: this function is only available on workstations, not on the server
- SeeAlso: AX=FF10h,AX=FF12h
- --------N-2FFF12-----------------------------
- INT 2F - TopWare Network OS v5.10+ - TopTerm - DISABLE KEYBOARD SERVICE
- AX = FF12h
- Note: this function is only available on workstations, not on the server
- SeeAlso: AX=FF10h,AX=FF11h
- --------N-2FFF13-----------------------------
- INT 2F - TopWare Network OS v5.10+ - TopTerm - SET INSTALLATION FLAG
- AX = FF13h
- CL = new state (00h off, 01h on)
- SeeAlso: AX=FF10h
- --------N-2FFF14-----------------------------
- INT 2F - TopWare Network OS v5.10+ - START BACKGROUND RECEIVE VIDEO DATA
- AX = FF14h
- Note: this function is only available on workstations, not on the server
- SeeAlso: AX=FF10h,AX=FF15h
- --------N-2FFF15-----------------------------
- INT 2F - TopWare Network OS v5.10+ - END BACKGROUND RECEIVE VIDEO DATA
- AX = FF15h
- Note: this function is only available on workstations, not on the server
- SeeAlso: AX=FF10h,AX=FF14h
- --------N-2FFF16-----------------------------
- INT 2F - TopWare Network OS v5.10+ - SET CONTROL NUMBER OF "SHOW" SCREEN
- AX = FF16h
- BL = which to set (00h TopShow, FFh TopTerm)
- CX = destination screen
- 0000h all stations
- 0000h-00FFh (TopTerm only) send to group CL
- 8001h-80FEh send to station CL
- SeeAlso: AX=FF18h
- --------N-2FFF18-----------------------------
- INT 2F - TopWare Network OS v5.10+ - SEND FULL SCREEN OF DATA FOR TopShow
- AX = FF18h
- SeeAlso: AX=FF00h,AX=FF16h,AX=FF27h
- --------N-2FFF23-----------------------------
- INT 2F - TopWare Network OS v5.10+ - CLOSE SPOOL FILES AND START PRINTING
- AX = FF23h
- SeeAlso: AX=FF00h
- --------N-2FFF27-----------------------------
- INT 2F - TopWare Network OS v5.10+ - GET "SHOW" TYPE
- AX = FF27h
- Return: AL = type (00h complete version, 01h simple version)
- BL = "show" functions flag (00h disabled, 01h enabled)
- SeeAlso: AX=FF16h,AX=FF18h
- --------D-30---------------------------------
- INT 30 - (NOT A VECTOR!) - DOS 1+ - FAR JMP instruction for CP/M-style calls
- the CALL 5 entry point does a FAR jump to here
- Note: under DOS 2+, the instruction at PSP:0005 points two bytes too low in
- memory
- SeeAlso: INT 21/AH=26h
- --------V-30---------------------------------
- INT 30 - QRIP/TSR - USED BY GRAPHICS LIBRARY
- Program: QRIP/TSR is a shareware TSR by Shane Hathaway implementing the Remote
- Imaging Protocol (RIP, RIPscrip) used by several BBS systems to
- provide a graphical user interface
- SeeAlso: INT 2F/AX=ACF0h
- --------W-30---------------------------------
- INT 30 P - MS Windows 3.1+ - PROTECTED-MODE CALLBACK
- SeeAlso: INT 20"Windows"
- --------!---Section--------------------------
- Interrupt List, part 14 of 18
- Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
- --------D-31---------------------------------
- INT 31 - overwritten by CP/M jump instruction in INT 30
- --------v-31---------------------------------
- INT 31 - VIRUS - "Vacsina" series - INSTALLATION CHECK (NOT A VECTOR!)
- Note: if one of the Vacsina viruses is resident, the low byte of this
- interrupt still contains the last byte of the INT 30 CP/M JMP
- instruction, but the remaining three bytes are 7Fh 39h followed
- by the Vacsina version number
- SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 32"VIRUS"
- --------E-310000-----------------------------
- INT 31 P - DPMI 0.9+ - ALLOCATE LDT DESCRIPTORS
- AX = 0000h
- CX = number of descriptors to allocate
- Return: CF clear if successful
- AX = base selector
- CF set on error
- AX = error code (DPMI 1.0+) (see #03143)
- Notes: DPMI is the DOS Protected-Mode Interface
- the base and limit of the returned descriptors will be 0, and the type
- will be "data"
- add the value returned by INT 31/AX=0003h to move to subsequent
- descriptors if multiple descriptors were allocated
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0001h,AX=000Dh,INT 21/AX=3501h
- (Table 03143)
- Values for DPMI 1.0 error code:
- 0000h-7FFFh DOS error passed through by DPMI
- 8001h unsupported function
- 8002h object in wrong state for function
- 8003h system integrity would be endangered
- 8004h deadlock detected
- 8005h pending serialization request cancelled
- 8010h out of DPMI internal resources
- 8011h descriptor unavailable
- 8012h linear memory unavailable
- 8013h physical memory unavailable
- 8014h backing store unavailable
- 8015h callback unavailable
- 8016h handle unavailable
- 8017h maximum lock count exceeded
- 8018h shared memory already serialized exclusively by another
- 8019h shared memory already serialized shared by another client
- 8021h invalid value for numeric or flag parameter
- 8022h invalid segment selector
- 8023h invalid handle
- 8024h invalid callback
- 8025h invalid linear address
- 8026h request not supported by hardware
- --------E-310001-----------------------------
- INT 31 P - DPMI 0.9+ - FREE LDT DESCRIPTOR
- AX = 0001h
- BX = selector to free
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8022h) (see #03143)
- Notes: only one descriptor is freed per call
- the program's initial CS, DS, and SS descriptors may be freed
- (DPMI 1.0+) any segment registers containing the freed selector are
- set to 0000h
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0000h,AX=000Ah,AX=000Dh,INT 21/AX=3502h
- --------E-310002-----------------------------
- INT 31 P - DPMI 0.9+ - SEGMENT TO DESCRIPTOR
- AX = 0002h
- BX = real mode segment
- Return: CF clear if successful
- AX = selector corresponding to real mode segment (64K limit)
- CF set on error
- AX = error code (DPMI 1.0+) (8011h) (see #03143)
- Notes: multiple calls for the same real mode segment return the same selector
- the returned descriptor can never be modified or freed
- not supported by MS Windows 3.0 in Standard mode
- --------E-310003-----------------------------
- INT 31 P - DPMI 0.9+ - GET NEXT SELECTOR INCREMENT VALUE
- AX = 0003h
- Return: CF clear
- AX = value to add to get next sequential selector
- Notes: the increment will be a power of two
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0000h
- --------E-310004-----------------------------
- INT 31 P - DPMI 0.9+ - LOCK SELECTOR
- AX = 0004h
- BX = selector to lock (prevent paging)
- Return: ???
- Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
- specification, this function is called by MS Windows TASKMAN,
- PROGMAN, and KERNEL
- SeeAlso: AX=0005h,AX=0600h
- --------E-310005-----------------------------
- INT 31 P - DPMI 0.9+ - UNLOCK SELECTOR
- AX = 0005h
- BX = selector to unlock (permit paging)
- Return: ???
- Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
- specification, this function is called by MS Windows TASKMAN,
- PROGMAN, and KERNEL
- SeeAlso: AX=0004h,AX=0601h
- --------E-310006-----------------------------
- INT 31 P - DPMI 0.9+ - GET SEGMENT BASE ADDRESS
- AX = 0006h
- BX = selector
- Return: CF clear if successful
- CX:DX = linear base address of segment
- CF set on error
- AX = error code (DPMI 1.0+) (8022h) (see #03143)
- Note: not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0007h,INT 21/AX=3504h
- --------E-310007-----------------------------
- INT 31 P - DPMI 0.9+ - SET SEGMENT BASE ADDRESS
- AX = 0007h
- BX = selector
- CX:DX = linear base address
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8022h,8025h) (see #03143)
- Notes: only modify descriptors allocated with INT 31/AX=0000h
- only the low 24 bits of the address will be used by 16-bit DPMI
- implementations even on a 386 or higher
- DPMI 1.0+ automatically reloads any segment registers containing the
- selector being modified
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0006h,AX=0008h,AX=0009h,AX=000Ch,INT 21/AX=3503h
- SeeAlso: INT 21/AH=E9h"OS/286",INT 2C/AX=0002h
- --------E-310008-----------------------------
- INT 31 P - DPMI 0.9+ - SET SEGMENT LIMIT
- AX = 0008h
- BX = selector
- CX:DX = segment limit
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #03143)
- Notes: CX must be zero for 16-bit DPMI implementations
- limits greater than 1MB must be page aligned (low 12 bits set)
- only modify descriptors allocated with INT 31/AX=0000h
- DPMI 1.0+ automatically reloads any segment registers containing the
- selector being modified
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0007h,AX=0009h,AX=000Ch,INT 21/AX=3505h,INT 21/AH=E9h"OS/286"
- SeeAlso: INT 2C/AX=0003h,#00501 at INT 15/AH=89h
- --------E-310009-----------------------------
- INT 31 P - DPMI 0.9+ - SET DESCRIPTOR ACCESS RIGHTS
- AX = 0009h
- BX = selector
- CL = access rights/type byte (see #00502 at INT 15/AH=89h)
- CH = 80386 extended rights/type byte (see #00505 at INT 15/AH=89h)
- (32-bit DPMI implementations only)
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #03143)
- Notes: if the Present bit is clear, CL bits 0-3 may have any value
- DPMI 1.0+ automatically reloads any segment registers containing the
- selector being modified
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0007h,AX=0008h,AX=000Ch,INT 21/AX=2514h,INT 2C/AX=0004h
- SeeAlso: INT 2C/AX=0005h
- --------E-31000A-----------------------------
- INT 31 P - DPMI 0.9+ - CREATE ALIAS DESCRIPTOR
- AX = 000Ah
- BX = selector
- Return: CF clear if successful
- AX = new data selector
- CF set on error
- AX = error code (DPMI 1.0+) (8011h,8022h) (see #03143)
- Notes: fails if selector in BX is not a code segment or is invalid
- use INT 31/AX=0001h to free new selector
- future changes to the original selector will not be reflected in the
- returned alias selector
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0001h
- --------E-31000B-----------------------------
- INT 31 P - DPMI 0.9+ - GET DESCRIPTOR
- AX = 000Bh
- BX = LDT selector
- ES:(E)DI -> 8-byte buffer for copy of descriptor
- Return: CF clear if successful
- buffer filled
- CF set on error
- AX = error code (DPMI 1.0+) (8022h) (see #03143)
- Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=000Ch
- --------E-31000C-----------------------------
- INT 31 P - DPMI 0.9+ - SET DESCRIPTOR
- AX = 000Ch
- BX = LDT selector
- ES:(E)DI -> 8-byte buffer containing descriptor
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #03143)
- Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
- only modify descriptors allocated with INT 31/AX=0000h
- DPMI 1.0+ automatically reloads any segment registers containing the
- selector being modified
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=000Bh
- --------E-31000D-----------------------------
- INT 31 P - DPMI 0.9+ - ALLOCATE SPECIFIC LDT DESCRIPTOR
- AX = 000Dh
- BX = LDT selector
- Return: CF clear if successful
- descriptor allocated
- CF set on error
- AX = error code (DPMI 1.0+) (8011h,8022h) (see #03143)
- Notes: free descriptor with INT 31/AX=0001h
- the first 16 descriptors (04h-7Ch) are reserved for this function, but
- some may already be in use by other applications under DPMI 0.9;
- DPMI 1.0 guarantees 16 descriptors per client
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0000h,AX=0001h
- --------E-31000E-----------------------------
- INT 31 P - DPMI 1.0+ - GET MULTIPLE DESCRIPTORS
- AX = 000Eh
- CX = number of descriptors to copy
- ES:(E)DI -> descriptor buffer (see #03144)
- Return: CF clear if successful
- descriptors copied
- CF set on error
- AX = error code (8022h) (see #03143)
- CX = number of descriptors successfully copied
- Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
- if the function fails, the first CX descriptors are valid; the
- remainder are not modified
- SeeAlso: AX=000Bh,AX=000Fh
- Format of DPMI descriptor buffer entry (one per descriptor to get):
- Offset Size Description (Table 03144)
- 00h WORD selector (set by client)
- 02h QWORD descriptor (set by host)
- --------E-31000F-----------------------------
- INT 31 P - DPMI 1.0+ - SET MULTIPLE DESCRIPTORS
- AX = 000Fh
- CX = number of descriptors to copy
- ES:(E)DI -> descriptor buffer (see #03145)
- Return: CF clear if successful
- descriptors copied
- CF set on error
- AX = error code (8021h,8022h,8025h) (see #03143)
- CX = number of descriptors successfully copied
- Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
- if the function fails, the first CX descriptors are valid; the
- remainder are not modified
- DPMI 1.0+ automatically reloads any segment registers containing a
- selector being modified
- SeeAlso: AX=000Ch,AX=000Eh
- Format of DPMI descriptor buffer entry (one per descriptor to set):
- Offset Size Description (Table 03145)
- 00h WORD selector
- 02h QWORD descriptor
- --------E-310100-----------------------------
- INT 31 P - DPMI 0.9+ - ALLOCATE DOS MEMORY BLOCK
- AX = 0100h
- BX = number of paragraphs to allocate
- Return: CF clear if successful
- AX = real mode segment of allocated block
- DX = first selector for allocated block
- CF set on error
- AX = DOS error code (07h,08h) (see #01680 at INT 21/AH=59h/BX=0000h)
- (DPMI 1.0+) DPMI error code (8011h) (see #03143)
- BX = size (in paragraphs) of largest available block
- Notes: multiple contiguous selectors are allocated for blocks of more than 64K
- if the caller is a 16-bit program
- never modify or deallocate returned descriptors
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0101h,AX=0501h
- --------E-310101-----------------------------
- INT 31 P - DPMI 0.9+ - FREE DOS MEMORY BLOCK
- AX = 0101h
- DX = selector of block
- Return: CF set if successful
- CF set on error
- AX = DOS error code (07h,09h) (see #01680 at INT 21/AH=59h/BX=0000h)
- Notes: all descriptors allocated for the block are automatically freed
- DPMI 1.0+ automatically zeros any segment registers containing a
- selector freed by this function
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0100h,AX=0102h,AX=0502h
- --------E-310102-----------------------------
- INT 31 P - DPMI 0.9+ - RESIZE DOS MEMORY BLOCK
- AX = 0102h
- BX = new block size in paragraphs
- DX = selector of block
- Return: CF clear if successful
- CF set on error
- AX = DOS error code (07h,08h,09h)
- (see #01680 at INT 21/AH=59h/BX=0000h)
- (DPMI 1.0+) DPMI error code (8011h,8022h) (see #03143)
- BX = maximum block size (in paragraphs) possible
- Notes: increasing the size of a block past a 64K boundary will fail if the
- next descriptor in the LDT is already in use
- shrinking a block past a 64K boundary will cause some selectors to be
- freed; DPMI 1.0+ automatically zeros any segment registers containing
- a selector freed by this function
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0100h
- --------E-310200-----------------------------
- INT 31 P - DPMI 0.9+ - GET REAL MODE INTERRUPT VECTOR
- AX = 0200h
- BL = interrupt number
- Return: CF clear
- CX:DX = segment:offset of real mode interrupt handler
- Note: the DPMI implementation is required to support all 256 vectors
- SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2503h
- --------E-310201-----------------------------
- INT 31 P - DPMI 0.9+ - SET REAL MODE INTERRUPT VECTOR
- AX = 0201h
- BL = interrupt number
- CX:DX = segment:offset of real mode handler
- Return: CF clear
- Note: all memory that may be touched by a hardware interrupt handler must be
- locked down with INT 31/AX=0600h
- SeeAlso: AX=0200h,AX=0205h,AX=0600h,INT 21/AX=2505h
- --------E-310202-----------------------------
- INT 31 P - DPMI 0.9+ - GET PROCESSOR EXCEPTION HANDLER VECTOR
- AX = 0202h
- BL = exception number (00h-1Fh)
- Return: CF clear if successful
- CX:(E)DX = selector:offset of handler
- CF set on error
- AX = error code (DPMI 1.0+) (8021h) (see #03143)
- Notes: 16-bit programs receive the pointer in CX:DX, 32-bit programs in CX:EDX
- DPMI 1.0+ supports this function only for backward compatibility; use
- AX=0210h or AX=0211h instead
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0203h,AX=0210h,AX=0211h,INT 2F/AX=FB42h/BX=0021h
- --------E-310203-----------------------------
- INT 31 P - DPMI 0.9+ - SET PROCESSOR EXCEPTION HANDLER VECTOR
- AX = 0203h
- BL = exception number (00h-1Fh)
- CX:(E)DX = selector:offset of handler
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8021h,8022h) (see #03143)
- Notes: 32-bit programs must supply an offset in EDX and use a 32-bit interrupt
- stack frame on chaining to the next exception handler
- the handler should return using a FAR return
- all fault stack frames contain an error code, but it is only valid for
- exceptions 08h and 0Ah-0Eh
- handlers will only be called if the exception occurs in protected mode,
- and the DPMI host does not transparently handle the exception
- the handler may change certain values on the stack frame
- (see #03146,#03147)
- DPMI 1.0+ supports this function only for backward compatibility; use
- AX=0212h or AX=0213h instead
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0202h,AX=0212h,AX=0213h,INT 2F/AX=FB42h/BX=0022h
- Format of stack frame for 16-bit programs: (offset from SS:SP)
- Offset Size Description (Table 03146)
- 00h DWORD return CS:IP (do not change)
- 04h WORD error code
- 06h DWORD CS:IP of exception
- 0Ah WORD flags
- 0Ch DWORD SS:SP
- Format of stack frame for 32-bit programs: (offset from SS:ESP)
- Offset Size Description (Table 03147)
- 00h DWORD return EIP (do not change)
- 04h WORD return CS selector (do not change)
- 06h WORD reserved (do not change)
- 08h DWORD error code
- 0Ch DWORD EIP of exception
- 10h WORD CS selector of exception
- 12h WORD reserved (do not change)
- 14h DWORD EFLAGS
- 18h DWORD ESP
- 1Ch WORD SS
- 1Eh WORD reserved (do not change)
- --------E-310204-----------------------------
- INT 31 P - DPMI 0.9+ - GET PROTECTED MODE INTERRUPT VECTOR
- AX = 0204h
- BL = interrupt number
- Return: CF clear
- CX:(E)DX = selector:offset of handler
- Notes: 16-bit programs use CX:DX, 32-bit programs use CX:EDX
- DPMI implementations are required to support all 256 vectors
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0200h,AX=0205h,INT 21/AX=2502h,INT 2C/AX=0006h
- SeeAlso: INT 2F/AX=FB42h/BX=0024h
- --------E-310205-----------------------------
- INT 31 P - DPMI 0.9+ - SET PROTECTED MODE INTERRUPT VECTOR
- AX = 0205h
- BL = interrupt number
- CX:(E)DX = selector:offset of handler
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8022h) (see #03143)
- Notes: 16-bit programs use CX:DX, 32-bit programs use CX:EDX
- 32-bit programs must use a 32-bit interrupt stack frame when chaining
- to the next handler
- DPMI implementations are required to support all 256 vectors
- hardware interrupts are reflected to the virtual machine's primary
- client, software interrupts to the current client
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2504h,INT 2C/AX=0007h
- SeeAlso: INT 2F/AX=FB42h/BX=0025h
- --------E-310210-----------------------------
- INT 31 P - DPMI 1.0+ - GET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
- AX = 0210h
- BL = exception number (00h-1Fh)
- Return: CF clear if successful
- CX:(E)DX = selector:offset of exception handler
- CF set on error
- AX = error code (8021h) (see #03143)
- Note: DPMI host reflects exception to current client's handler
- SeeAlso: AX=0202h,AX=0211h,AX=0212h
- --------E-310211-----------------------------
- INT 31 P - DPMI 1.0+ - GET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
- AX = 0211h
- BL = exception number (00h-1Fh)
- Return: CF clear if successful
- CX:(E)DX = selector:offset of exception handler
- CF set on error
- AX = error code (8021h) (see #03143)
- Notes: returns address of protected-mode handler for real-mode exception
- DPMI host performs a switch to protected mode, reflects the exception
- to the virtual machine's primary client, and returns to real mode
- on the handler's completion
- SeeAlso: AX=0202h,AX=0210h,AX=0213h
- --------E-310212-----------------------------
- INT 31 P - DPMI 1.0+ - SET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
- AX = 0212h
- BL = exception or fault number (00h-1Fh)
- CX:(E)DX = exception handler selector:offset
- Return: CF clear if successful
- CF set on error
- AX = error code (8021h,8022h) (see #03143)
- Note: DPMI host sends exception to current client's handler
- SeeAlso: AX=0203h,AX=0210h,AX=0213h
- --------E-310213-----------------------------
- INT 31 P - DPMI 1.0+ - SET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
- AX = 0213h
- BL = exception or fault number (00h-1Fh)
- CX:(E)DX = exception handler selector:offset
- Return: CF clear if successful
- CF set on error
- AX = error code (8021h,8022h) (see #03143)
- Notes: specifies address of protected-mode handler for real-mode exception
- DPMI host performs a switch to protected mode, reflects the exception
- to the virtual machine's primary client, and returns to real mode
- on the handler's completion
- SeeAlso: AX=0203h,AX=0211h,AX=0212h
- --------E-310300-----------------------------
- INT 31 P - DPMI 0.9+ - SIMULATE REAL MODE INTERRUPT
- AX = 0300h
- BL = interrupt number
- BH = flags
- bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
- reserved, must be 0 (DPMI 1.0+)
- others: reserved, must be 0
- CX = number of words to copy from protected mode to real mode stack
- ES:(E)DI = selector:offset of real mode call structure (see #03148)
- Return: CF clear if successful
- real mode call structure modified (all fields except SS:SP, CS:IP
- filled with return values from real mode interrupt)
- CF set on error
- AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #03143)
- protected mode stack unchanged
- Notes: 16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
- CS:IP in the real mode call structure is ignored for this call,
- instead, the indicated interrupt vector is used for the address
- the flags in the call structure are pushed on the real mode stack to
- form an interrupt stack frame, and the trace and interrupt flags are
- clear on entry to the handler
- DPMI will provide a small (30 words) real mode stack if SS:SP is zero
- the real mode handler must return with the stack in the same state as
- it was on being called
- SeeAlso: AX=0302h,AX=FF01h,INT 21/AX=2511h,INT 21/AH=E3h"OS/286"
- SeeAlso: INT 2C/AX=0026h,INT 2F/AX=FB42h/BX=000Dh
- Format of DPMI real mode call structure:
- Offset Size Description (Table 03148)
- 00h DWORD EDI
- 04h DWORD ESI
- 08h DWORD EBP
- 0Ch DWORD reserved (00h)
- 10h DWORD EBX
- 14h DWORD EDX
- 18h DWORD ECX
- 1Ch DWORD EAX
- 20h WORD flags
- 22h WORD ES
- 24h WORD DS
- 26h WORD FS
- 28h WORD GS
- 2Ah WORD IP
- 2Ch WORD CS
- 2Eh WORD SP
- 30h WORD SS
- --------E-310301-----------------------------
- INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH FAR RETURN FRAME
- AX = 0301h
- BH = flags
- bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
- reserved, must be 0 (DPMI 1.0+)
- others: reserved must be 0
- CX = number of words to copy from protected mode to real mode stack
- ES:(E)DI = selector:offset of real mode call structure
- (see #03148 at INT 31/AX=0300h)
- Return: CF clear if successful
- real mode call structure modified (all fields except SS:SP, CS:IP
- filled with return values from real mode interrupt)
- CF set on error
- AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #03143)
- protected mode stack unchanged
- Notes: 16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
- the real mode procedure must exit with a FAR return
- DPMI will provide a small (30 words) real mode stack if SS:SP is zero
- the real mode handler must return with the stack in the same state as
- it was on being called
- SeeAlso: AX=0300h,AX=0302h,AX=FF02h,INT 21/AX=250Eh,INT 21/AH=E1h"OS/286"
- SeeAlso: INT 2C/AX=0025h
- --------E-310302-----------------------------
- INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH IRET FRAME
- AX = 0302h
- BH = flags
- bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
- reserved, must be 0 (DPMI 1.0+)
- others: reserved, must be 0
- CX = number of words to copy from protected mode to real mode stack
- ES:(E)DI = selector:offset of real mode call structure
- (see #03148 at INT 31/AX=0300h)
- Return: CF clear if successful
- real mode call structure modified (all fields except SS:SP, CS:IP
- filled with return values from real mode interrupt)
- CF set on error
- AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #03143)
- protected mode stack unchanged
- Notes: 16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
- the flags in the call structure are pushed on the real mode stack to
- form an interrupt stack frame, and the trace and interrupt flags are
- clear on entry to the handler
- the real mode procedure must exit with an IRET
- DPMI will provide a small (30 words) real mode stack if SS:SP is zero
- the real mode handler must return with the stack in the same state as
- it was on being called
- SeeAlso: AX=0300h
- --------E-310303-----------------------------
- INT 31 P - DPMI 0.9+ - ALLOCATE REAL MODE CALLBACK ADDRESS
- AX = 0303h
- DS:(E)SI = selector:offset of procedure to call
- ES:(E)DI = selector:offset of real mode call structure (see #03148)
- Return: CF clear if successful
- CX:DX = segment:offset of real mode call address (see #03149)
- CF set on error
- AX = error code (DPMI 1.0+) (8015h) (see #03143)
- Notes: the real mode call structure is static, causing reentrancy problems;
- its contents are only valid at the time of a callback
- the called procedure must modify the real mode CS:IP before returning
- values are returned to real mode by modifying the real mode call struc
- DPMI hosts must provide at least 16 callbacks per client
- the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 does
- not support this function
- SeeAlso: AX=0304h,AX=0C00h
- (Table 03149)
- Values DPMI real-mode callback procedure is called with:
- DS:(E)SI = selector:offset of real mode SS:SP
- ES:(E)DI = selector:offset of real mode call structure
- SS:(E)SP = locked protected mode API stack
- interrupts disabled
- Return: (with IRET)
- ES:(E)DI = selector:offset of real mode call structure to restore
- --------E-310304-----------------------------
- INT 31 P - DPMI 0.9+ - FREE REAL MODE CALLBACK ADDRESS
- AX = 0304h
- CX:DX = real mode callback address
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8024h) (see #03143)
- Note: the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 does
- not support this function
- SeeAlso: AX=0303h
- --------E-310305-----------------------------
- INT 31 P - DPMI 0.9+ - GET STATE SAVE/RESTORE ADDRESSES
- AX = 0305h
- Return: CF clear
- AX = size in bytes of state buffer
- BX:CX = real mode address of procedure to save/restore state
- SI:(E)DI = protected mode procedure to save/restore state (see #03150)
- Notes: the buffer size will be zero if it is not necessary to preserve state
- 16-bit programs should call SI:DI, 32-bit programs should call SI:EDI
- this function is only needed if using the raw mode switch service
- SeeAlso: AX=0306h
- (Table 03150)
- Call DPMI state-save procedures with:
- AL = direction
- 00h save state
- 01h restore state
- ES:(E)DI -> state buffer
- Return: all registers preserved
- --------E-310306-----------------------------
- INT 31 P - DPMI 0.9+ - GET RAW MODE SWITCH ADDRESSES
- AX = 0306h
- Return: CF clear
- BX:CX -> procedure to switch from real to protected mode (see #03151)
- SI:(E)DI -> procedure to switch from protected to real mode
- Notes: 16-bit programs should jump to SI:DI, 32-bit programs should use SI:EDI
- the caller must save and restore the state of the task with AX=0305h
- not supported by MS Windows 3.0 in Standard mode
- SeeAlso: AX=0305h
- (Table 03151)
- Values to JUMP at mode-switch procedures with:
- AX = new DS
- CX = new ES
- DX = new SS
- (E)BX = new (E)SP
- SI:(E)DI = new CS:(E)IP
- Notes: BP/EBP is preserved across the call, but AX/EAX, BX/EBX, CX/ECX,
- DX/EDX, SI/ESI, and DI/EDI will be undefined; FS and GS will be 0000h
- interrupts will stay disabled during the entire mode switch if they
- are disabled on entry to the mode-switch procedure
- --------E-310400-----------------------------
- INT 31 P - DPMI 0.9+ - GET DPMI VERSION
- AX = 0400h
- Return: CF clear
- AH = major version of DPMI spec supported
- AL = two-digit minor version of DPMI spec supported
- BX = DPMI host flags (see #03152)
- CL = processor type (02h=80286, 03h=80386, 04h=80486)
- DH = curr value of virtual master interrupt controller base interrupt
- DL = curr value of virtual slave interrupt controller base interrupt
- BUG: Windows NT versions from the March 1993 beta to at least the Final
- release with fixes to CSD002 report version 0090h (0.144); this has
- reportedly been corrected in the Windows NT 3.5 beta
- SeeAlso: AX=0401h,INT 21/AX=250Ch,INT 2F/AX=1687h,INT 4B/AX=8102h/DX=0000h
- SeeAlso: INT 67/AX=DE0Ah
- Bitfields for DPMI host flags:
- Bit(s) Description (Table 03152)
- 0 running under an 80386 (32-bit) implementation
- 1 processor returns to real mode for reflected interrupts instead of V86
- mode
- 2 virtual memory supported
- 3 reserved (undefined)
- 4-15 reserved (zero)
- --------E-310401-----------------------------
- INT 31 P - DPMI 1.0+ - GET DPMI CAPABILITIES
- AX = 0401h
- ES:(E)DI -> 128-byte buffer for host description (see #03153)
- Return: CF clear if successful
- AX = capabilities (see #03154)
- CX = reserved (00h)
- DX = reserved (00h)
- buffer filled
- CF set on error (DPMI 0.9 only)
- SeeAlso: AX=0400h
- Format of DPMI host description:
- Offset Size Description (Table 03153)
- 00h BYTE host major version number
- 01h BYTE host minor version number
- 02h 126 BYTEs ASCIZ host vendor name
- Bitfields for DPMI capabilities:
- Bit(s) Description (Table 03154)
- 0 paged accessed/dirty supported (see AX=0506h,AX=0507h)
- 1 exceptions restartability supported
- 2 device mapping supported (see AX=0508h)
- 3 conventional memory mapping supported (see AX=0509h)
- 4 demand zero-fill supported
- 5 write-protect client capability supported
- 6 write-protect host capability supported
- 7-15 reserved
- --------E-310500-----------------------------
- INT 31 P - DPMI 0.9+ - GET FREE MEMORY INFORMATION
- AX = 0500h
- ES:(E)DI -> buffer for memory information (see #03155)
- Return: CF clear
- Notes: 16-bit programs use ES:DI, 32-bit programs use ES:EDI
- this function must be considered advisory because other applications
- may affect the results at any time after the call
- fields not supported by the DPMI implementation are filled with
- FFFFFFFFh
- DPMI 1.0+ supports this function solely for backward compatibility; use
- AX=050Bh instead
- the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 only
- returns the first field in the memory information record
- SeeAlso: AX=0501h,AX=050Bh,AX=0604h
- Format of DPMI memory information:
- Offset Size Description (Table 03155)
- 00h DWORD largest available block in bytes
- 04h DWORD maximum unlocked page allocation
- 08h DWORD maximum locked page allocation
- 0Ch DWORD total linear address space in pages
- 10h DWORD total unlocked pages
- 14h DWORD free pages
- 18h DWORD total physical pages
- 1Ch DWORD free linear address space in pages
- 20h DWORD size of paging file/partition in pages
- 24h 12 BYTEs reserved
- --------E-310501-----------------------------
- INT 31 P - DPMI 0.9+ - ALLOCATE MEMORY BLOCK
- AX = 0501h
- BX:CX = size in bytes
- Return: CF clear if successful
- BX:CX = linear address of block
- SI:DI = memory block handle for resizing and freeing block
- CF set on error
- AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h)(see #03143)
- Notes: no selectors are allocated
- the memory block is allocated unlocked (can be locked with AX=0600h)
- allocations are often page granular (see AX=0604h)
- under MS Windows 3.10 Enhanced mode with paging enabled, it is possible
- for this function to fail even if AX=0500h indicates that enough
- memory is available
- SeeAlso: AX=0000h,AX=0100h,AX=0500h,AX=0502h,AX=0503h,AX=0504h,AX=0D00h
- SeeAlso: INT 2F/AX=FB42h/BX=0002h
- --------E-310502-----------------------------
- INT 31 P - DPMI 0.9+ - FREE MEMORY BLOCK
- AX = 0502h
- SI:DI = handle of memory block
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8023h) (see #03143)
- Note: any selectors allocated for the memory block must also be freed,
- preferably before freeing the memory block
- SeeAlso: AX=0001h,AX=0101h,AX=0501h,AX=0D01h
- --------E-310503-----------------------------
- INT 31 P - DPMI 0.9+ - RESIZE MEMORY BLOCK
- AX = 0503h
- BX:CX = new size in bytes (nonzero)
- SI:DI = handle of memory block
- Return: CF clear if successful
- BX:CX = new linear address
- SI:DI = new handle of memory block
- CF set on error
- AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h,8023h)
- (see #03143)
- Notes: any selectors pointing at the block must be updated
- the previous memory block handle becomes invalid
- an error is returned if the new size is 0
- SeeAlso: AX=0102h,AX=0501h,AX=0505h
- --------E-310504-----------------------------
- INT 31 P - DPMI 1.0+ - ALLOCATE LINEAR MEMORY BLOCK
- AX = 0504h
- EBX = page-aligned linear address of memory block (00000000h if any
- address is acceptable)
- ECX = size in bytes (nonzero)
- EDX = flags
- bit 0: set to create committed pages instead of uncommitted pages
- bits 1-31 reserved (0)
- Return: CF clear if successful
- EBX = linear address of memory block
- ESI = memory block handle
- CF set on error
- AX = error code (8001h,8012h-8014h,8016h,8021h,8025h)(see #03143)
- Note: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
- SeeAlso: AX=0501h,AX=0505h
- --------E-310505-----------------------------
- INT 31 P - DPMI 1.0+ - RESIZE LINEAR MEMORY BLOCK
- AX = 0505h
- ESI = memory block handle
- ECX = new size in bytes (nonzero)
- EDX = flags
- bit 0: create committed pages rather than uncommitted pages
- bit 1: segment descriptor update required
- ES:EBX -> buffer containing array of WORDs with selectors
- EDI = number of selectors in array
- bits 2-31 reserved (0)
- Return: CF clear if successful
- EBX = new linear base address
- ESI = new memory block handle
- CF set on error
- AX = error code (8001h,8012h-8014h,8016h,8021h,8023h)(see #03143)
- Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
- the old memory block handle becomes invalid
- if EDX bit 1 set and the block's base address is changed, DPMI updates
- all descriptors for selectors in the update buffer which fall within
- the memory block
- SeeAlso: AX=0503h,AX=0504h
- --------E-310506-----------------------------
- INT 31 P - DPMI 1.0+ - GET PAGE ATTRIBUTES
- AX = 0506h
- ESI = memory block handle
- EBX = offset in memory block of first page
- ECX = number of pages
- ES:EDX -> array of WORDs to hold page attributes (see #03156)
- Return: CF clear if successful
- buffer filled
- CF set on error
- AX = error code (8001h,8023h,8025h) (see #03143)
- Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
- if EBX is not page-aligned, it will be rounded down
- SeeAlso: AX=0504h,AX=0507h,INT 21/AX=251Dh,INT 21/AX=EB00h
- Bitfields for DPMI page attribute word:
- Bit(s) Description (Table 03156)
- 0-2 page type
- 000 uncommitted
- 001 committed
- 010 mapped (see AX=0508h,AX=0509h)
- other currently unused
- 3 page is read/write rather than read-only
- 4 accessed/dirty bits supplied in bits 5 and 6
- 5 page has been accessed (only valid if bit 4 set)
- 6 page has been written (only valid if bit 4 set)
- 7-15 reserved (0)
- --------E-310507-----------------------------
- INT 31 P - DPMI 1.0+ - MODIFY PAGE ATTRIBUTES
- AX = 0507h
- ESI = memory block handle
- EBX = offset in memory block of first page
- ECX = number of pages
- ES:EDX -> array of WORDs with new page attributes (see #03156)
- Return: CF clear if successful
- CF set on error
- AX = error code (8001h,8002h,8013h,8014h,8021h,8023h,8025h)
- (see #03143)
- ECX = number of pages which have been set
- Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
- if EBX is not page-aligned, it will be rounded down
- SeeAlso: AX=0504h,AX=0506h,INT 21/AX=251Eh
- --------E-310508-----------------------------
- INT 31 P - DPMI 1.0+ - MAP DEVICE IN MEMORY BLOCK
- AX = 0508h
- ESI = memory block handle
- EBX = page-aligned offset within memory block of page(s) to be mapped
- ECX = number of pages to map
- EDX = page-aligned physical address of device
- Return: CF clear if successful
- CF set on error
- AX = error code (8001h,8003h,8023h,8025h) (see #03143)
- Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
- support of this function is optional; hosts are also allowed to support
- the function for some devices but not others
- SeeAlso: AX=0504h,AX=0509h,AX=0800h,AX=0801h
- --------E-310509-----------------------------
- INT 31 P - DPMI 1.0+ - MAP CONVENTIONAL MEMORY IN MEMORY BLOCK
- AX = 0509h
- ESI = memory block handle
- EBX = page-aligned offset within memory block of page(s) to map
- ECX = number of pages to map
- EDX = page-aligned linear address of conventional (below 1M) memory
- Return: CF clear if successful
- CF set on error
- AX = error code (8001h,8003h,8023h,8025h) (see #03143)
- Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
- support of this function is optional
- SeeAlso: AX=0504h,AX=0508h,AX=0801h
- --------E-31050A-----------------------------
- INT 31 P - DPMI 1.0+ - GET MEMORY BLOCK SIZE AND BASE
- AX = 050Ah
- SI:DI = memory block handle
- Return: CF clear if successful
- SI:DI = size in bytes
- BX:CX = base address
- CF set on error
- AX = error code (8023h) (see #03143)
- SeeAlso: AX=0501h,AX=0504h
- --------E-31050B-----------------------------
- INT 31 P - DPMI 1.0+ - GET MEMORY INFORMATION
- AX = 050Bh
- ES:(E)DI -> 128-byte buffer for memory information (see #03157)
- Return: CF clear if successful
- CF set on error (DPMI 0.9 only)
- Note: 16-bit programs use ES:DI, 32-bit programs must use ES:EDI
- SeeAlso: AX=0500h
- Format of DPMI memory information:
- Offset Size Description (Table 03157)
- 00h DWORD total allocated bytes of physical memory controlled by host
- 04h DWORD total allocated bytes of virtual memory controlled by host
- 08h DWORD total available bytes of virtual memory controlled by host
- 0Ch DWORD total allocated bytes of virtual memory for curr virtual mach
- 10h DWORD total available bytes of virtual memory for curr virtual mach
- 14h DWORD total allocated bytes of virtual memory for current client
- 18h DWORD total available bytes of virtual memory for current client
- 1Ch DWORD total locked bytes for current client
- 20h DWORD maximum locked bytes for current client
- 24h DWORD highest linear address available to current client
- 28h DWORD largest available memory block in bytes
- 2Ch DWORD minimum allocation unit in bytes
- 30h DWORD allocation alignment unit size in bytes
- 34h 76 BYTEs reserved (00h)
- --------E-310600-----------------------------
- INT 31 P - DPMI 0.9+ - LOCK LINEAR REGION
- AX = 0600h
- BX:CX = starting linear address
- SI:DI = size of region in bytes
- Return: CF clear if successful
- CF set on error
- none of the memory is locked
- AX = error code (DPMI 1.0+) (8013h,8017h,8025h) (see #03143)
- Notes: pages at beginning and end will be locked if the region overlaps them
- may be called multiple times for a given page; the DPMI host keeps a
- lock count for each page
- SeeAlso: AX=0004h,AX=0601h,INT 21/AX=251Ah,INT 21/AX=EB06h
- --------E-310601-----------------------------
- INT 31 P - DPMI 0.9+ - UNLOCK LINEAR REGION
- AX = 0601h
- BX:CX = starting linear address
- SI:DI = size of region in bytes
- Return: CF clear if successful
- CF set on error
- none of the memory is unlocked
- AX = error code (DPMI 1.0+) (8002h,8025h) (see #03143)
- Notes: pages at beginning and end will be unlocked if the region overlaps them
- memory whose lock count has not reached zero remains locked
- SeeAlso: AX=0005h,AX=0600h,INT 21/AX=251Bh,INT 21/AX=EB07h
- --------E-310602-----------------------------
- INT 31 P - DPMI 0.9+ - MARK REAL MODE REGION AS PAGEABLE
- AX = 0602h
- BX:CX = starting linear address
- SI:DI = size of region in bytes
- Return: CF clear if successful
- CF set on error
- none of the memory is made pageable
- AX = error code (DPMI 1.0+) (8002h,8025h) (see #03143)
- Notes: must relock all unlocked real mode memory before terminating process
- for DPMI 0.9; DPMI 1.0+ automatically relocks real mode memory
- pages at beginning and end will be unlocked if the region overlaps them
- pageability of real mode pages is binary, not a count
- SeeAlso: AX=0600h,AX=0603h
- --------E-310603-----------------------------
- INT 31 P - DPMI 0.9+ - RELOCK REAL MODE REGION
- AX = 0603h
- BX:CX = starting linear address
- SI:DI = size of region in bytes
- Return: CF clear if successful
- CF set on error
- none of the memory is relocked
- AX = error code (DPMI 1.0+) (8002h,8013h,8025h) (see #03143)
- Notes: pages at beginning and end will be relocked if the region overlaps them
- pageability of real mode pages is binary, not a count
- SeeAlso: AX=0602h
- --------E-310604-----------------------------
- INT 31 P - DPMI 0.9+ - GET PAGE SIZE
- AX = 0604h
- Return: CF clear if successful
- BX:CX = page size in bytes
- CF set on error
- AX = error code (DPMI 1.0+) (see also #03143)
- 8001h unsupported, 16-bit host
- BUG: the Borland C++ 3.1 DPMILOAD returns with CF clear but BX and CX
- unchanged
- --------E-310700-----------------------------
- INT 31 Pu - DPMI 0.9+ - MARK PAGES AS PAGING CANDIDATES
- AX = 0700h
- BX:CX = starting linear page number
- SI:DI = number of pages to mark as paging candidates
- Return: ???
- Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
- specification, this function is called by MS Windows TASKMAN,
- PROGMAN, and KERNEL
- SeeAlso: AX=0701h,AX=0702h
- --------E-310701-----------------------------
- INT 31 Pu - DPMI 0.9+ - DISCARD PAGES
- AX = 0701h
- BX:CX = starting linear page number
- SI:DI = number of pages to discard
- Return: ???
- Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
- specification, this function is called by MS Windows TASKMAN,
- PROGMAN, and KERNEL
- SeeAlso: AX=0700h,AX=0703h
- --------E-310702-----------------------------
- INT 31 P - DPMI 0.9+ - MARK PAGE AS DEMAND PAGING CANDIDATE
- AX = 0702h
- BX:CX = starting linear address
- SI:DI = number of bytes to mark as paging candidates
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8025h) (see #03143)
- Notes: this function is advisory, and does not force immediate paging
- partial pages will not be discarded
- SeeAlso: AX=0700h,AX=0703h
- --------E-310703-----------------------------
- INT 31 P - DPMI 0.9+ - DISCARD PAGE CONTENTS
- AX = 0703h
- BX:CX = starting linear address
- SI:DI = number of bytes to mark as discarded
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8025h) (see #03143)
- Notes: this function is advisory, and may be ignored by DPMI implementations
- partial pages will not be discarded
- SeeAlso: AX=0701h,AX=0702h
- --------E-310800-----------------------------
- INT 31 P - DPMI 0.9+ - PHYSICAL ADDRESS MAPPING
- AX = 0800h
- BX:CX = physical address (should be above 1 MB)
- SI:DI = size in bytes
- Return: CF clear if successful
- BX:CX = linear address which maps the requested physical memory
- CF set on error
- AX = error code (DPMI 1.0+) (8003h,8021h) (see #03143)
- Notes: implementations may refuse this call because it can circumvent protects
- the caller must build an appropriate selector for the memory
- do not use for memory mapped in the first megabyte
- SeeAlso: AX=0002h,AX=0508h,AX=0509h,AX=0801h,INT 21/AX=250Ah,INT 21/AX=EB05h
- --------E-310801-----------------------------
- INT 31 P - DPMI 1.0+ - FREE PHYSICAL ADDRESS MAPPING
- AX = 0801h
- BX:CX = linear address returned by AX=0800h
- Return: CF clear if successful
- CF set on error
- AX = error code (8025h) (see #03143)
- Note: should be called at end of access to device mapped with AX=0800h
- SeeAlso: AX=0508h,AX=0509h,AX=0800h,INT 21/AX=EB03h
- --------E-310900-----------------------------
- INT 31 P - DPMI 0.9+ - GET AND DISABLE VIRTUAL INTERRUPT STATE
- AX = 0900h
- Return: CF clear
- virtual interrupts disabled
- AL = previous interrupt state (00h disabled, 01h enabled)
- AH preserved
- Notes: the previous state may be restored simply by executing another INT 31
- a CLI instruction may be used if the previous state is unimportant,
- but should be assumed to be very slow due to trapping by the host
- SeeAlso: AX=0901h,AX=0902h
- --------E-310901-----------------------------
- INT 31 P - DPMI 0.9+ - GET AND ENABLE VIRTUAL INTERRUPT STATE
- AX = 0901h
- Return: CF clear
- virtual interrupts enabled
- AL = previous interrupt state (00h disabled, 01h enabled)
- AH preserved
- Notes: the previous state may be restored simply by executing another INT 31
- a STI instruction may be used if the previous state is unimportant,
- but should be assumed to be very slow due to trapping by the host
- SeeAlso: AX=0900h,AX=0902h
- --------E-310902-----------------------------
- INT 31 P - DPMI 0.9+ - GET VIRTUAL INTERRUPT STATE
- AX = 0902h
- Return: CF clear
- AL = current interrupt state (00h disabled, 01h enabled)
- Note: should be used rather than PUSHF because that instruction yields the
- physical interrupt state rather than the per-client virtualized
- interrupt flag
- SeeAlso: AX=0900h,AX=0901h
- --------E-310A00-----------------------------
- INT 31 P - DPMI 0.9+ - GET VENDOR SPECIFIC API ENTRY POINT
- AX = 0A00h
- DS:(E)SI -> case-sensitive ASCIZ vendor name or identifier
- Return: CF clear if successful
- ES:(E)DI -> FAR extended API entry point
- DS, FS, GS, EAX, EBX, ECX, EDX, ESI, EBP destroyed
- CF set on error
- AX = error code (DPMI 1.0+) (8001h) (see #03143)
- Notes: extended API parameters are vendor-specific
- DPMI 1.0+ supports this function solely for backward compatibility; use
- INT 2F/AX=168Ah instead
- this function is not supported by MS Windows 3.10, BC++ 3.1 DPMILOAD,
- or QDPMI v1.0x; use INT 2F/AX=168Ah instead. It is supported by
- 386MAX v7.01.
- SeeAlso: INT 2F/AX=168Ah
- --------E-310B00-----------------------------
- INT 31 P - DPMI 0.9+ - SET DEBUG WATCHPOINT
- AX = 0B00h
- BX:CX = linear address
- DL = size (1,2,4 bytes)
- DH = type (00h execute, 01h write, 02h read/write)
- Return: CF clear if successful
- BX = watchpoint handle
- CF set on error
- AX = error code (DPMI 1.0+) (8016h,8021h,8025h) (see #03143)
- SeeAlso: AX=0212h,AX=0601h
- --------E-310B01-----------------------------
- INT 31 P - DPMI 0.9+ - CLEAR DEBUG WATCHPOINT
- AX = 0B01h
- BX = watchpoint handle
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8023h) (see #03143)
- Note: the watchpoint handle is freed
- SeeAlso: AX=0B00h
- --------E-310B02-----------------------------
- INT 31 P - DPMI 0.9+ - GET STATE OF DEBUG WATCHPOINT
- AX = 0B02h
- BX = watchpoint handle
- Return: CF clear if successful
- AX = status flags
- bit 0: watch point has been executed since AX=0B00h or AX=0B03h
- CF set on error
- AX = error code (DPMI 1.0+) (8023h) (see #03143)
- SeeAlso: AX=0B00h,AX=0B03h
- --------E-310B03-----------------------------
- INT 31 P - DPMI 0.9+ - RESET DEBUG WATCHPOINT
- AX = 0B03h
- BX = watchpoint handle
- Return: CF clear if successful
- CF set on error
- AX = error code (DPMI 1.0+) (8023h) (see #03143)
- SeeAlso: AX=0B02h
- --------E-310C00-----------------------------
- INT 31 P - DPMI 1.0+ - INSTALL RESIDENT HANDLER INIT CALLBACK
- AX = 0C00h
- ES:(E)DI -> resident service provider structure (see #03158)
- Return: CF clear if successful
- CF set on error
- AX = error code (8015h,8021h,8025h) (see #03143 at AX=0000h)
- Note: calling this function declares an intent to provide resident
- protected mode services after terminating with AX=0C01h
- SeeAlso: AX=0303h,AX=0C01h
- Format of DPMI resident service provider structure:
- Offset Size Description (Table 03158)
- 00h QWORD descriptor for 16-bit data segment
- 08h QWORD descriptor for 16-bit code segment (zeros if not supported)
- 10h WORD offset of 16-bit callback procedure
- 12h 2 BYTEs reserved
- 14h QWORD descriptor for 32-bit data segment
- 1Ch QWORD descriptor for 32-bit code segment (zeros if not supported)
- 24h DWORD offset of 32-bit callback procedure
- --------E-310C01-----------------------------
- INT 31 P - DPMI 1.0+ - TERMINATE AND STAY RESIDENT
- AX = 0C01h
- BL = return code
- DX = number of paragraphs of DOS memory to reserve (0 or >= 6)
- Return: never
- Notes: should only be used if the program will only provide services to
- other DPMI programs
- any protected mode memory remains allocated to the program unless
- explicitly freed before this call
- must first call AX=0C00h or program will simply be terminated
- SeeAlso: AX=0C00h,INT 21/AH=31h
- --------E-310D00-----------------------------
- INT 31 P - DPMI 1.0+ - ALLOCATE SHARED MEMORY
- AX = 0D00h
- ES:(E)DI -> shared memory allocation request structure (see #03159)
- Return: CF clear if successful
- request structure updated
- CF set on error
- AX = error code (8012h,8013h,8014h,8016h,8021h) (see #03143)
- Note: first 16 bytes of memory block will be initialized to zeros on the
- first allocation
- SeeAlso: AX=0501h,AX=0D01h,AX=0D02h
- Format of DPMI shared memory allocation request structure:
- Offset Size Description (Table 03159)
- 00h DWORD requested length of shared memory block in bytes
- 04h DWORD (ret) allocated length of block
- 08h DWORD (ret) shared memory handle
- 0Ch DWORD (ret) linear address of memory block
- 10h PWORD selector:offset32 of ASCIZ name for memory block
- (name max 128 bytes)
- 16h 2 BYTEs reserved
- 18h 4 BYTEs reserved (00h)
- --------E-310D01-----------------------------
- INT 31 P - DPMI 1.0+ - FREE SHARED MEMORY
- AX = 0D01h
- SI:DI = shared memory block handle
- Return: CF clear if successful
- CF set on error
- AX = error code (8023h) (see #03143)
- Notes: handle becomes invalid after this call
- DPMI maintains separate global and virtual machine use counts for each
- shared memory block; when the global use counts reaches zero, the
- block is finally destroyed
- SeeAlso: AX=0502h,AX=0D00h
- --------E-310D02-----------------------------
- INT 31 P - DPMI 1.0+ - SERIALIZE SHARED MEMORY
- AX = 0D02h
- SI:DI = shared memory block handle
- DX = flags
- bit 0: return immediately rather than suspending if serialization
- unavailable
- bit 1: shared rather than exclusive serialization
- bits 2-15 reserved (0)
- Return: CF clear if successful
- CF set on error
- AX = error code (8004h,8005h,8017h-8019h,8023h) (see #03143)
- Notes: an exclusive serialization blocks any other serialization attempts for
- the same block by another virtual machine; a shared serialization
- blocks attempts at exclusive serialization by another virtual machine
- hosts are not required to detect deadlock
- a client's interrupt handler can cancel a serialization call which
- caused it to block by calling AX=0D03h
- SeeAlso: AX=0D00h,AX=0D03h
- --------E-310D03-----------------------------
- INT 31 P - DPMI 1.0+ - FREE SERIALIZATION ON SHARED MEMORY
- AX = 0D03h
- SI:DI = shared memory block handle
- DX = flags
- bit 0: release shared serialization rather than exclusive serialztn
- bit 1: free pending serialization
- bits 2-15 reserved (0)
- Return: CF clear if successful
- CF set on error
- AX = error code (8002h,8023h) (see #03143 at AX=0000h)
- SeeAlso: AX=0D00h,AX=0D02h
- --------E-310E00-----------------------------
- INT 31 P - DPMI 1.0+ - GET COPROCESSOR STATUS
- AX = 0E00h
- Return: CF clear
- AX = coprocessor status (see #03160)
- Note: supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
- SeeAlso: AX=0E01h
- Bitfields for DPMI coprocessor status:
- Bit(s) Description (Table 03160)
- 0 numeric coprocessor enabled for current client
- 1 client is emulating coprocessor
- 2 numeric coprocessor is present
- 3 host is emulating coprocessor instructions
- 4-7 coprocessor type
- 0000 none
- 0010 80287
- 0011 80387
- 0100 80486 with numeric coprocessor
- other reserved
- 8-15 not used
- --------E-310E01-----------------------------
- INT 31 P - DPMI 1.0+ - SET EMULATION
- AX = 0E01h
- BX = coprocessor flag bits (see #03161)
- Return: CF clear if successful
- CF set on error
- AX = error code (8026h) (see #03143 at AX=0000h)
- Note: supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
- SeeAlso: AX=0E00h
- Bitfields for DPMI coprocessor flags:
- Bit(s) Description (Table 03161)
- 0 enable numeric coprocessor for current client
- 1 client will emulate coprocessor
- 2-15 not used
- --------E-3157-------------------------------
- INT 31 - Netroom3 DPMI.EXE v3.00 - ???
- AH = 57h
- AL = subfunction (at least 02h,03h,04h,05h,07h,08h,09h,0Ah)
- ???
- Return: ???
- SeeAlso: INT 2C/AX=0000h"Cloaking"
- --------E-315702-----------------------------
- INT 31 - Netroom3 DPMI.EXE v3.00 - SWITCH TO PROTECTED MODE
- AX = 5702h
- DX = PSP segment of caller
- STACK: WORD ???
- WORD flags (bit 0 set if 32-bit program)
- Return: as for DPMI mode-switch entry point (see #02718 at INT 2F/AX=1687h)
- Note: this function is called by the real-mode DPMI mode-switch entry point
- SeeAlso: INT 2F/AX=1687h
- --------E-31EE00------------------------
- INT 31 - DOS32 v3.0+ - GET DOS32 VERSION AND SELECTOR VALUES
- AX = EE00h
- Return: AL = minor version (BCD)
- AH = major version (BCD)
- DL = system type (1=raw DOS, 2=XMS, 4=VCPI, 8=DPMI)
- BX = selector of 4GB data segment with zero base address
- Program: DOS32 is a 32 bit DOS extender by Adam Seychell.
- SeeAlso: AX=EE02h
- --------E-31EE02------------------------
- INT 31 - DOS32 v3.0+ - GET DOS32 ADDRESS INFORMATION
- AX = EE02h
- Return: AX = real-mode segment of temporary 8K buffer (v3.1+)
- EBX = 32bit linear address of the program segment
- EDX = Total size in bytes of the programs .EXE file after linking.
- ESI = offset address of PSP
- EDI = offset address of program environment
- ECX = offset address of the program's .EXE ASCIZ file name and path
- SeeAlso: AX=EE00h,AX=EE20h
- --------E-31EE10------------------------
- INT 31 - DOS32 v3.2+ - SET UP A DOS32 LOADABLE LIBRARY
- AX = EE10h
- EDX -> library ASCIZ path\filename
- EBX = number of bytes to seek from beginning of file
- Return: CF clear if successful
- EAX = size of memory block required to store library
- EBX = size of library file
- CF set on error
- AL = error code.
- 01h error opening or reading file
- 02h bad DOS32 library file
- SeeAlso: AX=EE00h,AX=EE11h
- --------E-31EE11------------------------
- INT 31 - DOS32 v3.2+ - LOAD LIBRARY FILE
- AX = EE11h
- EDX -> near pointer of memory block to store library
- Return: CF clear if successful
- EDX = near pointer to the dynamic library public
- CF set on error
- Note: must first successfuly call function AX=EE10h before calling this
- function
- SeeAlso: AX=EE00h,AX=EE10h
- --------E-31EE20------------------------
- INT 31 - DOS32 v3.0+ - GET REAL MODE CALL BACK ADDRESS WITH RETF STACK FRAME
- AX = EE20h
- ESI = offset of the real mode call back function
- Return: CF clear if successful
- CX:DX = real mode address to call up to the protected mode
- procedure
- CF set on error
- SeeAlso: AX=EE00h,AX=EE02h,AX=EE21h
- --------E-31EE21------------------------
- INT 31 - DOS32 v3.0+ - GET REAL MODE CALL BACK ADDRESS WITH IRET STACK FRAME
- AX = EE21h
- ESI = offset of the real mode call back function
- Return: CF clear if successful
- CX:DX = real mode address to call up to the protected mode
- procedure
- CF set on error
- SeeAlso: AX=EE20h
- --------E-31EE30------------------------
- INT 31 - DOS32 v3.0+ - TERMINATE AND STAY RESIDENT
- AX = EE30h
- SeeAlso: AX=EE21h,AX=EE40h,INT 21/AH=31h
- --------E-31EE40------------------------
- INT 31 - DOS32 v3.0+ - UNDO PREVIOUS MEMORY ALLOCATION or DMA BUFFER
- AX = EE40h
- Return: CF clear if successful
- CF set on error
- SeeAlso: AX=EE41h,AX=EE42h
- --------E-31EE41------------------------
- INT 31 - DOS32 v3.0+ - ALLOCATE 16KB DMA BLOCK
- AX = EE41h
- Return: CF clear if successful
- EBX -> 16KB DMA block (physical address)
- EDX -> 16KB DMA block (offset address)
- CF set on error
- SeeAlso: AX=EE40h,AX=EE42h
- --------E-31EE42------------------------
- INT 31 - DOS32 v3.0+ - ALLOCATE MEMORY BLOCK
- AX = EE42h
- EDX = size in bytes
- Return: CF clear if successful
- EAX = size in bytes
- EDX -> memory block
- CF set on error
- Note: size is rounded off to the next 4KB boundary
- SeeAlso: AX=EE40h,AX=EE41h
- --------E-31FF00-----------------------------
- INT 31 P - CauseWay - "Info" - GET SYSTEM SELECTORS/FLAGS
- AX = FF00h
- Return: AX = selector for flag address space (base 00000000h, limit 4GB)
- BX = selector for current PSP segment (limit 0100h)
- (E)CX = size of DOS transfer buffer (max 64K)
- DX = real-mode segment address of DOS transfer buffer
- ES:(E)SI = protected-mode address of DOS transfer buffer
- EDI = system flags (see #03162)
- Program: CauseWay is a 386 DOS extender by Michael Devore and John Wildsmith
- for use with Watcom C++ or assembly language programs
- Notes: the entire transfer buffer can be addressed with a 16-bit offset in
- protected mode
- CauseWay always maps selector 0040h to the BIOS data segment at
- real-mode segment 0040h; when not running under a DPMI host, CauseWay
- also provides selectors A000h, B000h, and B800h mapped to video
- memory
- SeeAlso: AX=FF25h
- Bitfields for CauseWay system flags:
- Bit(s) Description (Table 03162)
- 0 32-bit code
- 1 virtual memory manage enabled
- 3-2 mode: 00 raw extended memory, 01 VCPI, 10 DPMI
- 4 DPMI available
- 5 VCPI available
- 6 no memory managers
- 7 application descriptor table type: 0 = GDT, 1 = LDT
- 14-8 reserved
- 15 debugging engine present
- --------E-31FF01-----------------------------
- INT 31 P - CauseWay - "IntXX" - SIMULATE REAL-MODE INTERRUPT
- AX = FF01h
- BL = interrupt number
- ES:(E)DI -> real-mode register list (see #03148 at AX=0300h)
- Return: register list updated
- Note: CauseWay fills in the values for SS, SP, and FLAGS itself, and ignores
- the values specified for CS and IP
- SeeAlso: AX=0300h,AX=FF02h
- --------E-31FF02-----------------------------
- INT 31 P - CauseWay - "FarCallReal" - SIMULATE REAL-MODE FAR CALL
- AX = FF02h
- ES:(E)DI -> real-mode register list (see #03148 at AX=0300h)
- Return: register list updated
- SeeAlso: AX=0301h,AX=FF01h
- --------E-31FF03-----------------------------
- INT 31 P - CauseWay - "GetSel" - ALLOCATE NEW SELECTOR
- AX = FF03h
- Return: CF clear if successful
- BX = new selector
- CF set on error
- Note: the new selector is initialized with a base address of 000000h, a limit
- of 0000h, and attributes read/write expand-up data
- SeeAlso: AX=FF04h,AX=FF05h,AX=FF06h
- --------E-31FF04-----------------------------
- INT 31 P - CauseWay - "RelSel" - RELEASE A SELECTOR
- AX = FF04h
- BX = selector
- Return: CF clear if successful
- CF set on error
- SeeAlso: AX=FF03h,AX=FF06h
- --------E-31FF05-----------------------------
- INT 31 P - CauseWay - "CodeSel" - CONVERT SELECTOR TO EXECUTABLE CODE SELECTOR
- AX = FF05h
- BX = selector
- CL = default operation size (00h = 16-bit, 01h = 32-bit)
- Return: CF clear if successful
- CF set on error
- SeeAlso: AX=FF03h
- --------E-31FF06-----------------------------
- INT 31 P - CauseWay - "AliasSel" - CREATE READ/WRITE DATA ALIAS SELECTOR
- AX = FF06h
- BX = original selector
- Return: CF clear if successful
- AX = new data selector aliasing original selector
- CF set on error
- SeeAlso: AX=FF03h,AX=FF04h
- --------E-31FF07-----------------------------
- INT 31 P - CauseWay - "GetSelDet" - GET SELECTOR BASE AND LIMIT
- AX = FF07h
- BX = selector
- Return: CF clear if successful
- CX:DX = base address
- SI:DI = limit (bytes)
- CF set on error
- SeeAlso: AX=FF08h,AX=FF09h
- --------E-31FF08-----------------------------
- INT 31 P - CauseWay - "GetSelDet32" - GET SELECTOR BASE AND LIMIT (32-bit)
- AX = FF08h
- Return: CF clear if successful
- EDX = base address
- ECX = limit (bytes)
- CF set on error
- SeeAlso: AX=FF07h,AX=FF0Ah
- --------E-31FF09-----------------------------
- INT 31 P - CauseWay - "SetSelDet" - SET SELECTOR BASE AND LIMIT
- AX = FF09h
- BX = selector
- CX:DX = new base address
- SI:DI = new byte-granular limit
- Return: CF clear if successful
- CF set on error
- SeeAlso: AX=FF07h,AX=FF0Ah
- --------E-31FF0A-----------------------------
- INT 31 P - CauseWay - "SetSelDet32" - SET SELECTOR BASE AND LIMIT (32-bit)
- AX = FF0Ah
- BX = selector
- EDX = new base address
- ECX = new byte-granular limit
- Return: CF clear if successful
- CF set on error
- SeeAlso: AX=FF08h,AX=FF09h
- --------E-31FF0B-----------------------------
- INT 31 P - CauseWay - "GetMem" - ALLOCATE BLOCK OF MEMORY
- AX = FF0Bh
- CX:DX = size in bytes (FFFFh:FFFFh to get size of largest available)
- Return: CF clear if successful
- BX = selector for accessing block if requested size not FFFFh:FFFFh
- CX:DX = size of largest available block if requested FFFFh:FFFFh
- CF set on error
- SeeAlso: AX=FF0Ch,AX=FF0Dh,AX=FF0Fh,AX=FF10h,AX=FF2Ch
- --------E-31FF0C-----------------------------
- INT 31 P - CauseWay - "GetMem32" - ALLOCATE BLOCK OF MEMORY (32-bit)
- AX = FF0Ch
- ECX = size in bytes (FFFFFFFFh to get size of largest available block)
- Return: CF clear if successful
- BX = selector for accessing block if requested size not FFFFh:FFFFh
- ECX = size of largest available block if requested FFFFh:FFFFh
- CF set on error
- SeeAlso: AX=FF0Bh,AX=FF0Eh,AX=FF0Fh,AX=FF11h
- --------E-31FF0D-----------------------------
- INT 31 P - CauseWay - "ResMem" - RESIZE MEMORY BLOCK
- AX = FF0Dh
- BX = selector for block to be resized
- CX:DX = new size in bytes
- Return: CF clear if successful
- CF set on error
- Note: the memory block may have to be copied to another location in order
- to satisfy the requested new size, in which case the base address
- of the selector is updated
- SeeAlso: AX=FF0Bh,AX=FF0Eh,AX=FF12h
- --------E-31FF0E-----------------------------
- INT 31 P - CauseWay - "ResMem32" - RESIZE MEMORY BLOCK (32-bit)
- AX = FF0Eh
- BX = selector for block to be resized
- ECX = new size in bytes
- Return: CF clear if successful
- CF set on error
- Note: the memory block may have to be copied to another location in order
- to satisfy the requested new size, in which case the base address
- of the selector is updated
- SeeAlso: AX=FF0Ch,AX=FF0Dh,AX=FF13h
- --------E-31FF0F-----------------------------
- INT 31 P - CauseWay - "RelMem" - RELEASE PREVIOUSLY ALLOCATED MEMORY
- AX = FF0Fh
- BX = selector for block to be released
- Return: CF clear if successful
- CF set on error
- SeeAlso: AX=FF0Bh,AX=FF0Ch,AX=FF14h
- --------E-31FF10-----------------------------
- INT 31 P - CauseWay - "GetMemLinear" - ALLOCATE MEMORY WITHOUT SELECTOR
- AX = FF10h
- CX:DX = size of block in bytes
- Return: CF clear if successful
- SI:DI = linear address of allocated block
- CF set on error
- Note: this function may return addresses above 16M
- SeeAlso: AX=FF0Bh,AX=FF11h,AX=FF12h,AX=FF14h
- --------E-31FF11-----------------------------
- INT 31 P - CauseWay - "GetMemLinear32" - ALLOCATE MEMORY WITHOUT SELECTOR
- AX = FF11h
- ECX = size of block in bytes
- Return: CF clear if successful
- ESI = linear address of allocated block
- CF set on error
- Note: this function may return addresses above 16M
- SeeAlso: AX=FF0Ch,AX=FF10h,AX=FF13h,AX=FF14h
- --------E-31FF12-----------------------------
- INT 31 P - CauseWay - "ResMemLinear" - RESIZE LINEAR MEMORY BLOCK
- AX = FF12h
- CX:DX = new size in bytes
- SI:DI = linear address of block to be resized
- Return: CF clear if successful
- SI:DI = new linear address of block
- CF set on error
- SeeAlso: AX=FF0Dh,AX=FF10h,AX=FF13h
- --------E-31FF13-----------------------------
- INT 31 P - CauseWay - "ResMemLinear32" - RESIZE LINEAR MEMORY BLOCK (32-bit)
- AX = FF13h
- ECX = new size in bytes
- ESI = linear address of block to be resized
- Return: CF clear if successful
- ESI = new linear address of block
- CF set on error
- SeeAlso: AX=FF0Eh,AX=FF11h,AX=FF12h
- --------E-31FF14-----------------------------
- INT 31 P - CauseWay - "RelMemLinear" - RELEASE LINEAR MEMORY BLOCK
- AX = FF14h
- SI:DI = linear address of block to be released
- Return: CF clear if successful
- CF set on error
- SeeAlso: AX=FF0Fh,AX=FF10h,AX=FF15h
- --------E-31FF15-----------------------------
- INT 31 P - CauseWay - "RelMemLinear32" - RELEASE LINEAR MEMORY BLOCK (32-bit)
- AX = FF15h
- ESI = linear address of block to be released
- Return: CF clear if successful
- CF set on error
- SeeAlso: AX=FF0Fh,AX=FF11h,AX=FF15h
- --------E-31FF16-----------------------------
- INT 31 P - CauseWay - "GetMemNear" - ALLOCATE APPLICATION-RELATIVE MEMORY
- AX = FF16h
- EBX = size in bytes of block to allocate
- Return: CF clear if successful
- ESI = application-relative linear address of allocated block
- CF set on error
- SeeAlso: AX=FF17h,AX=FF18h,AX=FF19h
- --------E-31FF17-----------------------------
- INT 31 P - CauseWay - "ResMemNear" - RESIZE APPLICATION-RELATIVE MEMORY BLOCK
- AX = FF17h
- EBX = size in bytes of block to allocate
- ESI = application-relative linear address of block
- Return: CF clear if successful
- ESI = new application-relative linear address of block
- CF set on error
- SeeAlso: AX=FF16h,AX=FF18h,AX=FF19h
- --------E-31FF18-----------------------------
- INT 31 P - CauseWay - "RelMemNear" - RELEASE APPLICATION-RELATIVE MEMORY BLOCK
- AX = FF18h
- ESI = application-relative linear address of block
- Return: CF clear if successful
- CF set on error
- SeeAlso: AX=FF16h,AX=FF17h,AX=FF19h
- --------E-31FF19-----------------------------
- INT 31 P - CauseWay - "Linear2Near" - CONVERT LINEAR TO APP-RELATIVE ADDRESS
- AX = FF19h
- ESI = linear address
- Return: ESI = application-relative linear address
- SeeAlso: AX=FF1Ah
- --------E-31FF1A-----------------------------
- INT 31 P - CauseWay - "Near2Linear" - CONVERT APP-RELATIVE TO LINEAR ADDRESS
- AX = FF1Ah
- ESI = application-relative linear address
- Return: ESI = linear address
- SeeAlso: AX=FF19h
- --------E-31FF1B-----------------------------
- INT 31 P - CauseWay - "LockMem" - LOCK REGION OF MEMORY
- AX = FF1Bh
- BX:CX = starting linear address
- SI:DI = size of region in bytes
- Return: CF clear if successful
- CF set on error
- Desc: prevent memory from being swapped out by the virtual memory manager
- Note: locks are applied on 4K page boundaries, so memory above and below
- the specified region may be locked as well
- SeeAlso: AX=FF1Ch,AX=FF1Dh
- --------E-31FF1C-----------------------------
- INT 31 P - CauseWay - "LockMem32" - LOCK REGION OF MEMORY (32-bit)
- AX = FF1Ch
- ESI = starting linear address
- ECX = size of region in bytes
- Return: CF clear if successful
- CF set on error
- Desc: prevent memory from being swapped out by the virtual memory manager
- Note: locks are applied on 4K page boundaries, so memory above and below
- the specified region may be locked as well
- SeeAlso: AX=FF1Bh,AX=FF1Eh,AX=FF1Fh
- --------E-31FF1D-----------------------------
- INT 31 P - CauseWay - "UnLockMem" - UNLOCK REGION OF MEMORY
- AX = FF1Dh
- BX:CX = starting linear address
- SI:DI = size of region in bytes
- Return: CF clear if successful
- CF set on error
- Desc: allow memory to be swapped out by the virtual memory manager
- Note: locks are applied on 4K page boundaries, so memory above and below
- the specified region may be unlocked as well
- SeeAlso: AX=FF1Bh,AX=FF1Eh
- --------E-31FF1E-----------------------------
- INT 31 P - CauseWay - "UnLockMem32" - UNLOCK REGION OF MEMORY (32-bit)
- AX = FF1Eh
- ESI = starting linear address
- ECX = size of region in bytes
- Return: CF clear if successful
- CF set on error
- Desc: allow memory to be swapped out by the virtual memory manager
- Note: locks are applied on 4K page boundaries, so memory above and below
- the specified region may be unlocked as well
- SeeAlso: AX=FF1Ch,AX=FF1Dh,AX=FF20h
- --------E-31FF1F-----------------------------
- INT 31 P - CauseWay - "LockMemNear" - LOCK APPLICATION-RELATIVE MEMORY REGION
- AX = FF1Fh
- ESI = starting application-relative linear address
- EBX = size of region in bytes
- Return: CF clear if successful
- CF set on error
- Desc: prevent memory from being swapped out by the virtual memory manager
- Note: locks are applied on 4K page boundaries, so memory above and below
- the specified region may be locked as well
- SeeAlso: AX=FF1Ch,AX=FF20h
- --------E-31FF20-----------------------------
- INT 31 P - CauseWay - "UnLockMemNear" - UNLOCK APP-RELATIVE MEMORY REGION
- AX = FF20h
- ESI = starting application-relative linear address
- ECX = size of region in bytes
- Return: CF clear if successful
- CF set on error
- Desc: allow memory to be swapped out by the virtual memory manager
- Note: locks are applied on 4K page boundaries, so memory above and below
- the specified region may be unlocked as well
- SeeAlso: AX=FF1Eh,AX=FF1Fh
- --------E-31FF21-----------------------------
- INT 31 P - CauseWay - "GetMemDOS" - ALLOCATE CONVENTIONAL MEMORY
- AX = FF21h
- BX = number of paragraphs to allocate
- Return: CF clear if successful
- AX = real-mode segment of allocated block
- DX = initial selector for block
- CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- BX = size of largest available block
- Note: if the requested size is greater than 64K, contiguous selectors will
- be allocated, one for each 64K; for 32-bit applications, the first
- selector's limit will be set to the size of the entire block, while
- that selector will have a limit of 64K for 16-bit applications. All
- selectors after the first one have a limit of 64K except the final
- one
- SeeAlso: AX=FF22h,AX=FF23h,INT 21/AH=48h
- --------E-31FF22-----------------------------
- INT 31 P - CauseWay - "ResMemDOS" - RESIZE CONVENTIONAL MEMORY BLOCK
- AX = FF22h
- BX = new size in paragraphs
- DX = initial selector for block
- Return: CF clear if successful
- CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- BX = maximum number of paragraphs available
- Note: this function will also fail if the block is expanded past a 64K
- boundary and the next selector is already in use
- SeeAlso: AX=FF21h,AX=FF23h,INT 21/AH=49h
- --------E-31FF23-----------------------------
- INT 31 P - CauseWay - "RelMemDOS" - RELEASE CONVENTIONAL MEMORY BLOCK
- AX = FF23h
- DX = initial selector for block
- Return: CF clear if successful
- CF set on error
- AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
- Note: all descriptors allocated for the block are freed
- SeeAlso: AX=FF21h,AX=FF22h,INT 21/AH=4Ah
- --------E-31FF24-----------------------------
- INT 31 P - CauseWay - "ExecOverlay" - LOAD AND OPTIONALLY EXECUTE APP CODE
- AX = FF24h
- EBX = flags
- bit 0: don't execute (overlay only)
- bit 1: don't preserve relocation information
- ES:EDX -> filename (see also #03163)
- FS:ESI -> commandline (ESI = 00000000h if no commandline)
- GS:EDI -> name (CW's /o option)
- Return: CF clear if successful
- ---EBX bit 0 set---
- CX:EDX = program entry point (CS:EIP)
- SI = segment of PSP
- ---EBX bit 1 set---
- BX:EAX = initial SS:ESP
- EDI high word = base segment
- EDI low word = number of segments
- EBP = start of segment definitions
- CF set on error
- AX = error code
- 0001h DOS file access error
- 0002h not a CuaseWay 3P file
- 0003h not enough memory
- SeeAlso: AX=FF2Ah,INT 21/AH=4Bh
- Format of CauseWay executable:
- Offset Size Description (Table 03163)
- 00h 2 BYTEs signature "3P"
- 02h DWORD size of header data in bytes
- 06h DWORD size of EXE image data in bytes
- 0Ah DWORD number of bytes of program memory required
- 0Eh WORD number of segment definitions (see #03165)
- 10h DWORD number of relocation table entries
- 14h DWORD offset of program entry point
- 18h WORD segment list entry number for entry point's CS
- 1Ah DWORD initial ESP
- 1Eh WORD segment list entry number for initial SS
- 20h DWORD control flags (see #03164)
- 24h DWORD automatic stack size in bytes if ESP entry = 00000000h
- 28h BYTE length of name (name follows program image)
- 29h 23 BYTEs reserved
- SeeAlso: #01594,#01609 at INT 21/AH=4Bh
- Bitfields for CauseWay executable control flags:
- Bit(s) Description (Table 03164)
- 0 16-bit interrupt stack frame
- 7 descriptor table type (0 = GDT, 1 = LDT)
- 14 16-bit default data size
- 31 compressed EXE image
- Note: bits 0 and 14 should always be equal
- SeeAlso: #03163
- Format of CauseWay segment definition [array]:
- Offset Size Description (Table 03165)
- 00h DWORD start offset within program image
- 04h DWORD length and type
- bits 0-19: length
- bit 20: granularity (if set, length is in 4K pages)
- bits 21-24: type
- 0000 code
- 0001 read/write data
- 0010 stack
- 0011 read-only data
- bit 25: force segment descriptor's D bit to 0
- bit 26: force segmetn descriptor's D bit to 1
- SeeAlso: #03163
- --------E-31FF25-----------------------------
- INT 31 P - CauseWay - "GetDOSTrans" - GET DOS TRANSFER BUFFER
- AX = FF25h
- Return: BX = real-mode segment of transfer buffer
- ECX = transfer buffer size
- DX = protected-mode selector for transfer buffer
- Note: the default buffer size of 8K is sufficient for most applications,
- but an application performing large amounts of file I/O may benefit
- from allocating its own, larger buffer
- SeeAlso: AX=FF00h,AX=FF26h
- --------E-31FF26-----------------------------
- INT 31 P - CauseWay - "SetDOSTrans" - SET DOS TRANSFER BUFFER
- AX = FF26h
- BX = real-mode segment of new transfer buffer
- ECX = new transfer buffer size
- DX = protected-mode selector for new transfer buffer
- Return: nothing
- Note: the specific buffer must be located in conventional memory; only the
- first 64K will be used
- SeeAlso: AX=FF25h
- --------E-31FF27-----------------------------
- INT 31 P - CauseWay v1.3 - "GetMCBSize" - GET CURRENT MCB ALLOCATION BLOCK SIZE
- AX = FF27h
- Return: ECX = current threshold
- Desc: determine the memory allocation size below which CauseWay will use
- internal MCB chains rather than allocating full 4K pages via DPMI
- SeeAlso: AX=FF00h,AX=FF28h
- --------E-31FF28-----------------------------
- INT 31 P - CauseWay v1.3 - "SetMCBSize" - SET MCB MEMORY ALLOCATION BLOCK SIZE
- AX = FF28h
- ECX = new threshold (0000000h to disable MCB memory allocation system)
- Return: CF clear if successful
- threshold unchanged (default 16K)
- CF set on error (threshold > 64K)
- Desc: specify the memory allocation size below which CauseWay will use
- internal MCB chains rather than allocating full 4K pages via DPMI
- Note: the specified threshold will be rounded up to the next higher multiple
- of 4K
- SeeAlso: AX=FF00h,AX=FF27h
- --------E-31FF29-----------------------------
- INT 31 P - CauseWay v1.3 - "GetSels" - ALLOCATE MULTIPLE SELECTORS
- AX = FF29h
- CX = number of selectors to allocate
- Return: BX = base selector
- Desc: allocate multiple contiguous selectors, initializing each to have a
- base address and limit of zero
- SeeAlso: AX=FF00h,AX=FF04h
- --------E-31FF2A-----------------------------
- INT 31 P - CauseWay v1.3 - "cwLoad" - LOAD ANOTHER CAUSEWAY PROGRAM AS OVERLAY
- AX = FF2Ah
- DS:EDX -> filename
- Return: CF clear if successful
- CX:EDX = CS:EIP of entry point
- BX:EAX = initial SS:ESP for program
- SI = PSP for overlay program
- CF set on error
- AX = error code (01h file error, 02h not a 3P file, 03h no memory)
- Note: the returned PSP can be given to "RelMem" (AX=FF0Fh) to release the
- overlay's memory and selectors; only selectors and memory allocated
- during loading will be freed by RelMem unless one switches PSPs with
- INT 21/AH=50h
- SeeAlso: AX=FF00h,AX=FF24h
- --------E-31FF2B-----------------------------
- INT 31 P - CauseWay v1.3 - "cwcInfo" - VALIDATE AND GET SIZE OF CWC FILE
- AX = FF2Bh
- BX = file handle for CWC-compressed file
- Return: CF clear if successful
- ECX = expanded file size
- CF set on error (not a CWC-compressed file)
- SeeAlso: AX=FF00h,AX=FFFBh
- --------E-31FF2C-----------------------------
- INT 31 P - CauseWay v1.3 - "GetMemSO" - ALLOCATE MEMORY AND RETURN SEL:OFFSET
- AX = FF2Ch
- CX:DX = block size in bytes
- Return: CF clear if successful
- SI:DI = selector:offset of allocated memory
- CF set on error
- Note: unlike "GetMem" (AX=FF0Bh), this function will reuse selectors until a
- segment is full, rather than allocating a new selector for each
- memory block
- SeeAlso: AX=FF00h,AX=FF2Dh,AX=FF2Eh
- --------E-31FF2D-----------------------------
- INT 31 P - CauseWay v1.3 - "ResMemSO" - RESIZE SELECTOR:OFFSET MEMORY BLOCK
- AX = FF2Dh
- SI:DI = selector:offset for memory block
- CX:DX = new size of block
- Return: CF clear if successful
- SI:DI = new selector:offset for memory block
- CF set on error
- SeeAlso: AX=FF00h,AX=FF2Ch,AX=FF2Eh
- --------E-31FF2E-----------------------------
- INT 31 P - CauseWay v1.3 - "RelMemSO" - RELEASE SELECTOR:OFFSET MEMORY BLOCK
- AX = FF2Eh
- SI:DI = selector:offset for memory block
- SeeAlso: AX=FF00h
- --------E-31FFFB-----------------------------
- INT 31 P - Causeway v1.3 - "cwcLoad" - LOAD/EXPAND CWC-COMPRESSED FILE
- AX = FFFBh
- BX = source file handle
- ES:EDI -> memory buffer into which to expand file
- Return: CF clear if successful
- ECX = expanded data length
- CF set on error
- EAX = error code (01h file error, 02h bad data, 03h not CWC file)
- Note: the provided file may consist of the concatenation of several CWC
- files; the one beginning at the current file position will be
- expanded
- SeeAlso: AX=FF2Bh
- --------v-32---------------------------------
- INT 32 - VIRUS - "Tiny" Viruses - ORIGINAL INT 21h VECTOR
- SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 31"VIRUS",INT 44"VIRUS"
- --------v-32---------------------------------
- INT 32 - VIRUS - "Plovdiv 1.3"/"Damage 1.3" - ORIGINAL INT 21h VECTOR
- SeeAlso: INT 31"VIRUS",INT 9E"VIRUS"
- --------y-326E-------------------------------
- INT 32 - NOISE.SYS 0.53 - API
- AH = 6Eh (function ID)
- AL = subfunction (see INT 32/AX=6E00h)
- Return: CF set on error
- AL = error code (see #03166)
- CF clear if successful
- Notes: INT 32 is only a proposed interface for NOISE.SYS. Use the IOCTL READ
- from the RANDOM device to determine the interrupt and function ID
- used by the driver, since future versions may use the Alternate
- Multiplex Interrupt (AMIS) at INT 2Dh.
- the beta v0.51 had a substantially different API on INT 32/AH=6Eh
- (Table 03166)
- Values for NOISE.SYS error codes:
- 00h subfunction not supported
- FBh random pool is empty
- FCh quality of sample is too low
- FDh too many processes using the API or driver
- FEh subfunction is disabled in the current build
- FFh successful
- --------y-326E00-----------------------------
- INT 32 - NOISE.SYS v0.53+ - INSTALLATION CHECK
- AX = 6E00h
- Return: AL = installation status
- 00h not installed
- FFh installed
- CX = version (ie, 0123h = Version 1.2.3)
- DX:DI -> signature string
- --------y-326E01-----------------------------
- INT 32 - NOISE.SYS v0.53+ - GET ENTRY POINT
- AX = 6E01h
- Return: AL = FFh
- DX:DI -> far call hook
- ----------326E04-----------------------------
- INT 32 - NOISE.SYS v0.55+ - GET INTERRUPT HOOK LIST
- AX = 6E04h
- Return: AL = status
- 00h = unimplemented
- 04h = DX:BX -> interrupt hook list
- FEh = subfunction disabled
- Note: the hook list array ends with API interrupt (usually 32h, although
- it will differ if the API is installed at another interrupt)
- ----------326E06-----------------------------
- INT 32 - NOISE.SYS v0.55+ - GET DEVICE DRIVER HEADER
- AX = 6E06h
- Return: AL = number of device drivers in NOISE.SYS chain
- 02h = default (for RANDOM and URANDOM devices)
- AH = AMIS device driver flags (set to 00h for now)
- DX:BX -> first device in chain (see #01646)
- SeeAlso: INT 2D/AL=06h
- --------y-326E10-----------------------------
- INT 32 - NOISE.SYS v0.53+ - STATUS CHECK
- AX = 6E10h
- Return: CF set on error
- AL = error code (FDh) (see #03166)
- CF clear if successful
- AL = status
- FFh successful
- BH = number of processes using the API
- CX = number of random bytes waiting
- DX = maximum possible bytes waiting
- (if CX=DX, the pool is full)
- Note: this subfunction is a convenient way to check the driver if any
- fresh bytes are waiting in the output pool.
- SeeAlso: INT 32/AH=6Eh,AX=6E00h,AX=6E11h
- --------y-326E11-----------------------------
- INT 32 - NOISE.SYS v0.53+ - GET ENTROPY ESTIMATE
- AX = 6E11h
- Return: CF set on error
- AL = error code (00h,FDh,FEh) (see #03166)
- CF clear if successful
- EBX = estimated bit count (refer to note below)
- CL = FRACBITS (number of fractional bits)
- EDX = low 32-bits of total number of samples added
- Note: the estimated number of fresh random bits is equal to
- (EAX >> FRACBITS) + ((EAX & ((1 << FRACBITS)-1) / (1 << FRACBITS))
- SeeAlso: AH=6Eh,AX=6E00h
- --------y-326E12-----------------------------
- INT 32 - NOISE.SYS v0.53+ - ADD SAMPLE FROM FAST TIMER
- AX = 6E12h
- Return: CF set on error
- AL = error code (FCh,FDh,FEh) (see #03166)
- CF clear if successful
- CX = number of random bytes waiting
- Note: subfunctions 12h and 13h are meant for applications or devices
- which are able to gather entropy from other sources which are
- not polled by NOISE.SYS (for example, a communications driver
- could use this call to sample packet arrival times).
- SeeAlso: AX=6E00h,AX=6E10h,AX=6E13h
- --------y-326E13-----------------------------
- INT 32 - NOISE.SYS v0.53+ - ADD 16-BIT SAMPLE TO RANDOM POOL
- AX = 6E13h
- DX = sample
- Return: CF set on error
- AL = error code (FCh,FEh) (see #03166)
- CF clear if successful
- CX = number of random bytes waiting
- SeeAlso: AX=6E00h,AX=6E11h
- --------y-326E14-----------------------------
- INT 32 - NOISE.SYS v0.53+ - GET FLAGS
- AX = 6E14h
- Return: BX = flags (see #03167)
- CX = mask of settable flags in BX
- SeeAlso: AX=6E00h,AX=6E15h
- Bitfields for NOISE.SYS flags:
- Bit(s) Description (Table 03167)
- 0 MS Windows active
- 1-5 reserved
- 6 clock drift sampling
- 7 video retrace drift sampling
- 8 network access sampling (not implemented yet in 0.53)
- 9 CD-ROM access sampling (not implemented yet in 0.53)
- 10 DOS spinner
- 11 DOS process start/end and miscellaneous process activity sampling
- 12 mouse movement/button sampling
- 13 disk sampling (INT 13)
- 14 keystroke timings
- 15 reserved for hardware RNG
- --------y-326E15-----------------------------
- INT 32 - NOISE.SYS v0.53+ - SET FLAGS
- AX = 6E15h
- BX = flags (see #03167)
- Return: BX = new flags
- Note: flags which AX=6E14h indicates are not settable should be masked off
- by ANDing with the CX returned by AX=6E14h
- SeeAlso: AX=6E00h,AX=6E14h
- --------y-326E16-----------------------------
- INT 32 - NOISE.SYS v0.53+ - READ URANDOM BYTES
- AX = 6E16h
- CX = number of bytes
- ES:DI -> buffer
- Return: CF set on error
- AL = error code (FDh,FEh) (see #03166)
- CF clear if successful
- CX = number of random bytes read
- SeeAlso: AX=6E00h,AX=6E12h,AX=6E17h
- --------y-326E17-----------------------------
- INT 32 - NOISE.SYS v0.53+ - READ RANDOM BYTES
- AX = 6E17h
- CX = number of bytes
- ES:DI -> buffer
- Return: CF set on error
- AL = error code (FBh,FDh,FEh) (see #03166)
- CF clear if successful
- CX = number of random bytes read
- SeeAlso: AX=6E00h,AX=6E16h
- ----------326E18-----------------------------
- INT 32 - NOISE.SYS v0.6+ - READ CONTROL RECORD
- AX = 6E18h
- CX = buffer size
- ES:DI -> buffer
- Return: AL = status
- 00h unimplemented (before v0.6)
- FEh subfunction is disabled
- FFh successful
- CX = number of bytes read
- Note: the control record corresponds to the IOCTL Read record for the RANDOM
- device
- ----------326E-------------------------------
- INT 32 - NOISE.SYS - RESERVED FOR FUTURE USE
- AH = 6Eh
- AL = 19h to 3Fh
- Return: AL = 00h
- Note: these functions are reserved for future use; user additions to the
- the driver should use subfunctions 40h to FFh.
- --------M-330000-----------------------------
- INT 33 - MS MOUSE - RESET DRIVER AND READ STATUS
- AX = 0000h
- Return: AX = status
- 0000h hardware/driver not installed
- FFFFh hardware/driver installed
- BX = number of buttons
- 0000h other than two
- 0002h two buttons (many drivers)
- 0003h Mouse Systems/Logitech three-button mouse
- FFFFh two buttons
- Notes: to use mouse on a Hercules-compatible monographics card in graphics
- mode, you must first set 0040h:0049h to 6 for page 0 or 5 for page 1,
- and then call this function. Logitech drivers v5.01 and v6.00
- reportedly do not correctly use Hercules graphics in dual-monitor
- systems, while version 4.10 does.
- the Logitech mouse driver contains the signature string "LOGITECH"
- three bytes past the interrupt handler; many of the Logitech mouse
- utilities check for this signature.
- Logitech MouseWare v6.30 reportedly does not support CGA video modes
- if no CGA is present when it is started and the video board is
- later switched into CGA emulation
- SeeAlso: AX=0011h,AX=0021h,AX=002Fh,INT 62/AX=007Ah,INT 74
- --------M-330001-----------------------------
- INT 33 - MS MOUSE v1.0+ - SHOW MOUSE CURSOR
- AX = 0001h
- SeeAlso: AX=0002h,INT 16/AX=FFFEh,INT 62/AX=007Bh,INT 6F/AH=06h"F_TRACK_ON"
- --------M-330002-----------------------------
- INT 33 - MS MOUSE v1.0+ - HIDE MOUSE CURSOR
- AX = 0002h
- Note: multiple calls to hide the cursor will require multiple calls to
- function 01h to unhide it.
- SeeAlso: AX=0001h,AX=0010h,INT 16/AX=FFFFh,INT 62/AX=007Bh
- SeeAlso: INT 6F/AH=08h"F_TRACK_OFF"
- --------M-330003-----------------------------
- INT 33 - MS MOUSE v1.0+ - RETURN POSITION AND BUTTON STATUS
- AX = 0003h
- Return: BX = button status (see #03168)
- CX = column
- DX = row
- Note: in text modes, all coordinates are specified as multiples of the cell
- size, typically 8x8 pixels
- SeeAlso: AX=0004h,AX=000Bh,INT 2F/AX=D000h"ZWmous"
- Bitfields for mouse button status:
- Bit(s) Description (Table 03168)
- 0 left button pressed if 1
- 1 right button pressed if 1
- 2 middle button pressed if 1 (Mouse Systems/Logitech/Genius)
- --------M-330004-----------------------------
- INT 33 - MS MOUSE v1.0+ - POSITION MOUSE CURSOR
- AX = 0004h
- CX = column
- DX = row
- Note: the row and column are truncated to the next lower multiple of the cell
- size (typically 8x8 in text modes); however, some versions of the
- Microsoft documentation incorrectly state that the coordinates are
- rounded
- SeeAlso: AX=0003h,INT 62/AX=0081h,INT 6F/AH=10h"F_PUT_SPRITE"
- --------M-330005-----------------------------
- INT 33 - MS MOUSE v1.0+ - RETURN BUTTON PRESS DATA
- AX = 0005h
- BX = button number (see #03169)
- Return: AX = button states (see #03168)
- BX = number of times specified button has been pressed since last call
- CX = column at time specified button was last pressed
- DX = row at time specified button was last pressed
- Note: at least for the Genius mouse driver, the number of button presses
- returned is limited to 7FFFh
- SeeAlso: AX=0006h,INT 62/AX=007Ch
- (Table 03169)
- Values for mouse button number:
- 0000h left
- 0001h right
- 0002h middle (Mouse Systems/Logitech/Genius mouse)
- --------M-330006-----------------------------
- INT 33 - MS MOUSE v1.0+ - RETURN BUTTON RELEASE DATA
- AX = 0006h
- BX = button number (see #03169)
- Return: AX = button states (see #03168)
- BX = number of times specified button has been released since last call
- CX = column at time specified button was last released
- DX = row at time specified button was last released
- Note: at least for the Genius mouse driver, the number of button releases
- returned is limited to 7FFFh
- SeeAlso: AX=0005h,INT 62/AX=007Ch
- --------M-330007-----------------------------
- INT 33 - MS MOUSE v1.0+ - DEFINE HORIZONTAL CURSOR RANGE
- AX = 0007h
- CX = minimum column
- DX = maximum column
- Note: in text modes, the minimum and maximum columns are truncated to the
- next lower multiple of the cell size, typically 8x8 pixels
- SeeAlso: AX=0008h,AX=0010h,AX=0031h,INT 62/AX=0080h
- SeeAlso: INT 6F/AH=0Ch"F_SET_LIMITS_X"
- --------M-330008-----------------------------
- INT 33 - MS MOUSE v1.0+ - DEFINE VERTICAL CURSOR RANGE
- AX = 0008h
- CX = minimum row
- DX = maximum row
- Note: in text modes, the minimum and maximum rows are truncated to the
- next lower multiple of the cell size, typically 8x8 pixels
- SeeAlso: AX=0007h,AX=0010h,AX=0031h,INT 62/AX=0080h
- SeeAlso: INT 6F/AH=0Eh"F_SET_LIMITS_Y"
- --------M-330009-----------------------------
- INT 33 - MS MOUSE v3.0+ - DEFINE GRAPHICS CURSOR
- AX = 0009h
- BX = column of cursor hot spot in bitmap (-16 to 16)
- CX = row of cursor hot spot (-16 to 16)
- ES:DX -> mask bitmap (see #03170)
- Notes: in graphics modes, the screen contents around the current mouse cursor
- position are ANDed with the screen mask and then XORed with the
- cursor mask
- the Microsoft mouse driver v7.04 and v8.20 uses only BL and CL, so the
- hot spot row/column should be limited to -128..127
- Microsoft KnowledgeBase article Q19850 states that the high bit is
- right-most, but that statement is contradicted by all other available
- documentation
- SeeAlso: AX=000Ah,AX=0012h,AX=002Ah,INT 62/AX=007Fh,INT 6F/AH=0Ah"F_DEF_MASKS"
- Format of mouse mask bitmap:
- Offset Size Description (Table 03170)
- 00h 16 WORDs screen mask
- 10h 16 WORDs cursor mask
- Note: each word defines the sixteen pixels of a row, low bit rightmost
- --------M-33000A-----------------------------
- INT 33 - MS MOUSE v3.0+ - DEFINE TEXT CURSOR
- AX = 000Ah
- BX = hardware/software text cursor
- 0000h software
- CX = screen mask
- DX = cursor mask
- 0001h hardware
- CX = start scan line
- DX = end scan line
- Note: when the software cursor is selected, the character/attribute data at
- the current screen position is ANDed with the screen mask and then
- XORed with the cursor mask
- SeeAlso: AX=0009h,INT 62/AX=007Eh
- --------M-33000B-----------------------------
- INT 33 - MS MOUSE v1.0+ - READ MOTION COUNTERS
- AX = 000Bh
- Return: CX = number of mickeys mouse moved horizontally since last call
- DX = number of mickeys mouse moved vertically
- Notes: a mickey is the smallest increment the mouse can sense
- positive values indicate down/right
- SeeAlso: AX=0003h,AX=001Bh,AX=0027h
- --------M-33000C-----------------------------
- INT 33 - MS MOUSE v1.0+ - DEFINE INTERRUPT SUBROUTINE PARAMETERS
- AX = 000Ch
- CX = call mask (see #03171)
- ES:DX -> FAR routine (see #03172)
- SeeAlso: AX=0018h
- Bitfields for mouse call mask:
- Bit(s) Description (Table 03171)
- 0 call if mouse moves
- 1 call if left button pressed
- 2 call if left button released
- 3 call if right button pressed
- 4 call if right button released
- 5 call if middle button pressed (Mouse Systems/Logitech/Genius mouse)
- 6 call if middle button released (Mouse Systems/Logitech/Genius mouse)
- 7-15 unused
- Note: some versions of the Microsoft documentation incorrectly state that CX
- bit 0 means call if mouse cursor moves
- (Table 03172)
- Values interrupt routine is called with:
- AX = condition mask (same bit assignments as call mask)
- BX = button state
- CX = cursor column
- DX = cursor row
- SI = horizontal mickey count
- DI = vertical mickey count
- Notes: some versions of the Microsoft documentation erroneously swap the
- meanings of SI and DI
- in text modes, the row and column will be reported as a multiple of
- the character cell size, typically 8x8 pixels
- --------M-33000D-----------------------------
- INT 33 - MS MOUSE v1.0+ - LIGHT PEN EMULATION ON
- AX = 000Dh
- SeeAlso: AX=000Eh,INT 10/AH=04h
- --------M-33000E-----------------------------
- INT 33 - MS MOUSE v1.0+ - LIGHT PEN EMULATION OFF
- AX = 000Eh
- SeeAlso: AX=000Dh
- --------M-33000F-----------------------------
- INT 33 - MS MOUSE v1.0+ - DEFINE MICKEY/PIXEL RATIO
- AX = 000Fh
- CX = number of mickeys per 8 pixels horizontally (default 8)
- DX = number of mickeys per 8 pixels vertically (default 16)
- SeeAlso: AX=0013h,AX=001Ah,INT 62/AX=0082h
- --------M-330010-----------------------------
- INT 33 - MS MOUSE v1.0+ - DEFINE SCREEN REGION FOR UPDATING
- AX = 0010h
- CX,DX = X,Y coordinates of upper left corner
- SI,DI = X,Y coordinates of lower right corner
- Note: mouse cursor is hidden in the specified region, and needs to be
- explicitly turned on again
- SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"Genius MOUSE",AX=0031h
- --------M-330010-----------------------------
- INT 33 - Genius MOUSE - DEFINE SCREEN REGION FOR UPDATING
- AX = 0010h
- ES:DX -> update region list (see #03173)
- Notes: mouse cursor is hidden in the specified region, and needs to be
- explicitly turned on again
- this version of the call is described in an August 1988 version of the
- Genius Mouse programmer's reference; it has been changed to conform
- to the Microsoft version shown above by version 9.06 (and possibly
- earlier versions)
- SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"MS MOUSE"
- Format of Genius Mouse update region list:
- Offset Size Description (Table 03173)
- 00h WORD left-most column
- 02h WORD top-most row
- 04h WORD right-most column
- 06h WORD bottom-most row
- --------M-330011-----------------------------
- INT 33 - Genius Mouse 9.06 - GET NUMBER OF BUTTONS
- AX = 0011h
- Return: AX = FFFFh
- BX = number of buttons
- SeeAlso: AX=0000h
- --------M-330012-----------------------------
- INT 33 - MS MOUSE - SET LARGE GRAPHICS CURSOR BLOCK
- AX = 0012h
- BH = cursor width in words
- CH = rows in cursor
- BL = horizontal hot spot (-16 to 16)
- CL = vertical hot spot (-16 to 16)
- ES:DX -> bit map of screen and cursor maps
- Return: AX = FFFFh if successful
- SeeAlso: AX=0009h,AX=002Ah,AX=0035h
- --------M-330013-----------------------------
- INT 33 - MS MOUSE v5.0+ - DEFINE DOUBLE-SPEED THRESHOLD
- AX = 0013h
- DX = threshold speed in mickeys/second, 0000h = default of 64/second
- Note: if speed exceeds threshold, the cursor's on-screen motion is doubled
- SeeAlso: AX=000Fh,AX=001Bh,AX=002Ch
- --------M-330014-----------------------------
- INT 33 - MS MOUSE v3.0+ - EXCHANGE INTERRUPT SUBROUTINES
- AX = 0014h
- CX = call mask (see #03171)
- ES:DX -> FAR routine
- Return: CX = call mask of previous interrupt routine
- ES:DX = FAR address of previous interrupt routine
- SeeAlso: AX=000Ch,AX=0018h
- --------M-330015-----------------------------
- INT 33 - MS MOUSE v6.0+ - RETURN DRIVER STORAGE REQUIREMENTS
- AX = 0015h
- Return: BX = size of buffer needed to store driver state
- SeeAlso: AX=0016h,AX=0017h,AX=0042h
- --------M-330016-----------------------------
- INT 33 - MS MOUSE v6.0+ - SAVE DRIVER STATE
- AX = 0016h
- BX = size of buffer (see AX=0015h)
- ES:DX -> buffer for driver state
- Note: although not documented (since the Microsoft driver does not use it),
- many drivers appear to require BX on input
- SeeAlso: AX=0015h,AX=0017h
- --------M-330017-----------------------------
- INT 33 - MS MOUSE v6.0+ - RESTORE DRIVER STATE
- AX = 0017h
- BX = size of buffer (see AX=0015h)
- ES:DX -> buffer containing saved state
- Notes: although not documented (since the Microsoft driver does not use it),
- many drivers appear to require BX on input
- some mouse drivers range-check the values in the saved state based on
- the current video mode; thus, the video mode should be restored
- before the mouse driver's state is restored
- SeeAlso: AX=0015h,AX=0016h
- --------M-330018-----------------------------
- INT 33 - MS MOUSE v6.0+ - SET ALTERNATE MOUSE USER HANDLER
- AX = 0018h
- CX = call mask (see #03174)
- ES:DX -> FAR routine to be invoked on mouse events (see #03175)
- Return: AX = status
- 0018h if successful
- FFFFh on error
- Notes: up to three handlers can be defined by separate calls to this function,
- each with a different combination of shift states in the call mask;
- calling this function again with a call mask of 0000h undefines the
- specified handler (official documentation); specifying the same
- call mask and an address of 0000h:0000h undefines the handler (real
- life)
- some versions of the documentation erroneously reverse the order of
- the bits in the call mask
- SeeAlso: AX=000Ch,AX=0014h,AX=0019h
- Bitfields for mouse call mask:
- Bit(s) Description (Table 03174)
- 0 call if mouse moves
- 1 call if left button pressed
- 2 call if left button released
- 3 call if right button pressed
- 4 call if right button released
- 5 call if shift button pressed during event
- 6 call if ctrl key pressed during event
- 7 call if alt key pressed during event
- Note: at least one of 5-7 must be set
- (Table 03175)
- Values user handler is called with:
- AX = condition mask (same bit assignments as call mask)
- BX = button state
- CX = cursor column
- DX = cursor row
- SI = horizontal mickey count
- DI = vertical mickey count
- Return: registers preserved
- Note: in text modes, the row and column will be reported as a multiple of
- the cell size, typically 8x8 pixels
- --------M-330019-----------------------------
- INT 33 - MS MOUSE v6.0+ - RETURN USER ALTERNATE INTERRUPT VECTOR
- AX = 0019h
- CX = call mask (see #03174)
- Return: BX:DX = user interrupt vector
- CX = call mask (0000h if not found)
- Note: attempts to find a user event handler (defined by function 18h)
- whose call mask matches CX
- SeeAlso: AX=0018h
- --------M-33001A-----------------------------
- INT 33 - MS MOUSE v6.0+ - SET MOUSE SENSITIVITY
- AX = 001Ah
- BX = horizontal speed \
- CX = vertical speed / (see AX=000Fh)
- DX = double speed threshold (see AX=0013h)
- SeeAlso: AX=0013h,AX=001Bh,INT 62/AX=0082h
- --------M-33001B-----------------------------
- INT 33 - MS MOUSE v6.0+ - RETURN MOUSE SENSITIVITY
- AX = 001Bh
- Return: BX = horizontal speed
- CX = vertical speed
- DX = double speed threshold
- SeeAlso: AX=000Bh,AX=001Ah
- --------M-33001C-----------------------------
- INT 33 - MS MOUSE v6.0+ - SET INTERRUPT RATE
- AX = 001Ch
- BX = rate (see #03176)
- Notes: only available on InPort mouse
- values greater than 4 may cause unpredictable driver behavior
- (Table 03176)
- Values for mouse interrupt rate:
- 00h no interrupts allowed
- 01h 30 per second
- 02h 50 per second
- 03h 100 per second
- 04h 200 per second
- --------M-33001D-----------------------------
- INT 33 - MS MOUSE v6.0+ - DEFINE DISPLAY PAGE NUMBER
- AX = 001Dh
- BX = display page number
- Note: the cursor will be displayed on the specified page
- SeeAlso: AX=001Eh
- --------M-33001E-----------------------------
- INT 33 - MS MOUSE v6.0+ - RETURN DISPLAY PAGE NUMBER
- AX = 001Eh
- Return: BX = display page number
- SeeAlso: AX=001Dh
- --------M-33001F-----------------------------
- INT 33 - MS MOUSE v6.0+ - DISABLE MOUSE DRIVER
- AX = 001Fh
- Return: AX = status
- 001Fh successful
- ES:BX = INT 33 vector before mouse driver was first installed
- FFFFh unsuccessful
- Notes: restores vectors for INT 10 and INT 71 (8086) or INT 74 (286/386)
- if you restore INT 33 to ES:BX, driver will be completely disabled
- many drivers return AX=001Fh even though the driver has been disabled
- SeeAlso: AX=0020h
- --------M-330020-----------------------------
- INT 33 - MS MOUSE v6.0+ - ENABLE MOUSE DRIVER
- AX = 0020h
- Return: AX = status
- 0020h successful
- FFFFh unsuccessful
- Notes: restores vectors for INT 10h and INT 71h (8086) or INT 74h (286/386)
- which were removed by function 1Fh
- Microsoft's documentation states that no value is returned
- SeeAlso: AX=001Fh
- --------M-330021-----------------------------
- INT 33 - MS MOUSE v6.0+ - SOFTWARE RESET
- AX = 0021h
- Return: AX = status
- FFFFh if mouse driver installed
- BX = number of buttons (FFFFh = two buttons)
- 0021h if mouse driver not installed
- Note: this call is identical to funtion 00h, but does not reset the mouse
- SeeAlso: AX=0000h
- --------M-330022-----------------------------
- INT 33 - MS MOUSE v6.0+ - SET LANGUAGE FOR MESSAGES
- AX = 0022h
- BX = language (see #03177)
- Note: only available on international versions of the driver; US versions
- ignore this call
- SeeAlso: AX=0023h
- (Table 03177)
- Values for mouse driver language:
- 00h English
- 01h French
- 02h Dutch
- 03h German
- 04h Swedish
- 05h Finnish
- 06h Spanish
- 07h Portugese
- 08h Italian
- --------M-330023-----------------------------
- INT 33 - MS MOUSE v6.0+ - GET LANGUAGE FOR MESSAGES
- AX = 0023h
- Return: BX = language (see #03177)
- Note: the US version of the driver always returns zero
- SeeAlso: AX=0022h
- --------M-330024-----------------------------
- INT 33 - MS MOUSE v6.26+ - GET SOFTWARE VERSION, MOUSE TYPE, AND IRQ NUMBER
- AX = 0024h
- Return: AX = FFFFh on error
- otherwise,
- BH = major version
- BL = minor version
- CH = type (1=bus, 2=serial, 3=InPort, 4=PS/2, 5=HP)
- CL = interrupt (0=PS/2, 2=IRQ2, 3=IRQ3,...,7=IRQ7,...,0Fh=IRQ15)
- SeeAlso: AX=004Dh,AX=006Dh
- --------M-330025-----------------------------
- INT 33 - MS MOUSE v6.26+ - GET GENERAL DRIVER INFORMATION
- AX = 0025h
- Return: AX = general information (see #03178)
- BX = cursor lock flag for OS/2 to prevent reentrancy problems
- CX = mouse code active flag (for OS/2)
- DX = mouse driver busy flag (for OS/2)
- Bitfields for general mouse driver information:
- Bit(s) Description (Table 03178)
- 15 driver loaded as device driver rather than TSR
- 14 driver is newer integrated type
- 13,12 current cursor type
- 00 software text cursor
- 01 hardware text cursor (CRT Controller's cursor)
- 1X graphics cursor
- 11-8 interrupt rate (see #03176)
- 7-0 count of currently-active Mouse Display Drivers (MDD), the newer
- integrated driver type
- --------M-330026-----------------------------
- INT 33 - MS MOUSE v6.26+ - GET MAXIMUM VIRTUAL COORDINATES
- AX = 0026h
- Return: BX = mouse-disabled flag (0000h mouse enabled, nonzero disabled)
- CX = maximum virtual X (for current video mode)
- DX = maximum virtual Y
- Note: for driver versions before 7.05, this call returns the currently-set
- maximum coordinates; v7.05+ returns the absolute maximum coordinates
- SeeAlso: AX=0031h
- --------M-330026-----------------------------
- INT 33 - Genius Mouse 9.06 - ???
- AX = 0026h
- Return: CX = 0204h if CX was 0105h on entry, else unchanged
- --------M-330027-----------------------------
- INT 33 - MS MOUSE v7.01+ - GET SCREEN/CURSOR MASKS AND MICKEY COUNTS
- AX = 0027h
- Return: AX = screen-mask value (or hardware cursor scan-line start for v7.02+)
- BX = cursor-mask value (or hardware cursor scan-line stop for v7.02+)
- CX = horizontal mickeys moved since last call
- DX = vertical mickeys moved since last call
- SeeAlso: AX=000Bh
- --------M-330028-----------------------------
- INT 33 - MS MOUSE v7.0+ - SET VIDEO MODE
- AX = 0028h
- CX = new video mode (call is NOP if 0000h)
- DH = Y font size (00h = default)
- DL = X font size (00h = default)
- Return: CL = status (00h = successful)
- Notes: DX is ignored unless the selected video mode supports font size control
- when CX=0000h, an internal flag that had been set by a previous call
- is cleared; this is required before a mouse reset
- SeeAlso: AX=0029h,INT 10/AH=00h
- --------M-330029-----------------------------
- INT 33 - MS MOUSE v7.0+ - ENUMERATE VIDEO MODES
- AX = 0029h
- CX = previous video mode
- 0000h get first supported video mode
- other get next supported mode after mode CX
- Return: CX = first/next video mode (0000h = no more video modes)
- DS:DX -> description of video mode or 0000h:0000h if none
- Notes: the enumerated video modes may be in any order and may repeat
- the description string (if available) is terminated by '$' followed by
- a NUL byte
- SeeAlso: AX=0028h
- --------M-33002A-----------------------------
- INT 33 - MS MOUSE v7.02+ - GET CURSOR HOT SPOT
- AX = 002Ah
- Return: AX = internal counter controlling cursor visibility
- BX = cursor hot spot column
- CX = cursor hot spot row
- DX = mouse type (see #03179)
- Note: the hot spot location is relative to the upper left corner of the
- cursor block and may range from -128 to +127 both horizontally and
- vertically
- SeeAlso: AX=0009h,AX=0012h,AX=0035h
- (Table 03179)
- Values for mouse type:
- 00h none
- 01h bus
- 02h serial
- 03h InPort
- 04h IBM
- 05h Hewlett-Packard
- --------M-33002B-----------------------------
- INT 33 - MS MOUSE v7.0+ - LOAD ACCELERATION PROFILES
- AX = 002Bh
- BX = active acceleration profile
- 0001h-0004h or FFFFh to restore default curves
- ES:SI -> buffer containing acceleration profile data (see #03180)
- Return: AX = success flag
- SeeAlso: AX=002Ch,AX=002Dh,AX=0033h
- Format of acceleration profile data:
- Offset Size Description (Table 03180)
- 00h BYTE length of acceleration profile 1
- 01h BYTE length of acceleration profile 2
- 02h BYTE length of acceleration profile 3
- 03h BYTE length of acceleration profile 4
- 04h 32 BYTEs threshold speeds for acceleration profile 1
- 24h 32 BYTEs threshold speeds for acceleration profile 2
- 44h 32 BYTEs threshold speeds for acceleration profile 3
- 64h 32 BYTEs threshold speeds for acceleration profile 4
- 84h 32 BYTEs speedup factor for acceleration profile 1
- (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
- A4h 32 BYTEs speedup factor for acceleration profile 2
- (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
- C4h 32 BYTEs speedup factor for acceleration profile 3
- (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
- E4h 32 BYTEs speedup factor for acceleration profile 4
- (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
- 104h 16 BYTEs name of acceleration profile 1 (blank-padded)
- 114h 16 BYTEs name of acceleration profile 2 (blank-padded)
- 124h 16 BYTEs name of acceleration profile 3 (blank-padded)
- 134h 16 BYTEs name of acceleration profile 4 (blank-padded)
- Note: unused bytes in the threshold speed fields are filled with 7Fh and
- unused bytes in the speedup factor fields are filled with 10h
- --------M-33002C-----------------------------
- INT 33 - MS MOUSE v7.0+ - GET ACCELERATION PROFILES
- AX = 002Ch
- Return: AX = status (0000h success)
- BX = currently-active acceleration profile
- ES:SI -> acceleration profile data (see #03180)
- SeeAlso: AX=002Bh,AX=002Dh,AX=0033h
- --------M-33002D-----------------------------
- INT 33 - MS MOUSE v7.0+ - SELECT ACCELERATION PROFILE
- AX = 002Dh
- BX = acceleration level
- 0001h-0004h to set profile, or FFFFh to get current profile
- Return: AX = status
- 0000h successful
- ES:SI -> 16-byte blank-padded name of acceleration profile
- FFFEh invalid acceleration curve number
- ES:SI destroyed
- BX = active acceleration curve number
- SeeAlso: AX=0013h,AX=002Bh,AX=002Ch,AX=002Eh
- --------M-33002E-----------------------------
- INT 33 - MS MOUSE v8.10+ - SET ACCELERATION PROFILE NAMES
- AX = 002Eh
- BL = flag (if nonzero, fill ES:SI buffer with default names on return)
- ES:SI -> 64-byte buffer containing profile names (16 bytes per name)
- Return: AX = status (0000h success)
- FFFEh error for ATI Mouse driver
- ES:SI buffer filled with default names if BL nonzero on entry
- Notes: not supported by Logitech driver v6.10
- supported by ATI Mouse driver v7.04
- SeeAlso: AX=002Ch,AX=002Dh,AX=012Eh,AX=022Eh
- --------M-33002F-----------------------------
- INT 33 - MS MOUSE v7.02+ - MOUSE HARDWARE RESET
- AX = 002Fh
- Return: AX = status
- Note: invoked by mouse driver v8.20 on being called with INT 2F/AX=530Bh
- SeeAlso: INT 2F/AH=53h
- --------M-330030-----------------------------
- INT 33 - MS MOUSE v7.04+ - GET/SET BallPoint INFORMATION
- AX = 0030h
- CX = command
- 0000h get status of BallPoint device
- other set rotation angle and masks
- BX = rotation angle (-32768 to 32767 degrees)
- CH = primary button mask
- CL = secondary button mask
- Return: AX = button status (FFFFh if no BallPoint) (see #03181)
- BX = rotation angle (0-360 degrees)
- CH = primary button mask
- CL = secondary button mask
- Note: not supported by the ATI Mouse driver which calls itself v7.04
- Bitfields for BallPoint mouse button status:
- Bit(s) Description (Table 03181)
- 5 button 1
- 4 button 2
- 3 button 3
- 2 button 4
- other zero
- --------M-330031-----------------------------
- INT 33 - MS MOUSE v7.05+ - GET CURRENT MINIMUM/MAXIMUM VIRTUAL COORDINATES
- AX = 0031h
- Return: AX = virtual X minimum
- BX = virtual Y minimum
- CX = virtual X maximum
- DX = virtual Y maximum
- Note: the minimum and maximum values are those set by AX=0007h and AX=0008h;
- the default is minimum = 0 and maximum = absolute maximum
- (see AX=0026h)
- SeeAlso: AX=0007h,AX=0008h,AX=0010h,AX=0026h
- --------M-330032-----------------------------
- INT 33 - MS MOUSE v7.05+ - GET ACTIVE ADVANCED FUNCTIONS
- AX = 0032h
- Return: AX = active function flags (FFFFh for v8.10)
- bit 15: function 0025h supported
- bit 14: function 0026h supported
- ...
- bit 0: function 0034h supported
- BX = ??? (0000h) officially unused
- CX = ??? (E000h) officially unused
- DX = ??? (0000h) officially unused
- Note: the Italian version of MS MOUSE v8.20 reportedly indicates that
- functions 0033h and 0034h are not supported even though they are
- --------M-330033-----------------------------
- INT 33 - MS MOUSE v7.05+ - GET SWITCH SETTINGS AND ACCELERATION PROFILE DATA
- AX = 0033h
- CX = size of buffer
- 0000h get required buffer size
- Return: AX = 0000h
- CX = required size (0154h for Logitech v6.10, 0159h
- for MS v8.10-8.20)
- other
- ES:DX -> buffer of CX bytes for mouse settings
- Return: AX = 0000h
- CX = number of bytes returned
- ES:DX buffer filled (see #03182)
- SeeAlso: AX=002Bh
- Format of mouse settings data buffer:
- Offset Size Description (Table 03182)
- 00h BYTE mouse type
- 01h BYTE current language
- 02h BYTE horizontal sensitivity (00h-64h)
- 03h BYTE vertical sensitivity (00h-64h)
- 04h BYTE double-speed threshold (00h-64h)
- 05h BYTE ballistic curve (01h-04h)
- 06h BYTE interrupt rate (01h-04h)
- 07h BYTE cursor override mask
- 08h BYTE laptop adjustment
- 09h BYTE memory type (00h-02h)
- 0Ah BYTE SuperVGA support (00h,01h)
- 0Bh BYTE rotation angle
- 0Ch BYTE ???
- 0Dh BYTE primary button (01h-04h)
- 0Eh BYTE secondary button (01h-04h)
- 0Fh BYTE click lock enabled (00h,01h)
- 10h 324 BYTEs acceleration profile data (see #03180)
- 154h 5 BYTEs ??? (Microsoft driver, but not Logitech)
- --------M-330034-----------------------------
- INT 33 - MS MOUSE v8.0+ - GET INITIALIZATION FILE
- AX = 0034h
- Return: AX = status (0000h successful)
- ES:DX -> ASCIZ initialization (.INI) file name
- --------M-330035-----------------------------
- INT 33 - MS MOUSE v8.10+ - LCD SCREEN LARGE POINTER SUPPORT
- AX = 0035h
- BX = function
- FFFFh get current settings
- Return: AX = 0000h
- BH = style (see #03183)
- BL = size (see #03184)
- CH = threshold (00h-64h)
- CL = active flag (00h disabled, 01h enabled)
- DX = delay
- other
- BH = pointer style (see #03183)
- BL = size (see #03184)
- CH = threshold (00h-64h)
- CL = active flag (00h disable size change, 01h enable)
- DX = delay (0000h-0064h)
- Return: AX = 0000h
- Note: not supported by Logitech driver v6.10
- SeeAlso: AX=0012h,AX=002Ah
- (Table 03183)
- Values for pointer style:
- 00h normal
- 01h reverse
- 02h transparent
- SeeAlso: #03184
- (Table 03184)
- Values for pointer size:
- 00h small ("1")
- 01h medium ("1.5")
- 02h large ("2")
- SeeAlso: #03183
- --------M-330042-----------------------------
- INT 33 - PCMOUSE - GET MSMOUSE STORAGE REQUIREMENTS
- AX = 0042h
- Return: AX = status
- 0000h MSMOUSE not installed
- 0042h functions 42h, 50h, and 52h not supported
- FFFFh successful
- BX = buffer size in bytes for functions 50h and 52h
- Note: this function is also supported by the Genius Mouse 9.06 driver
- SeeAlso: AX=0015h,AX=0050h,AX=0052h
- --------M-330043-----------------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - CONFIGURE MOUSE???
- AX = 0043h
- CX:BX -> configuration buffer (see #03185)
- DL = ???
- Return: ???
- Notes: also calls routines for INT 33/AX=0053h and INT 33/AX=004Fh
- this function is also supported by the Genius Mouse 9.06 driver
- Format of Mouse Systems configuration buffer:
- Offset Size Description (Table 03185)
- 00h WORD I/O port address
- 02h BYTE ???
- 03h BYTE interrupt number
- 04h BYTE interrupt mask for interrupt controller
- 05h 5 BYTEs ???
- --------M-330044CXCDEF-----------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - TOGGLE IGNORE ACCELERATION CMDS
- AX = 0044h
- CX = CDEFh
- Return: AX = new state of "Ignore Application Acceleration Commands" flag
- Note: this function is also supported by the Genius Mouse 9.06 driver
- SeeAlso: AX=0045h
- --------M-330045CXCDEF-----------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - TOGGLE RESOLUTION DOUBLING
- AX = 0045h
- CX = CDEFh
- Return: AX = new state of resolution doubling flag
- Note: this function is also supported by the Genius Mouse 9.06 driver
- SeeAlso: AX=0044h
- --------M-330047-----------------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET BUTTON ASSIGNMENTS
- AX = 0047h
- ES:BX -> button assignments (3 bytes, combinations of "L", "M", "R")
- Return: ???
- Note: also supported by Genius Mouse 9.06 driver
- SeeAlso: AX=0067h
- --------M-330048BXCDEF-----------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET ???
- AX = 0048h
- BX = CDEFh
- Return: CX = ???
- BH = ???
- BL = ??? (if 50h, driver is using PS/2 pointing device BIOS interface)
- Note: also supported by Genius Mouse 9.06 driver
- --------M-33004B-----------------------------
- INT 33 - LCS/Telegraphics MOUSE DRIVERS - INSTALLATION CHECK / GET VERSION
- AX = 004Bh
- Return: ES:DI -> ASCIZ signature/description string if installed (see #03186)
- (Table 03186)
- Values for LCS/Telegraphics mouse driver OEM signature/description string:
- "Primax Generic;Universal Mouse Driver;IMOUSE;v8.20i"
- "Synaptics;TouchPad Driver;SYNTOUCH;v2.26"
- "Z-NIX;BUS,AUX,Serial 3-byte and 5-byte Mouse Driver;ZMOUSE;v7.04d"
- Note: the string consists of OEM, driver description, driver name, and
- version number
- --------M-33004CBXCDEF-----------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET ??? FLAG
- AX = 004Ch
- BX = CDEFh
- Note: also supported by Genius Mouse 9.06
- SeeAlso: AX=006Ch
- --------M-33004D-----------------------------
- INT 33 - MS MOUSE - RETURN POINTER TO COPYRIGHT STRING
- AX = 004Dh
- Return: ES:DI -> copyright message "*** This is Copyright 1983 Microsoft" or
- "Copyright 19XX...."
- Notes: also supported by Logitech, Kraft, Genius Mouse, and Mouse Systems
- mouse drivers
- in the Genius Mouse 9.06 driver, the ASCIZ signature "KYE" immediately
- follows the above copyright message (KYE Corp. manufactures the
- driver)
- SeeAlso: AX=0024h,AX=006Dh,AX=0666h
- --------M-33004F-----------------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ENABLE MOUSE
- AX = 004Fh
- Return: nothing
- Note: also supported by Genius Mouse 9.06
- SeeAlso: AX=0043h,AX=0053h
- --------M-330050-----------------------------
- INT 33 - PCMOUSE - SAVE MSMOUSE STATE
- AX = 0050h
- BX = buffer size (ignored by some driver versions)
- ES:DX -> buffer
- Return: AX = FFFFh if successful
- Notes: the buffer must be large enough to hold the entire state, or following
- data will be overwritten by state data in versions which ignore BX;
- use INT 33/AX=0042h to get the required size
- this function is also supported by the Genius Mouse 9.06 driver
- SeeAlso: AX=0042h,AX=0052h
- --------M-330052-----------------------------
- INT 33 - PCMOUSE - RESTORE MSMOUSE STATE
- AX = 0052h
- BX = buffer size (ignored by some driver versions)
- ES:DX -> buffer
- Return: AX = FFFFh if successful
- Note: also supported by Genius Mouse 9.06 driver
- SeeAlso: AX=0050h
- --------M-330053-----------------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - DISABLE MOUSE
- AX = 0053h
- Return: nothing
- Note: also supported by Genius Mouse 9.06
- SeeAlso: AX=0043h,AX=004Fh
- --------M-330054CXCDEF-----------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SELECT ULTRARES ACCELERATION LEVEL
- AX = 0054h
- CX = CDEFh
- BX = new acceleration level (0-9)
- Return: ???
- Note: this function is also supported by the Genius Mouse 9.06 driver
- SeeAlso: AX=005Ah
- --------M-330055-----------------------------
- INT 33 - Kraft Mouse - GET ???
- AX = 0055h
- Return: CX = ???
- DX = ???
- ES = ???
- --------M-330058-----------------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
- AX = 0058h
- Return: AX = CS of driver
- CX:BX = original INT 33 vector
- DX = ???
- Note: this function is also supported by the Genius Mouse 9.06 driver
- --------M-33005A-----------------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET ULTRARES ACCELERATIONS
- AX = 005Ah
- CX = number of WORDs to copy (max 0014h, but not range-checked)
- DX:SI -> buffer containing thresholds??? (CX words)
- DX:BX -> buffer containing acceleration values???
- (9*14h words, only first CX of each 14h used)
- ???
- Return: CF clear
- ???
- Note: this function is also supported by Genius Mouse 9.06
- SeeAlso: AX=0054h
- --------M-330061BXCDEF-----------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
- AX = 0061h
- BX = CDEFh
- Return: CX = ???
- Note: also supported by Genius Mouse 9.06
- --------M-330067-----------------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET MOUSE BUTTONS???
- AX = 0067h
- Return: BL = number of buttons???
- Note: also supported by Genius Mouse 9.06
- SeeAlso: AX=0047h
- --------M-33006A-----------------------------
- INT 33 U - ATI Mouse - INSTALLATION CHECK
- AX = 006Ah
- Return: AL = AAh
- AH = ???
- BH = ???
- BL = ???
- CL = ???
- CH = ???
- Program: ATI's MOUSE.COM and MOUSE.SYS are drivers for the mouse port found on
- some of ATI's video adapters
- SeeAlso: AX=006Dh
- --------M-33006C-----------------------------
- INT 33 U - TRUEDOX Mouse driver v4.01 - GET/SET HARDWARE PARAMETERS
- AX = 006Ch
- BX = new IRQ (0003h or 0004h), or 0000h to get current values only
- CL = new IRQmask (sent to 8259)
- DX = new base I/O port
- Return: BX = current IRQ
- DX = light pen state???
- Note: this is the mouse driver for the Dell Dimension series of computers, by
- TRUEDOX Technology Corporation
- SeeAlso: AX=00A1h,AX=0666h
- --------M-33006CBXCDEF-----------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - CLEAR ??? FLAG
- AX = 006Ch
- BX = CDEFh
- Note: also supported by Genius Mouse 9.06
- SeeAlso: AX=004Ch
- --------M-33006D-----------------------------
- INT 33 - MS MOUSE - GET VERSION STRING
- AX = 006Dh
- Return: ES:DI -> Microsoft version number of resident driver (see #03187)
- Notes: also supported by Logitech, Mouse Systems, Kraft, and Genius mouse
- drivers
- the Mouse Systems 7.01 and Genius Mouse 9.06 drivers report their
- Microsoft version as 7.00 even though they do not support any of the
- functions from 0025h through 002Dh supported by the MS 7.00 driver
- (the Genius Mouse driver supports function 0026h, but it differs
- from the Microsoft function)
- the TRUEDOX 4.01 driver reports its version as 6.26 through this call,
- but as 6.24 through AX=0024h
- SeeAlso: AX=0024h,AX=004Dh,AX=006Ah,AX=266Ch
- Format of Microsoft version number:
- Offset Size Description (Table 03187)
- 00h BYTE major version
- 01h BYTE minor version (BCD)
- --------M-330070BXABCD-----------------------
- INT 33 - Mouse Systems MOUSE DRIVER - POPUP.COM - INSTALLATION CHECK
- AX = 0070h
- BX = ABCDh
- Return: AX = ABCDh if installed
- BX:CX -> data structure (see #03188)
- Notes: this function is also supported by the Genius Mouse 9.06 driver
- the v7.01 POPUP.COM and menu drivers also check for the signature
- CDh ABh BAh DCh at offset -2Ch from the interrupt handler
- if POPUP is not loaded, the returned data structure contains the proper
- signature at offset 00h, but not at offset 08h
- Format of Mouse Systems POPUP.COM data structure:
- Offset Size Description (Table 03188)
- 00h WORD signature ABCDh
- 02h DWORD pointer to info structure??? (see #03189)
- 06h 2 BYTEs ???
- 08h WORD signature ABCDh
- Format of Mouse Systems POPUP.COM info structure:
- Offset Size Description (Table 03189)
- 00h WORD driver version
- 02h 8 BYTEs ???
- 0Ah WORD segment of ???
- ???
- --------M-330072BXABCD-----------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
- AX = 0072h
- BX = ABCDh
- Return: ???
- Note: this function is also supported by the Genius Mouse 9.06 driver
- --------M-330073BXCDEF-----------------------
- INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET BUTTON ASSIGNMENTS
- AX = 0073h
- BX = CDEFh
- ES:DX -> 3-byte buffer for button assignments
- Return: CX = number of buttons???
- ES:DX buffer filled (default is "LMR")
- Note: also supported by Genius Mouse 9.06
- SeeAlso: AX=0067h
- --------M-3300A0-----------------------------
- INT 33 U - TRUEDOX Mouse driver - SET HARDWARE PC MODE (3 button)
- AX = 00A0h
- Return: nothing
- Note: this function is only available if the mouse mode is switchable
- through the power pins
- SeeAlso: AX=006Ch"TRUEDOX",AX=00A1h"TRUEDOX"
- --------M-3300A1-----------------------------
- INT 33 U - TRUEDOX Mouse driver - SET HARDWARE MS MODE (2 button)
- AX = 00A1h
- Return: nothing
- Notes: this function is only available if the mouse mode is switchable
- through the power pins
- this is the mouse driver for the Dell Dimension series of computers, by
- TRUEDOX Technology Corporation
- SeeAlso: AX=006Ch"TRUEDOX",AX=00A0h"TRUEDOX",AX=00A6h,AX=0666h
- --------M-3300A6-----------------------------
- INT 33 U - TRUEDOX Mouse driver - SET RESOLUTION
- AX = 00A6h
- BX = new software resolution
- 0001h 50-200 dpi
- 0002h 200-400 dpi
- 0003h 400-800 dpi
- Note: this is the mouse driver for the Dell Dimension series of computers, by
- TRUEDOX Technology Corporation
- SeeAlso: AX=00A0h,AX=00A1h,AX=0666h
- --------M-3300B0-----------------------------
- INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
- AX = 00B0h
- ???
- Return: ???
- --------M-3300D6-----------------------------
- INT 33 - Twiddler TWMOUSE - GET BUTTON/TILT STATE
- AX = 00D6h
- Return: AX = current button bitmap
- BX = current X tilt (approximately -200..+200 = -90degrees..+90deg.)
- CX = current Y tilt
- Program: the Twiddler is a chording keyboard/mouse combination by Handykey
- Corporation
- --------M-3300F0-----------------------------
- INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
- AX = 00F0h
- ???
- Return: ???
- --------M-3300F1-----------------------------
- INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
- AX = 00F1h
- ???
- Return: ???
- --------M-3300F2-----------------------------
- INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
- AX = 00F2h
- ???
- Return: ???
- --------M-3300F3-----------------------------
- INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
- AX = 00F3h
- ???
- Return: ???
- --------M-330100CX4752-----------------------
- INT 33 - GRTMOUSE v1.00+ - INSTALLATION CHECK
- AX = 0100h
- CX = 4752h ('GR')
- DX = 544Dh ('TM')
- Return: AX = 474Dh ('GM') if installed
- CX = version number (CH = major, CL = minor)
- Program: GRTMOUSE is a graphical-cursor driver for textmode by Tommer Leyvand
- SeeAlso: AX=0101h,AX=0102h,AX=0103h,AX=0104h
- --------M-330101-----------------------------
- INT 33 - GRTMOUSE v1.00+ - SET MOUSE CURSOR SHAPE
- AX = 0101h
- DS:SI -> 16-byte cursor pattern
- Return: CF clear if successful
- SeeAlso: AX=0100h,AX=0102h
- --------M-330102-----------------------------
- INT 33 - GRTMOUSE v1.00+ - GET MOUSE CURSOR SHAPE
- AX = 0102h
- ES:DI -> 16-byte buffer for cursor pattern
- SeeAlso: AX=0100h,AX=0101h
- --------M-330103-----------------------------
- INT 33 - GRTMOUSE v1.00+ - SET ACTIVE CHARACTERS
- AX = 0103h
- CH,CL,DH,DL = ASCII codes to be remapped to display mouse pointer
- Note: the default active characters are D0h,D1h,D6h,D8h; the active
- characters should be in the range C0h to DFh
- SeeAlso: AX=0100h,AX=0104h
- --------M-330104-----------------------------
- INT 33 - GRTMOUSE v1.00+ - GET ACTIVE CHARACTERS
- AX = 0104h
- Return: CH,CL,DH,DL = ASCII codes for the active characters
- SeeAlso: AX=0100h,AX=0103h
- --------M-33012E-----------------------------
- INT 33 - MS MOUSE v8.10+ - ???
- AX = 012Eh
- BL = ???
- Return: AX = 0000h (MS)
- AX = FFFFh (ATI Mouse v7.04)
- Note: not supported by Logitech driver v6.10
- SeeAlso: AX=002Eh,AX=022Eh
- --------M-33022E-----------------------------
- INT 33 - MS MOUSE v8.10+ - ???
- AX = 022Eh
- BL = ???
- Return: AX = 0000h (MS)
- AX = FFFFh (ATI Mouse v7.04)
- Note: not supported by Logitech driver v6.10
- SeeAlso: AX=002Eh,AX=012Eh
- --------M-330666-----------------------------
- INT 33 U - TRUEDOX Mouse driver v4.01 - GET COPYRIGHT STRING
- AX = 0666h
- Return: DX:AX -> ASCII "Copyright 1987-1992 TRUEDOX Technology Corporation"
- Note: this is the mouse driver for the Dell Dimension series of computers,
- by TRUEDOX Technology Corporation
- SeeAlso: AX=004Dh,AX=00A6h,AX=0666h
- --------M-33136C-----------------------------
- INT 33 - LOGITECH MOUSE v6.10+ - ???
- AX = 136Ch
- BX = ???
- Return: AX = ???
- BX = ???
- --------M-33146C-----------------------------
- INT 33 - LOGITECH MOUSE v6.10+ - GET/SET ???
- AX = 146Ch
- BL = function
- 00h set ???
- BH = new value (zero/nonzero to clear/set)
- else get ???
- Return: ???
- --------M-33156C-----------------------------
- INT 33 - LOGITECH MOUSE v6.10+ - GET SIGNATURE AND VERSION STRINGS
- AX = 156Ch
- Return: ES:DI -> signature "LOGITECH MOUSE DRIVER"
- ES:SI -> version string, terminated with CRLF
- --------M-33166C-----------------------------
- INT 33 - LOGITECH MOUSE v6.10+ - ???
- AX = 166Ch
- BL = ???
- 00h ???
- 01h ???
- other ???
- BH = new value of ???
- Return: AX = FFFFh
- --------M-33176C-----------------------------
- INT 33 - LOGITECH MOUSE v6.10+ - ???
- AX = 176Ch
- ???
- Return: ???
- --------M-33186C-----------------------------
- INT 33 - LOGITECH MOUSE v6.10+ - ???
- AX = 186Ch
- ???
- Return: ???
- --------M-33196C-----------------------------
- INT 33 - LOGITECH MOUSE v6.10+ - ???
- AX = 196Ch
- ???
- Return: ???
- --------M-331A6C-----------------------------
- INT 33 - LOGITECH MOUSE v6.10+ - GET ???
- AX = 1A6Ch
- Return: AX = FFFFh
- BX = ???
- CX = ???
- SeeAlso: AX=1B6Ch
- --------M-331B6C-----------------------------
- INT 33 - LOGITECH MOUSE v6.10+ - SET ???
- AX = 1B6Ch
- BX = new value for ??? (0000h-0003h)
- Return: AX = FFFFh
- SeeAlso: AX=1A6Ch
- --------M-331C6C-----------------------------
- INT 33 - LOGITECH MOUSE v6.10+ - ???
- AX = 1C6Ch
- BX = ???
- <42h ???
- =42h ???
- >42h ???
- ES:DI -> ???
- Return: AX = ???
- --------M-331D6C-----------------------------
- INT 33 - LOGITECH MOUSE - GET COMPASS PARAMETER
- AX = 1D6Ch
- Return: BX = direction (0=north, 1=south, 2=east, 3=west)
- SeeAlso: AX=1E6Ch
- --------M-331E6C-----------------------------
- INT 33 - LOGITECH MOUSE - SET COMPASS PARAMETER
- AX = 1E6Ch
- BX = direction (0=north, 1=south, 2=east, 3=west)
- SeeAlso: AX=1D6Ch
- --------M-331F6C-----------------------------
- INT 33 - LOGITECH MOUSE - GET BALLISTICS INFORMATION
- AX = 1F6Ch
- Return: BX = 0=off, 1=on
- CX = 1=low, 2=high
- SeeAlso: AX=002Ch,AX=236Ch
- --------M-33206C-----------------------------
- INT 33 - LOGITECH MOUSE - SET LEFT OR RIGHT PARAMETER
- AX = 206Ch
- BX = parameter (00h = right, FFh = left)
- SeeAlso: AX=216Ch
- --------M-33216C-----------------------------
- INT 33 - LOGITECH MOUSE - GET LEFT OR RIGHT PARAMETER
- AX = 216Ch
- Return: BX = parameter (00h = right, FFh = left)
- SeeAlso: AX=206Ch
- --------M-33226C-----------------------------
- INT 33 - LOGITECH MOUSE - REMOVE DRIVER FROM MEMORY
- AX = 226Ch
- Note: this only frees memory; does not restore hooked interrupts
- --------M-33236C-----------------------------
- INT 33 - LOGITECH MOUSE - SET BALLISTICS INFORMATION
- AX = 236Ch
- BX = 0=off, 1=on
- CX = 1=low, 2=high
- SeeAlso: AX=002Ch,AX=1F6Ch
- --------M-33246C-----------------------------
- INT 33 - LOGITECH MOUSE - GET PARAMETERS AND RESET SERIAL MOUSE
- AX = 246Ch
- ES:DX -> parameter table buffer (see #03190)
- Return: AX = FFFFh if driver installed for serial mouse
- SeeAlso: AX=0000h,AX=256Ch/BX=0000h,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h
- Format of Logitech Mouse parameter table:
- Offset Size Description (Table 03190)
- 00h WORD baud rate divided by 100 (serial mouse only)
- 02h WORD emulation (serial mouse only)
- 04h WORD report rate (serial mouse only)
- 06h WORD firmware revision (serial mouse only)
- 08h WORD 00h (serial mouse only)
- 0Ah WORD port (serial mouse only)
- 0Ch WORD physical buttons
- 0Eh WORD logical buttons
- --------M-33256CBX0000-----------------------
- INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET BAUD RATE (SERIAL MOUSE ONLY)
- AX = 256Ch
- BX = 0000h
- CX = rate (0=1200, 1=2400, 2=4800, 3=9600)
- Return: AX = FFFFh if driver installed for serial mouse
- SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0002h,AX=276Ch
- --------M-33256CBX0001-----------------------
- INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET EMULATION (SERIAL MOUSE ONLY)
- AX = 256Ch
- BX = 0001h
- CX = emulation type (see #03191)
- Return: AX = FFFFh if driver installed for serial mouse
- SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0003h,AX=276Ch
- (Table 03191)
- Values for Logitech mouse emulation type:
- 00h 5 byte packed binary
- 01h 3 byte packed binary
- 02h hexadecimal
- 03h relative bit pad
- 04h not supported
- 05h MM Series
- 06h not supported
- 07h Microsoft
- --------M-33256CBX0002-----------------------
- INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET REPORT RATE (SERIAL MOUSE ONLY)
- AX = 256Ch
- BX = 0002h
- CX = rate (0=10, 1=20, 2=35, 3=50, 4=70, 5=100, 6=150)
- Return: AX = FFFFh if driver installed for serial mouse
- SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h,AX=276Ch
- --------M-33256CBX0003-----------------------
- INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE PORT (SERIAL MOUSE ONLY)
- AX = 256Ch
- BX = 0003h
- CX = port (1, 2)
- Return: AX = FFFFh if driver installed for serial mouse
- SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0004h,AX=276Ch
- --------M-33256CBX0004-----------------------
- INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE LOGICAL BUTTONS
- AX = 256Ch
- BX = 0004h
- CX = buttons (2, 3)
- Return: AX = FFFFh if driver installed for serial mouse
- SeeAlso: AX=246Ch,AX=276Ch
- --------M-33266C-----------------------------
- INT 33 - LOGITECH MOUSE - GET VERSION???
- AX = 266Ch
- Return: BX = 'SS'
- CH = '4' major version number
- CL = '1' minor version number
- SeeAlso: AX=006Dh
- --------M-33276C-----------------------------
- INT 33 - LOGITECH MOUSE - ??? Tries MMSeries, Baud 2400
- AX = 276Ch
- SeeAlso: AX=256Ch
- --------M-333000-----------------------------
- INT 33 - Smooth Mouse Driver, PrecisePoint - INSTALLATION CHECK
- AX = 3000h
- Return: AX = FFFFh if installed
- BX = version number (BH = major, BL = minor)
- Program: SMD is a programmer's library by Andy Hakim which provides a
- graphics-style mouse cursor in text mode. PrecisePoint is an
- SMD-based TSR which replaces the block mouse cursor in text
- applications.
- SeeAlso: AX=0000h,AX=3001h,AX=3003h
- --------M-333001-----------------------------
- INT 33 - Smooth Mouse Driver, PrecisePoint - ENABLE SMOOTH MOUSE
- AX = 3001h
- Return: AX = status (0000h = disabled, 0001h = enabled)
- Note: SMD remains disabled if running under Desqview or in graphics mode
- SeeAlso: AX=0001h,AX=0002h,AX=3002h
- --------M-333002-----------------------------
- INT 33 - Smooth Mouse Driver, PrecisePoint - DISABLE SMOOTH MOUSE
- AX = 3002h
- Return: AX = status (0000h = disabled, 0001h = enabled)
- SeeAlso: AX=0001h,AX=0002h,AX=3000h,AX=3001h
- --------M-333003-----------------------------
- INT 33 - Smooth Mouse Driver, PrecisePoint - GET INFORMATION
- AX = 3003h
- BL = data structure selector
- 00h Primary Bitmap (used for 25 line mode) (see #03192)
- 01h Secondary Bitmap (used for 43/50 line modes) (see #03192)
- 02h Sacrifice Character Map (see #03193)
- 03h Program Information (see #03194)
- Return: ES:DX -> selected data structure
- SeeAlso: AX=3000h
- Format of Primary/Secondary Bitmap [SMD_BITMAP_STRUCT]:
- Offset Size Description (Table 03192)
- 00h BYTE vertical size of bitmap (00h - 10h)
- 01h BYTE horizontal size of bitmap (00h - 10h)
- 02h BYTE vertical hotspot position (00h - 10h)
- 03h BYTE horizontal hotspot position (00h - 10h)
- 04h 16 WORDs cursor bitmap data
- 14h 16 WORDs screen bitmap data
- Format of Sacrifice Character Map [SMD_SMAP_STRUCT]:
- Offset Size Description (Table 03193)
- 00h BYTE bytes are character values (00h-FFh) used in place of the
- 01h BYTE actual character for the corresponding position on the screen
- 02h BYTE +--------------+ occupied by part or all of the mouse
- 03h BYTE | 0h | 1h | 2h | cursor
- 04h BYTE |----+----+----|
- 05h BYTE | 3h | 4h | 5h |
- 06h BYTE |----+----+----|
- 07h BYTE | 6h | 7h | 8h |
- 08h BYTE +--------------+
- Format of Program Information [SMD_INFO_STRUCT]:
- Offset Size Description (Table 03194)
- 00h WORD segment of old interrupt 33h handler
- 02h WORD offset of old interrupt 33h handler
- 04h WORD PSP of SMD
- 06h BYTE ENABLE/DISABLE manual setting status
- 07h BYTE ENABLE/DISABLE internal usage status
- --------M-333004-----------------------------
- INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
- AX = 3004h
- SeeAlso: AX=3000h
- --------M-333005-----------------------------
- INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
- AX = 3005h
- SeeAlso: AX=3000h
- --------M-334F00-----------------------------
- INT 33 - LOGITECH MOUSE v6.10+ - GET ???
- AX = 4F00h
- Return: AX = 004Fh if supported
- BX = ???
- ES:DI -> ???
- SeeAlso: AX=4F01h
- --------M-334F01-----------------------------
- INT 33 - LOGITECH MOUSE v6.10+ - ???
- AX = 4F01h
- ES = ???
- Return: AX = 004Fh if supported
- ES:DI -> ???
- SeeAlso: AX=4F00h
- --------M-336F00-----------------------------
- INT 33 - Hewlett Packard - HP MOUSE DRIVER INSTALLATION CHECK
- AX = 6F00h
- BX <> 4850h
- Return: BX = 4850h ('HP') if mouse driver written by Hewlett Packard
- SeeAlso: INT 10/AX=6F00h,INT 14/AX=6F00h,INT 16/AX=6F00h,INT 17/AX=6F00h
- --------M-338800-----------------------------
- INT 33 U - InfoTrack IMOUSE.COM - UNHOOK MOUSE IRQ
- AX = 8800h
- BX <> FFFFh
- Note: the code is written to expect a subfunction number in AL, but only
- function 00h has been implemented
- SeeAlso: AX=8800h/BX=FFFFh
- --------M-338800BXFFFF-----------------------
- INT 33 U - InfoTrack IMOUSE.COM - GET ACTIVE IRQ
- AX = 8800h
- BX = FFFFh
- Return: BL = number of IRQ being used by the mouse
- SeeAlso: AX=8800h
- --------T-33FFE6-----------------------------
- INT 33 - Switch-It v3.23 - GET ??? PROGRAM
- AX = FFE6h
- CX = length of buffer
- ES:DI -> buffer for program name
- Return: ES:DI buffer filled
- Program: Switch-It is a task switcher supporting up to 100 programs
- simultaneously by Better Software Technology, Inc.
- --------T-33FFE7-----------------------------
- INT 33 - Switch-It v3.23 - GET ???
- AX = FFE7h
- Return: AX = ???
- --------T-33FFE8-----------------------------
- INT 33 - Switch-It v3.23 - ???
- AX = FFE8h
- CX = length of name including terminating NUL
- DS:SI -> ASCIZ program pathname
- --------T-33FFE9-----------------------------
- INT 33 - Switch-It v3.23 - SET ???
- AX = FFE9h
- BX = ???
- --------T-33FFEA-----------------------------
- INT 33 - Switch-It v3.23 - SET ???
- AX = FFEAh
- BL = ???
- --------T-33FFEB-----------------------------
- INT 33 - Switch-It v3.23 - SET ??? FLAG
- AX = FFEBh
- --------T-33FFEC-----------------------------
- INT 33 - Switch-It v3.23 - SET ???
- AX = FFECh
- BL = ???
- --------T-33FFED-----------------------------
- INT 33 - Switch-It v3.23 - GET ???
- AX = FFEDh
- Return: AX = ??? (0001h)
- BX = ???
- Program: Switch-It is a task switcher supporting up to 100 programs
- simultaneously by Better Software Technology, Inc.
- --------T-33FFEE-----------------------------
- INT 33 - Switch-It v3.23 - GET ???
- AX = FFEEh
- Return: AX = ???
- --------T-33FFEF-----------------------------
- INT 33 - Switch-It v3.23 - GET ???
- AX = FFEFh
- Return: BX:AX -> ???
- --------T-33FFF0-----------------------------
- INT 33 - Switch-It v3.23 - SET ???
- AX = FFF0h
- BL = ???
- --------T-33FFF1-----------------------------
- INT 33 - Switch-It v3.23 - GET CONFIGURATION FILE
- AX = FFF1h
- Return: BX:AX -> ASCIZ pathname of configuration file
- Program: Switch-It is a task switcher supporting up to 100 programs
- simultaneously by Better Software Technology, Inc.
- --------T-33FFF2-----------------------------
- INT 33 - Switch-It v3.23 - SET ??? FLAG
- AX = FFF2h
- Return: AL = 01h
- --------T-33FFF3-----------------------------
- INT 33 - Switch-It v3.23 - GET ???
- AX = FFF3h
- Return: AX = ???
- --------T-33FFF4-----------------------------
- INT 33 - Switch-It v3.23 - SET ???
- AX = FFF4h
- BX = ???
- CX = ???
- --------T-33FFF5-----------------------------
- INT 33 - Switch-It v3.23 - GET ???
- AX = FFF5h
- Return: AX = ???
- --------T-33FFF6-----------------------------
- INT 33 - Switch-It v3.23 - GET ???
- AX = FFF6h
- Return: AX = ???
- --------T-33FFF7-----------------------------
- INT 33 - Switch-It v3.23 - GET ???
- AX = FFF7h
- BX = index of ???
- Return: AX = ???
- --------T-33FFF8-----------------------------
- INT 33 - Switch-It v3.23 - ???
- AX = FFF8h
- BX = ???
- CX = length of program name, including terminating NUL
- DS:SI -> ASCIZ program pathname
- Return: ???
- Program: Switch-It is a task switcher supporting up to 100 programs
- simultaneously by Better Software Technology, Inc.
- --------T-33FFF9-----------------------------
- INT 33 - Switch-It v3.23 - NOP
- AX = FFF9h
- --------T-33FFFA-----------------------------
- INT 33 - Switch-It v3.23 - SET ???
- AX = FFFAh
- BX = index of program
- SeeAlso: AX=FFFBh,AX=FFFCh
- --------T-33FFFB-----------------------------
- INT 33 - Switch-It v3.23 - GET ???
- AX = FFFBh
- BX = index of program
- Return: AX = ??? (0000h or 0001h)
- SeeAlso: AX=FFFAh,AX=FFFCh
- --------T-33FFFC-----------------------------
- INT 33 - Switch-It v3.23 - CLEAR ???
- AX = FFFCh
- BX = index of program
- SeeAlso: AX=FFFAh,AX=FFFCh
- --------T-33FFFD-----------------------------
- INT 33 - Switch-It v3.23 - GET MEMORY ADDRESSES???
- AX = FFFDh
- Return: AX = first available segment???
- BX = paragraph of top of conventional memory
- DX = PSP segment of SI.EXE
- --------T-33FFFE-----------------------------
- INT 33 - Switch-It v3.23 - INSTALLATION CHECK
- AX = FFFEh
- Return: BX = ???
- DX = 5349h ("SI")
- --------T-33FFFF-----------------------------
- INT 33 - Switch-It v3.23 - ???
- AX = FFFFh
- BX = ???
- Program: Switch-It is a task switcher supporting up to 100 programs
- simultaneously by Better Software Technology, Inc.
- --------r-34---------------------------------
- INT 34 - FLOATING POINT EMULATION - OPCODE D8h
- Desc: this interrupt is used to emulate floating-point instructions with
- an opcode of D8h
- Note: the floating-point emulators in Borland and Microsoft languages and
- Lahey FORTRAN use this interrupt
- SeeAlso: INT 35,INT 3E
- --------r-35---------------------------------
- INT 35 - FLOATING POINT EMULATION - OPCODE D9h
- Desc: this interrupt is used to emulate floating-point instructions with
- an opcode of D9h
- Note: the floating-point emulators in Borland and Microsoft languages and
- Lahey FORTRAN use this interrupt
- SeeAlso: INT 34,INT 36
- --------r-36---------------------------------
- INT 36 - FLOATING POINT EMULATION - OPCODE DAh
- Desc: this interrupt is used to emulate floating-point instructions with
- an opcode of DAh
- Note: the floating-point emulators in Borland and Microsoft languages and
- Lahey FORTRAN use this interrupt
- SeeAlso: INT 35,INT 37
- --------r-37---------------------------------
- INT 37 - FLOATING POINT EMULATION - OPCODE DBh
- Desc: this interrupt is used to emulate floating-point instructions with
- an opcode of DBh
- Note: the floating-point emulators in Borland and Microsoft languages and
- Lahey FORTRAN use this interrupt
- SeeAlso: INT 36,INT 38
- --------r-38---------------------------------
- INT 38 - FLOATING POINT EMULATION - OPCODE DCh
- Desc: this interrupt is used to emulate floating-point instructions with
- an opcode of DCh
- Note: the floating-point emulators in Borland and Microsoft languages and
- Lahey FORTRAN use this interrupt
- SeeAlso: INT 37,INT 39
- --------O-38---------------------------------
- INT 38 - PC-MOS/386 v3.0 - API
- Note: this API was been moved to INT D4h sometime between versions 3.0 and
- 5.01; v3.0 supported at least functions 02h,04h,0703h,10h,11h, and
- 12h
- SeeAlso: INT D4/AH=02h,INT D4/AH=04h,INT D4/AH=07h,INT D4/AH=10h,INT D4/AH=11h
- --------r-39---------------------------------
- INT 39 - FLOATING POINT EMULATION - OPCODE DDh
- Desc: this interrupt is used to emulate floating-point instructions with
- an opcode of DDh
- Note: the floating-point emulators in Borland and Microsoft languages and
- Lahey FORTRAN use this interrupt
- SeeAlso: INT 38,INT 3A
- --------r-3A---------------------------------
- INT 3A - FLOATING POINT EMULATION - OPCODE DEh
- Desc: this interrupt is used to emulate floating-point instructions with
- an opcode of DEh
- Note: the floating-point emulators in Borland and Microsoft languages and
- Lahey FORTRAN use this interrupt
- SeeAlso: INT 39,INT 3B
- --------r-3B---------------------------------
- INT 3B - FLOATING POINT EMULATION - OPCODE DFh
- Desc: this interrupt is used to emulate floating-point instructions with
- an opcode of DFh
- Note: the floating-point emulators in Borland and Microsoft languages and
- Lahey FORTRAN use this interrupt
- SeeAlso: INT 3A,INT 3C
- --------r-3C---------------------------------
- INT 3C - FLOATING POINT EMULATION - INSTRUCTIONS WITH SEGMENT OVERRIDE
- Notes: the floating-point emulators in Borland and Microsoft languages and
- Lahey FORTRAN use this interrupt
- the generated code is CD 3C xy mm ....
- where xy is a modified ESC instruction and mm is the modR/M byte.
- The xy byte appears to be encoded as
- s s 0 1 1 x x x or s s 0 0 0 x x x
- where "ss" specifies the segment override:
- 00 -> DS:
- 01 -> SS:
- 10 -> CS:
- 11 -> ES:
- SeeAlso: INT 3B,INT 3D
- --------r-3D---------------------------------
- INT 3D - FLOATING POINT EMULATION - STANDALONE FWAIT
- Notes: the floating-point emulators in Borland and Microsoft languages and
- Lahey FORTRAN use this interrupt
- this vector is modified but not restored by Direct Access v4.0, and
- may be left dangling by other programs written with the same version
- of compiled BASIC
- SeeAlso: INT 3C,INT 3E
- --------r-3E---------------------------------
- INT 3E - FLOATING POINT EMULATION - Borland LANGUAGES "SHORTCUT" CALL
- Notes: the two bytes following the INT 3E instruction are the subcode
- (see #03195) and a NOP (90h), except for subcodes DCh and DEh, where
- the second byte is a register count (01h-08h)
- this vector is modified but not restored by Direct Access v4.0, and
- may be left dangling by other programs written with the same version
- of compiled BASIC
- SeeAlso: INT 3D
- (Table 03195)
- Values for Borland floating-point shortcut subcode:
- Subcode Function
- DCh load 8086 stack with 8087 registers; overwrites the 10*N bytes at the
- top of the stack prior to the INT 3E with the 8087 register contents
- DEh load 8087 registers from top of 8086 stack; ST0 is furthest from top
- of 8086 stack
- E0h round TOS and R1 to single precision, compare, pop twice
- returns AX=8087 status word, FLAGS=8087 condition bits
- E2h round TOS and R1 to double precision, compare, pop twice
- returns AX=8087 status word, FLAGS=8087 condition bits
- Note: buggy in TPas5.5, because it sets the 8087 precision control
- field to the undocumented value 01h; this results in actually
- rounding to single precision
- E4h compare TOS/R1 with two POP's
- returns FLAGS=8087 condition bits
- E6h compare TOS/R1 with POP
- returns FLAGS=8087 condition bits
- E8h FTST (check TOS value)
- returns FLAGS=8087 condition bits
- EAh FXAM (check TOS value)
- returns AX=8087 status word
- ECh sine(ST0)
- EEh cosine(ST0)
- F0h tangent(ST0)
- F2h arctangent(ST0)
- F4h ST0 = ln(ST0)
- F6h ST0 = log2(ST0)
- F8h ST0 = log10(ST0)
- FAh ST0 = e**ST0
- FCh ST0 = 2**ST0
- FEh ST0 = 10**ST0
- --------r-3F---------------------------------
- INT 3F - Overlay manager interrupt (Microsoft LINK.EXE, Borland TLINK VROOMM)
- Notes: INT 3F is the default, and may be overridden while linking
- this vector is modified but not restored by Direct Access v4.0, and
- may be left dangling by other programs written with the same version
- of compiled BASIC
- SeeAlso: INT FE"OVERLAY"
- --------r-3F---------------------------------
- INT 3F - Microsoft Dynamic Link Library manager
- SeeAlso: INT 21/AH=4Bh
- --------B-40---------------------------------
- INT 40 - DISKETTE - ROM BIOS DISKETTE HANDLER RELOCATED BY HARD DISK BIOS
- SeeAlso: INT 13/AH=00h,INT 13/AH=02h,INT 47"SuperBIOS",INT 63"Adaptec"
- --------h-40---------------------------------
- INT 40 - Z100 - Master 8259 - Parity error or S100 error
- SeeAlso: INT 41"Z100",INT FF"Z100"
- --------O-40---------------------------------
- INT 40 - Acorn BBC Master 512 - "OSFIND" - OPEN FILE
- AL = operation
- 00h close file
- 40h open file for reading
- 80h open file for writing
- C0h open file for random access
- DS:BX -> CR-terminated filename
- Return: AL = file handle (00h if file closed or could not be opened)
- Note: the Acorn BBC Master 512 is an 80186-based add-on board for the
- 6502-based Master 128 which uses the original CPU as an I/O processor
- SeeAlso: INT 41"Acorn",INT 42"Acorn",INT 43"Acorn",INT 44"Acorn",INT 4C"Acorn"
- --------h-40---------------------------------
- INT 40 - TI Professional PC - IRQ0
- Note: on the TI Pro, IRQ0 is connected to the same pin on the expansion bus
- that IBM connects to IRQ2
- SeeAlso: INT 0A"IRQ2",INT 41"TI Professional"
- --------B-41---------------------------------
- INT 41 - SYSTEM DATA - HARD DISK 0 PARAMETER TABLE ADDRESS [NOT A VECTOR!]
- Notes: the default parameter table array is located at F000h:E401h in 100%
- compatible BIOSes; the pointer may be overridden by the hard disk
- controller's BIOS to support drive formats unknown to the ROM BIOS
- not used by some PS/2 models
- BIOSes which support four hard drives may store the parameter tables
- for drives 81h-83h immediately following the parameter table pointed
- at by INT 41, with a separate copy of the drive 81h table for INT 46.
- The check for such an arrangement is to test whether INT 46 points
- somewhere other than exactly 16 bytes past INT 41, and the sixteen
- bytes starting at offset 10h from INT 41 are identical to the sixteen
- bytes pointed at by INT 46
- another arrangement for BIOSes which support four IDE drives is to have
- four tables pointed at by INT 41 in the order primary master,
- primary slave, secondary master, and secondary slave, in which case
- (for example) a system with only primary master and secondary master
- will have valid tables at offsets 00h and 20h, with garbage (but
- sectors-per-track = 00h) at offsets 10h and 30h
- SeeAlso: #03196,INT 13/AH=09h,INT 1E,INT 46"HARD DISK 1",INT 60"Adaptec"
- SeeAlso: INT C0"AMI"
- Format of fixed disk parameters:
- Offset Size Description (Table 03196)
- 00h WORD number of cylinders
- 02h BYTE number of heads
- 03h WORD starting reduced write current cylinder (XT only, 0 for others)
- 05h WORD starting write precompensation cylinder number
- 07h BYTE maximum ECC burst length (XT only)
- 08h BYTE control byte (see #03197,#03198)
- 09h BYTE standard timeout (XT only, 0 for others)
- 0Ah BYTE formatting timeout (XT and WD1002 only, 0 for others)
- 0Bh BYTE timeout for checking drive (XT and WD1002 only, 0 for others)
- 0Ch WORD cylinder number of landing zone (AT and later only)
- 0Eh BYTE number of sectors per track (AT and later only)
- 0Fh BYTE reserved
- SeeAlso: #00273,#00277
- Bitfields for XT fixed disk control byte:
- Bit(s) Description (Table 03197)
- 2-0 drive step speed
- 000 3ms
- 100 200ms
- 101 70ms (default)
- 110 3ms
- 111 3ms
- 5-3 unused
- 6 disable ECC retries
- 7 disable access retries
- Bitfields for AT fixed disk control byte:
- Bit(s) Description (Table 03198)
- 0 unused
- 1 reserved (0) (disable IRQ)
- 2 reserved (0) (no reset)
- 3 set if more than 8 heads
- 4 always 0
- 5 set if manufacturer's defect map on max cylinder+1 (AT and later only)
- 6 disable ECC retries
- 7 disable access retries
- --------h-41---------------------------------
- INT 41 - Z100 - Master 8259 - Processor Swap
- SeeAlso: INT 40"Z100",INT 42"Z100"
- --------h-41---------------------------------
- INT 41 - TI Professional PC - IRQ1
- Note: on the TI Pro, IRQ1 is connected to the same pin on the expansion bus
- that IBM connects to IRQ3
- SeeAlso: INT 0B"IRQ3",INT 40"TI Professional",INT 42"TI Professional"
- --------O-41---------------------------------
- INT 41 - Acorn BBC Master 512 - "OSGBPB" - MULTI-BYTE GET/PUT
- AL = function
- 01h put bytes sequentially
- 02h put bytes, ignoring sequential pointer
- 03h get bytes sequentially
- 04h get bytes, ignoring sequential pointer
- 05h get media title and boot option
- 06h get current device and directory
- 07h get current library and device
- 08h search directory
- DS:BX -> control block (see #03199)
- Return: CF clear if successful
- CF set on error
- AL = 00h if operation attempted
- AL unchanged if unsupported function
- SeeAlso: INT 40"Acorn",INT 42"Acorn",INT 43"Acorn"
- Format of BBC Master control block:
- Offset Size Description (Table 03199)
- 00h BYTE file handle
- 01h DWORD pointer to data in either I/O processor or Tube processor
- 05h DWORD number of bytes to be transferred
- 09h DWORD transfer address
- --------G-410000-----------------------------
- INT 41 CPU - MS Windows debugging kernel - OUTPUT CHARACTER FOR USER
- AX = 0000h
- DS:DX -> character
- Note: the kernel calls this function when it wants the user program to
- output a character
- SeeAlso: AX=0001h
- --------G-410001-----------------------------
- INT 41 CPU - MS Windows debugging kernel - INPUT CHARACTER
- AX = 0001h
- Return: AL = character
- Note: the kernel calls this function when it needs to input a character
- SeeAlso: AX=0000h
- --------G-41000D-----------------------------
- INT 41 CPU - MS Windows debugging kernel - TASK GOING OUT
- AX = 000Dh
- SeeAlso: AX=000Eh
- --------G-41000E-----------------------------
- INT 41 CPU - MS Windows debugging kernel - TASK COMING IN
- AX = 000Eh
- SeeAlso: AX=000Dh
- --------G-410012-----------------------------
- INT 41 CPU - MS Windows debugging kernel - "OutputDebugString"
- AX = 0012h
- DS:SI -> string (Windows 3.0)
- ES:SI -> string (Windows 3.1)
- Return: nothing???
- Note: this function is called by the kernel when it wants to output a
- string through the debugger
- SeeAlso: AX=0050h,INT 68/AH=47h
- --------G-41004F-----------------------------
- INT 41 CPU - MS Windows debugging kernel - DEBUGGER INSTALLATION CHECK
- AX = 004Fh
- Return: AX = F386h if debugger is present
- SeeAlso: INT 68/AX=4400h
- --------G-410050-----------------------------
- INT 41 P - MS Windows debugging kernel - "DefineDebugSegment"
- AX = 0050h
- BX = segment number in executable (0-based)
- CX = selector
- DX = instance handle
- SI = segment flags (0=code, 1=data)
- ES:DI -> module name of owner
- Return: ???
- SeeAlso: AX=0012h,AX=004Fh
- --------G-410051-----------------------------
- INT 41 CPU - MS Windows debugging kernel - MOVE SEGMENT
- AX = 0051h
- ???
- Return: ???
- SeeAlso: AX=0050h,AX=0052h
- --------G-410052-----------------------------
- INT 41 CPU - MS Windows debugging kernel - FREE SEGMENT
- AX = 0052h
- BX = freed selector
- SeeAlso: AX=0050h,AX=0051h,AX=005Ch
- --------G-410059-----------------------------
- INT 41 CPU - MS Windows debugging kernel - LOAD TASK
- AX = 0059h
- ???:BX = CS:IP of new task's starting point
- --------G-41005C-----------------------------
- INT 41 CPU - MS Windows debugging kernel - FREE INITIAL SEGMENT
- AX = 005Ch
- BX = freed selector
- Note: called only when KERNEL starts, once for CS and once for the DS alias
- to CS
- SeeAlso: AX=0052h
- --------G-410060-----------------------------
- INT 41 CPU - MS Windows debugging kernel - END OF SEGMENT LOAD
- AX = 0060h
- ???
- Return: ???
- SeeAlso: AX=0061h
- --------G-410061-----------------------------
- INT 41 CPU - MS Windows debugging kernel - END OF SEGMENT DISCARD
- AX = 0061h
- ???
- Return: ???
- SeeAlso: AX=0060h
- --------G-410062-----------------------------
- INT 41 CPU - MS Windows debugging kernel - APPLICATION TERMINATING
- AX = 0062h
- STACK: BYTE exit code
- Return: ???
- STACK unchanged???
- SeeAlso: AX=0064h
- --------G-410063-----------------------------
- INT 41 CPU - MS Windows debugging kernel - ASYNCHRONOUS STOP (Ctrl-Alt-SysReq)
- AX = 0063h
- --------G-410064-----------------------------
- INT 41 CPU - MS Windows debugging kernel - DLL LOADED
- AX = 0064h
- CX:BX = DLL entry point CS:IP
- SI = module handle
- SeeAlso: AX=0062h,AX=0065h
- --------G-410065-----------------------------
- INT 41 CPU - MS Windows debugging kernel - MODULE REMOVED
- AX = 0065h
- ES = module handle
- SeeAlso: AX=0064h
- --------G-410066-----------------------------
- INT 41 CPU - MS Windows debugging kernel - ERROR
- AX = 0066h
- Note: called by LogError()
- SeeAlso: AX=0067h
- --------G-410067-----------------------------
- INT 41 CPU - MS Windows debugging kernel - PARAMETER ERROR
- AX = 0067h
- Note: called by LogParamError()
- SeeAlso: AX=0066h
- --------V-42---------------------------------
- INT 42 - VIDEO - RELOCATED DEFAULT INT 10 VIDEO SERVICES (EGA,VGA)
- Desc: contains the address of the original INT 10 handler which an EGA+
- video adapter replaces with its own on-board BIOS code
- SeeAlso: INT 10/AH=00h,INT 10/AH=0Eh,INT 6D"VGA"
- Note: not used by PS/2 built-in VGA or XGA
- --------h-42---------------------------------
- INT 42 - Z100 - Master 8259 - Timer
- SeeAlso: INT 41"Z100",INT 43"Z100"
- --------h-42---------------------------------
- INT 42 - TI Professional PC - IRQ2
- Note: on the TI Pro, IRQ0 is connected to the same pin on the expansion bus
- that IBM connects to IRQ4
- SeeAlso: INT 0C"IRQ4",INT 41"TI Professional",INT 43"TI Professional"
- --------b-42---------------------------------
- INT 42 - Western Digital WD1002 SuperBIOS - INT 40 CASCADE
- Note: if the second WD1002 controller in the system finds INT 40 already in
- use, it uses this vector to cascade to the first controller's BIOS
- SeeAlso: INT 40"DISKETTE",INT 47"SuperBIOS"
- --------O-42---------------------------------
- INT 42 - Acorn BBC Master 512 - "OSBPUT" - WRITE SINGLE BYTE TO FILE
- AL = byte to be written
- BH = file handle
- Return: flags destroyed
- SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
- --------V-425F33-----------------------------
- INT 42 C - Chips & Technologies '65530' BIOS - MODE SET HOOK
- AX = 5F33h
- BL = current width in characters
- BH = curent video mode
- CH = active display page
- Return: nothing
- Desc: this function is called at the end of a video mode set
- Note: the OEM has the option of enabling or disabling this callout, as well
- as specifying whether the callout occurs on INT 15h or INT 42h
- SeeAlso: INT 15/AX=5F31h,INT 15/AX=5F35h,INT 10/AX=5F50h,INT 15/AX=5F33h
- --------V-427500-----------------------------
- INT 42 U - Toshiba laptops - ???
- AX = 7500h
- BL = ??? (00h or 01h)
- Return: ???
- Note: used by Toshiba utility VCHAD.EXE
- SeeAlso: AX=7501h,AX=7503h
- --------V-427501-----------------------------
- INT 42 U - Toshiba laptop - GET ??? DATA
- AX = 7501h
- DS:DI -> data area to be filled ???
- Return: area filled with data ???
- Note: used by Toshiba utility VCHAD.EXE
- SeeAlso: AX=7500h,AX=7502h,AX=7503h
- --------V-427502-----------------------------
- INT 42 U - Toshiba laptops - SET ??? DATA
- AX = 7502h
- DS:DI -> data area ???
- Return: ???
- Note: used by Toshiba utility VCHAD.EXE
- SeeAlso: AX=7501h,AX=7503h
- --------V-427503-----------------------------
- INT 42 - Toshiba laptops - GET DISPLAY STATUS
- AX = 7503h
- Return: AX = 7575h if supported
- CX = 0001h if supported
- BH = display type (00h color, 03h monochrome)
- BL = display state
- 01h internal LCD display is active
- 02h external VGA display is active
- 03h both displays active / DeskStation display mode enabled
- (not possible on all machines)
- Note: used by VCHAD.EXE and supported by all Toshiba VGA laptops until about
- 1994 (string "TOSHIBA " at F000:E010h should be checked before call)
- no longer supported by T21xx series, use INT 10/AX=5F50h instead
- INT 42 normally points to F000:F065h but may be redirected by QEMM386
- SeeAlso: AX=7500h,AX=7504h,INT 10/AX=5F50h,INT 15/AH=C0h
- --------V-427504-----------------------------
- INT 42 U - Toshiba laptops - ???
- AX = 7504h
- BL = ???
- Return: BH = ???
- Note: used by Toshiba utility VCHAD.EXE
- SeeAlso: AX=7500h,AX=7503h
- --------V-43---------------------------------
- INT 43 - VIDEO DATA - CHARACTER TABLE (EGA,MCGA,VGA)
- Desc: points at graphics data for characters 00h-7Fh of the current font
- in 8x8 dot modes, graphics data for all characters in 8x14 and 8x16
- modes
- Note: this is not a callable vector!
- SeeAlso: INT 06"no-name",INT 1F"SYSTEM DATA",INT 44"VIDEO"
- --------h-43---------------------------------
- INT 43 - Z100 - Master 8259 - Slave 8259 input
- Note: slave runs in special fully nested mode
- SeeAlso: INT 42"Z100",INT 44"Z100"
- --------h-43---------------------------------
- INT 43 - TI Professional PC - IRQ3 - TIMER1 25ms INTERVAL INTERRUPT
- SeeAlso: INT 0B"IRQ3",INT 42"TI Professional",INT 44"TI Professional"
- SeeAlso: INT 58"TI Professional"
- --------O-43---------------------------------
- INT 43 - Acorn BBC Master 512 - "OSBGET" - READ SINGLE BYTE FROM FILE
- BH = file handle
- Return: CF clear if successful
- AL = byte read from file
- CF set on error
- SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 42"Acorn",INT 46"Acorn"
- --------V-44---------------------------------
- INT 44 - VIDEO DATA - ROM BIOS CHARACTER FONT, CHARACTERS 00h-7Fh (PCjr)
- Desc: this vector points at graphics data for current character font
- SeeAlso: INT 1F"SYSTEM DATA",INT 43"VIDEO"
- --------N-44---------------------------------
- INT 44 - Novell NetWare - HIGH-LEVEL LANGUAGE API
- --------I-44---------------------------------
- INT 44 - IBM 3270-PC High Level Language API
- DS:SI -> parameter control block
- --------h-44---------------------------------
- INT 44 - Z100 - Master 8259 - Serial A
- SeeAlso: INT 43"Z100",INT 45"Z100"
- --------h-44---------------------------------
- INT 44 - TI Professional PC - IRQ4
- Note: on the TI Pro, IRQ4 is connected to the same pin on the expansion bus
- that IBM connects to IRQ5
- SeeAlso: INT 0D"IRQ5",INT 43"TI Professional",INT 45"TI Professional"
- --------v-44---------------------------------
- INT 44 - VIRUS - "Lehigh" - ORIGINAL INT 21h VECTOR
- SeeAlso: INT 32"VIRUS",INT 60"VIRUS",INT 70"VIRUS",INT 9E"VIRUS"
- --------O-4400-------------------------------
- INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
- AH = 00h
- AL = function
- 00h get current filing system
- Return: AL = filing system (see #03200)
- 01h get address of commandline tail
- Return: BX buffer filled with address of command tail in I/O
- processor address space (use INT 4A/AL=05h to
- retrieve)
- FFh flush all files onto secondary storage
- BX -> 4-byte data buffer
- Note: the commandline tail is terminated with a carriage return (0Dh)
- SeeAlso: INT 40"Acorn",INT 45"Acorn"
- (Table 03200)
- Values for BBC Master filing system:
- 00h none
- 01h 1200 bps cassette
- 02h 300 bps cassette
- 03h ROM FS
- 04h DFS
- 05h ANFS/NFS
- 06h TFS
- 08h ADFS
- --------O-44---------------------------------
- INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
- AH = nonzero file handle
- AL = function
- 00h get sequential pointer for file
- 01h set sequential pointer for file
- 02h get length of file
- BX -> 4-byte data buffer
- Return: BX buffer updated if appropriate
- SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44/AH=00h,INT 45"Acorn",INT 4A"Acorn"
- --------h-45---------------------------------
- INT 45 - Z100 - Master 8259 - Serial B
- SeeAlso: INT 44"Z100",INT 46"Z100"
- --------h-45---------------------------------
- INT 45 - TI Professional PC - IRQ5
- Note: on the TI Pro, IRQ5 is connected to the same pin on the expansion bus
- that IBM connects to IRQ6
- SeeAlso: INT 0E"IRQ6",INT 44"TI Professional",INT 46"TI Professional"
- --------O-45---------------------------------
- INT 45 - Acorn BBC Master 512 - "OSFILE" - READ/WRITE FILE OR DIRECTORY INFO
- AL = function
- 00h save block of memory as file
- 01h update directory entry for existing file
- 02h set load address for existing file
- 03h set execution address for existing file
- 04h set attributes for existing file
- 05h read directory
- 06h delete file
- FFh load file
- DS:BX -> control block (see #03201)
- Return: FLAGS destroyed
- AL = file type
- 00h not found
- 01h file found
- 02h directory found
- FFh protected file
- SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44"Acorn",INT 46"Acorn"
- Format of BBC Master control block:
- Offset Size Description (Table 03201)
- 00h WORD address of CR-terminated filename
- 02h DWORD load address of file
- 06h DWORD execution address of file
- 0Ah DWORD start address of data to save
- 0Eh DWORD end address of data to save, or file attributes
- file attributes in low byte (see #03202)
- other three bytes are filing-system specific file attributes
- Bitfields for BBC Master file attributes:
- Bit(s) Description (Table 03202)
- 0 no owner read access
- 1 no owner write access
- 2 not executable by owner
- 3 not deletable by owner
- 4 no public read access
- 5 no public write access
- 6 not executable with public access
- 7 not deletable with public access
- --------B-46---------------------------------
- INT 46 - SYSTEM DATA - HARD DISK 1 DRIVE PARAMETER TABLE ADDRESS [NOT A VECTOR!]
- Note: not used by some PS/2 models
- SeeAlso: INT 13/AH=09h,INT 41"HARD DISK 0",INT 60"Adaptec",INT C0"AMI"
- --------h-46---------------------------------
- INT 46 - Z100 - Master 8259 - Keyboard, Retrace, and Light Pen
- SeeAlso: INT 45"Z100",INT 47"Z100"
- --------h-46---------------------------------
- INT 46 - TI Professional PC - IRQ6 - FLOPPY DISK CONTROLLER
- Note: on the TI Pro, IRQ6 is connected to the same pin on the expansion bus
- that IBM connects to IRQ7
- SeeAlso: INT 0F"IRQ7",INT 45"TI Professional",INT 47"TI Professional"
- --------O-46---------------------------------
- INT 46 - Acorn BBC Master 512 - "OSRDCH" - GET CHARACTER FROM CUR INPUT STREAM
- Return: CF clear if successful
- AL = character read
- CF set on error
- AL = error code
- SeeAlso: INT 40"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
- --------h-47---------------------------------
- INT 47 - Z100 - Master 8259 - Printer
- SeeAlso: INT 46"Z100",INT 48"Z100"
- --------h-47---------------------------------
- INT 47 - TI Professional PC - IRQ7 - KEYBOARD USART
- SeeAlso: INT 09"IRQ1",INT 46"TI Professional"
- --------O-47---------------------------------
- INT 47 - Acorn BBC Master 512 - "OSWRCH" - WRITE CHARACTER TO CUR OUTPUT STREAM
- AL = character to be written
- Return: FLAGS destroyed
- SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 49"Acorn"
- --------b-47---------------------------------
- INT 47 - Western Digital WD1002-27X SuperBIOS - INT 40 CASCADE
- Desc: used by the second WD1002-27X controller to cascade to the first
- controller's INT 40
- SeeAlso: INT 40"DISKETTE",INT 42"SuperBIOS",INT 48"SuperBIOS"
- ----------478000-----------------------------
- INT 47 - SQL Base - DATABASE ENGINE API
- AX = 8000h
- DS:BX -> parameter block, first word is function number (see #03203)
- Program: SQL Base is a network-oriented database engine by Gupta Technologies
- SeeAlso: AX=8001h
- (Table 03203)
- Values for SQL Base function number:
- 01h "SQLFINI" initalialize application's use of the database
- 02h "SQLFDON" application is done using the database
- 03h "SQLFCON" connect to a cursor/database
- 04h "SQLFDIS" disconnect from a cursor/database
- 05h "SQLFCOM" compile a SQL command
- 06h "SQLFEXE" execute a SQL command
- 07h "SQLFCEX" compile and execute a SQL command
- 08h "SQLFCMT" commit a transaction to the database
- 09h "SQLFDES" describe the items of a SELECT statement
- 0Ah "SQLFGFI" get fetch information
- 0Bh "SQLFFBK" fetch previous result row from SELECT statement
- 0Ch "SQLFFET" fetch next result row from SELECT statement
- 0Dh "SQLFEFB" enable fetch backwards
- 0Eh "SQLFPRS" position in result set
- 0Fh "SQLFURS" undo result set
- 10h "SQLFNBV" get number of bind variables
- 11h "SQLFBND" bind data variables
- 12h "SQLFBNN" bind numerics
- 13h "SQLFBLN" bind long number
- 14h "SQLFBLD" bind long data variables
- 15h "SQLFSRS" start restriction set processing
- 16h "SQLFRRS" restart restriction set processing
- 17h "SQLFCRS" close restriction set
- 18h "SQLFDRS" drop restriction set
- 19h "SQLFARF" apply Roll Forward journal
- 1Ah "SQLFERF" end Roll Forward journal
- 1Bh "SQLFSRF" start Roll Forward journal
- 1Ch "SQLFSTO" store a compiled SQL command
- 1Dh "SQLFRET" retrieve a compiled SQL command
- 1Eh "SQLFDST" drop a stored command
- 1Fh "SQLFCTY" get command type
- 20h "SQLFEPO" get error position
- 21h "SQLFGNR" get number of rows
- 22h "SQLFNSI" get number of select items
- 23h "SQLFRBF" get Roll Back flag
- 24h "SQLFRCD" get return code
- 25h "SQLFROW" get number of ROWs
- 26h "SQLFSCN" set cursor name
- 27h "SQLFSIL" set isolation level
- 28h "SQLFSLP" set log parameters
- 29h "SQLFSSB" set select buffer
- 2Ah "SQLFSSS" set sort space
- 2Bh "SQLFRLO" read long
- 2Ch "SQLFWLO" write long
- 2Dh "SQLFLSK" long seek
- 2Eh "SQLFGLS" get long size
- 2Fh "SQLFELO" end long operation
- 30h "SQLFRBK" roll back a transaction from the database
- 31h "SQLFERR" error message
- 32h "SQLFCPY" copy
- 33h "SQLFR01" reserved
- 34h "SQLFSYS" system
- 35h "SQLFSTA" statistics
- 36h "SQLFR02" reserved
- 37h "SQLFXAD" extra add
- 38h "SQLFXCN" extra character to number
- 39h "SQLFXDA" extra date add
- 3Ah "SQLFXDP" extra date picture
- 3Bh "SQLFXDV" extra divide
- 3Ch "SQLFXML" extra multiply
- 3Dh "SQLFXNP" extra number picture
- 3Eh "SQLFXPD" extra picture date
- 3Fh "SQLFXSB" extra subtract
- 40h "SQLFINS" install database
- 41h "SQLFDIN" deinstall database
- 42h "SQLFDIR" directory of databases
- 43h "SQLFTIO" timeout
- 44h "SQLFFQN" get fully qualified column name
- 45h "SQLFEXP" explain execution plan
- 46h "SQLFFER" get full error
- 47h "SQLFBKP" begin online backup
- 48h "SQLFRDC" read backup data chunk
- 49h "SQLFEBK" end backup
- 4Ah "SQLFRES" begin restore from backup
- 4Bh "SQLFWDC" write backup data chunk for restore
- 4Ch "SQLFRRD" recover restored database to consistent state
- 4Dh "SQLFERS" end restore
- 4Eh "SQLFNRR" return number of result set rows
- 4Fh "SQLFSTR" start restriction mode
- 50h "SQLFSPR" stop restriction mode
- 51h "SQLFCNC" connect 2
- 52h "SQLFCNR" connect with no recovery
- 53h "SQLFOMS" set output message size
- 54h "SQLFIMS" set input message size
- 55h "SQLFSCP" set cache pages
- 56h "SQLFDSC" describe items of a SELECT statement (external)
- 57h "SQLFLAB" get label info for items in SELECT statement
- 58h "SQLFCBV" clear bind variables
- 59h "SQLFGET" get database information
- 5Ah "SQLFSET" set database information
- 5Bh "SQLFTEC" translate error code
- ----------478001-----------------------------
- INT 47 - SQL Base - GET VERSION NUMBER
- AX = 8001h
- Return: ???
- Program: SQL Base is a network-oriented database engine by Gupta Technologies
- SeeAlso: AX=8000h
- --------B-48---------------------------------
- INT 48 - KEYBOARD - CORDLESS KEYBOARD TRANSLATION (PCjr)
- SeeAlso: INT 49"PCjr"
- --------h-48---------------------------------
- INT 48 - Z100 - Slave 8259 - S100 vectored line 0
- SeeAlso: INT 47"Z100",INT 49"Z100"
- --------N-48---------------------------------
- INT 48 - Watstar PC Network data pointer 1
- SeeAlso: INT 49"Watstar"
- --------O-48---------------------------------
- INT 48 - Acorn BBC Master 512 - "OSNEWL" - SEND NEWLINE TO OUTPUT STREAM
- Return: FLAGS destroyed
- Note: writes a carriage return (0Dh) followed by a linefeed (0Ah)
- SeeAlso: INT 40"Acorn",INT 47"Acorn",INT 49"Acorn"
- --------b-48---------------------------------
- INT 48 - Western Digital WD1002-27X SuperBIOS - DRIVE DATA (NOT A VECTOR!)
- Note: the second WD1002-27X controller in a system uses the low byte to
- store the number of drives controlled by the second controller,
- and the high word for temporary storage during track recalculation;
- the first controller uses offsets 74h-77h in the BIOS data area
- (refer to MEMORY.LST) to store data
- SeeAlso: INT 47"SuperBIOS"
- --------V-48---------------------------------
- INT 48 U - Compaq UILIB.EXE - API
- AX = function (see #03204)
- BX = call type (0002h) (see #03207)
- ???
- Return: ???
- Note: returns AX=FFFFh if 1000h<=AX<=2000h and AX is not one of the functions
- listed below
- SeeAlso: AX=1A70h
- (Table 03204)
- Values for valid UILIB function number:
- 1000h 1160h 12D0h 1430h 1570h 1680h 17F0h 1920h 1A90h
- 1010h 1170h 12E0h 1440h 1578h 1690h 1800h 1930h 1AA0h
- 1020h 1180h 12F0h 1450h 1580h 16A0h 1810h 1940h
- 1030h 1190h 1300h 1460h 1590h 16B0h 1820h 1950h
- 1040h 11A0h 1310h 1470h 1594h 16C0h 1830h 1960h
- 1050h 11B0h 1320h 1480h 1598h 16D0h 1840h 1970h
- 1060h 11C0h 1330h 1490h 15A0h 16E0h 1848h 1980h
- 1070h 11D0h 1340h 14A0h 15B0h 16F0h 1850h 1990h
- 1080h 11E0h 1350h 14B0h 15C0h 1700h 1860h 19A0h
- 1090h 11F0h 1360h 14B8h 15D0h 1710h 1870h 19B0h
- 1095h 1200h 1370h 14BBh 15D4h 1720h 1878h 19C0h
- 1098h 1210h 1380h 14C0h 15D8h 1730h 1880h 19D0h
- 10A0h 1220h 1390h 14D0h 15E0h 1735h 1890h 19E0h
- 10C0h 1230h 13A0h 14E0h 15F0h 1740h 1898h 19F0h
- 10D0h 1240h 13B0h 14F0h 1600h 1750h 18A0h 1A00h
- 10E0h 1250h 13B8h 1500h 1610h 1770h 18B0h 1A10h
- 10F0h 1260h 13C0h 1508h 1620h 1780h 18C0h 1A20h
- 1100h 1270h 13D0h 1510h 1630h 1790h 18D0h 1A30h
- 1110h 1280h 13E0h 1520h 1640h 17A0h 18E0h 1A40h
- 1120h 1290h 13F0h 1530h 1650h 17B0h 18F0h 1A50h
- 1130h 12A0h 1400h 1540h 1660h 17C0h 1900h 1A60h
- 1140h 12B0h 1410h 1550h 1664h 17D0h 1909h 1A70h
- 1150h 12C0h 1420h 1560h 1670h 17E0h 1910h 1A80h
- --------b-4800-------------------------------
- INT 48 - TI Professional PC - SPEAKER DEVICE - SOUND SPEAKER
- AH = 00h
- AL = number of 25ms ticks sound should last
- Return: nothing
- Desc: sound the speaker at the current frequency setting (see AH=02h) for
- the indicated duration
- Notes: this function returns immediately; the sound is terminated by the
- timer interrupt handler
- if a new sound is requested while one is already in progress, the
- previous sound is terminated immediately and the new sound takes
- its place
- SeeAlso: AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
- SeeAlso: INT 40"TI Professional",INT 49/AH=01h"TI"
- SeeAlso: INT 4A/AH=00h"TI",INT 4C"TI Professional",INT 4D/AH=00h
- --------b-4801-------------------------------
- INT 48 - TI Professional PC - SPEAKER DEVICE - CHECK SPEAKER STATUS
- AH = 01h
- Return: ZF clear if speaker is currently on
- ZF set if speaker is currently off
- SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
- --------b-4802-------------------------------
- INT 48 - TI Professional PC - SPEAKER DEVICE - SET SPEAKER FREQUENCY
- AH = 02h
- CX = frequency divisor (freq = 1250000 / CX)
- Return: nothing
- SeeAlso: AH=00h,AH=01h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
- --------b-4803-------------------------------
- INT 48 - TI Professional PC - SPEAKER DEVICE - TURN ON SPEAKER
- AH = 03h
- Return: nothing
- Desc: turn on the speaker at the current frequency, leaving it on until
- explicitly turned off with AH=04h or the end of a subsequent
- AH=00h
- SeeAlso: AH=00h,AH=01h,AH=02h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
- --------b-4804-------------------------------
- INT 48 - TI Professional PC - SPEAKER DEVICE - TURN OFF SPEAKER
- AH = 04h
- Return: nothing
- SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
- --------b-4805-------------------------------
- INT 48 - TI Professional PC - SPEAKER DEVICE - DELAY
- AH = 05h
- CX = desired delay in milliseconds
- Return: after delay expires
- Note: the delay is only approximate, and may be longer than requested
- SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
- --------b-4806-------------------------------
- INT 48 - TI Professional PC - CALCULATE CRC
- AH = 06h
- ES:BX -> memory block for which to calculate CRC
- BP = size of block in bytes
- Return: DX = CRC for block
- ZF set if DX = 0000h
- Note: if the CRC of a memory block is appended to the block, then the CRC
- of the block plus CRC should equal 0000h
- SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
- --------b-4807-------------------------------
- INT 48 - TI Professional PC - PRINT ROM MESSAGE
- AH = 07h
- SI = offset of ASCIZ message string within segment F400h
- Return: nothing
- SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
- --------b-4808-------------------------------
- INT 48 - TI Professional PC - DISPLAY SYSTEM ERROR MESSAGE
- AH = 08h
- BX = error number
- Return: nothing
- Desc: displays the error message " ** System Error ** - xxxx" where xxxx is
- the hexadecimal value in BX
- SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
- --------b-4809-------------------------------
- INT 48 - TI Professional PC - GET SYSTEM CONFIGURATION DATA
- AH = 09h
- Return: ES:BX -> system configuration word (see #03227)
- SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
- --------b-480A-------------------------------
- INT 48 - TI Professional PC - GET EXTRA SYSTEM CONFIGURATION INFO ADDRESS
- AH = 0Ah
- Return: ES:BX -> configuration information (see #03205)
- SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Bh
- Format of TI Professional PC extra system configuration information:
- Offset Size Description (Table 03205)
- -3 WORD memory size in paragraphs
- 00h BYTE drive type byte (see #03206)
- 01h WORD extra system configuration word 1
- bit 0: 8087 is present
- bits 15-1: reserved (0)
- 03h WORD extra system configuration word 2
- bits 15-0: reserved (0)
- Bitfields for TI Professional PC drive type byte:
- Bit(s) Description (Table 03206)
- 0 drive A is double-sided
- 1 drive A has 80 tracks instead of 40
- 2 drive B is double-sided
- 3 drive B has 80 tracks instead of 40
- 4 drive C is double-sided
- 5 drive C has 80 tracks instead of 40
- 6 drive D is double-sided
- 7 drive D has 80 tracks instead of 40
- Note: the type for drive A is determined by motherboard switches; the
- remaining drives' types are set from a table in IO.SYS
- SeeAlso: #03205
- --------b-480B-------------------------------
- INT 48 - TI Professional PC - GET EXTRA SYSTEM CONFIGURATION INFORMATION
- AH = 0Bh
- Return: AL = drive type byte (see #03206)
- BX = extra system configuration word 1 (see #03205)
- CX = extra system configuration word 2 (see #03205)
- AH destroyed
- SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah
- --------V-481A70-----------------------------
- INT 48 U - Compaq UILIB.EXE - INSTALLATION CHECK
- AX = 1A70h
- BX = call type (see #03207)
- Return: CX = 5649h ('VI') if installed
- DX = 4557h ('EW') if installed
- AX = version??? (0106h)
- (Table 03207)
- Values for UILIB call type:
- 0000h near
- 0001h far
- 0002h INT (only valid call type when using INT 48)
- 0003h near
- --------B-49---------------------------------
- INT 49 - SYSTEM DATA - NON-KEYBOARD SCAN-CODE TRANSLATION TABLE (PCjr)
- SeeAlso: #03208,INT 48"PCjr"
- Format of PCjr scan-code translation table:
- Offset Size Description (Table 03208)
- 00h BYTE number of non-keyboard scancodes in the table
- 01h N WORDs high byte 00h (NUL) byte scancode with low order byte
- representing the scancode mapped values relative to their
- input values within the range of 56h through 7Eh
- --------h-49---------------------------------
- INT 49 - Z100 - Slave 8259 - S100 vectored line 1
- SeeAlso: INT 48"Z100",INT 4A"Z100"
- --------N-49---------------------------------
- INT 49 - Watstar PC Network data pointer 2
- SeeAlso: INT 48"Watstar"
- --------O-49---------------------------------
- INT 49 - Acorn BBC Master 512 - "OSASCI" - WRITE CHARACTER TO CUR OUTPUT STREAM
- AL = character to be written
- Return: FLAGS destroyed
- Note: converts carriage return (0Dh) into CRLF sequence (0Dh 0Ah)
- SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 47"Acorn",INT 48"Acorn"
- --------b-49---------------------------------
- INT 49 - Tandy 2000 - BOOTSTRAP LOADER
- Note: this interrupt is identical to INT 19
- SeeAlso: INT 19,INT 4A"Tandy 2000",INT 4C"Tandy 2000",INT 51"Tandy 2000"
- --------a-490001-----------------------------
- INT 49 - MAGic v1.16+ - TURN ON MAGNIFICATION
- AX = 0001h
- Return: AX = status (see #03209)
- BX,CX,DX destroyed
- Program: MAGic (MAGnification In Color) is a TSR by Microsystems Software, Inc.
- providing 2x2 text and graphics magnification on VGA, XGA, and SVGA
- Note: INT 49 is the default, but may be overridden on the commandline. The
- actual interrupt in use may be found by searching for the signature
- "MAGic" or "xMAGic" (for the deluxe version) immediately preceding
- the interrupt handler (this is also the installation check). MAGic
- uses CodeRunneR, which places the signature "RT" at offset 0000h in
- the interrupt handler's segment, followed by MAGic's TSR ID of
- "VMAG".
- SeeAlso: AX=0002h,AX=0003h,AX=0004h,AX=0008h
- Index: installation check;MAGic
- (Table 03209)
- Values for MAGic status:
- 0000h cannot magnify current video mode
- 0002h magnified (text mode)
- 0003h magnified (graphics mode)
- FFFDh function works only in magnified mode
- FFFFh MAGic busy, retry later
- --------a-490002-----------------------------
- INT 49 - MAGic v1.16+ - TURN OFF MAGNIFICATION
- AX = 0002h
- Return: AX = status (see #03209)
- BX,CX,DX destroyed
- SeeAlso: AX=0001h
- --------a-490003-----------------------------
- INT 49 - MAGic v1.16+ - SHIFT MAGNIFIED WINDOW TO INCLUDE SPECIFIED LOCATION
- AX = 0003h
- BX = vertical position (character row [text] or pixel row [graphics])
- DX = horizontal position (char column [text] or 8-pixel units [gr])
- Return: AX = status
- 0000h successful
- FFFFh MAGic busy, retry later
- BX,CX,DX destroyed
- Note: window is not moved if the position is inside the current window
- SeeAlso: AX=0001h,AX=0004h,AX=0005h
- --------a-490004-----------------------------
- INT 49 - MAGic v1.16+ - REPOSITION MAGNIFIED WINDOW
- AX = 0004h
- BX = vertical position of upper left corner
- DX = horizontal position
- Return: AX = status (see AX=0003h)
- BX,CX,DX destroyed
- SeeAlso: AX=0001h,AX=0003h,AX=0005h
- --------a-490005-----------------------------
- INT 49 - MAGic v1.16+ - GET POSITION OF MAGNIFIED WINDOW
- AX = 0005h
- Return: AX = status
- 0000h successful
- BX = vertical position (char row or pixel row)
- DX = horizontal position (char column or 8-pixel units)
- FFFFh MAGic busy, retry later
- BX,DX destroyed
- CX destroyed
- SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0006h,AX=0007h
- --------a-490006-----------------------------
- INT 49 - MAGic v1.16+ - GET SIZE OF FULL SCREEN
- AX = 0006h
- Return: AX = status
- 0000h successful
- BX = vertical size (char rows or pixel rows)
- DX = horizontal size (char cols or 8-pixel units)
- FFFFh MAGic busy, retry later
- BX,DX destroyed
- CX destroyed
- SeeAlso: AX=0001h,AX=0005h,AX=0007h
- --------a-490007-----------------------------
- INT 49 - MAGic v1.16+ - GET SIZE OF MAGNIFICATION WINDOW
- AX = 0007h
- Return: AX = status
- 0000h successful
- BX = vertical size (char rows or pixel rows)
- DX = horizontal size (char cols or 8-pixel units)
- FFFEh invalid function
- FFFFh MAGic busy, retry later
- BX,DX destroyed
- CX destroyed
- BUG: in v1.16 and v1.17, this function is not recognized as valid, but
- AX=0000h is accepted and will branch into hyperspace
- SeeAlso: AX=0001h,AX=0006h
- --------a-490008-----------------------------
- INT 49 - MAGic v1.23+ - SET TEXT MODE MAGNIFICATION SIZE
- AX = 0008h
- BX = scaling factor (01h=1.4 times, 02h, 04h, 06h, 08h, 09h=12 times)
- Return: AX = status
- 0000h successful
- FFFBh scaling factor only available in MAGic Deluxe
- FFFCh already in magnified state, can't set size
- Notes: this call specifies the amount a subsequent call to AX=0001h should
- magnify the display
- scaling factors greater than 2 are only available in MAGic Deluxe
- SeeAlso: AX=0001h
- --------V-4901-------------------------------
- INT 49 - TI Professional PC - CRT - SET CURSOR SIZE AND TYPE
- AH = 01h
- CH = cursor start line (bits 3-0) and status (bits 6-5)
- status bits:
- 00 non-blinking cursor
- 01 no cursor
- 10 fast-blinking cursor
- 11 slow-blinking cursor
- CL = cursor end line
- Return: nothing
- Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
- SeeAlso: AH=02h,AH=03h,INT 40"TI Professional",INT 48/AH=00h"TI Professional"
- SeeAlso: INT 4A/AH=00h"TI",INT 4B"TI Professional",INT 4D/AH=00h
- SeeAlso: INT 57"TI Professional"
- --------V-4902-------------------------------
- INT 49 - TI Professional PC - CRT - SET CURSOR POSITION
- AH = 02h
- DH = column
- DL = row
- Return: DX destroyed
- Notes: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
- the TI swaps the row and column compared to the equivalent IBM call
- SeeAlso: AH=01h,AH=03h
- --------V-4903-------------------------------
- INT 49 - TI Professional PC - CRT - GET CURSOR POSTION AND TYPE
- AH = 03h
- Return: CH = cursor start and status (see AH=01h)
- CL = cursor end line
- DH = cursor column
- DL = cursor row
- Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
- SeeAlso: AH=01h,AH=02h
- --------V-4906-------------------------------
- INT 49 - TI Professional PC - CRT - SCROLL UP/COPY WINDOW
- AH = 06h
- AL = source blanking
- 00h blank source region (move/scroll)
- nonzero do not blank source region (copy)
- DH,DL = source start column,row
- BH,BL = destination start column,row
- CH = width of region to move/copy
- CL = height of region to move/copy
- Return: nothing
- Notes: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
- the specified region may be wider than the screen, but reliable
- operation then requires that the height be exactly one row
- SeeAlso: AH=01h,AH=02h,AH=07h,AH=13h,AH=14h
- --------V-4907-------------------------------
- INT 49 - TI Professional PC - CRT - SCROLL DOWN/COPY WINDOW
- AH = 07h
- AL = source blanking
- 00h blank source region (move/scroll)
- nonzero do not blank source region (copy)
- DH,DL = source start column,row
- BH,BL = destination start column,row
- CH = width of region to move/copy
- CL = height of region to move/copy
- Return: nothing
- Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
- SeeAlso: AH=01h,AH=02h,AH=06h,AH=13h,AH=14h
- --------V-4908-------------------------------
- INT 49 - TI Professional PC - CRT - GET CHARACTER AND ATTRIBUTE AT POSITION
- AH = 08h
- Return: AL = character at current cursor position
- AH = attribute
- Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
- SeeAlso: AH=01h,AH=09h,AH=0Ah,AH=0Eh,INT 10/AH=08h
- --------V-4909-------------------------------
- INT 49 - TI Professional PC - CRT - WRITE CHARACTER(S) WITH ATTRIBUTE
- AH = 09h
- AL = character to write
- BL = attribute to use (becomes new current attribute)
- CX = number of times to write character
- Return: nothing
- Desc: write CX copies of the character in AL beginning at the current cursor
- position
- Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
- SeeAlso: AH=01h,AH=08h,AH=0Ah,AH=0Eh,INT 10/AH=09h
- --------V-490A-------------------------------
- INT 49 - TI Professional PC - CRT - WRITE CHARACTER(S) WITH CURRENT ATTRIBUTE
- AH = 0Ah
- AL = character to write
- CX = number of times to write character
- Return: nothing
- Desc: write CX copies of the character in AL beginning at the current cursor
- position
- Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
- SeeAlso: AH=01h,AH=02h,AH=08h,AH=09h,AH=0Eh,INT 10/AH=0Ah
- --------V-490E-------------------------------
- INT 49 - TI Professional PC - CRT - TTY OUTPUT
- AH = 0Eh
- AL = character to write
- Return: nothing
- Desc: write the character in AL at the current cursor position, advancing
- the cursor, and interpreting CR, LF, TAB, and BEL characters
- Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
- SeeAlso: AH=01h,AH=02h,AH=08h,AH=09h,AH=0Ah,INT 10/AH=0Eh
- --------V-4910-------------------------------
- INT 49 - TI Professional PC - CRT - WRITE BLOCK OF CHARACTERS WITH ATTRIBUTE
- AH = 10h
- AL = attribute (becomes new current attribute)
- DX:BX -> string of characters to write
- CX = length of string
- Return: nothing
- Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
- BUG: CX must not be 0000h on entry, or the system will crash
- SeeAlso: AH=01h,AH=02h,AH=09h,AH=0Eh,AH=11h
- --------V-4911-------------------------------
- INT 49 - TI Professional PC - CRT - WRITE BLOCK OF CHARACTERS WITH CURR ATTRIB
- AH = 11h
- DX:BX -> string of characters to write
- CX = length of string
- Return: nothing
- Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
- BUG: CX must not be 0000h on entry, or the system will crash
- SeeAlso: AH=01h,AH=02h,AH=09h,AH=0Eh,AH=10h
- --------V-4912-------------------------------
- INT 49 - TI Professional PC - CRT - FILL ENTIRE SCREEN WITH ATTRIBUTE
- AH = 12h
- AL = attribute (see #03210)
- Return: nothing
- Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
- SeeAlso: AH=01h,AH=02h
- Bitfields for TI Professional PC screen attribute:
- Bit(s) Description (Table 03210)
- 7 alternate character set (requires user-supplied ROM)
- 6 blink
- 5 underline
- 4 reverse video
- 3 character enable
- 2 green (color) or 58% intensity (gray-scale)
- 1 red (color) or 27.5% intensity
- 0 blue (color) or 14.5% intensity
- --------V-4913-------------------------------
- INT 49 - TI Professional PC - CRT - CLEAR ENTIRE TEXT SCREEN AND HOME CURSOR
- AH = 13h
- Return: nothing
- Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
- SeeAlso: AH=01h,AH=02h,AH=06h,AH=14h
- --------V-4914-------------------------------
- INT 49 - TI Professional PC - CRT - CLEAR ENTIRE GRAPHICS SCREEN
- AH = 14h
- Return: nothing
- Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
- SeeAlso: AH=01h,AH=02h,AH=06h,AH=13h
- --------V-4915-------------------------------
- INT 49 - TI Professional PC - CRT - SET PROTECTED STATUS AREA
- AH = 15h
- CL = row at which to start status area, or 00h to cancel
- CH = 00h
- Return: nothing
- Desc: set a protected area of the screen which will not be affected by TTY
- writes or the scrolls they may generate
- Notes: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
- the current cursor position must be above the status area in order to
- set the protected area
- SeeAlso: AH=01h,AH=02h
- --------V-4916-------------------------------
- INT 49 - TI Professional PC - CRT - SET ATTRIBUTE LATCH
- AH = 16h
- BL = new attribute (see #03210)
- Return: nothing
- Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
- SeeAlso: AH=01h,AH=02h
- --------V-4917-------------------------------
- INT 49 - TI Professional PC - CRT - GET START-OF-DISPLAY POINTER
- AH = 17h
- Return: DX = current offset at which display starts
- Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
- SeeAlso: AH=01h,AH=02h,INT 10/AH=FEh
- --------V-4918-------------------------------
- INT 49 - TI Professional PC - CRT - PRINT TTY STRING
- AH = 18h
- CS:BX -> counted string (count byte with length followed by string)
- Return: nothing
- Notes: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
- the string must be located in the caller's code segment; any TSRs
- which want to hook INT 49 must check for this function and emulate
- it, because the BIOS retrieves the caller's CS from the stack
- SeeAlso: AH=01h,AH=02h,AH=0Eh
- --------B-4A---------------------------------
- INT 4A C - SYSTEM - USER ALARM HANDLER
- Desc: This interrupt is invoked by the BIOS when a real-time clock alarm
- occurs; an application may use it to perform an action at a
- predetermined time.
- Note: this interrupt is called from within a hardware interrupt handler,
- so all usual precautions against reentering DOS must be taken
- SeeAlso: INT 1A/AH=06h
- --------h-4A---------------------------------
- INT 4A - Z100 - Slave 8259 - S100 vectored line 2
- SeeAlso: INT 49"Z100",INT 4B"Z100"
- --------b-4A---------------------------------
- INT 4A - Tandy 2000 - PRINT SCREEN
- Note: this interrupt is identical to INT 05
- SeeAlso: INT 05"PRINT SCREEN"
- --------O-4A---------------------------------
- INT 4A - Acorn BBC Master 512 - "OSWORD" - MISC FUNCTIONS USING CONTROL BLOCK
- AL = function code
- FAh transfer data between 80186 and 65C12 I/O processor
- DS:BX -> control block (see #03211)
- Return: FLAGS destroyed
- control block updated
- Note: there are more functions than are listed here, but details are not
- available
- SeeAlso: INT 40"Acorn",INT 4B"Acorn",INT 4C"Acorn"
- Format of BBC Master control block for function FAh:
- Offset Size Description (Table 03211)
- 00h BYTE number of parameters sent to I/O processor (0Dh,0Eh)
- 01h BYTE number of parameters read from I/O processor (01h)
- 02h DWORD I/O processor address
- 06h DWORD 80186 segment:offset address
- 0Ah WORD number of bytes to transfer
- 0Ch BYTE operation type
- 00h write to 65C12 at 24 us/byte
- 01h read from 65C12 at 24 us/byte
- 02h write to 65C12 at 26 us/word
- 03h read from 65C12 at 26 us/word
- 04h write to 65C12 at 10 us/byte using 256-byte blocks
- 05h read from 65C12 at 10 us/byte using 256-byte blocks
- 0Dh BYTE 65C12 memory access control (only used if offset 00h = 0Eh)
- (see #03212)
- Bitfields for 65C12 memory access control:
- Bit(s) Description (Table 03212)
- 7 unused
- 6 always use main screen memory if I/O addr 3000h-7FFFh (overrides bit 5)
- 5 use shadow screen memory if screen address specified
- 4 use current ROM rather than ROM selected by bits 3-0 (only if I/O
- address between 8000h and BFFFh)
- 3-0 paged ROM number
- --------b-4A00-------------------------------
- INT 4A - TI Professional PC - KEYBOARD - GET KEYPRESS
- AH = 00h
- Return: AX = keystroke (AH=00h for ASCII keys -- no scan code)
- SeeAlso: AH=01h,AH=02h,AH=03h,AH=04h,AH=05h,INT 16/AH=00h
- SeeAlso: INT 47"TI Professional",INT 48/AH=00h"TI Professional"
- SeeAlso: INT 49/AH=01h"TI",INT 4C"TI Professional",INT 4D/AH=00h
- SeeAlso: INT 5B"TI Professional"
- --------b-4A01-------------------------------
- INT 4A - TI Professional PC - KEYBOARD - GET KEYBOARD STATUS
- AH = 01h
- Return: ZF set if no keystroke available
- ZF clear if keystrokes in buffer
- AX = next keystroke (AH=00h for ASCII keys -- no scan code)
- SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=05h,INT 16/AH=01h
- --------b-4A02-------------------------------
- INT 4A - TI Professional PC - KEYBOARD - GET KEYBOARD MODE
- AH = 02h
- Return: AL = shift states (see #03213)
- SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=05h,INT 16/AH=02h
- Bitfields for TI Professional PC keyboard shift states:
- Bit(s) Description (Table 03213)
- 0 Ctrl key pressed
- 1 Alt key pressed
- 2 either Shift key pressed
- 3-6 0
- 7 CapsLock is ON
- --------b-4A03-------------------------------
- INT 4A - TI Professional PC - KEYBOARD - FLUSH KEYBOARD BUFFER
- AH = 03h
- Return: nothing
- SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=05h
- --------b-4A04-------------------------------
- INT 4A - TI Professional PC - KEYBOARD - SEND COMMAND TO KEYBOARD
- AH = 04h
- AL = command
- 00h reset to default states
- 01h enable auto-repeat (default)
- 02h disable auto-repeat
- 03h lock keyboard
- 04h unlock keyboard (default)
- 05h enable keyclick (requires hardware modification to work)
- 06h disable keyclick (default)
- Return: nothing
- SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=05h
- --------b-4A05-------------------------------
- INT 4A - TI Professional PC - KEYBOARD - INSERT CHARACTER INTO KEYBOARD BUFFER
- AH = 05h
- BX = character code (BH=00h if ASCII character, BL=00h/BH nonzero for
- extended codes) (see #03214)
- Return: ZF set if keyboard buffer was already full
- ZF clear if keystroke inserted into buffer
- SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=05h,INT 5B"TI"
- (Table 03214)
- Values for TI Professional PC scan/character codes:
- Scan Key Normal Shift Ctrl Alt Notes
- 00h -- unused
- 01h F5 3F00h 5800h 6200h 6C00h
- 02h F6 4000h 5900h 6300h 6D00h
- 03h F7 4100h 5A00h 6400h 6E00h
- 04h F8 4200h 5B00h 6500h 6F00h
- 05h F9 4300h 5C00h 6600h 7000h
- 06h F10 4400h 5D00h 6700h 7100h
- 07h F11 4500h 0800h 0A00h 0C00h
- 08h F12 4600h 0900h 0B00h 0D00h
- 09h 1 ! 0031h 0021h ---- 7800h
- 0Ah 2 @ 0032h 0040h 0300h 7900h
- 0Bh 3 # 0033h 0023h ---- 7A00h
- 0Ch 4 $ 0034h 0024h ---- 7B00h
- 0Dh 5 % 0035h 0025h ---- 7C00h
- 0Eh 6 ^ 0036h 005Eh 001Eh 7D00h
- 0Fh 7 & 0037h 0026h ---- 7E00h
- 10h 8 * 0038h 002Ah ---- 7F00h
- 11h 9 ( 0039h 0028h ---- 8000h
- 12h 0 ) 0030h 0029h ---- 8100h
- 13h - _ 002Dh 005Fh 001Fh 8200h
- 14h = + 003Dh 002Bh ---- 8300h
- 15h BACK SPACE 0008h 0008h 007Fh ----
- 16h ` ~ 0060h 007Eh ---- ----
- 17h NUM = 003Dh 003Dh 003Dh 8C00h
- 18h NUM + 002Bh 002Bh 002Bh 8D00h
- 19h NUM SPAC 0020h 0020h 0020h 8E00h
- 1Ah NUM TAB 0009h 0F00h 0009h 8F00h
- 1Bh NUM 1 0031h 0031h 0031h (alt-###) [Note 5]
- 1Ch (unused)
- 1Dh NUM 0 0030h 0030h 0030h (alt-###) [Note 5]
- 1Eh NUM ENTER 000Dh 000Dh 000Dh ----
- 1Fh NUM 4 0034h 0034h 0034h (alt-###) [Note 5]
- 20h NUM 5 0035h 0035h 0035h (alt-###) [Note 5]
- 21h NUM 9 0039h 0039h 0039h (alt-###) [Note 5]
- 22h NUM - 002Dh 002Dh 002Dh ----
- 23h NUM 2 0032h 0032h 0032h (alt-###) [Note 5]
- 24h-26h -- unused
- 27h NUM 7 0037h 0037h 0037h (alt-###) [Note 5]
- 28h NUM 8 0038h 0038h 0038h (alt-###) [Note 5]
- 29h NUM 6 0036h 0036h 0036h (alt-###) [Note 5]
- 2Ah NUM , 002Ch 002Ch 002Ch ----
- 2Bh NUM 3 0033h 0033h 0033h (alt-###) [Note 5]
- 2Ch NUM . 002Eh 002Eh 002Eh ----
- 2Dh PRINT 7200h [Note2] ---- ---- [Notes 1,2]
- 2Eh RtArrow 4D00h 8A00h 7400h 4E00h
- 2Fh INS 5200h 2800h 2900h 2A00h [Note 1]
- 30h DEL 5300h 3800h 3900h 3A00h [Note 1]
- 31h TAB 0009h 0F00h 0009h ----
- 32h Q 0071h 0051h 0011h 1000h
- 33h W 0077h 0057h 0017h 1100h
- 34h E 0065h 0045h 0005h 1200h
- 35h R 0072h 0052h 0012h 1300h
- 36h T 0074h 0054h 0014h 1400h
- 37h Y 0079h 0059h 0019h 1500h
- 38h U 0075h 0055h 0015h 1600h
- 39h I 0069h 0049h 0009h 1700h
- 3Ah O 006Fh 004Fh 000Fh 1800h
- 3Bh P 0070h 0050h 0010h 1900h
- 3Ch [ { 005Bh 007Bh 001Bh ----
- 3Dh ] } 005Dh 007Dh 001Dh ----
- 3Eh LINE FEED 000Ah 000Ah 7500h 4F00h
- 3Fh BRK/PAUS [Note3] [Note4] ---- ---- [Notes 1,3,4]
- 40h UpArrow 4800h 8800h 8400h 4900h
- 41h ESC 001Bh 001Bh 001Bh ----
- 42h A 0061h 0041h 0001h 1E00h
- 43h S 0073h 0053h 0013h 1F00h
- 44h D 0064h 0044h 0004h 2000h
- 45h F 0066h 0046h 0006h 2100h
- 46h G 0067h 0047h 0007h 2200h
- 47h H 0068h 0048h 0008h 2300h
- 48h J 006Ah 004Ah 000Ah 2400h
- 49h K 006Bh 004Bh 000Bh 2500h
- 4Ah L 006Ch 004Ch 000Ch 2600h
- 4Bh ; : 003Bh 003Ah ---- ----
- 4Ch ' " 0027h 0022h ---- ----
- 4Dh RETURN 000Dh 000Dh 000Dh ----
- 4Eh \ | 005Ch 007Ch 001Ch ----
- 4Fh LeftArrow 4B00h 8B00h 7300h 4C00h
- 50h HOME 4700h 8600h 7700h 8500h
- 51h Space Bar 0020h 0020h 0020h 0020h
- 52h Z 007Ah 005Ah 001Ah 2C00h
- 53h X 0078h 0058h 0018h 2D00h
- 54h C 0063h 0043h 0003h 2E00h
- 55h V 0076h 0056h 0016h 2F00h
- 56h B 0062h 0042h 0002h 3000h
- 57h N 006Eh 004Eh 000Eh 3100h
- 58h M 006Dh 004Dh 000Dh 3200h
- 59h , < 002Ch 003Ch ---- ----
- 5Ah PRINT 7200h [Note2] ---- ---- [Notes 1,2]
- 5Bh . > 002Eh 003Eh ---- ----
- 5Ch / ? 002Fh 003Fh ---- ----
- 5Dh (unused)
- 5Eh DEL 5300h 3800h 3900h 3A00h [Note 1]
- 5Fh INS 5200h 2800h 2900h 2A00h [Note 1]
- 60h DownArrow 5000h 8900h 7600h 5100h
- 61h-63h -- unused
- 64h BRK/PAUS [Note3] [Note4] ---- ---- [Notes 1,3,4]
- 65h F1 3B00h 5400h 5E00h 6800h
- 66h F2 3C00h 5500h 5F00h 6900h
- 67h F3 3D00h 5600h 6000h 6A00h
- 68h F4 3E00h 5700h 6100h 6B00h
- 69h-6Fh -- unused
- Notes: [1] four of the keys can have differing scan codes, depending on the
- actual keyboard; the BIOS accepts either scan code ("normal": 2Fh,
- 30h, 5Ah, 64h; "alternate": 2Dh,3Fh,5Eh,5Fh) for any of these keys
- [2] Shift-Print invokes INT 5E for a screen dump; the PRTSCRN.DEV
- device driver also supports Alt-Print, Ctrl-Print, Shift-Alt-Print,
- and Shift-Ctrl-Print for dumping graphics in various permutations
- [3] BRK/PAUS invokes INT 5C for a pause, then stuffs 0100h into the
- keyboard buffer
- [4] Shift-BRK/PAUS invokes INT 5D for the Break, then stuffs 0000h
- into the keyboard buffer; MS-DOS hooks INT 5D to keep the 0000h from
- appearing in the keyboard buffer
- [5] on the TI Pro, one enters an arbitrary character slightly
- differently than on a standard PC: exactly three numberpad digits
- must be pressed (using leading zeros for codes less than 100), and
- the key for the requested code is inserted into the keyboard buffer
- immediately on pressing the third key. The Alt key may be released
- and re-pressed arbitrarily often between digits without affecting
- the Alt-digit-digit-digit sequence.
- scan codes with bit 7 set are not key releases, but rather
- auto-repeated keystrokes, which the BIOS only places into the
- keyboard buffer if the buffer is empty at the time (thus avoiding
- typeahead of repeated keystrokes faster than they can be processed)
- SeeAlso: #00006 at INT 09
- --------h-4B---------------------------------
- INT 4B - Z100 - Slave 8259 - S100 vectored line 3
- SeeAlso: INT 4A"Z100",INT 4C"Z100"
- --------d-4B---------------------------------
- INT 4B - Common Access Method SCSI interface (draft revision 1.9)
- ES:DI -> CAM Control Block (see #03229 at INT 4F/AX=8100h)
- InstallCheck: test for the string "SCSI_CAM" eight bytes past the INT 4Bh
- handler
- Notes: the CAM committee moved the interface to INT 4F after revision 1.9
- to avoid conflicting with the IBM SCSI interface and the Virtual
- DMA specification
- the only driver to date reported to use the CAM interface on INT 4B
- instead of INT 4F is from Future Domain (which has drivers for CAM
- on either interrupt)
- SeeAlso: INT 4F/AX=8100h
- Index: installation check;Common Access Method SCSI interface
- --------b-4B---------------------------------
- INT 4B - Tandy 2000 - EQUIPMENT DETERMINATION
- Return: AX = BIOS equipment list word (see #03215)
- Note: this interrupt is identical to INT 11 on the Tandy 2000
- SeeAlso: INT 11"EQUIPMENT",INT 4A"Tandy 2000",INT 4C"Tandy 2000"
- Bitfields for Tandy 2000 BIOS equipment list:
- Bit(s) Description (Table 03215)
- 0 reserved
- 1 monochrome graphics installed
- 2 graphics with color option installed
- 3 floppy disk drive 1 installed
- 4 floppy disk drive 2 installed
- 5 hard disk drive 1 installed
- 6 hard disk drive 2 installed
- 7 unused
- 8 black and white monitor
- 9 color monitor
- 12-10 reserved
- 13 printer installed
- 14 reserved
- 15 unused
- SeeAlso: #00226 at INT 11
- --------O-4B---------------------------------
- INT 4B - Acorn BBC Master 512 - "OSBYTE" - MISC FUNCTIONS USING REGISTER PARAMS
- AL = function code
- BL = first parameter
- BH = second parameter (if needed)
- Return: BL = first return parameter
- BH = second return parameter
- CF depends on function
- SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4C"Acorn"
- --------b-4B00-------------------------------
- INT 4B - TI Professional PC - PARALLEL PORT - OUTPUT CHARACTER
- AH = 00h
- DL = printer number (00h)
- AL = character to print
- Return: AH = printer status (see #03216)
- Note: on the TI Pro, the BIOS only supports DL=00h; MS-DOS versions for the
- TI hook INT 4B and handle requests for DL<>00h
- SeeAlso: AH=01h,AH=02h,INT 17/AH=00h
- SeeAlso: INT 40"TI Professional",INT 48/AH=00h"TI Professional"
- SeeAlso: INT 49/AH=01h"TI",INT 4C"TI Professional",INT 4D/AH=00h
- Bitfields for TI Professional PC printer status:
- Bit(s) Description (Table 03216)
- 0 timeout (function 00h only)
- 3-1 unused
- 4 busy
- 5 paper out
- 6 on-line (selected)
- 7 fault
- --------b-4B01-------------------------------
- INT 4B - TI Professional PC - PARALLEL PORT - INITIALIZE PRINTER
- AH = 01h
- DL = printer number (00h)
- Return: AH = printer status (see #03216)
- Note: on the TI Pro, the BIOS only supports DL=00h; MS-DOS versions for the
- TI hook INT 4B and handle requests for DL<>00h
- SeeAlso: AH=00h,AH=02h,INT 17/AH=01h
- --------b-4B02-------------------------------
- INT 4B - TI Professional PC - PARALLEL PORT - GET PRINTER STATUS
- AH = 02h
- DL = printer number (00h)
- Return: AH = printer status (see #03216)
- Note: on the TI Pro, the BIOS only supports DL=00h; MS-DOS versions for the
- TI hook INT 4B and handle requests for DL<>00h
- SeeAlso: AH=00h,AH=01h,INT 17/AH=02h
- --------d-4B80-------------------------------
- INT 4B - IBM SCSI interface
- AH = 80h
- AL = 00h-10h (Corel PowerSCSI INT4BCAM.SYS)
- further details not yet available
- --------d-4B8102DX0000-----------------------
- INT 4B - Virtual DMA Specification (VDS) - GET VERSION
- AX = 8102h
- DX = 0000h
- Return: CF clear if successful
- AH = major version number
- AL = minor version number
- BX = product number (see #03217)
- CX = product revision number
- always 0000h for QMAPS and HPMM.SYS
- always 0001h for Microsoft's EMM386.EXE v4.20-4.41
- DX = flags (see #03219)
- SI:DI = maximum DMA buffer size
- CF set on error
- AL = error code (see #03218)
- Note: bit 5 of 0040h:007Bh is supposed to be set if VDS is supported; this is
- apparently not always the case
- SeeAlso: INT 2C/AX=002Bh,INT 31/AX=0400h,MEM 0040h:007Bh"4Bh"
- Index: installation check;Virtual DMA Specification
- (Table 03217)
- Values for VDS product number:
- 0000h for Quadtel's QMAPS and Hewlett-Packard's HPMM.SYS
- 0001h for Microsoft's EMM386.EXE
- 0003h for Windows 3.x WIN386.EXE
- 0300h OS/2 (all versions to date)
- 0EDCh for DR DOS 6.0 EMM386.SYS
- 4560h ("E`") for Qualitas' 386MAX
- 4D43h ("MC") for V Communications' Memory Commander
- 5145h ("QE") for Quarterdeck's QEMM-386
- 524Dh ("RM") for Helix's Netroom RM386
- (Table 03218)
- Values for VDS error code:
- 01h region not in contiguous memory
- 02h region crossed a physical alignment boundary
- 03h unable to lock pages
- 04h no buffer available
- 05h region too large for buffer
- 06h buffer currently in use
- 07h invalid memory region
- 08h region was not locked
- 09h number of physical pages greater than table length
- 0Ah invalid buffer ID
- 0Bh copy out of buffer range
- 0Ch invalid DMA channel number
- 0Dh disable count overflow
- 0Eh disable count underflow
- 0Fh function not supported
- 10h reserved flag bits set in DX
- Bitfields for VDS flags:
- Bit(s) Description (Table 03219)
- 0 PC/XT bus (DMA in first megabyte only)
- 1 physical buffer/remap region in first megabyte
- 2 automatic remap enabled
- 3 all memory is physically contiguous
- 4-15 reserved (zero)
- --------d-4B8103-----------------------------
- INT 4B - Virtual DMA Specification - LOCK DMA REGION
- AX = 8103h
- DX = flags (see #03220)
- ES:DI -> DMA descriptor structure (see #03221,#03222,#03223)
- Return: CF clear if successful
- DDS physical address field filled in
- DDS buffer ID field filled (0000h if no buffer allocated)
- CF set on error
- AL = error code (see #03218)
- DDS region size field filled wth maximum contiguous length in bytes
- BUGS: Windows 3.0 does not correctly support automatic remapping or copying
- in enhanced mode
- Windows 3.0 in enhanced mode does not return a correct code on error
- SeeAlso: AX=8104h,AX=8105h
- Bitfields for VDS flags:
- Bit(s) Description (Table 03220)
- 0 reserved (zero)
- 1 data should be copied into buffer (ignored if 2 set)
- 2 buffer should not be allocated if region noncontiguous or crosses
- physical alignment boundary specified by 4-5
- 3 don't attempt automatic remap
- 4 region must not cross 64K physical alignment boundary
- 5 region must not cross 128K physical alignment boundary
- 6-15 reserved (zero)
- Format of DMA descriptor structure (DDS):
- Offset Size Description (Table 03221)
- 00h DWORD region size
- 04h DWORD offset
- 08h WORD segment/selector
- 0Ah WORD buffer ID
- 0Ch DWORD physical address
- Format of Extended DMA descriptor structure (EDDS):
- Offset Size Description (Table 03222)
- 00h DWORD region size
- 04h DWORD offset
- 08h WORD segment/selector
- 0Ah WORD reserved
- 0Ch WORD number available
- 0Eh WORD number used
- 10h DWORD region 0 physical address
- 14h DWORD region 0 size in bytes
- 18h DWORD region 1 physical address
- 1Ch DWORD region 1 size in bytes
- ...
- Format of Extended DMA descriptor structure (EDDS) with page table entries:
- Offset Size Description (Table 03223)
- 00h DWORD region size
- 04h DWORD offset
- 08h WORD segment/selector
- 0Ah WORD reserved
- 0Ch WORD number available
- 0Eh WORD number used
- 10h DWORD page table entry 0 (same as 80386 page table entry)
- 14h DWORD page table entry 1
- ...
- Note: bits 1-11 of the page table entries should be zero; bit 0 set if page
- is present and locked
- --------d-4B8104-----------------------------
- INT 4B - Virtual DMA Specification - UNLOCK DMA REGION
- AX = 8104h
- DX = flags
- bit 0: reserved (zero)
- bit 1: data should be copied out of buffer
- bits 2-15 reserved (zero)
- ES:DI -> DMA descriptor structure (see #03221,#03222) with region size,
- physical address, and buffer ID fields set
- Return: CF clear if successful
- DDS physical address field set
- DDS buffer ID field set (0000h if no buffer allocated)
- CF set on error
- AL = error code (see #03218)
- DDS region size field filled wth maximum contiguous length in bytes
- Note: Windows 3.0 does not check whether the region extends beyond the end of
- a segment
- BUG: Windows 3.0 in enhanced mode does not return a correct code on error
- SeeAlso: AX=8103h,AX=8106h
- --------d-4B8105-----------------------------
- INT 4B - Virtual DMA Specification - SCATTER/GATHER LOCK REGION
- AX = 8105h
- DX = flags (see #03224)
- ES:DI -> Extended DMA descriptor structure (see #03222,#03223)
- region size, linear segment, linear offset, and number avail
- fields set
- Return: CF clear if successful
- EDDS number used field set
- if DX bit 6 set, lower 12 bits of BX = offset in first page
- CF set on error
- AL = error code (see #03218)
- EDDS region size field filled with max length in bytes that can be
- locked and described in the EDDS table
- BUG: Windows 3.0 in enhanced mode may return zero instead of the physical
- page address for pages which were originally not present
- SeeAlso: AX=8103h,AX=8106h
- Bitfields for VDS flags:
- Bit(s) Description (Table 03224)
- 0-5 reserved (zero)
- 6 EDDS should be returned with page table entries
- 7 only present pages should be locked (not-present pages receive entry
- of 0000h)
- 8-15 reserved (zero)
- --------d-4B8106-----------------------------
- INT 4B - Virtual DMA Specification - SCATTER/GATHER UNLOCK REGION
- AX = 8106h
- DX = flags (see #03225)
- ES:DI -> Extended DMA descriptor structure (see #03222,#03223) returned
- by AX=8105h
- Return: CF clear if successful
- CF set on error
- AL = error code (see #03218)
- Note: according to the Microsoft version of the VDS specification, the
- actual scatter/gather list is ignored, while according to the IBM
- version of the specification, "the result of a LOCK operation"
- must be provided to this function
- SeeAlso: AX=8104h,AX=8105h
- Bitfields for VDS flags:
- Bit(s) Description (Table 03225)
- 0-5 reserved (zero)
- 6 EDDS contains page table entries
- 7 EDDS may contain not-present pages (entry = 0000h)
- 8-15 reserved (zero)
- --------d-4B8107-----------------------------
- INT 4B - Virtual DMA Specification - REQUEST DMA BUFFER
- AX = 8107h
- DX = flags
- bit 0: reserved (zero)
- bit 1: data should be copied into buffer
- bits 2-15 reserved (zero)
- ES:DI -> DMA descriptor structure (see #03221) with region size set
- (also region offset and region segment if DX bit 1 set)
- Return: CF clear if successful
- DDS physical address and buffer ID set
- DDS region size filled with length of buffer
- CF set on error
- AL = error code (see #03218)
- SeeAlso: AX=8108h
- --------d-4B8108-----------------------------
- INT 4B - Virtual DMA Specification - RELEASE DMA BUFFFER
- AX = 8108h
- DX = flags
- bit 0: reserved (zero)
- bit 1: data should be copied out of buffer
- bits 2-15 reserved (zero)
- ES:DI -> DMA descriptor structure (see #03221,#03222) with buffer ID set
- (also region size/region offset/segment if DX bit 1 set)
- Return: CF clear if successful
- CF set on error
- AL = error code (see #03218)
- BUG: under Windows 3.0 Enhanced mode, you must specify that data be copied
- for this function to work correctly
- SeeAlso: AX=8107h
- --------d-4B8109DX0000-----------------------
- INT 4B - Virtual DMA Specification - COPY INTO DMA BUFFER
- AX = 8109h
- DX = 0000h
- ES:DI -> DMA descriptor structure (see #03221,#03222) with buffer ID,
- region segment/offset, and region size fields set
- BX:CX = starting offset into DMA buffer
- Return: CF clear if successful
- CF set on error
- AL = error code (see #03218)
- BUG: Windows 3.0 Enhanced mode does not correctly interpret the copy count
- SeeAlso: AX=810Ah
- --------d-4B810ADX0000-----------------------
- INT 4B - Virtual DMA Specification - COPY OUT OF DMA BUFFER
- AX = 810Ah
- DX = 0000h
- ES:DI -> DMA descriptor structure (see #03221,#03223) with buffer ID,
- region segment/offset, and region size fields set
- BX:CX = starting offset into DMA buffer
- Return: CF clear if successful
- CF set on error
- AL = error code (see #03218)
- BUG: Windows 3.0 Enhanced mode does not correctly interpret the copy count
- SeeAlso: AX=8109h
- --------d-4B810B-----------------------------
- INT 4B - Virtual DMA Specification - DISABLE DMA TRANSLATION
- AX = 810Bh
- BX = DMA channel number
- DX = 0000h
- Return: CF clear if successful
- CF set on error
- AL = error code (see #03218)
- SeeAlso: AX=810Ch
- --------d-4B810C-----------------------------
- INT 4B - Virtual DMA Specification - ENABLE DMA TRANSLATION
- AX = 810Ch
- BX = DMA channel number
- DX = 0000h
- Return: CF clear if successful
- ZF set if disable count decremented to zero
- CF set on error
- AL = error code (see #03218)
- SeeAlso: AX=810Bh
- --------Q-4B810D-----------------------------
- INT 4B - QEMM-386 - BUG
- AX = 810Dh
- Note: the code in QEMM v5.11 and 6.00 jumps to an invalid location on this
- call
- --------h-4C---------------------------------
- INT 4C - Z100 - Slave 8259 - S100 vectored line 4
- SeeAlso: INT 4B"Z100",INT 4D"Z100"
- --------b-4C---------------------------------
- INT 4C - TI Professional PC - CLOCK/ANALOG INTERFACE
- no details available
- SeeAlso: INT 40"TI Professional",INT 49/AH=01h"TI"
- SeeAlso: INT 4A/AH=00h"TI",INT 4B"TI Professional",INT 4D/AH=00h
- SeeAlso: INT 58"TI Professional"
- --------b-4C---------------------------------
- INT 4C - Tandy 2000 - GET MEMORY SIZE
- Return: AX = kilobytes of contiguous memory starting at 0
- Note: this interrupt is identical to INT 12 on the Tandy 2000
- SeeAlso: INT 12"BIOS",INT 4A"Tandy 2000",INT 4B"Tandy 2000",INT 51"Tandy 2000"
- --------O-4C---------------------------------
- INT 4C - Acorn BBC Master 512 - "OSCLI" - INTERPRET COMMAND LINE
- DS:BX -> CR-terminated command string
- Return: FLAGS destroyed
- SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4B"Acorn"
- --------h-4D---------------------------------
- INT 4D - Z100 - Slave 8259 - S100 vectored line 5
- SeeAlso: INT 4C"Z100",INT 4E"Z100"
- --------s-4D---------------------------------
- INT 4D - IBM - M-Audio Adapter SUPPORT
- no details available; supposedly documented in IBM form G571-0203-01
- --------B-4D00-------------------------------
- INT 4D - TI Professional PC - DISK - RESET DISK SYSTEM
- AH = 00h
- DL = drive (if bit 7 is set both hard disks and floppy disks reset)
- Return: AH = status (see #00234 at INT 13/AH=01h)
- CF clear if successful (returned AH=00h)
- CF set on error
- Note: this function is the same as INT 13/AH=00h on a standard PC BIOS
- SeeAlso: AH=01h,AH=02h,AH=08h,AH=0Bh,INT 13/AH=00h,INT 46"TI Professional"
- SeeAlso: INT 48/AH=00h"TI Professional",INT 4A/AH=00h"TI"
- --------B-4D01-------------------------------
- INT 4D - TI Professional PC - DISK - GET STATUS OF LAST OPERATION
- AH = 01h
- DL = drive (bit 7 set for hard disk)
- Return: CF clear if status unchanged
- CF set if status changed since last call
- AH = 00h
- AL = status of previous operation (see #00234 at INT 13/AH=01h)
- Notes: this function is nearly the same as INT 13/AH=01h on a standard PC BIOS
- the TI's BIOS tranparently performs a number of retries, and an error
- status is only reported if all of the retries fail. To get the error
- status if the operation succeeded on a retry, use AH=07h instead
- SeeAlso: AH=00h,AH=07h,INT 13/AH=01h
- --------B-4D02-------------------------------
- INT 4D - TI Professional PC - DISK - READ SECTOR(S) INTO MEMORY
- AH = 02h
- AL = number of sectors to read (must be nonzero)
- CH = low eight bits of cylinder number
- CL = sector number 1-63 (bits 0-5)
- high two bits of cylinder (bits 6-7, hard disk only)
- DH = head number
- DL = drive number (bit 7 set for hard disk)
- ES:BX -> data buffer
- Return: CF set on error
- if AH = 11h (corrected ECC error), AL = burst length
- CF clear if successful
- AH = status (see #00234 at INT 13/AH=01h)
- AL = number of sectors transferred
- ES:BX -> buffer for last sector processed (including one with errors)
- SeeAlso: AH=00h,AH=01h,AH=03h,AH=04h,INT 13/AH=02h
- --------B-4D03-------------------------------
- INT 4D - TI Professional PC - DISK - WRITE SECTOR(S) FROM MEMORY
- AH = 03h
- AL = number of sectors to write (must be nonzero)
- CH = low eight bits of cylinder number
- CL = sector number 1-63 (bits 0-5)
- high two bits of cylinder (bits 6-7, hard disk only)
- DH = head number
- DL = drive number (bit 7 set for hard disk)
- ES:BX -> buffer containing data
- Return: CF set on error
- if AH = 11h (corrected ECC error), AL = burst length
- CF clear if successful
- AH = status (see #00234 at INT 13/AH=01h)
- AL = number of sectors transferred
- ES:BX -> buffer for last sector processed (including one with errors)
- SeeAlso: AH=00h,AH=01h,AH=02h,AH=04h,INT 13/AH=03h
- --------B-4D04-------------------------------
- INT 4D - TI Professional PC - DISK - VERIFY DISK SECTOR CRC(S)
- AH = 04h
- AL = number of sectors to verify (must be nonzero)
- CH = low eight bits of cylinder number
- CL = sector number 1-63 (bits 0-5)
- high two bits of cylinder (bits 6-7, hard disk only)
- DH = head number
- DL = drive number (bit 7 set for hard disk)
- ES:BX -> data buffer
- Return: CF set on error
- if AH = 11h (corrected ECC error), AL = burst length
- CF clear if successful
- AH = status (see #00234 at INT 13/AH=01h)
- AL = number of sectors transferred
- ES:BX -> buffer for last sector processed (including one with errors)
- Note: even though no data is transferred, ES:BX must still be valid
- SeeAlso: AH=00h,AH=01h,AH=02h,AH=06h,INT 13/AH=04h
- --------B-4D05-------------------------------
- INT 4D - TI Professional PC - DISK - NOP
- AH = 05h
- Note: on the TI Pro, FORMAT.COM contains direct port I/O commands to perform
- disk formatting, rather than using the BIOS
- --------B-4D06-------------------------------
- INT 4D - TI Professional PC - DISK - VERIFY DISK SECTOR(S)
- AH = 06h
- AL = number of sectors to verify (must be nonzero)
- CH = low eight bits of cylinder number
- CL = sector number 1-63 (bits 0-5)
- high two bits of cylinder (bits 6-7, hard disk only)
- DH = head number
- DL = drive number (bit 7 set for hard disk)
- ES:BX -> data buffer
- Return: CF set on error
- if AH = 11h (corrected ECC error), AL = burst length
- CF clear if successful
- AH = status (see #00234 at INT 13/AH=01h)
- AL = number of sectors transferred
- ES:BX -> buffer for last sector processed (including one with errors)
- Note: even though no data is transferred, ES:BX must still be valid because
- an actual comparison with disk data is performed, not just the CRC
- check of the standard PC BIOS or INT 4D/AH=04h
- SeeAlso: AH=00h,AH=01h,AH=02h,AH=04h,INT 13/AH=04h
- --------B-4D07-------------------------------
- INT 4D - TI Professional PC - DISK - GET RETRY STATUS OF LAST OPERATION
- AH = 07h
- DL = drive (bit 7 set for hard disk)
- Return: CF clear if status unchanged
- CF set if status changed since last call
- AH = 00h
- AL = status of previous operation (see #00234 at INT 13/AH=01h)
- Notes: this function is nearly the same as INT 13/AH=01h on a standard PC BIOS
- the TI's BIOS tranparently performs a number of retries; this function
- returns the error status of a failed operation even if the operation
- succeeded on a retry
- SeeAlso: AH=00h,AH=01h,INT 13/AH=01h
- --------B-4D08-------------------------------
- INT 4D - TI Professional PC - DISK - SET STANDARD DEVICE INTERFACE TABLE
- AH = 08h
- DL = drive number (00h-03h)
- AL = drive type
- 00h single-sided 48 tpi (40-track, 8 sectors, 512 bytes/sector)
- 01h double-sided 48 tpi (40-track, 8 sectors, 512 bytes/sector)
- 02h single-sided 96 tpi (80-track, 8 sectors, 512 bytes/sector)
- 03h double-sided 96 tpi (80-track, 8 sectors, 512 bytes/sector)
- Return: nothing???
- SeeAlso: AH=00h,AH=09h
- --------B-4D09-------------------------------
- INT 4D - TI Professional PC - DISK - SET DEVICE INTERFACE TABLE ADDRESS
- AH = 09h
- DL = drive number (00h-07h)
- ES:BX -> Device Interface Table (see #03226)
- Return: nothing???
- SeeAlso: AH=00h,AH=08h,AH=0Ah,INT 1E
- Format of TI Professional PC Device Interface Table:
- Offset Size Description (Table 03226)
- 00h DWORD -> entry point for disk routine
- 04h WORD bytes per sector
- 06h BYTE sectors per track
- 07h BYTE number of heads
- 08h BYTE number of cylinders
- 09h BYTE retry count
- 0Ah BYTE precompensation start
- SeeAlso: #01264 at INT 1E
- --------B-4D0A-------------------------------
- INT 4D - TI Professional PC - DISK - GET DEVICE INTERFACE TABLE ADDRESS
- AH = 0Ah
- DL = drive number (00h-07h)
- Return: AH = status
- ES:BX -> Device Interface Table (see #03226)
- SeeAlso: AH=00h,AH=08h,AH=09h,INT 1E
- --------B-4D0B-------------------------------
- INT 4D - TI Professional PC - DISK - TURN OFF ALL DRIVES
- AH = 0Bh
- Return: AH = 00h
- Note: used for diagnostics or to conserve power
- SeeAlso: AH=00h
- --------h-4E---------------------------------
- INT 4E - Z100 - Slave 8259 - S100 vectored line 6
- SeeAlso: INT 4D"Z100",INT 4F"Z100"
- --------b-4E00-------------------------------
- INT 4E - TI Professional PC - TIME-OF-DAY CLOCK - SET BIOS DATE
- AH = 00h
- BX = number of days since January 1, 1980
- Return: nothing
- SeeAlso: AH=01h,AH=02h
- SeeAlso: INT 40"TI Professional",INT 48/AH=00h"TI Professional"
- SeeAlso: INT 4A/AH=00h"TI",INT 4F"TI Professional"
- --------b-4E01-------------------------------
- INT 4E - TI Professional PC - TIME-OF-DAY CLOCK - SET BIOS TIME
- AH = 01h
- CH = hours
- CL = minutes
- DH = seconds
- DL = hundredths
- Return: nothing
- Note: the BIOS does not validate the data passed to this function
- SeeAlso: AH=00h,AH=02h
- --------b-4E02-------------------------------
- INT 4E - TI Professional PC - TIME-OF-DAY CLOCK - GET BIOS DATA AND TIME
- AH = 02h
- Return: AX = number of days since January 1, 1980
- CH = hours
- CL = minutes
- DH = seconds
- DL = hundredths
- SeeAlso: AH=00h,AH=01h
- --------h-4F---------------------------------
- INT 4F - Z100 - Slave 8259 - S100 vectored line 7
- SeeAlso: INT 4E"Z100"
- --------b-4F---------------------------------
- INT 4F - TI Professional PC - SYSTEM CONFIGURATION CALL
- Return: AX = system configuration word (see #03227)
- BX = size of contiguous DOS memory in paragraphs
- SeeAlso: INT 11"BIOS",INT 12"BIOS",INT 40"TI Professional",INT 48/AH=09h
- SeeAlso: INT 49/AH=01h"TI",INT 4B"TI Professional",INT 4D/AH=00h
- SeeAlso: INT 4E"TI Professional"
- Bitfields for TI Professional PC system configuration:
- Bit(s) Description (Table 03227)
- 0 floppy drive 0 (A:, internal) installed
- 1 floppy drive 1 (B:, internal) installed
- 2 floppy drive 2 (C:, external) installed
- 3 floppy drive 3 (D:, external) installed
- 4 drive A: is 96tpi (80 tracks)
- 5 drive A: is double-sided
- 6 60 Hz power instead of 50 Hz
- 7 hard disk (E: or E:/F:) installed
- 8 serial port 1 installed
- 9 serial port 2 installed
- 10 serial port 3 installed
- 11 serial port 4 installed
- 14-12 installed graphics RAM
- 000 none (text-only system)
- 001 bank A only (graphics limited to 2 of 8 colors)
- 111 banks A/B/C (graphics supports 8 of 8 colors)
- 15 clock/analog board installed
- --------d-4F8100-----------------------------
- INT 4F - Common Access Method SCSI interface rev 2.3 - SEND CCB TO XPT/SIM
- AX = 8100h
- ES:BX -> CAM Control Block (CCB) (see #03229)
- Return: AH = status
- 00h successful
- 01h invalid CCB address (0000h:0000h)
- Note: the SCSI Interface Module (SIM) may complete the requested function
- and invoke the completion callback function before this call returns
- SeeAlso: AX=8200h,INT 2F/AX=7F01h,INT 4B"Common Access Method"
- (Table 03228)
- Values for CAM function code:
- 00h NOP
- 01h execute SCSI I/O
- 02h get device type
- 03h path inquiry
- 04h release SIM queue
- 05h set async callback
- 06h set device type
- 07h-0Fh reserved
- 10h abort SCSI command
- 11h reset SCSI bus
- 12h reset SCSI device
- 13h terminate I/O process
- 14h-1Fh reserved
- 20h engine inquiry
- 21h execute engine request
- 22h-2Fh reserved
- 30h enable logical unit number
- 31h execute target I/O
- 32h-7Fh reserved
- 80h-FFh vendor-specific functions
- Format of CAM Control Block:
- Offset Size Description (Table 03229)
- 00h DWORD physical address of this CCB
- 04h WORD CAM control block length
- 06h BYTE function code (see #03228)
- 07h BYTE CAM status (see #03232)
- 08h BYTE SCSI status
- 09h BYTE path ID (FFh = XPT)
- 0Ah BYTE target ID
- 0Bh BYTE logical unit number
- 0Ch WORD CAM flags (see #03230)
- 0Eh BYTE CAM address flags (see #03231)
- 0Fh BYTE target-mode flags (see #03233)
- ---function 02h---
- 10h DWORD pointer to 36-byte buffer for inquiry data or 0000h:0000h
- 14h BYTE peripheral device type of target logical unit number
- ---function 03h---
- 10h BYTE version number (00h-07h prior to rev 1.7, 08h = rev 1.7,
- 09h-FFh = rev no, i.e. 23h = rev 2.3)
- 11h BYTE SCSI capabilities (see #03234)
- 12h BYTE target mode support
- bit 7: processor mode
- bit 6: phase-cognizant mode
- bit 5-0: reserved
- 13h BYTE miscellaneous flags
- bit 7: scanned high to low instead of low to high
- bit 6: removables not included in scan
- bit 5: inquiry data not kept by XPT
- bits 4-0: reserved
- 14h WORD engine count
- 16h 14 BYTEs vendor-specific data
- 24h DWORD size of private data area
- 28h DWORD asynchronous event capabilities (see #03235)
- 2Ch BYTE highest path ID assigned
- 2Dh BYTE SCSI device ID of initiator
- 2Eh 2 BYTEs reserved
- 30h 16 BYTEs SIM vendor ID
- 40h 16 BYTEs HBA (host bus adaptor) vendor ID
- 50h 4 BYTEs operating-system dependant usage
- ---functions 00h,04h,11h,12h---
- no additional fields
- ---function 05h---
- 10h DWORD asynchronous event enables (refer to function 03h above)
- 14h DWORD pointer to asynchronous callback routine (see #03241)
- 18h DWORD pointer to peripheral driver buffer
- 1Ch BYTE size of peripheral buffer
- ---function 06h---
- 10h BYTE peripheral device type of target
- ---functions 10h,13h---
- 10h DWORD pointer to CCB to be aborted
- ---function 20h---
- 10h WORD engine number
- 12h BYTE engine type
- 00h buffer memory
- 01h lossless compression
- 02h lossy compression
- 03h encryption
- 13h BYTE engine algorithm ID
- 00h vendor-unique
- 01h LZ1 variation 1 (STAC)
- 02h LZ2 variation 1 (HP DCZL)
- 03h LZ2 variation 2 (Infochip)
- 14h DWORD engine memory size
- ---function 21h---
- 10h DWORD pointer to peripheral driver
- 14h 4 BYTEs reserved
- 18h DWORD OS-dependent request-mapping info
- 1Ch DWORD address of completion callback routine
- 20h DWORD pointer to scatter/gather list or data buffer
- 24h DWORD length of data transfer
- 28h DWORD pointer to engine buffer data
- 2Ch 2 BYTEs reserved
- 2Eh WORD number of scatter/gather entries
- 30h DWORD maximum destination data length
- 34h DWORD length of destination data
- 38h DWORD source residual length
- 3Ch 12 BYTEs reserved
- 48h DWORD OS-dependent timeout value
- 4Ch 4 BYTEs reserved
- 50h WORD engine number
- 52h WORD vendor-unique flags
- 54h 4 BYTEs reserved
- 58h N BYTEs private data area for SIM
- ---function 30h---
- 10h WORD group 6 vendor-unique CDB length
- 12h WORD group 7 vendor-unique CDB length
- 14h DWORD pointer to target CCB list
- 18h WORD number of target CCBs
- ---other functions---
- 10h DWORD pointer to peripheral driver
- 14h DWORD pointer to next CCB
- 18h DWORD OS-dependent request mapping information
- 1Ch DWORD address of completion callback routine (see #03240)
- 20h DWORD pointer to scatter/gather list or data buffer
- 24h DWORD length of data transfer
- 28h DWORD pointer to sense info buffer
- 2Ch BYTE length of sense info buffer
- 2Dh BYTE CDB length
- 2Eh WORD number of scatter/gather entries
- scatter/gather list is array of 2N DWORDs, each pair specifying
- the address and length of a data block
- 30h 4 BYTEs vendor-specific data
- 34h BYTE (ret) SCSI status
- 35h BYTE (ret) auto-sense residual length
- 36h 2 BYTEs reserved
- 38h DWORD (ret) residual length
- 40h 12 BYTEs Command Descriptor Block (CDB) (see #03236,#03237,#03238)
- 44h DWORD OS-dependent timeout value
- 48h DWORD pointer to message buffer
- 4Ch WORD length of message buffer
- 4Eh WORD vendor-unique flags
- 50h BYTE tag queue action
- 51h 3 BYTEs reserved
- 54h N BYTEs private data area for SIM
- Bitfields for CAM flags:
- Bit(s) Description (Table 03230)
- 0 CDB is a pointer
- 1 tagged queue action enable
- 2 linked CDB
- 3 disable callback on completion
- 4 scatter/gather
- 5 disable autosense
- 7-6 direction (00 reserved, 01 in, 10 out, 11 no data transfer)
- 9-8 reserved
- 10 engine synchronize
- 11 SIM queue freeze
- 12 SIM queue priority
- 1 head insertion
- 0 tail insertion (normal)
- 13 disable synchronous transfers \ mutually
- 14 initiate synchronous transfers / exclusive
- 15 disable disconnect
- Bitfields for CAM address flags:
- Bit(s) Description (Table 03231)
- 7 SG list/data (0 = host, 1 = engine)
- 6 CDB pointer (6-1: 0=virtual addr, 1=phys addr)
- 5 SG list/data
- 4 sense buffer
- 3 message buffer
- 2 next CCB
- 1 callback on completion
- 0 reserved
- (Table 03232)
- Values for CAM status:
- 00h request in progress
- 01h request successful
- 02h host aborted request
- 03h unable to abort request
- 04h request completed with error
- 05h CAM is busy
- 06h invalid request
- 07h invalid path ID
- 08h no such SCSI device
- 09h unable to terminate I/O process
- 0Ah timeout on target selection
- 0Bh timeout on command
- 0Dh receive message rejection
- 0Eh sent/received SCSI bus reset
- 0Fh detected uncorrectable parity error
- 10h Autosense request failed
- 11h no HBA detected
- 12h data over/underrun
- 13h bus freed unexpectedly
- 14h target bus phase sequence failure
- 15h CCB too small
- 16h requested capability not available
- 17h sent bus device reset
- 18h terminate I/O process
- 38h invalid LUN
- 39h invalid target ID
- 3Ah unimplemented function
- 3Bh nexus not established
- 3Ch invalid initiator ID
- 3Dh received SCSI Command Descriptor Block
- 3Eh LUN already enabled
- 3Fh SCSI bus busy
- Note: bit 6 set to indicate frozen SIM queue
- bit 7 set to indicate valid autosense
- Bitfields for CAM target-mode flags:
- Bit(s) Description (Table 03233)
- 7 data buffer valid
- 6 status valid
- 5 message buffer valid
- 4 reserved
- 3 phase-cognizant mode
- 2 target CCB available
- 1 disable autodisconnect
- 0 disable autosave/restore
- Bitfields for SCSI capabilities:
- Bit(s) Description (Table 03234)
- 7 modify data pointers
- 6 wide bus (32 bits)
- 5 wide bus (16 bits)
- 4 synchronous transfers
- 3 linked commands
- 2 reserved
- 1 tagged queueing
- 0 soft reset
- Bitfields for CAM asynchronous event capabilities:
- Bit(s) Description (Table 03235)
- 31-24 vendor-specific
- 23-8 reserved
- 7 new devices found during rescan
- 6 SIM module deregistered
- 5 SIM module registered
- 4 sent bus device reset to target
- 3 SCSI AEN
- 2 reserved
- 1 unsolicited reselection
- 0 unsolicited SCSI bus reset
- Format of Six-Byte SCSI Command Descriptor Block (CDB):
- Offset Size Description (Table 03236)
- 00h BYTE operation code (see #03239)
- 01h BYTE logical unit number (bits 7-5), SCSI-1/SCSI-2
- MSB of logical block address (bits 4-0)
- 02h WORD logical block address (low word)
- 04h BYTE transfer length
- 05h BYTE control byte
- SeeAlso: #03237,#03238
- Format of Ten-Byte SCSI Command Descriptor Block (CDB):
- Offset Size Description (Table 03237)
- 00h BYTE operation code (see #03239)
- 01h BYTE logical unit number (bits 7-5), SCSI-1/SCSI-2
- reserved in SCSI-3
- 02h DWORD logical block address (low word)
- 06h BYTE reserved
- 07h WORD transfer length
- 09h BYTE control byte
- SeeAlso: #03236,#03238
- Format of Twelve-Byte SCSI Command Descriptor Block (CDB):
- Offset Size Description (Table 03238)
- 00h BYTE operation code (see #03239)
- 01h BYTE logical unit number (bits 7-5), SCSI-1/SCSI-2
- reserved in SCSI-3
- 02h DWORD logical block address (low word)
- 06h DWORD transfer length
- 0Ah BYTE reserved
- 0Bh BYTE control byte
- SeeAlso: #03236,#03237
- (Table 03239)
- Values for SCSI CDB operation code for direct-access devices:
- 00h Test Unit Ready
- 01h Rezero Unit
- 03h Request Sense
- 04h Format Unit
- 07h Reassign Blocks
- 08h Read (6-byte CDB)
- 0Ah Write (6-byte CDB)
- 0Bh Seek (6-byte CDB)
- 12h Inquiry
- 15h Mode Select (6-byte CDB)
- 16h Reserve
- 17h Release
- 18h Copy
- 1Ah Mode Sense (6-byte CDB)
- 1Bh Start/Stop Unit
- 1Ch Receive Diagnostic Results
- 1Dh Send Diagnostic
- 1Eh Prevent/Allow Medium Removal
- 25h Read Capacity
- 28h Read (10-byte CDB)
- 2Ah Write (10-byte CDB)
- 2Bh Seek (10-byte CDB)
- 2Eh Write and Verify
- 2Fh Verify
- 30h Search Data High
- 31h Search Data Equal
- 32h Search Data Low
- 33h Set Limits
- 34h Prefetch
- 35h Synchronize Cache
- 36h Lock/Unlock Cache
- 37h Read Defect Data
- 39h Compare
- 3Ah Copy and Verify
- 3Bh Write Buffer
- 3Ch Read Buffer
- 3Eh Read Long
- 3Fh Write Long
- 40h Change Definition
- 41h Write Same
- 4Ch Log Select
- 4Dh Log Sense
- 55h Mode Select (10-byte CDB)
- 5Ah Mode Sense (10-byte CDB)
- SeeAlso: #03236,#03237,#03238
- (Table 03240)
- Values completion callback function is called with:
- interrupts disabled
- ES:BX -> completed CCB
- (Table 03241)
- Values asynchronous callback function is called with:
- AH = opcode
- AL = path ID generating callback
- DH = target ID causing event
- DL = LUN causing event
- CX = data byte count (if applicable)
- ES:BX -> data buffer (if applicable)
- Return: all registers preserved
- --------d-4F8200CX8765-----------------------
- INT 4F - Common Access Method SCSI interface rev 2.3 - INSTALLATION CHECK
- AX = 8200h
- CX = 8765h
- DX = CBA9h
- Return: AH = 00h if installed
- CX = 9ABCh
- DX = 5678h
- ES:DI -> "SCSI_CAM"
- SeeAlso: AX=8100h,INT 4B"Common Access Method"
- --------N-50---------------------------------
- INT 50 - TIL Xpert AIM (X.25)
- AH = function
- --------H-50---------------------------------
- INT 50 - IRQ0 relocated by DESQview
- Range: INT 50 to INT F8, selected automatically
- Notes: this is the default location for older versions; DESQview v2.26+
- searches for unused ranges of interrupts and uses the lowest
- available range in its list for relocating these IRQs and the next
- lowest for relocating IRQ8-IRQ15
- a range of eight interrupts starting at a multiple of 8 is considered
- available if all vectors are identical and it has not been excluded
- with an /XB:nn commandline switch
- the list of ranges for v2.26 is 50h,58h,68h,78h,F8h (if < two of these
- are available, F8h and then 50h are used anyway)
- the list of ranges for v2.31+ is 68h,78h,88h-B8h,F8h (if < two of these
- are available, F8h and then F0h are used anyway)
- SeeAlso: INT 08"IRQ0",INT 51"DESQview",INT 54"DESQview",INT 58"DESQview"
- SeeAlso: INT D8"Screen Thief"
- --------H-50---------------------------------
- INT 50 - IRQ0 relocated by IBM 3278 emulation control program
- SeeAlso: INT 51"IBM 3278"
- --------H-50---------------------------------
- INT 50 - IRQ0 relocated by OS/2 v1.x
- SeeAlso: INT 51"OS/2"
- ----------50---------------------------------
- INT 50 - TI Professional PC - FATAL SOFTWARE ERROR TRAP
- Desc: the default handler generates a System Error message and halts the
- computer such that only Ctrl-Alt-Del can restart operation
- Note: documented as "for system use only"; intended for multi-tasking
- software
- SeeAlso: INT 40"TI Professional",INT 4F"TI Professional"
- SeeAlso: INT 51"TI Professional",INT 53"TI Professional"
- --------V-500000-----------------------------
- INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - OPEN TEXT WINDOW
- AX = 0000h
- ES:BX -> name string or ES:0000h if none
- CH,CL = row,column of upper left corner
- DH,DL = row,column of lower right corner
- Return: AX = window handle or
- 0000h if not installed
- FFFFh on error
- SeeAlso: AX=0001h,AX=0002h"TEXT WINDOWS"
- --------V-500001-----------------------------
- INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - CLOSE TEXT WINDOW
- AX = 0001h
- DI = window handle
- SeeAlso: AX=0000h
- --------V-500002-----------------------------
- INT 50 - Vanderaart TEXT WINDOWS - PUT CHARACTER IN WINDOW
- AX = 0002h
- BL = character
- BH = attribute
- DL = column
- DH = row
- DI = window handle
- Return: AX = status
- 0000h if successful
- FFFFh if outside window
- SeeAlso: AX=0000h
- --------l-500002-----------------------------
- INT 50 - PC Thuis Organizer Shell - PLOT TEXT
- AX = 0002h
- ES:BX -> text string
- DH,DL = row,column of upper left corner
- DI = window handle
- Return: AX = status
- 0000h successful (text fits in window)
- FFFFh error
- Program: The PC Thuis Organizer Shell was written by John Vanderaart and
- published in the June/July 1990 issue of PC Thuis Power magazine
- --------V-500003-----------------------------
- INT 50 - Vanderaart TEXT WINDOWS - OUTPUT LINE TO WINDOW
- AX = 0003h
- ES:BX -> text string
- CX = string length (0000h if ASCIZ string)
- DL = position (FFh centered, else flush left)
- DH = starting row
- DI = window handle
- Return: AX = status
- 0000h successful
- FFFFh did not fit in window
- --------l-500003-----------------------------
- INT 50 - PC Thuis Organizer Shell - WRITE FILE
- AX = 0003h
- ES:BX -> data to be written
- CX = number of bytes to write
- DS:SI -> filename
- Return: AX = status
- 0000h successful
- FFFFh error
- SeeAlso: AX=0004h"Shell"
- --------V-500004-----------------------------
- INT 50 - Vanderaart TEXT WINDOWS - GET KEY
- AX = 0004h
- CH = type
- 00h any key
- 01h 'J' or 'N' (Dutch for yes/no)
- Return: AX = key
- SeeAlso: INT 16/AH=00h
- --------l-500004-----------------------------
- INT 50 - PC Thuis Organizer Shell - READ FILE
- AX = 0004h
- ES:BX -> buffer for data
- CX = number of bytes to read or 0000h for entire file
- DL = file type
- 01h setting shell
- 02h setting sterm
- 03h INT21 file
- DS:SI -> filename
- Return: AX = status
- 0000h successful
- FFFFh error
- Note: file type numbers are maintained by John Vanderaart; if a new file type
- is needed, a type number should be requested from him through the
- magazine:
- PC Thuis BV
- Spaarne 55
- 2011 CE HAARLEM
- The Netherlands
- SeeAlso: AX=0003h"Shell"
- --------V-500005-----------------------------
- INT 50 - Vanderaart TEXT WINDOWS - CHANGE ATTRIBUTE
- AX = 0005h
- BL = new attribute
- CH,CL = row,column of upper left corner
- DH,DL = row,column of lower right corner
- DI = window handle
- --------l-500005-----------------------------
- INT 50 - PC Thuis Organizer Shell - PROMPT YES/NO
- AX = 0005h
- ES:BX -> prompt string (ES:0000h if no prompt)
- Return: AX = key pressed
- 0000h "J" (Dutch "Ja" = "Yes")
- FFFFh "N" (Dutch "Nee" = "No")
- Program: The PC Thuis Organizer Shell was written by John Vanderaart and
- published in the June/July 1990 issue of PC Thuis Power magazine
- SeeAlso: AX=0008h"PC Thuis"
- --------V-500006-----------------------------
- INT 50 - Vanderaart TEXT WINDOWS - EDIT LINE IN WINDOW
- AX = 0006h
- ES:BX -> text string
- CH = type of input (see #03242)
- DH,DL = row,column of upper left corner
- DI = window handle
- Return: AX = key which terminated entry
- 0000h Enter
- 0001h Esc
- 0002h Down arrow
- 0003h Up arrow
- 0004h F10
- (Table 03242)
- Values for type of input to Vanderaart Text Windows:
- 00h everything
- 01h uppercase only
- 02h positive numbers
- 03h Dutch postal code ("9999 AA")
- 04h 'J' or 'N' (Dutch yes/no)
- 05h telephone or FAX number
- 06h positive or negative number
- 07h date (dd/mm/yy)
- 08h money
- 09h '1' through '8'
- 0Ah '1' through '4'
- 0Bh uppercase filenames
- --------l-500006-----------------------------
- INT 50 - PC Thuis Organizer Shell - ALERT USER
- AX = 0006h
- ES:BX -> string
- --------l-500007-----------------------------
- INT 50 - PC Thuis Organizer Shell - DO LINE
- AX = 0007h
- ES:BX -> text string
- CX = string length in bytes (0000h if NUL-terminated)
- DL = FFh to center string, else flush left
- DH = upper left row
- DI = window handle
- Return: AX = status
- 0000h successful
- FFFFh error
- Program: The PC Thuis Organizer Shell was written by John Vanderaart and
- published in the June/July 1990 issue of PC Thuis Power magazine
- SeeAlso: AX=0008h
- --------l-500008-----------------------------
- INT 50 - PC Thuis Organizer Shell - DO MENU
- AX = 0008h
- ES:BX -> menu structure
- Return: AL = index 1 or FFh if not selected
- AH = index 2 or FFh if not selected
- BL = index 3 or FFh if not selected
- BH = index 4 or FFh if not selected
- SeeAlso: AX=0005h"PC Thuis",AX=0007h,AX=000Ch
- --------l-500009-----------------------------
- INT 50 - PC Thuis Organizer Shell - MESSAGE ON
- AX = 0009h
- ES:BX -> message string
- SeeAlso: AX=000Ah
- --------l-50000A-----------------------------
- INT 50 - PC Thuis Organizer Shell - MESSAGE OFF
- AX = 000Ah
- SeeAlso: AX=0009h
- --------l-50000B-----------------------------
- INT 50 - PC Thuis Organizer Shell - CHANGE ATTRIBUTE
- AX = 000Bh
- BL = new attribute
- CH,CL = row,column of upper left corner
- DH,DL = row,column of lower right corner
- DI = window handle
- --------l-50000C-----------------------------
- INT 50 - PC Thuis Organizer Shell - DO REQUEST
- AX = 000Ch
- ES:BX -> request structure
- Return: AX = status
- 0000h confirmed
- FFFFh denied
- SeeAlso: AX=0008h
- --------l-50000D-----------------------------
- INT 50 - PC Thuis Organizer Shell - EDIT LINE
- AX = 000Dh
- ES:BX -> text string
- CL = length
- CH = input type (see #03243)
- DH,DL = row,column of upper left corner
- DI = window handle
- Return: AX = result code
- Program: The PC Thuis Organizer Shell was written by John Vanderaart and
- published in the June/July 1990 issue of PC Thuis Power magazine
- Bitfields for input type:
- Bit(s) Description (Table 03243)
- 0 force uppercase
- 1 integer
- 2 no spaces allowed
- 3 no cursor keys
- --------l-50000E-----------------------------
- INT 50 - PC Thuis Organizer Shell - PLOT CHARACTER
- AX = 000Eh
- BL = character
- BH = attribute
- DH,DL = row,column at which to plot
- DI = window handle
- Return: AX = status
- 0000h successful
- FFFFh errror
- --------l-50000F-----------------------------
- INT 50 - PC Thuis Organizer Shell - EMPTY WINDOW
- AX = 000Fh
- BL = character
- BH = attribute
- DI = window handle
- --------l-500010-----------------------------
- INT 50 - PC Thuis Organizer Shell - TRACE MENU
- AX = 0010h
- ES:BX -> first menu structure
- CL = hotkey to look up
- Return: AL = index 1 or FFh if not selected
- AH = index 2 or FFh if not selected
- BL = index 3 or FFh if not selected
- BH = index 4 or FFh if not selected
- Index: hotkeys;PC Thuis Organizer Shell
- --------l-500011-----------------------------
- INT 50 - PC Thuis Organizer Shell - MOVE MEMORY
- AX = 0011h
- DS:SI -> source
- ES:DI -> destination
- CX = number of bytes to move (0000h = until NUL string terminator???)
- SeeAlso: AX=0012h
- --------l-500012-----------------------------
- INT 50 - PC Thuis Organizer Shell - COMPARE MEMORY
- AX = 0012h
- DS:SI -> source
- ES:DI -> destination
- CX = number of bytes to compare (0000h=until NUL string terminator???)
- Return: AX = status
- 0000h same
- FFFFh different
- SeeAlso: AX=0011h
- --------l-500013-----------------------------
- INT 50 - PC Thuis Organizer Shell - GET KEY
- AX = 0013h
- CH = type flags
- bit 0: force uppercase
- bit 1: integer
- bit 2: no spaces
- Return: AX = keystroke
- --------l-500014-----------------------------
- INT 50 - PC Thuis Organizer Shell - SCROLL WINDOW
- AX = 0014h
- BL = direction
- 06h up
- 07h down
- BH = attribute
- DI = window handle
- SeeAlso: INT 10/AH=06h,INT 10/AH=07h
- --------l-500015-----------------------------
- INT 50 - PC Thuis Organizer Shell - GET MEMORY HANDLE
- AX = 0015h
- BL = handle size
- 00h 65536 bytes (64K)
- 01h 65535 bytes (64K-1)
- 02h 32768 bytes (32K)
- 03h 32767 bytes (32K-1)
- Return: AX = segment
- Program: The PC Thuis Organizer Shell was written by John Vanderaart and
- published in the June/July 1990 issue of PC Thuis Power magazine
- SeeAlso: INT 21/AH=48h
- --------H-51---------------------------------
- INT 51 - IRQ1 relocated by DESQview
- Range: INT 51 to INT F9, selected automatically
- Note: this is the default location for older versions; see INT 50"DESQview"
- for details of interrupt relocation
- SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
- --------H-51---------------------------------
- INT 51 - IRQ1 relocated by IBM 3278 emulation control program
- SeeAlso: INT 50"IBM 3278",INT 54"IBM 3278"
- --------H-51---------------------------------
- INT 51 - IRQ1 relocated by OS/2 v1.x
- SeeAlso: INT 50"OS/2",INT 54"OS/2"
- ----------51---------------------------------
- INT 51 - TI Professional PC - RESTART TIMING EVENT
- AX = timer count in 25ms intervals
- DS:DI -> timing-event table (see #03244)
- Note: documented as "for system use only"; intended for multi-tasking
- software
- SeeAlso: INT 50"TI Professional",INT 52"TI Professional"
- Format of TI Professional PC timing event table:
- Offset Size Description (Table 03244)
- 00h WORD offset of next event table entry
- 02h BYTE normally unused (FFh)
- 03h BYTE flags:
- bit 7 set if timing event active
- bits 6-0 not used by BIOS (0), but could be used by option ROMs
- 04h WORD timeout count (decremented every 25ms when active)
- 06h WORD offset of event handler (in segment F400h) to call on event
- timeout; the F400h segment allows addressing both system ROMs
- and the first 16K of memory (due to the 1M memory wraparound)
- --------b-51---------------------------------
- INT 51 - Tandy 2000 - KEYBOARD SERVICES
- Note: this interrupt is identical to INT 16 on Tandy 2000
- SeeAlso: INT 16/AH=00h,INT 16/AH=01h,INT 16/AH=02h,INT 16/AH=04h"Tandy"
- SeeAlso: INT 16/AH=04h,INT 4A"Tandy 2000",INT 4C"Tandy 2000",INT 52"Tandy 2000"
- --------H-52---------------------------------
- INT 52 - IRQ2 relocated by DESQview
- Range: INT 52 to INT FA, selected automatically
- Note: this is the default location for older versions; see INT 50"DESQview"
- for details of interrupt relocation
- SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
- --------H-52---------------------------------
- INT 52 - IRQ2 relocated by IBM 3278 emulation control program, OS/2 v1.x
- SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
- ----------52---------------------------------
- INT 52 - TI Professional PC - CANCEL TIMING EVENT
- DS:DI -> timing-event table (see #03244)
- Note: documented as "for system use only"; intended for multi-tasking
- software
- SeeAlso: INT 51"TI Professional",INT 53"TI Professional"
- --------b-52---------------------------------
- INT 52 - Tandy 2000 - VIDEO SERVICES
- Note: this interrupt is identical to INT 10
- SeeAlso: INT 10/AH=00h,INT 10/AH=01h,INT 10/AH=08h,INT 10/AH=0Eh
- SeeAlso: INT 4A"Tandy 2000",INT 51"Tandy 2000",INT 53"Tandy 2000"
- --------H-53---------------------------------
- INT 53 - IRQ3 relocated by DESQview
- Range: INT 53 to INT FB, selected automatically
- Note: this is the default location for older versions; see INT 50"DESQview"
- for details of interrupt relocation
- SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
- --------H-53---------------------------------
- INT 53 - IRQ3 relocated by IBM 3278 emulation control program, OS/2 v1.x
- SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
- ----------53---------------------------------
- INT 53 - TI Professional PC - SVC INTERFACE
- Notes: documented as "for system use only"; intended for multi-tasking
- software
- this interrupt is not used by the BIOS; the default handler generates
- a system error trap (see INT 51"TI Professional")
- SeeAlso: INT 50"TI Professional",INT 54"TI Professional"
- --------b-53---------------------------------
- INT 53 - Tandy 2000 - SERIAL COMMUNICATIONS
- Note: this interrupt is identical to INT 14 on Tandy 2000
- SeeAlso: INT 14/AH=00h"SERIAL",INT 14/AH=01h,INT 14/AH=02h,INT 14/AH=03h
- SeeAlso: INT 14/AH=04h"Tandy 2000",INT 52"Tandy 2000",INT 54"Tandy 2000"
- --------N-53---------------------------------
- INT 53 - WEB??? - API
- BX = function
- 0000h ???
- AX = ???
- Return: AX = ???
- 0004h ???
- 0009h ???
- 0015h
- AX = ???
- DX = ???
- 0017h
- Return: ???
- InstallCheck: check for the signature "WEBCO" immediately prior to the
- interrupt handler
- Note: the above calls are made by Show Partner F/X v3.6 (see INT 10/AH=53h)
- Index: installation check;unknown|installation check;WEBCO
- --------H-54---------------------------------
- INT 54 - IRQ4 relocated by DESQview
- Range: INT 54 to INT FC, selected automatically
- Note: this is the default location for older versions; see INT 50"DESQview"
- for details of interrupt relocation
- SeeAlso: INT 50"DESQview",INT 58"DESQview"
- --------H-54---------------------------------
- INT 54 - IRQ4 relocated by IBM 3278 emulation control program, OS/2 v1.x
- SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
- ----------54---------------------------------
- INT 54 - TI Professional PC - ACTIVATE TASK SUBROUTINE
- Notes: documented as "for system use only"; intended for multi-tasking
- software
- this interrupt is not used by the BIOS; the default handler generates
- a system error trap (see INT 51"TI Professional")
- SeeAlso: INT 50"TI Professional",INT 53"TI Professional"
- --------b-54---------------------------------
- INT 54 - Tandy 2000 - LINE PRINTER
- Note: this interrupt is identical to INT 17 on Tandy 2000
- SeeAlso: INT 17/AH=00h,INT 17/AH=01h,INT 17/AH=02h,INT 4A"Tandy 2000"
- SeeAlso: INT 53"Tandy 2000",INT 55"Tandy 2000"
- --------X-545400-----------------------------
- INT 54 U - Toshiba PCMCIA2 - INSTALLATION CHECK
- AX = 5400h
- Return: AX = 0054h if installed
- CX:DX -> INT function handler
- --------H-55---------------------------------
- INT 55 - IRQ5 relocated by DESQview
- Range: INT 55 to INT FD, selected automatically
- Note: this is the default location for older versions; see INT 50"DESQview"
- for details of interrupt relocation
- SeeAlso: INT 50"DESQview",INT 58"DESQview"
- --------H-55---------------------------------
- INT 55 - IRQ5 relocated by IBM 3278 emulation control program, OS/2 v1.x
- SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
- --------b-55---------------------------------
- INT 55 - TI Professional PC - RESERVED FOR FUTURE USE
- Notes: documented as "for system use only"; intended for multi-tasking
- software
- this interrupt is not used by the BIOS; the default handler generates
- a system error trap (see INT 51"TI Professional")
- SeeAlso: INT 50"TI Professional",INT 56"TI Professional"
- --------b-55---------------------------------
- INT 55 - Tandy 2000 - SYSTEM CLOCK
- Note: this interrupt is identical to INT 1A on Tandy 2000
- SeeAlso: INT 1A/AH=00h,INT 1A/AH=01h,INT 1A/AH=02h"Tandy 2000"
- SeeAlso: INT 1A/AH=03h"Tandy 2000",INT 54"Tandy 2000",INT 56"Tandy 2000"
- --------H-56---------------------------------
- INT 56 - IRQ6 relocated by DESQview
- Range: INT 56 to INT FE, selected automatically
- Note: this is the default location for older versions; see INT 50"DESQview"
- for details of interrupt relocation
- SeeAlso: INT 50"DESQview",INT 58"DESQview"
- --------H-56---------------------------------
- INT 56 - IRQ6 relocated by IBM 3278 emulation control program, OS/2 v1.x
- SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
- --------b-56---------------------------------
- INT 56 - TI Professional PC - RESERVED FOR FUTURE USE
- Notes: documented as "for system use only"; intended for multi-tasking
- software
- this interrupt is not used by the BIOS; the default handler generates
- a system error trap (see INT 51"TI Professional")
- SeeAlso: INT 50"TI Professional",INT 55"TI Professional"
- --------b-56---------------------------------
- INT 56 - Tandy 2000 - FLOPPY DISK SERVICES
- Note: this interrupt is identical to INT 13 on Tandy 2000
- SeeAlso: INT 13/AH=00h,INT 13/AH=01h,INT 13/AH=02h,INT 13/AH=03h
- SeeAlso: INT 4A"Tandy 2000",INT 51"Tandy 2000",INT 55"Tandy 2000"
- --------H-57---------------------------------
- INT 57 - IRQ7 relocated by DESQview
- Range: INT 57 to INT FF, selected automatically
- Note: this is the default location for older versions; see INT 50"DESQview"
- for details of interrupt relocation
- SeeAlso: INT 50"DESQview",INT 58"DESQview"
- --------H-57---------------------------------
- INT 57 - IRQ7 relocated by IBM 3278 emulation control program, OS/2 v1.x
- SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
- --------b-57---------------------------------
- INT 57 C - TI Professional PC - CRT MAPPING HOOK
- AX/BX/CX/DX/BP/SI/DI same as on entry to CRT subroutine (e.g. INT 49)
- DS = BIOS system segment
- ES = DE00h
- Return: DF/IF flags must be preserved
- ES,DS,BP preserved
- AX,BX,CX,DX,SI,DI may be changed as necessary to modify the original
- call
- Desc: hooking this vector permits programs to intercept or modify all
- screen output, including both application calls to INT 49 and
- calls generated internally by the BIOS which bypass INT 49
- Note: by default, this vector points at an IRET instruction
- SeeAlso: INT 49/AH=01h"TI",INT 50"TI Professional"
- --------H-58---------------------------------
- INT 58 - IRQ8 relocated by DESQview 2.26+
- Range: INT 58 to INT F8, selected automatically
- Note: this is the default, but other INTs may be used (see INT 50"DESQview")
- SeeAlso: INT 50"DESQview",INT 59"DESQview",INT 70
- --------H-58---------------------------------
- INT 58 - IRQ0 relocated by DoubleDOS
- SeeAlso: INT 08
- --------b-58---------------------------------
- INT 58 C - TI Professional PC - SYSTEM TIMER 25ms HOOK
- Desc: called from the hardware timer tick interrupt, after executing the
- first four BIOS timing events, updating the system clock, invoking
- INT 5A if required, saving registers, and switching to a temporary
- stack (the one reserved for IRQ3)
- Notes: the handler for this interrupt may destroy AX,BX,DI,ES but must
- preserve all other registers; 8 WORDs of stack space are available,
- of which at most 4 may be used if the handler enables interrupts
- if the handler switches stacks (because more than 4/8 WORDs are
- required), the original stack must be restored before chaining to
- the previous handler
- SeeAlso: INT 43"TI Professional",INT 4C"TI Professional"
- SeeAlso: INT 5A"TI Professional"
- --------H-59---------------------------------
- INT 59 - IRQ9 relocated by DESQview 2.26+
- Range: INT 59 to INT F9, selected automatically
- Note: this is the default, but other INTs may be used (see INT 50"DESQview")
- SeeAlso: INT 50"DESQview",INT 58"DESQview",INT 5A"DESQview",INT 71
- --------H-59---------------------------------
- INT 59 - IRQ1 relocated by DoubleDOS
- SeeAlso: INT 09
- --------b-59---------------------------------
- INT 59 - TI Professional PC - COMMON ROM HARDWARE INTERRUPT EXIT VECTOR
- Desc: all hardware interrupts on the TI Pro jump indirectly to the handler
- pointed at by this interrupt vector to finish their handling of
- the hardware interrupt
- Notes: the default handler decrements the interrupt count, restores registers
- (including the stack pointer), sends an EOI to the interrupt
- controller, and finally does an IRET
- can be used by multitaskers which need to get control after every
- hardware interrupt
- SeeAlso: INT 40"TI Professional",INT 47"TI Professional"
- SeeAlso: INT 53"TI Professional"
- --------V-59---------------------------------
- INT 59 - GSS Computer Graphics Interface (GSS*CGI)
- DS:DX -> block of 5 array pointers
- Return: CF set on error
- AX = error code
- CF clear if successful
- AX = return code
- Note: INT 59 is the means by which GSS*CGI language bindings communicate with
- GSS*CGI device drivers and the GSS*CGI device driver controller.
- also used by the IBM Graphic Development Toolkit
- --------H-5A---------------------------------
- INT 5A - IRQ10 relocated by DESQview 2.26+
- Range: INT 5A to INT FA, selected automatically
- Note: this is the default, but other INTs may be used (see INT 50"DESQview")
- SeeAlso: INT 50"DESQview",INT 59"DESQview",INT 5B"DESQview",INT 72
- --------H-5A---------------------------------
- INT 5A - IRQ2 relocated by DoubleDOS
- SeeAlso: INT 0A"IRQ2"
- --------N-5A---------------------------------
- INT 5A - PC Cluster adapter BIOS entry address
- ???
- Return: ???
- SeeAlso: INT 5B"PC Cluster"
- --------b-5A---------------------------------
- INT 5A - TI Professional PC - SYSTEM TIMER 100ms HOOK
- Desc: called from the hardware timer tick interrupt, after executing the
- first four BIOS timing events, updating the system clock, saving
- registers, and switching to a temporary stack (the one reserved
- for IRQ3), but before calling INT 58
- no details available
- Notes: this interrupt is invoked on every fourth timer interrupt
- the handler for this interrupt may destroy AX,BX,DI,ES but must
- preserve all other registers; 8 WORDs of stack space are available,
- of which at most 4 may be used if the handler enables interrupts
- if the handler switches stacks (because more than 4/8 WORDs are
- required), the original stack must be restored before chaining to
- the previous handler
- SeeAlso: INT 43"TI Professional",INT 4C"TI Professional"
- SeeAlso: INT 58"TI Professional"
- --------H-5B---------------------------------
- INT 5B - IRQ11 relocated by DESQview 2.26+
- Range: INT 5B to INT FB, selected automatically
- Note: this is the default, but other INTs may be used (see INT 50"DESQview")
- SeeAlso: INT 50"DESQview",INT 5A"DESQview",INT 5C"DESQview",INT 73
- --------H-5B---------------------------------
- INT 5B - IRQ3 relocated by DoubleDOS
- SeeAlso: INT 0B
- --------N-5B---------------------------------
- INT 5B - PC cluster adapter - RELOCATED INT 19
- SeeAlso: INT 19,INT 5A"PC Cluster"
- --------N-5B---------------------------------
- INT 5B - AT&T Starlan Extended NetBIOS (variable length names)
- ES:BX -> Network Control Block (see #03245)
- Return: AL = status (see #03248)
- SeeAlso: INT 5C"NetBIOS"
- Format of Starlan Network Control Block:
- Offset Size Description (Table 03245)
- 00h BYTE ncb_command (see also #03250)
- 70h send net Break
- 01h BYTE ncb_retcode
- 02h BYTE ncb_lsn
- 03h BYTE ncb_num
- 04h DWORD -> ncb_buffer
- 08h WORD ncb_length
- 0Ah 16 BYTEs ncb_callname
- 1Ah 16 BYTEs ncb_name
- 2Ah BYTE ncb_rto
- 2Bh BYTE ncb_sto
- 2Ch DWORD -> ncb_post /* int (far *ncb_post)(); */
- 30h BYTE ncb_lana_num
- 31h BYTE ncb_cmd_cplt
- 32h DWORD -> ncb_vname
- 36h BYTE ncb_vnamelen
- 37h 9 BYTEs ncb_reserve
- Note: fields 00h-31h are the same as for a standard NetBIOS NCB (see #03249)
- --------N-5B---------------------------------
- INT 5B - Microsoft Network Transport Layer Interface
- Note: used by MS-NET for executing network commands
- SeeAlso: INT 5C"NetBIOS"
- --------N-5B---------------------------------
- INT 5B - used by Alloy NTNX
- --------N-5B---------------------------------
- INT 5B - ISOLAN Multi Protocol Software
- ES:BX -> Transfer Control Block (see #03246)
- Return: AL = status
- Note: this software interface allows multiple protocols/software packages
- to access a BICC 411x network card
- Format of ISOLAN Transfer Control Block:
- Offset Type Description (Table 03246)
- 00h BYTE command code
- B3h Status
- F2h Activate
- F3h Deactivate
- F4h Send Data
- 01h BYTE command identity
- 02h BYTE virtual circuit ID
- 03h WORD buffer length
- 05h DWORD buffer pointer
- 09h BYTE expedited data flag
- 0Ah BYTE cancelable flag
- 0Bh 16 BYTEs local network address
- 1Bh 16 BYTEs remote network address
- 2Bh DWORD asynchronous notification routine
- 30h DWORD local network number
- 34h DWORD remote network number
- 38h BYTE call timeout
- 39h BYTE not used
- 3Ah 8 BYTEs reserved
- 42h BYTE command code extension
- 43h WORD Blue Book MAC type
- --------b-5B---------------------------------
- INT 5B C - TI Professional PC - KEYBOARD MAPPING HOOK
- CF set
- AH = shift state (see #03247)
- AL = scan code (see #03214)
- Return: BX, CX, DI, ES may be destroyed
- various return methods are supported:
- IRET, AX unchanged: process keystroke normally
- IRET, AL = FFh: discard keystroke
- IRET, AX changed: process modified keystroke
- chain to old INT 5B: allow other handlers to look at (possibly
- modified) keystroke in AX
- RETF 2, CF clear: place returned AX into keyboard buffer without
- any further processing
- Notes: invoked by the keyboard ISR, and used to remap the keyboard
- if CF is clear on entry, some other handler has processed the
- keystroke and the current handler should not modify it, instead
- performing a RETF 2 or IRET (after clearing CF on the stack)
- when requesting that a value be placed directly into the keyboard
- buffer, AL and AH may not *both* be nonzero (the TI does not
- return scan codes as part of the key code for non-extended keys)
- SeeAlso: INT 15/AH=4Fh,INT 4A/AH=00h"TI",INT 59"TI Professional"
- SeeAlso: INT 5C"TI Professional",INT 5D"TI Professional"
- SeeAlso: INT 5E"TI Professional",INT 5F"TI Professional"
- Bitfields for TI Professional PC keyboard mapping hook shift states:
- Bit(s) Description (Table 03247)
- 7 CAPS LOCK is on
- 6-4 reserved (0)
- 3 repeated key
- 2 Shift is pressed
- 1 Alt is pressed
- 0 Ctrl is pressed
- --------U-5B5254DL04-------------------------
- INT 5B U - SitBack v3.02R - GET ???
- AX = 5254h
- DL = 04h
- Return: ES:BX -> ??? in resident portion
- Program: SitBack is a background file backup utility by SitBack Technologies,
- Inc. which initiates backups whenever the system is idle
- SeeAlso: AX=8485h/DL=71h,AX=8485h/DL=72h
- --------U-5B8485DL70-------------------------
- INT 5B U - SitBack v3.02R - INSTALLATION CHECK
- AX = 8485h
- DL = 70h
- Return: CX = 8485h if installed
- DX:AX -> ??? (configuration data?)
- Program: SitBack is a background file backup utility by SitBack Technologies,
- Inc. which initiates backups whenever the system is idle
- SeeAlso: AX=5254h/DL=04h,AX=8485h/DL=78h
- --------U-5B8485DL71-------------------------
- INT 5B U - SitBack v3.02R - SET ??? FLAG AND GET ??? ADDRESS
- AX = 8485h
- DL = 71h
- Return: ES:BX -> FAR entry point to ???
- Note: the flag which is modified is located at the address returned by
- AX=5254h/DL=04h
- SeeAlso: AX=8485h/DL=72h
- --------U-5B8485DL72-------------------------
- INT 5B U - SitBack v3.02R - CLEAR ??? FLAG
- AX = 8485h
- DL = 72h
- Note: the flag which is modified is located at the address returned by
- AX=5254h/DL=04h
- SeeAlso: AX=8485h/DL=71h
- --------U-5B8485DL73-------------------------
- INT 5B U - SitBack v3.02R - ???
- AX = 8485h
- DL = 73h
- ???
- Return: ???
- --------U-5B8485DL74-------------------------
- INT 5B U - SitBack v3.02R - ???
- AX = 8485h
- DL = 74h
- ???
- Return: ???
- --------U-5B8485DL75-------------------------
- INT 5B U - SitBack v3.02R - ???
- AX = 8485h
- DL = 75h
- CX = ???
- Return: ???
- SeeAlso: AX=8485h/DL=76h
- --------U-5B8485DL76-------------------------
- INT 5B U - SitBack v3.02R - ???
- AX = 8485h
- DL = 76h
- CX = ???
- Return: ???
- Note: conditionally calls the code for AX=8485h/DL=75h
- SeeAlso: AX=8485h/DL=75h
- --------U-5B8485DL77-------------------------
- INT 5B U - SitBack v3.02R - SET ??? FLAG
- AX = 8485h
- DL = 77h
- --------U-5B8485DL78-------------------------
- INT 5B U - SitBack v3.02R - GET RESIDENT DATA SEGMENT
- AX = 8485h
- DL = 78h
- Return: CX = 5342h if supported
- ES = AX = segment of TSR data
- SeeAlso: AX=8485h/DL=70h,AX=8485h/DL=79h
- --------U-5B8485DL79-------------------------
- INT 5B U - SitBack v3.02R - GET DTA
- AX = 8485h
- DL = 79h
- Return: CX = 5342h if supported
- ES:BX -> DTA set by last INT 21/AH=1Ah
- Note: this function is provided by SBOS.EXE rather than SB.EXE
- SeeAlso: INT 21/AH=1Ah
- --------U-5B8485DL7A-------------------------
- INT 5B U - SitBack v3.02R - TOGGLE ???
- AX = 8485h
- DL = 7Ah
- Return: CX = 5342h if supported
- AL = new value of ??? (00h or 01h)
- --------N-5C---------------------------------
- INT 5C - NetBIOS INTERFACE
- ES:BX -> network control block (NCB) (see #03249)
- Return: AL = status (see #03248)
- Program: NetBIOS was developed by Sytek, Inc. in 1984 as a high-level
- programming interface to the IBM PC Network; the first implementation
- was a ROM BIOS extension on Sytek's PCnet LAN adapter card, but many
- current networks support NetBIOS as the session layer.
- Note: The Sytek PCnet card uses DMA 3.
- SeeAlso: INT 2A/AH=01h,INT 2A/AH=04h,INT 5B"Extended NetBIOS"
- (Table 03248)
- Values for NetBIOS status:
- 00h successful
- 01h bad buffer size
- 03h invalid NETBIOS command
- 05h timeout
- 06h receive buffer too small
- 07h No-ACK command failed
- 08h bad session number
- 09h LAN card out of memory
- 0Ah session closed
- 0Bh command has been cancelled
- 0Dh name already exists
- 0Eh local name table full
- 0Fh name still in use, can't delete
- 11h local session table full
- 12h remote PC not listening
- 13h bad NCB_NUM field
- 14h no answer to CALL or no such remote
- 15h name not in local name table
- 16h duplicate name
- 17h bad delete
- 18h abnormal end
- 19h name error, multiple identical names in use
- 1Ah bad packet
- 21h network card busy
- 22h too many commands queued
- 23h bad LAN card number
- 24h command finished while cancelling
- 26h command can't be cancelled
- 30h name defined by another process (OS/2)
- 34h NetBIOS environment not defined, must issue reset (OS/2)
- 35h required operating system resources exhausted (OS/2)
- 36h maximum applications exceeded (OS/2)
- 37h no SAPs available for NetBIOS (OS/2)
- 38h requested resources not available (OS/2)
- 40h Lana System Error
- 41h Lana Remote Hot Carrier
- 42h Lana Local Hot Carrier
- 43h Lana No Carrier Detected
- 44h unusual network condition
- 45h-4Dh hardware error
- 4Eh token ring is broken
- 4Fh token ring error
- 50h adapter malfunction
- F7h error in explicit INITIALIZE
- F8h error in implicit OPEN
- F9h TOKREUI internal error
- FAh hardware adapter testing
- FBh NetBIOS emulator not found
- FCh OPEN or OPEN_SAP failure
- FDh unexpected adapter closure
- FFh NetBIOS busy (command pending)
- Format of NetBIOS Network Control Block:
- Offset Size Description (Table 03249)
- 00h BYTE command code (see #03250)
- 01h BYTE return code (see #03248)
- 02h BYTE local session number (LSN)
- 03h BYTE "ncb_num" datagram table entry from ADD NAME
- 04h DWORD -> I/O buffer
- 08h WORD length of data in buffer
- 0Ah 16 BYTEs remote system to call
- 1Ah 16 BYTEs network name of local machine
- 2Ah BYTE receive timeout in 1/2 seconds
- 2Bh BYTE send timeout in 1/2 seconds
- 2Ch DWORD -> FAR post handler /* int (far *ncb_post)(); */
- 30h BYTE network adapter number on which to execute command
- 00h-03h IBM NetBIOS specs
- F0h-FFh Eicon NABios interface (see also INT 7B"Eicon")
- 31h BYTE command completion code (see #03248)
- 32h 14 BYTEs reserved for network card
- (Table 03250)
- Values for NetBIOS command code field in NCB:
- 10h start session with NCB_NAME name (call)
- 11h listen for call
- 12h end session with NCB_NAME name (hangup)
- 14h send data via NCB_LSN
- 15h receive data from a session
- 16h receive data from any session
- 17h send multiple data buffers
- 20h send unACKed message (datagram)
- 21h receive datagram
- 22h send broadcast datagram
- 23h receive broadcast datagram
- 30h add name to name table
- 31h delete name from name table
- 32h reset adapter card and tables
- 33h get adapter status (see #03251)
- 34h status of all sessions for name (see #03253)
- 35h cancel
- 36h add group name to name table
- 48h send data and receive data (LAN Manager NETBEUI.DOS)
- 70h unlink from IBM remote program (no F0h function)
- 71h send data without ACK
- 72h send multiple buffers without ACK
- 72h UngermannBass Register (conflicts with above function)
- 73h UngermannBass SendNmc
- 74h UngermannBass Callniu
- 75h UngermannBass Calladdr
- 76h UngermannBass Listenaddr
- 77h UngermannBass SendPkt
- 78h find name
- 78h UngermannBass RcvPkt (conflicts with above function)
- 79h token-ring protocol trace
- 79h UngermannBass SendAttn (conflicts with above function)
- 7Ah UngermannBass RcvAttn
- 7Bh UngermannBass Listenniu
- 7Ch UngermannBass RcvRaw
- 7Dh UngermannBass SendNmc2
- 7Fh Beame&Whiteside BWNB installation check (returns with return code and
- completion code both set to 03h, while invalid functions return only
- return code field set to 03h)
- Note: OR any of the above except 70h with 80h for non-waiting call
- Format of NetBIOS structure "astatus":
- Offset Size Description (Table 03251)
- 00h 6 BYTEs as_id
- 06h BYTE as_jumpers
- 07h BYTE as_post
- 08h BYTE as_major
- 09h BYTE as_minor
- 0Ah WORD as_interval
- 0Ch WORD as_crcerr
- 0Eh WORD as_algerr
- 10h WORD as_colerr
- 12h WORD as_abterr
- 14h DWORD as_tcount
- 18h DWORD as_rcount
- 1Ch WORD as_retran
- 1Eh WORD as_xresrc
- 20h 8 BYTEs as_res0
- 28h WORD as_ncbfree
- 2Ah WORD as_ncbmax
- 2Ch WORD as_ncbx
- 2Eh 4 BYTEs as_res1
- 32h WORD as_sespend
- 34h WORD as_msp
- 36h WORD as_sesmax
- 38h WORD as_bufsize
- 3Ah WORD as_names
- 3Ch 16 name structures as_name (see #03252)
- Note: it has been reported that the first field should be 16 bytes instead
- of six (shifthing all remaining fields by ten bytes)
- Format of NetBIOS structure "name":
- Offset Size Description (Table 03252)
- 00h 16 BYTEs "nm_name" symbolic name
- 10h BYTE "nm_num" number associated with name
- 11h BYTE nm_status
- Format of NetBIOS structure "sstatus":
- Offset Size Description (Table 03253)
- 00h BYTE number of sessions being reported
- 01h BYTE number of sessions with this name
- 02h BYTE number of outstanding receive datagrams
- 03h BYTE number of outstanding ReceiveAnys
- 04h var session structures (see #03254)
- Format of NetBIOS structure "session":
- Offset Size Description (Table 03254)
- 00h BYTE local session number
- 01h BYTE state
- 01h listen pending
- 02h call pending
- 03h session established
- 04h hangup pending
- 05h hangup done
- 06h session aborted
- 02h 16 BYTEs local name
- 12h 16 BYTEs remote name
- 22h BYTE number of outstanding receives
- 23h BYTE number of outstanding sends/chainsends
- --------H-5C---------------------------------
- INT 5C - IRQ12 relocated by DESQview 2.26+
- Range: INT 5C to INT FC, selected automatically
- Note: this is the default, but other INTs may be used (see INT 50"DESQview")
- SeeAlso: INT 50"DESQview",INT 5B"DESQview",INT 5D"DESQview",INT 74
- --------H-5C---------------------------------
- INT 5C - IRQ4 relocated by DoubleDOS
- SeeAlso: INT 0C
- --------N-5C---------------------------------
- INT 5C - TOPS INTERFACE
- ES:BX -> Network Control Block
- Note: TOPS card uses DMA 1, 3 or none.
- --------N-5C---------------------------------
- INT 5C - ATALK.SYS - AppleTalk INTERFACE
- DX:BX -> control block (see #03256)
- Return: none
- InstallCheck: test for the signature "AppleTalk" 16 bytes prior to the
- interrupt handler
- Range: INT 5Ch to INT 70h
- Index: installation check;ATALK.SYS|installation check;AppleTalk interface
- (Table 03255)
- Values for ATALK.SYS command code:
- 01h "AT_INIT" initialize the driver
- 02h "AT_KILL"
- 03h "AT_GETNETINFO" get current network info incl init status
- 04h "AT_GETCLOCKTICKS"
- 05h "AT_STARTTIMER"
- 06h "AT_RESETTIMER"
- 07h "AT_CANCELTIMER"
- 10h "LAP_INSTALL"
- 11h "LAP_REMOVE"
- 12h "LAP_WRITE"
- 13h "LAP_READ"
- 14h "LAP_CANCEL"
- 20h "DDP_OPENSOCKET"
- 21h "DDP_CLOSESOCKET"
- 22h "DDP_WRITE"
- 23h "DDP_READ"
- 24h "DDP_CANCEL"
- 30h "NBP_REGISTER"
- 31h "NBP_REMOVE"
- 32h "NBP_LOOKUP"
- 33h "NBP_CONFIRM"
- 34h "NBP_CANCEL"
- 35h "ZIP_GETZONELIST"
- 36h "ZIP_GETMYZONE"
- 37h "ZIP_TAKEDOWN"
- 38h "ZIP_BRINGUP"
- 40h "ATP_OPENSOCKET"
- 41h "ATP_CLOSESOCKET"
- 42h "ATP_SENDREQUEST"
- 43h "ATP_GETREQUEST"
- 44h "ATP_SENDRESPONSE"
- 45h "ATP_ADDRESPONSE"
- 46h "ATP_CANCELTRANS"
- 47h "ATP_CANCELRESPONSE"
- 48h "ATP_CANCELREQUEST"
- 50h "ASP_GETPARMS"
- 51h "ASP_CLOSESESSION"
- 52h "ASP_CANCEL"
- 53h "ASP_INIT"
- 54h "ASP_KILL"
- 55h "ASP_GETSESSION"
- 56h "ASP_GETREQUEST"
- 57h "ASP_CMDREPLY"
- 58h "ASP_WRTCONTINUE"
- 59h "ASP_WRTREPLY"
- 5Ah "ASP_CLOSEREPLY"
- 5Bh "ASP_NEWSTATUS"
- 5Ch "ASP_ATTENTION"
- 5Dh "ASP_GETSTATUS"
- 5Eh "ASP_OPENSESSION"
- 5Fh "ASP_COMMAND"
- 60h "ASP_WRITE"
- 61h "ASP_GETATTENTION"
- 70h "PAP_OPEN"
- 71h "PAP_CLOSE"
- 72h "PAP_READ"
- 73h "PAP_WRITE"
- 74h "PAP_STATUS"
- 75h "PAP_REGNAME"
- 76h "PAP_REMNAME"
- 77h "PAP_INIT"
- 78h "PAP_NEWSTATUS"
- 79h "PAP_GETNEXTJOB"
- 7Ah "PAP_KILL"
- 7Bh "PAP_CANCEL"
- Format of AppleTalk control block:
- Offset Size Description (Table 03256)
- 00h WORD command code (see #03255)
- OR with the following flags
- 8000h start command then return
- 4000h wait for interrupt service to complete
- 02h WORD returned status
- 0000h success (already initialized if func 01h)
- 04h DWORD pointer to completion function
- 08h WORD network number
- 0Ah BYTE node ID
- ---if general func (01h,03h), control block continues:
- 0Bh BYTE "inf_abridge"
- 0Ch WORD "inf_config"
- 0Eh DWORD pointer to buffer
- 12h WORD buffer size
- ---if DDP function (20h-24h), control block continues:
- 0Bh BYTE "ddp_addr_socket"
- 0Ch BYTE "ddp_socket"
- 0Dh BYTE "ddp_type"
- 0Eh DWORD pointer to buffer
- 12h WORD buffer size
- 14h BYTE "ddp_chksum"
- ---if Name Binding Protocol (30h-34h), control block continues:
- 0Bh BYTE "nbp_addr_socket"
- 0Ch WORD "nbp_toget"
- 0Eh DWORD pointer to buffer (see #03257)
- 12h WORD buffer size
- 14h BYTE "nbp_interval"
- 15h BYTE "nbp_retry"
- 16h DWORD "nbp_entptr"
- ---if AppleTalk Transaction Protocol (42h), control block continues:
- 0Bh BYTE "atp_addr_socket"
- 0Ch WORD "atp_socket"
- 0Eh DWORD pointer to buffer
- 12h WORD buffer size
- 14h BYTE "atp_interval"
- 15h BYTE "atp_retry"
- 16h BYTE ATP flags
- bit 5: exactly one transaction
- 17h BYTE "atp_seqbit"
- 18h BYTE transaction ID
- 19h 4 BYTEs ATP user bytes
- 1Dh BYTE number of BDS buffers
- 1Eh BYTE number of BDS responses
- 1Fh DWORD pointer to BDS buffers (see #03258)
- Format of Name Binding Protocol Name-to-Address binding entries for NBP_LOOKUP:
- Offset Size Description (Table 03257)
- 00h WORD "tup_address_network"
- 02h BYTE "tup_address_notid"
- 03h BYTE "tup_address_socket"
- 04h BYTE "tup_enum"
- 05h 99 BYTEs name
- Format of BDS entries:
- Offset Size Description (Table 03258)
- 00h DWORD pointer to buffer
- 04h WORD size of buffer
- 06h WORD BDS data size
- 08h 4 BYTEs "bds_userbytes"
- --------N-5C---------------------------------
- INT 5C - IBM 802.2 INTERFACE (LLC)
- ES:BX -> CCB (see #03259)
- Return: none
- Format of IBM 802.2 CCB:
- Offset Size Description (Table 03259)
- 00h BYTE adapter
- 01h BYTE command code
- 02h BYTE return code
- 03h BYTE work
- 04h DWORD pointer to ???
- 08h DWORD pointer to completion function???
- 0Ch DWORD pointer to parameters???
- --------N-5C---------------------------------
- INT 5C - $25 LAN - INSTALLATION CHECK
- Notes: current versions only check whether the vector is 0000h:0000h or not
- future versions are supposed to have the signature "NET" in the three
- bytes preceding the INT 5C handler
- --------b-5C0100-----------------------------
- INT 5C C - TI Professional PC - KEYBOARD PAUSE KEY VECTOR
- AX = 0100h
- CF clear
- Return: CF clear
- AX = keystroke to be placed into keyboard buffer
- CF set
- AX ignored
- Desc: toggle a pause flag which is checked by the CRT Device Service Routine
- (see INT 49/AH=01h"TI") and causes it to temporarily halt the
- machine on the next video-related function (until a key is pressed)
- SeeAlso: INT 09"IRQ1",INT 4A/AH=00h"TI",INT 59"TI Professional"
- SeeAlso: INT 5B"TI Professional",INT 5D"TI Professional"
- SeeAlso: INT 5E"TI Professional",INT 5F"TI Professional"
- --------N-5C04-------------------------------
- INT 5C - $25 LAN - CHECK IF CONNECTION ALIVE
- AH = 04h
- AL = COM port (0 = default)
- CX = wait count in character times (should be at least 100)
- Return: ZF set if link alive
- --------H-5D---------------------------------
- INT 5D - IRQ13 relocated by DESQview 2.26+
- Range: INT 5D to INT FD, selected automatically
- Note: this is the default, but other INTs may be used (see INT 50"DESQview")
- SeeAlso: INT 50"DESQview",INT 5C"DESQview",INT 5E"DESQview",INT 75
- --------H-5D---------------------------------
- INT 5D - IRQ5 relocated by DoubleDOS
- SeeAlso: INT 0D"IRQ5",INT 5C"DoubleDOS"
- --------b-5D---------------------------------
- INT 5D C - TI Professional PC - KEYBOARD BREAK KEY VECTOR
- CF clear
- AX = 0000h
- Return: CF clear
- AX = keystroke to place into keyboard buffer
- CF set
- AX ignored
- Desc: invoked by the keyboard ISR when Shift-BrkPause is pressed
- Note: the default handler is a simple IRET instruction
- SeeAlso: INT 09"IRQ1",INT 4A/AH=00h"TI",INT 59"TI Professional"
- SeeAlso: INT 5B"TI Professional",INT 5C"TI Professional"
- SeeAlso: INT 5E"TI Professional",INT 5F"TI Professional"
- --------H-5E---------------------------------
- INT 5E - IRQ14 relocated by DESQview 2.26+
- Range: INT 5E to INT FE, selected automatically
- Note: this is the default, but other INTs may be used (see INT 50"DESQview")
- SeeAlso: INT 50"DESQview",INT 5D"DESQview",INT 5F"DESQview",INT 76
- --------H-5E---------------------------------
- INT 5E - IRQ6 relocated by DoubleDOS
- SeeAlso: INT 0E,INT 5D"DoubleDOS"
- --------b-5E---------------------------------
- INT 5E C - TI Professional PC - KEYBOARD PRINT-SCREEN VECTOR
- CF set
- Return: CF clear
- AX = keystroke to be placed into keyboard buffer
- CF set
- AX ignored
- Desc: hook to dump the screen to the printer
- Notes: hooked by TI MS-DOS, which provides a PRTSCRN character device which
- can invoke screen prints when a decimal digit (indicating the type
- of screen dump) is written to it
- the TI MS-DOS print-screen routine allows selective dumps of text
- only, graphics only, or text and graphics superimposed, in either
- normal or reverse, by pressing the appropriate keystroke combination:
- Shift-Print, Ctrl-Print, Alt-Print, Shift-Alt-Print, Ctrl-Alt-Print,
- or Shift-Ctrl-Print.
- the BIOS default routine for this vector is an IRET
- SeeAlso: INT 05"PRINT SCREEN",INT 4A/AH=00h"TI",INT 59"TI Professional"
- SeeAlso: INT 5B"TI Professional",INT 5C"TI Professional"
- SeeAlso: INT 5D"TI Professional",INT 5F"TI Professional"
- --------H-5F---------------------------------
- INT 5F - IRQ15 relocated by DESQview 2.26+
- Range: INT 5F to INT FF, selected automatically
- Note: this is the default, but other INTs may be used (see INT 50"DESQview")
- SeeAlso: INT 50"DESQview",INT 5E"DESQview",INT 77
- --------H-5F---------------------------------
- INT 5F - IRQ7 relocated by DoubleDOS
- SeeAlso: INT 0F,INT 5E"DoubleDOS"
- --------b-5F---------------------------------
- INT 5F C - TI Professional PC - KEYBOARD QUEUEING VECTOR
- Return: all registers preserved
- Desc: hook for multitaskers to be informed when a keypress is placed in the
- keyboard buffer
- Note: the default handler is a simple IRET instruction
- SeeAlso: INT 09,INT 4A/AH=00h"TI",INT 59"TI Professional"
- SeeAlso: INT 5B"TI Professional",INT 5C"TI Professional"
- SeeAlso: INT 5D"TI Professional",INT 5E"TI Professional"
- --------b-5F00-------------------------------
- INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET VIDEO MODE
- AH = 00h
- AL = video mode
- 03h text,CGA color (100LX/200LX)
- 06h 640x200 CGA graphics (100LX/200LX)
- 07h text, system manager compliant
- 20h 240x128 mono graphics, system manager compliant
- 87h text, not system manager compliant
- A0h 240x128 mono graphics, not system manager compliant
- Notes: the defaults after setting the mode to graphics are (0,0) logical
- origin, full-screen clip region, (0,0) pen location, pen color 1,
- pixel replacement FORCE, line type and fill mask all bits set
- modes 03h and 06h can also be set with the standard INT 10/AH=00h
- SeeAlso: INT 0F"HP 95LX",INT 10/AH=00h,INT 15/AX=4DD4h
- --------b-5F01-------------------------------
- INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET FILL MASK
- AH = 01h
- ES:DI -> 8-byte fill mask
- Note: the fill mask represents an 8x8 pixel box and is repeated as necessary
- when drawing filled rectangles; it is always aligned with the byte
- boundaries of video memory, regardless of the actual boundaries of
- the rectangle
- SeeAlso: AH=02h
- --------b-5F02-------------------------------
- INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - GET CURRENT GRAPHICS INFO
- AH = 02h
- ES:DI -> graphics info record (see #03260)
- Return: DX:AX -> filled graphics info record (for return to high-level langs)
- Format of HP 95LX graphics info record:
- Offset Size Description (Table 03260)
- 00h BYTE current video mode
- 01h BYTE default video mode
- 02h WORD display width in pixels
- 04h WORD display height in pixels
- 06h WORD current pen column
- 08h WORD current pen row
- 0Ah WORD current line type
- 0Ch WORD current replacement rule
- 0Eh WORD current pen color
- 10h WORD current leftmost column of clip region
- 12h WORD current rightmost column of clip region
- 14h WORD current topmost row of clip region
- 16h WORD current bottommost row of clip region
- 18h WORD current column of logical origin
- 1Ah WORD current row of logical origin
- 1Ch 8 BYTEs current fill mask
- --------b-5F03-------------------------------
- INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET LOGICAL ORIGIN
- AH = 03h
- CX = column
- DX = row
- SeeAlso: AH=04h
- --------b-5F04-------------------------------
- INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET CLIP REGION
- AH = 04h
- CX = left-most column
- DX = top-most row
- SI = right-most column
- DI = bottom-most row
- SeeAlso: AH=03h
- --------b-5F05-------------------------------
- INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - DRAW RECTANGLE
- AH = 05h
- AL = fill type
- 00h outline, using current line type and color
- 01h solid, using current color
- 02h pattern, using current fill mask and color
- DX,CX = row,column of other corner of rectangle
- Note: the rectangle is drawn starting at the current pen position
- SeeAlso: AH=01h,AH=06h,AH=07h
- --------b-5F06-------------------------------
- INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - DRAW LINE
- AH = 06h
- DX,CX = row,column of end point
- Note: the line is drawn starting at the current pen position
- SeeAlso: AH=05h,AH=07h
- --------b-5F07-------------------------------
- INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - PLOT POINT
- AH = 07h
- DX,CX = row,column of point
- Note: also sets pen position to the specified point
- SeeAlso: AH=06h,AH=08h,AH=0Ch
- --------b-5F08-------------------------------
- INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - MOVE PEN
- AH = 08h
- DX,CX = row,column of new pen position
- SeeAlso: AH=07h,AH=09h
- --------b-5F09-------------------------------
- INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET PEN COLOR
- AH = 09h
- AL = new color (00h = white, 01h = black)
- SeeAlso: AH=08h,AH=0Ah,AH=0Bh
- --------b-5F0A-------------------------------
- INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET REPLACEMENT RULE
- AH = 0Ah
- AL = new replacement rule
- 00h force
- 01h AND
- 02h OR
- 03h XOR
- ---100LX/200LX---
- 04h InvForce
- 05h InvAND
- 06h InvOR
- 07h InvXOR
- 08h Txt
- SeeAlso: AH=01h,AH=09h,AH=0Bh
- --------b-5F0B-------------------------------
- INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET LINE TYPE
- AH = 0Bh
- CX = new line type
- Note: the line type specifies 16 bits which are repeated over and over while
- drawing the pixels of a line
- SeeAlso: AH=09h,AH=0Ah
- --------b-5F0C-------------------------------
- INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - GET PIXEL
- AH = 0Ch
- DX,CX = row,column of pixel to read
- Return: AX = pixel color
- SeeAlso: AH=07h
- --------b-5F0D-------------------------------
- INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - GET IMAGE
- AH = 0Dh
- DX,CX = row,column of first corner
- BP,SI = row,column of second corner
- ES:DI -> image buffer (see #03261)
- Note: the specified corners are included in the saved image
- SeeAlso: AH=0Eh
- Format of HP 95LX image buffer:
- Offset Size Description (Table 03261)
- 00h WORD number of planes (always 01h on HP 95LX)
- 02h WORD number of bits/pixel (always 01h on HP 95LX)
- 04h WORD image width in pixels
- 06h WORD image height in pixels
- 08h N BYTEs image data
- requires (WIDTH+7)/8 * HEIGHT bytes
- --------b-5F0E-------------------------------
- INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - PUT IMAGE
- AH = 0Eh
- AL = replacement rule (see #03262)
- DX,CX = row,column of top left corner
- ES:DI -> image buffer (see #03261)
- Note: if the specified image does not fit completely on the screen, this call
- does nothing
- SeeAlso: AH=0Dh
- Bitfields for replacement rule:
- Bit(s) Description (Table 03262)
- 2 invert image before applying rule
- 1-0 function (00 force, 01 AND, 10 OR, 11 XOR)
- --------b-5F0F-------------------------------
- INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - WRITE TEXT
- AH = 0Fh
- AL = rotate flag (if nonzero, rotate 90 degrees counter-clockwise)
- DX,CX = row,column of first character's top left corner
- ES:DI -> ASCIZ text
- --------b-5F10-------------------------------
- INT 5F - HP 100LX/200LX GRAPHICS PRIMITIVES - GET FONT POINTER
- AH = 10h
- CX = font size of desired font
- 0808h 8x8 small (80x25 text)
- 0A0Bh 11x10 medium (64x18 text)
- 100Ch 12x16 large (40x16 text)
- Return: DX:AX -> ptr to font or 0000h:fontID# if built-in font
- SeeAlso: AH=11h
- --------b-5F11-------------------------------
- INT 5F - HP 100LX/200LX GRAPHICS PRIMITIVES - SET CURRENT FONT
- AH = 11h
- ES:DI -> ptr to font or 0000h:fontID# for built-in font
- Note: this function should be called immediately after AH=10h with the
- pointer supplied by that call
- SeeAlso: AH=10h
- --------!---Section--------------------------
- Interrupt List, part 15 of 18
- Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
- --------*-60---------------------------------
- INT 60 - reserved for user interrupt
- --------v-60---------------------------------
- INT 60 - VIRUS - "Zero Bug" - INSTALLATION CHECK
- Desc: The "Zero Bug" virus hooks this vector. It considers itself installed
- if offset 103h of the handler's segment contains the bytes "ZE"
- SeeAlso: INT 32"VIRUS",INT 44"VIRUS",INT 61"SEMTEX"
- --------d-60---------------------------------
- INT 60 - Adaptec and OMTI controllers - DRIVE 0 DATA
- SeeAlso: INT 41"HARD DISK 0",INT 61"Adaptec",INT 62"Adaptec",INT 63"Adaptec"
- SeeAlso: INT 64"Adaptec",INT C0"AMI",#00732 at INT 1A/AX=B102h
- Notes: this vector stores the first four bytes of the parameter table for
- hard disk 0
- these vectors are used by the following Adaptec controllers:
- ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
- these vectors are NOT used by the following Adaptec controllers:
- ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
- --------b-60---------------------------------
- INT 60 - TI Professional PC - SYSTEM ROM DATA AREA POINTER (NOT A VECTOR!)
- Desc: the low word of this vector contains the segment of the RAM data area
- to be used by the system ROM at F400h:A000h, and the high word
- contains the length of the data area (see #03263)
- SeeAlso: INT 61"TI Professional PC",INT 66"TI Professional PC"
- Format of TI Professional System ROM data area:
- Offset Size Description (Table 03263)
- 00h BYTE port 00h shadow
- 01h BYTE port 03h shadow
- 02h BYTE port 04h shadow
- 03h WORD system configuration word (see #03266)
- 05h BYTE 25ms count
- 06h WORD offset of timing event 1 (0008h)
- 08h WORD (event 1) offset of timing event 2 (0010h)
- 0Ah BYTE (event 1) unused (FFh)
- 0Bh BYTE (event 1) active flag (bit 7 set if on)
- 0Ch WORD (event 1) count-down until end of event
- 0Eh WORD (event 1) event routine (in segment F400h) to call at timeout
- 10h WORD (event 2) offset of timing event 3 (0018h)
- 12h BYTE (event 2) unused (FFh)
- 13h BYTE (event 2) active flag (bit 7 set if on)
- 14h WORD (event 2) count-down until end of event
- 16h WORD (event 2) event routine (in segment F400h) to call at timeout
- 18h WORD (event 3) offset of timing event 3 (0020h)
- 1Ah BYTE (event 3) unused (FFh)
- 1Bh BYTE (event 3) active flag (bit 7 set if on)
- 1Ch WORD (event 3) count-down until end of event
- 1Eh WORD (event 3) event routine (in segment F400h) to call at timeout
- 20h WORD (event 4) 0000h - last event
- 22h BYTE (event 4) unused (FFh)
- 23h BYTE (event 4) active flag (bit 7 set if on)
- 24h WORD (event 4) count-down until end of event
- 26h WORD (event 4) event routine (in segment F400h) to call at timeout
- 28h WORD offset of start of text display within segment DE00h
- 2Ah WORD end of display
- 2Ch WORD current absolute cursor position
- 2Eh WORD start of current character row
- 30h WORD current cursor column
- 32h WORD cursor type and size (see #03264)
- 34h WORD start of protected status region on screen (0000h = none)
- 36h BYTE pop flag used by some ROM routines
- 00h pop registers before return
- nonzero: do not pop
- 37h BYTE unused (FFh)
- 38h BYTE PAUSE flag
- 00h off
- FFh on
- 39h BYTE temp: current attribute while moving characters on screen
- 3Ah WORD start of keyboard queue (next key at start+2 or 0042h if 0060h)
- 3Ch WORD end of keyboard queue (next key inserted at end+2 or 0042h)
- 3Eh BYTE number of characters in buffer
- 3Fh BYTE keyboard mode flags (see #03265)
- 40h BYTE Alt-digit-digit-digit accumulator
- 41h BYTE Alt-digit-digit-digit count of digits (mod 3)
- 42h 16 WORDs keyboard buffer (circular queue)
- 62h 8 DWORDs Drive Interface Table pointers for floppies A:-D: + four others
- (0000h:0000h if pointer not in use)
- 82h BYTE disk-error retry count (incremented on each disk error)
- 83h 2 BYTEs BIOS scratch space
- 85h 8 BYTEs current cylinder number for drives 0-7
- FFh = unknown
- 8Dh BYTE BIOS scratch space
- 8Eh BYTE hard error code for last disk access
- 00h operation successful
- 8Fh 8 BYTEs save area for disk DSR parameters
- 97h 6 BYTEs current drive status
- 9Dh BYTE retry error status
- 9Eh BYTE BIOS scratch space
- 9Fh 7 BYTEs ???
- A6h 2 WORDs INT 47 save area for SS,SP
- AAh 2 WORDs INT 46 save area for SS,SP
- AEh 2 WORDs INT 43 save area for SS,SP
- B2h 2 WORDs save area for SS,SP to be restored by common intr. exit routine
- B6h 24 WORDs stack for INT 47
- E6h 24 WORDs stack for INT 46
- 116h 17 WORDs stack for INT 43
- 13Ah 6 BYTEs system date and time (hundredths, seconds, minutes, hours, and
- WORD days since 01jan1980)
- Note: timing event 1 is the disk I/O timeout, event 2 is the floppy disk
- motor timeout, event 3 is the floppy disk motor spin-up time, and
- event 4 is used to turn off the speaker after a delay
- Bitfields for TI Professional PC cursor size and type:
- Bit(s) Description (Table 03264)
- 15 reserved (0)
- 14-13 cursor type
- 00 nonblinking
- 01 off
- 10 slow blink
- 11 fast blink
- 12-8 starting scan line (0-11)
- 7-5 reserved (0)
- 4-0 ending scan line (0-11)
- SeeAlso: #03263
- Bitfields for TI Professional PC keyboard mode flags:
- Bit(s) Description (Table 03265)
- 7 CapsLock was ON at last keypress
- 6-4 reserved (0)
- 3 repeat key
- 2 Shift was down at last keypress
- 1 Alt was down at last keypress
- 0 Ctrl was down at last keypress
- SeeAlso: #03263
- Bitfields for TI Professional System Configuration Word:
- Bit(s) Description (Table 03266)
- 0 drive A: installed
- 1 drive B: installed
- 2 drive C: installed
- 3 drive D: installed
- 4 drive A: is 80-track
- 5 drive A: is double-sided
- 6 60-Hz (USA,etc.) system instead of 50-Hz (Europe)
- 7 hard disk installed
- 8 serial port 1 installed
- 9 serial port 2 installed
- 10 serial port 3 installed
- 11 serial port 4 installed
- 14-12 installed graphics planes
- 000 none
- 001 plane A
- 111 planes A, B, and C
- 15 clock installed
- SeeAlso: #03263
- --------b-60---------------------------------
- INT 60 - Atari Portfolio - USER INTERFACE FUNCTIONS
- Desc: supplies a number of subfunctions which perform such functions as
- drawing boxes and menus, and provide input line editing
- SeeAlso: INT 61/AH=00h"Atari",INT 61"EXTENDED BIOS"
- --------V-60---------------------------------
- INT 60 - Nabbit v2.0 - (NOT A VECTOR!) - INSTALLATION CHECK
- Program: Nabbit is a shareware resident screen data grabber by RSE Inc.
- Range: INT 60 to INT 66, selected by searching for first free vector
- Note: the Nabbit installation check consists of testing whether the
- interrupt vector points at the ASCIZ signature string "iG"
- (69h 47h 00h)
- --------V-60---------------------------------
- INT 60 - ATI M64VBE.COM - INSTALLATION SIGNATURE
- Program: M64VBE is a VESA VBE 2.0 driver TSR for ATI's Mach64 video chip
- InstallCheck: scan for an interrupt with the ASCIZ signature "M64VBE" three
- bytes past the interrupt handler
- Range: INT 60 to INT 66, selected by searching for first free vector
- SeeAlso: INT 10/AX=4FDDh"M64VBE",INT 10/AX=4FFFh/BX=364Dh"M64VBE"
- --------V-60---------------------------------
- INT 60 U - Buffit v3.0 - (NOT A VECTOR!) - INSTALLATION CHECK
- Program: Buffit is a shareware scrollback utility by D.T. Hamilton
- Range: INT 60 to INT 6F, selected by searching for first free vector
- Notes: the Buffit installation check consists of testing whether the
- interrupt vector points at the ASCII signature "Buffit "
- there is a private entry point (see #03267) immediately following the
- signature string, i.e. eight bytes beyond the address pointed at
- by the interrupt vector
- (Table 03267)
- Call Buffit private entry point with:
- AH = function
- 00h get information and hotkey state
- 01h get information and toggle hotkey state
- Return: AH = new hotkey state (00h enabled, 01h disabled)
- AL = hotkey scan code (see #00006)
- BH = hotkey shift states
- BL = ??? (01h)
- CX = segment of resident code
- DH = interrupt number used for signature pointer
- DL = ??? (00h)
- SI = INT 09 handler offset
- DI = INT 21 handler offset
- Index: hotkeys;Buffit
- --------r-60---------------------------------
- INT 60 - PC-IPC API
- STACK: DWORD pointer to parameter block (see #03268)
- Return: STACK: unchanged
- Program: PC-IPC is a shareware TSR by Donnelly Software Engineering which
- allows communication between independent programs
- Range: INT 00 to INT FF, selected by commandline switch
- Format of PC-IPC parameter block:
- Offset Size Description (Table 03268)
- 00h WORD caller's ID
- 02h WORD to ID
- 04h WORD command code (see #03269)
- 06h WORD returned status (see #03270)
- 08h WORD returned error code (see #03271)
- 0Ah WORD size of data
- 0Ch DWORD pointer to data buffer
- (Table 03269)
- Values for PC-IPC command code:
- 01h "IPC_CMND_INQUIRE" inquire current status
- set status field, writes WORD to data buffer containing free
- message space in bytes, and sets the "size" field to the
- number of messages waiting
- 02h "IPC_CMND_ENABLE" reenable PC-IPC
- ignored unless called with the same ID that disabled PC-IPC
- 03h "IPC_CMND_DISABLE" disable PC-IPC
- 04h "IPC_CMND_INSTALL" reset PC-IPC
- 06h "IPC_CMND_RDATA" read data
- returns first message in data buffer, sets "size" to message length
- and "to ID" field to sender's ID
- if no messages available, bit 4 of status is cleared and "size" is
- set to zero
- 07h "IPC_CMND_SDATA" send data
- 08h "IPC_CMND_REQID" require user ID
- create a new recognized ID and return in "caller's ID" field
- 09h "IPC_CMND_DELID" cancel user ID
- delete caller's ID from pool of recognized IDs
- 0Ah "IPC_CMND_RDATAW" read data, wait if no messages available
- 0Bh "IPC_CMND_VERS" get PC-IPC version
- string representing version returned in data buffer, "size" field
- set to length of string
- Bitfields for returned status:
- Bit(s) Description (Table 03270)
- 0 unused
- 1 IPC enabled
- 2 IPC installed
- 3 error
- 4 message(s) available
- (Table 03271)
- Values for PC-IPC error code:
- 00h no error
- 01h invalid command or parameter
- 02h only process 0 can install/reset IPC
- 03h process can not install/reset IPC
- 04h IPC is not enabled
- 05h process can not disable IPC
- 06h invalid destination process ID
- 07h invalid sending process ID
- 08h invalid data destination
- 09h no more process IDs available
- 0Ah can not relinquish that process ID
- 0Bh message space is full
- 0Ch IPC is not installed
- --------R-60---------------------------------
- INT 60 - Tangram Arbiter - API
- Desc: Arbiter makes a PC disk look like a slow disk over an SNA link to an
- IBM mainframe
- Range: INT 60h to INT 66h, selected by configuration parameter
- Notes: identified by string "@ARB_API" immediately following a short jump at
- the interrupt handler address
- --------N-60---------------------------------
- INT 60 - Excelan LAN Workplace for DOS 3.5 - API
- ES:BX -> request packet (see #03272)
- Return: request packet updated
- InstallCheck: test for the WORD 4142h ('AB') immediately preceding the
- interrupt handler
- Note: this interrupt is also supported by Beame&Whiteside's BWLWP35 shim,
- which was used in creating this description
- BUG: because BWLWP35 range-checks only the low byte of the function number,
- and has a fencepost error even in that test, functions 000Bh and
- XX01h-XX0Bh (XX nonzero) branch to random locations
- SeeAlso: INT 2F/AX=7A40h
- Format of Excelan request packet:
- Offset Size Description (Table 03272)
- 00h 12 BYTEs ???
- 0Ch WORD (ret) error code (see #03273)
- 0Eh DWORD -> FAR function for ???
- 12h WORD function number
- 0001h ???
- 0002h NOP
- 0003h NOP
- 0004h NOP
- 0005h ???
- 0006h get ??? record
- 0007h NOP
- 0008h reset ???
- 0009h NOP
- 000Ah set ???
- ???
- ---function 01h---
- 20h BYTE (call) subfunction (32h-3Bh)
- 3Bh non-blocking I/O request (will be tested every clock tick)
- 21h BYTE (ret) error code
- 00h successful
- 09h invalid connection number
- 2Ah bad connection type
- 45h ???
- ---function 01h, subfunction 32h---
- 3Ah WORD (call) connection type (01h stream, 02h datagram)
- ---function 01h, subfunction 34h---
- 26h WORD (call) ???
- 28h WORD (call) ???
- 2Ah WORD (call) ???
- ---function 01h, subfunction 35h---
- 1Ah WORD (call) connection number???
- 26h WORD (ret) ???
- ---function 01h, subfunction 36h---
- 1Ah WORD (call) connection number???
- 38h WORD ???
- ---function 01h, subfunction 37h---
- 24h WORD (ret) ???
- 26h WORD (ret) ???
- ---function 01h, subfunction 38h---
- 1Ah WORD (call) connection number???
- ---function 01h, subfunction 3Ah---
- 22h WORD (call) ???
- 667Eh ???
- 667Fh ???
- 24h BYTE (call 667Eh) ???
- 24h WORD (return 667Fh) ???
- ---function 01h, subfunction 3Bh---
- 0Eh DWORD (call) -> function to invoke for I/O or 0000h:0000h
- function called with AX = 0000h
- STACK: DWORD -> request packet
- WORD 0000h
- should return STACK unchanged
- 1Ah WORD (call) connection number???
- 21h BYTE (ret) set to 01h when I/O becomes possible
- 22h BYTE (call) direction (00h write, 01h read)
- 34h DWORD (ret) -> next pending request packet
- ---function 05h---
- 1Eh WORD (call) ???
- 20h WORD (call) ???
- 34h DWORD (call) -> ???
- ---function 06h---
- 16h DWORD (call) -> buffer for ??? record (see #03274)
- 1Ah WORD (call) number of bytes to copy
- 22h WORD (ret) number of bytes transferred
- ---function 08h---
- 14h WORD (ret) ??? (0001h)
- ---function 0Ah---
- 16h DWORD (call) -> WORD ???
- 1Ch WORD (call) must be 000Ah for BWLWP35
- (Table 03273)
- Values for Excelan error code:
- 0000h successful
- 002Dh invalid function
- 0050h ???
- Format of ??? record:
- Offset Size Description (Table 03274)
- 00h WORD offset of ???
- 02h 4 BYTEs ???
- 06h DWORD IP address (big-endian)
- 0Ah 6 BYTEs physical address (big-endian)
- ???
- --------N-60---------------------------------
- INT 60 - TCPDRV 2.01 - TCP/IP Application Binary Interface (ABI)
- Note: The handler for the interrupt will start with a 2-byte NEAR jump
- instruction, followed by the ASCIZ signature string "TCP DRVR".
- To find the interrupt being used by the driver, an application
- should scan through interrupt vectors 60h to 7Fh until it finds
- one with the "TCP DRVR" string.
- This specification is being proposed by Peter R. Tattam from the
- University of Tasmania.
- Index: installation check;TCPDRV
- --------G-60---------------------------------
- INT 60 U - INTRSPY/CMDSPY v1.0 only - API
- Program: INTRSPY is a script-driven debugger included with the book
- _Undocumented_DOS_.
- InstallCheck: determine that a) the handler is an IRET instruction, and
- b) the signature 0Dh "INTRSPY vN.NN" immediately precedes the handler
- Notes: INTRSPY will hook the first available interrupt in the range 60h-67h.
- If INTRSPY is installed, the DWORD immediately after the IRET stores
- its entry point (see #03275)
- INTRSPY v2.0 (included with the second edition of the book) no longer
- supports this API
- Index: installation check;INTRSPY
- (Table 03275)
- Call INTRSPY v1.0 entry point with:
- AH = function
- 00h ???
- 01h set current directory (for use in reporting)
- ES:DI -> counted string containing directory name (max 79 char)
- 02h set name of script file
- ES:DI -> counted string containing file name (max 79 chars)
- 03h set script arguments
- ES:DI -> counted string containing arguments (max 79 chars)
- 04h get directory set with function 01h
- ES:DI -> 80-byte buffer for directory name
- 05h get name of script file
- ES:DI -> 80-byte buffer for script filename
- 06h get script arguments
- ES:DI -> 80-byte buffer for script arguments
- 07h get ???
- CL = 00h-15h specifies what to get
- ES:DI -> WORD to be set with desired value on return
- 08h get ???
- ES:DI -> WORD to be set with returned value
- 09h get ???
- ES:DI -> WORD to be set with returned value
- 0Bh store code for interrupt handler???
- ES:DI -> data
- CX = number of bytes
- 0Ch ???
- ES:DI -> ???
- 0Dh get ???
- ES:DI -> BYTE to be set with returned value
- 0Eh set ??? flag
- 0Fh clear ??? flag
- 10h ???
- Return: AL = 04h or 05h if failed
- 11h ???
- Return: AL = 05h if failed
- 12h get ???
- ES:DI -> buffer
- Return: CX = number of bytes returned in buffer
- 13h ???
- Return: AH = 00h
- AL = status
- 00h successful
- 01h invalid function
- 02h ???
- 03h ???
- 04h ???
- 05h ???
- --------u-60---------------------------------
- INT 60 U - PC/370 v4.2 - ???
- ???
- Return: ???
- Program: PC/370 is an IBM 370 emulator by Donald S. Higgins
- Range: INT 00 to INT FF, selected by patching the executable
- Note: the documentation includes instructions for patching the system for
- another interrupt
- SeeAlso: INT 2F/AX=7F24h,INT DC"PC/370"
- --------r-60---------------------------------
- INT 60 - JPI TopSPEED Modula-2 v1 - PROCEDURE ENTRY TRAP
- SeeAlso: INT 61"JPI"
- --------N-60---------------------------------
- INT 60 - FTP Packet Driver - PC/TCP Packet Driver Specification
- Range: INT 20 to INT FF
- Notes: The handler for the interrupt will start with a 3-byte jump
- instruction, followed by the ASCIZ string "PKT DRVR" (the
- terminating NUL is significant).
- To find the interrupt being used by the driver, an application should
- scan through interrupt vectors 20h to FFh (60h through 80h for
- v1.09- of the specification) until it finds one with the "PKT DRVR"
- string.
- AH values of 80h to FFh have been reserved for user-defined additions.
- --------I-60---------------------------------
- INT 60 u - 3270-PC CONTROL PROGRAM - ???
- --------b-60----DI0100-----------------------
- INT 60 u - HP 95LX System Manager - WAIT FOR EVENT
- DI = 0100h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to event record (see #03277)
- Return: event record filled
- STACK unchanged
- Note: this call will timeout after about 500ms
- SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0101h,INT 61"HP 95LX",INT 62"HP 95LX"
- (Table 03276)
- Values for HP 95LX event type:
- 00h no events
- 01h keystroke available
- 02h Ctrl-Break
- 03h reactivation (always follows deactivation event)
- 04h about to deactivate (sleep)
- next get-event call will not return until reactivated
- 05h forced application termination
- 06h 1-2-3 bridge service request (only given to 1-2-3)
- 07h request to grow
- 08h request to shrink
- 09h application's alarm expired
- 0Ah daily chance to set an alarm
- 0Bh system date or time has been changed
- Format of HP 95LX event record:
- Offset Size Description (Table 03277)
- 00h WORD event type (see #03276)
- 02h WORD ASCII code page 850 translation of keystroke
- or grow/shrink amount in paragraphs or 0000h if error
- or alarm expiration data
- 04h BYTE scan code from BIOS
- 05h BYTE shift key states at time keystroke is retrieved
- 06h WORD LICS translation of keystroke
- 08h BYTE function key number (1-2-3 only)
- 09h DWORD pointer to 1-2-3 bridge record (see #03279)
- or pointer to time change structure (see #03278)
- Note: if the System Manager is awaiting the conclusion of a bridge service
- or grow/shrink call and the event type field is set to FFFFh on
- entry, the SysMgr will resume
- Format of HP 95LX time change structure:
- Offset Size Description (Table 03278)
- 00h WORD old year
- 02h BYTE old month
- 03h BYTE old date
- 04h BYTE old day
- 05h BYTE old hour
- 06h BYTE old minute
- 07h BYTE old second
- 08h BYTE old hundredth of a second
- 09h 9 BYTEs new time in same format as old time
- --------b-60----DI0101-----------------------
- INT 60 u - HP 95LX System Manager - CHECK FOR EVENT
- DI = 0101h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to event record (INT 60/DI=0100h)
- Return: event record filled
- STACK unchanged
- Note: this call returns immediately if no event is available
- SeeAlso: INT 60/DI=0100h
- --------b-60----DI0102-----------------------
- INT 60 u - HP 95LX System Manager - "SH_STATUS"
- DI = 0102h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ???
- STACK unchanged
- --------b-60----DI0104-----------------------
- INT 60 u - HP 95LX System Manager - LOTUS 1-2-3 BRIDGE SERVICES
- DI = 0104h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to bridge record (see #03279)
- Return: ???
- STACK unchanged
- Format of HP 95LX bridge record:
- Offset Size Description (Table 03279)
- 00h WORD function code (see #03280)
- 02h WORD return code from 1-2-3
- 04h 16 BYTEs ASCII range name
- 14h WORD start column of range
- 16h WORD start row of range
- 18h WORD end column of range
- 1Ah WORD end row of range
- 1Ch WORD order in which data is placed in buffer
- 1Eh WORD buffer size
- 20h WORD offset within bridge record's segment of buffer for cell data
- (Table 03280)
- Values for HP 95LX function code:
- 00h test
- 01h get range
- 02h "GETRANGE_ADDR"
- 03h "SETRANGE_ADDR"
- 04h "GETRANGE_DATA"
- 05h "SETRANGE_DATA"
- 06h recalculate
- 07h get cursor
- 08h set cursor
- 09h redisplay
- 0Ah cell type
- 0Bh "CALCTYPE"
- --------b-60----DI0105-----------------------
- INT 60 u - HP 95LX System Manager - FLUSH KEYBOARD BUFFER
- DI = 0105h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ???
- STACK unchanged
- --------b-60----DI0106-----------------------
- INT 60 u - HP 95LX System Manager - YIELD CPU
- DI = 0106h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 15/AX=1000h,INT 2F/AX=1680h
- --------b-60----DI0107-----------------------
- INT 60 u - HP 95LX System Manager - "NO_FINI" - REFUSE TERMINATION REQUEST
- DI = 0107h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
- --------b-60----DI0200-----------------------
- INT 60 u - HP 95LX System Manager - SETUP MENU
- DI = 0200h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to menu data (see #03281)
- DWORD pointer to ???
- WORD number of items on menu???
- WORD ???
- DWORD pointer to ???
- WORD ???
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0201h,INT 60/DI=0203h,INT 60/DI=0205h
- Format of HP 95LX menu data:
- Offset Size Description (Table 03281)
- 00h 80 BYTEs first line of menu text
- 50h 80 BYTEs second line of menu text
- A0h 80 BYTEs third line of menu text
- F0h WORD number of keywords
- F2h WORD index of currently highlighted keyword or FFFFh
- F4h WORD single prompt on top line if nonzero
- F6h 20 BYTEs which line each of 20 keywords is located on
- 10Ah 20 BYTEs offset of each of 20 keywords within its line
- 11Eh 20 BYTEs length of each of 20 keywords
- 132h 20 BYTEs first letter of each of 20 keywords
- 146h 20 WORDs offsets of long prompts for each of 20 keywords
- --------b-60----DI0201-----------------------
- INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY MENU
- DI = 0201h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to menu data (see #03281)
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0206h
- --------b-60----DI0202-----------------------
- INT 60 u - HP 95LX System Manager - "MENU_ON" - ENABLE PROCESSING OF MENU
- DI = 0202h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to menu data (see #03281)
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0200h,INT 60/DI=0201h,INT 60/DI=0203h
- --------b-60----DI0203-----------------------
- INT 60 u - HP 95LX System Manager - REMOVE MENU
- DI = 0203h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to menu data (see #03281)
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0201h,INT 60/DI=0202h,INT 60/DI=0204h,INT 60/DI=0208h
- --------b-60----DI0204-----------------------
- INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER HANDLE MENU KEYSTROKE
- DI = 0204h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to menu data (see #03281)
- WORD keystroke
- DWORD pointer to WORD to receive selection number
- Return: buffer for selection number filled with index of selected menu item or
- FFFFh if no final selection yet
- STACK unchanged
- SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0207h
- --------b-60----DI0205-----------------------
- INT 60 u - HP 95LX System Manager - INITIALIZE FILE SELECTION MENU
- DI = 0205h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to file menu structure (see #03282)
- DWORD pointer to edit record (see #03285 at INT 60/DI=0400h)
- DWORD pointer to wildcard filespec for initial file list
- WORD row???
- WORD column???
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0200h,INT 60/DI=0206h,INT 60/DI=0208h
- Format of HP 95LX file menu structure:
- Offset Size Description (Table 03282)
- 00h DWORD pointer to ASCIZ base directory name
- 04h DWORD pointer to ASCIZ file pattern (wildcard filespec)
- 08h DWORD pointer to file list workspace, at least 1024 bytes (see #03283)
- 0Ch WORD size of file list workspace in bytes
- 0Eh WORD starting row (-3 is topmost, 0 is first non-"reserved" line)
- 10h WORD starting column
- 12h WORD number of lines
- 14h WORD number of columns
- 16h WORD number of files displayed on each line
- ---the remaining fields are initialized by the System Manager---
- 18h WORD 0000h if first edit character, else multiline
- 1Ah WORD number of files in file list
- 1Ch WORD max files workspace has room for
- 1Eh WORD file at top of list
- 20h WORD index of file to highlight
- 22h WORD index of file to unhighlight
- 24h WORD current focus (01h FMENU, 02h EDIT)
- Format of HP 95LX file list workspace entry:
- Offset Size Description (Table 03283)
- 00h BYTE file attributes
- 01h WORD file time (see #01665 at INT 21/AX=5700h)
- 03h WORD file date (see #01666 at INT 21/AX=5700h)
- 05h DWORD file size
- 09h 13 BYTEs ASCIZ filename
- --------b-60----DI0206-----------------------
- INT 60 u - HP 95LX System Manager - DISPLAY/REDISPLAY FILE SELECTION MENU
- DI = 0206h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to file menu structure (see #03282)
- DWORD pointer to edit record (see #03285 at INT 60/DI=0400h)
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0205h
- --------b-60----DI0207-----------------------
- INT 60 u - HP 95LX System Manager - LET SYSMGR PROCESS FILE SEL MENU KEYSTROKE
- DI = 0207h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to file menu structure (see #03282)
- DWORD pointer to edit record (see #03285 at INT 60/DI=0400h)
- WORD keystroke
- Return: AX = status (see #03284)
- STACK unchanged
- SeeAlso: INT 60/DI=0205h,INT 60/DI=0208h
- (Table 03284)
- Values for HP 95LX System Manager status:
- 0000h keystroke processed, call INT 60/DI=0206h to refresh menu
- 0001h redisplay application area before refreshing menu
- 0002h user confirmed selection, filename is in edit record's buffer
- 0003h user aborted menu
- FFFBh bad filename
- FFFCh bad directory
- FFFDh bad drive
- FFFEh unknown keystroke
- FFFFh keystroke known but invalid in current context
- --------b-60----DI0208-----------------------
- INT 60 u - HP 95LX System Manager - REMOVE FILE SELECTION MENU
- DI = 0208h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to file menu structure (see #03282)
- DWORD pointer to edit record (see #03285 at INT 60/DI=0400h)
- Return: ???
- STACK unchanged
- SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0205h,INT 60/DI=0206h
- --------b-60----DI0300-----------------------
- INT 60 u - HP 95LX System Manager - DISPLAY STRING
- DI = 0300h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD starting row (-3 is topmost, 0 is first user line)
- WORD starting column
- DWORD pointer to string
- WORD length of string
- WORD display style: 0000h normal, 0001h reverse video
- WORD "OSTYLE"
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0F03h,INT 60/DI=1005h
- --------b-60----DI0301-----------------------
- INT 60 u - HP 95LX System Manager - CLEAR PORTION OF SCREEN
- DI = 0301h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD starting row (-3 is topmost, 0 is first user line)
- WORD starting column
- WORD number of rows
- WORD number of columns
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0302h,INT 60/DI=1005h
- --------b-60----DI0302-----------------------
- INT 60 u - HP 95LX System Manager - SCROLL PORTION OF SCREEN
- DI = 0302h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD starting row???
- WORD starting column???
- WORD height of scroll region???
- WORD width of scroll region???
- WORD number of lines to scroll region???
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0301h
- --------b-60----DI0303-----------------------
- INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_XCHG"
- DI = 0303h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- WORD ???
- WORD ???
- WORD ???
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI0304-----------------------
- INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRATTR"
- DI = 0304h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI0305-----------------------
- INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRRVRT"
- DI = 0305h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- WORD ???
- DWORD pointer to ???
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI0307-----------------------
- INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRINV"
- DI = 0307h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- WORD ???
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI0308-----------------------
- INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_ROWS_COLS"
- DI = 0308h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ???
- STACK unchanged
- --------b-60----DI0309-----------------------
- INT 60 u - HP 95LX System Manager - SET SCREEN (VIDEO???) MODE
- DI = 0309h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD new mode
- Return: ???
- STACK unchanged
- --------b-60----DI030A-----------------------
- INT 60 u - HP 95LX System Manager - GET SCREEN (VIDEO???) MODE
- DI = 030Ah
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ???
- STACK unchanged
- --------b-60----DI030B-----------------------
- INT 60 u - HP 95LX System Manager - SET CURSOR POSITION
- DI = 030Bh
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD row (-3 is topmost, 0 is first non-reserved line)
- WORD column
- Return: ???
- STACK unchanged
- Note: cursor is hidden if the specified position is not on the physical
- display
- SeeAlso: INT 10/AH=02h,INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
- --------b-60----DI0400-----------------------
- INT 60 u - HP 95LX System Manager - "EDIT_INIT"
- DI = 0400h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to edit record (see #03285)
- DWORD pointer to string to be edited
- WORD initial length of string being edited
- WORD maximum length of edited string
- WORD row of edit field
- WORD leftmost column of edit field
- Return: ???
- STACK unchanged
- Format of HP 95LX edit record:
- Offset Size Description (Table 03285)
- 00h WORD current length of edit buffer
- 02h BYTE flag for special processing on first character
- 03h BYTE flags
- bit 0: tab handling
- 04h WORD editing in prompt window?
- 06h DWORD pointer to top line of prompt window message
- 0Ah WORD length of top line of prompt
- 0Ch DWORD pointer to second line of prompt window message
- 10h WORD length of second line of prompt
- 12h 80 BYTEs workspace for editing
- 62h 2 WORDs line array needed for multi-line editing
- 66h 36 BYTEs multi-line edit record (see #03286)
- 8Ah WORD displayable columns
- Format of HP 95LX multi-line edit record:
- Offset Size Description (Table 03286)
- 00h DWORD pointer to user-supplied edit buffer
- 04h WORD length of edit buffer
- 06h WORD current cursor position
- 08h WORD starting row of edit area (-3 is topmost, 0 is first user line)
- 0Ah WORD starting column of edit area
- 0Ch WORD height of edit area
- 0Eh WORD width of edit area
- 10h WORD current top row (-3 is topmost, 0 is first user line)
- 12h WORD number of rows displayable
- 14h BYTE cursor column
- 15h BYTE 01h if buffer has been modified
- 16h BYTE first displayable column (ticker fields only)
- 17h BYTE 01h if wordwrap enabled, FFh if ticker field
- 18h DWORD pointer to array of line starts (at least one bigger than edit
- area is high)
- 1Ch BYTE currently marking?
- 1Dh BYTE flag
- 1Eh WORD offset of mark start
- 20h WORD offset of mark end (inclusive)
- 22h WORD displayable columns
- --------b-60----DI0401-----------------------
- INT 60 u - HP 95LX System Manager - EDIT ON TOP LINE
- DI = 0401h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to edit record (see #03285)
- DWORD pointer to string to edit
- WORD initial length of string being edited
- WORD maximum length of edited string
- DWORD pointer to first line of prompt
- WORD length of first line
- DWORD pointer to second line of prompt
- WORD length of second line
- Return: ???
- STACK unchanged
- --------b-60----DI0402-----------------------
- INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY EDIT FIELD
- DI = 0402h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to edit record (see #03285)
- Return: ???
- STACK unchanged
- --------b-60----DI0403-----------------------
- INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER PROCESS EDITING KEYSTROK
- DI = 0403h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to edit record (see #03285)
- WORD keystroke
- DWORD pointer to WORD buffer for result code
- Return: result code buffer filled with 0001h if editing complete
- STACK unchanged
- --------b-60----DI0404-----------------------
- INT 60 u - HP 95LX System Manager - "MDIT_INI"
- DI = 0404h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- WORD ???
- WORD ???
- WORD ???
- WORD ???
- DWORD pointer to ???
- WORD ???
- WORD ???
- WORD ???
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI0405-----------------------
- INT 60 u - HP 95LX System Manager - "MDIT_DIS"
- DI = 0405h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI0406-----------------------
- INT 60 u - HP 95LX System Manager - "MDIT_KEY"
- DI = 0406h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI0407-----------------------
- INT 60 u - HP 95LX System Manager - "MDIT_FIL"
- DI = 0407h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI0408-----------------------
- INT 60 u - HP 95LX System Manager - "MDIT_MARK"
- DI = 0408h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI0409-----------------------
- INT 60 u - HP 95LX System Manager - "MDIT_UNMARK"
- DI = 0409h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI040A-----------------------
- INT 60 u - HP 95LX System Manager - "MDIT_CUTMARK"
- DI = 040Ah
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI040B-----------------------
- INT 60 u - HP 95LX System Manager - "MDIT_INS_STR"
- DI = 040Bh
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- DWORD pointer to ???
- WORD ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
- --------b-60----DI0500-----------------------
- INT 60 u - HP 95LX System Manager - OPEN FILE
- DI = 0500h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to file state record (see #03287)
- DWORD pointer to filename
- WORD length of filename
- WORD ???
- WORD suppress buffering if nonzero
- Return: AX = status
- STACK unchanged
- SeeAlso: INT 60/DI=0501h,INT 60/DI=0502h,INT 60/DI=0508h
- Format of HP 95LX file state record:
- Offset Size Description (Table 03287)
- 00h WORD DOS file handle
- 02h WORD state flags (see #03288)
- 04h DWORD current DOS physical file offset (FFFFFFFFh if unknown)
- 08h DWORD DOS file offset of start of buffer
- 0Ch DWORD effective file offset as seen by caller
- 10h WORD number of bytes in file buffer
- ---buffered I/O only---
- 12h 512 BYTEs file buffer
- Bitfields for HP 95LX file state flags:
- Bit(s) Description (Table 03288)
- 0 buffer contents valid
- 1 buffer is dirty and must be written
- 2 unbuffered I/O
- 3 file is a character device
- SeeAlso: #03287
- --------b-60----DI0501-----------------------
- INT 60 u - HP 95LX System Manager - OPEN FILE IN READ-ONLY MODE
- DI = 0501h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to file state record (see #03287)
- DWORD pointer to filename
- WORD length of filename
- WORD ???
- WORD suppress buffering if nonzero
- Return: AX = status
- STACK unchanged
- SeeAlso: INT 60/DI=0500h
- --------b-60----DI0502-----------------------
- INT 60 u - HP 95LX System Manager - CREATE NEW FILE
- DI = 0502h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to file state record (see #03287)
- DWORD pointer to filename
- WORD length of filename
- WORD ???
- WORD suppress buffering if nonzero
- Return: AX = status
- STACK unchanged
- SeeAlso: INT 60/DI=0500h,INT 60/DI=0503h
- --------b-60----DI0503-----------------------
- INT 60 u - HP 95LX System Manager - CREATE OR TRUNCATE FILE
- DI = 0503h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to file state record (see #03287)
- DWORD pointer to filename
- WORD length of filename
- WORD ???
- WORD suppress buffering if nonzero
- Return: AX = status
- STACK unchanged
- SeeAlso: INT 60/DI=0502h
- --------b-60----DI0504-----------------------
- INT 60 u - HP 95LX System Manager - READ FROM FILE
- DI = 0504h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to file state record (see #03287)
- DWORD pointer to data buffer
- WORD number of bytes to read
- DWORD pointer to WORD in which to return actual bytes read
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0505h
- --------b-60----DI0505-----------------------
- INT 60 - HP 95LX System Manager - WRITE TO FILE
- DI = 0505h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to file state record (see #03287)
- DWORD pointer to data
- WORD length of data
- Return: AX = status
- STACK unchanged
- SeeAlso: INT 60/DI=0504h
- --------b-60----DI0506-----------------------
- INT 60 u - HP 95LX System Manager - SET FILE POSITION
- DI = 0506h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to file state record (see #03287)
- 2 WORDs ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0507h
- --------b-60----DI0507-----------------------
- INT 60 u - HP 95LX System Manager - GET FILE POSITION
- DI = 0507h "M_TELL"
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to file state record (see #03287)
- DWORD pointer to DWORD buffer for file position???
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0506h
- --------b-60----DI0508-----------------------
- INT 60 u - HP 95LX System Manager - CLOSE FILE
- DI = 0508h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to file state record (see #03287)
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0500h
- --------b-60----DI0509-----------------------
- INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETPAT"
- DI = 0509h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- DWORD pointer to ???
- WORD ???
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI050A-----------------------
- INT 60 u - HP 95LX System Manager - FILE SERVICE "M_MATCH"
- DI = 050Ah
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ??? (see #03289)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- Format of HP 95LX pattern match control block:
- Offset Size Description (Table 03289)
- 00h 43 BYTEs FindFirst data block (see #01626 at INT 21/AH=4Eh)
- 2Bh 80 BYTEs full path name
- 7Bh BYTE offset of last component of filename
- 7Ch BYTE DOS function number (4Eh or 4Fh)
- --------b-60----DI050B-----------------------
- INT 60 u - HP 95LX System Manager - IDENTIFY FILENAME REFERENT
- DI = 050Bh
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- WORD ???
- WORD ???
- DWORD pointer to ???
- Return: ??? = result (see #03290)
- ???
- STACK unchanged
- (Table 03290)
- Values returned by HP 95LX System Manager:
- 0000h nonexistent
- 0001h file
- 0002h directory
- 0003h character device
- --------b-60----DI050C-----------------------
- INT 60 u - HP 95LX System Manager - DELETE FILE
- DI = 050Ch "M_DELETE"
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- WORD ???
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI050D-----------------------
- INT 60 u - HP 95LX System Manager - RENAME FILE
- DI = 050Dh
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- WORD ???
- WORD ???
- DWORD pointer to ???
- WORD ???
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI050E-----------------------
- INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETDIR"
- DI = 050Eh
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- DWORD pointer to ???
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI050F-----------------------
- INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETDIR"
- DI = 050Fh
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI0510-----------------------
- INT 60 u - HP 95LX System Manager - FILE SERVICE "M_VOLUME"
- DI = 0510h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI0511-----------------------
- INT 60 u - HP 95LX System Manager - MAKE A SUBDIRECTORY
- DI = 0511h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- WORD ???
- WORD ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 21/AH=39h,INT 60/DI=0512h
- --------b-60----DI0512-----------------------
- INT 60 u - HP 95LX System Manager - REMOVE A SUBDIRECTORY
- DI = 0512h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- WORD ???
- WORD ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 21/AH=3Ah,INT 60/DI=0511h
- --------b-60----DI0513-----------------------
- INT 60 u - HP 95LX System Manager - GET DEFAULT DRIVE
- DI = 0513h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ??? buffer for current drive
- Return: ???
- STACK unchanged
- SeeAlso: INT 21/AH=19h,INT 60/DI=0514h
- --------b-60----DI0514-----------------------
- INT 60 u - HP 95LX System Manager - SET DEFAULT DRIVE
- DI = 0514h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD new drive
- Return: ???
- STACK unchanged
- SeeAlso: INT 21/AH=0Eh"DOS 1+",INT 60/DI=0513h
- --------b-60----DI0515-----------------------
- INT 60 u - HP 95LX System Manager - FILE SERVICE "M_FDATE"
- DI = 0515h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI0516-----------------------
- INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GET_SYSDIR"
- DI = 0516h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI0517-----------------------
- INT 60 u - HP 95LX System Manager - GET FILE ATTRIBUTES
- DI = 0517h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- WORD ???
- WORD ???
- DWORD pointer to ??? buffer for file's attributes???
- Return: ???
- STACK unchanged
- SeeAlso: INT 21/AX=4300h,INT 60/DI=0518h
- --------b-60----DI0518-----------------------
- INT 60 u - HP 95LX System Manager - SET FILE ATTRIBUTES
- DI = 0518h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- WORD ???
- WORD ???
- WORD new attributes???
- Return: ???
- STACK unchanged
- SeeAlso: INT 21/AX=4301h,INT 60/DI=0517h
- --------b-60----DI0519-----------------------
- INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COMMON_OPEN"
- DI = 0519h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- DWORD pointer to ???
- WORD ???
- WORD ???
- WORD ???
- WORD ???
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI051A-----------------------
- INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COPYDT"
- DI = 051Ah
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI051B-----------------------
- INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETFDT"
- DI = 051Bh
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI051C-----------------------
- INT 60 u - HP 95LX System Manager - FILE SERVICE "M_PUTFDT"
- DI = 051Ch
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI0600-----------------------
- INT 60 u - HP 95LX System Manager - PROCESS INITIALIZING
- DI = 0600h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ???
- STACK unchanged
- SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0601h,INT 61"HP 95LX"
- --------b-60----DI0601-----------------------
- INT 60 u - HP 95LX System Manager - PROCESS TERMINATION
- DI = 0601h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: never
- STACK unchanged
- SeeAlso: INT 21/AH=4Ch,INT 2F/AX=1122h,INT 60/DI=0600h
- --------b-60----DI0602-----------------------
- INT 60 u - HP 95LX System Manager - "M_LOCK" - PREVENT TASK SWITCHES
- DI = 0602h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ???
- STACK unchanged
- SeeAlso: INT 15/AX=101Bh,INT 2F/AX=1681h,INT 60/DI=0603h
- --------b-60----DI0603-----------------------
- INT 60 u - HP 95LX System Manager - "M_UNLOCK" - ALLOW TASK SWITCHES
- DI = 0603h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ???
- STACK unchanged
- SeeAlso: INT 15/AX=101Ch,INT 2F/AX=1682h,INT 60/DI=0602h
- --------b-60----DI0604-----------------------
- INT 60 u - HP 95LX System Manager - "M_SPAWN"
- DI = 0604h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- WORD ???
- WORD ???
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 21/AH=4Bh
- --------b-60----DI0605-----------------------
- INT 60 u - HP 95LX System Manager - "M_APPCOUNT"
- DI = 0605h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ???
- STACK unchanged
- --------b-60----DI0606-----------------------
- INT 60 u - HP 95LX System Manager - "M_REBOOT"
- DI = 0606h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ???
- STACK unchanged
- SeeAlso: INT 14/AH=17h"FOSSIL",INT 19
- --------b-60----DI0607-----------------------
- INT 60 u - HP 95LX System Manager - "M_SPAWNARG"
- DI = 0607h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- WORD ???
- DWORD pointer to ???
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI0608-----------------------
- INT 60 u - HP 95LX System Manager - "M_REG_APP_NAME"
- DI = 0608h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI0609-----------------------
- INT 60 u - HP 95LX System Manager - "M_APP_NAME"
- DI = 0609h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: DX:AX -> ???
- STACK unchanged
- SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
- --------b-60----DI0700-----------------------
- INT 60 u - HP 95LX System Manager - OPEN CLIPBOARD
- DI = 0700h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ??? = error code (see #03291)
- ???
- STACK unchanged
- SeeAlso: INT 60/DI=0701h,INT 60/DI=0702h
- (Table 03291)
- Values for HP 95LX error code:
- 0000h successful
- FFF8h transfer request out of bounds
- FFF9h no such representation
- FFFAh no representation open
- FFFBh a representation is already open
- FFFCh representation already exists
- FFFDh heap allocation failure
- FFFEh clipboard not open
- FFFFh clipboard access denied
- --------b-60----DI0701-----------------------
- INT 60 u - HP 95LX System Manager - CLOSE CLIPBOARD
- DI = 0701h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0700h,INT 60/DI=0702h
- --------b-60----DI0702-----------------------
- INT 60 u - HP 95LX System Manager - RESET CLIPBOARD
- DI = 0702h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0700h
- --------b-60----DI0704-----------------------
- INT 60 u - HP 95LX System Manager - "M_NEW_REP" - START A NEW REPRESENTATION???
- DI = 0704h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0705h,INT 60/DI=0706h,INT 60/DI=0707h
- --------b-60----DI0705-----------------------
- INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_FINI_REP"
- DI = 0705h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0704h
- --------b-60----DI0706-----------------------
- INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_NAME"
- DI = 0706h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- DWORD pointer to ???
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0704h,INT 60/DI=0707h
- --------b-60----DI0707-----------------------
- INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_INDEX"
- DI = 0707h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- DWORD pointer to ???
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0704h,INT 60/DI=0706h
- --------b-60----DI0708-----------------------
- INT 60 u - HP 95LX System Manager - WRITE TO CLIPBOARD
- DI = 0708h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to data to be written???
- WORD length of data???
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0709h
- --------b-60----DI0709-----------------------
- INT 60 u - HP 95LX System Manager - READ FROM CLIPBOARD
- DI = 0709h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- WORD ???
- DWORD pointer to buffer for data???
- WORD length of buffer???
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0708h
- --------b-60----DI0800-----------------------
- INT 60 u - HP 95LX System Manager - BEEP
- DI = 0800h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0801h,INT 60/DI=0802h,INT 60/DI=0803h
- --------b-60----DI0801-----------------------
- INT 60 u - HP 95LX System Manager - SOUND SERVICE "M_THUD"
- DI = 0801h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0800h,INT 60/DI=0802h,INT 60/DI=0803h
- --------b-60----DI0802-----------------------
- INT 60 u - HP 95LX System Manager - MAKE A SOUND PATTERN
- DI = 0802h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD pattern number (00h-06h)
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0803h
- --------b-60----DI0803-----------------------
- INT 60 u - HP 95LX System Manager - TURN OFF SOUND
- DI = 0803h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0802h
- --------b-60----DI0900-----------------------
- INT 60 - HP 95LX System Manager - ALLOCATE REGULAR MEMORY BLOCK
- DI = 0900h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD size of block in bytes
- Return: AX -> memory block
- STACK unchanged
- Note: System Manager-compliant applications are always small-model (64K code,
- 64K data)
- SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0902h,INT 60/DI=0903h
- --------b-60----DI0902-----------------------
- INT 60 u - HP 95LX System Manager - FREE REGULAR MEMORY BLOCK
- DI = 0902h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD offset of memory block???
- Return: ???
- STACK unchanged
- Note: System Manager-compliant applications are always small-model (64K code,
- 64K data)
- SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
- --------b-60----DI0903-----------------------
- INT 60 u - HP 95LX System Manager - ALLOCATE LARGE MEMORY BLOCK
- DI = 0903h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD size of block in bytes???
- Return: AX -> memory block???
- STACK unchanged
- SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
- --------b-60----DI0904-----------------------
- INT 60 u - HP 95LX System Manager - FREE LARGE MEMORY BLOCK
- DI = 0904h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD segment of memory block???
- Return: AX -> ???
- STACK unchanged
- SeeAlso: INT 60/DI=0902h,INT 60/DI=0903h
- --------b-60----DI0B00-----------------------
- INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DTINFO"
- DI = 0B00h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI0B01-----------------------
- INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GETDTM"
- DI = 0B01h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI0B02-----------------------
- INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SETDTM"
- DI = 0B02h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI0B03-----------------------
- INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_XALARM"
- DI = 0B03h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI0B04-----------------------
- INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_ALARM"
- DI = 0B04h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to alarm record??? (see #03292)
- WORD ???
- Return: ???
- STACK unchanged
- Format of HP 95LX alarm record:
- Offset Size Description (Table 03292)
- 00h BYTE hour
- 01h BYTE minute
- 02h BYTE second
- 03h BYTE unused padding
- 04h WORD rescheduling interval, in seconds
- 06h BYTE are seconds significant?
- 07h BYTE alarm sound
- 08h 40 BYTEs message displayed when alarm activates
- 30h BYTE task ID of owner
- 31h BYTE application's own use for sub-class
- 32h 4 BYTEs application's own use for private data
- --------b-60----DI0B05-----------------------
- INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_SW"
- DI = 0B05h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI0B06-----------------------
- INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SW"
- DI = 0B06h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- DWORD pointer to ???
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI0B07-----------------------
- INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_SW"
- DI = 0B07h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI0B08-----------------------
- INT 60 u - HP 95LX System Manager - "M_TELLTIME" - DISPLAY TIMESTAMP
- DI = 0B08h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD timestamp format (see #03293)
- WORD row (-3 is topmost, 0 is first non-reserved line)
- WORD column
- Return: ???
- STACK unchanged
- Bitfields for HP 95LX timestamp format:
- Bit(s) Description (Table 03293)
- 1-0 timestamp components
- 00 date only
- 01 time only
- 10 date and time
- 11 day and date
- 4 supply am/pm
- 5 supply seconds
- 6 show year
- 7 four-digit year
- --------b-60----DI0B09-----------------------
- INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SETTINGS"
- DI = 0B09h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ??? (see #03294)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0B0Ah,INT 60/DI=0B0Fh
- Format of HP 95LX system settings:
- Offset Size Description (Table 03294)
- 00h WORD country code
- 02h WORD speaker volume (00h-03h or FFh for off)
- 04h WORD contrast level (00h-0Fh)
- 06h WORD week start (00h Sunday, 01h Monday)
- 08h WORD punctuation format (see #03295)
- 0Ah WORD two-character language code (only 5355h = "US" byte-swapped)
- 0Ch WORD current date format (see #03296)
- 0Eh WORD current time format (see #03297)
- 10h WORD collating sequence
- 00h numbers first, 01h letters first, 02h ASCII
- 12h 80 BYTEs name of picture file
- 62h 30 BYTEs name
- 80h 30 BYTEs title
- 9Eh 28 BYTEs company name
- BAh WORD number of languages
- BCh 6 BYTEs available languages
- C2h 66 BYTEs language menu
- 104h 2 BYTEs ASCIZ date separator
- 106h 2 BYTEs ASCIZ time separator
- 108h BYTE date order
- 109h BYTE use 24 hour time?
- 10Ah 16 BYTEs currency string
- 11Ah WORD currency string position (00h prefix, 01h suffix)
- 11Ch WORD keyboard (see #03298)
- 11Eh WORD printer baud rate
- 00h 300, 01h 1200, 02h 2400, 03h 4800, 04h 9600, 05h 19200
- 120h WORD printer driver code
- 00h Epson FX80, 01h HP Laserjet, 02h IBM ProPrinter
- 122h WORD printer interface (00h COM1, 01h COM2, 02h IR, 03h LPT1)
- 124h WORD system manager interrupt (60h by default)
- 126h WORD code page (01h CP850, 02h CP437)
- 128h WORD active exit key
- 12Ah WORD active menu key
- 12Ch WORD active CHAR key toggle
- 12Eh 6 BYTEs alarm
- (Table 03295)
- Values for HP 95LX punctuation format:
- code decimal arg thousands
- 00h . , ,
- 01h , . .
- 02h . ; ;
- 03h , ; .
- 04h . , " "
- 05h , . " "
- 06h . ; " "
- 07h , ; " "
- (Table 03296)
- Values for HP 95LX current date format:
- 00h dd-mmm-yy
- 01h dd-mmm
- 02h mmm-yy
- 03h mm/dd/yy
- 04h dd/mm/yy
- 05h dd.mm.yy
- 06h yy-mm-dd
- 07h mm/dd
- 08h dd/mm
- 09h dd.mm
- 0Ah mm-dd
- (Table 03297)
- Values for HP 95LX current time format:
- 00h HH:MM:SS am/pm
- 01h HH:MM am/pm
- 02h HH:MM:SS
- 03h HH.MM.SS
- 04h HH,MM,SS
- 05h HHhMMmSSs
- 06h HH:MM
- 07h HH.MM
- 08h HH,MM
- 09h HHhMMm
- (Table 03298)
- Values for HP 95LX keyboard layout:
- 0001h Belgium
- 0002h French Canadian
- 0004h Denmark
- 0008h Finland
- 0010h French
- 0020h Finland
- 0040h Italy
- 0080h Netherlands
- 0100h Norway
- 0200h Portugal
- 0400h Spain
- 0800h Sweden
- 1000h Swiss French
- 2000h Swiss German
- 4000h United Kingdom
- 8000h USA
- --------b-60----DI0B0A-----------------------
- INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SET_SETTINGS"
- DI = 0B0Ah
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0B09h
- --------b-60----DI0B0B-----------------------
- INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_TIMER"
- DI = 0B0Bh
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0B0Ch,INT 60/DI=0B0Dh
- --------b-60----DI0B0C-----------------------
- INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_TIMER"
- DI = 0B0Ch
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Dh
- --------b-60----DI0B0D-----------------------
- INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_TIMER"
- DI = 0B0Dh
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- DWORD pointer to ???
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Ch
- --------b-60----DI0B0E-----------------------
- INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_TELL_ANYTIME"
- DI = 0B0Eh
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- WORD ???
- WORD ???
- DWORD pointer to ???
- DWORD pointer to ???
- Return: DX:AX -> ???
- STACK unchanged
- --------b-60----DI0B0F-----------------------
- INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVCE "M_GET_SETTINGS_ADDR"
- DI = 0B0Fh
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: DX:AX -> system settings record (see #03294)
- STACK unchanged
- SeeAlso: INT 60/DI=0B09h
- --------b-60----DI0B10-----------------------
- INT 60 u - HP 95LX System Manager - PARSE DATE SPECIFICATION
- DI = 0B10h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- DWORD pointer to ???
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI0B11-----------------------
- INT 60 u - HP 95LX System Manager - PARSE TIME SPECIFICATION
- DI = 0B11h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- DWORD pointer to ???
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI0B12-----------------------
- INT 60 u - HP 95LX System Manager - SET DATE PARSING RULE
- DI = 0B12h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD new parsing rule (see #03299)
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0B13h
- (Table 03299)
- Values for HP 95LX date parsing rule:
- 01h day-month-year
- 02h month-day-year
- 03h year-month-day
- 04h "DMYO"
- 05h "MDYO"
- OR with 08h to get any year
- --------b-60----DI0B13-----------------------
- INT 60 u - HP 95LX System Manager - SET TIME PARSING RULE
- DI = 0B13h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD new parsing rule (see #03300)
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0B12h
- (Table 03300)
- Values for HP 95LX time parsing rule:
- 01h HH:MM:SS (am/pm)
- 02h HH:MM:SS (24hr)
- 03h HHMM:SS (24hr)
- 04h HH:MM:SS.hh (24hr)
- 05h HH:MM (am/pm)
- 06h HH:MM (24hr)
- 07h HHMM (24hr)
- --------b-60----DI0B14-----------------------
- INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_POST_TIME"
- DI = 0B14h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ???
- STACK unchanged
- --------b-60----DI0B15-----------------------
- INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DAY_TRIGGER"
- DI = 0B15h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
- --------b-60----DI0C00-----------------------
- INT 60 u - HP 95LX System Manager - OPEN PRINTER
- DI = 0C00h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0C01h,INT 60/DI=0C02h,INT 60/DI=0C03h
- --------b-60----DI0C01-----------------------
- INT 60 u - HP 95LX System Manager - CLOSE PRINTER
- DI = 0C01h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ???
- STACK unchanged
- Note: relinquishes control of printer
- SeeAlso: INT 60/DI=0C00h
- --------b-60----DI0C02-----------------------
- INT 60 u - HP 95LX System Manager - WRITE TO PRINTER
- DI = 0C02h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to data to be written
- WORD length of data
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0C00h
- --------b-60----DI0C03-----------------------
- INT 60 u - HP 95LX System Manager - INITIALIZE PRINTER
- DI = 0C03h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0C00h
- --------b-60----DI0C04-----------------------
- INT 60 u - HP 95LX System Manager - "M_TRANS_PRINTER"
- DI = 0C04h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI0C05-----------------------
- INT 60 u - HP 95LX System Manager - "M_FALL_PRINTER"
- DI = 0C05h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
- --------b-60----DI0E00-----------------------
- INT 60 u - HP 95LX System Manager - COMMUNICATIONS SERVICE "M_COMM_INIT"
- DI = 0E00h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- SeeAlso: #03301,INT 60/DI=0E01h,INT 60/DI=0E02h
- (Table 03301)
- Values for HP 95LX error code:
- 0000h successful
- FFF1h "E_BUSY"
- FFF2h timeout
- FFF3h framing error
- FFF4h parity error
- FFF5h overrun error
- FFF6h "E_EMPTY"
- FFF7h "E_CONECT"
- FFF8h not open
- FFF9h out of memory
- FFFAh buffer overflow
- FFFBh "E_NOFIT"
- FFFCh unsupported
- FFFDh "E_IVOPR"
- FFFEh "E_IVCHN"
- FFFFh "E_REOPEN"
- --------b-60----DI0E01-----------------------
- INT 60 u - HP 95LX System Manager - OPEN COMMUNICATIONS CHANNEL
- DI = 0E01h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to WORD buffer for comm channel handle
- WORD communications line number (01h-04h)
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E02h
- --------b-60----DI0E02-----------------------
- INT 60 u - HP 95LX System Manager - CLOSE COMMUNICATIONS CHANNEL
- DI = 0E02h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD comm channel handle
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E01h
- --------b-60----DI0E03-----------------------
- INT 60 u - HP 95LX System Manager - "M_COMM_GETMDM"
- DI = 0E03h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI0E04-----------------------
- INT 60 u - HP 95LX System Manager - "M_COMM_ANSWER"
- DI = 0E04h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI0E05-----------------------
- INT 60 u - HP 95LX System Manager - "M_COMM_DIAL"
- DI = 0E05h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI0E06-----------------------
- INT 60 u - HP 95LX System Manager - RESET COMMUNICATIONS CHANNEL
- DI = 0E06h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD comm channel handle
- WORD reset options (see #03302)
- Return: ???
- STACK unchanged
- Bitfields for HP 95LX reset options:
- Bit(s) Description (Table 03302)
- 0 reset line
- 1 flush transmit buffer
- 2 flush receive buffer
- 3 reset modem
- 4 reset receiver's ^S state
- 5 reset transmitter's ^S state
- --------b-60----DI0E07-----------------------
- INT 60 u - HP 95LX System Manager - "M_COMM_HANGUP"
- DI = 0E07h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI0E08-----------------------
- INT 60 u - HP 95LX System Manager - SEND DATA OVER COMM CHANNEL
- DI = 0E08h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD comm channel handle
- DWORD pointer to data to be sent
- WORD option flags
- bit 0: send partial buffer
- bit 1: turn on receiver after sending
- DWORD pointer to WORD containing length of data to be sent
- Return: length WORD updated to contain number of bytes actually sent???
- STACK unchanged
- SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
- --------b-60----DI0E09-----------------------
- INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL TRANSMIT QUEUE
- DI = 0E09h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- DWORD pointer to ??? WORD
- DWORD pointer to ??? WORD
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0E0Ah
- --------b-60----DI0E0A-----------------------
- INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL RECEIVE QUEUE
- DI = 0E0Ah
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD comm channel handle
- DWORD pointer to WORD to get receive buffer size
- DWORD pointer to WORD to get free bytes in receive buffer
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
- --------b-60----DI0E0B-----------------------
- INT 60 u - HP 95LX System Manager - RECEIVE DATA FROM COMM CHANNEL
- DI = 0E0Bh
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD comm channel handle
- DWORD pointer to data buffer
- DWORD pointer to WORD (call) length of data buffer
- (ret) number of bytes received
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0E08h,INT 60/DI=0E0Ah
- --------b-60----DI0E0C-----------------------
- INT 60 u - HP 95LX System Manager - "M_COMM_HAZCMD"
- DI = 0E0Ch
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- DWORD pointer to ???
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI0E0D-----------------------
- INT 60 u - HP 95LX System Manager - "M_COMM_COMAND"
- DI = 0E0Dh
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- DWORD pointer to ???
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI0E0E-----------------------
- INT 60 u - HP 95LX System Manager - "M_COMM_BREAK"
- DI = 0E0Eh
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI0E0F-----------------------
- INT 60 u - HP 95LX System Manager - "M_COMM_FRCXON"
- DI = 0E0Fh
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI0E10-----------------------
- INT 60 u - HP 95LX System Manager - "M_COMM_FRCXOF"
- DI = 0E10h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI0E11-----------------------
- INT 60 u - HP 95LX System Manager - "M_COMM_SETDTR"
- DI = 0E11h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI0E12-----------------------
- INT 60 u - HP 95LX System Manager - "M_COMM_XMITNG"
- DI = 0E12h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI0E13-----------------------
- INT 60 u - HP 95LX System Manager - "M_COMM_STATUS"
- DI = 0E13h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI0E14-----------------------
- INT 60 u - HP 95LX System Manager - SET COMMUNICATIONS SETTINGS
- DI = 0E14h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD comm channel handle
- DWORD pointer to communications settings (see #03303)
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0E15h
- Format of HP 95LX communications settings:
- Offset Size Description (Table 03303)
- 00h BYTE dial type ('T' tone, 'P' pulse)
- 01h WORD baud rate divisor (115200/baud_rate)
- 03h BYTE parity (00h none, 08h odd, 18h even, 28h mark, 38h space)
- 04h BYTE stop bits (00h one, 04h two)
- 05h BYTE data bits - 5
- 06h BYTE software handshake
- 01h none, 02h XOFF/XON, 04h XOFF/any, 08h ENQ/ACK
- 07h BYTE infrared (01h off, 02h on)
- 08h BYTE duplex (01h half, 02h full)
- 09h BYTE echo (01h echo, 02h no echo)
- --------b-60----DI0E15-----------------------
- INT 60 u - HP 95LX System Manager - GET COMMUNICATIONS SETTINGS
- DI = 0E15h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- DWORD pointer to buffer for settings (see #03303)
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0E14h
- --------b-60----DI0E16-----------------------
- INT 60 u - HP 95LX System Manager - "M_COMM_CNFGUR"
- DI = 0E16h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- WORD ???
- WORD ???
- WORD ???
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI0E17-----------------------
- INT 60 u - HP 95LX System Manager - "M_COMM_QRYERR"
- DI = 0E17h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
- --------b-60----DI0F00-----------------------
- INT 60 u - HP 95LX System Manager - "M_ERRMSG"
- DI = 0F00h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- DWORD pointer to ???
- WORD ???
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI0F01-----------------------
- INT 60 u - HP 95LX System Manager - DRAW STANDARD TITLE BOX
- DI = 0F01h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ASCIZ title string
- Return: ???
- STACK unchanged
- --------b-60----DI0F02-----------------------
- INT 60 u - HP 95LX System Manager - "SHOWNAME"
- DI = 0F02h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI0F03-----------------------
- INT 60 u - HP 95LX System Manager - DISPLAY TWO-LINE MESSAGE BOX
- DI = 0F03h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to first line of message
- WORD length of first line
- DWORD pointer to second line of message
- WORD length of second line
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0300h,INT 60/DI=0F04h,INT 60/DI=0F09h
- --------b-60----DI0F04-----------------------
- INT 60 u - HP 95LX System Manager - REMOVE MESSAGE BOX
- DI = 0F04h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F09h
- --------b-60----DI0F05-----------------------
- INT 60 u - HP 95LX System Manager - "M_COM_TIMER_ADDR"
- DI = 0F05h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: DX:AX -> ???
- STACK unchanged
- --------b-60----DI0F06-----------------------
- INT 60 u - HP 95LX System Manager - "M_COM_TIMER_COUNT_ADDR"
- DI = 0F06h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: DX:AX -> ???
- STACK unchanged
- --------b-60----DI0F07-----------------------
- INT 60 u - HP 95LX System Manager - "M_SYS_RSRC_ADDR"
- DI = 0F07h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: DX:AX -> ???
- STACK unchanged
- --------b-60----DI0F08-----------------------
- INT 60 u - HP 95LX System Manager - "M_BIOS_OUTSTR"
- DI = 0F08h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- ???
- Return: ???
- STACK unchanged
- --------b-60----DI0F09-----------------------
- INT 60 u - HP 95LX System Manager - DISPLAY THREE-LINE MESSAGE BOX
- DI = 0F09h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to first line of message
- WORD length of first line
- DWORD pointer to second line of message
- WORD length of second line
- DWORD pointer to third line of message
- WORD length of third line
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F04h
- --------b-60----DI0F0A-----------------------
- INT 60 u - HP 95LX System Manager - DISABLE MACROS
- DI = 0F0Ah
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0F0Bh
- --------b-60----DI0F0B-----------------------
- INT 60 u - HP 95LX System Manager - ENABLE MACROS
- DI = 0F0Bh
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ???
- STACK unchanged
- SeeAlso: INT 60/DI=0F0Ah
- --------b-60----DI0F0C-----------------------
- INT 60 u - HP 95LX System Manager - "M_DATE_TIME_SEPS"
- DI = 0F0Ch
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- ???
- Return: ???
- STACK unchanged
- --------b-60----DI0F0D-----------------------
- INT 60 u - HP 95LX System Manager - "M_FORM_FT"
- DI = 0F0Dh
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: DX:AX -> ???
- STACK unchanged
- --------b-60----DI0F0E-----------------------
- INT 60 u - HP 95LX System Manager - "M_RAM_IV_INFO"
- DI = 0F0Eh
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: DX:AX -> ???
- STACK unchanged
- SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
- --------b-60----DI1005-----------------------
- INT 60 u - HP 95LX System Manager - "M_DIRTY_SYNC" - FORCE SCREEN UPDATE
- DI = 1005h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ???
- STACK unchanged
- SeeAlso: INT 10/AH=FFh,INT 60/DI=0300h,INT 60/DI=0301h
- --------b-60----DI1200-----------------------
- INT 60 u - HP 95LX System Manager - RESOURCE SERVICE "MAP_RESOURCE_FILE"
- DI = 1200h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI1201-----------------------
- INT 60 u - HP 95LX System Manager - "GET_RESOURCE_PTR"
- DI = 1201h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- WORD ???
- Return: DX:AX -> ???
- STACK unchanged
- SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
- --------b-60----DI1202-----------------------
- INT 60 u - HP 95LX System Manager - "GET_RSRC_TAB_PTR"
- DI = 1202h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: DX:AX -> ???
- STACK unchanged
- --------b-60----DI1203-----------------------
- INT 60 u - HP 95LX System Manager - "INIT_SYSMGR_RSRCS"
- DI = 1203h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: ???
- STACK unchanged
- --------b-60----DI1300-----------------------
- INT 60 u - HP 95LX System Manager - INITIALIZE HELP SYSTEM
- DI = 1300h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- DWORD pointer to ???
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI1301-----------------------
- INT 60 u - HP 95LX System Manager - DISPLAY HELP
- DI = 1301h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- --------b-60----DI1302-----------------------
- INT 60 u - HP 95LX System Manager - "M_HELP_KEY"
- DI = 1302h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI1303-----------------------
- INT 60 u - HP 95LX System Manager - "M_HELP_TERM"
- DI = 1303h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
- --------b-60----DI1400-----------------------
- INT 60 u - HP 95LX System Manager - "M_ColInit"
- DI = 1400h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- Return: AX = ???
- STACK unchanged
- --------b-60----DI1401-----------------------
- INT 60 u - HP 95LX System Manager - "M_ColCpStr"
- DI = 1401h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- WORD ???
- DWORD pointer to ???
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI1402-----------------------
- INT 60 u - HP 95LX System Manager - "M_ColLicsStr"
- DI = 1402h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- ???
- Return: ???
- STACK unchanged
- --------b-60----DI1403-----------------------
- INT 60 u - HP 95LX System Manager - "M_ColLicsChar"
- DI = 1403h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- ???
- Return: ???
- STACK unchanged
- --------b-60----DI1404-----------------------
- INT 60 u - HP 95LX System Manager - "M_ColToLower"
- DI = 1404h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI1405-----------------------
- INT 60 u - HP 95LX System Manager - "M_ColCpSearch"
- DI = 1405h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- WORD ???
- DWORD pointer to ???
- WORD ???
- WORD ???
- Return: ???
- STACK unchanged
- --------b-60----DI1406-----------------------
- INT 60 u - HP 95LX System Manager - "M_ColToUpper"
- DI = 1406h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- DWORD pointer to ???
- WORD ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
- --------b-60----DI1500-----------------------
- INT 60 u - HP 95LX System Manager - "GrDispInit"
- DI = 1500h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- ???
- Return: ???
- STACK unchanged
- --------b-60----DI1501-----------------------
- INT 60 u - HP 95LX System Manager - "GrDispClear"
- DI = 1501h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- ???
- Return: ???
- STACK unchanged
- --------b-60----DI1502-----------------------
- INT 60 u - HP 95LX System Manager - "GrDispDot"
- DI = 1502h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- ???
- Return: ???
- STACK unchanged
- --------b-60----DI1503-----------------------
- INT 60 u - HP 95LX System Manager - "GrDispDraw"
- DI = 1503h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- ???
- Return: ???
- STACK unchanged
- --------b-60----DI1504-----------------------
- INT 60 u - HP 95LX System Manager - "GrDispFill"
- DI = 1504h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- ???
- Return: ???
- STACK unchanged
- --------b-60----DI1505-----------------------
- INT 60 u - HP 95LX System Manager - "GrDispRead"
- DI = 1505h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- ???
- Return: ???
- STACK unchanged
- --------b-60----DI1506-----------------------
- INT 60 u - HP 95LX System Manager - "GrDispString"
- DI = 1506h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- ???
- Return: ???
- STACK unchanged
- --------b-60----DI1507-----------------------
- INT 60 u - HP 95LX System Manager - "GrDispPan"
- DI = 1507h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- ???
- Return: ???
- STACK unchanged
- --------b-60----DI1508-----------------------
- INT 60 u - HP 95LX System Manager - "GrDispZoom"
- DI = 1508h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- ???
- Return: ???
- STACK unchanged
- --------b-60----DI1509-----------------------
- INT 60 u - HP 95LX System Manager - "GrDispSave"
- DI = 1509h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- ???
- Return: ???
- STACK unchanged
- --------b-60----DI150A-----------------------
- INT 60 u - HP 95LX System Manager - "GrDispRestore"
- DI = 150Ah
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- ???
- Return: ???
- STACK unchanged
- --------b-60----DI150B-----------------------
- INT 60 u - HP 95LX System Manager - "GrDispCorner"
- DI = 150Bh
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
- --------b-60----DI1604-----------------------
- INT 60 u - HP 95LX System Manager - "CP_TO_LICS"
- DI = 1604h
- STACK: 2 WORDs unused dummies (for calls from high level languages)
- ???
- Return: ???
- STACK unchanged
- SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
- --------G-6000-------------------------------
- INT 60 - SYS_PROF.EXE - PROFILER STATUS
- AH = 00h
- Return: AX = 0000h profiling is off
- otherwise profiling is on
- Note: SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
- Issue 47
- SeeAlso: AH=01h"SYS_PROF",AH=02h"SYS_PROF"
- --------G-6000-------------------------------
- INT 60 - MDEBUG - GET STATUS
- AH = 00h
- DS:SI -> password or a null byte
- Return: AX = return code
- FFFEh password is invalid
- FFFDh display mode is invalid
- else successful
- ES = value of the monitor register SE
- DI = value of the monitor register OF
- CH = monitor color
- CL = interpreter color
- BH = monitor start line
- BL = interpreter start line
- AH = makecode of the hotkey
- AL = ASCII code of the hotkey
- DL = status of special keys (only SHIFT, ALT, CTRL) for the
- hotkey (coded as for the keyboard flag at 0040h:0017h)
- DH = basic process number for the communication with drivers
- process number for the display driver, DH+1 = process
- number for the command driver(s)
- DS:SI -> MDEBUG identification table (see #03304)
- Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
- Schemmer, including a memory monitor, an interpreter, and a
- disassembler
- Notes: MDEBUG uses INT 60 by default, but may be directed to any of INT 60
- through INT 67; the interrupt handler is preceded by the signature
- "USERINT" and is not chained
- if DS:SI points at a null byte, MDEBUG will prompt for a password if
- passwords are active; enough stack space must be provided for an
- INT 10h call (which MDEBUG uses while prompting for the password)
- SeeAlso: AH=02h"MDEBUG"
- Index: hotkeys;MDEBUG
- Format of MDEBUG identification table:
- Offset Size Description (Table 03304)
- -2 WORD entry offset
- 00h WORD CS of MDEBUG
- 02h DWORD old INT 08h vector
- 06h DWORD old INT 09h vector
- 0Ah DWORD address INT 16h routine used by MDEBUG
- 0Eh BYTE length of version string
- 0Fh N BYTEs version string
- --------N-600000-----------------------------
- INT 60 - RIFS - CLIENT - INSTALLATION CHECK
- AX = 0000h
- Return: AX = 1234h if installed
- CF clear
- Program: RIFS is the Remote Installable File System by "kyle"
- InstallCheck: test for the signature "RIFS" immediately preceding the
- interrupt handler
- Range: INT 60 to INT 66 and INT 18,selected by scanning for 0000h:0000h vector
- SeeAlso: AX=0001h,AX=0005h,AX=0007h,AX=0008h,INT 2F/AX=5600h
- --------N-600001-----------------------------
- INT 60 - RIFS - CLIENT - UNINSTALL
- AX = 0001h
- Return: CF clear if successful
- SeeAlso: AX=0000h,AX=0009h
- --------N-600002-----------------------------
- INT 60 - RIFS - CLIENT - REMAP DRIVE
- AX = 0002h
- BH = local drive number
- BL = remote drive number
- Return: CF clear if successful
- CF set on error
- SeeAlso: AX=0000h,AX=0003h,AX=0004h,INT 21/AX=5F03h,INT 21/AX=5F05h"STARLITE"
- --------N-600003-----------------------------
- INT 60 - RIFS - CLIENT - UNMAP DRIVE
- AX = 0003h
- BL = drive to unmap
- Return: CF clear if successful
- CF set on error
- SeeAlso: AX=0000h,AX=0002h,AX=0004h,INT 21/AX=5F04h,INT 21/AX=5F06h"STARLITE"
- --------N-600004-----------------------------
- INT 60 - RIFS - CLIENT - UNMAP ALL DRIVES
- AX = 0004h
- Return: CF clear if successful
- CF set on error
- SeeAlso: AX=0000h,AX=0002h,AX=0003h
- --------N-600005-----------------------------
- INT 60 - RIFS - CLIENT - GET TRANSLATION TABLE
- AX = 0005h
- Return: CF clear if successful
- ES:BX -> translation table
- CF set on error
- SeeAlso: AX=0000h,AX=0006h,AX=0007h
- --------N-600006-----------------------------
- INT 60 - RIFS - CLIENT - GET STATISTICS TABLE
- AX = 0006h
- Return: CF clear if successful
- ES:BX -> statistics table
- CF set on error
- SeeAlso: AX=0000h,AX=0005h,AX=0007h,AX=000Ah
- --------N-600007-----------------------------
- INT 60 - RIFS - CLIENT - GET PORT TRANSLATION TABLE
- AX = 0007h
- Return: CF clear if successful
- CX = number of entries
- ES:BX -> port mapping table
- CF set on error
- SeeAlso: AX=0000h,AX=0005h
- --------N-600008-----------------------------
- INT 60 - RIFS - SERVER - INSTALLATION CHECK
- AX = 0008h
- Return: CF clear if successful
- CF set on error
- InstallCheck: test for the signature "RIFS" immediately preceding the
- interrupt handler
- Range: INT 60 to INT 66 and INT 18,selected by scanning for 0000h:0000h vector
- SeeAlso: AX=0000h,AX=0009h,AX=000Ah,AX=000Bh
- --------N-600009-----------------------------
- INT 60 - RIFS - SERVER - UNINSTALL
- AX = 0009h
- Return: CF clear if successful
- CF set on error
- SeeAlso: AX=0001h,AX=0008h
- --------N-60000A-----------------------------
- INT 60 - RIFS - SERVER - GET STATISTICS TABLE
- AX = 000Ah
- Return: CF clear if successful
- ES:BX -> statistics table
- CF set on error
- SeeAlso: AX=0006h,AX=0008h,AX=0009h,AX=000Bh
- --------N-60000B-----------------------------
- INT 60 - RIFS - SERVER - RESET
- AX = 000Bh
- Return: CF clear if successful
- CF set on error
- Note: closes all open files
- SeeAlso: AX=0008h,AX=0009h
- --------G-6001-------------------------------
- INT 60 - MDEBUG - GET ADDRESS OF THE HELP REGISTERS
- AH = 01h
- DS:SI -> password or a null byte
- Return: AX = return code
- FFFEh password is invalid
- FFFDh display mode is invalid
- else successful
- ES:DI point to the help registers of MDEBUG
- ES:DI-02h -> R0 (WORD)
- ES:DI -> R1 (WORD)
- ES:DI+02h -> R2 (WORD)
- ES:DI+04h -> R3 (WORD)
- ...
- ES:DI+0Eh -> R8 (WORD)
- --------G-6001-------------------------------
- INT 60 - SYS_PROF.EXE - TURN PROFILING OFF
- AH = 01h
- Note: SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
- Issue 47
- SeeAlso: AH=00h"SYS_PROF",AH=02h"SYS_PROF"
- --------N-6001FF-----------------------------
- INT 60 - FTP Packet Driver - BASIC FUNC - GET DRIVER INFO
- AX = 01FFh
- BX = handle returned by function 02h
- Return: CF set on error
- DH = error code (see #03305)
- CF clear if successful
- BX = version
- CH = network interface class (see #03306)
- DX = interface type (see #03306)
- CL = number
- DS:SI -> name
- AL = driver functions supported
- 01h basic
- 02h basic and extended
- 05h basic and high-performance
- 06h basic, high-performance, and extended
- FFh not installed
- Note: the handle in BX is optional for drivers written to v1.07 or later of
- the packet driver specification
- (Table 03305)
- Values for Packet Driver error code:
- 01h "BAD_HANDLE" invalid handle number
- 02h "NO_CLASS" no interfaces of the specified class found
- 03h "NO_TYPE" no interfaces of the specified type found
- 04h "NO_NUMBER" no interfaces of the specified number found
- 05h "BAD_TYPE" bad packet type
- 06h "NO_MULTICAST" interface does not support multicast messages
- 07h "CANT_TERMINATE" this packet driver cannot terminate
- 08h "BAD_MODE" invalid receiver mode
- 09h "NO_SPACE" insufficient space
- 0Ah "TYPE_INUSE" type accessed but never released
- 0Bh "BAD_COMMAND" bad command
- 0Ch "CANT_SEND" packet could not be sent
- 0Dh "CANT_SET" hardware address could not be changed
- 0Eh "BAD_ADDRESS" hardware address has a bad length or format
- 0Fh "CANT_RESET" could not reset interface
- (Table 03306)
- Values for Packet Driver network interface classes/types:
- Class 01h Ethernet/IEEE 802.3
- 01h 3COM 3C500/3C501
- 02h 3COM 3C505
- 03h MICOM-Interlan NI5010
- 04h BICC Data Networks 4110
- 05h BICC Data Networks 4117
- 06h MICOM-Interlan NP600
- 08h Ungermann-Bass PC-NIC
- 09h Univation NC-516
- 0Ah TRW PC-2000
- 0Bh MICOM-Interlan NI5210
- 0Ch 3COM 3C503
- 0Dh 3COM 3C523
- 0Eh Western Digital WD8003
- 0Fh Spider Systems S4
- 10h Torus Frame Level
- 11h 10Net Communications
- 12h Gateway PC-bus
- 13h Gateway AT-bus
- 14h Gateway MCA-bus
- 15h IMC PCnic
- 16h IMC PCnic II
- 17h IMC PCnic 8-bit
- 18h Tigan Communications
- 19h Micromatic Research
- 1Ah Clarkson "Multiplexor"
- 1Bh D-Link 8-bit
- 1Ch D-Link 16-bit
- 1Dh D-Link PS/2
- 1Eh Research Machines 8
- 1Fh Research Machines 16
- 20h Research Machines MCA
- 21h Radix Microsystems EXM1 16-bit
- 22h Interlan Ni9210
- 23h Interlan Ni6510
- 24h Vestra LANMASTER 16-bit
- 25h Vestra LANMASTER 8-bit
- 26h Allied Telesis PC/XT/AT
- 27h Allied Telesis NEC PC-98
- 28h Allied Telesis Fujitsu FMR
- 29h Ungermann-Bass NIC/PS2
- 2Ah Tiara LANCard/E AT
- 2Bh Tiara LANCard/E MC
- 2Ch Tiara LANCard/E TP
- 2Dh Spider Communications SpiderComm 8
- 2Eh Spider Communications SpiderComm 16
- 2Fh AT&T Starlan NAU
- 30h AT&T Starlan-10 NAU
- 31h AT&T Ethernet NAU
- 32h Intel smart card
- 33h Xircom Packet Adapter
- 34h Aquila Ethernet
- 35h Novell NE1000
- 36h Novell NE2000
- 37h SMC PC-510
- 38h AT&T Fiber NAU
- 39h NDIS to Packet Driver adapter
- 3Ah Racal-InterLan ES3210
- 3Bh General Systems ISDN simulated Ethernet
- 3Ch Hewlett-Packard
- 3Dh IMC EtherNic-8
- 3Eh IMC EtherNic-16
- 3Fh IMC EtherNic-MCA
- 40h NetWorth EtherNext
- 41h Dataco Scanet
- 42h DEC DEPCA
- 43h C-Net
- 44h Gandalf LANLine
- 45h Apricot built-in
- 46h David Systems Ether-T
- 47h ODI to Packet Driver adapter (see also INT 2F/AX=5100h)
- 48h AMD Am21110-16
- 49h Intel ICD Network controller family
- 4Ah Intel ICD PCL2
- 4Bh Intel ICD PCL2A
- 4Ch AT&T LANPacer
- 4Dh AT&T LANPacer+
- 4Eh AT&T EVB
- 4Fh AT&T StarStation
- 50h SLIP simulated ethernet
- 51h Racal-Interlan NIA310
- 52h Racal-Interlan NISE
- 53h Racal-Interlan NISE30
- 54h Racal-Interlan NI6610
- 55h Ethernet over IP/UDP
- 56h ICL EtherTeam 16
- 57h David Systems
- 58h NCR WaveLAN
- 59h Thomas Contrad TC5045
- 5Ah Russ Nelson's Parallel Port driver
- 5Bh Intell EtherExpress 16
- 5Ch IBMTOKEN
- 5Dh Zenith Z-Note
- 5Eh 3Com 3C509
- 5Fh Mylex LNE390
- 60h Madge Smart Ringnode
- 61h Novell NE2100
- 62h Allied Telesis 1500
- 63h Allied Telesis 1700
- 64h Fujitsu EtherCoupler
- Class 02h ProNET-10
- 01h Proteon p1300
- 02h Proteon p1800
- Class 03h IEEE 802.5/ProNet-4 (without expanded RIFs)
- 01h IBM Token-Ring Adapter
- 02h Proteon p1340
- 03h Proteon p1344
- 04h Gateway PC-bus
- 05h Gateway AT-bus
- 06h Gateway MCA-bus
- 07h Madge board
- 39h NDIS to Packet Driver adapter
- 47h ODI to Packet Driver adapter
- Class 04h Omninet
- Class 05h Appletalk
- 01h ATALK.SYS adapter
- Class 06h Serial Line
- 01h Clarkson 8250-SLIP
- 02h Clarkson "Multiplexor"
- 03h Eicon Technologies
- Class 07h StarLAN (subsumed by Ethernet class)
- Class 08h ARCnet
- 01h Datapoint RIM
- Class 09h AX.25
- 01h Ottawa PI card
- 02h Eicon Technologies
- Class 0Ah KISS
- Class 0Bh IEEE 802.3 with 802.2 headers
- types same as for class 01h
- Class 0Ch FDDI with 802.2 headers
- 01h Western Digital
- 02h Frontier Technology
- Class 0Dh Internet X.25
- 01h Western Digital
- 02h Frontier Technology
- 03h Emerging Technologies
- 04h The Software Forge
- 05h Link Data Intelligent X.25
- 06h Eicon Technologies
- Class 0Eh N.T. LANSTAR (encapsulating DIX Ethernet)
- 01h NT LANSTAR/8
- 02h NT LANSTAR/MC
- Class 0Fh SLFP (MIT serial specification)
- 01h MERIT
- Class 10h PPP (Point-to-Point Protocol)
- 01h 8250/16550 UART
- 02h Niwot Networks synch
- 03h Eicon Technologies
- Class 11h 802.5 with expanded RIFs
- types same as for class 3
- Class 12h reserved for LCP/NCPs
- Note: class and type numbers are cleared through FTP Software
- --------G-6002-------------------------------
- INT 60 - MDEBUG - SET STATUS
- AH = 02h
- DS:SI -> password or a null byte
- ES = new value for the register SE
- DI = new value for the register OF
- CH = new monitor color if nonzero
- CL = new interpreter color if nonzero
- BH = new monitor start line if nonzero
- BL = new interpreter start line if nonzero
- AL = new ASCII code for the hotkey ('A'..'Z', 'a'..'z') if nonzero
- DL = new status of the special keys (SHIFT, ALT, CTRL) for the hotkey
- if nonzero
- DH = if nonzero, new basic process number for communication with the
- drivers (DH = multiplex number for the display driver,
- DH+1 = multiplex number for the command driver or drivers)
- Return: AX = return code
- FFFFh call not allowed
- FFFEh password is invalid
- FFFDh display mode is invalid
- 0000h successful, status changed
- else AL = error reasons (see #03307)
- Note: the values of the registers SE and OF are always changed, the other
- values are only changed if they are valid
- SeeAlso: AH=00h"MDEBUG"
- Index: hotkeys;MDEBUG
- Bitfields for MDEBUG error reasons:
- Bit(s) Description (Table 03307)
- 0 invalid monitor start line
- 1 invalid interpreter start line
- 2 invalid hotkey
- 3 invalid process number
- 4-7 reserved
- --------N-6002-------------------------------
- INT 60 - FTP Packet Driver - BASIC FUNC - ACCESS TYPE
- AH = 02h
- AL = interface class
- BX = interface type
- DL = interface number
- DS:SI -> type
- CX = length of type (0000h for all packets)
- ES:DI -> receiver function (see #03308)
- Return: CF set on error
- DH = error code (see #03305)
- CF clear if successful
- AX = handle
- SeeAlso: AH=03h"FTP"
- (Table 03308)
- Values packet driver receiver is called with when a packet is received:
- AX = subfunction
- 00h get packet buffer
- CX = buffer length
- DX = lookahead length (v1.10+)
- DS:SI -> lookahead buffer if DX nonzero (v1.10+)
- DI = error flags (class dependent) (v1.10+)
- Return: ES:DI -> packet buffer
- 0000h:0000h means throw away packet
- CX = size of buffer (v1.10+), may be smaller than
- incoming data
- 01h copy completed
- DS:SI -> buffer
- CX = bytes actually copied (v1.10+)
- BX = handle
- --------G-6002-------------------------------
- INT 60 - SYS_PROF.EXE - TURN PROFILING ON
- AH = 02h
- Note: SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
- Issue 47
- SeeAlso: AH=00h"SYS_PROF",AH=01h"SYS_PROF"
- --------G-6003-------------------------------
- INT 60 - MDEBUG - POP UP
- AH = 03h
- DS:SI -> password or a null byte
- ES -> new value for the register SE
- DI -> new value for the register OF
- Return: AX = return code (see #03309)
- SeeAlso: AH=04h"MDEBUG"
- (Table 03309)
- Values for MDEBUG return code:
- FFFFh call not allowed
- FFFEh password is invalid
- FFFDh display mode is invalid
- else successful
- --------N-6003-------------------------------
- INT 60 - FTP Packet Driver - BASIC FUNC - RELEASE TYPE
- AH = 03h
- BX = handle
- Return: CF set on error
- DH = error code (see #03305)
- CF clear if successful
- SeeAlso: AH=02h"FTP"
- --------G-6003-------------------------------
- INT 60 - SYS_PROF.EXE - GET ADDRESS OF PROFILING TABLE
- AH = 03h
- Return: ES:BX -> profiling table
- Note: SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
- Issue 47
- SeeAlso: AH=04h"SYS_PROF"
- --------N-6004-------------------------------
- INT 60 - FTP Packet Driver - BASIC FUNC - SEND PACKET
- AH = 04h
- DS:SI -> buffer
- CX = length
- Return: CF set on error
- DH = error code (see #03305)
- CF clear if successful
- Note: the buffer may be modified immediately upon return from this call
- SeeAlso: AH=0Bh
- --------G-6004-------------------------------
- INT 60 - MDEBUG - POP UP
- AH = 04h
- DS:SI -> password or a null byte
- Return: AX = return code (see #03309)
- SeeAlso: AH=03h"MDEBUG",AH=07h"MDEBUG"
- --------G-6004-------------------------------
- INT 60 - SYS_PROF.EXE - CLEAR PROFILING TABLE
- AH = 04h
- Note: SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
- Issue 47
- SeeAlso: AH=03h"SYS_PROF"
- --------N-6005-------------------------------
- INT 60 - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE
- AH = 05h
- BX = handle (optional for v1.10+)
- Return: CF set on error
- DH = error code (see #03305)
- CF clear if successful
- --------G-6005-------------------------------
- INT 60 - MDEBUG - GET AND SET MDEBUG FLAGS
- AH = 05h
- DS:SI -> password or a null byte
- BL = new value for the semaphor of MDEBUG
- 00h enable popup of MDEBUG
- else disable popup of MDEBUG
- Return: AX = return code
- FFFEh password is invalid
- FFFDh display mode is invalid
- else successful
- BL = old value of the semaphor of MDEBUG
- BH = old value of the INT 08h semaphor
- (this semaphor is always reset after this function)
- --------N-6006-------------------------------
- INT 60 - FTP Packet Driver - BASIC FUNC - GET ADDRESS
- AH = 06h
- BX = handle (optional for v1.10+)
- ES:DI -> buffer
- CX = length
- Return: CF set on error
- DH = error code (see #03305)
- CF clear if successful
- CX = length
- Note: copies the local net address associated with the handle into the buffer
- --------G-6006-------------------------------
- INT 60 - MDEBUG - GET PASSWORD STATUS
- AH = 06h
- Return: AL = status
- 00h password inactive
- 01h password active
- --------N-6007-------------------------------
- INT 60 - FTP Packet Driver - BASIC FUNC - RESET INTERFACE
- AH = 07h
- BX = handle (optional for v1.10+)
- Return: CF set on error
- DH = error code (see #03305)
- CF clear if successful
- --------G-6007-------------------------------
- INT 60 - MDEBUG v1.70+ - GET ACTIVE PART OF MDEBUG
- AH = 07h
- Return: AL = active part for the next popup session of MDEBUG:
- bit 0: the next popup session will start in the interpreter rather
- than in the monitor
- bit 1: the next popup session will sart in the online-help
- SeeAlso: AH=03h"MDEBUG",AH=04h"MDEBUG"
- --------G-6008-------------------------------
- INT 60 - MDEBUG - UNUSED
- AH = 08h-FFh
- Return: AX = FFFCh
- --------N-600A-------------------------------
- INT 60 - FTP Packet Driver 1.09+ - HIGH-PERF FUNC - GET PARAMETERS
- AH = 0Ah
- Return: CF set on error
- DH = error code (0Bh) (see #03305)
- CF clear if successful
- ES:DI -> parameter table (see #03310)
- Format of packet driver parameter table:
- Offset Size Description (Table 03310)
- 00h BYTE major revision of packet driver spec driver conforms to
- 01h BYTE minor revision of packet driver spec
- 02h BYTE length of this structure in bytes
- 03h BYTE length of a MAC-layer address
- 04h WORD maximum transfer unit, including MAC headers
- 06h WORD buffer size for multicast addr
- 08h WORD number of receive buffers (one less than back-to-back MTU rcvs)
- 0Ah WORD number of transmit buffers
- 0Ch WORD interrupt number to hook for post-EOI processing, 00h=none
- --------N-600B-------------------------------
- INT 60 - FTP Packet Driver 1.09 - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
- AH = 0Bh
- DS:SI -> buffer
- CX = length of buffer
- ES:DI -> FAR function to call when buffer becomes available (see #03311)
- Return: CF set on error
- DH = error code (0Bh,0Ch) (see #03305)
- CF clear if successful
- Notes: unlike function 04h, the buffer is not available for modification as
- soon as the call returns; the buffer may be queued by the driver and
- not processed until later
- this function has been dropped from v1.10+ of the specification and
- replaced by function 0Ch
- SeeAlso: AH=04h"Packet Driver",AH=0Ch"Packet Driver"
- (Table 03311)
- Values packet driver completion function is called with:
- AX = result
- 00h copy OK
- nonzero error
- ES:DI -> buffer passed to INT 60/AH=0Bh call
- --------N-600C-------------------------------
- INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
- AH = 0Ch
- ES:DI -> pointer to IOCB (see #03312)
- Return: CF set on error
- DH = error code (see #03305)
- CF clear if successful
- SeeAlso: AH=04h"Packet Driver",AH=0Bh"Packet Driver"
- Format of packet driver IOCB:
- Offset Size Description (Table 03312)
- 00h DWORD pointer to buffer
- 04h WORD length of buffer
- 06h BYTE flags
- bit 0: packet driver is finished with IOCB
- bit 1: application requests upcall when driver completes
- 07h DWORD function address for upcall (see #03313)
- 0Bh 4 BYTEs future gather write
- 0Fh BYTE ???
- 10h 8 BYTEs private driver workspace
- (Table 03313)
- Values completion function is called with:
- ES:DI -> IOCB passed to INT 60/AH=0Ch
- --------N-600C-------------------------------
- INT 60 - Banyan VINES, 3com - GET STATION ADDRESS
- AH = 0Ch
- Return: AL = status
- 00h successful
- ES:SI -> 6-byte station address
- 02h semaphore service is unavailable
- --------N-600D-------------------------------
- INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - DROP PACKET FROM QUEUE
- AH = 0Dh
- ES:DI -> IOCB
- Return: CF set on error
- DH = error code (see #03305)
- CF clear if successful
- SeeAlso: AH=0Ch"Packet Driver"
- --------N-6011-------------------------------
- INT 60 - 3com, 10NET, Banyan VINES - LOCK AND WAIT
- AH = 11h
- AL = drive number or 0
- DX = number of seconds to wait
- ES:SI = Ethernet address or 0
- DS:BX -> 31-byte ASCIZ semaphore name
- Return: AL = status (see #03314)
- SeeAlso: AH=12h,AH=13h
- (Table 03314)
- Values for 3com semaphore status:
- 00h successful
- 01h timeout
- 02h server not responding
- 03h invalid semaphore name
- 04h semaphore list is full
- 05h invalid drive ID
- 06h invalid Ethernet address
- 07h not logged in
- 08h write to network failed
- 09h semaphore already logged for this CPU
- --------N-6012-------------------------------
- INT 60 - 3com, 10NET, Banyan VINES - LOCK
- AH = 12h
- AL = drive number or 00h
- ES:SI = Ethernet address or 0000h:0000h
- DS:BX -> 31-byte ASCIZ semaphore name
- Return: AL = status (see also #03314)
- 01h semaphore currently locked by another PC
- Note: unlike function 11h, this function returns immediately
- SeeAlso: AH=11h,AH=13h
- --------N-6013-------------------------------
- INT 60 - 3com, 10NET, Banyan VINES - UNLOCK
- AH = 13h
- AL = drive number or 00h
- ES:SI = Ethernet address or 0000h:0000h
- DS:BX -> 31-byte ASCIZ semaphore name
- Return: AL = status (see also #03314)
- 01h semaphore not locked
- SeeAlso: AH=11h,AH=12h
- --------N-6014-------------------------------
- INT 60 - FTP Packet Driver - EXTENDED FUNC - SET RECEIVE MODE
- AH = 14h
- BX = handle (optional for v1.10+)
- CX = mode (see #03315)
- Return: CF set on error
- DH = error code (01h,08h) (see #03305)
- CF clear if successful
- SeeAlso: AH=15h
- (Table 03315)
- Values for packet driver receive mode:
- 01h turn off receiver
- 02h receive only packets sent to this interface
- 03h mode 2 plus broadcast packets
- 04h mode 3 plus limited multicast packets
- 05h mode 3 plus all multicast packets
- 06h all packets
- 07h raw mode for serial line only (v1.10+)
- --------N-6015-------------------------------
- INT 60 - FTP Packet Driver - EXTENDED FUNC - GET RECEIVE MODE
- AH = 15h
- BX = handle (optional for v1.10+)
- Return: CF set on error
- DH = error code (01h) (see #03305)
- CF clear if successful
- AX = receive mode (see #03315)
- SeeAlso: AH=14h
- --------N-6016-------------------------------
- INT 60 - FTP Packet Driver - EXTENDED FUNC - SET MULTICAST LIST
- AH = 16h
- ES:DI -> multicast list
- CX = length of list in bytes
- Return: CF set on error
- DH = error code (06h,09h,0Eh) (see #03305)
- CF clear if successful
- SeeAlso: AH=17h
- --------N-6017-------------------------------
- INT 60 - FTP Packet Driver - EXTENDED FUNC - GET MULTICAST LIST
- AH = 17h
- Return: CF set on error
- DH = error code (06h,09h) (see #03305 at AX=01FFh)
- CF clear if successful
- ES:DI -> multicast addresses (do not modify)
- CX = bytes of multicast addresses currently in use
- SeeAlso: AH=16h
- --------N-6018-------------------------------
- INT 60 - FTP Packet Driver - EXTENDED FUNC - GET STATISTICS
- AH = 18h
- BX = handle (optional for v1.10+)
- Return: CF set on error
- DH = error code (01h) (see #03305)
- CF clear if successful
- DS:SI -> statistics (see #03316)
- Format of packet driver statistics:
- Offset Size Description (Table 03316)
- 00h DWORD packets in
- 04h DWORD packets out
- 08h DWORD bytes in
- 0Ch DWORD bytes out
- 10h DWORD errors in
- 14h DWORD errors out
- 18h DWORD packets dropped
- --------N-6019-------------------------------
- INT 60 - FTP Packet Driver - EXTENDED FUNC - SET NETWORK ADDRESS
- AH = 19h
- ES:DI -> address
- CX = length of address
- Return: CF set on error
- DH = error code (0Dh,0Eh) (see #03305)
- CF clear if successful
- CX = length
- --------N-601A-------------------------------
- INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - SEND RAW BYTES
- AH = 1Ah
- DS:SI -> buffer
- CX = length of buffer
- Return: CF set on error
- DH = error code (see #03305 at AX=01FFh)
- CF clear if successful
- SeeAlso: AH=1Ch
- --------N-601B-------------------------------
- INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FLUSH RAW BYTES RECEIVED
- AH = 1Bh
- Return: CF set on error
- DH = error code (see #03305)
- CF clear if successful
- SeeAlso: AH=1Ch
- --------N-601C-------------------------------
- INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FETCH RAW BYTES RECEIVED
- AH = 1Ch
- DS:SI -> buffer
- CX = length of buffer
- DX = timeout in clock ticks
- Return: CF set on error
- DH = error code (see #03305 at AX=01FFh)
- CF clear if successful
- CX = number of bytes transferred to buffer
- SeeAlso: AH=1Ah,AH=1Bh
- ----------60899B-----------------------------
- INT 60 U - Agfa TTSR.EXE - API
- AX = 899Bh
- BX = function
- 0001h installation check
- Return: BX = 899Bh if installed
- 0002h ???
- 0003h ???
- ???
- Return: ???
- Note: TTSR.EXE is found in FotoLook 2.09 (16-bit), which is available from
- agfa.com; it appears to provide DOS ASPI support
- !!!
- --------a-60AD-------------------------------
- INT 60 - AccessDOS - API
- AH = ADh
- AL = function
- E1h ???
- Return: AX = ???
- E2h get configuration
- Return: BX:AX -> configuration data
- Program: AccessDOS is a public domain TSR developed at The Trace Research and
- Development Center which provides extensions for keyboard, mouse,
- and sound access by the visually, hearing, or motor-control
- impaired.
- InstallCheck: test for the signature "ACCESSv1.00" beginning three bytes
- past the start of the interrupt handler (this same signature is also
- present in v1.10)
- Range: INT 60 to INT 66, selected by scanning for 0000h:0000h vector
- --------N-60E9-------------------------------
- INT 60 - FTP Packet Driver - Crynwr Software - AUTOSELECT TRANSCEIVER
- AH = E9h
- ???
- Return: ???
- --------*-61---------------------------------
- INT 61 - reserved for user interrupt
- --------b-61---------------------------------
- INT 61 - Atari Portfolio - EXTENDED BIOS
- Desc: provides subfunctions such as turning off the machine, accessing
- internal variables, and mapping memory cards
- SeeAlso: INT 60"Atari",AH=00h"Portfolio",AH=08h"Portfolio",AH=0Dh"Portfolio"
- SeeAlso: AH=11h"Portfolio",AH=15h"Portfolio",AH=19h"Portfolio"
- SeeAlso: AH=1Bh"Portfolio",AH=24h"Portfolio",AH=2Ch"Portfolio"
- SeeAlso: AH=30h"Portfolio"
- --------b-61---------------------------------
- INT 61 - TI Professional PC - FACTORY ROM DATA AREA POINTER (NOT A VECTOR!)
- Desc: the low word of this vector contains the segment of the RAM data area
- to be used by the expansion ROM at F400h:0000h, and the high word
- contains the length of the data area; this segment and size are
- both set to 0000h if no ROM is installed at F400h:0000h
- SeeAlso: INT 60"TI Professional PC",INT 62"TI Professional"
- SeeAlso: INT 66"TI Professional PC"
- --------b-61---------------------------------
- INT 61 - HP 95LX System Manager - LOAD DS
- SeeAlso: INT 0F"HP 95LX",INT 60/DI=0102h"HP 95LX"
- --------r-61---------------------------------
- INT 61 - JPI TopSPEED Modula-2 v1 - PROCEDURE EXIT TRAP
- SeeAlso: INT 60"JPI"
- --------d-61---------------------------------
- INT 61 - Adaptec and OMTI controllers - DRIVE 0 DATA
- Desc: this vector stores the second four bytes of the parameter table for
- hard disk 0
- SeeAlso: INT 60"Adaptec",INT 62"Adaptec",INT 63"Adaptec"
- --------I-61---------------------------------
- INT 61 - Sangoma CCIP (CCPOP 3270 resident module) INTERFACE
- BX:DX -> control block
- SeeAlso: INT 67"Sangoma"
- --------v-61---------------------------------
- INT 61 - VIRUS - "SEMTEX"/"Screen Trasher" - INT 21h SUBSTITUTE
- Note: the virus copies the original INT 21h vector into INT 61h
- SeeAlso: INT 21/AH=00h,INT 21/AH=25h,INT 60"VIRUS",INT 6B"VIRUS"
- --------U-61---------------------------------
- INT 61 - PC-Magazin - PAGE, SWAPx
- details not yet available
- Program: PAGE and SWAPx are utilities from PC-Magazin, the German edition of
- PC Magazine, issue 47/85, page 31
- SeeAlso: INT 66"INCA"
- --------N-61---------------------------------
- INT 61 - TCPOpen kernel - API
- ES:BX -> request packet (see #03317)
- Program: TCPOpen is a TCP/IP protocol stack by Lanera
- Range: INT 60 to INT 7F, selected by configuration file
- Note: there does not appear to be an installation check, though function
- FFFFh can be used to verify that the software is indeed functioning
- Format of TCPOpen request packet:
- Offset Size Description (Table 03317)
- 00h 8 BYTEs ???
- 08h WORD function number (0000h-001Ah or FFF9h-FFFFh)
- 0Ah WORD ???
- 0Ch 2 BYTEs ???
- 0Eh WORD (ret) return code
- 10h 2 BYTEs ???
- 12h WORD ???
- 14h WORD (ret) 0001h if requested function complete
- 16h WORD (ret) ???
- 18h 6 BYTEs ???
- 1Eh DWORD -> ???
- 22h WORD ??? or 0000h
- 24h WORD (ret) ???
- SeeAlso: #03318
- (Table 03318)
- Call TCPOpen Function FFFFh: installation verification
- Return: offset 10h = BEEFh
- offset 14h = 0001h
- offset 24h = ???
- Index: installation check;TCPOpen kernel
- --------N-61---------------------------------
- INT 61 - XFS v1.76 - XFSKRNL.EXE - API
- AX = function
- 8000h installation check???
- Return: AX = 0000h
- 8001h ???
- ES:DI -> DWORD ???
- Return: AX = status???
- 8002h ???
- BX = ???
- CX = ???
- ES:DI -> ???
- Return: AX = status???
- 8003h ???
- BX = ???
- CX = ???
- ES:DI -> ???
- Return: AX = status???
- 8004h ???
- BX = ???
- Return: AX = status???
- 8005h wait until ???
- Return: DX:AX = ???
- 8006h get ???
- Return: DX:AX -> ??? record
- 8007h set IP address??? (or htonl/ntohl)
- DX:BX = IP address???
- Return: DX:AX = byte-swapped IP address
- 8008h set IP address??? (or htonl/ntohl)
- DX:AX = IP address???
- Return: DX:AX = byte-swapped IP address
- 8009h ???
- ES:DI -> ???
- Return: DX:AX = ???
- 800Ah ???
- 800Bh ???
- Return: DX:AX = ???
- 800Ch ???
- 800Dh ???
- 800Eh ???
- 800Fh ???
- 8010h get ??? record
- Return: DX:AX -> ??? record
- 8011h ???
- 8012h ???
- BX = ???
- Return: DX:AX = ???
- 8013h get ??? record
- Return: DX:AX -> ??? record
- 8014h ???
- ES:DI -> ???
- Return: nothing
- 8015h get ??? record
- Return: DX:AX -> 8-byte ??? record
- 8016h get ??? record
- Return: DX:AX -> 6-byte ??? record
- 8017h ???
- ES:DI -> ???
- Return: DX:AX = ???
- 8018h get ??? record
- Return: DX:AX -> ??? record
- 8019h get ??? record
- Return: DX:AX -> 14-byte ??? record
- 801Ah get ??? record
- Return: DX:AX -> ??? record (max 98 bytes)
- 801Bh get ??? record
- Return: DX:AX -> ??? record
- 801Ch ???
- Return: nothing
- 801Dh get ???
- Return: AL = ???
- 801Eh ???
- Return: AX = ???
- 801Fh uninstall
- Return: AX = status
- 0000h successful
- other interrupt which could not be released
- AX = other
- Return: AX:BX = ??? (0000h:0000h by default)
- Program: XFS is a shareware Network File System client by Robert Juhasz
- Range: INT 60 to INT 65, selected by scanning for two consecutive free
- vectors and hooking the first
- SeeAlso: INT 62"XFS"
- --------N-61---------------------------------
- INT 61 - FTP Software PC/TCP - TCP/IP TSR System Call interface
- AH = system call number (also see entries below)
- 01h "pkt_alloc" (v2.05; this is "net_config" in v2.1+)
- 02h "pkt_free" (v2.05; this is "get_kernel_info" in v2.1+)
- Return: CF clear if successful
- CF set on error
- AL = basic error (see #03319)
- AH = suberror number (see #03320,#03321)
- InstallCheck: test for the signature "TCPTSR" three bytes beyond the start
- of the interrupt handler
- Range: INT 20h to INT E0h, selected by configuration
- BUG: the SLIP kernel for v2.05 bounds-checks the wrong register, so values
- greater than 54h in AH may crash the system. Other kernels may have
- this bug as well.
- SeeAlso: INT 61/AH=00h"PC/TCP",INT 61/AH=2Ah,INT 61/AH=54h
- Index: installation check;PC/TCP
- (Table 03319)
- Values for PC/TCP error code:
- 00h "NET_NOERR" successful
- 01h "NET_ERR_INUSE" protocol or socket already in use
- 02h "NET_DOS_ERR" MS-DOS error (returned as suberror code in AH)
- 03h "NET_ERR_NOMEM" out of memory
- 04h "NET_ERR_NOTNETCONN" not a network descriptor
- 05h "NET_ERR_ILLEGALOP" invalid operation on given kind of network descriptor
- 06h "NET_ERR_BADPKT" illegal or corrupted packet
- 07h "NET_ERR_NOHOST" no host bound to specified connection
- 08h "NET_ERR_CANTOPEN" unable to open file
- 09h "NET_ERR_NET_UNREACHABLE" network is unreachable
- 0Ah "NET_ERR_HOST_UNREACHABLE" host is unreachable (see #03320)
- 0Bh "NET_ERR_PROT_UNREACHABLE" protocol is unreachable
- 0Ch "NET_ERR_PORT_UNREACHABLE" port is unreachable
- 0Dh "NET_ERR_TIMEOUT" operation timed out
- 0Eh "NET_ERR_HOSTUNKNOWN" unable to resolve host name
- 0Fh "NET_ERR_NOSERVERS" no name servers configured
- 10h "NET_ERR_SERVER_ERR" bad reply from name server
- Subcodes: 0= no error, 1 = Host unreachable
- 11h "NET_ERR_BADFORMAT" bad format for IP address or field in IP address
- structure is zero
- 12h "NET_ERR_BADARG" invalid argument
- 13h "NET_ERR_EOF" foreign host closed its end of connection
- 14h "NET_ERR_RESET" connection has been reset
- 15h "NET_ERR_WOULDBLOCK" recv() call was done on a non-blocking connection
- with no data available
- 16h "NET_ERR_UNBOUND" insufficient resources to do operation
- 17h "NET_ERR_NODESC" could not allocate network descriptor
- 18h "NET_ERR_BADSYSCALL" invalid/unsupported kernel call
- 19h "NET_ERR_CANTBROADCAST" unable to broadcast
- 1Ah "NET_ERR_NOTESTAB" operation illegal because connection not established
- 1Bh kernel busy, try again later
- 1Ch "NET_ERR_ICMPMESG" an ICMP message was received (not on streams)
- (see #03321)
- ---v2.1+---
- 1Dh "NET_ERR_TERMINATING" internal kernel fatal error
- 1Eh "NET_ERR_TAG_LOCKED" not allowed to set this tag (net_config)
- 1Fh "NET_ERR_BAD_INTERFACE" non existent interface specified
- 20h "NET_ERR_BADCONFIG" kernel cannot run - bad configuration
- 21h "NET_ERR_EMM" expanded memory error
- 22h "NET_ERR_CANT_SHUTDOWN" cant unload kernel (multitasker running)
- 23h "NET_ERR_PARKED_IN" unable to unhook DOS interrupt
- 24h "NET_ERR_NOQIOS" ran out of resources; try again later
- 25h "NET_ERR_WOULD_TRUNCATE" datagram too large and "don't truncate" was set
- (Table 03320)
- Values for subcodes of PC/TCP error 0Ah "NET_ERR_HOST_UNREACHABLE":
- 00h no error
- 01h host unreachable
- 02h ARP failed
- 03h hardware failure
- 04h link failure
- 05h no route
- 06h gateway down
- SeeAlso: #03319,#03321
- (Table 03321)
- Values for subcodes of PC/TCP error 1Ch "NET_ERR_ICMPMESG":
- 07h unrecognised
- 08h can't fragment
- 09h srcr_fail
- 0Ah source quench
- 0Bh time exceeded
- 0Ch parameter problem
- 0Dh admin_prohib. see also code 0Ah
- SeeAlso: #03319,#03320
- --------N-6100-------------------------------
- INT 61 U - PC/TCP kernel v2.05+ - GET DEBUG INFORMATION
- AH = 00h
- DS:SI -> 216-byte buffer for network debugging information (see #03322)
- Return: CF clear
- AX = 0000h
- buffer filled
- Notes: this call is not documented by FTP, Inc. for any version
- most of the information returned by this call is available via the
- documented get_kernel_info or net_info commands.
- this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
- SeeAlso: INT 61"FTP Software",INT 61/AH=2Ah"PC/TCP"
- Format of network debugging information:
- Offset Size Description (Table 03322)
- 00h DWORD number of interrupts
- 04h DWORD receive buffer low-water mark
- 08h DWORD transmit buffer low-water mark
- 0Ch DWORD number of packets received
- 10h DWORD number of packets transmitted
- 14h DWORD total receive errors
- 18h DWORD total transmit errors
- 1Ch 4 BYTEs ???
- 20h DWORD receive resets
- 24h DWORD transmit resets
- 28h DWORD number of "runts" received
- 2Ch DWORD number of alignment errors on received packets
- 30h DWORD number of CRC errors on received packets
- 34h DWORD number of parity errors on received packets
- 38h DWORD number of receive overflow errors
- 3Ch DWORD number of oversized packets received
- 40h DWORD number of packets lost due to lack of buffers
- 44h DWORD receive timeouts
- 48h 32 BYTEs ???
- 68h DWORD number of transmit collisions
- 6Ch DWORD number of transmit timeouts
- 70h DWORD number of transmit underflows
- 74h DWORD number of lost "crs" on transmit
- 78h DWORD number of times heartbeat failed on transmit
- 7Ch 24 BYTEs ???
- 94h WORD free packet buffers
- 96h WORD total packet buffers
- 98h WORD minimum number of packet buffers free since kernel started
- 9Ah 24 BYTEs ???
- B2h DWORD pointer to TCP connection list???
- B6h DWORD pointer to IP routing table???
- BAh 30 BYTEs ???
- --------N-6100-------------------------------
- INT 61 - Banyan VINES - CALL A SERVICE
- AH = 00h
- AL = service ID (1..16)
- other registers vary by service
- Return: AX = status (see #03325)
- Desc: Calls an adapter driver or redirector service. The service handler
- pointers are stored at offset 0010h in the code segment of the
- BANV interrupt handler (see #03323).
- Note: Banyan can use any interrupt from 60h through 66h. The Banyan
- interrupt handler is identified by the string "BANV" in the four
- bytes immediately preceding the interrupt handler
- SeeAlso: AH=01h,AH=03h
- Format of the BANV code segment (revision 5.53):
- Offset Size Description (Table 03323)
- 00h 16 BYTEs reserved
- 10h 16 DWORDs far pointers to the service handlers (0 = not installed)
- 50h DWORD far pointer to last called service
- 54h WORD VINES revision
- 56h DWORD VINES revision long
- 5Ah WORD VINES revision (lower bound)
- 5Ch DWORD VINES revision (lower bound) long
- 60h WORD VINES revision (upper bound)
- 62h DWORD VINES revision (upper bound) long
- 66h WORD end of PCCONFIG area
- 68h WORD start of PCCONFIG area
- 6Ah 4 BYTEs BANV interrupt identifier ("BANV")
- 6Eh N BYTEs BANV interrupt service
- SeeAlso: #03324
- --------b-6100-------------------------------
- INT 61 - Atari Portfolio - SERVICE INITIALIZATION
- AH = 00h
- Return: nothing
- Note: applications using any Portfolio INT 61 calls should call this function
- exactly once at startup
- SeeAlso: AH=07h"Portfolio",AH=09h"Portfolio",AH=0Dh"Portfolio"
- SeeAlso: AH=11h"Portfolio",AH=15h"Portfolio",AH=19h"Portfolio"
- SeeAlso: AH=1Bh"Portfolio",AH=24h"Portfolio",AH=2Ch"Portfolio"
- SeeAlso: AH=30h"Portfolio"
- --------V-610000-----------------------------
- INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - ZOOM DISPLAY
- AX = 0000h
- BX = zoom factor (0-7)
- Desc: zooms the display based on the given zoom factor
- Notes: INT 61h is the default interrupt; the actual interrupt number can be
- obtained by calling INT 16/AH=FFh
- not all vendors include the Tseng TSR which supports these functions
- SeeAlso: AX=0001h"OPTIMA",AX=0002h"OPTIMA",AX=0005h"OPTIMA"
- SeeAlso: INT 16/AH=FFh"OPTIMA"
- --------N-610001DS0001-----------------------
- INT 61 - Banyan VINES - INTERNAL VINES SOCKET API (NEAR DATA)
- AX = 0001h
- DS = 0001h (to distinguish from alternate AX=0001h socket interface)
- CX:BX -> internal communications control block (see #03324)
- DX = caller's data segment
- Return: AX = status
- 0000h successful
- 0099h invalid operation
- 00A5h resource not available
- Desc: StreetTalk access with session handles
- Range: INT 60 to INT 66
- Notes: This service is handled by the adapter driver
- The request dispatch table contains dummy entries for subfunctions
- 06h, 0Dh, 0Eh, 0Fh, 10h, and 11h, which always return error 0099h
- (invalid operation) in the request block's result buffer
- in recent VINES releases, this interface is superseded by the AX=000Fh
- interface, which allows FAR parameter block pointers (refer to that
- function's entries for more details on individual subfunctions)
- some adapter drivers (e.g. the NDIS2 token ring driver NDTOKBAN for
- VINES 5.53) ignore the value in CX and use the value from DX instead
- SeeAlso: AX=000Fh
- Format of internal communications control block:
- Offset Size Description (Table 03324)
- 00h WORD subfunction number
- 02h WORD magic number (FEFEh)
- 04h WORD (ret) result, should be set to 0 before calling
- 06h WORD reserved (will be set to client DS)
- 08h WORD caller's code segment if function 000Bh, 0 else
- 0Ah WORD pointer to parameter block
- 0Ch WORD reserved (segment of parameter block; will be set to client DS)
- 0Eh WORD StreetTalk handle
- SeeAlso: #03323,#03444 at INT 61/AX=000Fh
- --------N-610001SF0001-----------------------
- INT 61 - Banyan VINES - "Sosock" - OPEN COMMUNICATIONS SOCKET
- AX = 0001h subfn 0001h
- DS:DX -> communications control block (function 0001h) (see #03326)
- Return: AX = status (0000h-0002h,0098h,009Eh-00A2h) (see #03325)
- Range: INT 60h to INT 66h
- Note: The Banyan interrupt handler is identified by the string "BANV" in
- the four bytes immediately preceding the interrupt handler
- SeeAlso: AX=0001h/SF=0002h,AX=0001h/SF=0008h,INT 15/AX=DE2Eh
- (Table 03325)
- Values for VINES status:
- 0000h successful
- 0001h service not installed
- 0002h invalid service ID
- 0003h invalid function
- 0004h-000Ah reserved for BANV interface errors
- 0097h invalid socket identifier
- 0098h resource already in use
- 009Bh destination node unreachable
- 009Ch message overflow
- 009Dh destination socket nonexistent
- 009Eh address family does not exist
- 009Fh socket type does not exist
- 00A0h protocol does not exist
- 00A1h no more sockets available
- 00A2h no more buffer space available
- 00A3h timeout
- 00A5h resource not available
- 00A6h internal communication failure
- 00B1h resource disconnect
- Format of VINES control block to open socket:
- Offset Size Description (Table 03326)
- 00h WORD 0001h
- 02h WORD pointer to argument block
- 04h WORD error return code
- 06h 4 BYTEs reserved
- SeeAlso: #03327
- Format of VINES argument block for opening socket:
- Offset Size Description (Table 03327)
- 00h WORD pointer to 2-byte buffer for socket identifier
- 02h WORD address family
- 0003h Banyan
- 04h WORD socket type
- in address family 0003h
- 0001h IPC socket
- 0002h SPP socket
- 06h WORD protocol number
- FFFFh default
- 08h WORD pointer to 16-byte buffer for socket address (see #03328)
- 0Ah WORD local port number
- 0000h if service should assign transient port number
- 0001h to 01FFh well-known port number (assigned by Banyan)
- SeeAlso: #03326
- Format of Banyan VINES IPC port:
- Offset Size Description (Table 03328)
- 00h WORD address family (always 0003h for Banyan ports)
- 04h 4 BYTEs network number (server's serial number)
- 06h WORD subnet number (0001h = server, 8000h-FFFEh = PC)
- 08h WORD port ID (0001h-01FFh for "well-known" ports)
- 0Ah BYTE hop count
- 0Bh 5 BYTEs filler
- SeeAlso: #03333
- --------N-610001SF0002-----------------------
- INT 61 - Banyan VINES - "Sosend" - INITIATE OUTPUT EVENT
- AX = 0001h subfn 0002h
- DS:DX -> communications control block (function 0002h) (see #03329)
- Return: AX = status (0000h-0002h,0097h,009Bh-009Dh,00A2h,00A3h,00B1h)
- (see #03325)
- Range: INT 60h to INT 66h
- Note: The Banyan interrupt handler is identified by the string "BANV" in
- the four bytes immediately preceding the interrupt handler
- SeeAlso: AX=0001h/SF=0001h,AX=0001h/SF=0005h
- Format of VINES control block for subfunction 0002h:
- Offset Size Description (Table 03329)
- 00h WORD 0002h
- 02h WORD pointer to argument block (see #03330)
- 04h WORD error return code (0000h,0097h,00A2h,00A3h,00A5h,00A6h,00B1h)
- (see #03325)
- 06h 4 BYTEs reserved
- SeeAlso: #03334
- Format of VINES argument block for subfunction 0002h:
- Offset Size Description (Table 03330)
- 00h WORD routine metric
- 02h WORD error return code
- 04h WORD socket identifier
- 06h WORD pointer to send buffer (see #03332)
- 08h WORD length of send buffer
- 0Ah WORD message request flags (see #03331)
- 0Ch 16 BYTEs socket address (see #03333)
- 1Ch WORD timeout value in multiples of 200ms
- 1Eh WORD connection identifier
- 20h WORD type of request
- 0001h send message
- 0002h establish a virtual connection
- 0003h terminate a virtual connection
- SeeAlso: #03329,#03335
- Bitfields for message request flags:
- Bit(s) Description (Table 03331)
- 0 async request
- 1 reliable message
- 2 flush receive buffer on overflow
- 3 end of user message received
- 4 vectored request (if set, send buffer contains buffer descriptors)
- 5 connection-specific receive
- 6 change to connection-specific receive mode
- SeeAlso: #03330,#03335
- Format of buffer descriptor:
- Offset Size Description (Table 03332)
- 00h WORD data segment
- 02h WORD buffer pointer
- 04h WORD buffer length
- 06h WORD character count
- SeeAlso: #03330
- Format of VINES socket address for unreliable datagrams:
- Offset Size Description (Table 03333)
- 00h WORD 0003h address family
- 02h DWORD FFFFFFFFh network number
- 06h WORD FFFFh subnet number
- 08h WORD local port number
- 0Ah BYTE 00h-0Fh hop count
- 0Bh 5 BYTEs 0000h filler
- SeeAlso: #03328
- --------N-610001SF0003-----------------------
- INT 61 - Banyan VINES - "Sorec" - RECEIVE INPUT EVENT NOTIFICATION
- AX = 0001h subfn 0003h
- DS:DX -> communications control block (function 0003h) (see #03334)
- Return: AX = status (00-0Ah,97h,A2h,A3h) (see #03325)
- Range: INT 60h to INT 66h
- Note: The Banyan interrupt handler is identified by the string "BANV" in
- the four bytes immediately preceding the interrupt handler
- SeeAlso: AX=0001h/SF=0002h
- Format of VINES control block for subfunction 0003h:
- Offset Size Description (Table 03334)
- 00h WORD 0003h
- 02h WORD pointer to argument block (see #03335)
- 04h WORD error return code (0000h,0097h,00A2h,00A3h,00A5h,00A6h,00B1h)
- (see #03325)
- 06h 4 BYTEs reserved
- SeeAlso: #03329,#03335,#03337
- Format of VINES argument block for subfunction 0003h:
- Offset Size Description (Table 03335)
- 00h WORD character count
- 02h WORD error return code
- 04h WORD socket identifier
- 06h WORD pointer to receive buffer (see #03336)
- 08h WORD length of receive buffer
- 0Ah WORD message request flags (see #03331)
- 0Ch 16 BYTEs socket address (see #03328)
- 1Ch WORD timeout value in multiples of 200ms
- 1Eh WORD connection identifier
- 20h WORD type of response
- 0001h message received
- 0002h virtual connection established
- 0003h virtual connection terminated
- SeeAlso: #03334,#03338
- Format of buffer descriptor:
- Offset Size Description (Table 03336)
- 00h WORD data segment
- 02h WORD buffer pointer
- 04h WORD buffer length
- 06h WORD character count
- SeeAlso: #03335
- --------N-610001SF0004-----------------------
- INT 61 - Banyan VINES - "Soclose" - CLOSE A SOCKET
- AX = 0001h subfn 0004h
- DS:DX -> communications control block (function 0004h) (see #03337)
- Return: AX = status (0000h-000Ah,0097h) (see #03325)
- Range: INT 60h to INT 66h
- Note: The Banyan interrupt handler is identified by the string "BANV" in
- the four bytes immediately preceding the interrupt handler
- SeeAlso: AX=0001h/SF=0001h,INT 15/AX=DE2Eh
- Format of VINES control block to close socket:
- Offset Size Description (Table 03337)
- 00h WORD 0004h
- 02h WORD pointer to argument block (see #03338)
- 04h WORD error return code (see #03325)
- 06h 4 BYTEs reserved
- SeeAlso: #03334,#03340
- Format of VINES argument block for closing socket:
- Offset Size Description (Table 03338)
- 00h WORD socket identifier
- SeeAlso: #03335,#03337,#03341
- --------N-610001SF0005-----------------------
- INT 61 - Banyan VINES - "Sowait" - WAIT FOR ASYNCHRONOUS EVENT COMPLETION
- AX = 0001h subfn 0005h
- DS:DX -> communications control block (see #03340)
- Return: AX = status (0000h-000Ah,00A2h,00A3h) (see #03339)
- Desc: returns results for all asynchronous operations invoked from the
- data segment used for this call
- Range: INT 60h to INT 66h
- Notes: The Banyan interrupt handler is identified by the string "BANV" in
- the four bytes immediately preceding the interrupt handler
- SeeAlso: AX=0001h/SF=0002h,AX=0001h/SF=0009h
- (Table 03339)
- Values for VINES function status:
- 0000h successful
- 0001h service not installed
- 0002h invalid service ID
- 0003h-000Ah reserved for BANV interface errors
- 00A2h no more buffer space available
- 00A3h timeout event
- Format of VINES control block for subfunction 0005h:
- Offset Size Description (Table 03340)
- 00h WORD 0005h
- 02h WORD pointer to argument block (see #03341)
- 04h WORD error return code
- 06h 4 BYTEs reserved
- SeeAlso: #03337,#03342
- Format of VINES argument block for subfunction 0005h:
- Offset Size Description (Table 03341)
- 00h WORD pointer to WORD event pointer
- 02h WORD timeout in multiples of 200ms, FFFFh = infinite
- SeeAlso: #03338,#03340
- --------N-610001SF0008-----------------------
- INT 61 - Banyan VINES - "Sosession" - REGISTER APPLICATION WITH COMM SERVICE
- AX = 0001h subfn 0008h
- DS:DX -> communications control block (function 0008h) (see #03342)
- Return: AX = status
- 0000h successful
- 00A2h no more buffer space available
- Range: INT 60h to INT 66h
- Note: The Banyan interrupt handler is identified by the string "BANV" in
- the four bytes immediately preceding the interrupt handler
- SeeAlso: AX=0001h/SF=0001h,AX=0001h/SF=0009h
- Format of VINES control block for subfunction 0006h:
- Offset Size Description (Table 03342)
- 00h WORD 0008h
- 02h WORD process type
- 0001h transient process
- 0002h resident process
- 04h WORD error return code
- 06h 4 BYTEs reserved
- SeeAlso: #03340,#03343
- --------N-610001SF000B-----------------------
- INT 61 - Banyan VINES - "Soint" - SET USER COMPLETION FUNCTION
- AX = 0001h subfn 000Bh
- DS:DX -> communications control block (function 000Bh) (see #03343)
- Return: AX = status (00h-0Ah,A2h) (see #03339)
- Range: INT 60h to INT 66h
- Note: The Banyan interrupt handler is identified by the string "BANV" in
- the four bytes immediately preceding the interrupt handler
- SeeAlso: AX=0001h/SF=0005h,AX=0001h/SF=0008h
- Format of VINES control block for subfunction 000Bh:
- Offset Size Description (Table 03343)
- 00h WORD 000Bh
- 02h WORD pointer to argument block (see #03344)
- 04h WORD error return code (see #03325)
- 06h 2 BYTEs reserved
- 08h WORD user CS register
- SeeAlso: #03342
- Format of VINES argument block for subfunction 000Bh:
- Offset Size Description (Table 03344)
- 00h WORD pointer to user interrupt function (see #03345)
- 02h WORD pointer to user stack
- 04h WORD initial timeout value in multiples of 200ms, FFFFh = infinite
- SeeAlso: #03344
- (Table 03345)
- Values FAR user function is invoked with:
- SS = DS = ES = segment of control block
- STACK: DWORD return address
- WORD argument pointer (sosend or sorec argument block)
- WORD error return code
- 0000h argument pointer is valid
- 00A3h timeout
- --------V-610001-----------------------------
- INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - CENTER ZOOM WINDOW
- AX = 0001h
- BX = X coordinate to center
- CX = Y coordinate to center
- Desc: Positions the zoom window such that the specified window-relative
- coordinates appear as close as possible to the center of the
- display. Useful for scrolling and panning.
- Range: unknown
- Notes: INT 61h is the default interrupt; the actual interrupt number can be
- obtained by calling INT 16/AH=FFh
- not all vendors include the Tseng TSR which supports these functions
- SeeAlso: AX=0000h"OPTIMA",AX=0002h"OPTIMA",AX=0005h"OPTIMA"
- SeeAlso: INT 16/AH=FFh"OPTIMA"
- --------I-610002-----------------------------
- INT 61 - Banyan VINES - 3270 INTERFACE
- AX = 0002h
- BH = function number (see #03346)
- DS:CX -> argument block (except BH=00h,1Ah) (see #03348)
- Return: AX = status (see #03347)
- Notes: Either 3270/SNA or 3270/BSC interface may use AX=0002h, depending on
- which is loaded first. The other interface will use AX=000Ah
- Status codes greater than 63h indicate an inconsistency in the 3270/SNA
- or 3270/BSC resident driver, which must be reloaded by the user
- (Table 03346)
- Values for VINES 3270 interface function number:
- 00h "pi2reset" reset 3270/SNA or 3270/BSC driver
- 02h "pi2bsc" (3270/BSC only)
- 03h "pi2get" get information stored in 3270 resident driver
- 04h "pi2put" store information in 3270 resident driver
- 05h "pi2gcur" get current screen position
- 07h "pi2sdat" send data keystroke
- 08h "pi2scom" send command keystroke
- 0Ah "pi2field" get field info for arbitrary screen positions
- 0Fh "pi2stat" get logical unit/device status
- 12h "pi2nlus" determine logical unit/device assignment
- 13h "pi2gate" specifies comm port address to gateway service
- 14h "pi2attach" attach a logical unit/device
- 15h "pi2sdev" save logical unit/device info in resident driver
- (not supported in >3.0)
- 16h "pi2gdev" get device information (not supported in >3.0)
- 17h "pi2luinfo" get info about specific logical unit/device
- 18h "pi2gerr" get finer error detail
- 19h "pi2dhold" (3270/SNA only) holds a 3270 device
- 1Ah "pi2shut" release memory-resident module
- 1Ch "pi2sprof" save profile info in res driver (not supp in >3.0)
- 1Dh "pi2gprof" get prevsly stored profile info (not supp in >3.0)
- (Table 03347)
- Values for VINES 3270 status:
- 0000h successful
- 000Bh invalid parameter or data does not fit data area
- 000Ch another code path currently active in resident driver
- 000Dh operation currently not allowed
- 0032h encountered connection disconnect error
- 0033h encountered "sosend" completion error
- 0034h encountered "sosend" communication error
- 0035h attach request refused. extended error info via "pi2gerr":
- 01h resource unavailable
- 02h invalid type
- 03h version mismatch
- 04h invalid logical unit number
- 05h error during ARL processing
- 06h no access for user
- 0071h encountered "sosock" error
- 0072h encountered unrecognizable error
- 0073h encountered "sowait" error (extended info via "pi2gerr")
- 0074h encountered invalid type-of-request on "sowait"
- 0075h encountered "sorec" error (extended info via "pi2gerr")
- 0076h encountered "sorec" completion error (ext info via "pi2gerr")
- 0077h encountered connection request
- 0078h encountered unrecognizable data
- 0079h encountered unknown connection ID (ext info via "pi2gerr")
- SeeAlso: #03325
- Format of argument block for BH=03h,04h:
- Offset Size Description (Table 03348)
- 00h WORD size of data area (max 256)
- 02h N BYTEs data area
- SeeAlso: #03349,#03350,#03351
- Format of argument block for BH=05h:
- Offset Size Description (Table 03349)
- 00h WORD logical unit/device number
- 02h WORD pointer to WORD buffer for cursor index
- 04h WORD pointer to BYTE buffer for current field attribute
- SeeAlso: #03348,#03350,#03351
- Format of argument block for BH=07h:
- Offset Size Description (Table 03350)
- 00h WORD logical unit/device number
- 02h WORD ASCII data byte
- 04h WORD pointer to WORD count of characters which will need updating
- SeeAlso: #03348,#03349,#03351
- Format of argument block for BH=08h:
- Offset Size Description (Table 03351)
- 00h WORD logical unit/device number
- 02h WORD 3270 keystroke (see #03352)
- SeeAlso: #03348,#03349,#03350,#03353
- (Table 03352)
- Values for 3270 keystroke:
- 0000h Enter
- 0001h Clear
- 0002h PA1
- 0003h PA2
- 0004h PA3
- 0005h PF1
- ...
- 001Ch PF24
- 001Dh CSELECT (cursor select)
- 001Eh Insert
- 001Fh Delete
- 0020h EOField
- 0021h EINPUT (erase input)
- 0022h Reset
- 0023h Attention
- 0024h SysReq
- 0025h Duplicate
- 0026h Fieldmark
- 0027h Home
- 0028h NextLine
- 0029h Tab
- 002Ah BackTab
- 002Bh cursor up
- 002Ch cursor down
- 002Dh cursor right
- 002Eh cursor left
- 002Fh double cursor right
- 0030h double cursor left
- 0031h PRINT
- 0032h CANCEL
- 0033h Backspace
- Format of argument block for BH=0Ah:
- Offset Size Description (Table 03353)
- 00h WORD logical unit/device number
- 02h WORD screen index
- 04h WORD pointer to WORD buffer for field length
- 06h WORD pointer to WORD buffer for offset in screen of field start
- SeeAlso: #03351,#03354
- Format of argument block for BH=0Fh:
- Offset Size Description (Table 03354)
- 00h WORD logical unit/device number
- 02h WORD clear mask (clear these bits of status after returning status)
- 04h WORD pointer to WORD buffer for device status (see #03355)
- SeeAlso: #03353,#03356
- Bitfields for Banyan 3270 device status:
- Bit(s) Description (Table 03355)
- 10 status modified
- 9 buffer modified
- 8 set cursor
- 5 sound alarm
- 1-0 size of print line for printer logical units
- 00 unformatted line
- 01 40-character line
- 10 64-character line
- 11 80-character line
- Format of argument block for BH=12h:
- Offset Size Description (Table 03356)
- 00h WORD pointer to WORD buffer for number of logical units or devices
- 02h WORD pointer to WORD buffer for version number
- 04h WORD pointer to 64-byte buffer for logical unit/device list
- SeeAlso: #03354,#03357
- Format of argument block for BH=13h:
- Offset Size Description (Table 03357)
- 00h 16 BYTEs communications port address (see #03328)
- SeeAlso: #03356,#03358
- Format of argument block for BH=14h:
- Offset Size Description (Table 03358)
- 00h WORD logical unit/device number
- 0000h attach any free device of the specified type
- 02h WORD logical unit/device type
- (3270/SNA) 01h, 02h, or 03h
- (3270/BSC) 02h display
- (3270/BSC) 03h printer
- 04h WORD pointer to WORD buffer for attached logical unit/device number
- SeeAlso: #03357,#03359
- Format of argument block for BH=16h:
- Offset Size Description (Table 03359)
- 00h WORD pointer to 18-byte buffer for device block (see #03364)
- first WORD must be set to desired logical unit/device number
- SeeAlso: #03358,#03360
- Format of argument block for BH=17h:
- Offset Size Description (Table 03360)
- 00h WORD logical unit/device number
- 02h WORD pointer to information block in caller's DS (see #03365)
- SeeAlso: #03359,#03361
- Format of argument block for BH=18h:
- Offset Size Description (Table 03361)
- 00h WORD pointer to WORD buffer for major error code
- 02h WORD pointer to WORD buffer for minor error code
- SeeAlso: #03360,#03362
- Format of argument block for BH=19h:
- Offset Size Description (Table 03362)
- 00h WORD logical unit/device number
- SeeAlso: #03361,#03363
- Format of argument block for BH=1Ch,1Dh:
- Offset Size Description (Table 03363)
- 00h WORD pointer to profile block in caller's DS (see #03368)
- SeeAlso: #03348,#03362
- Format of device block, argument block for BH=15h:
- Offset Size Description (Table 03364)
- 00h WORD logical unit/device number
- 02h WORD logical unit/device type
- 04h WORD display model number
- 06h WORD numeric checking
- 08h WORD status line
- 0Ah BYTE unprotected normal field attribute
- 0Bh BYTE unprotected intensified field attribute
- 0Ch BYTE protected normal field attribute
- 0Dh BYTE protected intensified field attribute
- 0Eh WORD reserved
- 10h WORD printer port number
- Format of information block:
- Offset Size Description (Table 03365)
- 00h WORD device model number
- 02h DWORD screen buffer pointer
- 06h DWORD status line pointer (see #03366)
- 0Ah DWORD reserved
- Format of Banyan VINES 3270 status line:
- Offset Size Description (Table 03366)
- 00h BYTE comm line status
- 00h inactive
- 01h active
- 01h BYTE activation level
- 01h physical unit activated
- 02h logical unit also activated
- 03h session is bound
- 02h BYTE data traffic state
- 00h inactive
- 01h active
- 03h BYTE screen ownership
- 00h SLU->PLU session owns screen
- 01h SLU->SSCP session owns screen
- 04h BYTE keyboard status (see #03367)
- 05h BYTE insert mode
- 01h if in insert mode
- 06h BYTE numeric
- 01h if current screen buffer is numeric only
- 07h BYTE printer status
- 00h printer not assigned
- 01h printer is inactive
- 02h printer error
- 03h currently printing
- 04h printer is busy
- 05h printer is very busy
- 08h BYTE printer assignment
- 09h BYTE maximum size of network name
- 0Ah N BYTEs ASCIZ network name
- BYTE maximum size of message window
- M BYTEs null-terminated message window
- BYTE code set
- 00h EBCDIC
- 01h ASCII
- M BYTEs extended attributes
- 01h extended attributes are in effect (stored at screen+1920)
- each extended attribute specifies
- bits 0,1: 00=normal, 01=blink, 10=reverse, 11=underscor
- bits 2-4: 000=default,001=blue,010=red,011=pink,
- 100=green,101=turquoise,110=yellow,111=white
- BYTE extended color
- 01h other than base color is in effect
- (Table 03367)
- Values for Banyan VINES 3270 keyboard status:
- 00h UNLOCK - ready to accept data
- 01h TIME - aid was struck
- 02h SYSTEM - received response no restore
- 03h FUNCTION - unavailable keyboard function
- 04h INPUT - not currently used
- 05h ENDFIELD - field filled in insert mode
- 06h PROTECTED - attempt to enter in protected field
- 07h NUMERIC - attempt to enter in numeric field
- 08h PROGRAM - error in outbound data stream
- Format of Banyan VINES 3270 profile block:
- Offset Size Description (Table 03368)
- 00h 64 BYTEs gateway service name
- 40h 16 BYTEs gateway comm port address
- 50h WORD primary logical unit number
- 52h WORD secondary logical unit type
- 54h WORD secondary logical unit number
- 56h WORD printer assignment
- 58h 50 BYTEs keyboard definitions filename
- --------V-610002-----------------------------
- INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - END ZOOM
- AX = 0002h
- Desc: switches off zoom and returns window to its original state
- Range: unknown
- Notes: INT 61h is the default interrupt; the actual interrupt number can be
- obtained by calling INT 16/AH=FFh
- not all vendors include the Tseng TSR which supports these functions
- SeeAlso: AX=0000h"OPTIMA",INT 16/AH=FFh"OPTIMA"
- --------N-610003SF00-------------------------
- INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INIT USER BUFFER PTR INFO
- AX = 0003h subfn 00h
- DS:BX -> argument block (see #03370)
- Return: AX = status (see #03369)
- SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=08h,AX=0003h/SF=0Dh
- (Table 03369)
- Values for VINES function status:
- 0000h successful
- 000Bh invalid session ID
- 000Ch session not active
- 000Dh invalid request type
- 000Eh invalid parameters
- 000Fh out of heap space
- 0010h timeout on send
- 0011h Banyan communications error
- 0012h session not waiting for host
- 0013h session is active
- 0014h duplicate suspend session request
- 0015h no session suspended
- 0016h ring data buffer full
- 0017h printer error encountered
- 0018h Banyan communications error
- 0019h unable to make connection
- 001Ah no ring buffer specified at startup
- 001Bh service is down
- 001Ch invalid service name
- 001Dh service is closed
- 001Eh invalid connection name
- 001Fh max session limit reached for service
- 0020h access rights list for connection/dialout does not include this user
- 0021h service not responding
- 0022h missing telephone number
- SeeAlso: #03325,#03373
- Format of VINES argument block:
- Offset Size Description (Table 03370)
- 00h BYTE session ID (00h)
- 01h BYTE 00h (func "initialize user buffer pointer information area")
- 02h WORD -> user buffer ptr info area in caller's current DS (see #03371)
- Format of user buffer ptr info area:
- Offset Size Description (Table 03371)
- 00h WORD flags
- 0000h don't read interface's data buffer
- 0001h read data buffer
- 02h DWORD pointer to ring buffer
- 06h WORD length of ring buffer
- 08h WORD ring buffer offset to last byte read by caller
- 0Ah DWORD pointer to WORD containing offset of last byte
- in ring buffer filled
- 0Eh DWORD pointer to screen buffer
- 12h DWORD pointer to field containing cursor position
- 16h DWORD pointer to terminal status area (see #03372)
- Format of VINES terminal status area:
- Offset Size Description (Table 03372)
- 00h BYTE status of session: 4Eh=oNline, 46h=oFfline, 57h=Waiting
- 01h BYTE terminal type (00h=VT100, 01h=TTY, 02h=VT52, 03h=IBM3101)
- 02h BYTE current keypad mode (VT100,VT52 only)
- 4Eh ("N") numeric mode
- 41h ("A") application mode
- 03h 4 BYTEs current state of LEDs (VT100 only)
- 00h off
- 01h on
- 07h WORD line error count
- 09h WORD primary error code (see #03373)
- 0Bh WORD secondary error code
- (Table 03373)
- Values for VINES primary error code:
- 0000h no error
- 0001h unable to make connection
- 0002h communications error, restart session
- 0003h async terminal emulation service unavailable
- 0004h lost carrier
- 0005h all matching lines busy
- 0006h no lines defined for connection name
- 0007h no dial lines available on server
- 0008h no matching dial lines available
- 0009h out of heap space
- 000Ah service error encountered
- 000Bh timed out waiting to connect
- 000Ch communications error
- 000Dh communications error
- 000Eh host wants file transferred to/from PC
- 000Fh host software changed session parameter
- 0010h host software changed tap settings
- 0011h host software changed LED indicator
- 0012h host software changed display background (secondary error code 00h for
- white on black, 01h for black on white)
- 0013h host software changed display option (secondary error code 00h for off,
- 01h for on)
- 0014h communications error
- 0015h communications error
- 0016h unable to make connection
- 0017h unable to make connection
- SeeAlso: #03369
- --------N-610003SF01-------------------------
- INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SEND TO HOST
- AX = 0003h subfn 01h
- DS:BX -> argument block (see #03374)
- Return: AX = status (see #03369)
- SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=02h,AX=0003h/SF=14h
- Format of VINES argument block for Function 0003h subfunction 01h:
- Offset Size Description (Table 03374)
- 00h BYTE session ID (00h)
- 01h BYTE 01h (function "send to host")
- 02h BYTE type
- 00h ASCII byte
- 01h ASCII string
- 02h terminal function code
- 03h up arrow
- 04h down arrow
- 05h left arrow
- 06h right arrow
- 07h break
- 03h N BYTEs type-specific info (see #03375)
- Format of type-specific info:
- Offset Size Description (Table 03375)
- ---ASCII byte---
- 03h BYTE byte to send to host
- ---ASCII string---
- 03h WORD length of string
- 05h WORD pointer to string
- ---terminal function code (VT52/VT100)---
- 03h BYTE function code
- 00h keypad 0
- 01h keypad 1
- ...
- 09h keypad 9
- 0Ah keypad -
- 0Bh keypad ,
- 0Ch keypad .
- 0Dh keypad ENTER
- 0Eh PF1
- 0Fh PF2
- 10h PF3
- 11h PF4
- ---terminal function code (IBM3101)---
- 03h BYTE function code
- 00h PF1
- ...
- 07h PF8
- 08h Home
- SeeAlso: #03374
- --------N-610003SF02-------------------------
- INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - "CONTROL MONITOR"
- AX = 0003h subfn 02h
- DS:BX -> argument block (see #03376)
- Return: AX = status (see #03369)
- SeeAlso: AX=0003h/SF=03h,AX=0003h/SF=05h
- Format of VINES argument block for Function 0003h subfunction 02h:
- Offset Size Description (Table 03376)
- 00h BYTE session ID (00h)
- 01h BYTE 02h (function "control monitor")
- 02h BYTE display flag
- 00h don't display data received from host
- 01h display data
- --------N-610003SF03-------------------------
- INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - "FLOW CONTROL DATA"
- AX = 0003h subfn 03h
- DS:BX -> argument block (see #03377)
- Return: AX = status (see #03369)
- Desc: this function permits the caller to freeze/unfreeze the display and
- the ring buffer
- SeeAlso: AX=0003h/SF=02h,AX=0003h/SF=06h
- Format of VINES argument block for Function 0003h subfunction 03h:
- Offset Size Description (Table 03377)
- 00h BYTE session ID (00h)
- 01h BYTE 03h (function "flow control data")
- 02h BYTE flow control flag
- 00h allow characters to be put into display or ring buffer
- 01h don't place any more characters into display or ring buffer
- --------N-610003SF04-------------------------
- INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - END ACTIVE SESSION
- AX = 0003h subfn 04h
- DS:BX -> argument block (see #03378)
- Return: AX = status (see #03369)
- SeeAlso: AX=0003h/SF=0Ah,AX=0003h/SF=0Dh,AX=0003h/SF=0Fh
- Format of VINES argument block for ending active session:
- Offset Size Description (Table 03378)
- 00h BYTE session ID (00h)
- 01h BYTE 04h (function "end active session")
- --------N-610003SF05-------------------------
- INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET SESSION PARAMETER
- AX = 0003h subfn 05h
- DS:BX -> argument block (see #03379)
- Return: AX = status (see #03369)
- SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=06h,AX=0003h/SF=08h
- Format of VINES argument block for setting session parameters:
- Offset Size Description (Table 03379)
- 00h BYTE session ID (00h)
- 01h BYTE 05h (function "set session parameter")
- 02h BYTE parameter number (see #03380)
- 03h BYTE new parameter value
- (Table 03380)
- Values for parameter number:
- 00h line speed (00h=any, 01h=50, 02h=110, 03h=134.5, 04h=150,
- 05h=300, 06h=600, 07h=1200, 08h=2400, 09h=4800, 0Ah=9600)
- 01h parity (00h=none, 01h=odd, 02h=even)
- 02h duplex (00h=full, 01h=half)
- 03h character size (00h=7 bits, 01h=8 bits)
- 04h stop bits (00h=1, 01h=2)
- 05h XON/XOFF flow control (00h=no, 01h=yes)
- 07h intercharacter delay in tenths of a second
- 08h interline delay in tenths of a second
- 09h auto linefeed (00h=no, 01h=yes)
- 0Ah filter control characters (00h=no, 01h=yes)
- 0Bh terminal type (00h=VT100,01h=glassTTY,02h=VT52,03h=IBM3101)
- 0Ch auto wrap (00h=no, 01h=yes)
- 0Dh cursor shape (00h=underscore, 01h=block)
- 0Eh character set (00h=UK, 01h=US ASCII)
- 0Fh printer port (00h=LPT1, 01h=LPT2, 02h=LPT3)
- SeeAlso: #03379
- --------N-610003SF06-------------------------
- INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET SESSION PARAMETER
- AX = 0003h subfn 06h
- DS:BX -> argument block (see #03381)
- Return: AX = status (see #03369)
- SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=05h,AX=0003h/SF=07h
- Format of VINES argument block for getting session parameters:
- Offset Size Description (Table 03381)
- 00h BYTE session ID (00h)
- 01h BYTE 06h (function "get session parameter")
- 02h BYTE parameter number (see #03380)
- 03h BYTE (ret) current parameter value
- --------N-610003SF07-------------------------
- INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET TAB SETTINGS
- AX = 0003h subfn 07h
- DS:BX -> argument block (see #03382)
- Return: AX = status (see #03369)
- SeeAlso: AX=0003h/SF=05h,AX=0003h/SF=08h
- Format of VINES argument block for setting tab settings:
- Offset Size Description (Table 03382)
- 00h BYTE session ID (00h)
- 01h BYTE 07h (function "set tab settings")
- 02h WORD pointer to 80-byte buffer in caller's current DS
- each byte = 00h if no tab, 01h if tab at that position
- --------N-610003SF08-------------------------
- INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET TAB SETTINGS
- AX = 0003h subfn 08h
- DS:BX -> argument block (see #03383)
- Return: AX = status (see #03369)
- SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=07h
- Format of VINES argument block for getting tab settings:
- Offset Size Description (Table 03383)
- 00h BYTE session ID (00h)
- 01h BYTE 08h (function "get tab settings")
- 02h WORD pointer to 80-byte buffer in caller's current DS
- each byte set to 00h if no tab, 01h if tab at that position
- --------N-610003SF09-------------------------
- INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - REFRESH EMULATION SCREEN
- AX = 0003h subfn 09h
- DS:BX -> argument block (see #03384)
- Return: AX = status (see #03369)
- SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=0Bh
- Format of VINES argument block for Function 0003h subfunction 09h:
- Offset Size Description (Table 03384)
- 00h BYTE session ID (00h)
- 01h BYTE 09h (function "refresh emulation screen")
- --------N-610003SF0A-------------------------
- INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SUSPEND SESSION TEMPORARILY
- AX = 0003h subfn 0Ah
- DS:BX -> argument block (see #03385)
- Return: AX = status (see #03369)
- SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=09h,AX=0003h/SF=0Bh,AX=0003h/SF=0Dh
- Format of VINES argument block:
- Offset Size Description (Table 03385)
- 00h BYTE session ID (00h)
- 01h BYTE 0Ah (function "suspend session temporarily")
- 02h WORD size of session information to be saved
- 04h WORD pointer to buffer in caller's DS
- --------N-610003SF0B-------------------------
- INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - RESUME SUSPENDED SESSION
- AX = 0003h subfn 0Bh
- DS:BX -> argument block (see #03386)
- Return: AX = status (see #03369)
- SeeAlso: AX=0003h/SF=09h,AX=0003h/SF=0Ah
- Format of VINES argument block:
- Offset Size Description (Table 03386)
- 00h BYTE session ID (00h)
- 01h BYTE 0Bh (function "restore previously suspended session")
- 02h WORD size of buffer into which session info is restored
- 04h WORD pointer to buffer in caller's DS
- --------N-610003SF0C-------------------------
- INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET SCROLL LOCK CHECKING
- AX = 0003h subfn 0Ch
- DS:BX -> argument block (see #03387)
- Return: AX = status (see #03369)
- SeeAlso: AX=0003h/SF=00h
- Format of VINES argument block:
- Offset Size Description (Table 03387)
- 00h BYTE session ID (00h)
- 01h BYTE 0Ch (function "set state of scroll lock checking")
- 02h BYTE check_scroll_lock flag
- 00h off
- 01h on (display of host data stopped while ScrollLock on)
- --------N-610003SF0D-------------------------
- INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - EXIT EMULATION
- AX = 0003h subfn 0Dh
- DS:BX -> argument block (see #03388)
- Return: AX = status (see #03369)
- SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=0Ah
- Format of VINES argument block:
- Offset Size Description (Table 03388)
- 00h BYTE session ID (00h)
- 01h BYTE 0Dh (function "exit emulation")
- --------N-610003SF0E-------------------------
- INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INTERRUPT ON CHAR FROM HOST
- AX = 0003h subfn 0Eh
- DS:BX -> argument block (see #03389)
- Return: AX = status (see #03369)
- SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=14h
- Format of VINES argument block:
- Offset Size Description (Table 03389)
- 00h BYTE session ID (00h)
- 01h BYTE 0Eh (function "interrupt on character from host")
- 02h DWORD pointer to routine to be called (0000h:0000h = don't call)
- 06h DWORD stack pointer to use when call is made
- --------N-610003SF0F-------------------------
- INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START A SESSION
- AX = 0003h subfn 0Fh
- DS:BX -> argument block (see #03390)
- Return: AX = status (see #03369)
- SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=0Bh
- Format of VINES argument block:
- Offset Size Description (Table 03390)
- 00h BYTE session ID (00h)
- 01h BYTE 0Fh (function "start a session")
- 02h WORD pointer to information area in caller's current DS (see #03391)
- Format of VINES information area:
- Offset Size Description (Table 03391)
- 00h WORD length of service name
- 02h WORD pointer to service name in caller's DS
- 04h BYTE type of connection (00h=connection name, 01h=dialout)
- 05h WORD length of connection name/telephone number
- 07h WORD pointer to connection name/telephone number
- --------N-610003SF10-------------------------
- INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START/STOP PRINTING
- AX = 0003h subfn 10h
- DS:BX -> argument block (see #03392)
- Return: AX = status (see #03369)
- SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=13h
- Format of VINES argument block:
- Offset Size Description (Table 03392)
- 00h BYTE session ID (00h)
- 01h BYTE 10h (function "start/stop printing of data received from host")
- 02h WORD print capture flag (00h=off, 01h=on)
- --------N-610003SF11-------------------------
- INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET FILE TRANSFER PARAMETERS
- AX = 0003h subfn 11h
- DS:BX -> argument block (see #03393)
- Return: AX = status (see #03369)
- SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=12h
- Format of VINES argument block:
- Offset Size Description (Table 03393)
- 00h BYTE session ID (00h)
- 01h BYTE 11h (function "get file transfer parameters")
- 02h WORD pointer to info area in caller's current DS (see #03394)
- Format of VINES info area:
- Offset Size Description (Table 03394)
- 00h BYTE protocol flag (00h none, 01h Kermit)
- 01h BYTE direction flag (00h send, 01h receive)
- 02h BYTE length of null-terminated PC filename
- 03h DWORD pointer to null-terminated PC filename
- 07h BYTE length of null-terminated host filename
- 08h DWORD pointer to null-terminated host filename
- --------N-610003SF12-------------------------
- INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET CONNECTION INFORMATION
- AX = 0003h subfn 12h
- DS:BX -> argument block (see #03395)
- Return: AX = status (see #03369)
- SeeAlso: AX=0003h/SF=11h,AX=0003h/SF=15h
- Format of VINES argument block:
- Offset Size Description (Table 03395)
- 00h BYTE session ID (00h)
- 01h BYTE 12h (function "get connection information")
- 02h WORD offset of buffer for connection information (see #03396)
- Format of VINES connection information:
- Offset Size Description (Table 03396)
- 00h WORD length of service name (returned)
- 02h WORD pointer to 64-byte buffer for service name
- 04h BYTE type of connection
- 00h connection name
- 01h dialout
- 05h WORD length of connection name/telephone number
- 07h WORD pointer to 64-byte buffer for name/telno
- 09h BYTE server line number being used (returned)
- --------N-610003SF13-------------------------
- INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START/STOP TRACING TRAFFIC
- AX = 0003h subfn 13h
- DS:BX -> argument block (see #03397)
- Return: AX = status (see #03369)
- SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=0Eh
- Format of VINES argument block:
- Offset Size Description (Table 03397)
- 00h BYTE session ID (00h)
- 01h BYTE 13h (function "start/stop tracing data traffic in session")
- 02h BYTE trace flag (00h=off, 01h=on)
- --------N-610003SF14-------------------------
- INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INTERRUPT ON HOST MESSAGE
- AX = 0003h subfn 14h
- DS:BX -> argument block (see #03398)
- Return: AX = status (see #03369)
- SeeAlso: AX=0003h/SF=0Eh
- Format of VINES argument block:
- Offset Size Description (Table 03398)
- 00h BYTE session ID (00h)
- 01h BYTE 14h (function "interrupt on message from host")
- 02h DWORD pointer to routine to be called (0000h:0000h = don't call)
- 06h DWORD stack pointer to use when call is made
- --------N-610003SF15-------------------------
- INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - RESET ERROR
- AX = 0003h subfn 15h
- DS:BX -> argument block (see #03399)
- Return: AX = status (see #03369)
- SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=12h
- Format of VINES argument block:
- Offset Size Description (Table 03399)
- 00h BYTE session ID (00h)
- 01h BYTE 15h (function "reset error")
- --------V-610003-----------------------------
- INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - REPORT ZOOM FACTOR
- AX = 0003h
- Return: AX = zoom factor
- Desc: returns the current zoom factor
- Range: unknown
- Notes: INT 61h is the default interrupt; the actual interrupt number can be
- obtained by calling INT 16/AH=FFh
- not all vendors include the Tseng TSR which supports these functions
- SeeAlso: AX=0000h"OPTIMA",AX=0005h"OPTIMA",INT 16/AH=FFh"OPTIMA"
- --------N-610004-----------------------------
- INT 61 - Banyan VINES - FILE SERVICE CONTROL
- AX = 0004h
- DS:DX -> request block (see #03401)
- Return: AX = status (see #03400)
- Notes: This service is handled by the redirector
- The request dispatch table contains dummy entries for requests 0Ah,
- 0Dh, 15h, 19h, and 1Ah, which always return error 0033h (invalid
- request ID)
- (Table 03400)
- Values for Banyan VINES file service control status code:
- 0000h successful
- 0002h file not found
- 0003h path not found
- 000Fh invalid drive
- 0015h drive not ready
- 0033h invalid request ID
- 0034h drive not connected
- 0037h drive number out of range
- 0038h drive number not available
- 003Ah invalid operation
- 0055h drive already connected
- 0057h invalid number of entries
- Format of Banyan VINES file service request block:
- Offset Size Description (Table 03401)
- 00h WORD request ID (1..28)
- 02h n BYTES additional parameters and result buffer
- --------N-610004SF0001-----------------------
- INT 61 - Banyan VINES - SET DRIVE CONNECTION
- AX = 0004h subfn 0001h
- DS:DX -> request block (see #03402)
- Return: AX = status (0000h,0037h,0038h,0055h) (see #03400)
- Desc: Maps the specified file service to a DOS drive letter
- Note: If an empty service name is specified, an existing connection will
- be removed
- SeeAlso: AX=0004h/SF=0002h
- Format of VINES Function 0004h/Subfunction 0001h request block:
- Offset Size Description (Table 03402)
- 00h WORD 0001h
- 02h BYTE drive number (0=default, 1=A, ...)
- 03h 16 BYTEs reserved
- 13h 64 BYTEs null-terminated file service name
- 53h 5 BYTEs reserved
- --------N-610004SF0002-----------------------
- INT 61 - Banyan VINES - GET DRIVE CONNECTION
- AX = 0004h subfn 0002h
- DS:DX -> request block (see #03403)
- Return: AX = status (0000h,0034h,0037h) (see #03400)
- Desc: Returns the StreetTalk name of the associated file service
- SeeAlso: AX=0004h/SF=0001h,AX=0004h/SF=0003h
- Format of VINES Function 0004h/Subfunction 0002h request block:
- Offset Size Description (Table 03403)
- 00h WORD 0002h
- 02h BYTE drive number (0=default, 1=A, ...)
- 03h 16 BYTEs reserved
- 13h 64 BYTEs buffer for null-terminated file service name
- 53h 5 BYTEs reserved
- --------N-610004SF0003-----------------------
- INT 61 - Banyan VINES - GET NETWORK DRIVE MAP
- AX = 0004h subfn 0003h
- DS:DX -> request block (see #03404)
- Return: AX = status
- 0000h drive map returned in request block
- Desc: Returns a bit map indicating which drive numbers are connected to a
- file service
- Note: Only bits 0-25 are significant
- SeeAlso: AX=0004h/SF=0002h
- Format of VINES Function 0004h/Subfunction 0003h request block:
- Offset Size Description (Table 03404)
- 00h WORD 0003h
- 02h DWORD buffer for drive map (bit0=A, bit1=B, ...)
- --------N-610004SF0004-----------------------
- INT 61 - Banyan VINES - SET USER NAME
- AX = 0004h subfn 0004h
- DS:DX -> request block (see #03405)
- Return: AX = status (0000h) (see #03400)
- Notes: Other side effects, if any, not known
- SeeAlso: AX=0004h/SF=0005h,#03431 [ID 0004h],AX=0007h/BX=0005h
- Format of VINES Function 0004h/Subfunction 0004h request block:
- Offset Size Description (Table 03405)
- 00h WORD 0004h
- 02h 64 BYTE null-terminated user name
- --------N-610004SF0005-----------------------
- INT 61 - Banyan VINES - GET USER NAME
- AX = 0004h subfn 0005h
- DS:DX -> request block (see #03406)
- Return: AX = status (see also #03400)
- 0000h user name returned in request block
- Desc: Returns the StreetTalk name of the currently logged in user
- SeeAlso: AX=0004h/SF=0004h,#03431 [ID 0004h],AX=0007h/BX=0005h
- SeeAlso: AX=0004h/SF=0004h
- Format of VINES Function 0004h/Subfunction 0005h request block:
- Offset Size Description (Table 03406)
- 00h WORD 0005h (subfunction "Get User Name")
- 02h 64 BYTE buffer for null-terminated user name
- --------N-610004SF0006-----------------------
- INT 61 - Banyan VINES - TEST DRIVE CONNECTION
- AX = 0004h subfn 0006h
- DS:DX -> request block (see #03407)
- Return: AX = status (see also #03400)
- 0000h connection flag returned in request block
- Desc: Returns a flag indicating if the drive is connected to a file service
- SeeAlso: AX=0004h/SF=0007h
- Format of VINES Function 0004h/Subfunction 0006h request block:
- Offset Size Description (Table 03407)
- 00h WORD 0006h (subfunction "Test Drive Connection")
- 02h BYTE buffer for connection flag (1 = not connected, 2 = connected)
- --------N-610004SF0007-----------------------
- INT 61 - Banyan VINES - GET CONNECTION DATA STRUCTURES
- AX = 0004h subfn 0007h
- DS:DX -> request block (see #03408)
- Return: AX = status (see also #03400)
- 0000h pointer returned in request block
- 0033h invalid request ID
- Desc: Returns pointers to various internal data structures
- Format of VINES Function 0004h/Subfunction 0007h request block:
- Offset Size Description (Table 03408)
- 00h WORD 0007h
- 02h BYTE request ID (0..7) (see #03409)
- 03h WORD buffer for pointer segment
- 05h WORD buffer for pointer offset
- SeeAlso: #03410,#03411
- (Table 03409)
- Values for VINES pointer ID:
- 00h job file table ???
- 01h drive handle table
- 02h drive connection table
- 03h IPC port of drive Z:
- 04h end of drive connection table
- 05h ???
- 06h ???
- 07h redirector data segment (offset=0)
- SeeAlso: #03408
- Format of VINES drive handle table:
- Offset Size Description (Table 03410)
- 00h BYTE handle to default drive (0 = not connected)
- 01h BYTE handle to drive A: (0 = not connected)
- ...
- 1Ah BYTE handle to drive Z: (0 = not connected)
- SeeAlso: #03411
- Format of VINES drive connection table:
- Offset Size Description (Table 03411)
- 00h WORD file service type (?) (0001h if drive Z:, 0000h else)
- 02h 16 BYTEs IPC port (contains the server serial number)
- 12h 46 BYTEs ???
- 40h 64 BYTEs null-terminated StreetTalk name of associated file service
- 80h 64 BYTEs null-terminated root directory (/ROOT: parameter of SETDRIVE)
- SeeAlso: #03410
- --------N-610004SF0008-----------------------
- INT 61 - Banyan VINES - GET SERVER SERIAL NUMBER
- AX = 0004h subfn 0008h
- DS:DX -> request block (see #03412)
- Return: AX = status (0000h,000Fh,0015h) (see #03400)
- Notes: The server ID is extracted from the IPC port address of the associated
- file service stored in the drive connection table
- The server serial number and the server subnet number are returned in
- big-endian (Motorola) format (i.e. MSB first)
- SeeAlso: AX=0004h/SF=0005h
- Format of VINES request block for getting server serial number:
- Offset Size Description (Table 03412)
- 00h WORD 0008h
- 02h WORD drive number (0=default, 1=A, ...)
- 04h DWORD buffer for server serial number
- 08h WORD buffer for server subnet number (always 0001h)
- --------N-610004SF0009-----------------------
- INT 61 - Banyan VINES - SET ??? PARAMETER
- AX = 0004h subfn 0009h
- DS:DX -> request block (see #03413)
- Return: AX = status (0000h) (see #03400)
- Notes: The specified WORD parameter is copied to offset 1702h of the
- redirector code segment (revision 5.53)
- SeeAlso: AX=0004h/SF=000Bh
- Format of VINES Function 0004h/Subfunction 0009h request block:
- Offset Size Description (Table 03413)
- 00h WORD 0009h
- 02h WORD parameter
- --------N-610004SF000B-----------------------
- INT 61 - Banyan VINES - GET ??? DRIVE PARAMETER
- AX = 0004h subfn 000Bh
- DS:DX -> request block (see #03414)
- Return: AX = status (0000h,0034h,0037h) (see #03400)
- Notes: This request returns a WORD value from the drive connection table
- read from offset 0012h of the specified drive's entry (usually 0037h)
- SeeAlso: AX=0004h/SF=0009h
- Format of VINES Function 0004h/Subfunction 000Bh request block:
- Offset Size Description (Table 03414)
- 00h WORD 000Bh
- 02h BYTE drive number (0=default, 1=A, ...)
- 03h WORD buffer for parameter
- --------N-610004SF000C-----------------------
- INT 61 - Banyan VINES - LOGOUT FROM VINES
- AX = 0004h subfn 000Ch
- DS:DX -> request block (see #03415)
- Return: AX = status 0000h (see #03400)
- Desc: Terminates a running VINES session and clears all session specific
- buffers
- SeeAlso: AX=0004h/SF=0008h
- Format of VINES Function 0004h/Subfunction 000Ch request block:
- Offset Size Description (Table 03415)
- 00h WORD 000Ch
- --------N-610004SF000E-----------------------
- INT 61 - Banyan VINES - GET ACCESS RIGHTS LIST (ARL)
- AX = 0004h subfn 000Eh
- DS:DX -> request block (see #03416)
- Return: AX = status (see also #03400)
- 0000h request has been processed
- Desc: Returns the owner, group, and extended access rights for the specified
- file or directory
- Note: A status of 0000h does not necessarily indicate a successful request;
- check the status word at offset 000Eh of the request block too
- SeeAlso: AX=0004h/SF=000Fh
- Format of VINES Function 0004h/Subfunction 000Eh request block:
- Offset Size Description (Table 03416)
- 00h WORD 000Eh (subfunction "Get Access Rights List")
- 02h BYTE drive number (0=default, 1=A, ...)
- 03h BYTE reserved
- 04h DWORD pointer to path specification (drive letter ignored)
- 08h DWORD pointer to ARL control block (see #03417)
- 0Ch WORD buffer for number of ARL entries (1..5)
- 0Eh WORD buffer for status (see #03418)
- Format of ARL control block:
- Offset Size Description (Table 03417)
- 00h 64 BYTEs 1st StreetTalk name (user, list, or service)
- 40h WORD 1st ARL
- 42h 64 BYTEs 2nd StreetTalk name (user, list, or service)
- 82h WORD 2nd ARL
- 84h 64 BYTEs 3rd StreetTalk name (user, list, or service)
- C4h WORD 3rd ARL
- C6h 64 BYTEs 4th StreetTalk name (user, list, or service)
- 106h WORD 4th ARL
- 108h 64 BYTEs 5th StreetTalk name (user, list, or service)
- 148h WORD 5th ARL
- (Table 03418)
- Values for VINES Get/Set Access Rights List status:
- 0000h successful
- 0002h file not found
- 0003h path not found
- 003Ah invalid operation
- 0057h invalid number of entries
- --------N-610004SF000F-----------------------
- INT 61 - Banyan VINES - SET ACCESS RIGHTS LIST (ARL)
- AX = 0004h subfn 000Fh
- DS:DX -> request block (see #03419)
- Return: AX = status (see also #03400)
- 0000h request has been processed
- Desc: Sets the owner, group, and extended access rights for the specified
- file or directory
- Note: A status of 0000h does not necessarily indicate a successful request;
- check the status word at offset 000Eh of the request block too
- If the number of ARL entries is less than 1 or greater than 5, error
- 0057h (invalid number of entries) is returned
- SeeAlso: AX=0004h/SF=000Eh
- Format of VINES Function 0004h/Subfunction 000Fh request block:
- Offset Size Description (Table 03419)
- 00h WORD 000Fh
- 02h BYTE drive number (0=default, 1=A, ...)
- 03h BYTE reserved
- 04h DWORD pointer to path specification (drive letter ignored)
- 08h DWORD pointer to ARL control block (see #03417)
- 0Ch WORD number of ARL entries (1..5)
- 0Eh WORD buffer for status (see #03418)
- --------N-610004SF0010-----------------------
- INT 61 - Banyan VINES - FILE SERVICE CONTROL - ???
- AX = 0004h subfn 0010h
- DS:DX -> request block (see #03420)
- Return: AX = status (see also #03400)
- 0000h request has been processed
- SeeAlso: AX=0004h/SF=000Fh
- Format of VINES Function 0004h/Subfunction 0010h request block:
- Offset Size Description (Table 03420)
- 00h WORD 0010h
- 02h BYTE drive number (0=default, 1=A, ...)
- 03h BYTE reserved
- 04h 64 BYTEs ???
- 44h 16 BYTEs IPC port (see #03328 at AX=0001h"Sosock")
- --------N-610004SF0013-----------------------
- INT 61 - Banyan VINES - GET VALUE OF GLOBAL VARIABLE
- AX = 0004h subfn 0013h
- DS:DX -> request block (see #03421)
- Return: AX = status (see also #03400)
- 0000h successful
- 0033h invalid request ID (returned if variable index out of range)
- Desc: Returns the value of the specified global variable
- Note: The data will be truncated if the specified buffer is not large enough.
- Check the length word in the request block to find out how many
- bytes should have been copied.
- SeeAlso: AX=0004h/SF=0014h,AX=0006h
- Format of request block:
- Offset Size Description (Table 03421)
- 00h WORD 0013h
- 02h WORD variable index (0000h-001Fh) (see #03422)
- 04h WORD buffer length (on exit set to # of bytes actually needed)
- 06h DWORD far pointer to result buffer
- SeeAlso: #03423
- (Table 03422)
- Values for variable indices:
- Index Length Description
- 0000h 1 ???
- 0001h 16 StreetTalk port
- 0002h 4 StreetTalk session handle
- 0003h 6 colors
- 0004h 64 StreetTalk name of currently logged in user
- 0005h 0 old clear text password (not applicable)
- 0006h 0 default group (not applicable)
- 0007h 1 number of messages in message queue
- 0008h 1 message flag
- 0009h 16 TalkPort
- 000Ah 2 TalkPort socket
- 000Bh 64 StreetTalk name of mail service
- 000Ch 2 message timeout
- 000Dh 2 next message place
- 000Eh 246 message queue (3 times 80 characters + 2 flag bytes)
- 000Fh 14 system nonce
- 0010h 2 failed login count
- 0011h 1 new mail message received
- 0012h 8 mail service capabilities
- 0013h 3 printer port diverted
- 0014h 32 international location
- 0015h 16 IPC port of drive Z:
- 0016h 1024 pointer to current directory table
- 0017h 2 maximum number of file volume mappings
- 0018h 24 routine to call back for messages (6 far pointers)
- 0019h 4 current virtual machine
- 001Ah 20 DOS redirector message bell tones
- 001Bh 2 various flags used for internal communication
- 001Ch 0 OS/2 client configuration (not applicable)
- 001Dh 8 redirector/IFS file version
- 001Eh 0 reserved (not applicable)
- 001Fh 4 address of VVINESD.386 dispatch
- --------N-610004SF0014-----------------------
- INT 61 - Banyan VINES - SET VALUE OF GLOBAL VARIABLE
- AX = 0004h subfn 0014h
- DS:DX -> request block (see #03423)
- Return: AX = status
- 0000h successful
- 0033h invalid request ID (returned if variable index out of range)
- Desc: Assigns a new value to the specified global variable
- Note: If the specified number of bytes to copy exceeds the size of the
- destination variable, nothing will be copied.
- SeeAlso: AX=0004h/SF=0013h,AX=0006h
- Format of request block:
- Offset Size Description (Table 03423)
- 00h WORD 0014h
- 02h WORD variable index (0000h-001Fh) (see #03422)
- 04h WORD number of bytes to copy
- 06h DWORD far pointer to new value
- SeeAlso: #03421
- --------N-610004SF0016-----------------------
- INT 61 - Banyan VINES - GET NUMBER OF OPEN FILES ON REMOTE DRIVE
- AX = 0004h subfn 0016h
- DS:DX -> request block (see #03424)
- Return: AX = status
- 0000h open file count returned in request block
- Desc: Counts the number of open files on the specified remote drive.
- Note: No error is returned if the specified drive number is invalid or points
- to a local drive. Use AX=0004h/SF=0006h to test if a given drive
- number is assigned to a remote drive.
- SeeAlso: AX=0004h/SF=0006h
- Format of request block:
- Offset Size Description (Table 03424)
- 00h WORD 0016h
- 02h BYTE drive number (0=default, 1=A:, ...)
- 03h BYTE reserved
- 04h WORD buffer for open file count
- SeeAlso: #03426
- --------N-610004SF0018-----------------------
- INT 61 - Banyan VINES - SET UNIDENTIFIED INTERNAL FLAG
- AX = 0004h subfn 0018h
- DS:DX -> request block (see #03425)
- Return: AX = status
- 0000h success
- Desc: Sets an unidentified BYTE variable in the redirector data segment to 1.
- Note: In the VINES 5.53 "REDIR4" redirector, this variable is located at
- DS:0B53.
- Format of request block:
- Offset Size Description (Table 03425)
- 00h WORD 0018h
- SeeAlso: #03426
- --------N-610004SF001B-----------------------
- INT 61 - Banyan VINES - UNIDENTIFIED DRIVE SPECIFIC FUNCTION
- AX = 0004h subfn 001Bh
- DS:DX -> request block (see #03426)
- Return: AX = status
- 0000h success
- 0034h drive not connected
- 0037h drive number out of range
- Desc: The purpose of this function is not known.
- Format of request block:
- Offset Size Description (Table 03426)
- 00h WORD 001Bh
- 02h BYTE drive number (0=default, 1=A:, ...)
- 03h BYTE ???
- 04h WORD ???
- 06h DWORD far pointer to data area
- 0Ah WORD ???
- 0Ch DWORD far pointer to data area
- 10h WORD buffer for result
- SeeAlso: #03424,#03426
- --------N-610004SF001C-----------------------
- INT 61 - Banyan VINES - UNIDENTIFIED FUNCTION
- AX = 0004h subfn 001Ch
- DS:DX -> request block (see #03427)
- Return: AX = status
- 0000h success
- 0057h invalid number of entries
- Desc: The purpose of this function is not known.
- Format of request block:
- Offset Size Description (Table 03427)
- 00h WORD 001Ch
- 02h WORD ???
- 04h WORD ???
- 06h WORD ???
- 08h WORD ???
- 0Ah DWORD far pointer to data area (14 bytes)
- --------V-610004-----------------------------
- INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - ENTER SPECIFY MODE
- AX = 0004h
- Range: unknown
- Notes: Specify Mode is enabled by hot key (seeAlso below), and allows
- panning and zooming via the numeric keypad.
- INT 61 is the default interrupt; the actual interrupt number can be
- obtained by calling INT 16/AH=FFh
- not all vendors include the Tseng TSR which supports these functions
- SeeAlso: AX=0000h"OPTIMA",AX=0007h"OPTIMA",INT 16/AH=FFh"OPTIMA"
- --------N-610005-----------------------------
- INT 61 - Banyan VINES - PRINT SERVICE CONTROL
- AX = 0005h
- DS:DX -> request block (see #03428)
- Return: AX = status
- 0000h successful
- 0001h network software not installed or incompatible
- Notes: This service is handled by the redirector
- The size of the request/result block depends on the selected function
- and the value at offset 04h.
- SeeAlso: INT 2F/AX=D702h
- Format of VINES request/result block for printer control:
- Offset Size Description (Table 03428)
- 00h WORD function
- 0201h "endspool" all data for a print job has been sent
- (no bytes returned)
- 0202h "deassign" the virtual printer port
- Before the printer port is deassigned all data sent
- to it is endspooled.
- (no bytes returned)
- 0205h "get_active" get currently active printer port
- (1 byte required for result)
- Returns: - the currently active printer port (1-3) (0 if
- there is none)
- 0207h ??? purpose unknown; called periodically every second
- 020Ch "get_bannertitle" gets the title which is printed on the
- banner page of a print job sent to the virtual port
- (16 bytes required for result)
- Returns: - the null-terminated banner title
- 020Eh "get_servicename" gets the name of the print service
- assigned to the virtual port
- (64 bytes required for result)
- Returns: - the null-terminated print service name assigned
- to the virtual port
- 0210h "set_bannertitle" sets the title which is printed on the
- banner page of a print job sent to the virtual port
- (16 bytes required for input)
- Input: - the null-terminated banner title (max 16 chars)
- 0212h "set_servicename" sets the name of the print service
- assigned to the virtual port
- (64 bytes required for input)
- Input: - the null-terminated print service name
- (max 64 chars)
- 0216h "get_job_paper_format" gets the paper format for
- subsequent print jobs
- (16 bytes required for result)
- Returns: - the null-terminated paper format
- 0217h "set_job_paper_format" sets the paper format for
- subsequent print jobs
- (16 bytes required for input)
- Input: - the null-terminated paper format (max 16 chars)
- 02h WORD number of active virtual port (1-3) (0 for function 0205h)
- 04h WORD Offset into the request block from which additional input
- is to be read and/or at which the result is to be copied
- (if there is any). Therefore the smallest block size for a
- function which returns a result is
- this offset + the maximum number of returned bytes - 1
- 06h WORD 0000h
- --------V-610005-----------------------------
- INT 61 - OPTIMA 1024 VGA-Sync - QUERY ZOOM WINDOW
- AX = 0005h
- BX:CX -> buffer for window parameters (see #03429)
- Range: unknown
- Notes: INT 61 is the default interrupt; the actual interrupt number can be
- obtained by calling INT 16/AH=FFh
- not all vendors include the Tseng TSR which supports these functions
- SeeAlso: AX=0000h"OPTIMA",AX=0003h"OPTIMA",AX=0006h"OPTIMA"
- SeeAlso: INT 16/AH=FFh"OPTIMA"
- Format of Optima 1024 window parameters:
- Offset Size Description (Table 03429)
- 00h WORD X start of zoom window
- 02h WORD Y start of zoom window
- 04h WORD X end of zoom window
- 06h WORD Y end of zoom window
- 08h WORD current zoom factor
- 0Ah WORD zoom offset start X
- 0Ch WORD zoom offset start Y
- --------V-610006-----------------------------
- INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - SET ZOOM WINDOW
- AX = 0006h
- BX:CX -> zoom window description (see #03430)
- Range: unknown
- Notes: width of zoom window must be a multiple of the pixel replication (zoom)
- factor
- INT 61 is the default interrupt; the actual interrupt number can be
- obtained by calling INT 16/AH=FFh
- not all vendors include the Tseng TSR which supports these functions
- SeeAlso: AX=0000h"OPTIMA",AX=0001h"OPTIMA",AX=0005h"OPTIMA",AX=0008h"OPTIMA"
- SeeAlso: INT 16/AH=FFh"OPTIMA"
- Format of Optima 1024 zoom window description:
- Offset Size Description (Table 03430)
- 00h WORD X start of zoom window
- 02h WORD Y start of zoom window
- 04h WORD X end of zoom window
- 06h WORD Y end of zoom window
- --------N-610006-----------------------------
- INT 61 - Banyan VINES - GET ADDRESS OF GLOBAL VARIABLE
- AX = 0006h
- BX = bits 14..0: request ID (see #03431)
- bit 15: result destination flag (0 for ES:BX, 1 for AX:BX)
- Return: AX = status
- 0000h successful
- 000Bh invalid request
- ES:BX -> internal variable (bit 15 of BX was not set)
- AX:BX -> internal variable (bit 15 of BX was set)
- Note: This service is handled by the redirector
- SeeAlso: AX=0004h/SF=0013h,AX=0004h/SF=0014h
- (Table 03431)
- Values for request IDs:
- Request Length Description
- 0000h 1 ???
- 0001h 16 StreetTalk port
- 0002h 4 StreetTalk session handle
- 0003h 6 colors
- 0004h 64 StreetTalk name of currently logged in user
- 0005h 0 old clear text password (always returns error code 000Bh)
- 0006h 0 default group (not applicable)
- 0007h 1 message queue count
- 0008h 1 message flag
- 0009h 16 TalkPort
- 000Ah 2 TalkPort socket
- 000Bh 64 StreetTalk name of mail service
- 000Ch 2 message timeout
- 000Dh 2 next message place
- 000Eh 246 message queue
- 000Fh 14 system nonce
- 0010h 2 failed login count
- 0011h 1 new mail message received
- 0012h 8 mail capabilities
- 0013h 3 printer port diverted
- 0014h 32 international location
- 0015h 16 IPC port of drive Z:
- 0016h 1024 pointer to current directory table
- 0017h 2 maximum number of file volume mappings
- 0018h 24 routine to call back for messages
- 0019h 4 current virtual machine
- 001Ah 20 DOS redirector message bell tones
- 001Bh 2 various flags used for internal communication
- 001Ch 0 OS/2 client configuration (always returns error code 000Bh)
- 001Dh 8 redirector/IFS file version
- 001Eh 0 reserved (always returns error code 000Bh)
- 001Fh 4 address of VVINESD.386 dispatch
- --------V-610007-----------------------------
- INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - QUERY APPLICATION KEY
- AX = 0007h
- Return: AX = current state (0000h/0001h)
- Desc: returns the current toggle state of the application (END) key in
- specify mode. E.g. in the OPTIMA AutoCAD driver, 0 means AutoCAD
- calls INT 61/AX=0001h every time the crosshair cursor moves.
- Notes: In specify mode, the END key has been reserved for applications.
- INT 61 is the default interrupt; the actual interrupt number can be
- obtained by calling INT 16/AH=FFh
- not all vendors include the Tseng TSR which supports these functions
- SeeAlso: AX=0000h"OPTIMA",AX=0001h"OPTIMA",AX=0004h"OPTIMA"
- SeeAlso: INT 16/AH=FFh"OPTIMA",INT 7A/AX=0001h"AutoCAD"
- --------N-610007BX0000-----------------------
- INT 61 - Banyan VINES - RECONNECT TO STREETTALK
- AX = 0007h
- BX = 0000h
- Return: AX = status (see #03432)
- SeeAlso: AX=0007h/BX=0002h
- (Table 03432)
- Values for VINES function status:
- 0000h successful
- 0001h requested handler not installed or incompatible
- 000Bh service busy
- 000Ch invalid request ID
- 03E9h incorrect name syntax
- 03EAh organization name too long
- 03EBh group name too long
- 03ECh item name too long
- 03EDh StreetTalk name too long
- 03F3h organization not found
- 03F4h group not found
- 03F5h StreetTalk name not found
- 03F8h not a StreetTalk name
- 0409h modify access denied
- 040Dh appropriate StreetTalk name unavailable
- 0411h all matching names have been returned
- 0412h some groups unavailable, all available matches returned
- --------N-610007BX0001-----------------------
- INT 61 - Banyan VINES - GET MM PORT FOR A SERVICE
- AX = 0007h
- BX = 0001h
- DS:DX -> StreetTalk service name (64 bytes)
- DS:DI -> 16-byte buffer for IPC port (see #03328 at AX=0001h"Sosock")
- Return: AX = status (see #03432)
- Notes: This function calls AX=0007/BX=0002h with the port count set to 1 and
- the port type set to 00h
- SeeAlso: AX=0007h/BX=0002h,AX=0007h/BX=0004h,AX=0007h/BX=000Ah
- --------N-610007BX0002-----------------------
- INT 61 - Banyan VINES - GET PORTS FOR A SERVICE
- AX = 0007h
- BX = 0002h
- DS:DX -> StreetTalk service name
- DS:DI -> port record block (see #03433)
- Return: AX = status (see #03432)
- Note: if the requested number of ports is greater than five, it will be reset
- to five
- SeeAlso: AX=0007h/BX=0001h,AX=0007h/BX=0003h,AX=0007h/BX=0004h
- SeeAlso: AX=0007h/BX=000Ah
- Format of VINES port record block:
- Offset Size Description (Table 03433)
- 00h WORD (call) number of 17-byte elements (01h-05h) to be filled
- 02h BYTE (call) port type for first port
- 03h 16 BYTEs (ret) port (see #03328)
- 13h BYTE (call) port type for second port
- 14h 16 BYTEs (ret) port (see #03328)
- 24h BYTE (call) port type for third port
- 25h 16 BYTEs (ret) port (see #03328)
- 35h BYTE (call) port type for fourth port
- 36h 16 BYTEs (ret) port (see #03328)
- 46h BYTE (call) port type for fifth port
- 47h 16 BYTEs (ret) port (see #03328)
- 57h BYTE reserved
- SeeAlso: #03435
- --------N-610007BX0003-----------------------
- INT 61 - Banyan VINES - FIND A SERVICE
- AX = 0007h
- BX = 0003h
- DS:DX -> port control block (see #03434)
- Return: AX = status (see AX=0007h/BX=0000h)
- SeeAlso: AX=0007h/BX=0002h,AX=0007h/BX=0004h,AX=0007h/BX=0005h
- Format of port control block:
- Offset Size Description (Table 03434)
- 00h WORD ???
- 02h WORD ???
- 04h 16 BYTEs IPC port (see #03328 at AX=0001h"Sosock")
- 14h 5 WORDs ???
- SeeAlso: #03440
- --------N-610007BX0004-----------------------
- INT 61 - Banyan VINES - SET PORTS FOR A SERVICE
- AX = 0007h
- BX = 0004h
- DS:DX -> StreetTalk name of service (max 64 bytes)
- DS:DI -> port record block (see #03435)
- Return: AX = status (see #03432)
- SeeAlso: AX=0007h/BX=0002h,AX=0007h/BX=0003h,AX=0007h/BX=000Ah
- Format of VINES port record block:
- Offset Size Description (Table 03435)
- 00h WORD number of 17-byte elements
- 02h BYTE port type for first port
- 03h 16 BYTEs first IPC port (see #03328)
- 13h BYTE port type for second port
- 14h 16 BYTEs second IPC port (see #03328)
- 24h BYTE port type for third port
- 25h 16 BYTEs third IPC port (see #03328)
- 35h BYTE port type for fourth port
- 36h 16 BYTEs fourth IPC port (see #03328)
- 46h BYTE port type for fifth port
- 47h 16 BYTEs fifth IPC port (see #03328)
- 57h BYTE reserved
- SeeAlso: #03433
- --------N-610007BX0005-----------------------
- INT 61 - Banyan VINES - GET USER NAME
- AX = 0007h
- BX = 0005h
- DS:DX -> 64-byte buffer for user's StreetTalk name
- Return: AX = status (see also #03432)
- 0000h successful
- 0001h network software not installed or incompatible
- Note: if no user logged in, first byte of returned name will be 00h
- SeeAlso: AX=0007h/BX=0007h
- --------N-610007BX0006-----------------------
- INT 61 - Banyan VINES - TRANSLATE ERROR INTO ASCII STRING
- AX = 0007h
- BX = 0006h
- SI = error code (>100)
- DS:DX -> 80-byte buffer for error text
- Return: AX = status (see also #03432)
- 0000h successful
- 0001h network software not installed or incompatible
- --------N-610007BX0007-----------------------
- INT 61 - Banyan VINES - VERIFY EXISTENCE OF NAME AND RETURN CANONICAL FORM
- AX = 0007h
- BX = 0007h
- DS:DX -> NiceName block (see #03436)
- Return: AX = status (see #03432)
- SeeAlso: AX=0007h/BX=0005h,AX=0007h/BX=0008h
- Format of VINES NiceName block:
- Offset Size Description (Table 03436)
- 00h WORD type of name
- 0064h (100) organization
- 00C8h (200) group
- 012Ch (300) item
- 02h WORD pointer to ASCIZ input name
- 04h WORD pointer to 64-byte buffer for output name
- SeeAlso: #03437
- --------N-610007BX0008-----------------------
- INT 61 - Banyan VINES - ENUMERATE StreetTalk NAMES
- AX = 0007h
- BX = 0008h
- DS:DX -> enumerate block (see #03437)
- Return: AX = status (see also #03432)
- 0000h successful
- 0411h all matching names have been returned
- 0412h some groups unavailable, all available matches returned
- Note: each program using this call should continue until a nonzero status
- is returned; otherwise, some resources will not be freed for several
- hours
- SeeAlso: AX=0007h/BX=0005h,AX=0007h/BX=0007h,AX=0007h/BX=0009h
- Format of VINES enumerate block:
- Offset Size Description (Table 03437)
- 00h WORD return code
- 02h WORD pointer to pattern string
- 04h WORD enumerate type
- 0064h (100) organization
- 00C8h (200) group
- 012Ch (300) item
- 06h WORD enumerate class
- 0000h unspecified (return all matching items)
- 0001h user names
- 0002h service names
- 0003h list names
- 0004h nicknames
- 08h WORD pointer to category criteria block (see #03438) or 0
- 0Ah WORD pointer to array of 64-byte returned names
- 0Ch WORD number of names returned
- 0Eh 6 BYTEs reserved for subsequent enumerated calls (set to zeros on first
- call)
- SeeAlso: #03436
- Format of category criteria block:
- Offset Size Description (Table 03438)
- 00h WORD exclude flag
- 0000h return only items with the specified categories
- 0001h return all items except those with the given categories
- 02h WORD number of categories (max 5, 0000h = match all categories)
- 04h WORD category 1 value (see #03439)
- 06h WORD category 2 value
- 08h WORD category 3 value
- 0Ah WORD category 4 value
- 0Ch WORD category 5 value
- SeeAlso: #03437
- (Table 03439)
- Values for common VINES service categories:
- 0001h server service
- 0002h file service
- 0003h print service
- 0004h mail service
- 0005h StreetTalk
- 0006h time service
- 0007h FTP service
- 0008h semaphore service
- 0009h 3270/SNA service
- 000Ah terminal emulation service
- 000Bh asynchronous terminal service
- 000Ch NETBIOS service
- 000Dh PC-based service
- 000Eh BSC service
- 000Fh APPC service
- 0010h NM service
- 0011h VS service
- 0012h POP service
- 0013h AFP service
- 0014h VCS service
- 0015h EMS service
- 0016h LN service
- 0017h BS service
- 0023h RIPL service
- 0064h ADM service
- SeeAlso: #03438
- --------N-610007BX0009-----------------------
- INT 61 - Banyan VINES - TRANSLATE ERROR INTO ASCII STRING (SELECTED PORT)
- AX = 0007h
- BX = 0009h
- SI = error code
- DS:DX -> 80-byte buffer for error text
- DS:DI -> IPC port (16 bytes; see AX=0001h#"Sosock" for port format)
- Return: AX = status (see AX=0007h/BX=0000h)
- Note: Same as AX=0007h/BX=0006h, except IPC port is specified explicitly
- SeeAlso: AX=0007h/BX=0006h
- --------N-610007BX000A-----------------------
- INT 61 - Banyan VINES - internal, OS/2 only - GET MANY PORTS FOR SERVICE
- AX = 0007h
- BX = 000Ah
- DS:DX -> port control block (see #03440)
- Return: AX = status (see AX=0007h/BX=0000h)
- Note: This function cannot be called from applications, as the DS register
- is checked against the redirector data segment address (status code
- 0001h will be returned if DS doesn't match)
- SeeAlso: AX=0007h/BX=0001h,AX=0007h/BX=0002h,AX=0007h/BX=0004h
- Format of port control block:
- Offset Size Description (Table 03440)
- 00h WORD ???
- 02h WORD ???
- 04h 16 BYTEs IPC port (see #03328 at AX=0001h"Sosock")
- 14h 14 WORDs ???
- SeeAlso: #03434
- --------V-610008-----------------------------
- INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - SET ZOOM OFFSET
- AX = 0008h
- BX = X start of zoom offset
- CX = Y start of zoom offset
- Desc: specifies the first byte of video memory to appear in the zoom window
- Range: unknown
- Notes: INT 61 is the default interrupt; the actual interrupt number can be
- obtained by calling INT 16/AH=FFh
- not all vendors include the Tseng TSR which supports these functions
- SeeAlso: AX=0000h"OPTIMA",AX=0006h"OPTIMA",INT 16/AH=FFh"OPTIMA"
- --------N-610008BX0000-----------------------
- INT 61 - Banyan VINES - TALKPORT SERVICE - GET HANDLER ADDRESS
- AX = 0008h
- BX = 0000h
- Return: AX = status
- 0000h successful
- ES:DX = far pointer to handler
- Desc: The TalkPort is a facility to display event messages (e.g. mail
- received, printing on a local printer, ...) on the screen
- Note: This service is handled by the redirector
- SeeAlso: AX=0008h/BX=0001h,AX=0008h/BX=0002h
- --------N-610008BX0001-----------------------
- INT 61 - Banyan VINES - TALKPORT SERVICE - SET HANDLER ADDRESS
- AX = 0008h
- BX = 0001h
- ES:DX -> new handler
- Return: AX = status
- 0000h successful
- SeeAlso: AX=0008h/BX=0000h
- --------N-610008BX0002-----------------------
- INT 61 - Banyan VINES - TALKPORT SERVICE - POST MESSAGE ON LOCAL DISPLAY
- AX = 0008h
- BX = 0002h
- CX = message display flags (see #03441)
- DS:DX -> ASCIZ string to display (only first 80 chars used)
- Return: AX = status
- 0000h successful
- 000Bh message display function currently busy
- 000Ch message queue full
- Notes: queues up to three messages to be displayed on the bottom line
- This service is handled by the redirector
- In a DOS session, TalkPort messages are displayed on display line 25;
- in a Windows session, TalkPort messages are displayed in dialog boxes
- SeeAlso: AX=0008h/BX=0000h,AX=0008h/BX=0003h
- Bitfields for VINES message display flags:
- Bit(s) Description (Table 03441)
- 0 message will remain on screen until user presses ^X
- 1 ring bell after displaying message
- 2 blink
- --------N-610008BX0003-----------------------
- INT 61 - Banyan VINES - TALKPORT SERVICE - INTERCEPT VINES 25th-LINE MESSAGES
- AX = 0008h
- BX = 0003h
- DS:DX -> request block (see #03442)
- Return: AX = status
- 0000h successful
- 0001h network software not installed or incompatible
- Notes: message handler should not call BIOS or DOS functions, and should
- either call next handler or simply return
- to stop intercepting messages, set prev and next request blocks to
- point at each other
- SeeAlso: AX=0008h/BX=0002h
- Format of VINES request block for 25-th line messages:
- Offset Size Description (Table 03442)
- 00h DWORD pointer to user-written message handler
- 04h DWORD pointer to next request block (filled in by VINES)
- 08h DWORD pointer to previous request block (filled in by VINES)
- 0Ch DWORD pointer to message storage area (filled by VINES) (see #03443)
- Format of message storage area:
- Offset Size Description (Table 03443)
- 00h 16 BYTEs IPC port of message sender (see #03328)
- 10h BYTE message flags
- 11h WORD reserved
- 13h BYTE length of message
- 14h 80 BYTEs message text
- SeeAlso: #03442
- --------N-610009-----------------------------
- INT 61 - Banyan VINES - NETBIOS CLIENT SERVICE
- AX = 0009h
- other parameters, if any, unknown
- --------N-61000A-----------------------------
- INT 61 - Banyan VINES - SECONDARY 3270 INTERFACE
- AX = 000Ah
- Note: either 3270/SNA or 3270/BSC interface will use AX=000Ah, depending on
- which is loaded second. The first interface loaded will use AX=0002h
- SeeAlso: INT 61/AX=0002h
- --------N-61000B-----------------------------
- INT 61 - Banyan VINES - SEMAPHORE SERVICE
- AX = 000Bh
- other parameters, if any, unknown
- --------N-61000C-----------------------------
- INT 61 - Banyan VINES - 3270 KEYBOARD HANDLER
- AX = 000Ch
- other parameters, if any, unknown
- --------N-61000D-----------------------------
- INT 61 - Banyan VINES - T3270 SERVICE FUNCTION
- AX = 000Dh
- other parameters, if any, unknown
- --------N-61000E-----------------------------
- INT 61 - Banyan VINES - ENHANCED 3270 SERVICE
- AX = 000Eh
- other parameters, if any, unknown
- --------N-61000F-----------------------------
- INT 61 - Banyan VINES - VINES SOCKET API (FAR DATA)
- AX = 000Fh
- CX:BX -> request block (see #03444)
- DX = application's data segment (should be = CX)
- ES = DS
- Return: AX = status
- 0000h successful
- 0099h invalid operation
- 00A5h resource not available
- Desc: StreetTalk access with session handles
- Notes: This service is handled by the adapter driver
- The request dispatch table contains dummy entries for subfunctions
- 06h, 0Dh, 0Eh, 0Fh, 10h, and 11h, which always return error 0099h
- (invalid operation) in the request block's result buffer
- This interface does the same as the corresponding AX=0001h interface,
- but with a slightly modified request block structure (i.e it allows
- FAR parameter block pointers) and without expecting DS=0001h
- Some adapter drivers (e.g. the NDIS2 token ring driver NDTOKBAN for
- VINES 5.53) ignore the value in CX and use the value from DX instead
- SeeAlso: AX=0001h/SF=0001h,AX=000Fh/SF=0001h
- Format of VINES Socket request block:
- Offset Size Description (Table 03444)
- 00h WORD subfunction number (01h-16h)
- 02h WORD magic number (FEFEh)
- 04h WORD buffer for return code (set to 0 before calling)
- 06h WORD reserved (will be set to client DS)
- 08h WORD reserved (obviously not used; set to 0 before calling)
- 0Ah DWORD far pointer to parameter block
- 0Eh WORD StreetTalk handle
- SeeAlso: #03324 at INT 61/AX=0001h
- --------N-61000FSF0001-----------------------
- INT 61 - Banyan VINES - OPEN SOCKET
- AX = 000Fh subfn 0001h
- CX:BX -> request block (see #03445)
- DX = application's data segment (should be = CX)
- ES = DS
- Return: AX = status
- 0000h successful
- 00A5h resource not available
- Desc: Opens a socket and returns a socket handle
- Format of request block:
- Offset Size Description (Table 03445)
- 00h WORD 0001h
- 02h WORD magic number (FEFEh)
- 04h WORD buffer for return code (set to 0 before calling)
- 06h WORD reserved (will be set to client DS)
- 08h WORD reserved (obviously not used; set to 0 before calling)
- 0Ah DWORD far pointer to parameter block (see #03446)
- 0Eh WORD process handle (see AX=000Fh/SF=0008h)
- Format of parameter block:
- Offset Size Description (Table 03446)
- 00h WORD reserved
- 02h WORD address family (0003h = VINES)
- 04h WORD socket type (0001h = IPC, 0002h = SPP)
- 06h WORD protocol number (FFFFh = default protocol)
- 08h WORD reserved
- 0Ah WORD local port number (0 = transient, 1..1FFh = well-known port)
- 0Ch DWORD far pointer to socket handle buffer (2 bytes)
- 10h DWORD far pointer to IPC port buffer (16 bytes)
- SeeAlso: #03445
- --------N-61000FSF0002-----------------------
- INT 61 - Banyan VINES - SEND MESSAGE ON A SOCKET
- AX = 000Fh subfn 0002h
- CX:BX -> request block (see #03447)
- DX = application's data segment (should be = CX)
- ES = DS
- Return: AX = status
- 0000h successful
- 00A5h resource not available
- Desc: send data to a socket identified by its socket handle
- Format of request block:
- Offset Size Description (Table 03447)
- 00h WORD 0002h
- 02h WORD magic number (FEFEh)
- 04h WORD buffer for return code (set to 0 before calling)
- 06h WORD reserved (will be set to client DS)
- 08h WORD reserved (obviously not used; set to 0 before calling)
- 0Ah DWORD far pointer to parameter block (see #03448)
- 0Eh WORD process handle (see AX=000Fh/SF=0008h)
- Format of parameter block:
- Offset Size Description (Table 03448)
- 00h WORD buffer for estimated communication cost in 220 msec ticks
- 02h WORD buffer for return code (set to 0 before calling)
- 04h WORD socket handle
- 06h DWORD far pointer to IPC/SPP message buffer
- 0Ah WORD length of IPC/SPP message buffer
- 0Ch WORD option flags
- bit 0: asynchronous communication
- bit 1: reliable message
- bit 3: end of message
- bit 4: vectored I/O
- 0Eh 16 BYTEs socket address (IPC port of source)
- 1Eh WORD not used (set to 0 before calling)
- 20h WORD SPP connection id (0 for IPC messages)
- 22h WORD request type (1 = data, 2 = connect SPP, 3 = disconnect SPP)
- SeeAlso: #03447
- --------N-61000FSF0004-----------------------
- INT 61 - Banyan VINES - CLOSE SOCKET
- AX = 000Fh subfn 0004h
- CX:BX -> request block (see #03449)
- DX = application's data segment (should be = CX)
- ES = DS
- Return: AX = status
- 0000h successful
- 00A5h resource not available
- Desc: Closes a socket identified by its socket handle
- Format of request block:
- Offset Size Description (Table 03449)
- 00h WORD 0004h
- 02h WORD magic number (FEFEh)
- 04h WORD buffer for return code (set to 0 before calling)
- 06h WORD reserved (will be set to client DS)
- 08h WORD reserved (obviously not used; set to 0 before calling)
- 0Ah DWORD far pointer to socket handle (2 bytes)
- 0Eh WORD process handle (see AX=000Fh/SF=0008h)
- --------N-61000FSF0008-----------------------
- INT 61 - Banyan VINES - GET PROCESS HANDLE
- AX = 000Fh subfn 0008h
- CX:BX -> request block (see #03450)
- DX = application's data segment (should be = CX)
- ES = DS
- Return: AX = status
- 0000h successful
- 00A5h resource not available
- Desc: Returns a process handle to be used in other request blocks
- Notes: This function is a prerequisite to all AX=000Fh subfunctions which
- expect a process handle in the request block
- Although subsequent calls from the same application return different
- process handles, there seem to be no restrictions on how many times
- an application may call this function (in fact, the code in the VINES
- toolkit library always calls it before issueing other AX=000Fh calls)
- Format of request block:
- Offset Size Description (Table 03450)
- 00h WORD 0008h
- 02h WORD magic number (FEFEh)
- 04h WORD buffer for return code (set to 0 before calling)
- 06h WORD reserved
- 08h WORD reserved (obviously not used; set to 0 before calling)
- 0Ah DWORD process type (1 = transient, 2 = resident; destroyed on exit)
- 0Eh WORD buffer for process handle
- --------N-610010-----------------------------
- INT 61 - Banyan VINES - INTERFACE TO NBNS
- AX = 0010h
- other parameters, if any, unknown
- --------N-6101-------------------------------
- INT 61 - Banyan VINES - CHECK SERVICE
- AH = 01h
- AL = service ID (see #03451)
- Return: AX = status
- 0000h installed
- 0001h not installed
- 0002h invalid ID
- 0003h invalid function
- Note: Only the offset part of the service pointer is checked for a nonzero
- value
- SeeAlso: AH=00h,AH=02h"VINES",AH=03h"VINES"
- (Table 03451)
- Values for VINES service ID:
- 01h communications
- 02h primary 3270 emulation
- 03h async terminal emulation
- 04h file deflection
- 05h print service control
- 06h get address of something
- 07h StreetTalk access service
- 08h environment
- 09h NETBIOS client service
- 0Ah secondary 3270 emulation
- 0Bh semaphore service
- 0Ch 3270 emulation active status
- 0Dh T3270 keyboard interrupt simulator
- 0Eh enhanced 3270 service
- 0Fh comm Windows entry point
- 10h interface to NBNS
- --------N-6101--BX0000-----------------------
- INT 61 u - PC/TCP kernel v2.1+ - "net_config" - CONFIGURE RUNNING KERNEL
- AH = 01h
- BX = 0000h
- DH = tag number
- DL = device number
- DS:SI -> buffer to send to kernel
- ES:DI -> integer containing size of buffer
- Return: CF clear if successful
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Range: INT 20 to INT E0, selected by configuration
- Notes: there are a large number of tags available; the items returned
- all refer to local kernel configuration, and are not needed in
- normal use.
- this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=02h"PC/TCP"
- --------N-6102-------------------------------
- INT 61 - Banyan VINES - GET REVISION NUMBER
- AH = 02h
- DS:DX -> 2-byte buffer for result
- Return: AX = 0000h installed
- DS:DX buffer contains revision number as
- 10000d * major_ver + 100d * minor_ver + patch_revision
- SeeAlso: AH=01h"VINES",AH=04h"VINES",AH=07h"VINES"
- --------N-6102--BX0000-----------------------
- INT 61 u - PC/TCP kernel v2.1+ - "get_kernel_info" - GET MISCELLAN LOCAL INFO
- AH = 02h
- BX = 0000h
- DH = tag number
- DL = device number
- DS:SI -> buffer for result (up to 48 bytes for version <= 2.2)
- ES:DI -> integer containing size of buffer
- Return: CF clear if successful
- Data loaded into specified buffer, and size value altered
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Range: INT 20 to INT E0, selected by configuration
- Notes: there are a large number of tags available; the items returned
- all refer to local kernel configuration, and are not needed in
- normal use.
- this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=01h"PC/TCP"
- --------N-6103-------------------------------
- INT 61 - Banyan VINES - INSTALL SERVICE HANDLER
- AH = 03h
- AL = service ID (see #03451)
- DS:DX -> new service handler
- Return: AX = 0000h successful
- SeeAlso: AH=00h,AH=01h"VINES",AH=02h"VINES",AH=05h"VINES"
- --------N-6104-------------------------------
- INT 61 - Banyan VINES - CHECK VINES REVISION NUMBER IN RANGE
- AH = 04h
- DS:DX -> 2-byte buffer containing the VINES revision number
- DS:DX buffer contains revision number as
- 10000d * major_ver + 100d * minor_ver + patch_revision
- Return: AX = status
- 0000h valid version
- 0004h out of range
- Note: For Revision 5.53, the valid range is 4.10(0) to 6.19(99)
- SeeAlso: AH=02h"VINES",AH=07h"VINES",AH=08h"VINES"
- --------N-6105-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "get_addr" - GET INTERNET ADDRESS OF NET DESCR
- AH = 05h
- BX = network descriptor
- Return: CF clear if successful
- DX:AX = Internet address of ND
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- InstallCheck: test for the signature "TCPTSR" three bytes beyond the start
- of the interrupt handler
- Range: INT 20 to INT E0, selected by configuration
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=16h"PC/TCP"
- SeeAlso: INT 63/AH=25h"BW-TCP"
- --------N-6105-------------------------------
- INT 61 - Banyan VINES - READ PCCONFIG BYTES
- AH = 05h
- CX = number of bytes to copy
- (max. 0175h for VINES 4.00, max. 017Fh for VINES 4.10+)
- SI = offset of area to be copied (see #03452,#03453)
- Return: AX = status
- 0000h successful
- 0004h out of range
- Notes: The PCCONFIG area is located in the code segment of the BANV handler
- To find out which PCCONFIG structure applies, call this function first
- with CX=0006h to get the VINES revision number
- SeeAlso: AH=02h"VINES",AH=04h"VINES",AH=06h"VINES",AH=0Bh"VINES"
- Format of PCCONFIG area (VINES 4.00):
- Offset Size Description (Table 03452)
- 00h 6 BYTEs VINES revision (ASCII, zero-padded)
- 06h 2 BYTEs NEWREV-number (ASCII, two digits)
- 08h WORD hardware interrupt level
- 0Ah WORD DMA channel
- 0Ch WORD I/O address
- 0Eh DWORD adapter ROM address (linear)
- 12h DWORD adapter RAM address (linear)
- 16h WORD BANV interrupt
- 18h 32 BYTEs default login group #1
- 38h 32 BYTEs default login group #2
- 58h 32 BYTEs default login group #3
- 78h WORD semaphore locking support flag
- 7Ah WORD extended StreetTalk flag
- 7Ch WORD maximum number of file volumes
- 7Eh WORD NetBIOS flag
- 80h 60 BYTEs default network adapter
- BCh 60 BYTEs default communications driver
- F8h WORD maximum number of SPP connections
- FAh WORD maximum number of open sockets
- FCh WORD communications buffer size (10..60 KB)
- FEh 20 BYTEs location directory on drive Z:
- 112h 33 BYTEs auxiliary configuration area #1 (see #03454)
- 133h 33 BYTEs auxiliary configuration area #2
- 154h 33 BYTEs auxiliary configuration area #3
- SeeAlso: #03453
- Format of PCCONFIG area (VINES 4.10+):
- Offset Size Description (Table 03453)
- 00h 6 BYTEs VINES revision (ASCII, zero-padded)
- 06h 2 BYTEs NEWREV-number (ASCII, two digits)
- 08h WORD hardware interrupt level
- 0Ah WORD DMA channel
- 0Ch WORD I/O address
- 0Eh DWORD adapter ROM address (linear)
- 12h DWORD adapter RAM address (linear)
- 16h WORD BANV interrupt
- 18h 32 BYTEs default login group #1
- 38h 32 BYTEs default login group #2
- 58h 32 BYTEs default login group #3
- 78h WORD semaphore locking support flag
- 7Ah WORD extended StreetTalk flag
- 7Ch WORD named pipes support flag
- 7Eh WORD maximum number of file volumes
- 80h WORD NetBIOS flag
- 82h 60 BYTEs default network adapter
- BEh 60 BYTEs default communications driver
- FAh WORD maximum number of SPP connections
- FCh WORD maximum number of open sockets
- FEh WORD communications buffer size (10..60 KB)
- 100h WORD number of mailslots
- 102h WORD maximum number of open files
- 104h WORD maximum number of NetBIOS sessions
- 106h WORD maximum number of NetBIOS commands
- 108h 20 BYTEs location directory on drive Z:
- 11Ch 33 BYTEs auxiliary configuration area #1 (see #03454)
- 13Dh 33 BYTEs auxiliary configuration area #2
- 15Eh 33 BYTEs auxiliary configuration area #3
- Format of auxiliary configuration area:
- Offset Size Description (Table 03454)
- 00h 16 BYTEs item name (no zero terminator if length = 16)
- 10h BYTE item value type (1=text, else numeric)
- 11h 16 BYTEs item value (string if type 1, else DWORD)
- SeeAlso: #03452,#03453
- --------N-6106-------------------------------
- INT 61 - PC/TCP kernel v2.05 - "net_info" - GET INTERFACE STATISTICS
- AH = 06h
- BX = network descriptor (must be allocated and open)
- DS:SI -> 38-byte buffer for interface statistics (see #03455)
- Return: CF clear if successful
- buffer filled
- CF set on error
- AX = error code (see #03319)
- Desc: returns the statistics relevant to the particular network interface
- used by the specified network descriptor
- Range: INT 20 to INT E0, selected by configuration
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=05h"PC/TCP"
- Format of PC/TCP interface statistics:
- Offset Size Description (Table 03455)
- 00h WORD interface class (e.g. 802.3)
- 02h WORD type (manufacturer) of interface
- 04h WORD interface number
- 06h DWORD (big-endian) IP address of interface
- 0Ah DWORD subnet mask
- 0Eh WORD 0001h if interface is up
- 10h DWORD total packets received
- 14h DWORD total packets sent
- 18h DWORD receive errors
- 1Ch DWORD send errors
- 20h WORD length of local net address (e.g. 0006h for Ethernet)
- 22h DWORD pointer to local net address
- --------N-6106-------------------------------
- INT 61 - Banyan VINES - GET PCCONFIG BASE ADDRESS
- AH = 06h
- DS:DX -> 4-byte buffer for far pointer to PCCONFIG area
- Return: AX = 0000h successful
- Note: The PCCONFIG area is located in the code segment of the BANV handler
- SeeAlso: AH=05h"VINES",AH=0Bh"VINES"
- --------N-6107-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "net_globalize" - MAKE NET DESCRIPTOR GLOBAL
- AH = 07h
- BX = local network descriptor
- Return: CF clear if successful
- AX = global network descriptor
- CF set on error
- AX = error code (see #03319)
- Notes: the new network descriptor can be accessed from all processes and is
- independent of DOS
- this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
- SeeAlso: INT 61/AH=29h
- --------N-6107-------------------------------
- INT 61 - Banyan VINES - GET VINES REVISION NUMBER (LONG)
- AH = 07h
- DS:DX -> 4-byte buffer for result
- Return: AX = 0000h successful
- DS:DX buffer contains revision number as
- 10000d * major_ver + 100d * minor_ver + patch_revision
- SeeAlso: AH=02h"VINES",AH=04h"VINES",AH=08h"VINES"
- --------b-6107-------------------------------
- INT 61 - Atari Portfolio - FORMAT CREDIT CARD MEMORY
- AH = 07h
- AL = drive number (00h = A:,01h = B:)
- Return: CF clear if successful
- CF set on error
- AH = error code (see #00234 at INT 13/AH=01h)
- Note: do not use this function to format the internal disk (drive number 02h)
- SeeAlso: AH=00h"Portfolio",AH=08h"Portfolio",AH=09h"Portfolio"
- --------N-6108-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "net_release" - CLOSE A NETWORK DESCRIPTOR
- AH = 08h
- BX = network descriptor
- Return: CF clear if successful
- AX = 0000h (BWPCTCP shim)
- CF set on error
- AX = error code (see #03319)
- Range: INT 20 to INT E0, selected by configuration
- Note: the descriptor will be closed and resources released. If a stream
- descriptor, the protocol (FIN etc) is completed unless the
- non-blocking option has been set.
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=09h"PC/TCP"
- SeeAlso: INT 63/AH=0Eh"BW-TCP"
- --------N-6108-------------------------------
- INT 61 - Banyan VINES - CHECK VINES REVISION NUMBER IN RANGE (LONG)
- AH = 08h
- DS:DX -> 4-byte buffer containing the VINES revision number
- DS:DX buffer contains revision number as
- 10000d * major_ver + 100d * minor_ver + patch_revision
- Return: AX = status
- 0000h valid version
- 0004h out of range
- Note: For Revision 5.53, the valid range is 4.10(0) to 6.19(99)
- SeeAlso: AH=04h"VINES",AH=07h"VINES"
- --------b-6108-------------------------------
- INT 61 - Atari Portfolio - GET SIZE OF INTERNAL DISK
- AH = 08h
- Return: AX = segment address of RAMdisk
- BX = size in KB
- SeeAlso: AH=00h"Portfolio",AH=07h"Portfolio",AH=09h"Portfolio"
- --------N-6109-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "net_releaseall" - CLOSE ALL NON-GLOBAL DESCRS
- AH = 09h
- Return: CF clear
- Range: INT 20 to INT E0, selected by configuration
- Notes: this call performs function 08h on every non-global network descriptor.
- Global descriptors must be released individually.
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
- SeeAlso: INT 63/AH=0Eh"BW-TCP"
- --------N-6109-------------------------------
- INT 61 - Banyan VINES - GET VALUE OF AN OS/2 BACKEND VARIABLE
- AH = 09h
- other parameters, if any, unknown
- SeeAlso: AH=0Ah"VINES"
- --------b-6109-------------------------------
- INT 61 - Atari Portfolio - FORMAT INTERNAL DISK
- AH = 09h
- BX = desired size of disk in KB
- Return: CF clear if successful
- CF set on error
- BX = maximum possible size in KB
- Desc: resize and erase the internal RAMdisk, then reboot the system
- SeeAlso: AH=00h"Portfolio",AH=07h"Portfolio",AH=08h"Portfolio"
- SeeAlso: AH=0Bh"Portfolio"
- --------N-610A-------------------------------
- INT 61 - PC/TCP kernel v2.05 - "net_send" - ???
- AH = 0Ah
- ???
- Return: ???
- Notes: this function is described as "unused" in the v2.05 and v2.2
- documentation
- this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
- SeeAlso: AH=0Bh
- --------N-610A-------------------------------
- INT 61 - Banyan VINES - SET VALUE OF AN OS/2 BACKEND VARIABLE
- AH = 0Ah
- other parameters, if any, unknown
- SeeAlso: AH=09h"VINES"
- --------N-610B-------------------------------
- INT 61 - PC/TCP kernel v2.05 - "net_sendto" - ???
- AH = 0Bh
- ???
- Return: ???
- Range: INT 20 to INT E0, selected by configuration
- Notes: this function is described as "unused" in the v2.05 and v2.2
- documentation
- this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
- SeeAlso: AH=0Ah
- --------N-610B-------------------------------
- INT 61 - Banyan VINES - SET PCCONFIG IN BACKEND
- AH = 0Bh
- other parameters, if any, unknown
- SeeAlso: AH=05h"VINES",AH=06h"VINES"
- --------b-610B-------------------------------
- INT 61 - Atari Portfolio - DETERMINE CCM VALIDITY
- AH = 0Bh
- AL = drive number (00h = A:,01h = B:)
- Return: CF clear if successful (card present and correct)
- CF set on error
- AH = error code (see #00234 at INT 13/AH=01h)
- SeeAlso: AH=00h"Portfolio",AH=07h"Portfolio",AH=0Dh"Portfolio"
- --------N-610C-------------------------------
- INT 61 u - PC/TCP kernel v2.05+ - "net_stat" - GET CONNECTION STATISTICS
- AH = 0Ch
- BX = network descriptor or one of the following:
- FFFCh for kernel ICMP statistics (see #03459)
- FFFDh for kernel UDP statistics (see #03458)
- FFFEh for kernel IP statistics (see #03457)
- FFFFh for kernel TCP statistics (see #03456)
- DS:DX -> 64-byte buffer
- Return: CF clear if successful
- buffer filled
- CF set on error
- AX = error code (see #03319)
- Notes: the fields filled in for a network descriptor depend on the protocol
- family used by that descriptor's connection
- this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP"
- Format of PC/TCP kernel TCP statistics:
- Offset Size Description (Table 03456)
- 00h 16 BYTEs unused
- 10h DWORD bytes sent
- 14h DWORD bytes received
- 18h 8 BYTEs unused
- 20h DWORD packets sent
- 24h DWORD packets received
- 28h DWORD bad checksums
- 2Ch DWORD count of window ignored by remote
- 30h DWORD timeouts
- 34h DWORD resets
- 38h DWORD duplicate packets
- 3Ch DWORD retransmits
- SeeAlso: #03457,#03458,#03459
- Format of PC/TCP kernel IP statistics:
- Offset Size Description (Table 03457)
- 00h 8 BYTEs unused
- 08h DWORD invalid IP header length errors
- 0Ch DWORD protocol errors (unwanted packets)
- 10h DWORD duplicate fragments received
- 14h DWORD bad fragments received
- 18h DWORD security errors
- 1Ch DWORD count of bad IP addresses received
- 20h DWORD packets sent
- 24h DWORD packets received
- 28h DWORD bad checksums received
- 2Ch DWORD total IP protocol errors
- 30h DWORD fragmentation errors
- 34h DWORD IP packets discarded + bad security + bad fragments
- 38h DWORD fragments received
- 3Ch 4 BYTEs unused
- SeeAlso: #03456,#03458,#03459
- Format of PC/TCP kernel UDP statistics:
- Offset Size Description (Table 03458)
- 00h 28 BYTEs unused
- 1Ch DWORD packets dropped for lack of buffers
- 20h DWORD packets sent
- 24h DWORD packets received
- 28h DWORD bad checksums
- 2Ch DWORD port not listening errors
- 30h 4 BYTEs unused
- 34h DWORD truncated receives
- 38h 8 BYTEs unused
- SeeAlso: #03456,#03457,#03459
- Format of PC/TCP kernel ICMP statistics:
- Offset Size Description (Table 03459)
- 00h DWORD "TimeEx" sent
- 04h DWORD "TimeEx" received
- 08h DWORD "ParamProb" sent
- 0Ch DWORD "ParamProb" received
- 10h DWORD redirects received
- 14h DWORD source quenches received
- 18h DWORD ICMP Echo Requests ("ping") sent
- 1Ch DWORD ICMP Echo Requests received
- 20h DWORD packets sent
- 24h DWORD packets received
- 28h DWORD bad packets received
- 2Ch DWORD "DestUn" received
- 30h DWORD packet send errors
- 34h DWORD "DestUn" sent
- 38h DWORD ICMP Echo replies received
- 3Ch DWORD ICMP Echo replies sent
- SeeAlso: #03456,#03457,#03458
- --------N-610D-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "is_netnd" - CHECK IF NETWORK DESCRIPTOR VALID
- AH = 0Dh
- BX = possible network descriptor
- Return: CF clear if valid
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
- SeeAlso: INT 61/AH=22h
- --------b-610D-------------------------------
- INT 61 - Atari Portfolio - GET SCREEN SIZE
- AH = 0Dh
- Return: AX = physical screen size (AH=rows, AL=columns)
- DX = logical screen size (DH=rows, DL=columns)
- SeeAlso: AH=00h"Portfolio",AH=0Bh"Portfolio",AH=0Eh"Portfolio"
- --------N-610E-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "net_select" - DETECT READINESS OF NETWORK
- AH = 0Eh
- BX = maximum value of network descriptor for which to return info
- DS:DX -> 32-bit (max) array of bit flags for read readiness
- ES:DI -> 32-bit (max) array of bit flags for write readiness
- Return: CF clear
- InstallCheck: test for the signature "TCPTSR" three bytes beyond the start
- of the interrupt handler
- Range: INT 20 to INT E0, selected by configuration
- Notes: bits in the DS:DX buffer are set if the corresponding network
- descriptor may be read without blocking; bits in the ES:DI buffer
- are set if the corresponding network descriptor may be written
- without blocking. This implies that the network descriptor has
- opened correctly and the protocol initialized.
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP"
- --------b-610E-------------------------------
- INT 61 - Atari Portfolio - GET/SET SCREEN MODE
- AH = 0Eh
- AL = function
- 00h get mode
- 01h set mode
- DL = new mode (see #03460)
- Return: DL = current/old mode
- Note: if changing the mode places the cursor position or virtual screen
- origin outside the displayed area, the screen origin will be reset
- to (0,0), the screen cleared, and the cursor position set to (0,0)
- SeeAlso: AH=00h"Portfolio",AH=0Dh"Portfolio",AH=0Fh"Portfolio",INT 10/AH=00h
- Bitfields for Atari Portfolio screen mode:
- Bit(s) Description (Table 03460)
- 0 40x8 mode instead of 80x25
- 1 tracked mode
- 7 graphics
- Note: the above bits are mutually exclusive
- --------N-610F-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "get_netversion" - GET SOFTWARE VERSION
- AH = 0Fh
- Return: CF clear
- AX = version (AH = major, AL = minor)
- BX = patch level
- Notes: patch levels are no longer used starting with version 2.10; instead,
- the minor version level is incremented.
- Beame&Whiteside's BWPCTCP v3.0a shim reports version 2.05, but does not
- set BX
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP"
- --------b-610F-------------------------------
- INT 61 - Atari Portfolio - GET/SET CURSOR MODE
- AH = 0Fh
- AL = function
- 00h get mode
- 01h set mode
- BL = new cursor mode
- 00h cursor off
- 01h underline
- 02h block
- 02h force mode (set size to reflect NumLock state)
- Return: BL = current/old cursor mode
- SeeAlso: AH=00h"Portfolio",AH=0Eh"Portfolio",AH=10h"Portfolio",INT 10/AH=01h
- --------N-6110-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "net_shutdown" - UNINSTALL
- AH = 10h
- Return: CF clear if successful
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Range: INT 20 to INT E0, selected by configuration
- Note: this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP"
- --------b-6110-------------------------------
- INT 61 - Atari Portfolio - GET/SET VIRTUAL SCREEN POSITION
- AH = 10h
- AL = function
- 00h get position
- Return: DH,DL = current row,column
- 01h set position
- DH = row
- DL = column
- Desc: get or specify the upper-left corner of the 40x8 window into the
- logical screen
- SeeAlso: AH=00h"Portfolio",AH=0Eh"Portfolio",AH=0Fh"Portfolio"
- SeeAlso: AH=11h"Portfolio"
- --------N-6111-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "disable_async" - DISABLE ASYNCHRONOUS HANDLERS
- AH = 11h
- Return: CF clear
- AX = previous state
- 0000h async calls were already disabled
- else async calls were enabled
- SeeAlso: INT 61"FTP Software",INT 61/AH=12h
- --------b-6111-------------------------------
- INT 61 - Atari Portfolio - MOVE VIRTUAL SCREEN ORIGIN
- AH = 11h
- AL = number of lines to move
- DL = direction of move (1=up, 2=down, 3=left, 4=right)
- SeeAlso: AH=00h"Portfolio",AH=10h"Portfolio",AH=12h"Portfolio"
- --------N-6112-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "enable_async" - ENABLE ASYNCHRONOUS HANDLERS
- AH = 12h
- Return: CF clear
- AX = previous state
- 0000h async calls were disabled
- else async calls were already enabled
- SeeAlso: INT 61"FTP Software",INT 61/AH=11h
- --------b-6112-------------------------------
- INT 61 - Atari Portfolio - SCREEN REFRESH
- AH = 12h
- Return: nothing
- Desc: copy contents of video RAM to LCD controller
- SeeAlso: AH=10h"Portfolio",AH=11h"Portfolio",AH=15h"Portfolio"
- --------N-6113-------------------------------
- INT 61 - PC/TCP kernel v2.05 - "net_connect" - OPEN A NETWORK CONNECTION
- AH = 13h
- BX = network descriptor (FFFFh for automatic net_getdesc)
- DX = protocol (see #03461)
- DS:SI -> buffer for "addr" structure (see #03462)
- Return: CF clear if successful
- AX = network descriptor used or allocated
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Notes: resets the connection with AH=19h in various cases
- will wait for protocol on stream connections unless non-blocking was
- set with AH=20h
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=18h,INT 61/AH=23h
- SeeAlso: INT 63/AH=14h"BW-TCP"
- (Table 03461)
- Values for PC/TCP protocol:
- 0001h raw net (undocumented)
- 0002h raw IP
- 0003h datagram (UDP)
- 0004h stream (TCP)
- 0005h raw ICMP
- Format of structure "addr":
- Offset Size Description (Table 03462)
- 00h DWORD Internet address (network order)
- 04h WORD remote socket number (network order)
- 06h WORD local socket number (network order) 0000h means "you choose"
- 08h BYTE protocol (see #03461)
- --------N-6114-------------------------------
- INT 61 Ou - PC/TCP kernel v2.05 - "net_recv" - NO LONGER SUPPORTED
- AH = 14h
- BX = network descriptor
- Return: CF set
- AX = 0018h (see #03319 at INT 61"FTP Software")
- Notes: displays error message "Illegal system call! Please upgrade your
- PCserver software" to standard output
- this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=0Ah,INT 61/AH=15h
- --------N-6115-------------------------------
- INT 61 - PC/TCP kernel v2.05 - "net_recvfrom" - ???
- AH = 15h
- ???
- Return: ???
- Notes: this function is described as "unused" in the v2.2 documentation
- this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
- SeeAlso: INT 61/AH=0Bh,INT 61/AH=14h
- --------b-6115-------------------------------
- INT 61 - Atari Portfolio - SOUND GENERATION
- AH = 15h
- AL = function
- 00h key click
- 01h beep
- 02h alarm
- Return: nothing
- SeeAlso: AH=00h"Portfolio",AH=12h"Portfolio",AH=16h"Portfolio"
- --------N-6116-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "net_peer" - GET DATA ON REMOTE PEER
- AH = 16h
- BX = network descriptor
- DS:DX -> 9-byte buffer for "addr" structure (see #03462)
- Return: CF clear if successful
- buffer filled
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Range: INT 20 to INT E0, selected by configuration
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP"
- --------b-6116-------------------------------
- INT 61 - Atari Portfolio - MELODY TONE GENERATOR
- AH = 16h
- CX = length of tones in 1/100 sec
- DL = tone code (see #03463)
- SeeAlso: AH=15h"Portfolio",AH=17h"Portfolio"
- (Table 03463)
- Values for Atari Portfolio tone code:
- 04h A6#01864.7 Hz
- 05h B6 1975.5 Hz
- 06h D7 2348.3 Hz
- 07h D7# 2489.0 Hz
- 0Eh F6# 1480.0 Hz
- 25h C7 2093.0 Hz
- 29h D6 1174.7 Hz
- 2Ch G6# 1661.2 Hz
- 2Fh C7# 2217.5 Hz
- 30h D5# 622.3 Hz
- 31h E5 659.3 Hz
- 32h F5 698.5 Hz
- 33h F5# 740.0 Hz
- 34h G5 784.0 Hz
- 35h G5# 830.6 Hz
- 36h A5 880.6 Hz
- 37h A5# 932.3 Hz
- 38h B5 987.8 Hz
- 39h C6 1046.5 Hz
- 3Ah C6# 1108.7 Hz
- 3Bh D6# 1244.5 Hz
- 3Ch E6 1318.5 Hz
- 3Dh F6 1396.9 Hz
- 3Eh G6 1568.9 Hz
- 3Fh A6 1760.0 Hz
- --------N-6117-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "net_reconfig" - RE-READ KERNEL CONFIGURATION
- AH = 17h
- Return: CF clear if successful
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Notes: this routine is deprecated in v2.1+ and will eventually be withdrawn;
- in v2.1+, this function calls AH=01h which should be used instead
- this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=01h"PC/TCP"
- --------b-6117-------------------------------
- INT 61 - Atari Portfolio - DIAL NUMBER
- AH = 17h
- DS:SI -> ASCII string containing number to dial
- CX = length of string
- Note: valid characters for string are "0123456789ABCD*#"
- SeeAlso: AH=00h"Portfolio",AH=15h"Portfolio",AH=16h"Portfolio"
- SeeAlso: AH=18h"Portfolio"
- --------N-6118-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "net_eof" - CLOSE TRANSMIT SIDE OF CONNECTION
- AH = 18h
- BX = network descriptor
- Return: CF clear if successful
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Note: a TCP "FIN" command is sent and no further data may be transmitted,
- although the connection remains open
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=13h"PC/TCP"
- SeeAlso: INT 63/AH=0Eh"BW-TCP"
- --------b-6118-------------------------------
- INT 61 - Atari Portfolio - MUTE STATES
- AH = 18h
- AL = function
- 00h get mute state
- 01h set mute state
- 02h get key click state
- 03h set key click state
- 04h get beep state
- 05h set beep state
- 06h get alarm state
- 07h set alarm state
- 08h get DTMF duration
- 09h set DTMF duration
- DL = new state ("set" functions) (00h off [muted], 01h on)
- Return: DL = current state ("get" functions) (00h off [muted], 01h on)
- SeeAlso: AH=15h"Portfolio",AH=16h"Portfolio",AH=17h"Portfolio"
- SeeAlso: AH=19h"Portfolio"
- --------N-6119-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "net_abort" - RESET A NETWORK CONNECTION
- AH = 19h
- BX = network descriptor
- Return: CF clear if successful
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Desc: immediately destroys the specified connection
- Note: send a TCP "RST" command if a stream connection is open
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=24h
- --------b-6119-------------------------------
- INT 61 - Atari Portfolio - GET SERIAL PORT PARAMETERS
- AH = 19h
- DX = serial port number
- Return: AH = status
- 00h successful
- AL = composite parameters (see #00300 at INT 14/AH=00h"SERIAL")
- other error
- SeeAlso: AH=00h"Portfolio",AH=15h"Portfolio",AH=1Ah"Portfolio"
- --------N-611A-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "net_write" - WRITE TO THE NETWORK
- AH = 1Ah
- BX = network descriptor
- CX = number of bytes to transmit (0000h allowed)
- DX = send options (see #03464)
- DS:SI -> data to be written
- Return: CF clear if successful
- AX = number of bytes actually written
- DX = ???
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- InstallCheck: test for the signature "TCPTSR" three bytes beyond the start
- of the interrupt handler
- Range: INT 20h to INT E0h, selected by configuration
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
- SeeAlso: INT 63/AH=19h"BW-TCP",INT 63/AH=1Bh"BW-TCP"
- Bitfields for PC/TCP send options:
- Bit(s) Description (Table 03464)
- 0 signal "URG"ent data
- 3 attempt rerouting on non-stream calls if first attempt fails
- 4 send data with PUSH flag (no override of Nagle)
- 5 fail rather than truncating datagram
- 6 fail rather than blocking
- 7 broadcast packet
- --------b-611A-------------------------------
- INT 61 - Atari Portfolio - GET PERIPHERAL ID BYTE
- AH = 1Ah
- Return: AH = peripheral ID byte
- AL = 00h if no peripheral installed
- Desc: get the ID code for the current terminating peripheral
- SeeAlso: AH=00h"Portfolio",AH=18h"Portfolio",AH=1Bh"Portfolio"
- --------N-611B-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "net_read" - READ FROM THE NETWORK
- AH = 1Bh
- BX = network descriptor
- CX = maximum number of bytes to read
- DX = receive options (see #03465)
- DS:SI -> buffer for data
- ES:DI -> "addr" structure (see #03462) for remote from which to read
- 0000h:0000h for any
- Return: CF clear if successful
- AX = number of bytes actually read
- DX = ???
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
- Bitfields for PC/TCP receive options:
- Bit(s) Description (Table 03465)
- 1 do not remove data from queue, just copy it
- 2 do not copy data, just remove it from queue
- 5 fail if datagram would be truncated
- 6 do not block, return error if no data available
- Note: special case for UDP: if both 1 and 2 set, return number of datagrams
- --------b-611B-------------------------------
- INT 61 - Atari Portfolio - SET PERIPHERAL ID BYTE
- AH = 1Bh
- AL = which peripheral to set
- 00h serial
- 01h parallel
- DL = peripheral ID
- Return: nothing
- Desc: specify that a peripheral is compatible with the BIOS serial or
- parallel services
- SeeAlso: AH=1Ah"Portfolio",AH=1Ch"Portfolio"
- --------N-611C-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "net_writeto" - WRITE A DATAGRAM
- AH = 1Ch
- BX = network descriptor
- CX = number of bytes to transmit (0000h allowed)
- DX = send options (see #03464)
- DS:SI -> data to be written
- ES:DI -> "addr" structure (see #03462)
- Return: CF clear if successful
- AX = number of bytes actually written
- DX = ???
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Note: this function differs from AH=1Ah in that the address and socket
- numbers can be overridden
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
- SeeAlso: INT 63/AH=21h"BW-TCP"
- --------b-611C-------------------------------
- INT 61 - Atari Portfolio - PRESET/GET PERIPHERAL DATA
- AH = 1Ch
- AL = function
- 00h preset data values
- BL = data value
- DX = I/O address
- 01h get data values
- BH = table entry number (04h-09h)
- Return: if function 01h
- BL = data value
- DX = I/O address
- Desc: preset peripheral I/O data in a table mapping I/O addresses to data
- values; function 00h additionally outputs the data value to the
- I/O port
- SeeAlso: AH=1Ah"Portfolio",AH=1Bh"Portfolio",AH=1Eh"Portfolio"
- --------N-611D-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "net_readfrom" - READ A DATAGRAM
- AH = 1Dh
- BX = network descriptor
- CX = maximum number of bytes to read
- DX = receive options (see #03464)
- DS:SI -> buffer for received data
- ES:DI -> 9-byte buffer containing "addr" structure (see #03462)
- Return: CF clear if successful
- AX = number of bytes read
- DX = ???
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Notes: this function can read from any host or a designated host depending
- on settings in the "addr" structure
- only for use with datagram or Raw descriptors
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
- --------N-611E-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "net_flush" - FLUSH PENDING DATA
- AH = 1Eh
- BX = network descriptor
- Return: CF clear if successful
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Range: INT 20 to INT E0, selected by configuration
- Notes: bufferred data is transmitted immediately, overriding Nagle's algorithm
- if necessary
- this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP"
- --------b-611E-------------------------------
- INT 61 - Atari Portfolio - GET/SET CLOCK TICK SPEED
- AH = 1Eh
- AL = function
- 00h get speed
- 01h set speed
- BX = clock tick speed
- 0000h tick every 128 seconds
- 0001h tick every second
- Return: if function 00h
- BX = clock tick speed
- Note: the faster tick speed also uses more power
- SeeAlso: AH=00h"Portfolio",AH=1Ch"Portfolio",AH=1Fh"Portfolio"
- --------N-611F-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "net_asynch" - SET UP ASYNCHRONOUS CALL-BACK
- AH = 1Fh
- BX = network descriptor
- CX = event type (see #03466)
- DS:SI -> event handler routine (see #03467)
- ES:DI = 32-bit hint passed to handler
- Return: CF clear if successful
- DS:DX -> previous handler
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Note: ICMP messages do not trigger events on stream connections
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP"
- (Table 03466)
- Values for PC/TCP event type:
- 00h alarm
- 01h open (successfully opened stream connection)
- 02h receive (data available)
- 03h transmit (ACK received on stream connection)
- 04h transmit flush???
- 05h foreign close (remote host closed data connection)
- 06h close (local host closed connection and protocol is complete)
- 07h error (error code passed to handler as arg)
- (Table 03467)
- Values PC/TCP user event handler is called with:
- BX = network descriptor
- CX = event type (see #03466)
- DS:DX -> arg
- ES:DI = 32-bit hint value
- STACK: small stack, possibly the DOS stack
- --------b-611F-------------------------------
- INT 61 - Atari Portfolio - GET KEY/NMI-INVOKED SCREEN REFRESH
- AH = 1Fh
- AL = function
- 00h get state
- 01h set state
- DH = new refresh-on-NMI state
- (00h disabled, 01h enabled, bit 7 set = don't change)
- DL = new refresh-on-key state
- Return: DH,DL = current/old states
- SeeAlso: AH=00h"Portfolio",AH=1Eh"Portfolio",AH=20h"Portfolio"
- --------N-6120-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "set_option" - SET AN OPTION ON A DESCRIPTOR
- AH = 20h
- BX = network descriptor
- CX = length of buffer (usually 04h)
- DS:DX -> buffer containing option
- SI = (ignored by v2.2-)
- DI = option to set (see #03468)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Notes: Beame&Whiteside's BWPCTCP shim only supports options 01h and 0Bh; all
- others return CF clear
- v2.11 reportedly stores the actual 32-bit value of an option in DS:DX
- rather than using a buffer in memory
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=21h
- (Table 03468)
- Values for PC/TCP option to get or set:
- 01h set non-blocking mode if non-zero
- 02h timeout of call in milliseconds
- 03h user-defined 4-byte magic cookie (not used by kernel)
- 04h TCP window or UDP buffer count (WORD, unsigned)
- 06h do TCP keep-alives if non-zero
- 09h (v2.1+) set IP precedence
- 0Ah (v2.1+) set IP type of service
- 0Bh use a privileged port if port = 0
- 0Ch turn off TCP PUSH bit and don't flush buffer every write (see AH=1Ah)
- Note: use "C" true or false values for boolean options
- --------b-6120-------------------------------
- INT 61 - Atari Portfolio - GET/SET INT 09 REVECTORING
- AH = 20h
- AL = function
- 00h get INT 09 revectoring state
- 01h set state
- DL = new state (00h disable, 01h enable)
- Return: if function 00h
- DL = new state (00h disabled, 01h enabled)
- Desc: specify whether INT 09 is automatically revectored to the BIOS,
- preventing applications from using their own INT 09 handler on the
- incompatible keyboard hardware
- SeeAlso: AH=1Eh"Portfolio",AH=1Fh"Portfolio",AH=24h"Portfolio"
- --------N-6121-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "get_option" - GET OPTIONS APPLIED TO NET DESCR
- AH = 21h
- BX = network descriptor
- CX = length of buffer
- DS:DX -> buffer for return values
- SI = 0004h (ignored by v2.2-)
- DI = option (see #03468)
- Return: CF clear if successful
- DS:DX -> value (usually 32 bits) returned by selected option
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Notes: this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
- v2.11 reportedly stores the actual 32-bit value of an option in DS:DX
- rather than using a buffer in memory
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=20h
- --------N-6122-------------------------------
- INT 61 u - PC/TCP kernel v2.05+ - "net_getdesc" - ALLOCATE NETWORK DESCRIPTOR
- AH = 22h
- Return: CF clear if successful
- AX = network descriptor
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Note: the descriptor will be an integer in the range 00h-1Fh, and a DOS call
- is made to allocate this as a file descriptor. Hence a number may
- not refer to a PC/TCP network descriptor and a DOS file handle
- simultaneously.
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=13h,INT 61/AH=29h
- --------N-6123-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "net_listen" - LISTEN FOR INCOMING CONNECTIONS
- AH = 23h
- BX = network descriptor or FFFFh to allocate descriptor
- DX = type of service
- DS:SI -> "addr" structure (see #03462)
- Return: CF clear if successful
- AX = network descriptor
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Notes: type of service and "addr" structure are as for AH=13h
- any of the address structure can be zero; normally local socket number
- is filled in prior to call
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=13h
- SeeAlso: INT 63/AH=12h"BW-TCP"
- --------N-6124-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "net_abortall" - RESET ALL NETWORK CONNECTIONS
- AH = 24h
- Return: always successful
- Note: performs "net_abort" (AH=19h) on all open non-global descriptors
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=19h
- --------b-6124-------------------------------
- INT 61 - Atari Portfolio - GET/SET ROM/CCM SPACE STATE
- AH = 24h
- AL = function
- 00h get state
- 01h set state
- DL = new ROM state (see #03469)
- DH = new CCM state (see #03470)
- Return: CF clear if successful
- DL = current/old ROM state
- DH = current/old CCM state
- CF set on error (invalid option or other error)
- Desc: control whether memory cards or an extension ROM are visible in the
- range 000C0000h to 000DFFFFh
- SeeAlso: AH=00h"Portfolio",AH=20h"Portfolio",AH=26h"Portfolio"
- (Table 03469)
- Values for Atari Portfolio ROM space state:
- 00h normal application ROM
- 01h CCM drive A:
- 02h CCM drive B:
- 03h expansion ROM
- SeeAlso: #03470
- (Table 03470)
- Values for Atari Portfolio CCM space state:
- 00h CCM drives disabled
- 01h CCM drive A: permanently enabled
- 02h CCM drive B: permanently enabled
- SeeAlso: #03469
- --------N-6125-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "ad_res_name" - GET HOST NAME GIVEN ADDRESS
- AH = 25h
- DX,BX = IP address in network order
- CX = length of buffer for name
- DS:SI -> buffer for host name
- Return: CF clear if successful
- buffer filled with ASCIZ host name
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Note: this function will use the host table and or DNS to resolve the
- address, depending on kernel configuration. Use this call for the
- normal gethostbyaddr function.
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=26h,INT 61/AH=27h
- --------N-6126-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "ad_htable" - GET HOST NAME FROM LOCAL TABLE
- AH = 26h
- DX,BX = IP address in network order
- CX = length of buffer
- DS:SI -> buffer for host name
- Return: CF clear if successful
- buffer filled with ASCIZ host name
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Notes: normally one would use AH=25h instead of this function
- this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=25h,INT 61/AH=27h
- --------b-6126-------------------------------
- INT 61 - Atari Portfolio - GET/SET POWER CONTROL
- AH = 26h
- AL = function
- 00h get state
- 01h set state
- DL = new state
- 00h normal power-down on low battery
- 01h no power-down, but display warning
- 02h no power-down, no warning on low battery
- Return: AL = current/old state
- SeeAlso: AH=00h"Portfolio",AH=24h"Portfolio",AH=28h"Portfolio"
- --------N-6127-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "ad_domain" - GET HOST NAME FROM DNS
- AH = 27h
- DX,BX = IP address in network order
- CX = length of buffer
- DS:SI -> buffer for host name
- Return: CF clear if successful
- buffer filled with ASCIZ host name
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Note: normally one would use AH=25h instead of this function
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=25h,INT 61/AH=26h
- --------N-6128-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "net_swap" - EXCHANGE TWO NETWORK DESCRIPTORS
- AH = 28h
- BX = network descriptor 1
- CX = network descriptor 2
- Return: CF clear if successful
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Note: the two descriptors will exchange places; both must be local or both
- global
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP"
- --------b-6128-------------------------------
- INT 61 - Atari Portfolio - GET/SET TEXT/KEYBOARD LANGUAGE
- AH = 28h
- AL = function
- 00h get languages
- 01h set languages
- DH = new text language (set bit 7 to leave unchanged)
- DL = new keyboard language (set bit 7 to leave unchanged)
- 03h get language table pointers
- Return: if function 00h or 01h:
- DH = current/old text language
- DL = current/old keyboard language
- if function 03h
- ES:CX -> keyboard table (see #03471)
- ES:DX -> language table (see #03471)
- SeeAlso: AH=24h"Portfolio",AH=26h"Portfolio",AH=2Ch"Portfolio"
- Format of Atari Portfolio language table:
- Offset Size Description (Table 03471)
- 00h BYTE number of languages supported
- 01h N BYTEs supported languages
- 00h English
- 01h French
- 02h German
- 03h Spanish
- 04h Italian
- 05h Swedish
- 06h Danish
- --------N-6129-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "net_getglobdesc" - ALLOCATE GLOBAL DESCRIPTOR
- AH = 29h
- Return: CF clear if successful
- AX = network descriptor
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Note: use this function rather than AH=22h to avoid a DOS call by the PC/TCP
- kernel; the returned descriptor will be >= 40h and cannot be used
- with "net_select" (AH=0Eh)
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=07h"PC/TCP"
- SeeAlso: INT 61/AH=22h
- --------N-612A-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - GET CONFIGURATION INFORMATION
- AH = 2Ah
- DS:SI -> 26-byte buffer for configuration information (see #03472)
- Return: CF clear
- AX = 0000h
- buffer filled
- Notes: size of buffer may vary with kernel version; 26 bytes is the size for
- versions 2.05 through 2.2
- this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP"
- Format of PC/TCP configuration information:
- Offset Size Description (Table 03472)
- 00h BYTE maximum TCP connections available
- 01h BYTE maximum UDP connections available
- 02h BYTE maximum IP connections available
- 03h BYTE maximum Raw Net connections available
- 04h BYTE number of TCP connections currently in use
- 05h BYTE number of UDP connections currently in use
- 06h BYTE number of IP connections currently in use
- 07h BYTE number of Raw Net connections currently in use
- 08h WORD number of local network descriptors active
- 0Ah WORD number of global network descriptors active
- 0Ch BYTE maximum header size on network
- 0Dh BYTE maximum trailer size on network
- 0Eh WORD size of large packet buffer
- 10h WORD number of network interfaces attached
- 12h DWORD milliseconds since kernel started
- 16h DWORD IP broadcast address
- --------N-612B-------------------------------
- INT 61 - PC/TCP kernel v2.02+ - "net_alarm" - SET TIMED ASYNCHRONOUS EVENT
- AH = 2Bh
- BX = network descriptor
- CX,DX = time before alarm in milliseconds
- DS:SI -> handler which will receive call (see #03467 at INT 61/AH=1Fh)
- ES:DI = 32-bit cookie passed to handler
- Return: CF clear if successful
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Notes: this function will cause a NET_AS_ALARM to be generated; it is intended
- for TSRs, etc. to regain control periodically
- this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP"
- --------b-612C-------------------------------
- INT 61 - Atari Portfolio - GET VERSION
- AH = 2Ch
- Return: DS:BX -> BIOS version string ('$'-terminated)
- SeeAlso: AH=28h"Portfolio",AH=2Dh"Portfolio"
- --------b-612D-------------------------------
- INT 61 - Atari Portfolio - TURN SYSTEM OFF
- AH = 2Dh
- Return: nothing
- SeeAlso: AH=00h"Portfolio",AH=2Ch"Portfolio",AH=2Eh"Portfolio"
- --------b-612E-------------------------------
- INT 61 - Atari Portfolio - ENABLE/DISABLE SYSTEM STATUS LINE
- AH = 2Eh
- AL = new state
- 00h disabled
- 01h enabled
- DH,DL = row,column at which to display
- Return: nothing
- SeeAlso: AH=00h"Portfolio",AH=2Dh"Portfolio",AH=30h"Portfolio"
- --------N-6130-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "icmp_ping" - SEND ICMP ECHO REQUEST (PING)
- AH = 30h
- BX,DX = IP address of host
- CX = length of data to send
- Return: CF clear if successful (i.e. reply received)
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Note: this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP"
- --------b-6130-------------------------------
- INT 61 - Atari Portfolio - FILE TRANSFER SERVICES
- AH = 30h
- AL = function
- 00h transmit block
- CX = number of bytes to send
- 01h receive block
- CX = buffer size
- 02h open ports
- 03h close ports
- 04h wait 500ms
- DS:DX -> start of data buffer
- Return: DL = status
- 00h successful
- 01h buffer too small
- 02h transmission timeout
- 03h checksum failure
- 04h invalid subfunction
- 05h peripheral not installed
- if function 01h:
- CX = number of bytes received
- SeeAlso: AH=00h"Portfolio",AH=2Eh"Portfolio"
- --------N-61---------------------------------
- INT 61 u - PC/TCP kernel v2.05 - NOP for SLIP kernel
- AH = function
- 31h "net_add_route"
- 32h "net_del_route"
- 33h "net_dump_routes"
- Notes: these functions are described as "unused" in the v2.2 documentation
- router configuration can be altered using INT 61/AH=01h
- this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
- --------N-6132-------------------------------
- INT 61 U - PC/TCP kernel v2.3 - GET ???
- AH = 32h
- Return: AX = ???
- Note: this function is fully re-entrant, and may be called even when another
- PC/TCP kernel call is already in progress
- --------N-6134-------------------------------
- INT 61 U - PC/TCP kernel v2.1+ - "icmp_destun" - ???
- AH = 34h
- ???
- Return: ???
- Notes: this function is described as "reserved" in the v2.2 documentation
- this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
- --------N-6150-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "nm_prs_addr" - TRANSLATE NUMERICAL IP ADDRESS
- AH = 50h
- DS:DX -> ASCIZ IP address as "dotted quad" (max 127 chars)
- Return: CF clear if successful
- DX:AX -> IP address
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Range: INT 20 to INT E0, selected by configuration
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
- --------N-6151-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "nm_htable" - RESOLVE NAME USING HOST TABLE
- AH = 51h
- CX = size of destination buffer
- DS:DX -> ASCIZ host name (max 127 chars)
- ES:DI -> destination buffer or 0000h:0000h
- Return: CF clear if successful
- DX:AX -> IP address of host
- destination buffer filled with canonical host name
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Note: this function calls DOS, and can fail if the DOS call fails
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
- --------N-6152-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "nm_domain" - RESOLVE NAME USING DNS
- AH = 52h
- CX = size of destination buffer
- DS:DX -> ASCIZ host name (max 127 chars)
- ES:DI -> destination buffer or 0000h:0000h
- Return: CF clear if successful
- DX:AX -> IP address of host
- destination buffer filled with canonical host name
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Note: this function will poll all configured domain name servers if necessary
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
- --------N-6153-------------------------------
- INT 61 - PC/TCP kernel v2.05- - "nm_ien116" - RESOLVE HOST NAME USING IEN116
- AH = 53h
- DS:DX -> ASCIZ name to be resolved (max 127 chars)
- Return: CF clear if successful
- DX:AX -> IP address of host
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Range: INT 20 to INT E0, selected by configuration
- Note: this function is not supported by v2.10+
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
- --------N-6154-------------------------------
- INT 61 - PC/TCP kernel v2.05+ - "nm_res_name" - RESOLVE HOST NAME
- AH = 54h
- CX = size of destination buffer
- DS:DX -> ASCIZ host name (max 127 chars)
- ES:DI -> destination buffer or 0000h:0000h
- Return: CF clear if successful
- DX:AX -> IP address of host
- destination buffer filled with canonical host name
- CF set on error
- AX = error code (see #03319 at INT 61"FTP Software")
- Note: this function uses all configured methods in turn to resolve the
- name (numerical, then host table, then DNS, then IEN116)
- BUG: the SLIP kernel for v2.05 bounds-checks the wrong register, so values
- greater than 54h in AH may crash the system. Other kernels may have
- this bug as well; it has been fixed in the v2.2 SLIPDRV kernel.
- SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=50h,INT 61/AH=51h
- SeeAlso: INT 61/AH=52h,INT 61/AH=53h
- --------N-6155-------------------------------
- INT 61 U - PC/TCP kernel v2.3 - ???
- AH = 55h
- ???
- Return: ???
- SeeAlso: INT 61"FTP Software"
- --------N-6156-------------------------------
- INT 61 U - PC/TCP kernel v2.3 - ???
- AH = 56h
- ???
- Return: ???
- SeeAlso: INT 61"FTP Software"
- --------N-6157-------------------------------
- INT 61 U - PC/TCP kernel v2.3 - ???
- AH = 57h
- ???
- Return: ???
- SeeAlso: INT 61"FTP Software"
- --------N-6158-------------------------------
- INT 61 U - PC/TCP kernel v2.3 - ???
- AH = 58h
- ???
- Return: ???
- SeeAlso: INT 61"FTP Software"
- --------N-6159-------------------------------
- INT 61 U - PC/TCP kernel v2.3 - ???
- AH = 59h
- ???
- Return: ???
- SeeAlso: INT 61"FTP Software"
- --------N-615A-------------------------------
- INT 61 U - PC/TCP kernel v2.3 - ???
- AH = 5Ah
- ???
- Return: ???
- SeeAlso: INT 61"FTP Software"
- --------N-615B-------------------------------
- INT 61 U - PC/TCP kernel v2.3 - ???
- AH = 5Bh
- ???
- Return: ???
- SeeAlso: INT 61"FTP Software"
- --------N-615C-------------------------------
- INT 61 U - PC/TCP kernel v2.3 - ???
- AH = 5Ch
- ???
- Return: ???
- SeeAlso: INT 61"FTP Software"
- --------N-615D-------------------------------
- INT 61 U - PC/TCP kernel v2.3 - ???
- AH = 5Dh
- ???
- Return: ???
- SeeAlso: INT 61"FTP Software"
- --------N-615E-------------------------------
- INT 61 U - PC/TCP kernel v2.3 - ???
- AH = 5Eh
- ???
- Return: ???
- SeeAlso: INT 61"FTP Software"
- --------N-615F-------------------------------
- INT 61 U - PC/TCP kernel v2.3 - ???
- AH = 5Fh
- ???
- Return: ???
- SeeAlso: INT 61"FTP Software"
- --------!---Section--------------------------
- Interrupt List, part 16 of 18
- Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
- --------*-62---------------------------------
- INT 62 - reserved for user interrupt
- --------d-62---------------------------------
- INT 62 - Adaptec and OMTI controllers - DRIVE 0 DATA
- Notes: this vector stores the third four bytes of the parameter table for
- hard disk 0
- SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 63"Adaptec"
- --------b-62---------------------------------
- INT 62 - TI Professional PC - OPTION ROM DATA AREA POINTER (NOT A VECTOR!)
- Desc: the low word of this vector contains the segment of the RAM data area
- to be used by the expansion ROM at F400h:2000h, and the high word
- contains the length of the data area; this segment and size are
- both set to 0000h if no ROM is installed at F400h:2000h
- SeeAlso: INT 61"TI Professional PC",INT 63"TI Professional"
- SeeAlso: INT 66"TI Professional PC"
- --------b-62---------------------------------
- INT 62 - HP 95LX - USED BY CALCULATOR
- SeeAlso: INT 60/DI=0104h"HP 95LX"
- ----------62---------------------------------
- INT 62 - MS SQL Server/Sybase DBLIBRARY interface - ???
- AH = function (00h to 07h)
- CX = FFFEh
- DX = FFFFh
- ???
- Return: ???
- InstallCheck: test for the string "DBLIBRARY" two bytes past the interrupt
- handler
- SeeAlso: AH=08h"SQL"
- Index: installation check;MS SQL Server|installation check;Sybase DBLIBRARY
- ----------62---------------------------------
- INT 62 - MPAUSE - ???
- details not yet avialable
- Program: MPAUSE is a program by Manfred Michael which appeared in the German
- _EGA-Handbuch_ from m&t-Verlag
- --------N-62---------------------------------
- INT 62 - XFS v1.76 - FILTERED PACKET DRIVER API
- Program: XFS is a shareware Network File System client by Robert Juhasz
- Desc: XFS requires a packet driver to operate. Since it does redirections,
- etc., it provides its own packet driver entry point, changing the
- signature string of the original packet driver to "XKT DRVR" so that
- it will no longer be found by the packet driver installation check
- InstallCheck: scan for the signature string "PKT DRVR" three bytes past the
- interrupt handler (the same as that for the packet driver
- specification)
- Range: INT 61 to INT 66, selected by scanning for two consecutive free
- vectors and hooking the second
- SeeAlso: INT 60"Packet Driver Specification",INT 61"XFS"
- ----------62---------------------------------
- INT 62 - PC-DRAFT - PRIMARY DISPLAY DRIVER
- ???
- Return: ???
- Program: PC-DRAFT is a powerful CAD environment by rhv.
- SeeAlso: INT 64"PC-DRAFT",INT 65"PC-DRAFT",INT 66"PC-DRAFT",INT 67"PC-DRAFT"
- --------N-6200-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET PHYSICAL HARDWARE ADDRESS
- AH = 00h
- DS:DX -> 6-byte buffer for address
- Return: AX = length of hardware address???
- Range: INT 4C to INT FB, selected by configuration
- Note: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
- interrupts (62h and 63h by default); the BW-NFS client uses a third
- consecutive interrupt (64h by default) if it is loaded
- SeeAlso: AH=01h"ETHDEV",AH=04h"ETHDEV",AH=09h"ETHDEV",AH=0Eh"ETHDEV"
- SeeAlso: AH=14h"ETHDEV",AH=18h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
- SeeAlso: INT 63/AH=03h"BW-TCP",INT 63/AH=24h"BW-TCP",INT 64/AH=01h"BW-NFS"
- --------V-620000-----------------------------
- INT 62 u - FGDRIVER v3.03+ - "FG_ALLOCATE" - CREATE VIRTUAL VIDEO PAGE
- AX = 0000h
- BX = page number (0000h-003Fh)
- Return: AX = status (0000h,0001h,0007h,0008h) (see #03473)
- Program: FGDRIVER is the external video driver for the shareware
- Fastgraph/Light by Ted Gruber Software
- InstallCheck: test for the signature "FG" ten bytes beyond the start of the
- interrupt handler
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- The amount of memory required by the virtual video page depends on the
- current video mode
- SeeAlso: AX=0001h,AX=0002h,AX=0003h,AX=0038h
- Index: installation check;Fastgraph/Light
- (Table 03473)
- Values for FGDRIVER status:
- 0000h successful
- 0001h specified page is a physical or logical page
- 0007h virtual page created/released, but memory control blocks corrupted
- 0008h not enough memory
- 0009h attempt to free a page which was never created
- FFFCh insufficient memory
- FFFDh page already created, or exists as physical or virtual page
- FFFEh invalid page number
- FFFFh memory manager not initialized
- SeeAlso: #03474
- (Table 03474)
- Values for FGDRIVER functions (by driver version):
- Name v1.10 v3.03 v4.02
- FG_ALLOCATE 0042h 0000h 0000h
- FG_ALLOCCMS 009Dh 0001h 0001h
- FG_ALLOCEMS 009Eh 0002h 0002h
- FG_ALLOCXMS 009Fh 0003h 0003h
- FG_AUTOMODE 0004h 0004h 0004h
- FG_BESTMODE 0003h 0005h 0005h
- FG_BOX 00A2h 0006h 0006h
- FG_BOXDEPTH 00A3h 0007h 0007h
- FG_BOXX -- 0008h 0008h
- FG_BUTTON 0078h 0009h 0009h
- FG_CAPSLOCK 0070h 000Ah 000Ah
- FG_CHGATTR 0035h 000Bh 000Bh
- FG_CHGTEXT 0036h 000Ch 000Ch
- FG_CIRCLE 0030h 000Dh 000Dh
- FG_CIRCLEF -- 000Eh 000Eh
- FG_CLIPMAP -- -- 000Fh
- FG_CLIPMASK 0052h 000Fh 0010h
- FG_CLPIMAGE 004Ah 0010h 0011h
- FG_CLPRECT 002Bh 0011h 0012h
- FG_COLORS -- -- 0013h
- FG_COPYPAGE 005Fh 0012h 0014h
- FG_CURSOR 0007h 0013h 0015h
- FG_DASH 0027h 0014h 0016h
- FG_DASHREL 0028h 0015h 0017h
- FG_DEFCOLOR 0014h 0016h 0018h
- FG_DEFPAGES -- 0017h 0019h
- FG_DISPFILE 004Fh 0018h 001Ah
- FG_DISPLAY 004Dh 0019h 001Bh
- FG_DISPLAYP 004Eh 001Ah 001Ch
- FG_DISPPCX 0060h -- --
- FG_DRAW 0025h 001Bh 001Dh
- FG_DRAWMAP 0047h 001Ch 001Eh
- FG_DRAWMASK 0051h 001Dh 001Fh
- FG_DRAWREL 0026h 001Eh 0020h
- FG_DRAWRELX -- 001Fh 0021h
- FG_DRAWX -- 0020h 0022h
- FG_DRECT 002Ch 0021h 0023h
- FG_DRWIMAGE 0049h 0022h 0024h
- FG_EGACHECK 0005h 0023h 0025h
- FG_ELLIPSE 002Dh 0024h 0026h
- FG_ELLIPSEF -- 0025h 0027h
- FG_ERASE 001Eh 0026h 0028h
- FG_FADEIN 0064h 0027h 0029h
- FG_FADEOUT 0065h 0028h 002Ah
- FG_FILLPAGE -- 0029h 002Bh
- FG_FINDPAGE -- -- 002Ch
- FG_FLICDONE -- -- 002Dh
- FG_FLICHEAD -- -- 002Eh
- FG_FLICMODE -- -- 002Fh
- FG_FLICOPEN -- -- 0030h
- FG_FLICPLAY -- -- 0031h
- FG_FLICSIZE -- -- 0032h
- FG_FLICSKIP -- -- 0033h
- FG_FLIPMASK 0054h 002Ah 0034h
- FG_FLOOD -- 002Bh 0035h
- FG_FLPIMAGE 004Ch 002Ch 0036h
- FG_FONTSIZE -- 002Dh 0037h
- FG_FREEPAGE 0043h 002Eh 0038h
- FG_GETADDR 0044h 002Fh 0039h
- FG_GETATTR 0037h 0030h 003Ah
- FG_GETBANKS -- -- 003Bh
- FG_GETBLOCK -- 0031h 003Ch
- FG_GETCHAR 0038h 0032h 003Dh
- FG_GETCLIP -- -- 003Eh
- FG_GETCLOCK 0099h 0033h 003Fh
- FG_GETCOLOR 0015h 0034h 0040h
- FG_GETDACS 00A4h 0035h 0041h
- FG_GETENTRY -- 0036h 0042h
- FG_GETHPAGE 0040h 0037h 0043h
- FG_GETIMAGE 0048h 0038h 0044h
- FG_GETINDEX 0016h 0039h 0045h
- FG_GETKEY 006Eh 003Ah 0046h
- FG_GETLINES 0010h 003Bh 0047h
- FG_GETMAP 0046h 003Ch 0048h
- FG_GETMAXX 000Ah 003Dh 0049h
- FG_GETMAXY 000Bh 003Eh 004Ah
- FG_GETMODE 0000h 003Fh 004Bh
- FG_GETPAGE 003Ch 0040h 004Ch
- FG_GETPIXEL 0020h 0041h 004Dh
- FG_GETRGB 001Ch 0042h 004Eh
- FG_GETVIEW -- -- 004Fh
- FG_GETVPAGE 003Eh 0043h 0050h
- FG_GETXBOX -- -- 0051h
- FG_GETXJOY 0076h 0044h 0052h
- FG_GETXJUST -- -- 0053h
- FG_GETXPOS 0021h 0045h 0054h
- FG_GETYBOX -- -- 0055h
- FG_GETYJOY 0077h 0046h 0056h
- FG_GETYJUST -- -- 0057h
- FG_GETYPOS 0022h 0047h 0058h
- FG_HUSH 008Eh 0048h 0059h
- FG_HUSHNEXT 008Fh 0049h 005Ah
- FG_IMAGEBUF -- 004Ah 005Bh
- FG_IMAGESIZ 0062h 004Bh 005Ch
- FG_INITEMS 00A0h 004Ch 005Dh
- FG_INITJOY 0075h 004Dh 005Eh
- FG_INITPM -- -- 005Fh??? (NOP in v4.02)
- FG_INITXMS 00A1h 004Eh 0060h
- FG_INSIDE -- 004Fh 0061h
- FG_INTJOY 0079h 0050h 0062h
- FG_INTKEY 006Fh 0051h 0063h
- FG_INVERT -- -- 0064h
- FG_JUSTIFY -- 0052h 0065h
- FG_KBINIT -- 0053h 0066h
- FG_KBLAST -- -- 0067h
- FG_KBRESET -- -- 0068h
- FG_KBTEST -- 0054h 0069h
- FG_LOADPCX -- -- 006Ah
- FG_LOCATE 0033h 0055h 006Bh
- FG_MAKEPCX 0061h 0057h 006Ch
- FG_MAKEPPR -- 0058h 006Dh
- FG_MAKESPR -- 0059h 006Eh
- FG_MAPRGB 001Dh 005Ah 006Fh
- FG_MEASURE 0098h 005Bh 0070h
- FG_MEMAVAIL 009Bh 005Ch 0071h
- FG_MEMORY -- 005Dh 0072h
- FG_MOUSE256 -- -- 0073h
- FG_MOUSEBUT 007Ch 005Eh 0074h
- FG_MOUSECUR 007Eh 005Fh 0075h
- FG_MOUSEFIN -- 0060h 0076h
- FG_MOUSEINI 007Ah 0061h 0077h
- FG_MOUSELIM 0080h 0062h 0078h
- FG_MOUSEMOV 0081h 0063h 0079h
- FG_MOUSEPOS 007Dh 0064h 007Ah
- FG_MOUSEPTR 007Fh 0065h 007Bh
- FG_MOUSESPD 0082h 0066h 007Ch
- FG_MOUSEVIS 007Bh 0067h 007Dh
- FG_MOVE 0023h 0068h 007Eh
- FG_MOVEREL 0024h 0069h 007Fh
- FG_MUSIC 008Ch 006Ah 0080h
- FG_MUSICB 008Dh 006Bh 0081h
- FG_NUMLOCK 0072h 006Ch 0082h
- FG_PACK -- -- 0083h
- FG_PAGESIZE -- 006Dh 0084h
- FG_PAINT 002Fh 006Eh 0085h
- FG_PALETTE 0017h 006Fh 0086h
- FG_PALETTES 0018h 0070h 0087h
- FG_PAN 0066h 0071h 0088h
- FG_PATTERN 0050h 0072h 0089h
- FG_PCXHEAD -- 0073h 008Ah
- FG_PCXMODE -- 0074h 008Bh
- FG_PCXPAL -- -- 008Ch
- FG_PCXRANGE -- -- 008Dh
- FG_PLAYING 0091h 0075h 008Eh
- FG_POINT 001Fh 0076h 008Fh
- FG_POINTX -- 0077h 0090h
- FG_POLYEDGE -- -- 0091h
- FG_POLYFILL -- 0078h 0092h
- FG_POLYGON 002Eh 0079h 0093h
- FG_POLYLINE -- 007Ah 0094h
- FG_POLYOFF -- 007Bh 0095h
- FG_PRINT -- 007Ch 0096h
- FG_PRINTC -- -- 0097h
- FG_PUTBLOCK -- 007Dh 0098h
- FG_PUTIMAGE -- 007Eh 0099h
- FG_QUIET 0090h 007Fh 009Ah
- FG_RECT 002Ah 0080h 009Bh
- FG_RESET 0006h 0081h 009Ch
- FG_RESIZE 0045h 0082h 009Dh
- FG_RESTORE 005Bh 0083h 009Eh
- FG_RESUME 0092h 0084h 009Fh
- FG_REVIMAGE 004Bh 0085h 00A0h
- FG_REVMASK 0053h 0086h 00A1h
- FG_SAVE -- 0087h 00A2h
- FG_SCALE -- -- 00A3h
- FG_SCRLOCK 0074h 0088h 00A4h
- FG_SCROLL 0067h 0089h 00A5h
- FG_SETATTR 0019h 008Ah 00A6h
- FG_SETBANKS -- -- 00A7h
- FG_SETCAPS 0071h 008Bh 00A8h
- FG_SETCLIP 0029h 008Ch 00A9h
- FG_SETCOLOR 001Ah 008Dh 00AAh
- FG_SETDACS 00A5h 008Eh 00ABh
- FG_SETENTRY -- 008Fh 00ACh
- FG_SETFUNC 009Ch 0090h 00ADh
- FG_SETHPAGE 0041h 0091h 00AEh
- FG_SETLINES 0011h 0092h 00AFh
- FG_SETMODE 0001h 0093h 00B0h
- FG_SETNUM 0073h 0094h 00B1h
- FG_SETPAGE 003Dh 0095h 00B2h
- FG_SETRGB 001Bh 0096h 00B3h
- FG_SETVIEW -- -- 00B5h
- FG_SETVPAGE 003Fh 0098h 00B6h
- FG_SHEAR -- -- 00B7h
- FG_SHOWFLIC -- -- 00B8h
- FG_SHOWPCX -- 009Ah 00B9h
- FG_SHOWPPR -- 009Bh 00BAh
- FG_SHOWSPR -- 009Ch 00BBh
- FG_SOUND 0088h 009Dh 00BCh
- FG_SOUNDS 0089h 009Eh 00BDh
- FG_SPLIT -- -- 00BEh
- FG_STALL 0097h 009Fh 00BFh
- FG_SUSPEND 0093h 00A0h 00C0h
- FG_SVGAINIT -- 00A1h 00C1h
- FG_SVGASTAT -- 00A2h 00C2h
- FG_SVGAVER -- 00A3h 00C3h
- FG_TCDEFINE -- 00A4h 00C4h
- FG_TCMASK 005Eh 00A5h 00C5h
- FG_TCXFER 005Dh 00A6h 00C6h
- FG_TESTMODE 0002h 00A7h 00C7h
- FG_TEXT 0032h 00A8h 00C8h
- FG_TEXTC -- -- 00C9h
- FG_TRANSFER 005Ch 00A9h 00CAh
- FG_UNPACK -- -- 00CBh
- FG_VBADDR -- -- 00CCh
- FG_VBALLOC -- -- 00CDh
- FG_VBCLOSE -- -- 00CEh
- FG_VBCOPY -- -- 00CFh
- FG_VBCUT -- -- 00D0h
- FG_VBDEFINE -- -- 00D1h
- FG_VBFREE -- -- 00D2h
- FG_VBHANDLE -- -- 00D3h
- FG_VBINIT -- -- 00D4h
- FG_VBOPEN -- -- 00D5h
- FG_VBPASTE -- -- 00D6h
- FG_VBTCCOPY -- -- 00D7h
- FG_VBTCXFER -- -- 00D8h
- FG_VBUNDEF -- -- 00D9h
- FG_VGASTATE -- -- 00DAh
- FG_VOICE 008Ah 00AAh 00DBh
- FG_VOICES 008Bh 00ABh 00DCh
- FG_WAITFOR 0096h 00ACh 00DDh
- FG_WAITKEY 006Dh 00ADh 00DEh
- FG_WAITVR -- 00AEh 00DFh
- FG_WHERE 0034h 00AFh 00E0h
- FG_XALPHA 000Ch 00B0h 00E1h
- FG_XCONVERT 000Eh 00B1h 00E2h
- FG_XVIEW -- -- 00E3h
- FG_YALPHA 000Dh 00B2h 00E4h
- FG_YCONVERT 000Fh 00B3h 00E5h
- FG_YVIEW -- -- 00E6h
- SeeAlso: #03473
- --------V-620001-----------------------------
- INT 62 u - FGDRIVER v3.03+ - "FG_ALLOCCMS" - CREATE LOGICAL VIDEO PAGE (CONV)
- AX = 0001h
- BX = page number (0001h-003Fh)
- Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #03473)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- The only operation which is allowed on logical pages is "FG_COPYPAGE"
- (see AX=0014h)
- SeeAlso: AX=0000h,AX=0002h,AX=0003h,AX=0014h,AX=0038h
- --------V-620002-----------------------------
- INT 62 u - FGDRIVER v3.03+ - "FG_ALLOCEMS" - CREATE LOGICAL VIDEO PAGE (EMS)
- AX = 0002h
- BX = page number (0001h-003Fh)
- Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #03473)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- You must first call "FG_INITEMS" (see AX=005Dh) before using this
- function
- The only operation which is allowed on logical pages is "FG_COPYPAGE"
- (see AX=0014h)
- SeeAlso: AX=0000h,AX=0001h,AX=0003h,AX=0014h,AX=0038h,AX=005Dh
- --------V-620003-----------------------------
- INT 62 u - FGDRIVER v3.03+ - "FG_ALLOCXMS" - CREATE LOGICAL VIDEO PAGE (XMS)
- AX = 0003h
- BX = page number (0001h-003Fh)
- Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #03473)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- You must first call "FG_INITXMS" (see AX=0060h) before using this
- function
- The only operation which is allowed on logical pages is "FG_COPYPAGE"
- (see AX=0014h)
- SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=0014h,AX=0038h,AX=0060h
- --------V-620004-----------------------------
- INT 62 u - FGDRIVER 1.10,3.03+ - "FG_AUTOMODE" - GET VIDEO MODE W/MOST FEATURES
- AX = 0004h
- Return: AX = proposed video mode number (see #03500 at AX=00B0h)
- Program: FGDRIVER is the external video driver for the shareware
- Fastgraph/Light by Ted Gruber Software
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- SeeAlso: AX=0005h,AX=004Bh,AX=00B0h,AX=00C1h,AX=00C7h
- --------V-620005-----------------------------
- INT 62 u - FGDRIVER v3.03+ - "FG_BESTMODE" - GET BEST VIDEO MODE GIVEN RESOLUTN
- AX = 0005h
- BX = horizontal resolution
- CX = vertical resolution
- DX = number of video pages required (both physical and virtual)
- Return: AX = proposed video mode number or FFFFh if no matching video mode
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- You must first call "FG_SVGAINIT" (see AX=00C1h) to get SVGA video
- modes
- SeeAlso: AX=0004h,AX=004Bh,AX=00B0h,AX=00C1h,AX=00C7h
- --------V-620006-----------------------------
- INT 62 u - FGDRIVER v3.03+ - "FG_BOX" - DRAW UNFILLED RECTANGLE
- AX = 0006h
- BX = left column
- CX = right column
- DX = top row
- SI = bottom row
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- The rectangle is drawn in screen space, respecting the clipping region,
- with edges of the width specified with "FG_BOXDEPTH" (see AX=0007h)
- (default = 1 is set by "FG_SETMODE")
- This function has no effect in text modes
- SeeAlso: AX=0007h,AX=0008h,AX=000Ch,AX=0016h,AX=001Dh,AX=0026h,AX=0051h
- SeeAlso: AX=0055h,AX=008Fh
- --------V-620007-----------------------------
- INT 62 u - FGDRIVER v3.03+ - "FG_BOXDEPTH" - SET RECTANGLE BORDER WIDTH
- AX = 0007h
- BX = width of left and right edges in pixels (> 0)
- CX = width of top and bottom edges in pixels (> 0)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- SeeAlso: AX=0006h,AX=0008h,AX=0051h,AX=0055h
- --------V-620008-----------------------------
- INT 62 u - FGDRIVER v3.03+ - "FG_BOXX" - XOR HOLLOW RECTANGLE
- AX = 0008h
- BX = left column
- CX = right column
- DX = top row
- SI = bottom row
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- The rectangle is XORed into screen space, respecting the clipping
- region, with edges of the width specified with "FG_BOXDEPTH"
- (see AX=0007h) (default = 1 is set by "FG_SETMODE")
- This function has no effect in text modes
- SeeAlso: AX=0006h,AX=0007h,AX=0021h,AX=0022h,AX=0051h,AX=0055h,AX=0090h
- --------V-620009-----------------------------
- INT 62 u - FGDRIVER v3.03+ - "FG_BUTTON" - GET JOYSTICK BUTTON STATE
- AX = 0009h
- BX = joystick number (0001h or 0002h)
- Return: AX = button states
- bit 0: top button pressed
- bit 1: bottom button pressed
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- SeeAlso: AX=0052h,AX=0056h,AX=005Eh,AX=0062h,AX=0077h
- --------V-62000A-----------------------------
- INT 62 u - FGDRIVER v3.03+ - "FG_CAPSLOCK" - GET STATE OF CAPSLOCK KEY
- AX = 000Ah
- Return: AX = CapsLock state (0000h off, 0001h on)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- SeeAlso: AX=0082h,AX=00A4h,AX=00A8h,AX=00B1h
- --------V-62000B-----------------------------
- INT 62 u - FGDRIVER v3.03+ - "FG_CHGATTR" - APPLY CURRENT TEXT ATTRIB TO CHARS
- AX = 000Bh
- BX = number of characters to recolor
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- This call is ignored in graphics modes
- Starting at the current text cursor position, the specified number of
- characters have their attributes to the current text attribute
- SeeAlso: AX=000Ch,AX=003Ah,AX=00A6h
- --------V-62000C-----------------------------
- INT 62 u - FGDRIVER v3.03+ - "FG_CHGTEXT" - DISPLAY STRING AT CURSOR POSITION
- AX = 000Ch
- CX = length of string
- ES:BX -> string to be displayed
- Return: text cursor updated
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- This call is ignored in graphics modes
- SeeAlso: AX=000Bh,AX=0096h
- --------V-62000D-----------------------------
- INT 62 u - FGDRIVER v3.03+ - "FG_CIRCLE" - DRAW UNFILLED CIRCLE
- AX = 000Dh
- BX = radius in horizontal screen space units (> 0)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- The circle is drawn in screen space, centered at the current graphics
- cursor position
- This call is ignored in text modes
- SeeAlso: AX=0006h,AX=0008h,AX=000Eh,AX=0026h,AX=0093h
- --------V-62000E-----------------------------
- INT 62 u - FGDRIVER v3.03+ - "FG_CIRCLEF" - DRAW FILLED CIRCLE
- AX = 000Eh
- BX = radius in horizontal screen space units (> 0)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- SeeAlso: AX=0008h,AX=000Dh,AX=0027h,AX=0092h
- --------V-62000F-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_CLIPMAP" - DISPLAY CLIPPED IMAGE (MODE-INDEP)
- AX = 000Fh
- ES:BX -> bitmap
- CX = width
- DX = height
- Desc: display a mode-independent bitmap, showing only the portion within
- the current clipping limits
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- This call is ignored in text modes and in native EGA and VGA graphics
- modes
- The image is drawn with its lower left corner at the current graphics
- cursor position
- SeeAlso: AX=0011h,AX=001Fh,AX=0034h,AX=0086h,AX=00A9h,AX=00C5h
- --------V-620010-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_CLIPMASK" - DISPLAY CLIPPED IMAGE (MASKING MAP)
- AX = 0010h
- ES:BX -> array containing image stored as a masking map (see #03475)
- CX = number of pixel runs in masking map
- DX = width of masking map in pixels
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- This call is ignored in text modes and in native EGA and VGA graphics
- modes
- The image is drawn with its lower left corner at the current graphics
- cursor position
- SeeAlso: AX=0011h,AX=001Fh,AX=0034h,AX=00A1h,AX=00A9h,AX=00C5h
- --------V-620011-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_CLPIMAGE" - DISPLAY CLIPPED IMAGE (BITMAP)
- AX = 0011h
- ES:BX -> mode-specific bitmap
- CX = width of bit map in bytes
- DX = height of bit map in pixel rows
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- This call is ignored in text modes
- The image is drawn with its lower left corner at the current graphics
- cursor position
- The current clipping region is used, extended to a byte boundary
- SeeAlso: AX=0010h,AX=0024h,AX=0036h,AX=0044h,AX=00A0h,AX=00A9h,AX=00B9h
- --------V-620012-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_CLPRECT" - DRAW FILLED RECTANGLE IN SCREEN SPCE
- AX = 0012h
- BX = screen space column of left edge
- CX = screen space column of right edge
- DX = screen space row of top edge
- SI = screen space row of bottom edge
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- This call is ignored in text modes
- SeeAlso: AX=0006h,AX=0010h,AX=0011h,AX=0023h,AX=009Bh,AX=00A9h
- --------V-620013-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_COLORS" - GET SIMULTANEOUSLY-AVAILABLE COLORS
- AX = 0013h
- Return: AX = number of colors available at one time
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- --------V-620014-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_COPYPAGE" - TRANSFER VIDEO PAGE CONTENTS
- AX = 0014h
- BX = source page number (0000h-003Fh)
- CX = destination page number (0000h-003Fh)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- If both source and destination pages are logical pages, they must both
- be located in the same type (conventional, EMS, XMS) of memory
- SeeAlso: AX=009Eh,AX=00A2h,AX=00C6h,AX=00CAh
- --------V-620015-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_CURSOR" - SPECIFY WHETHER TEXT CURSR IS VISIBLE
- AX = 0015h
- BX = new state (0000h invisible, 0001h visible)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- This call is ignored in text modes
- SeeAlso: AX=000Ch,AX=0054h,AX=0058h,AX=006Bh,AX=0075h,AX=0079h,AX=007Eh
- SeeAlso: AX=00E0h
- --------V-620016-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_DASH" - DRAW DASHED LINE TO ABSOLUTE POSITION
- AX = 0016h
- BX = endpoint column
- CX = endpoint row
- DX = dash pattern (set bits cause drawn pixels)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- This call is ignored in text modes
- The starting point is the current graphics cursor position; the cursor
- position is updated
- SeeAlso: AX=0017h,AX=001Dh,AX=008Fh
- --------V-620017-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_DASHREL" - DRAW DASHED LINE TO RELATVE POSITION
- AX = 0017h
- BX = endpoint column offset
- CX = endpoint row offset
- DX = dash pattern (set bits cause drawn pixels)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- This call is ignored in text modes
- The starting point is the current graphics cursor position; the cursor
- position is updated
- SeeAlso: AX=0016h,AX=001Eh,AX=008Fh
- --------V-620018-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_DEFCOLOR" - ASSIGN COLOR VALUE TO COLOR INDEX
- AX = 0018h
- BX = color index (0000h-00FFh)
- CX = new color value (0 to maximum color value for current video mode)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- This call is ignored in text modes and 256-color graphics modes
- SeeAlso: AX=0040h,AX=0045h,AX=00AAh
- --------V-620019-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_DEFPAGES" - DEF SRC/DEST PAGES FOR BLOCK XFERS
- AX = 0019h
- BX = source page
- CX = destination page
- Desc: specify the source and destination SVGA banks for block transfers on
- extended video pages
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- This function is ignored if the video controller does not support
- extended pages or the current video mode does not allow them
- SeeAlso: AX=0014h,AX=00CAh
- --------V-62001A-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_DISPFILE" - DISPLAY STORED IMAGE
- AX = 001Ah
- ES:BX -> ASCIZ filename
- CX = image width in pixels (> 0)
- DX = image format
- 0000h Fastgraph standard pixel run format
- 0001h packed pixel run format
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- This call is ignored in text modes
- The image is displayed with its lower left corner at the current
- graphics cursor position
- SeeAlso: AX=001Bh,AX=001Ch,AX=00B9h,AX=00BAh,AX=00BBh
- --------V-62001B-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_DISPLAY" - DISPLAY IMAGE (STD PIXEL RUN FORMAT)
- AX = 001Bh
- ES:BX -> pixel run map (pairs of bytes: color index, count)
- CX = number of pixel runs to display
- DX = width of image in pixels (> 0)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- This call is ignored in text modes
- The image is displayed with its lower left corner at the current
- graphics cursor position
- SeeAlso: AX=001Ah,AX=001Ch,AX=00B9h,AX=00BAh,AX=00BBh
- --------V-62001C-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_DISPLAYP" - DISPLAY IMAGE (PACKED PIXEL RUNS)
- AX = 001Ch
- ES:BX -> pixel run map (trios of bytes: colors, count1, count2; colors
- contains the color for the first run in its high nybble and
- the color for the second run in its low nybble)
- CX = number of pixel runs to display
- DX = width of image in pixels (> 0)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- This call is ignored in text modes
- The image is displayed with its lower left corner at the current
- graphics cursor position
- SeeAlso: AX=001Ah,AX=001Bh,AX=00B9h,AX=00BAh,AX=00BBh
- --------V-62001D-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_DRAW" - DRAW SOLID LINE TO ABSOLUTE POSITION
- AX = 001Dh
- BX = endpoint column
- CX = endpoint row
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- This call is ignored in text modes
- The starting point is the current graphics cursor position; the cursor
- position is updated
- SeeAlso: AX=0016h,AX=0020h,AX=0021h,AX=0026h,AX=008Fh,AX=0090h
- --------V-62001E-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_DRAWMAP" - DISPLAY MODE-INDEPENDENT BIT MAP
- AX = 001Eh
- ES:BX -> bitmap (each set bit is pixel drawn in current color)
- CX = width of bitmap in bytes
- DX = height of bitmap in pixel rows
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- SeeAlso: AX=0011h,AX=0024h,AX=0036h,AX=0044h,AX=0099h,AX=00A0h
- --------V-62001F-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_DRAWMASK" - DISPLAY IMAGE (MASKING MAP)
- AX = 001Fh
- ES:BX -> array containing image stored as a masking map (see #03475)
- CX = number of pixel runs in masking map
- DX = width of masking map in pixels
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- This call is ignored in text modes and in native EGA and VGA graphics
- modes
- The image is drawn with its lower left corner at the current graphics
- cursor position
- SeeAlso: AX=0010h,AX=001Fh,AX=00A1h,AX=00A9h
- Format of FGDRIVER masking map:
- Offset Size Description (Table 03475)
- 00h BYTE length of first "protect" run (pixels remain unchanged)
- 01h BYTE length of first "zero" run (pixels set to background color)
- 02h BYTE length of second "protect" run
- 03h BYTE length of second "zero" run
- ...
- --------V-620020-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_DRAWREL" - DRAW SOLID LINE TO RELATIVE POSITION
- AX = 0020h
- BX = endpoint column offset
- CX = endpoint row offset
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in text modes
- The starting point is the current graphics cursor position; the cursor
- position is updated
- SeeAlso: AX=0006h,AX=000Dh,AX=001Dh,AX=0021h,AX=0026h,AX=008Fh
- --------V-620021-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_DRAWRELX" - XOR SOLID LINE TO RELATIVE POSITION
- AX = 0021h
- BX = endpoint column offset
- CX = endpoint row offset
- Desc: draw a solid line, XORing each pixel onto the screen
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in text modes
- The starting point is the current graphics cursor position; the cursor
- position is updated
- SeeAlso: AX=0006h,AX=000Dh,AX=001Dh,AX=0020h,AX=0026h,AX=0090h
- --------V-620022-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_DRAWX" - XOR SOLID LINE TO ABSOLUTE POSITION
- AX = 0022h
- BX = endpoint column
- CX = endpoint row
- Desc: draw a solid line, XORing each pixel onto the screen
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in text modes
- The starting point is the current graphics cursor position; the cursor
- position is updated
- SeeAlso: AX=001Dh,AX=0021h,AX=008Fh
- --------V-620023-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_DRECT" - DRAW DITHERED RECTANGLE IN SCRN SPACE
- AX = 0023h
- BX = screen space column of left edge
- CX = screen space column of right edge
- DX = screen space row of top edge
- SI = screen space row of bottom edge
- ES:DI -> dithering matrix (video-mode dependent)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in text modes
- SeeAlso: AX=0006h,AX=0008h,AX=0013h,AX=003Ch,AX=0089h,AX=009Bh
- --------V-620024-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_DRWIMAGE" - DISPLAY BITMAPPED IMAGE
- AX = 0024h
- ES:BX -> video mode-specific bitmap
- CX = width of bitmap in bytes
- DX = height of bitmap in pixel rows
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The image will be drawn with its lower left corner at the current
- cursor position (either text or graphics)
- SeeAlso: AX=0011h,AX=0036h,AX=0044h,AX=0099h,AX=00A0h
- --------V-620025-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_EGACHECK" - GET INFO ABOUT ACTIVE EGA DISPLAY
- AX = 0025h
- Return: AX = number of 64K banks of video memory, or 0000h if no EGA or EGA
- without an Enhanced Color Display
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=00C2h
- --------V-620026-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_ELLIPSE" - DRAW UNFILLED ELLIPSE IN SCRN SPACE
- AX = 0026h
- BX = horizontal semi-axis length in screen space units
- CX = vertical semi-axis length in screen space units
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in text modes
- The ellipse is centered at the current graphics cursor position
- SeeAlso: AX=0006h,AX=000Dh,AX=0027h,AX=008Fh,AX=0093h
- --------V-620027-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_ELLIPSEF" - DRAW FILLED ELLIPSE IN SCREEN SPACE
- AX = 0027h
- BX = horizontal semi-axis length in screen space units
- CX = vertical semi-axis length in screen space units
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in text modes
- The ellipse is centered at the current graphics cursor position
- SeeAlso: AX=0006h,AX=000Eh,AX=0026h,AX=008Fh,AX=0092h
- --------V-620028-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_ERASE" - CLEAR THE ACTIVE VIDEO PAGE
- AX = 0028h
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This function sets each pixel to 0 in graphics modes, each character
- cell to a blank with a gray foreground attribute in text modes
- SeeAlso: AX=0029h,AX=002Bh,AX=0035h
- --------V-620029-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_FADEIN" - FADE IN HIDDEN PAGE
- AX = 0029h
- BX = delay (0000h = fastest possible fade-in)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The current hidden page is copied to the current visible page in small
- random sections to produce a fade-in effect
- This call is ignored in text modes
- SeeAlso: AX=0028h,AX=002Ah,AX=002Bh
- --------V-62002A-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_FADEOUT" - FADE OUT TO CURRENT COLOR
- AX = 002Ah
- BX = delay (0000h = fastest possible fade-out)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The current visible page is filled with pixels of the current color in
- small random sections to give a fade-out effect
- This call is ignored in text modes
- SeeAlso: AX=0028h,AX=0029h,AX=002Bh
- --------V-62002B-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_FILLPAGE" - FILL THE ACTIVE VIDEO PAGE
- AX = 002Bh
- Desc: fill the active video page with pixels of the current color (graphics
- modes) or the block character DBh with the current character
- attributes (text modes)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0028h,AX=0029h,AX=002Ah
- --------V-62002C-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_FINDPAGE" - FIND AVAILABLE VIRTUAL/LOGICAL PAGE
- AX = 002Ch
- Return: AX = first available page number (virtual or logical page)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0028h
- --------V-62002D-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_FLICDONE" - CLOSE FLIC FILE
- AX = 002Dh
- ES:BX -> context descriptor (see AX=0030h)
- Return: nothing
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=002Eh,AX=0030h
- --------V-62002E-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_FLICHEAD" - READ FLI/FLC FILE HEADER
- AX = 002Eh
- ES:BX -> FLICHEAD variable pointer record (see #03477)
- Return: AX = status (see #03476)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=002Dh,AX=002Fh,AX=0030h,AX=0032h
- (Table 03476)
- Values for FGDRIVER FLIC processing status:
- 0000h successful
- FFFEh not an FLI or FLC file
- FFFFh file not found
- Format of FGDRIVER FLICHEAD variable pointer record:
- Offset Size Description (Table 03477)
- 00h WORD segment of ASCIZ FLI/FLC file name
- 02h WORD offset of ASCIZ FLI/FLC file name
- 04h WORD segment of buffer for 128-byte file header
- 06h WORD offset of buffer for 128-byte file header
- --------V-62002F-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_FLICMODE" - GET OPTIMAL VIDEO MODE FOR FLI/FLC
- AX = 002Fh
- ES:BX -> 128-byte buffer containing FLI/FLC file header (see AX=002Eh)
- Return: AX = optimal 256-color graphics mode number
- FFFFh if invalid file header
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=002Eh,AX=0030h
- --------V-620030-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_FLICOPEN" - OPEN FLI/FLC FILE
- AX = 0030h
- ES:BX -> FLICOPEN variable pointer record (see #03478)
- Return: AX = status (see #03476)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=002Dh,AX=002Eh,AX=002Fh,AX=0030h,AX=0031h,AX=0032h
- Format of FGDRIVER FLICOPEN variable pointer record:
- Offset Size Description (Table 03478)
- 00h WORD segment of ASCIZ FLI/FLC file name
- 02h WORD offset of ASCIZ FLI/FLC file name
- 04h WORD segment of buffer for 16-byte file context descriptor
- 06h WORD offset of buffer for 16-byte file context descriptor
- --------V-620031-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_FLICPLAY" - DISPLAY NEXT FRAME(S) IN FLI/FLC
- AX = 0031h
- ES:BX -> context descriptor (see AX=0030h)
- CX = number of frames to display starting at current frame
- DX = control flags (see #03479)
- Return: AX = number of frames displayed
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0030h,AX=0033h,AX=00B8h
- Bitfields for FGDRIVER FLI/FLC control flags:
- Bit(s) Description (Table 03479)
- 0 skip inter-frame delay specified in FLI/FLC header
- 1 display relative to current graphics position
- 2 dipslay image from the FG_IMAGEBUF buffer instead of file
- --------V-620032-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_FLICSIZE" - GET IMAGE SIZE
- AX = 0032h
- ES:BX -> FLICSIZE variable pointer record (see #03480)
- Return: image height/width buffers updated; height is set to FFFFh on error
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=002Eh,AX=0030h
- Format of FGDRIVER FLICSIZE variable pointer record:
- Offset Size Description (Table 03480)
- 00h WORD segment of buffer for 128-byte FLI/FLC file header
- 02h WORD offset of buffer for 128-byte FLI/FLC file header
- 04h WORD segment of WORD buffer for image width in pixels
- 06h WORD offset of WORD buffer for image width in pixels
- 08h WORD segment of WORD buffer for image height in pixels
- 0Ah WORD offset of WORD buffer for image height in pixels
- --------V-620033-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_FLICSKIP" - SKIP FRAME(S) IN FLI/FLC FILE
- AX = 0033h
- ES:BX -> context descriptor (see AX=0030h)
- CX = number of frames to skip
- reset to first frame if skip count is negative
- Return: AX = number of frames skipped (may be less than requested if EOF)
- 0000h if resetting to first frame
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0030h,AX=0031h
- --------V-620034-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_FLIPMASK" - DISPLAY INV CLIPPED IMAGE (MASKMAP)
- AX = 0034h
- ES:BX -> array containing image stored as a masking map (see #03475)
- CX = number of pixel runs in masking map
- DX = width of masking map in pixels
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in text modes and in native EGA and VGA graphics
- modes
- The image is drawn with its lower left corner at the current graphics
- cursor position
- SeeAlso: AX=000Fh,AX=001Fh,AX=0036h,AX=00A1h,AX=00A5h,AX=00C5h
- --------V-620035-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_FLOOD" - FLOOD FILL ARBITRARY CLOSED REGION
- AX = 0035h
- BX = starting column
- CX = starting row
- Desc: fill the bounded region around the specified point (respecting clipping
- region) with the currrent color
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This function is ignored in text modes
- SeeAlso: AX=0028h,AX=0085h
- --------V-620036-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_FLPIMAGE" - DISPLAY INV CLIPPED IMAGE (BITMAP)
- AX = 0036h
- ES:BX -> mode-specific bitmap
- CX = width of bit map in bytes
- DX = height of bit map in pixel rows
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in text modes
- The image is drawn with its lower left corner at the current graphics
- cursor position
- The current clipping region is used, extended to a byte boundary
- SeeAlso: AX=0011h,AX=0024h,AX=0034h,AX=0044h,AX=00A0h,AX=00A9h,AX=00B9h
- --------V-620037-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_FONTSIZE" - SPECIFY FONT SIZE FOR TEXT OUTPUT
- AX = 0037h
- BX = desired character height in scan lines (8, 14, 16)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored if the current mode is not a VGA or SVGA graphics
- mode, or the specified character height is not 8, 14, or 16
- SeeAlso: AX=0096h
- --------V-620038-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_FREEPAGE" - FREE VIRTUAL OR LOGICAL VIDEO PAGE
- AX = 0038h
- BX = page number (0000h-003Fh)
- Return: AX = status (0000h,0001h,0007h,0009h) (see #03473)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=0003h
- --------V-620039-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETADDR" - GET SEGMENT OF ACTIVE VIDEO PAGE
- AX = 0039h
- Return: AX = segment of active video page
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0042h,AX=00ACh
- --------V-62003A-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETATTR" - GET CHARACTER ATTRIB FOR POSITION
- AX = 003Ah
- BX = row
- CX = column
- Return: AX = character attribute at specified location on active video page
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in graphics modes
- SeeAlso: AX=000Bh,AX=003Dh,AX=0040h,AX=00A6h
- --------V-62003B-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETBANKS" - GET SVGA READ AND WRITE BANKS
- AX = 003Bh
- ES:BX -> GETBANKS variable pointer record (see #03481)
- Return: nothing
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=00A7h
- Format of FGDRIVER GETBANKS variable pointer record:
- Offset Size Description (Table 03481)
- 00h WORD segment of WORD buffer for read bank number
- 02h WORD offset of WORD buffer for read bank number
- 04h WORD segment of WORD buffer for write bank number
- 06h WORD offset of WORD buffer for write bank number
- --------V-62003C-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETBLOCK" - GRAB RECTANGLE OF DISPLAY
- AX = 003Ch
- ES:BX -> buffer for screen contents
- CX = leftmost column
- DX = rightmost column
- SI = top row
- DI = bottom row
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- In text modes, coordinates are character positions; in graphics modes,
- they are defined in screen space, and the left and right edges are
- adjusted to a byte boundary if necessary
- Use "FG_IMAGESIZ" (see AX=005Ch) to determine the required buffer size
- SeeAlso: AX=0044h,AX=005Ch,AX=0098h
- --------V-62003D-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETCHAR" - GET CHARACTER FOR SCREEN POSITION
- AX = 003Dh
- BX = row
- CX = column
- Return: AX = character at specified location on active video page
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in graphics modes
- SeeAlso: AX=000Bh,AX=003Ah,AX=0096h,AX=00A6h,AX=00C8h
- --------V-62003E-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETCLIP" - GET CLIPPING REGION IN SCREEN SPACE
- AX = 003Eh
- ES:BX -> GETCLIP variable pointer record (see #03482)
- Return: variables specifed by GETCLIP structure updated
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=00CAh
- Format of FGDRIVER GETCLIP variable pointer record:
- Offset Size Description (Table 03482)
- 00h WORD segment of WORD buffer for minimum X coordinate (left edge)
- 02h WORD offset of WORD buffer for minimum X coordinate (left edge)
- 04h WORD segment of WORD buffer for maximum X coordinate (right edge)
- 06h WORD offset of WORD buffer for maximum X coordinate (right edge)
- 08h WORD segment of WORD buffer for minimum Y coordinate (top edge)
- 0Ah WORD offset of WORD buffer for minimum Y coordinate (top edge)
- 0Ch WORD segment of WORD buffer for maximum Y coordinate (bottom edge)
- 0Eh WORD offset of WORD buffer for maximum Y coordinate (bottom edge)
- --------V-62003F-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETCLOCK" - GET CLOCK TICKS SINCE MIDNIGHT
- AX = 003Fh
- Return: DX:AX = number of clock ticks since midnight
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: INT 1A/AH=00h
- --------V-620040-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETCOLOR" - GET CURRENT TEXT ATTRIBUTE
- AX = 0040h
- Return: AX = current text attribute or color index (graphics modes)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=000Bh,AX=003Ah,AX=00A6h
- --------V-620041-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETDACS" - GET VIDEO DAC CONTENTS
- AX = 0041h
- CX = number of DAC registers to return (0001h to 0100h)
- DX = starting DAC register number (0000h to 00FFh)
- ES:BX -> buffer for DAC red/green/blue triples
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The register number wraps back to zero after FFh
- SeeAlso: AX=004Eh,AX=0086h,AX=00ABh
- --------V-620042-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETENTRY" - GET PAGE TYPE AND ADDRESS
- AX = 0042h
- ES:BX -> variable pointer record (see #03483)
- CX = page number (00h-3Fh)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- Page addresses are segments for pages stored in conventional memory
- (including physical and virtual pages), and EMS or XMS handles for
- pages stored in EMS or XMS
- SeeAlso: AX=0000h,AX=00ACh
- Format of FGDRIVER GETENTRY variable pointer record:
- Offset Size Description (Table 03483)
- 00h WORD segment of WORD buffer for page address
- 02h WORD offset of WORD buffer for page address
- 04h WORD segment of WORD buffer for page type (se #03484)
- 06h WORD offset of WORD buffer for page type
- (Table 03484)
- Values for FGDRIVER page type:
- 0000h unallocated
- 0001h physical
- 0002h virtual
- 0003h logical page, stored in expanded memory (EMS)
- 0004h logical page, stored in extended memory (XMS)
- 0005h logical page, stored in conventional memory
- --------V-620043-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETHPAGE" - GET CURRENT HIDDEN VIDEO PAGE NUM
- AX = 0043h
- Return: AX = current hidden video page number (0000h-003Fh)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=004Ch,AX=0050h,AX=00AEh
- --------V-620044-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETIMAGE" - STORE IMAGE AS BITMAP
- AX = 0044h
- ES:BX -> buffer for video mode-specific bitmap
- CX = width of bitmap in bytes
- DX = height of bitmap in pixel rows
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0011h,AX=0024h,AX=0036h,AX=0099h,AX=00A0h
- --------V-620045-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETINDEX" - GET COLOR VALUE FOR COLOR INDEX
- AX = 0045h
- BX = color index (0000h to 00FFh)
- Return: AX = color value for specified color index
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call returns the value passed to it in text and 256-color
- graphics modes
- SeeAlso: AX=0018h,AX=0040h
- --------V-620046-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETKEY" - GET NEXT KEYSTROKE
- AX = 0046h
- ES:BX -> variable pointer record (see #03485)
- Return: (after next keystroke if no typeahead) variables updated
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=000Ah,AX=0063h,AX=0069h,AX=00DEh,INT 16/AH=00h
- Format of FGDRIVER GETKEY variable pointer record:
- Offset Size Description (Table 03485)
- 00h WORD segment of BYTE buffer for ASCII keycode
- 02h WORD offset of BYTE buffer for ASCII keycode
- 04h WORD segment of BYTE buffer for extended keycode
- 06h WORD offset of BYTE buffer for extended keycode
- --------V-620047-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETLINES" - GET TEXT ROWS FOR CURR VIDEO MODE
- AX = 0047h
- Return: AX = number of text rows on screen in current video mode
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=00AFh,AX=00C2h
- --------V-620048-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETMAP" - STORE IMAGE AS MODE-INDEPENDNT BITMAP
- AX = 0048h
- ES:BX -> buffer for video mode-independent bitmap
- CX = width of bitmap in bytes
- DX = height of bitmap in pixel rows
- Return: each bit in bitmap is set if corresponding pixel is of the current
- color, cleared otherwise
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in text modes
- SeeAlso: AX=0011h,AX=001Eh,AX=0024h
- --------V-620049-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETMAXX" - GET MAXIMUM COLUMN IN SCREEN SPACE
- AX = 0049h
- Return: AX = maximum X coordinate in screen space
- (or character space if in text mode)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=004Ah,AX=00C1h
- --------V-62004A-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETMAXY" - GET MAXIMUM ROW IN SCREEN SPACE
- AX = 004Ah
- Return: AX = maximum Y coordinate in screen space
- (or character space if in text mode)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0049h,AX=00C1h
- --------V-62004B-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETMODE" - GET CURRENT VIDEO MODE NUMBER
- AX = 004Bh
- ES:BX -> WORD ???
- Return: AX = current video mode number
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=00B0h
- --------V-62004C-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETPAGE" - GET ACTIVE VIDEO PAGE NUMBER
- AX = 004Ch
- Return: AX = active video page (0000h-003Fh)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0039h,AX=0042h,AX=0043h,AX=0050h,AX=00B2h
- --------V-62004D-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETPIXEL" - GET COLOR OF SPECIFIED PIXEL
- AX = 004Dh
- BX = column in screen space
- CX = row in screen space
- Return: AX = color value of pixel (0 to num_colors-1)
- 0000h in text modes
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=003Ah,AX=003Dh,AX=008Fh,AX=0090h
- --------V-62004E-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETRGB" - GET VIDEO DAC REGISTER CONTENTS
- AX = 004Eh
- ES:BX -> variable pointer record (see #03486)
- CX = DAC register number
- Return: variables updated
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in text modes and CGA/EGA video modes (since
- they do not use DAC registers)
- SeeAlso: AX=0041h,AX=0086h,AX=00ABh
- Format of FGDRIVER GETRGB variable pointer record:
- Offset Size Description (Table 03486)
- 00h WORD segment of WORD buffer for red component of DAC register
- 02h WORD offset of WORD buffer for red component
- 04h WORD segment of WORD buffer for green component of DAC register
- 06h WORD offset of WORD buffer for green component
- 08h WORD segment of WORD buffer for blue component of DAC register
- 0Ah WORD offset of WORD buffer for blue component
- --------V-62004F-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETVIEW" - GET VIEWPORT EXTREME LIMITS
- AX = 004Fh
- ES:BX -> variable pointer record (see #03487)
- Return: indicated variables updated
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=00B5h
- Format of FGDRIVER GETVIEW variable pointer record:
- Offset Size Description (Table 03487)
- 00h WORD segment of WORD buffer for viewport left edge (viewport units)
- 02h WORD offset of WORD buffer for viewport left edge (viewport units)
- 04h WORD segment of WORD buffer for viewport right edge (viewport units)
- 06h WORD offset of WORD buffer for viewport right edge (viewport units)
- 08h WORD segment of WORD buffer for viewport top edge (viewport units)
- 0Ah WORD offset of WORD buffer for viewport top edge (viewport units)
- 0Ch WORD segment of WORD buffer for viewport bottom edge (viewp. units)
- 0Eh WORD offset of WORD buffer for viewport bottom edge (viewp. units)
- 10h WORD segment of WORD buffer for viewport left edge (screen space)
- 12h WORD offset of WORD buffer for viewport left edge (screen space)
- 14h WORD segment of WORD buffer for viewport right edge (screen space)
- 16h WORD offset of WORD buffer for viewport right edge (screen space)
- 18h WORD segment of WORD buffer for viewport top edge (screen space)
- 1Ah WORD offset of WORD buffer for viewport top edge (screen space)
- 1Ch WORD segment of WORD buffer for viewport bottom edge (screen space)
- 1Eh WORD offset of WORD buffer for viewport bottom edge (screen space)
- --------V-620050-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETVPAGE" - GET VISIBLE VIDEO PAGE NUMBER
- AX = 0050h
- Return: AX = visible video page (0000h-003Fh)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0043h,AX=004Ch,AX=00B6h
- --------V-620051-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETXBOX" - GET WIDTH OF VERTICAL BOX LINES
- AX = 0051h
- Return: AX = width (in pixels) of left and right edges of rectangles
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0006h,AX=0007h,AX=0008h,AX=006Bh
- --------V-620052-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETXJOY" - GET HORIZONTAL POSITION OF JOYSTICK
- AX = 0052h
- BX = joystick number (0001h or 0002h)
- Return: AX = horizontal position of joystick
- FFFFh if joystick uninitialized or not present
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The actual coordinates are processor- and joystick-dependent
- You must call "FG_INITJOY" (AX=005Eh) before using this function
- SeeAlso: AX=0009h,AX=0056h,AX=005Eh,AX=0062h,AX=0077h
- --------V-620053-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETXJUST" - GET HORIZONTAL JUSTIFICATION
- AX = 0053h
- Return: AX = string justification
- 0000h strings are centered around current graphics X position
- 0001h strings are right-justified at current graphics X position
- FFFFh strings are left-justified at current graphics X position
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=006Ch,AX=007Bh
- --------V-620054-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETXPOS" - GET GRAPHICS CURSOR COLUMN
- AX = 0054h
- Return: AX = screen space X coordinate of graphics cursor position
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0058h,AX=007Eh,AX=007Fh
- --------V-620055-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETYBOX" - GET WIDTH OF HORIZONTAL BOX LINES
- AX = 0055h
- Return: AX = width (in pixels) of top and bottom edges of rectangles
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0006h,AX=0007h,AX=0008h,AX=0063h
- --------V-620056-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETYJOY" - GET VERTICAL POSITION OF JOYSTICK
- AX = 0056h
- BX = joystick number (0001h or 0002h)
- Return: AX = vertical position of joystick
- FFFFh if joystick uninitialized or not present
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The actual coordinates are processor- and joystick-dependent
- You must call "FG_INITJOY" (AX=005Eh) before using this function
- SeeAlso: AX=0009h,AX=0052h,AX=005Eh,AX=0062h,AX=0077h
- --------V-620057-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETYJUST" - GET VERTICAL JUSTIFICATION
- AX = 0057h
- Return: AX = string justification
- 0000h strings are centered around current graphics Y position
- 0001h strings have top edge at current graphics Y position
- FFFFh strings have bottom edge at current graphics Y position
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0053h,AX=0065h
- --------V-620058-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_GETYPOS" - GET GRAPHICS CURSOR ROW
- AX = 0058h
- Return: AX = screen space Y coordinate of graphics cursor position
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0054h,AX=007Eh,AX=007Fh
- --------V-620059-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_HUSH" - STOP ASYNCHRONOUS SOUND IMMEDIATELY
- AX = 0059h
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This function immediately stops any sounds started with "FG_MUSICB",
- "FG_SOUNDS", or "FG_VOICES"; it is ignored if no asynchronous sound
- is playing
- SeeAlso: AX=005Ah,AX=0081h,AX=00BDh,AX=00DCh
- --------V-62005A-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_HUSHNEXT" - STOP ASYNCHRONOUS SOUND
- AX = 005Ah
- Program: FGDRIVER is the external video driver for the shareware
- Fastgraph/Light by Ted Gruber Software
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This function stops any sounds started with "FG_MUSICB", "FG_SOUNDS",
- or "FG_VOICES" after the current repetition completes; it is ignored
- unless asynchronous sound is continuous
- SeeAlso: AX=0059h,AX=0081h,AX=00BDh,AX=00DCh
- --------V-62005B-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_IMAGEBUF" - SPECIFY TEMPORARY IMAGE BUFFER
- AX = 005Bh
- ES:BX -> buffer to be used when creating or displaying GIF/PCX/PPR/SPR
- images
- CX = size of buffer in bytes or 0000h to use internal buffer
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- Fastgraph's internal buffer is 4096 bytes; this function allows the
- application to define a larger buffer which will typically speed
- processing
- SeeAlso: AX=006Ch,AX=006Dh,AX=006Eh,AX=00B9h,AX=00BAh,AX=00BBh
- --------V-62005C-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_IMAGESIZ" - DETERMINE IMAGE STORAGE REQUIREMENT
- AX = 005Ch
- BX = image width in pixels
- CX = image height in pixels
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- Return: DX:AX = size in bytes of mode-specific bitmap for current video mode
- SeeAlso: AX=003Ch,AX=0098h
- --------V-62005D-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_INITEMS" - INITIALIZE EXPANDED MEMORY USE
- AX = 005Dh
- Return: AX = status
- 0000h successful
- FFFFh expanded memory manager inaccessible or not installed
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0002h,AX=0060h"v4.02"
- --------V-62005E-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_INITJOY" - INITIALIZE JOYSTICK USE
- AX = 005Eh
- BX = joystick number (0001h or 0002h)
- Return: AX = status
- 0000h successful
- FFFFh joystick not connected or no game port
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- Fastgraph assumes that the requested joystick is centered at the time
- this function is called
- SeeAlso: AX=0009h,AX=0052h,AX=0056h,AX=0062h,AX=0077h
- --------V-62005F-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_INITPM"??? - (NOT IMPLEMENTED)
- AX = 005Fh
- ???
- Return: ???
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- --------V-620060-----------------------------
- INT 62 u - FGDRIVER v1.10 only - "FG_DISPPCX" - DISPLAY PCX FILE
- AX = 0060h
- ES:BX -> ASCIZ filename
- CX = flags
- bit 0: use current palette rather than PCX file's palette
- bits 1-15 reserved (0)
- Return: AX = status
- 0000h success
- 0001h file not found
- 0002h file is not a valid PCX file
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in text modes and Hercules low-resolution graphics
- The image is displayed with its upper left corner at the current
- graphics cursor position
- SeeAlso: AX=00B9h
- --------V-620060-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_INITXMS" - INITIALIZE EXTENDED MEMORY USE
- AX = 0060h
- Return: AX = status
- 0000h successful
- FFFFh extended memory manager inaccessible or not installed
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0003h,AX=005Dh
- --------V-620061-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_INSIDE" - CHECK IF POINT INSIDE CONVEX POLYGON
- AX = 0061h
- ES:BX -> vertex array
- CX = number of vertices
- DX = screen space column of point to test
- SI = screen space row of point to test
- Return: AX = result
- 0000h point is outside polygon
- 0001h point is inside polygon
- undefined if not a convex polygon
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0092h,AX=0093h,AX=0094h
- --------V-620062-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_INTJOY" - GET KEYCODES CORRESP TO JOYSTICK POS
- AX = 0062h
- CX = joystick number (0001h or 0002h)
- ES:BX -> variable pointer record (see #03488)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- If the indicated joystick has not been initialized with AX=008Eh, both
- the button code and joystick position will be set to 00h
- If either button is pressed, a button code of 0Dh is returned;
- otherwise, a button code of 00h is returned
- SeeAlso: AX=0009h,AX=0052h,AX=0046h,AX=005Eh,AX=0077h
- Format of FGDRIVER INTJOY variable pointer record:
- Offset Size Description (Table 03488)
- 00h WORD segment of BYTE buffer for button code
- 02h WORD offset of BYTE buffer for button code
- 04h WORD segment of BYTE buffer for joystick position
- 06h WORD offset of BYTE buffer for joystick position
- --------V-620063-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_INTKEY" - GET KEYSTROKE, NO WAIT
- AX = 0063h
- ES:BX -> variable pointer record (see #03489)
- Return: variables updated
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- If the keyboard buffer is empty, both the ASCII and extended keycodes
- are set to 00h
- SeeAlso: AX=000Ah,AX=0046h,AX=0069h,AX=00DEh,INT 16/AH=01h
- Format of FGDRIVER INTKEY variable pointer record:
- Offset Size Description (Table 03489)
- 00h WORD segment of BYTE buffer for ASCII keycode
- 02h WORD offset of BYTE buffer for ASCII keycode
- 04h WORD segment of BYTE buffer for extended keycode
- 06h WORD offset of BYTE buffer for extended keycode
- --------V-620064-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_INVERT" - INVERT ORIENTATION OF BITMAP
- AX = 0064h
- ES:BX -> bitmap
- CX = width of bitmap in bytes
- DX = height of bitmap in pixel rows
- Return: nothing
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- --------V-620065-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_JUSTIFY" - SET TEXT OUTPUT JUSTIFICATION
- AX = 0065h
- BX = horizontal justification
- (00h centered, 01h right-justified, FFh left-justified)
- CX = vertical justification
- (00h centered, 01h top of characters, FFh bottom of chars)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=000Ch,AX=0037h,AX=0053h,AX=0057h,AX=0096h
- --------V-620066-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_KBINIT" - ENABLE/DISABLE LOW-LEVEL KBD HANDLER
- AX = 0066h
- BX = new state (0000h disabled, 0001h enabled)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- When the low-level handler is enabled, "FG_GETKEY", "FG_INTKEY",
- "FG_WAITKEY", and all other functions calling DOS or BIOS keyboard
- services become unavailable
- SeeAlso: AX=0067h,AX=0068h,AX=0069h
- --------V-620067-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_KBLAST" - GET MOST RECENT SCANCODE PROCESSED
- AX = 0067h
- Return: AX = scancode for keypress most recently processed by FastGraph's
- low-level keyboard handler, or 0000h if no keys since FG_KBINIT
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0066h,AX=0068h,AX=0069h
- --------V-620068-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_KBRESET" - RESET LOW-LEVEL KEYBOARD HANDLER
- AX = 0068h
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0066h,AX=0067h,AX=0069h
- --------V-620069-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_KBTEST" - CHECK WHETHER SPECIFIED KEY PRESSED
- AX = 0069h
- BX = scan code of desired key
- Return: AX = state
- 0000h key is not pressed
- 0001h key is currently pressed
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The low-level keyboard handler must have been enabled with AX=0066h
- SeeAlso: AX=0066h,AX=0067h,INT 16/AH=01h
- --------V-62006A-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_LOADPCX" - LOAD .PCX INTO ACTIVE VIRTUAL BUFFER
- AX = 006Ah
- ES:BX -> ASCIZ filename for PCX image
- CX = control flags
- bit 0: use current palette, overriding stored .PCX palette
- bit 1: load at current graphics position, not stored position
- bit 2: load image from FG_IMAGEBUF buffer instead of .PCX file
- Return: AX = status
- 0000h successful
- 0001h file not found
- 0002h not a .PCX file
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=006Ch,AX=00B9h,AX=00D5h
- --------V-62006B-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_LOCATE" - SET TEXT-MODE CURSOR POSITION
- AX = 006Bh
- BX = row
- CX = column
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- There are only eight text cursors shared by successive groups of
- eight video pages (pages 0, 8, 16, ... share one cursor, 1, 9, ...
- share the second, etc)
- SeeAlso: AX=0054h,AX=0058h,AX=007Eh,AX=00E0h
- --------V-62006C-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_MAKEPCX" - CREATE PCX FILE FROM SCREEN WINDOW
- AX = 006Ch
- BX = left edge in screen space units
- CX = right edge in screen space units
- DX = top edge in screen space units
- SI = bottom edge in screen space units
- ES:DI -> ASCIZ filename of PCX file to create
- Return: AX = status
- 0000h successful
- 0001h file not created
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The PCX file is created from the specified region of the active video
- page; the left and right edges are adjusted to a byte boundary if
- necessary
- If the specified file already exists, it is overwritten
- This call is ignored in text and Hercules low-resolution graphics modes
- SeeAlso: AX=005Bh,AX=006Dh,AX=006Ah,AX=006Eh,AX=00B9h,AX=00BAh,AX=00BBh
- --------V-62006D-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_MAKEPPR" - CREATE PACKED PIXEL RUN FILE
- AX = 006Dh
- BX = left edge in screen space units
- CX = right edge in screen space units
- DX = top edge in screen space units
- SI = bottom edge in screen space units
- ES:DI -> ASCIZ filename of PPR file to create
- Return: AX = status
- 0000h successful
- 0001h file not created
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The PPR file is created from the specified region of the active video
- page; the left and right edges are adjusted to byte boundaries if
- necessary
- If the specified file already exists, it is overwritten
- This call is ignored in text modes
- SeeAlso: AX=005Bh,AX=006Ch,AX=006Eh,AX=00B9h,AX=00BAh,AX=00BBh
- --------V-62006E-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_MAKESPR" - CREATE STANDARD PIXEL RUN FILE
- AX = 006Eh
- BX = left edge in screen space units
- CX = right edge in screen space units
- DX = top edge in screen space units
- SI = bottom edge in screen space units
- ES:DI -> ASCIZ filename of SPR file to create
- Return: AX = status
- 0000h successful
- 0001h file not created
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The SPR file is created from the specified region of the active video
- page; the left and right edges are adjusted to byte boundaries if
- necessary
- If the specified file already exists, it is overwritten
- This call is ignored in text modes
- SeeAlso: AX=005Bh,AX=006Ch,AX=006Dh,AX=00B9h,AX=00BAh,AX=00BBh
- --------V-62006F-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_MAPRGB" - MAP COLOR COMPONENTS INTO PALETTE VAL
- AX = 006Fh
- BX = red component
- CX = green component
- DX = blue component
- Return: AX = mode-specific palette value corresponding to specified components
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This function is only meaningful in 16-color graphics modes
- SeeAlso: AX=004Eh,AX=00B3h
- --------V-620070-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_MEASURE" - GET DELAY UNITS PER CLOCK TICK
- AX = 0070h
- Return: AX = delay units per clock tick (processor-dependent)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- These delay units are used by "FG_STALL" (see AX=00BFh)
- SeeAlso: AX=00BFh
- --------V-620071-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_MEMAVAIL" - QUERY AMOUNT OF FREE MEMORY
- AX = 0071h
- Return: DX:AX = number of bytes of conventional memory available
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=005Dh,AX=0072h
- --------V-620072-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_MEMORY" - GET SIZE OF VIDEO MEMORY
- AX = 0072h
- Return: AX = size of video memory in KB
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- You must first call "FG_SVGAINIT" (see AX=00C1h) before using this
- function
- SeeAlso: AX=0071h
- --------V-620073-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_MOUSE256" - DEFINE 256-COLOR MOUSE CURSOR
- AX = 0073h
- ES:BX -> 512-byte cursor definition
- CX = X offset of hot-spot within mouse cursor
- DX = Y offset of hot-spot within mouse cursor
- Return: nothing
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- the cursor definition array consists of 256 bytes defining the 16x16
- screen mask, followed by another 256 bytes definining the 16x16
- cursor mask
- SeeAlso: AX=0074h,AX=0075h,AX=007Bh
- --------V-620074-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_MOUSEBUT" - GET MOUSE BUTTON PRESS/RELEASE CNTS
- AX = 0074h
- CX = mouse button (1 = left press, 2 = right press, 3 = middle press,
- -1=left release, -2=right release, -3=middle release)
- ES:BX -> variable pointer record (see #03490)
- Return: variables updated
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This function returns the count of presses or releases since the last
- call to this function; if the count is zero, row and column will
- also be zero
- SeeAlso: AX=0075h,AX=0077h,AX=007Ah
- Format of FGDRIVER MOUSEBUT variable pointer record:
- Offset Size Description (Table 03490)
- 00h WORD segment of WORD buffer for press/release count
- 02h WORD offset of WORD buffer for press/release count
- 04h WORD segment of WORD buffer for screen space col of last press/rls
- 06h WORD offset of WORD buffer for screen space col of last press/rels
- 08h WORD segment of WORD buffer for screen space row of last press/rls
- 0Ah WORD offset of WORD buffer for screen space row of last press/rls
- --------V-620075-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_MOUSECUR" - SPECIFY TEXT-MODE MOUSE CURSOR
- AX = 0075h
- BX = screen mask
- CX = cursor mask
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in graphics modes
- SeeAlso: AX=007Bh,AX=007Dh
- --------V-620076-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_MOUSEFIN" - UNHOOK FASTGRAPH MOUSE HANDLER
- AX = 0076h
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This function should be called before switching back to text mode if
- "FG_MOUSEINI" was called while in an SVGA graphics mode
- SeeAlso: AX=0077h
- --------V-620077-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_MOUSEINI" - INITIALIZE MOUSE SUPPORT
- AX = 0077h
- Return: AX = status
- 0002h two-button mouse
- 0003h three-button mouse
- FFFFh initialization failed
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- After this call, the mouse cursor is invisible
- SeeAlso: AX=0076h,AX=0078h,AX=007Ch
- --------V-620078-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_MOUSELIM" - SPECIFY MOUSE CURSOR LIMITS
- AX = 0078h
- BX = left-most position allowed for mouse cursor
- CX = right-most position allowed
- DX = top-most position allowed
- SI = bottom-most position allowed
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0077h,AX=0079h,INT 33/AX=0007h,INT 33/AX=0008h
- --------V-620079-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_MOUSEMOV" - SET MOUSE CURSOR POSITION
- AX = 0079h
- BX = new column
- CX = new row
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This function will not move the mouse cursor outside the bounding box
- specified with AX=009Bh
- SeeAlso: AX=0078h,AX=007Ah,INT 33/AX=0004h
- --------V-62007A-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_MOUSEPOS" - GET CURRENT MOUSE POSITION
- AX = 007Ah
- ES:BX -> variable pointer record (see #03491)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0079h
- Format of FGDRIVER MOUSEPOS variable pointer record:
- Offset Size Description (Table 03491)
- 00h WORD segment of WORD buffer for mouse column
- 02h WORD offset of WORD buffer for mouse column
- 04h WORD segment of WORD buffer for mouse row
- 06h WORD offset of WORD buffer for mouse row
- 08h WORD segment of WORD buffer for button status
- 0Ah WORD offset of WORD buffer for button status
- Note: button status: bit 0 = left button, bit 1 = right, bit 2 = middle
- --------V-62007B-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_MOUSEPTR" - SPECIFY GRAPH-MODE MOUSE CURSOR
- AX = 007Bh
- ES:BX -> masks (16-byte screen mask followed by 16-byte cursor mask)
- CX = X offset of hot spot from upper left corner
- DX = Y offset of hot spot from upper left corner
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in text modes
- SeeAlso: AX=0073h,AX=0075h,INT 33/AX=0009h
- --------V-62007C-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_MOUSESPD" - SET MOUSE CURSOR SPEED
- AX = 007Ch
- BX = horizontal mickeys per eight pixels of movement (default 16)
- CX = vertical mickeys per eight pixels of movement (default 16)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: INT 33/AX=000Fh,INT 33/AX=001Ah
- --------V-62007D-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_MOUSEVIS" - SET MOUSE CURSOR VISIBILITY
- AX = 007Dh
- BX = new state (0000h invisible, 0001h visible)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0077h,INT 33/AX=0001h,INT 33/AX=0002h
- --------V-62007E-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_MOVE" - SET GRAPHICS CURSOR POSITION
- AX = 007Eh
- BX = new column
- CX = new row
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in text modes
- SeeAlso: AX=0054h,AX=0058h,AX=006Bh,AX=0079h,AX=007Fh,AX=00E0h
- --------V-62007F-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_MOVEREL" - ADJUST GRAPHICS CURSOR POSITION
- AX = 007Fh
- BX = column offset
- CX = row offset
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in text modes
- SeeAlso: AX=0054h,AX=0058h,AX=007Eh
- --------V-620080-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_MUSIC" - PLAY SERIES OF NOTES
- AX = 0080h
- ES:BX -> '$'-terminated music string in BASIC PLAY format
- Return: after music completed
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored if asynchronous sound (AX=00A5h,AX=00A8h,
- AX=00AAh) is already in progress
- SeeAlso: AX=0081h,AX=00BCh,AX=00DBh
- --------V-620081-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_MUSICB" - PLAY SERIES OF NOTES IN BACKGROUND
- AX = 0081h
- CX = number of repetitions (negative = continuous play)
- ES:BX -> '$'-terminated music string in BASIC PLAY format
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored if asynchronous sound (AX=00A5h,AX=00A8h,
- AX=00AAh) is already in progress
- SeeAlso: AX=0059h,AX=0081h,AX=00BDh,AX=00DCh
- --------V-620082-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_NUMLOCK" - GET STATE OF NUMLOCK KEY
- AX = 0082h
- Return: AX = NumLock state (0000h off, 0001h on)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=000Ah,AX=00A4h,AX=00A8h,AX=00B1h
- --------V-620083-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_PACK" - CONVERT PIXEL-PER-BYTE TO PACKED BITMAP
- AX = 0083h
- ES:BX -> variable pointer record (see #03492)
- CX = width of bitmap in pixels
- DX = height of bitmap in pixels
- Return: result bitmap buffer updated
- SeeAlso: AX=00CBh
- Format of FGDRIVER PACK variable pointer record:
- Offset Size Description (Table 03492)
- 00h WORD segment of source (mode-independent) bitmap
- 02h WORD offset of source (mode-independent) bitmap
- 04h WORD segment of buffer for result (mode-specific) bitmap
- 06h WORD offset of buffer for result (mode-specific) bitmap
- --------V-620084-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_PAGESIZE" - GET VIDEO PAGE SIZE FOR CURR MODE
- AX = 0084h
- Return: DX:AX = page size in bytes
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0072h
- --------V-620085-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_PAINT" - FLOOD CLOSED REGION WITH COLOR
- AX = 0085h
- BX = column
- CX = row
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This function fills an arbitrary closed region around the specified
- point with the current color; the screen edges are not considered
- region boundaries
- This call is ignored in text modes
- SeeAlso: AX=0035h
- --------V-620086-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_PALETTE" - SET PALETTE / SET VIDEO DAC REGISTER
- AX = 0086h
- ---CGA 4-color graphics---
- BX = CGA paletee number
- CX = background color
- ---CGA 2-color graphics---
- BX ignored
- CX = foreground color
- ---16-color graphics---
- BX = palette register number
- CX = palette value
- ---256-color graphics---
- BX = DAC register number
- CX = DAC value
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This function is ignored in text modes and Hercules graphics modes
- Few EGA/VGA adapters correctly set the foreground color in CGA mode 6
- SeeAlso: AX=0041h,AX=004Eh,AX=0087h,AX=00ABh
- --------V-620087-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_PALETTES" - SET ALL PALETTE REGISTERS
- AX = 0087h
- ES:BX -> array of 16 WORDs containing values for palette registers
- (or first 16 DAC registers in 256-color modes)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This function is ignored in text modes, CGA and Hercules graphics modes
- SeeAlso: AX=0041h,AX=004Eh,AX=0086h,AX=00ABh
- --------V-620088-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_PAN" - SET SCREEN ORIGIN
- AX = 0088h
- BX = new column for screen origin
- CX = new row for screen origin
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=00B2h
- --------V-620089-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_PATTERN" - SPECIFY DISPLAY PATTERN FOR COLOR
- AX = 0089h
- BX = index of pattern to define
- CX = number of predefined display pattern
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- When displaying a pixel run map, Fastgraph uses the pattern associated
- with each color index rather than displaying the actual color
- This call has no effect in text and 256-color graphics modes
- SeeAlso: AX=0023h,AX=0045h
- --------V-62008A-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_PCXHEAD" - GET PCX FILE HEADER
- AX = 008Ah
- ES:BX -> variable pointer record (see #03493)
- Return: AX = status
- 0000h successful
- FFFEh not a PCX file
- FFFFh file does not exist
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=008Bh,AX=00B9h
- Format of FGDRIVER PCXHEAD variable pointer record:
- Offset Size Description (Table 03493)
- 00h WORD segment of ASCIZ filename
- 02h WORD offset of ASCIZ filename
- 04h WORD segment of 128-byte buffer for PCX header
- 06h WORD offset of 128-byte buffer for PCX header
- --------V-62008B-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_PCXMODE" - GET OPTIMAL VIDEO MODE FOR DISPLAY
- AX = 008Bh
- ES:BX -> PCX header (see AX=008Ah)
- Return: AX = optimal video mode for PCX file
- FFFEh not a valid PCX header
- FFFFh unable to determine compatible video mode
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=008Ah,AX=00B9h
- --------V-62008C-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_PCXPAL" - GET PALETTE STORED IN PCX FILE
- AX = 008Ch
- ES:BX -> variable pointer record (see #03494)
- Return: AX = number of colors in palette (16 or 256) or
- FFFEh not a valid PCX file
- FFFFh file not found
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=008Dh
- Format of FGDRIVER PCXPAL variable pointer record:
- Offset Size Description (Table 03494)
- 00h WORD segment of ASCIZ .PCX filename
- 02h WORD offset of ASCIZ .PCX filename
- 04h WORD segment of buffer for .PCX palette RGB triples
- 06h WORD offset of buffer for .PCX palette RGB triples
- Note: the buffer for the palette must hold at least three times as many bytes
- as there are colors in the palette
- SeeAlso: #03495
- --------V-62008D-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_PCXRANGE" - GET EXTENT OF PCX IMAGE
- AX = 008Dh
- ES:BX -> variable pointer record (see #03495)
- Return: indicated variables updated; if the indicated header is not valid,
- all of the coordinate variables are set to FFFFh
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=008Ch
- Format of FGDRIVER PCXRANGE variable pointer record:
- Offset Size Description (Table 03495)
- 00h WORD segment of 128-byte PCX file header
- 02h WORD offset of 128-byte PCX file header
- 04h WORD segment of WORD buffer for X coordinate of image's left edge
- 04h WORD offset of WORD buffer for X coordinate of image's left edge
- 08h WORD segment of WORD buffer for X coordinate of image's right edge
- 0Ah WORD offset of WORD buffer for X coordinate of image's right edge
- 0Ch WORD segment of WORD buffer for Y coordinate of image's top edge
- 0Eh WORD offset of WORD buffer for Y coordinate of image's top edge
- 10h WORD segment of WORD buffer for X coordinate of image's bottom edge
- 12h WORD offset of WORD buffer for X coordinate of image's bottom edge
- SeeAlso: #03494
- --------V-62008E-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_PLAYING" - DETERMINE WHETHER ASYNC SOUND ACTIVE
- AX = 008Eh
- Return: AX = sound state (0 = no asynchronous sound, 1 = async sound playing)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0059h,AX=0081h,AX=00BDh,AX=00DCh
- --------V-62008F-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_POINT" - DISPLAY A PIXEL
- AX = 008Fh
- BX = column
- CX = row
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in text modes
- SeeAlso: AX=0006h,AX=001Dh,AX=004Dh,AX=0090h
- --------V-620090-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_POINTX" - DISPLAY A PIXEL IN XOR MODE
- AX = 0090h
- BX = column
- CX = row
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in text modes
- SeeAlso: AX=004Dh,AX=008Fh
- --------V-620091-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_POLYEDGE" - SPECIFY INCLUSION OF FINAL PIXELS
- AX = 0091h
- BX = edge flag
- 0000h include right- and bottom-edge pixels when drawing polygons
- with FG_POLYFILL
- 0001h (default) exclue right- and bottom-edge pixels
- SeeAlso: AX=0092h
- --------V-620092-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_POLYFILL" - DRAW A FILLED CONVEX POLYGON
- AX = 0092h
- CX = number of vertices
- ES:BX -> variable pointer record (see #03496)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The vertex array consists of pairs of words specifying the X and Y
- coordinates of each vertex; the work array is used internally and
- must contain at least four times as many bytes as the polygon is
- high in pixels
- This function is ignored in text modes
- If the polygon is non-convex, only a portion of it may be filled
- SeeAlso: AX=000Eh,AX=0027h,AX=0091h,AX=0093h,AX=0094h,AX=0095h
- Format of FGDRIVER POLYFILL variable pointer record:
- Offset Size Description (Table 03496)
- 00h WORD segment of vertex array (see #03498)
- 02h WORD offset of vertex array
- 04h WORD segment of work array
- 06h WORD offset of work array
- SeeAlso: #03497
- --------V-620093-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_POLYGON" - DRAW AN UNFILLED POLYGON
- AX = 0093h
- CX = number of vertices in polygon
- ES:BX -> variable pointer record (see #03497)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in text modes
- SeeAlso: AX=0091h,AX=0092h,AX=0094h,AX=0095h
- Format of FGDRIVER POLYGON variable pointer record:
- Offset Size Description (Table 03497)
- 00h WORD segment of WORD array containing vertex columns
- 02h WORD offset of WORD array containing vertex columns
- 04h WORD segment of WORD array containing vertex rows
- 06h WORD offset of WORD array containing vertex rows
- SeeAlso: #03496
- --------V-620094-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_POLYLINE" - DRAW AN UNFILLED POLYGON
- AX = 0094h
- CX = number of vertices in polygon
- ES:BX -> vertex array (see #03498)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This function is equivalent to "FG_POLYGON", but uses only a single
- array to define the vertices
- This call is ignored in text modes
- SeeAlso: AX=008Fh,AX=0092h,AX=0093h,AX=0095h
- Format of FGDRIVER POLYFILL/POLYLINE vertex array element:
- Offset Size Description (Table 03498)
- 00h WORD column
- 02h WORD row
- SeeAlso: #03497
- --------V-620095-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_POLYOFF" - DEFINE POLYGON DRAWING OFFSET
- AX = 0095h
- BX = horizontal offset (default 0)
- CX = vertical offset (default 0)
- Desc: define the offsets applied to all vertices of polygons drawn with
- "FG_POLYFILL" or "FG_POLYLINE"
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0092h,AX=0094h
- --------V-620096-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_PRINT" - DISPLAY STRING OF HARDWARE CHARACTERS
- AX = 0096h
- CX = length of string
- ES:BX -> string to display
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The string is displayed in the current color, and the graphics cursor
- is updated to be just to the right of the last displayed character
- This function is ignored in text modes
- SeeAlso: AX=000Ch,AX=0037h,AX=0065h,AX=0097h
- --------V-620097-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_PRINTC" - DISPLAY STRING OF HW CHARS (CLIPPED)
- AX = 0097h
- CX = length of string
- ES:BX -> string to display
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The string is displayed in the current color, and the graphics cursor
- is updated to be just to the right of the last displayed character;
- only the portion of the string that lies within the current clipping
- area is displayed
- This function is ignored in text modes
- SeeAlso: AX=0096h
- --------V-620098-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_PUTBLOCK" - RESTORE RECTANGLE OF DISPLAY
- AX = 0098h
- ES:BX -> buffer containing previously-saved image
- CX = left edge
- DX = right edge
- SI = top edge
- DI = bottom edge
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- In text modes, coordinates are character positions; in graphics modes,
- they are defined in screen space, and the left and right edges are
- adjusted to a byte boundary if necessary
- SeeAlso: AX=003Ch,AX=0099h
- --------V-620099-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_PUTIMAGE" - DISPLAY MODE-SPECIFIC BITMAP IMAGE
- AX = 0099h
- ES:BX -> buffer containing mode-specific bitmap
- CX = width in bytes
- DX = height in pixel rows
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The bitmap is displayed with its lower left corner at the graphics
- cursor position; color 0 is NOT treated as transparent
- SeeAlso: AX=0011h,AX=0024h,AX=0036h,AX=0044h,AX=0098h
- --------V-62009A-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_QUIET" - STOP CONTINUOUS SYNCHRONOUS SOUND
- AX = 009Ah
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call has no effect if there is no continuous sound playing
- SeeAlso: AX=0059h,AX=0080h,AX=00BDh,AX=00DCh
- --------V-62009B-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_RECT" - DRAW UNFILLED RECTANGLE IN SCREEN SPACE
- AX = 009Bh
- BX = left edge column
- CX = right edge column
- DX = top edge row
- SI = bottom edge row
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0006h,AX=0012h,AX=0023h,AX=003Ch
- --------V-62009C-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_RESET" - ERASE SCREEN AND RESTORE SCREEN ATTR
- AX = 009Ch
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in graphics modes
- The screen attributes are only restored if ANSI.SYS is loaded
- SeeAlso: AX=0028h,AX=00B0h
- --------V-62009D-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_RESIZE" - SET GRAPHICS MODE VIDEO PAGE SIZE
- AX = 009Dh
- BX = new page width in pixels
- CX = new page height in pixels
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The visible page must be set to 0000h before making this call
- The mouse, joysticks, expanded memory, and extended memory must be
- reinitialized after this call
- SeeAlso: AX=0084h,AX=00ACh
- --------V-62009E-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_RESTORE" - COPY REGION FROM HIDDEN TO VIS PAGE
- AX = 009Eh
- BX = left edge column
- CX = right edge column
- DX = top edge row
- SI = bottom edge row
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The left and right edges are adjusted to byte boundaries if necessary
- SeeAlso: AX=00A2h,AX=00C6h
- --------V-62009F-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_RESUME" - RESTART ASYNCHRONOUS SOUND
- AX = 009Fh
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=00BDh,AX=00C0h
- --------V-6200A0-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_REVIMAGE" - DISPLAY REVERSED IMAGE (BITMAP)
- AX = 00A0h
- ES:BX -> mode-specific bitmap
- CX = width of bitmap in bytes
- DX = height of bitmap in pixel rows
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in text modes
- The image is drawn with its lower left corner at the current graphics
- cursor position
- SeeAlso: AX=0011h,AX=0024h,AX=0036h,AX=0044h,AX=00A1h,AX=00A9h,AX=00B9h
- --------V-6200A1-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_REVMASK" - DISPLAY REVERSED IMAGE (MASKING MAP)
- AX = 00A1h
- ES:BX -> array containing image stored as a masking map (see #03475)
- CX = number of pixel runs in masking map
- DX = width of masking map in pixels
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in text modes and in native EGA and VGA graphics
- modes
- The image is drawn with its lower left corner at the current graphics
- cursor position
- SeeAlso: AX=0010h,AX=001Fh,AX=0034h,AX=00A0h,AX=00A9h,AX=00C5h
- --------V-6200A2-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SAVE" - COPY REGION FROM VISIBLE TO HIDDEN PAGE
- AX = 00A2h
- BX = left edge column
- CX = right edge column
- DX = top edge row
- SI = bottom edge row
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The left and right edges are adjusted to byte boundaries if necessary
- SeeAlso: AX=009Eh,AX=00C6h
- --------V-6200A3-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SCALE" - SCALE BITMAP
- AX = 00A3h
- ES:BX -> variable pointer record (see #03499)
- CX = width of source bitmap in pixels (0 < width <= 1024)
- DX = height of source bitmap in pixels (0 < height <= 1024)
- SI = desired width of scaled bitmap (0 < width <= 1024)
- DI = desired height of scaled bitmap (0 < height <= 1024)
- Return: nothing
- SeeAlso: AX=00B7h
- Format of FGDRIVER SCALE variable pointer record:
- Offset Size Description (Table 03499)
- 00h WORD segment of source bitmap (one pixel per byte)
- 02h WORD offset of source bitmap
- 04h WORD segment of buffer for resulting scaled bitmap
- 06h WORD offset of buffer for resulting scaled bitmap
- --------V-6200A4-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SCRLOCK" - GET STATE OF SCROLL LOCK KEY
- AX = 00A4h
- Return: AX = ScrollLock state (0000h off, 0001h on)
- Program: FGDRIVER is the external video driver for the shareware
- Fastgraph/Light by Ted Gruber Software
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=000Ah,AX=0082h,AX=00A8h,AX=00B1h
- --------V-6200A5-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SCROLL" - VERTICALLY SCROLL SCREEN REGION
- AX = 00A5h
- BX = left edge column
- CX = right edge column
- DX = top edge row
- SI = bottom edge row
- DI = number of pixels by which to scroll (positive scrolls up,
- negative scrolls down)
- ES = type of scroll
- 0000h circular (rows scrolled off are copied to vacated rows)
- else vacated rows are filled with the current color
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- In graphics modes, the left and right edges are adjusted to byte
- boundaries if necessary
- Circular scrolling uses part of the hidden page as a workspace
- SeeAlso: AX=0088h,AX=00B2h
- --------V-6200A6-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SETATTR" - SET TEXT-MODE CHARACTER ATTRIBUTE
- AX = 00A6h
- BX = foreground
- CX = background
- DX = blink (0000h nonblinking, 0001h blink)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in graphics modes
- SeeAlso: AX=000Bh,AX=003Ah,AX=0048h
- --------V-6200A7-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SETBANKS" - SET SVGA READ AND WRITE BANKS
- AX = 00A7h
- BX = memory bank from which to read (FFFFh leave unchanged)
- CX = memory bank to which to write (FFFFh leave unchanged)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=003Bh
- --------V-6200A8-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SETCAPS" - SET STATE OF CAPSLOCK KEY
- AX = 00A8h
- BX = new state (0000h off, 0001h on)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=000Ah,AX=0082h,AX=00A4h,AX=00B1h
- --------V-6200A9-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SETCLIP" - SET CLIPPING REGION
- AX = 00A9h
- BX = left edge of clipping region
- CX = right edge of clipping region
- DX = top edge of clipping region
- SI = bottom edge of clipping region
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0010h,AX=001Fh,AX=0034h,AX=003Eh,AX=00A1h,AX=00C5h
- --------V-6200AA-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SETCOLOR" - SET CURRENT COLOR
- AX = 00AAh
- BX = new color index (or text attribute in text modes)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0018h,AX=0040h,AX=0045h
- --------V-6200AB-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SETDACS" - SET VIDEO DAC CONTENTS
- AX = 00ABh
- CX = number of DAC registers to set (0001h to 0100h)
- DX = starting DAC register number (0000h to 00FFh)
- ES:BX -> buffer containing DAC red/green/blue triples
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The register number wraps back to zero after reaching FFh
- This call has no effect in text modes or graphics modes below 11h
- SeeAlso: AX=0041h,AX=004Eh,AX=0086h,INT 10/AX=1012h
- --------V-6200AC-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SETENTRY" - SET TYPE AND ADDRESS OF VIDEO PAGE
- AX = 00ACh
- BX = page number (00h-3Fh)
- CX = page address
- DX = page type (see #03484 at AX=0042h)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0038h,AX=0042h,AX=00B0h
- --------V-6200AD-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SETFUNC" - SET LOGICAL OPERATION FOR VIDEO OPS
- AX = 00ADh
- BX = operation
- 0000h replacement
- 0001h AND
- 0002h OR
- 0003h XOR
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This function is only available in native EGA/VGA graphics modes
- (0Dh to 12h)
- SeeAlso: AX=001Eh,AX=008Fh
- --------V-6200AE-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SETHPAGE" - SET HIDDEN VIDEO PAGE
- AX = 00AEh
- BX = new hidden page (0000h to 003Fh)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The specified page must be a physical page or a virtual page
- SeeAlso: AX=0043h,AX=00B2h,AX=00B6h
- --------V-6200AF-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SETLINES" - SET TEXT ROWS ON SCREEN
- AX = 00AFh
- BX = new screen size (25, 43, 50)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0047h
- --------V-6200B0-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SETMODE" - SELECT VIDEO MODE AND INITIALIZE
- AX = 00B0h
- BX = new video mode or FFFFh for current mode (see #03500)
- ES:DX -> WORD shareware splash screen flag
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call resets the active video page to page 0000h, the clipping
- region to the entire screen, text rows to 25, etc.
- in the shareware version, FGDRIVER sets the word pointed at by ES:DX
- to 9090h after it shows the shareware announcement to the user
- SeeAlso: AX=004Bh,INT 10/AH=00h
- (Table 03500)
- Values for FGDRIVER video mode:
- 00h-07h standard BIOS modes
- 09h PCjr/Tandy1000 320x200x16
- 0Bh Hercules graphics 720x348
- 0Ch Hercules graphics 320x200
- 0Dh-13h standard BIOS modes
- 14h VGA graphics 320x200x256
- 15h VGA graphics 320x400x256
- 16h VGA graphics 320x240x256
- 17h VGA graphics 320x480x256
- 18h SVGA graphics 640x400x256
- 19h SVGA graphics 640x480x256
- 1Ah SVGA graphics 800x600x256
- 1Bh SVGA graphics 1024x768x256
- 1Ch SVGA graphics 800x600x16
- 1Dh SVGA graphics 1024x768x16
- --------V-6200B1-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SETNUM" - SET STATE OF NUMLOCK KEY
- AX = 00B1h
- BX = new state (0000h off, 0001h on)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=000Ah,AX=0082h,AX=00A4h,AX=00A8h
- --------V-6200B2-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SETPAGE" - SET ACTIVE VIDEO PAGE
- AX = 00B2h
- BX = new video page (0000h to 003Fh)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The specified page must be a physical or virtual page
- SeeAlso: AX=0039h,AX=0042h,AX=0043h,AX=0050h,AX=0088h
- --------V-6200B3-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SETRGB" - SET VIDEO DAC REGISTER CONTENTS
- AX = 00B3h
- BX = palette or DAC register number
- CX = red color component
- DX = green component
- SI = blue component
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The register number may be negative for Tandy, PCjr, and 200-line
- EGA graphics modes to specify an intense color
- This call has no effect in text, CGA graphics, and Hercules graphics
- modes
- SeeAlso: AX=004Eh
- --------V-6200B4-----------------------------
- INT 62 u - FGDRIVER v4.02 - UNUSED
- AX = 00B4h
- Return: AX = 0000h
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- --------V-6200B5-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SETVIEW" - DEFINE VIEWPORT
- AX = 00B5h
- ES:BX -> variable record (see #03501)
- CX = viewport's top edge in screen space
- DX = viewport's bottom edge in screen space
- Return: nothing
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- SeeAlso: AX=004Fh
- Format of FGDRIVER SETVIEW variable record:
- Offset Size Description (Table 03501)
- 00h WORD viewport's left edge in viewport units
- 02h WORD viewport's right edge in viewport units
- 04h WORD viewport's top edge in viewport units
- 06h WORD viewport's bottom edge in viewport units
- 08h WORD viewport's left edge in screen space
- 0Ah WORD viewport's right edge in screen space
- --------V-6200B6-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SETVPAGE" - SET VISIBLE VIDEO PAGE
- AX = 00B6h
- BX = new video page (0000h to 003Fh)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The specified page must be a physical or virtual page
- SeeAlso: AX=0043h,AX=00AEh,AX=00B2h
- --------V-6200B7-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SHEAR" - SHEAR UNPACKED BITMAP
- AX = 00B7h
- ES:BX -> variable pointer record (see #03502)
- CX = bitmap width (0 < width <= 1024)
- DX = bitmap height (0 < height <= 1024)
- SI = size of resulting image (width for horiz. shear, height for vert.)
- DI = shear type
- 0000h horizontal shear to left
- 0001h horizontal shear to right
- 0002h vertical shear to left (left edge stretched up)
- 0003h vertical shear to right (right edge stretched up)
- Return: nothing
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- SeeAlso: AX=00A3h
- Format of FGDRIVER SHEAR variable pointer record:
- Offset Size Description (Table 03502)
- 00h WORD segment of source bitmap
- 02h WORD offset of source bitmap
- 04h WORD segment of buffer for resulting bitmap
- 06h WORD offset of buffer for resulting bitmap
- --------V-6200B8-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SHOWFLIC" - DISPLAY IMAGE FROM FLI/FLC FILE
- AX = 00B8h
- ES:BX -> ASCIZ filename for FLI/FLC file
- CX = number of times to display image file (0000h = continuously)
- DX = control flags (see #03479 at AX=0031h)
- Return: AX = status
- 0000h successful
- 0001h file not found
- 0002h not a valid FLI/FLC file
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- the FLI/FLC display may be stopped by the user by pressing Esc
- SeeAlso: AX=0030h,AX=0031h,AX=00B9h
- --------V-6200B9-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SHOWPCX" - DISPLAY IMAGE FROM PCX FILE
- AX = 00B9h
- ES:BX -> ASCIZ filename of PCX image
- CX = flags (see #03503)
- Return: AX = status
- 0000h success
- 0001h file not found
- 0002h not a PCX file
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This function is ignored in text modes and Hercules low-res graphics
- SeeAlso: AX=005Bh,AX=0060h"1.10",AX=006Ch,AX=006Dh,AX=006Eh,AX=00B8h,AX=00BAh
- SeeAlso: AX=00BBh
- Bitfields for FGDRIVER flags:
- Bit(s) Description (Table 03503)
- 0 use current palette rather than PCX file's palette
- 1 display image at cursor position instead of position in PCX header
- 2-15 reserved
- --------V-6200BA-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SHOWPPR" - DISPLAY IMAGE FROM PPR FILE
- AX = 00BAh
- ES:BX -> ASCIZ filename of packed pixel run image
- CX = width in pixels (nonzero)
- Return: AX = status
- 0000h successful
- 0001h file not found
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The image is displayed with its lower left corner at the current
- graphics cursor position
- This function is ignored in text modes and 256-color graphics modes
- SeeAlso: AX=005Bh,AX=006Ch,AX=006Dh,AX=006Eh,AX=00B9h,AX=00BBh
- --------V-6200BB-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SHOWSPR" - DISPLAY IMAGE FROM SPR FILE
- AX = 00BBh
- ES:BX -> ASCIZ filename of standard pixel run image
- CX = width in pixels (nonzero)
- Return: AX = status
- 0000h successful
- 0001h file not found
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The image is displayed with its lower left corner at the current
- graphics cursor position
- This function is ignored in text modes
- SeeAlso: AX=005Bh,AX=006Ch,AX=006Dh,AX=006Eh,AX=00B9h,AX=00BAh
- --------V-6200BC-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SOUND" - MAKE SOUND FOR SPECIFIED DURATION
- AX = 00BCh
- BX = frequency in Hertz (18-32767)
- CX = duration in clock ticks (0000h or negative for continuous sound)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored if asynchronous sound (AX=00A5h,AX=00A8h,
- AX=00AAh) is already in progress
- SeeAlso: AX=0059h,AX=0080h,AX=00BDh,AX=00C0h,AX=00DBh
- --------V-6200BD-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SOUNDS" - PLAY SOUNDS IN BACKGROUND
- AX = 00BDh
- CX = number of times to cycle through sound list
- ES:BX -> sounds array (see #03504)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored if asynchronous sound (AX=00A5h,AX=00A8h,
- AX=00AAh) is already in progress
- SeeAlso: AX=0059h,AX=0081h,AX=00BCh,AX=00C0h,AX=00DCh
- Format of FGDRIVER sounds array element:
- Offset Size Description (Table 03504)
- 00h WORD frequency of sound in Hertz (0000h ends array)
- 02h WORD duration of sound in clock ticks
- --------V-6200BE-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SPLIT" - ENABLE/DISABLE SPLIT SCREEN ENVIRONMNT
- AX = 00BEh
- BX = beginning row for bottom half of split-screen
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- --------V-6200BF-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_STALL" - PAUSE FOR SPECIFIED DURATION
- AX = 00BFh
- BX = duration in processor-dependent delay units (see AX=0070h)
- Return: after delay elapses
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0070h,INT 2F/AX=1224h
- --------V-6200C0-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SUSPEND" - TEMPORARILY STOP ASYNCHRONOUS SOUND
- AX = 00C0h
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call has no effect if there is no asynchronous sound in progress
- The program must not exit while sound is suspended
- SeeAlso: AX=0059h,AX=0080h,AX=00BDh,AX=00C0h,AX=00DBh
- --------V-6200C1-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SVGAINIT" - INITIALIZE FASTGRAPH SVGA KERNEL
- AX = 00C1h
- BX = method (see #03505)
- Return: AX = status
- 0000h no VESA BIOS or supported SVGA chipset
- 0001h using VESA BIOS
- 0002h-0016h specific chipset being used (same as "method" below)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This function must be called before attempting to set SVGA graphics
- modes (18h to 1Dh) or using "FG_BESTMODE", "FG_TESTMODE", or
- "FG_MEMORY"
- SeeAlso: AX=0025h,AX=00C2h,AX=00C3h
- (Table 03505)
- Values for FGDRIVER SVGA method:
- 0000h autodetect, give chipset-specific code priority over VESA
- 0001h autodetect, give VESA priority over chipset-specific code
- 0002h Ahead type "A"
- 0003h Ahead type "B"
- 0004h ATI 18800
- 0005h ATI 18800-1
- 0006h ATI 28800
- 0007h Chips & Technologies 82c451/455/456
- 0008h C&T 82c452
- 0009h C&T 82c453
- 000Ah Genoa 6000 series
- 000Bh Oak OTI-067
- 000Ch Paradise PVGA1a
- 000Dh Paradise WD90C00/WD90C10
- 000Eh Paradise WD90C11/WD90C30/WD90C31
- 000Fh Trident 8800
- 0010h Trident 8900
- 0011h Tseng ET3000
- 0012h Tseng ET4000
- 0013h Video7
- 0014h Cirrus Logic 5400 series
- 0015h S3
- 0016h Trident 8900B/8900C/9000
- --------V-6200C2-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SVGASTAT" - GET SVGA CHIPSET INFORMATION
- AX = 00C2h
- Return: AX = chipset information (see #03506)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0025h,AX=00C1h,AX=00C3h
- Bitfields for FGDRIVER chipset information:
- Bit(s) Description (Table 03506)
- 0 SVGA kernel initialized
- 1 VESA support enabled
- 2 extended video pages available in modes 13-23
- 3 SVGA chipset has separate read and write banks
- 4-15 reserved (0)
- --------V-6200C3-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_SVGAVER" - GET FASTGRAPH SVGA KERNEL VERSION
- AX = 00C3h
- ES:BX -> variable pointer record (see #03507)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=00C1h,AX=00C2h
- Format of FGDRIVER variable pointer record:
- Offset Size Description (Table 03507)
- 00h WORD segment of WORD buffer for major version
- 02h WORD offset of WORD buffer for major version
- 04h WORD segment of WORD buffer for minor version (hundredths)
- 06h WORD offset of WORD buffer for minor version
- --------V-6200C4-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_TCDEFINE" - DEFINE TRANSPARENCY OF COLOR INDEX
- AX = 00C4h
- BX = color index
- CX = transparency (00h opaque, other transparent)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This function is ignored in text modes
- SeeAlso: AX=00C5h,AX=00C6h
- --------V-6200C5-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_TCMASK" - SET TRANSPARENT COLORS
- AX = 00C5h
- BX = colors to consider transparent (bit 0 = color 0, etc)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This call is ignored in text modes
- The specified colors are considered transparent by "FG_TCXFER"
- SeeAlso: AX=00C4h,AX=00C6h
- --------V-6200C6-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_TCXFER" - COPY REGION EXCLUDING TRANSPARENT
- AX = 00C6h
- CX = source video page
- DX = destination video page
- ES:BX -> copy record (see #03508)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- Pixels which are in any of the colors defined as transparent with
- "FG_TCMASK" (see AX=00C5h) are left unchanged in the destination
- region
- The source and destination regions must not overlap if they are located
- on the same page
- This call is ignored in text modes
- SeeAlso: AX=00C4h,AX=00C5h,AX=00CAh
- --------V-6200C7-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_TESTMODE" - CHECK IF VIDEO MODE AVAILABLE
- AX = 00C7h
- BX = desired video mode (00h-17h, also 18h-1Dh after "FG_SVGAINIT")
- CX = required number of video pages (ignore memory size if <= 0)
- Return: AX = status
- 0000h mode not available with requested number of pages
- 0001h mode is available
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0005h,AX=00B0h
- --------V-6200C8-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_TEXT" - DISPLAY STRING OF CHARACTERS
- AX = 00C8h
- CX = length of string
- ES:BX -> string
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The string is displayed starting at the text cursor position using the
- current text attribute (text modes) or color index (graphics modes)
- The text cursor position is updated after this call
- SeeAlso: AX=000Ch,AX=0096h,AX=00C9h
- --------V-6200C9-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_TEXTC" - DISPLAY STRING OF CHARACTERS (CLIPPED)
- AX = 00C9h
- CX = length of string
- ES:BX -> string
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- The string is displayed starting at the text cursor position using the
- current text attribute (text modes) or color index (graphics modes),
- showing only the portion within the current clipping window
- The text cursor position is updated after this call
- SeeAlso: AX=00C8h
- --------V-6200CA-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_TRANSFER" - COPY REGION
- AX = 00CAh
- CX = source video page
- DX = destination video page
- ES:BX -> copy record (see #03508)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- The source and destination regions must not overlap if they are located
- on the same page
- SeeAlso: AX=009Eh,AX=00A2h,AX=00A5h,AX=00C6h
- Format of FGDRIVER copy record:
- Offset Size Description (Table 03508)
- 00h WORD left edge column of source region
- 02h WORD right edge column of source region
- 04h WORD top edge row of source region
- 06h WORD bottom edge row of source region
- 08h WORD left edge of destination
- 0Ah WORD bottom edge of destination
- --------V-6200CB-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_UNPACK" - EXPAND MODE-SPECIFIC BITMAP
- AX = 00CBh
- ES:BX -> variable pointer record (see #03509)
- CX = size of source bitmap in bytes
- Return: result buffer filled
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- SeeAlso: AX=0083h
- Format of FGDRIVER UNPACK variable pointer record:
- Offset Size Description (Table 03509)
- 00h WORD segment of source bitmap
- 02h WORD offset of source bitmap
- 04h WORD segment of buffer for resulting bitmap
- 06h WORD offset of buffer for resulting bitmap
- --------V-6200CC-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_VBADDR" - GET ADDRESS OF VIRTUAL BUFFER
- AX = 00CCh
- BX = virtual buffer handle (0000h-001Fh)
- Return: DX:AX -> virtual buffer
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- SeeAlso: AX=00CDh,AX=00CEh,AX=00CFh,AX=00D3h
- --------V-6200CD-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_VBALLOC" - CREATE VIRTUAL BUFFER
- AX = 00CDh
- BX = width of virtual buffer in pixels
- CX = height in pixels
- Return: AX = handle for virtual buffer, or
- FFFEh out of memory
- FFFFh virtual buffer table full
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- SeeAlso: AX=00CCh,AX=00CEh,AX=00D0h,AX=00D1h,AX=00D2h,AX=00D4h
- --------V-6200CE-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_VBCLOSE" - CLOSE ACTIVE VIRTUAL BUFFER
- AX = 00CEh
- Desc: close the active virtual buffer and direct further graphics to the
- active video page
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- SeeAlso: AX=00CCh,AX=00D1h,AX=00D4h,AX=00D5h,AX=00D9h
- --------V-6200CF-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_VBCOPY" - COPY RECT BETWEEN VIRTUAL BUFFERS
- AX = 00CFh
- ES:BX -> variable record (see #03510)
- CX = handle for source virtual buffer
- DX = handle for destination virtual buffer
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- if the destination buffer is the same as the source buffer, the regions
- must not overlap
- SeeAlso: AX=00D0h,AX=00D1h,AX=00D4h,AX=00D6h,AX=00D7h
- Format of FGDRIVER VBCOPY variable record:
- Offset Size Description (Table 03510)
- 00h WORD source region's left edge
- 02h WORD source region's right edge
- 04h WORD source region's top edge
- 06h WORD source region's bottom edge
- 08h WORD X coordinate of destination's upper left corner
- 0Ah WORD Y coordinate of destination's upper left corner
- --------V-6200D0-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_VBCUT" - COPY RECT FROM VIDEO TO VIRTUAL BUFFER
- AX = 00D0h
- BX = source region's left edge
- CX = source region's right edge
- DX = source region's top edge
- SI = source region's bottom edge
- DI = X coordinate of destination's upper left corner
- ES = Y coordinate of destination's upper left corner
- Desc: copy a rectangle from the active video page to the active virtual
- buffer
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- SeeAlso: AX=00CDh,AX=00CFh,AX=00D4h,AX=00D6h
- --------V-6200D1-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_VBDEFINE" - CREATE VIRTUAL BUFFER
- AX = 00D1h
- ES:BX -> memory block for virtual buffer
- CX = buffer width in pixels
- DX = buffer height in pixels
- Return: AX = virtual buffer handle
- FFFFh on error
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- the application-provided buffer must be large enough to hold CX*DX
- bytes
- SeeAlso: AX=00CCh,AX=00CDh,AX=00CEh,AX=00D2h,AX=00D4h,AX=00D5h
- --------V-6200D2-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_VBFREE" - RELEASE VIRTUAL BUFFER
- AX = 00D2h
- BX = virtual buffer handle
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- this function should be used only for buffers created with FG_VBALLOC
- SeeAlso: AX=00CDh,AX=00D4h,AX=00D5h
- --------V-6200D3-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_VBHANDLE" - GET ACTIVE VIRTUAL BUFFER'S HANDLE
- AX = 00D3h
- Return: AX = handle for active virtual buffer
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- SeeAlso: AX=00CCh,AX=00D4h
- --------V-6200D4-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_VBINIT" - INITIALIZE VIRTUAL BUFFER ENVIRONMENT
- AX = 00D4h
- Return: nothing
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- this function must be called before any other virtual buffer functions
- are used
- SeeAlso: AX=00CDh,AX=00D5h
- --------V-6200D5-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_VBOPEN" - MAKE VIRTUAL BUFFER ACTIVE
- AX = 00D5h
- BX = virtual buffer handle
- Return: AX = status
- 0000h successful
- FFFEh no buffer defined for specified handle
- FFFFh invalid buffer handle
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- SeeAlso: AX=00CDh,AX=00CEh,AX=00D1h,AX=00D4h,AX=00D9h
- --------V-6200D6-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_VBPASTE" - COPY RECT FROM VIRTUAL BUF TO VIDEO
- AX = 00D6h
- BX = source region's left edge
- CX = source region's right edge
- DX = source region's top edge
- SI = source region's bottom edge
- DI = X coordinate of destination's upper left corner
- ES = Y coordinate of destination's upper left corner
- Desc: copy a rectangle from the active virtual buffer to the active video
- page
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- SeeAlso: AX=00CFh,AX=00D0h,AX=00D4h,AX=00D7h
- --------V-6200D7-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_VBTCCOPY" - COPY RECTANGLE BETWEEN VIRTUAL BUFS
- AX = 00D7h
- ES:BX -> variable record (see #03511)
- CX = source virtual buffer's handle
- DX = destination virtual buffer's handle
- Desc: copy rectangle from one virtual buffer to another with transparent
- colors
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- if the destination buffer is the same as the source buffer, the regions
- must not overlap
- SeeAlso: AX=00CFh,AX=00D0h,AX=00D6h,AX=00D8h
- Format of FGDRIVER VBTCCOPY variable record:
- Offset Size Description (Table 03511)
- 00h WORD source region's left edge
- 02h WORD source region's right edge
- 04h WORD source region's top edge
- 06h WORD source region's bottom edge
- 08h WORD X coordinate of destination region's upper left corner
- 0Ah WORD Y coordinate of destination region's upper left corner
- --------V-6200D8-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_VBTCXFER" - COPY RECTANGLE TO ACTIVE VIDEO PAGE
- AX = 00D8h
- BX = source region's left edge
- CX = source region's right edge
- DX = source region's top edge
- SI = source region's bottom edge
- DI = X coordinate of destination's upper left corner
- ES = Y coordinate of destination's upper left corner
- Desc: copy a rectangle from the active virtual buffer to the active video
- page, with transparent colors
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- SeeAlso: AX=00D6h,AX=00D7h
- --------V-6200D9-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_VBUNDEF" - RELEASE HANDLE FOR VIRTUAL BUFFER
- AX = 00D9h
- BX = virtual buffer handle
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- the specified handle must not reference the currently-active virtual
- buffer
- SeeAlso: AX=00D1h,AX=00D5h
- --------V-6200DA-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_VGASTATE" - SAVE/RESTORE VGA CONTROLLER STATE
- AX = 00DAh
- BX = direction (0000h save, else restore)
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474)
- this function is only meaningful in modes 0Dh and above
- --------V-6200DB-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_VOICE" - START SOUND
- AX = 00DBh
- BX = channel on TI sound chip
- 1-3 = channels 1-3, 4 = channel 4 with periodic noise,
- 5 = channel 4 with white noise
- CX = frequency in Hz (18-32767 for channels 1-3; 0=512 Hz, 1=1024 Hz,
- 2=2048 Hz for channels 4 and 5)
- DX = volume
- SI = duration in clock ticks (continuous if <= 0)
- Program: FGDRIVER is the external video driver for the shareware
- Fastgraph/Light by Ted Gruber Software
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This function is only available on the PCjr and Tandy 1000 machines
- SeeAlso: AX=0080h,AX=00BCh,AX=00DCh
- --------V-6200DC-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_VOICES" - PLAY SOUNDS IN BACKGROUND
- AX = 00DCh
- ES:BX -> tone array (see #03512)
- CX = number of times to repeat tone array
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- This function is only available on the PCjr and Tandy 1000 machines
- SeeAlso: AX=0059h,AX=0081h,AX=00BDh,AX=00DBh
- Format of FGDRIVER tone array element:
- Offset Size Description (Table 03512)
- 00h WORD channel number (0000h terminates array)
- 02h WORD frequency
- 04h WORD volume
- 06h WORD duration in 1/72.8 seconds
- --------V-6200DD-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_WAITFOR" - DELAY FOR SPECIFIED DURATION
- AX = 00DDh
- BX = duration in clock ticks
- Return: after delay elapses
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=00BFh,INT 1A/AX=FF01h
- --------V-6200DE-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_WAITKEY" - FLUSH KEYBOARD BUFFER AND AWAIT KEY
- AX = 00DEh
- Return: after next key pressed
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=000Ah,AX=0046h,AX=0063h,AX=0069h,INT 16/AH=00h
- --------V-6200DF-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_WAITVR" - ENABLE/DISABLE VERTICAL RETRACE WAIT
- AX = 00DFh
- BX = new state (0000h disabled, 0001h enabled)
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- --------V-6200E0-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_WHERE" - GET CURRENT CURSOR POSITION
- AX = 00E0h
- ES:BX -> variable pointers (see #03513)
- Return: indicated variables filled with cursor row and column for active
- display
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=0054h,AX=0058h,AX=006Bh,AX=007Eh
- Format of FGDRIVER variable pointers:
- Offset Size Description (Table 03513)
- 00h WORD segment of WORD buffer for cursor row
- 02h WORD offset of WORD buffer for cursor row
- 04h WORD segment WORD buffer for cursor column
- 06h WORD offset WORD buffer for cursor column
- --------V-6200E1-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_XALPHA" - CONVERT SCREEN COLUMN TO CHAR COLUMN
- AX = 00E1h
- BX = screen space column
- Return: AX = character space column containing specified coordinate
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=00E2h,AX=00E4h
- --------V-6200E2-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_XCONVERT" - CONVERT CHAR COLUMN TO SCREEN COL
- AX = 00E2h
- BX = character space column
- Return: AX = screen space column of leftmost pixel in specified character col
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=00E2h,AX=00E5h
- --------V-6200E3-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_XVIEW" - CONVERT VIEWPORT COORDINATE
- AX = 00E3h
- BX = horizontal viewport coordinate
- Return: AX = screen space X coordinate corresponding to supplied coordinate
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- if no viewport has been defined, the returned coordinate will be the
- same as the viewport coordinate
- SeeAlso: AX=00E2h,AX=00E6h
- --------V-6200E4-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_YALPHA" - CONVERT SCREEN ROW TO CHARACTER ROW
- AX = 00E4h
- BX = screen space row
- Return: AX = character space row containing specified coordinate
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=00E1h,AX=00E5h
- --------V-6200E5-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_YCONVERT" - CONVERT CHARACTER ROW TO SCREEN ROW
- AX = 00E5h
- BX = character space row
- Return: AX = screen space row of topmost pixel in specified character row
- Note: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- SeeAlso: AX=00E2h,AX=00E4h,AX=00E6h
- --------V-6200E6-----------------------------
- INT 62 u - FGDRIVER v4.02 - "FG_YVIEW" - TRANSLATE VERTICAL VIEWPORT COORDINATE
- AX = 00E6h
- BX = viewport Y coordinate
- Return: AX = screen space row for viewport coordinate
- Program: FGDRIVER is the external video driver for the shareware
- Fastgraph/Light by Ted Gruber Software
- Notes: the FGDRIVER functions are rearranged with each major release, but
- their parameters do not change (see #03474 at AX=0000h)
- if no viewport has been defined, the returned coordinate will be the
- same as the viewport coordinate
- SeeAlso: AX=00E3h,AX=00E5h
- --------T-6201-------------------------------
- INT 62 - Cswitch - GIVE UP REST OF TIME-SLICE
- AH = 01h
- Program: Cswitch is a set of multitasking functions by Herb Rose
- SeeAlso: AH=05h"Cswitch",AH=06h"Cswitch",INT 15/AX=1000h,INT 2F/AX=1680h
- --------N-6201-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - NOP for ETHDEV.ODI
- AH = 01h
- Return: CF clear if successful
- CF set on error
- AL = error code
- Range: INT 4C to INT FB, selected by configuration
- SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
- SeeAlso: INT 64/AH=01h"BW-NFS"
- --------T-6202-------------------------------
- INT 62 - Cswitch - WAIT FOR SEMAPHORE
- AH = 02h
- DX = semaphore number (0-63)
- Return: AX = FFFFh bad semaphore number
- else success
- SeeAlso: AH=03h"Cswitch",AH=04h"Cswitch"
- --------N-6202-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - INITIALIZE
- AH = 02h
- Return: CF clear if successful
- CF set on error
- AL = error code
- SeeAlso: AH=00h"ETHDEV",AH=03h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
- SeeAlso: INT 63/AH=03h"BW-TCP",INT 63/AH=24h"BW-TCP",INT 64/AH=01h"BW-NFS"
- --------T-6203-------------------------------
- INT 62 - Cswitch - CHECK SEMAPHORE
- AH = 03h
- DX = semaphore number (0-63)
- Return: AX = status
- FFFFh not owned
- else owned
- SeeAlso: AH=02h,AH=04h
- --------N-6203-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET REAL IP ADDRESS
- AH = 03h
- DS:SI -> DWORD buffer for IP address
- Return: CF clear if successful
- CF set on error
- AL = error code
- Range: INT 4C to INT FB, selected by configuration
- Note: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
- interrupts (62h and 63h by default); the BW-NFS client uses a third
- consecutive interrupt (64h by default) if it is loaded
- SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
- SeeAlso: INT 64/AH=01h"BW-NFS"
- --------T-6204-------------------------------
- INT 62 - Cswitch - TRIGGER SEMAPHORE
- AH = 04h
- DX = semaphore number (0-63)
- Return: AX = status
- FFFFh bad semaphore number
- else success
- SeeAlso: AH=02h"Cswitch",AH=03h"Cswitch"
- --------N-6204-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - SET ???
- AH = 04h
- BX = ???
- ES:SI -> FAR routine for ???
- Return: CF clear if successful
- CF set on error
- AL = error code
- SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
- SeeAlso: INT 64/AH=01h"BW-NFS"
- --------T-6205-------------------------------
- INT 62 - Cswitch - SLEEP
- AH = 05h
- BX = seconds to sleep
- SeeAlso: AH=01h"Cswitch",AH=06h"Cswitch",AH=08h"Cswitch"
- --------N-6205-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
- AH = 05h
- ???
- Return: CF clear if successful
- CF set on error
- AL = error code
- SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
- SeeAlso: INT 64/AH=01h"BW-NFS"
- --------T-6206-------------------------------
- INT 62 - Cswitch - SUSPEND
- AH = 06h
- SeeAlso: AH=05h"Cswitch",AH=08h"Cswitch"
- --------N-6206-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
- AH = 06h
- ???
- Return: CF clear if successful
- CF set on error
- AL = error code
- Range: INT 4C to INT FB, selected by configuration
- Note: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
- interrupts (62h and 63h by default); the BW-NFS client uses a third
- consecutive interrupt (64h by default) if it is loaded
- SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
- SeeAlso: INT 64/AH=01h"BW-NFS"
- --------T-6207-------------------------------
- INT 62 - Cswitch - SPAWN
- AH = 07h
- ES:BX -> function address to start executing at
- CX = priority (1-10)
- Return: AX = result/status
- FFFDh no free memory control blocks
- FFFEh no free task control blocks
- FFFFh not enough memory to create new task stack
- >0 the tcb number of the new task, indicating no error
- SeeAlso: AH=0Fh"Cswitch",AH=10h"Cswitch"
- --------N-6207-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
- AH = 07h
- DS:SI -> ???
- Return: CF clear if successful
- CF set on error
- AL = error code
- SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
- SeeAlso: INT 64/AH=01h"BW-NFS"
- --------T-6208-------------------------------
- INT 62 - Cswitch - WAKE UP TASK
- AH = 08h
- BX = tcb identifier
- SeeAlso: AH=05h,AH=06h
- --------N-6208-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
- AH = 08h
- CX = ???
- ES:SI -> ??? buffer (see #03514)
- Return: CF clear if successful
- CF set on error
- AL = error code
- Range: INT 4C to INT FB, selected by configuration
- SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
- SeeAlso: INT 64/AH=01h"BW-NFS"
- Format of BW-TCP ??? buffer:
- Offset Size Description (Table 03514)
- 00h 6 BYTEs hardware address???
- 06h 6 BYTEs ???
- 0Ch WORD ???
- 0Eh WORD ???
- ----------6208--CXFFFE-----------------------
- INT 62 - MS SQL Server/Sybase DBLIBRARY interface - UNINSTALL/GET PSP ADDR
- AH = 08h
- CX = FFFEh
- DX = FFFFh
- Return: AX = PSP address of resident DBLIBRARY
- Note: this call does not free the memory allocated to the TSR; the calling
- code must do the deallocation.
- SeeAlso: INT 62"DBLIBRARY"
- --------T-6209-------------------------------
- INT 62 - Cswitch - SET PRIORITY
- AH = 09h
- BX = new base priority (1-10)
- Note: the lower the priority is numerically, the more often the task will run
- --------N-6209-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - HOOK TIMER INTERRUPT
- AH = 09h
- Return: CF clear if successful
- AX = handler ID
- CF set on error
- AL = error code
- Range: INT 4C to INT FB, selected by configuration
- Note: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
- interrupts (62h and 63h by default); the BW-NFS client uses a third
- consecutive interrupt (64h by default) if it is loaded
- SeeAlso: AH=0Ah"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
- SeeAlso: INT 64/AH=01h"BW-NFS"
- --------T-620A-------------------------------
- INT 62 - Cswitch - TEST MESSAGE QUEUE
- AH = 0Ah
- DX = queue number (0-63)
- Return: AX = result/message size
- 0000h nothing on queue
- FFFFh bad queue number
- else number of bytes in first message in queue
- SeeAlso: AH=0Bh"Cswitch",AH=0Ch"Cswitch"
- --------N-620A-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - UNHOOK TIMER INTERRUPT
- AH = 0Ah
- DX = handler ID
- Return: CF clear if successful
- CF set on error
- AL = error code
- SeeAlso: AH=09h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
- SeeAlso: INT 64/AH=01h"BW-NFS"
- --------T-620B-------------------------------
- INT 62 - Cswitch - SEND MESSAGE
- AH = 0Bh
- CX = number of bytes to write
- DS:SI -> buffer
- DX = queue number (0-63)
- Return: AX = result/message size
- 0000h no message was on queue
- FFFEh triggered by something arriving, redo the call
- FFFFh bad queue number
- else number of bytes in message
- SeeAlso: AH=0Ah"Cswitch",AH=0Ch"Cswitch"
- --------N-620B-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ADD ???
- AH = 0Bh
- AL = ???
- DX = ???
- BP = ???
- ES:SI -> ???
- Return: CF clear if successful
- CF set on error
- AL = error code
- SeeAlso: AH=0Ch"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
- SeeAlso: INT 64/AH=01h"BW-NFS"
- --------T-620C-------------------------------
- INT 62 - Cswitch - READ MESSAGE
- AH = 0Ch
- CX = number of bytes to read
- DS:SI -> buffer
- DX = queue number (0-63)
- Return: AX = status
- FFFFh bad queue number
- else number of bytes transferred
- SeeAlso: AH=0Ah,AH=0Bh
- --------N-620C-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - REMOVE ???
- AH = 0Ch
- DX = ???
- BP = ???
- Return: CF clear if successful
- CF set on error
- AL = error code
- Range: INT 4C to INT FB, selected by configuration
- Note: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
- interrupts (62h and 63h by default); the BW-NFS client uses a third
- consecutive interrupt (64h by default) if it is loaded
- SeeAlso: AH=0Bh"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
- SeeAlso: INT 64/AH=01h"BW-NFS"
- --------T-620D-------------------------------
- INT 62 - Cswitch - DON'T ALLOW TASK TO BE SWAPPED OUT
- AH = 0Dh
- SeeAlso: AH=0Eh"Cswitch"
- --------N-620D-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - NOP for ETHDEV.ODI
- AH = 0Dh
- Return: CF clear if successful
- CF set on error
- AL = error code
- SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
- SeeAlso: INT 64/AH=01h"BW-NFS"
- --------T-620E-------------------------------
- INT 62 - Cswitch - ALLOW TASK TO BE SWAPPED OUT
- AH = 0Eh
- SeeAlso: AH=0Dh"Cswitch"
- --------N-620E-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - BEGIN CRITICAL SECTION
- AH = 0Eh
- Return: CF clear if successful
- CF set on error
- AL = error code
- SeeAlso: AH=0Fh"ETHDEV",AH=10h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
- SeeAlso: INT 63/AH=03h"BW-TCP",INT 63/AH=24h"BW-TCP",INT 64/AH=01h"BW-NFS"
- --------T-620F-------------------------------
- INT 62 - Cswitch - LOAD AND RUN PROGRAM FROM DISK
- AH = 0Fh
- ES:BX -> command line
- CX = priority (1-10)
- DX = background flag (nonzero allows loading to EMS)
- Return: AX = status
- 0000h task loader queue is full
- 0001h no error
- SeeAlso: AH=07h"Cswitch",AH=10h"Cswitch",AH=13h"Cswitch"
- --------N-620F-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - END CRITICAL SECTION
- AH = 0Fh
- Return: CF clear if successful
- CF set on error
- AL = error code
- Range: INT 4C to INT FB, selected by configuration
- Note: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
- interrupts (62h and 63h by default); the BW-NFS client uses a third
- consecutive interrupt (64h by default) if it is loaded
- SeeAlso: AH=0Eh"ETHDEV",AH=10h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
- SeeAlso: INT 63/AH=03h"BW-TCP",INT 63/AH=24h"BW-TCP",INT 64/AH=01h"BW-NFS"
- --------T-6210-------------------------------
- INT 62 - Cswitch - TERMINATE SPAWNED PROGRAM
- AH = 10h
- SeeAlso: AH=07h"Cswitch",AH=0Fh"Cswitch"
- --------N-6210-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - QUERY CRITICAL SECTION
- AH = 10h
- Return: CF clear if no critical section active
- CF set if in critical section
- SeeAlso: AH=0Eh"ETHDEV",AH=0Fh"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
- SeeAlso: INT 63/AH=03h"BW-TCP",INT 63/AH=24h"BW-TCP",INT 64/AH=01h"BW-NFS"
- --------T-6211-------------------------------
- INT 62 - Cswitch - GET TCB INFORMATION
- AH = 11h
- ES:BX -> a pointer which will be set to the tcb address
- Return: AX = tcb indentifier
- SeeAlso: AH=12h
- --------N-6211-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - SET ???
- AH = 11h
- ES:SI -> ???
- Return: CF clear
- SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
- SeeAlso: INT 64/AH=01h"BW-NFS"
- --------T-6212-------------------------------
- INT 62 - Cswitch - GET TCB ADDRESS
- AH = 12h
- ES:BX -> a pointer which will be set to the tcb table address
- Return: AX = tcb indentifier
- SeeAlso: AH=11h"Cswitch"
- --------N-6212-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET SOCKET NUMBER???
- AH = 12h
- Return: CF clear if successful
- AX = socket number??? (memory variable incremented after reading)
- CF set on error
- AL = error code
- Range: INT 4C to INT FB, selected by configuration
- Note: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
- interrupts (62h and 63h by default); the BW-NFS client uses a third
- consecutive interrupt (64h by default) if it is loaded
- SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
- SeeAlso: INT 64/AH=01h"BW-NFS"
- --------T-6213-------------------------------
- INT 62 - Cswitch - CHECK STATUS OF PREVIOUS LOAD_TASK
- AH = 13h
- Return: AX = result
- FFFCh no Memory Control Blocks available
- FFFDh no TCBs available
- FFFEh insufficient memory
- FFFFh cannot open file
- 0000h load in progress (not done yet)
- else tcb indentifier
- SeeAlso: AH=0Fh
- --------N-6213-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
- AH = 13h
- CX = ???
- Return: CF clear if successful
- AL = 00h
- CF set on error
- AL = error code
- SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
- SeeAlso: INT 64/AH=01h"BW-NFS"
- --------N-6214-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
- AH = 14h
- ES:SI -> ???
- Return: CF clear if successful
- AL = 00h
- CF set on error
- AL = error code
- SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
- SeeAlso: INT 64/AH=01h"BW-NFS"
- --------N-6215-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET ???
- AH = 15h
- Return: CF clear if successful
- AX = ??? (destroyed???)
- CF set on error
- AL = error code
- Range: INT 4C to INT FB, selected by configuration
- Notes: call this function after reading the "ETHDEV27" device
- the Beame&Whiteside TCP/IP protocol stack uses two consecutive
- interrupts (62h and 63h by default); the BW-NFS client uses a third
- consecutive interrupt (64h by default) if it is loaded
- SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
- INT 64/AH=01h"BW-NFS"
- --------N-6216-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
- AH = 16h
- ???
- Return: CF clear if successful
- CF set on error
- AL = error code
- SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
- SeeAlso: INT 64/AH=01h"BW-NFS"
- --------N-6217-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
- AH = 17h
- DX = segment of ???
- Return: CF clear
- SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
- SeeAlso: INT 64/AH=01h"BW-NFS"
- --------N-6218-------------------------------
- INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ALLOCATE AND MAP EMS FOR DRIVER
- AH = 18h
- Return: CF clear if successful
- CF set on error
- AL = error code
- Range: INT 4C to INT FB, selected by configuration
- Notes: calls function 17h after EMS allocated and mapped
- the Beame&Whiteside TCP/IP protocol stack uses two consecutive
- interrupts (62h and 63h by default); the BW-NFS client uses a third
- consecutive interrupt (64h by default) if it is loaded
- SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=03h"BW-TCP",INT 63/AH=24h
- SeeAlso: INT 64/AH=01h"BW-NFS"
- --------R-6247-------------------------------
- INT 62 - PC Tools v7 COMMUTE - ???
- AH = 47h
- AL = subfunction (00h-31h)
- ???
- CF set
- Return: ???
- Program: COMMUTE is a remote-control program bundled with Central Point
- Software's PC Tools
- --------R-6248-------------------------------
- INT 62 - PC Tools v7 COMMUTE - ???
- AH = 48h
- AL = ???
- ???
- CF set
- Return: ???
- --------R-6249-------------------------------
- INT 62 - PC Tools v7 COMMUTE - ???
- AH = 49h
- ???
- CF set
- Return: ???
- Note: may be the same as AH=4Ch
- --------R-624A-------------------------------
- INT 62 - PC Tools v7 COMMUTE - ???
- AH = 4Ah
- AL = subfunction (00h-46h)
- ???
- CF set
- Return: ???
- --------R-624B--BX1234-----------------------
- INT 62 - PC Tools v7 COMMUTE - ???
- AH = 4Bh
- BX = 1234h
- CX = 1234h
- ES = ???
- CF set
- Return: ???
- Program: COMMUTE is a remote-control program bundled with Central Point
- Software's PC Tools
- --------R-624C-------------------------------
- INT 62 - PC Tools v7 COMMUTE - ???
- AH = 4Ch
- BL = subfunction
- 00h ???
- 02h ???
- Return: CF clear if successful
- CF set on error
- --------R-626262-----------------------------
- INT 62 - PC Tools v7 COMMUTE - INSTALLATION CHECK
- AX = 6262h
- CF set
- Return: AX = 0000h
- BX = segment of resident code's PSP
- Program: COMMUTE is a remote-control program bundled with Central Point
- Software's PC Tools
- --------s-62C0-------------------------------
- INT 62 U - GWBTSR - API
- AH = C0h
- AL = function
- 00h installation check
- Return: AX = 00FFh if installed
- 01h ???
- Program: GWBTSR is a huge (48K) resident mixer controller for the Gateway 2000
- sound card (OEM version of Aztech Sound Galaxy)
- Index: installation check;GWBTSR
- --------N-62FE-------------------------------
- INT 62 - BW-TCP - ETHDRV.SYS - MAP EMS PAGE FRAME
- AH = FEh
- AL = direction
- 00h map in driver's memory block
- 01h map out driver's memory block
- Return: CF clear if successful
- CF set on error
- AL = error code
- Range: INT 4C to INT FB, selected by configuration
- Notes: this function is supported by at least the SLIP and ODI versions of
- ETHDEV.SYS
- the Beame&Whiteside TCP/IP protocol stack uses two consecutive
- interrupts (62h and 63h by default); the BW-NFS client uses a third
- consecutive interrupt (64h by default) if it is loaded
- SeeAlso: INT 21/AH=3Fh"BW-TCP",INT 62/AH=00h"ETHDEV",INT 62/AH=18h"ETHDEV"
- SeeAlso: INT 63/AH=03h"BW-TCP",INT 63/AH=24h,INT 64/AH=FEh
- --------*-63---------------------------------
- INT 63 - reserved for user interrupt
- --------d-63---------------------------------
- INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA
- Desc: this vector stores the last four bytes of the parameter table for
- hard disk 0
- SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 62"Adaptec",INT 64"Adaptec"
- --------b-63---------------------------------
- INT 63 - TI Professional PC - OPTION ROM DATA AREA POINTER (NOT A VECTOR!)
- Desc: the low word of this vector contains the segment of the RAM data area
- to be used by the expansion ROM at F400h:4000h, and the high word
- contains the length of the data area; this segment and size are
- both set to 0000h if no ROM is installed at F400h:4000h
- SeeAlso: INT 60"TI Professional PC",INT 62"TI Professional"
- SeeAlso: INT 64"TI Professional PC"
- ----------63---------------------------------
- INT 63 - Oracle SQL Protected Mode Executive - ???
- --------d-63---------------------------------
- INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40
- Desc: the "4+Power" quad floppy controller BIOS hooks INT 13 (or INT 40 if
- INT 13 has been moved there) and places the old value here
- ----------63---------------------------------
- INT 63 - Kofax KF9X00 image manipulation card interface
- --------Q-63---------------------------------
- INT 63 - DESQview/X - SOCKET API
- InstallCheck: test for the string "dvxunix" (yes, lowercase) at offset 9
- from the interrupt handler start (see #03515)
- Notes: parameters are passed by patching (!) data field immediately following
- the entry point, as detailed below (see #03515); the preferred
- method for calling the socket API is via INT 15/AX=DE2Eh
- SeeAlso: INT 15/AX=DE2Eh,INT BE"DESQview"
- Index: installation check;DESQview/X socket interface
- Format of DESQview/X socket interrupt handler entry:
- Offset Size Description (Table 03515)
- 00h 3 BYTEs near jump or short jump + NOP to actual interrupt handler
- 03h WORD offset from following pointer for initial top of local stack
- 05h DWORD pointer to argument/stack block (see INT 15/AX=DE2Eh)
- 09h 7 BYTEs signature "dvxunix"
- --------b-6300-------------------------------
- INT 63 - HP 100LX - MAP HIGH MEMORY
- AH = 00h
- AL = physical page (00h seg C000, 01h seg C400h, ...)
- BX = zero-based logical page
- CX = page number
- DX = device ID (00h system ROM, 05h plugin, etc.)
- Return: ???
- SeeAlso: AH=01h
- --------N-6300-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - SET IP ADDRESS???
- AH = 00h
- DS:BX -> DWORD containing IP address (big-endian)
- Return: CF clear if successful
- CF set on error
- AX destroyed
- Range: INT 4D to INT FC, selected by configuration
- Note: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
- interrupts (62h and 63h by default); the BW-NFS client uses a third
- consecutive interrupt (64h by default) if it is loaded
- SeeAlso: AH=01h"BW-TCP",AH=02h"BW-TCP"
- --------b-6301-------------------------------
- INT 63 - HP 100LX - SAVE/RESTORE MEMORY MAP
- AH = 01h
- AL = function (00h save, 01h restore)
- ???
- Return: ???
- --------N-6301-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - ???
- AH = 01h
- ES:BX -> ???
- ???
- Return: ???
- Range: INT 4D to INT FC, selected by configuration
- Note: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
- interrupts (62h and 63h by default); the BW-NFS client uses a third
- consecutive interrupt (64h by default) if it is loaded
- SeeAlso: AH=00h"BW-TCP",AH=02h"BW-TCP"
- --------N-6302-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - ???
- AH = 02h
- ???
- Return: ???
- SeeAlso: AH=00h"BW-TCP",AH=01h"BW-TCP"
- --------N-6303-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - GET IP ADDRESS
- AH = 03h
- DS:SI -> buffer for DWORD IP address (big-endian)
- Return: AX destroyed
- CF clear if successful
- CF set on error
- Note: this call may use ARP or RARP to determine the address
- --------N-6304-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - ???
- AH = 04h
- ???
- Return: ???
- --------N-6305-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - ???
- AH = 05h
- DS:BX -> ???
- ES:SI -> ???
- Return: ???
- Range: INT 4D to INT FC, selected by configuration
- --------N-6306-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - ???
- AH = 06h
- ???
- Return: ???
- --------N-6307-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - ???
- AH = 07h
- ???
- Return: ???
- --------N-6308-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - SET DEFAULT ??? HANDLER
- AH = 08h
- DS:BX -> DWORD containing IP address
- Return: CF clear if successful
- CF set on error
- ???
- --------N-6309-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - INSTALL ??? HANDLERS
- AH = 09h
- BL = handler type
- ES:SI -> FAR handler of specified type
- Return: ???
- SeeAlso: AH=0Ah,AH=0Dh
- --------N-630A-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - DELETE ??? HANDLERS
- AH = 0Ah
- BL = handler type
- Return: CF clear if successful
- CF set on error (no handler of specified type installed)
- SeeAlso: AH=09h
- --------N-630B-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - ???
- AH = 0Bh
- AL = ???
- DL = ???
- DS:BX -> ???
- ES:SI -> ???
- Return: ???
- --------N-630C-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - ???
- AH = 0Ch
- ???
- Return: ???
- Range: INT 4D to INT FC, selected by configuration
- --------N-630D-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - INSTALL DEFAULT ??? HANDLER
- AH = 0Dh
- ???
- Return: ???
- Note: if not already installed, installs a type 06h handler with AH=09h
- SeeAlso: AH=09h
- --------N-630E-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - CLOSE NETWORK DESCRIPTOR
- AH = 0Eh
- ???
- Return: ???
- SeeAlso: INT 61/AH=08h"PC/TCP",INT 61/AH=09h"PC/TCP",INT 61/AH=18h
- --------N-630F-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - ???
- AH = 0Fh
- AL = ???
- SI = ???
- DS:DI -> ???
- ???
- Return: ???
- Range: INT 4D to INT FC, selected by configuration
- --------N-6310-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - ???
- AH = 10h
- DS:DI -> ???
- ???
- Return: ???
- --------N-6311-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - ???
- AH = 11h
- ???
- Return: ???
- --------N-6312-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - LISTEN FOR INCOMING CONNECTIONS
- AH = 12h
- DS:SI -> ???
- ES:BP -> ???
- Return: ???
- SeeAlso: AH=14h,INT 61/AH=23h
- --------N-6313-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - NOP
- AH = 13h
- Return: nothing
- Range: INT 4D to INT FC, selected by configuration
- --------N-6314-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - OPEN NETWORK CONNECTION
- AH = 14h
- BX = network descriptor???
- DS:SI -> ???
- ES:BP -> ???
- Return: ???
- SeeAlso: AH=12h,AH=16h,AH=19h,INT 61/AH=13h"PC/TCP",INT 62/AH=13h"ETHDEV"
- --------N-6315-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - ???
- AH = 15h
- DS:DI -> ???
- ???
- Return: ???
- Range: INT 4D to INT FC, selected by configuration
- --------N-6316-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - RESET NETWORK CONNECTION
- AH = 16h
- DS:DI -> ???
- Return: ???
- Note: calls AH=17h after preprocessing
- SeeAlso: AH=17h,INT 61/AH=19h"PC/TCP"
- --------N-6317-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - ???
- AH = 17h
- DS:DI -> ???
- ???
- Return: ???
- Range: INT 4D to INT FC, selected by configuration
- SeeAlso: AH=18h
- --------N-6318-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - ???
- AH = 18h
- DS:DI -> ???
- ???
- Return: ???
- Note: same as AH=17h, except performed with interrupts disabled
- SeeAlso: AH=17h
- --------N-6319-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - WRITE TO THE NETWORK
- AH = 19h
- DS:DI -> ???
- ???
- Return: BX = number of bytes NOT written
- ???
- Range: INT 4D to INT FC, selected by configuration
- Note: calls AH=17h with interrupts disabled and ??? set to 01h
- SeeAlso: AH=14h,AH=1Ah,AH=1Bh,INT 61/AH=1Ah"PC/TCP"
- --------N-631A-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - READ FROM THE NETWORK
- AH = 1Ah
- CX = maximum number of bytes to read
- ES:BP -> ???
- ???
- Return: CX = number of bytes actually read
- ???
- SeeAlso: AH=12h,AH=14h,AH=19h,INT 61/AH=1Bh"PC/TCP"
- --------N-631B-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - ???
- AH = 1Bh
- CX = ???
- ES:BP -> ???
- Return: DX = ???
- ???
- Range: INT 4D to INT FC, selected by configuration
- --------N-631C-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - ???
- AH = 1Ch
- DS:DI -> ???
- ???
- Return: ???
- Note: calls AH=17h with ???
- SeeAlso: AH=17h
- --------N-631D-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - ???
- AH = 1Dh
- ???
- Return: ???
- Range: INT 4D to INT FC, selected by configuration
- --------N-631E-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - ???
- AH = 1Eh
- DS:BX -> DWORD containing IP address (big-endian)
- ???
- Return: CF clear if successful
- CF set on error
- ???
- --------N-631F-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - SET SOCKET ??? HANDLER
- AH = 1Fh
- BX = socket number
- ES:SI -> FAR function for ???
- Return: CF clear if successful
- CF set on error (out of slots)
- SeeAlso: AH=20h
- --------N-6320-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - REMOVE SOCKET ??? HANDLER
- AH = 20h
- BX = socket number
- Return: CF clear if successful
- CF set on error (not set)
- Range: INT 4D to INT FC, selected by configuration
- SeeAlso: AH=1Fh
- --------N-6321-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - ???
- AH = 21h
- ES:SI -> ???
- Return: ???
- SeeAlso: INT 61/AH=1Ch"PC/TCP"
- --------N-6322-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - REMOVE ??? HANDLER
- AH = 22h
- Return: CF clear
- Range: INT 4D to INT FC, selected by configuration
- Note: decrements a counter if not already zero, and calls AH=0Ah with BL=11h
- if the counter reaches zero
- --------N-6323-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - ???
- AH = 23h
- DS:BX -> ???
- ES:SI -> 6-byte buffer for ???
- Return: CF clear if successful
- CF set on error
- --------N-6324-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - GET SOCKET
- AH = 24h
- Return: AX = socket number (0400h-FFFFh)
- Range: INT 4D to INT FC, selected by configuration
- Note: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
- interrupts (62h and 63h by default); the BW-NFS client uses a third
- consecutive interrupt (64h by default) if it is loaded
- SeeAlso: AH=12h,AH=14h,INT 62/AH=12h"ETHDEV",INT 64/AH=01h"BW-NFS"
- --------N-6325-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - GET INTERNET ADDRESS
- AH = 25h
- Return: CL:CH:DL:DH = caller's Internet address
- SeeAlso: AH=03h,AH=26h,INT 61/AH=05h"PC/TCP"
- --------N-6326-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - SET INTERNET ADDRESS???
- AH = 26h
- CL:CH:DL:DH = Internet address
- Return: nothing
- Range: INT 4D to INT FC, selected by configuration
- Note: this function sets a different variable than AH=25h returns
- SeeAlso: AH=03h,AH=25h
- --------N-6327-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - SET ???
- AH = 27h
- BX = ???
- ES:SI -> ???
- Return: ???
- --------N-6328-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - ???
- AH = 28h
- ???
- Return: ???
- --------N-6329-------------------------------
- INT 63 - BW-TCP - TCPIP.SYS - ???
- AH = 29h
- ???
- Return: ???
- Range: INT 4D to INT FC, selected by configuration
- Note: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
- interrupts (62h and 63h by default); the BW-NFS client uses a third
- consecutive interrupt (64h by default) if it is loaded
- --------*-64---------------------------------
- INT 64 - reserved for user interrupt
- --------d-64---------------------------------
- INT 64 - Adaptec controllers - DRIVE 1 DATA
- Desc: this vector stores the first four bytes of the parameter table for
- hard disk 1
- Notes: these vectors are used by the following Adaptec controllers:
- ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
- these vectors are NOT used by the following Adaptec controllers:
- ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
- SeeAlso: INT 60"Adaptec",INT 65"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
- --------b-64---------------------------------
- INT 64 - TI Professional PC - OPTION ROM DATA AREA POINTER (NOT A VECTOR!)
- Desc: the low word of this vector contains the segment of the RAM data area
- to be used by the expansion ROM at F400h:6000h, and the high word
- contains the length of the data area; this segment and size are
- both set to 0000h if no ROM is installed at F400h:6000h
- SeeAlso: INT 60"TI Professional PC",INT 63"TI Professional"
- SeeAlso: INT 65"TI Professional PC"
- ----------64---------------------------------
- INT 64 - Oracle SQL Protected Mode Executive - ???
- --------N-64---------------------------------
- INT 64 - Novell NetWare to v2.0a - LOW-LEVEL API
- Note: equivalent to INT 7A for NetWare versions through 2.0a only; later
- versions do not use this interrupt for IPX/SPX access, instead
- getting an entry point from INT 2F/AX=7A00h
- SeeAlso: INT 2F/AX=7A00h,INT 7A"LOW-LEVEL API"
- --------h-64---------------------------------
- INT 64 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
- SeeAlso: INT 65"DG10",INT 66"DG10"
- --------r-64---------------------------------
- INT 64 - Extended Batch Language v3.14+
- AH = function
- 00h to 5Fh chained to previous handler
- 60h to 6Ch reserved, return immediately
- 80h to FFh chained to previous handler
- 6Dh (v4.01+) insert tone in queue
- AL = ???
- CX = frequency in Hertz
- DL = duration in clock ticks
- Return: AL = 00h if note stored
- = 01h if no room to store
- 6Eh clear ??? counter/flag
- 6Fh return counter/flag that AH=6Eh clears
- 70h ???
- AL = ???
- 71h ???
- AL = ???
- 72h ???
- 73h insert byte at end of keyboard buffer
- AL = byte to insert
- Return: AL = 00h if byte inserted
- = 01h if no room to store
- 74h insert byte at front of keyboard buffer
- AL = byte to insert
- Return: AL = 00h if byte inserted
- = 01h if no room to store
- 75h ???
- 76h get keyboard "stack" status
- AL = 'K' if kbd read will read physical keyboard
- 'S' if it will read EBL internal keyboard buffer
- AH = ???
- 77h clear internal keyboard buffer
- 78h ???
- AL = ???
- 79h ???
- 7Ah ???
- AL = ???
- 7Bh ???
- AL = ???
- 7Ch ???
- AL = ???
- 7Dh ???
- AL = ???
- 7Eh clear buffer for ???
- 7Fh installation check
- Return: CX = version in BCD
- DI = segment of ???
- BX = segment of next program's PSP???
- Program: Extended Batch Language is a batch-file enhancer by Seaware
- Notes: the chaining does not check whether the interrupt had been hooked
- before, so if you try to chain when the previous vector was
- 0000h:0000h, you'll be in trouble
- functions 72h and 7Ah-7Dh appear to be interfaces to the optional
- floating-point and extended function packages
- Index: installation check;EBL|installation check;Extended Batch Language
- --------d-64---------------------------------
- INT 64 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
- Note: This vector is overwritten by Pdisk to install custom harddrive types.
- It can either destroy 4 vectors and take no memory or TSR and take
- up some memory.
- SeeAlso: INT 65"Pdisk"
- ----------64---------------------------------
- INT 64 - PC-DRAFT - ASYNCHRONOUS DRIVER
- ???
- Return: ???
- Program: PC-DRAFT is a powerful CAD environment by rhv.
- SeeAlso: INT 62"PC-DRAFT",INT 65"PC-DRAFT",INT 66"PC-DRAFT",INT 67"PC-DRAFT"
- --------N-6401-------------------------------
- INT 64 U - BW-NFS - BWRPC - ???
- AH = 01h
- ES:BX -> ??? (at least 8 bytes)
- ES:BP -> DWORD ???
- ???
- Return: CF clear if successful
- ???
- CF set on error
- CX = 0000h
- Range: INT 4E to INT FD, selected by configuration
- Notes: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
- interrupts (62h and 63h by default); the BW-NFS client uses a third
- consecutive interrupt (64h by default) if it is loaded
- the BWRPC installation check consists of determining the interrupt
- vector assigned to it (two more than the value returned by reading
- the ETHDEV27 device), and testing whether the word immediately
- preceding the interrupt handler is 4257h ('BW')
- SeeAlso: INT 62/AH=00h"ETHDEV",INT 63/AH=03h"BW-TCP",INT 63/AH=24h
- Index: installation checks;BWRPC
- --------N-6402-------------------------------
- INT 64 U - BW-NFS - BWRPC - ???
- AH = 02h
- DS:DI -> ???
- Return: ???
- Note: this call is passed directly through to INT 62/AH=07h
- SeeAlso: INT 62/AH=07h"ETHDEV"
- --------N-6403-------------------------------
- INT 64 U - BW-NFS - BWRPC - ADD ???
- AH = 03h
- AL = ???
- BP = ???
- ES:SI -> ???
- Return: ???
- Note: this call is passed directly through to INT 62/AH=0Bh
- SeeAlso: AH=04h,INT 62/AH=0Bh"ETHDEV"
- --------N-6404-------------------------------
- INT 64 U - BW-NFS - BWRPC - REMOVE ???
- AH = 04h
- BP = ???
- Return: ???
- Range: INT 4E to INT FD, selected by configuration
- Note: this call is passed directly through to INT 62/AH=0Ch
- SeeAlso: AH=03h,INT 62/AH=0Ch"ETHDEV"
- --------N-6405-------------------------------
- INT 64 U - BW-NFS - BWRPC - ???
- AH = 05h
- CX = ???
- Return: ???
- Note: this call is passed directly through to INT 62/AH=13h
- SeeAlso: INT 62/AH=13h"ETHDEV"
- --------N-6406-------------------------------
- INT 64 U - BW-NFS - BWRPC - ???
- AH = 06h
- ES:SI -> ???
- Return: AL = 00h if CF clear
- Range: INT 4E to INT FD, selected by configuration
- Note: this call is passed directly through to INT 62/AH=14h
- SeeAlso: INT 62/AH=14h"ETHDEV"
- --------N-6407-------------------------------
- INT 64 U - BW-NFS - BWRPC - GET IP ADDRESS
- AH = 07h
- Return: CX:DX = IP address
- --------N-6410-------------------------------
- INT 64 U - BW-NFS - BWRPC - CALL ETHDEV.SYS
- AH = 10h
- AL = ETHDEV function number
- other registers as appropriate for ETHDEV call
- Return: as returned by ETHDEV
- Note: this call is passed directly through to INT 62
- SeeAlso: INT 62/AH=00h"ETHDEV"
- --------N-6411-------------------------------
- INT 64 U - BW-NFS - BWRPC - NOP???
- AH = 11h
- Return: CF clear
- Range: INT 4E to INT FD, selected by configuration
- --------N-64FE-------------------------------
- INT 64 - BW-NFS - BWRPC - MAP EMS PAGE FRAME
- AH = FEh
- AL = direction
- 00h map in driver's memory block
- 01h map out driver's memory block
- Return: CF clear if successful
- CF set on error
- AL = error code
- Range: INT 4E to INT FD, selected by configuration
- Note: this call is passed through directly to ETHDEV.SYS (see INT 62/AH=FEh)
- SeeAlso: INT 21/AH=3Fh"BW-TCP",INT 62/AH=FEh,INT 63/AH=03h"BW-TCP"
- SeeAlso: INT 63/AH=24h
- --------*-65---------------------------------
- INT 65 - reserved for user interrupt
- --------d-65---------------------------------
- INT 65 - Adaptec controllers - DRIVE 1 DATA
- Desc: this vector stores the second four bytes of the parameter table for
- hard disk 1
- SeeAlso: INT 64"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
- --------b-65---------------------------------
- INT 65 - TI Professional PC - OPTION ROM DATA AREA POINTER (NOT A VECTOR!)
- Desc: the low word of this vector contains the segment of the RAM data area
- to be used by the expansion ROM at F400h:8000h, and the high word
- contains the length of the data area; this segment and size are
- both set to 0000h if no ROM is installed at F400h:8000h
- SeeAlso: INT 60"TI Professional PC",INT 64"TI Professional"
- SeeAlso: INT 66"TI Professional PC"
- --------h-65---------------------------------
- INT 65 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
- SeeAlso: INT 64"DG10",INT 66"DG10"
- --------N-65---------------------------------
- INT 65 - FTP Software NDIS-Packet Driver adapter - POST PROCESSING INTERRUPT
- --------U-65---------------------------------
- INT 65 - SD.COM v6.2
- Desc: The unregistered version of SD62.COM uses the low byte of this vector
- to count the number of invocations, displaying a registration
- reminder each time after the 20th use.
- --------d-65---------------------------------
- INT 65 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
- SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
- ----------65---------------------------------
- INT 65 - PC-DRAFT - SECONDARY DISPLAY DRIVER
- ???
- Return: ???
- Program: PC-DRAFT is a powerful CAD environment by rhv.
- SeeAlso: INT 62"PC-DRAFT",INT 64"PC-DRAFT",INT 66"PC-DRAFT",INT 67"PC-DRAFT"
- --------s-65---------------------------------
- INT 65 - Ad Lib SOUND.COM - INTERFACE
- SI = function number (also see separate entries below)
- 0000h Init
- 0002h RelTimeStart
- 0003h SetState
- 0004h GetState
- 0005h Flush
- 0006h SetMode
- 0007h GetMode
- 0008h SetRelVolume
- 0009h SetTempo
- 000Ah SetTranspose
- 000Bh GetTranspose
- 000Ch SetActVoice
- 000Dh GetActVoice
- 000Eh PlayNoteDel
- 000Fh PlayNote
- 0010h SetTimbre
- 0011h SetPitch
- 0012h SetTickBeat
- 0013h NoteOn
- 0014h NoteOff
- 0015h Timbre
- 0016h SetPitchBend
- 0017h WaveForm
- ES:BX -> arguments
- InstallCheck: test for the signature block immediately preceding the
- interrupt handler (see #03516)
- SeeAlso: SI=8000h
- Index: installation check;Ad Lib SOUND.COM
- Format of AdLib signature block:
- Offset Size Description (Table 03516)
- 00h WORD version number
- 02h 19 BYTEs "SOUND-DRIVER-AD-LIB"
- 15h BYTE 01h
- 16h BYTE 01h
- 17h BYTE 00h
- --------N-65----DX4147-----------------------
- INT 65 U - NetSoft DOS-NET v1.20+ - ??? API
- DX = 4147h
- BH = 01h
- BL = function number (00h-2Ah)
- ???
- Return: CF clear if successful
- AX = ???
- CF set on error
- AX = error code (0001h=invalid function/subfunction)
- Range: INT ?? to INT ??, selected by configuration option; actual interrupt
- number and function number may be retrieved via INT 2A/AX=4147h
- Note: this API is supported by CLIENT.COM, SERVER.COM, DOSNET.COM, and
- ROUTER.COM
- SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
- --------N-65----DX4147-----------------------
- INT 65 U - NetSoft DOS-NET v1.20+ - ??? API
- DX = 4147h
- BH = 02h
- BL = function number (00h-05h)
- ???
- Return: CF clear if successful
- AX = ???
- CF set on error
- AX = error code (0001h=invalid function/subfunction)
- Range: INT ?? to INT ??, selected by configuration option; actual interrupt
- number and function number may be retrieved via INT 2A/AX=4147h
- Note: this API is supported by CLIENT.COM, SERVER.COM, DOSNET.COM, and
- ROUTER.COM
- SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
- --------N-65----DX4147-----------------------
- INT 65 U - NetSoft DOS-NET v1.20+ - ??? API
- DX = 4147h
- BH = 03h
- BL = function number (00h-03h) (00h-04h for ROUTER.COM)
- ???
- Return: CF clear if successful
- AX = ???
- CF set on error
- AX = error code
- Range: INT ?? to INT ??, selected by configuration option; actual interrupt
- number and function number may be retrieved via INT 2A/AX=4147h
- Note: this API is supported by CLIENT.COM, SERVER.COM, DOSNET.COM, and
- ROUTER.COM
- SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
- --------N-65----DX4147-----------------------
- INT 65 U - NetSoft DOS-NET v1.20+ - ??? API
- DX = 4147h
- BH = 04h
- BL = function number (00h-07h)
- ???
- Return: CF clear if successful
- AX = ???
- CF set on error
- AX = error code
- Range: INT ?? to INT ??, selected by configuration option; actual interrupt
- number and function number may be retrieved via INT 2A/AX=4147h
- Note: this API is supported by CLIENT.COM, SERVER.COM, and DOSNET.COM
- SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
- --------N-65----DX4147-----------------------
- INT 65 U - NetSoft DOS-NET v1.20+ - ??? API
- DX = 4147h
- BH = 07h
- BL = function number (00h-08h)
- ???
- Return: CF clear if successful
- AX = ???
- CF set on error
- AX = error code (0001h=invalid function/subfunction)
- Range: INT ?? to INT ??, selected by configuration option; actual interrupt
- number and function number may be retrieved via INT 2A/AX=4147h
- Note: this API is supported by CLIENT.COM, SERVER.COM, and DOSNET.COM
- SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
- --------N-65----DX4147-----------------------
- INT 65 U - NetSoft DOS-NET v1.20+ - INSTALLATION CHECK???
- DX = 4147h
- BH = 80h
- Return: CF set
- AX = 0001h
- Range: INT ?? to INT ??, selected by configuration option; actual interrupt
- number and function number may be retrieved via INT 2A/AX=4147h
- Note: this call is supported by CLIENT.COM, SERVER.COM, and ROUTER.COM
- SeeAlso: DX=4147h,INT 2A/AX=4147h
- --------N-65----DX4741-----------------------
- INT 65 U - NetSoft DOS-NET v1.20+ - SPOOLER - ???
- DX = 4741h
- BH = 01h
- AL = 02h
- BL = function number (0Eh,0Fh)
- AH = subfunction number
- ???
- Return: ???
- Range: INT ?? to INT ??, selected by configuration option; actual interrupt
- number may be retrieved via INT 2A/AX=4147h
- SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
- --------N-65----DX4741-----------------------
- INT 65 U - NetSoft DOS-NET v1.20+ - PRNREDIR - ???
- DX = 4741h
- BH = 01h
- AL = 03h
- BL = function number (0Eh,0Fh)
- AH = subfunction number
- ???
- Return: ???
- Range: INT ?? to INT ??, selected by configuration option; actual interrupt
- number may be retrieved via INT 2A/AX=4147h
- SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
- --------N-65----DX4741-----------------------
- INT 65 U - NetSoft DOS-NET v1.20+ - PRNREDIR - ???
- DX = 4741h
- BH = 01h
- AL = 04h
- BL = function number (0Eh,0Fh)
- AH = subfunction number
- ???
- Return: ???
- Range: INT ?? to INT ??, selected by configuration option; actual interrupt
- number may be retrieved via INT 2A/AX=4147h
- SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
- --------N-65----DX4741-----------------------
- INT 65 U - NetSoft DOS-NET v1.20+ - NETBIOS - ???
- DX = 4741h
- BH = 01h
- AL = 07h
- BL = function number (0Eh,0Fh)
- AH = subfunction number
- ???
- Return: ???
- Range: INT ?? to INT ??, selected by configuration option; actual interrupt
- number may be retrieved via INT 2A/AX=4147h
- SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
- --------N-65----DX4741-----------------------
- INT 65 U - NetSoft DOS-NET v1.20+ - MACTEST - ???
- DX = 4741h
- BH = 01h
- AL = 08h
- BL = function number (0Eh,0Fh)
- AH = subfunction number
- ???
- Return: ???
- Range: INT ?? to INT ??, selected by configuration option; actual interrupt
- number may be retrieved via INT 2A/AX=4147h
- SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
- --------N-65----DX4741-----------------------
- INT 65 U - NetSoft DOS-NET v1.20+ - Physical Layer - ???
- DX = 4741h
- BH = 02h
- BL = function number (01h-04h)
- ???
- Return: ???
- ---function 02h---
- DS:SI -> ??? data area
- Range: INT ?? to INT ??, selected by configuration option; actual interrupt
- number may be retrieved via INT 2A/AX=4147h
- Note: this API is supported by PARALLEL.COM, SERIAL.COM, ARCNET.COM,
- ETHERNET.COM, NDIS.COM, ODI.COM, SMC.COM, and FTP.COM
- SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
- --------N-65----DX4741-----------------------
- INT 65 U - NetSoft DOS-NET v1.20+ - SPOOLER.COM - ???
- DX = 4741h
- BH = 05h
- BL = function number (00h,01h)
- Return: CF clear
- AL = status code (00h=successful)
- Range: INT ?? to INT ??, selected by configuration option; actual interrupt
- number may be retrieved via INT 2A/AX=4147h
- SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
- --------N-65----DX4741-----------------------
- INT 65 U - NetSoft DOS-NET v1.20+ - PRNREDIR.COM - ???
- DX = 4741h
- BH = 06h
- BL = function number (00h-04h)
- ???
- Return: ???
- Range: INT ?? to INT ??, selected by configuration option; actual interrupt
- number may be retrieved via INT 2A/AX=4147h
- SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
- --------N-65----DX4741-----------------------
- INT 65 U - NetSoft DOS-NET v1.20+ - COMREDIR.COM - ???
- DX = 4741h
- BH = 08h
- BL = function number (00h-01h)
- ???
- Return: ???
- Range: INT ?? to INT ??, selected by configuration option; actual interrupt
- number may be retrieved via INT 2A/AX=4147h
- SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
- --------N-65----DX4741-----------------------
- INT 65 U - NetSoft DOS-NET v1.20+ - FTP.COM - ???
- DX = 4741h
- BX = 8010h
- AL = instance number???
- Return: AX = 0008h if AL matches internal variable (call chained otherwise)
- Range: INT ?? to INT ??, selected by configuration option; actual interrupt
- number may be retrieved via INT 2A/AX=4147h
- SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
- --------s-65----SI0000-----------------------
- INT 65 - Ad Lib SOUND.COM - INITIALIZE (RESET)
- SI = 0000h
- --------s-65----SI0003-----------------------
- INT 65 - Ad Lib SOUND.COM - SET STATE
- SI = 0003h
- ES:BX -> WORD new state (0000h disabled, 0001h enabled)
- SeeAlso: SI=0004h
- --------s-65----SI0004-----------------------
- INT 65 - Ad Lib SOUND.COM - GET STATE
- SI = 0004h
- Return: AX = status
- 0000h all done playing sounds
- else still playing sounds
- SeeAlso: SI=0003h
- --------s-65----SI0006-----------------------
- INT 65 - Ad Lib SOUND.COM - SET MODE
- SI = 0006h
- ES:BX -> WORD new mode (0000h melodic, 0001h percussive)
- SeeAlso: SI=0007h
- --------s-65----SI0007-----------------------
- INT 65 - Ad Lib SOUND.COM - GET MODE
- SI = 0007h
- Return: AX = mode
- 0000h melodic
- 0001h percussive
- SeeAlso: SI=0006h
- --------s-65----SI000C-----------------------
- INT 65 - Ad Lib SOUND.COM - SET ACTIVE VOICE
- SI = 000Ch
- ES:BX -> WORD voice = 0000h to 0008h
- SeeAlso: SI=000Dh
- --------s-65----SI000D-----------------------
- INT 65 - Ad Lib SOUND.COM - GET ACTIVE VOICE
- SI = 000Dh
- Return: AX = voice (0000h to 0008h)
- SeeAlso: SI=000Ch
- --------s-65----SI8000-----------------------
- INT 65 u - Media Vision FM.COM v4.1a+ - GET INTERNAL DATA STRUCTURES
- SI = 8000h
- Return: DX:AX -> internal data structures
- Program: FM.COM is an Ad Lib SOUND.COM-compatible driver for Media Vision's
- Pro Audio Spectrum sound boards
- SeeAlso: SI=8001h
- --------s-65----SI8001-----------------------
- INT 65 u - Media Vision FM.COM v4.1a+ - GET VOICE COUNT
- SI = 8001h
- Return: AX = ???
- DX = number of voices??? (09h or 0Bh)
- SeeAlso: SI=8000h
- --------s-65----SI8002-----------------------
- INT 65 - Media Vision FM.COM v4.1a+ - START BACKGROUND FM SOUNDS
- SI = 8002h
- SeeAlso: SI=8003h
- --------s-65----SI8003-----------------------
- INT 65 - Media Vision FM.COM v4.1a+ - STOP BACKGROUND FM SOUNDS
- SI = 8003h
- SeeAlso: SI=8002h
- --------s-65----SI8004-----------------------
- INT 65 U - Media Vision FM.COM v4.1a+ - GET ???
- SI = 8004h
- Return: AX = ??? (0280h)
- DX = ??? (01A0h)
- --------s-65----SI8005-----------------------
- INT 65 U - Media Vision FM.COM v4.1a+ - ???
- SI = 8005h
- ???
- Return: ???
- SeeAlso: SI=8000h
- --------S-65---------------------------------
- INT 65 U - EZRECV v1.0 - API
- AX = function
- 0000h ???
- Return: AX = ??? or FFFFh
- 0001h ???
- Return: AX = status (0000h or 0001h)
- 0002h ???
- Return: AX = status (0000h or 0001h)
- 0003h set ??? to 0001h
- Return: AX = 0000h
- 0004h ???
- Return: AX = ???
- Return: BH = COM port being used
- BL = speed???
- CH = ???
- CL = ???
- DX = ???
- DS = ???
- ES = EZRECV data segment
- Program: EZRECV is a background Zmodem file receiver by Express Consulting
- --------*-66---------------------------------
- INT 66 - reserved for user interrupt
- --------d-66---------------------------------
- INT 66 - Adaptec controllers - DRIVE 1 DATA
- Desc: this vector stores the third four bytes of the parameter table for
- hard disk 1
- SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 67"Adaptec"
- --------b-66---------------------------------
- INT 66 - TI Professional PC - SYSTEM INFORMATION (NOT A VECTOR!)
- Desc: the low word of this vector contains the system memory size in
- paragraphs; the third byte contains the number of outstanding
- interrupt requests, and the fourth byte contains a description
- of the installed drive types (see #03517)
- SeeAlso: INT 60"TI Professional PC",INT 67"TI Professional"
- Bitfields for TI Professional drive type information:
- Bit(s) Description (Table 03517)
- 7 floppy drive D: has 80 tracks
- 6 floppy drive D: is double-sided
- 5 floppy drive C: has 80 tracks
- 4 floppy drive C: is double-sided
- 3 floppy drive B: has 80 tracks
- 2 floppy drive B: is double-sided
- 1 floppy drive A: has 80 tracks
- 0 floppy drive A: is double-sided
- --------h-66---------------------------------
- INT 66 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
- SeeAlso: INT 64"DG10"
- --------N-66---------------------------------
- INT 66 C - Nanosoft, Inc. TurboNET - NETWORK PROCESSING ???
- Program: TurboNET is a NetBIOS-based file redirector and server
- Note: hooked but not used (IRET) by both redirector and server; called from
- server's INT 28 handler
- SeeAlso: INT 2F/AX=8100h
- --------d-66---------------------------------
- INT 66 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
- SeeAlso: INT 64"Pdisk",INT 67"Pdisk"
- --------W-66---------------------------------
- INT 66 - Microsoft Windows VITD.386 Virtual Interval Timer
- Note: This Windows 3.x Virtual Device Driver implements a virtual timer
- which will expire and call INT 66. This timer can be used to
- calculate elapsed execution time etc.
- --------K-66---------------------------------
- INT 66 - Newkey v5.4 - INSTALLATION VECTOR
- Return: immediately (IRET)
- Program: Newkey is a shareware keyboard macro program by Frank A. Bell
- InstallCheck: test for the signature bytes FDh FCh FFh FEh at offset 03h in
- the interrupt handlers segment
- Range: INT 60h to INT 67h, selected by scanning for highest unused vector
- BUG: the code obviously intends to use INT F0-FE, INT 70-77, and INT 68-6F
- before falling back to INT 60-67, but only uses the last of these
- ranges in v5.4
- SeeAlso: INT 2F/AX=E300h
- Index: installation checks;Newkey|Newkey;installation check
- ----------66---------------------------------
- INT 66 - PC-DRAFT - TABLET/DIGITIZER DRIVER
- ???
- Return: ???
- Program: PC-DRAFT is a powerful CAD environment by rhv.
- SeeAlso: INT 62"PC-DRAFT",INT 64"PC-DRAFT",INT 65"PC-DRAFT",INT 67"PC-DRAFT"
- --------U-66---------------------------------
- INT 66 - PC-Magazin - INCA
- details not yet availble
- Program: INCA is a utility from PC-Magazin (the German edition of PC Magazine)
- issue 51-52/85.
- SeeAlso: INT 61"SWAPx"
- --------F-6601-------------------------------
- INT 66 - BitFax Scheduler - SET MODE???
- AH = 01h
- SeeAlso: AH=02h
- --------F-6602-------------------------------
- INT 66 - BitFax Scheduler - SET MODE???
- AH = 02h
- SeeAlso: AH=01h
- --------F-6603-------------------------------
- INT 66 - BitFax Scheduler - SCHEDULE FAX TRANSMISSIONS
- AH = 03h
- ???
- Return: ???
- SeeAlso: AH=05h
- --------F-6604-------------------------------
- INT 66 - BitFax Scheduler - GET STATUS???
- AH = 04h
- Return: AX = ??? (0000h or 0001h)
- DX = BitSched version??? (for versions >= 3.00)
- 9796h (ver. 3.00)
- 97E6h (ver. 3.02)
- 92D0h (ver. 3.04.06)
- 9510h (ver. 3.06.02)
- SeeAlso: AH=06h,AX=3345h,INT 2F/AX=8000h"FaxBIOS"
- --------F-6605-------------------------------
- INT 66 - BitFax Scheduler - CONVERT FILE AND SEND FAX
- AH = 05h
- BX:CX -> command block (see #03518)
- ???
- Return: ???
- SeeAlso: AH=03h
- Format of BitFax command block:
- Offset Size Description (Table 03518)
- 00h 18 BYTEs configuration bytes???
- 12h BYTEs ASCIZ temporary file name to place converted fax
- 52h BYTEs ASCIZ directory containing BitFax executables
- 92h BYTEs ASCIZ telephone number
- C2h BYTE cover page control (00h don't send, 01h do send cover page)
- C3h 15 BYTEs configuration bytes???
- E2h BYTEs ASCIZ path of BITFAX.TRA file (containing additional
- configuration information???)
- 122h BYTEs configuration bytes???
- 12Ch BYTE 00h don't send cover page
- 01h send cover page
- 12Dh 7 BYTEs configuration bytes???
- 134h BYTEs ASCIZ path of file to send
- 174h BYTEs more configuration bytes???
- ???
- --------F-6606-------------------------------
- INT 66 - BitFax Scheduler - SET MODE???
- AH = 06h
- Return: DX = BitSched version??? (same as AH=04h)
- SeeAlso: AH=04h
- --------s-660688-----------------------------
- INT 66 - IBMSND driver, DIGPAK - PLAY 8-BIT DIGITIZED SOUND
- AX = 0688h
- DS:SI -> SNDSTRUC (see #03519)
- Return: ???
- Program: The IBMSND driver is part of John W. Ratcliff's
- The IBM Digitized Sound Package
- DIGPAK is a set of digitized sound drivers written by
- John W. Ratcliff, The Audio Solution, Inc.
- InstallCheck: test for a valid signature string six bytes prior to the
- interrupt handler; this string may be either "KERN" or "MIDI" (in
- the latter case, call AX=0701h to determine whether IBMSND is
- installed)
- SeeAlso: AX=068Bh,AX=068Fh,AX=0701h
- Format of IBMSND driver SNDSTRUC:
- Offset Size Description (Table 03519)
- 00h DWORD -> audio data
- 04h WORD length of audio data in bytes
- 06h DWORD -> playback status flag
- 0Ah WORD playback frequency
- --------s-660689-----------------------------
- INT 66 - IBMSND driver, DIGPAK - REPORT SOUND DRIVER STATUS
- AX = 0689h
- Return: AX = status
- 0000h no sound playing
- 0001h sound effect is currently playing
- ---DIGPAK---
- BX = version number (v3.1+)
- DX = looping status
- 0000h no sound looping
- 0001h sound effect is currently looping
- SeeAlso: AX=0688h,AX=068Bh,AX=068Ch
- Index: version check;DIGPAK
- --------s-66068A-----------------------------
- INT 66 - IBMSND driver, DIGPAK - PREFORMAT SOUND
- AX = 068Ah
- DS:SI -> SNDSTRUC (see #03519)
- Desc: convert audio data into output hardware format
- SeeAlso: AX=068Bh
- --------s-66068B-----------------------------
- INT 66 - IBMSND driver, DIGPAK - PLAY PREFORMATTED SOUND
- AX = 068Bh
- DS:SI -> SNDSTRUC (see #03519)
- Return: AX = ???
- SeeAlso: AX=0688h,AX=068Ah,AX=068Fh
- --------s-66068C-----------------------------
- INT 66 - IBMSND driver, DIGPAK - REPORT AUDIO DRIVER CAPABILITIES
- AX = 068Ch
- Return: AX = capabilities (see #03520)
- DX = playback rate if fixed-frequency playback
- ---DIGPAK---
- BX:CX -> ASCIZ ID string
- SeeAlso: AX=0689h,AX=068Dh
- Bitfields for IBMSND driver capabilities:
- Bit(s) Description (Table 03520)
- 0 can play audio in background
- 1 data is massaged for output device
- 2 driver plays at fixed frequency, resampling input data to fit
- 3 driver uses timer interrupt
- ---DIGPAK---
- 4 device supports timer sharing
- 5 supports looped sounds and pending
- 6 supports stereo panning
- 7 supports 8-bit PCM stereo playback
- 8 supports audio recording
- 9 supports DMA bakcfilling
- --------s-66068D-----------------------------
- INT 66 - IBMSND driver, DIGPAK - REPORT CURRENT SAMPLE ADDRESS
- AX = 068Dh
- Return: AX = current playback address
- Desc: determine what point in the audio data the playback has reached, for
- synchronization with video or animation effects
- Notes: this function applies to background playback only
- the reported address may be an approximation rather than the exact
- address
- SeeAlso: AX=068Ch,AX=0691h
- --------s-66068E-----------------------------
- INT 66 - IBMSND driver, DIGPAK - SET CALLBACK ADDRESS
- AX = 068Eh
- BX:DX -> callback function
- 0000h:0000h to disable callback
- DS = value to load into DS when calling the callback function
- Desc: specify the function to be called when playback of a sound effect is
- completed
- Note: the callback function will typically be called during a hardware
- interrupt, so all the usual precautions should be taken except for
- preserving registers
- SeeAlso: AX=0691h
- --------s-66068F-----------------------------
- INT 66 - IBMSND driver, DIGPAK - STOP CURRENT SOUND
- AX = 068Fh
- Desc: cause any currently-playing sound effect to be terminated
- SeeAlso: AX=0688h,AX=068Bh
- --------s-660690-----------------------------
- INT 66 - IBMSND driver, DIGPAK - "SetAudioHardware" - SET UP HARDWARE INFO
- AX = 0690h
- BX = IRQ
- CX = base address
- DX = other setup value (device-dependent???)
- --------s-660691-----------------------------
- INT 66 - IBMSND driver, DIGPAK - REPORT CALLBACK ADDRESS
- AX = 0691h
- Return: AX:DX -> current callback function
- BX = original caller's DS register
- Program: The IBMSND driver is part of John W. Ratcliff's
- The IBM Digitized Sound Package
- DIGPAK is a set of digitized sound drivers written by
- John W. Ratcliff, The Audio Solution, Inc.
- SeeAlso: AX=068Eh
- --------s-660693-----------------------------
- INT 66 - DIGPAK - SET TIMER DIVISOR RATE
- AX = 0693h
- DX = rate
- Program: DIGPAK is a set of digitized sound drivers written by
- John W. Ratcliff, The Audio Solution, Inc.
- --------s-660694-----------------------------
- INT 66 - DIGPAK - PLAY PREFORMATTED DATA
- AX = 0694h
- DS:SI -> Sound Data structure (see #03519)
- Return: AX = status???
- --------s-660695-----------------------------
- INT 66 - DIGPAK - POST AUDIO PENDING
- AX = 0695h
- DS:SI -> Sound Data structure (***)
- Return: AX = status
- 0000h sound started playing
- 0001h sound was posted as pending to play
- 0002h sound effect already pending, this one not posted
- SeeAlso: AX=0696h
- --------s-660696-----------------------------
- INT 66 - DIGPAK - GET AUDIO PENDING STATUS
- AX = 0696h
- Return: AX = status
- 0000h no sound is playing
- 0001h sound playing, and a sound is pending
- 0002h sound playing, no sound pending
- SeeAlso: AX=0695h
- --------s-660697-----------------------------
- INT 66 - DIGPAK - SET STEREO PANNING
- AX = 0697h
- DX = panning position (0 = right, 127 = left)
- Return: AX = status
- 0000h command ignored (not supported)
- 0001h panning set
- --------s-660698-----------------------------
- INT 66 - DIGPAK - SET PLAY MODE
- AX = 0698h
- DX = playback mode
- 0000h 8-bit PCM
- 0001h 8-bit stereo PCM
- 0002h 16-bit PCM
- 0003h 16-bit stereo PCM
- Return: AX = status
- 0000h command ignored
- 0001h mode set
- --------s-660699-----------------------------
- INT 66 - DIGPAK - GET ADDRESSES
- AX = 0699h
- Return: AX = pending address
- BX = semaphore address
- --------s-66069A-----------------------------
- INT 66 - DIGPAK - SET RECORD MODE
- AX = 069Ah
- DX = recording mode
- 0000h turn audio recording on
- 0001h turn audio recording off
- Return: AX = status
- 0000h command ignored
- 0001h audio recording mode set
- --------s-66069B-----------------------------
- INT 66 - DIGPAK - STOP NEXT LOOP
- AX = 069Bh
- --------s-66069C-----------------------------
- INT 66 - DIGPAK - SET DMA BACKFILL MODE
- AX = 069Ch
- DX = mode
- 0000h turn backfill mode on
- 0001h turn backfill mode off
- Return: AX = status
- 0000h command ignored
- 0001h backfill mode set
- SeeAlso: AX=069Dh,AX=069Eh
- --------s-66069D-----------------------------
- INT 66 - DIGPAK - REPORT DMA COUNTER
- AX = 069Dh
- Return: AX = DMA counter
- SeeAlso: AX=069Eh
- --------s-66069E-----------------------------
- INT 66 - DIGPAK - VERIFY DMA BLOCK
- AX = 069Eh
- CX = length of buffer
- ES:BX -> buffer containing sound data
- Return: AX = status
- 0000h block crosses 64K bounadary
- 0001h block is OK
- SeeAlso: AX=069Dh
- --------s-66069F-----------------------------
- INT 66 - DIGPAK - SET PCM VOLUME
- AX = 069Fh
- BX = left channel volume (0-100)
- CX = right channel volume (0-100)
- Return: AX = status
- 0000h command ignored
- 0001h volume set
- --------s-6606A0-----------------------------
- INT 66 - DIGPAK - SET DPMI MODE
- AX = 06A0h
- DX = mode
- 0000h 32-bit register addressing on
- 0001h 32-bit register addressing off
- SeeAlso: INT 31/AX=0400h
- --------s-660700-----------------------------
- INT 66 - MIDPAK - UNINSTALL
- AX = 0700h
- Note: this function should NOT be called by applications
- Program: MIDPAK is a set of MIDI sound drivers developed by Miles Design
- Incorporated.
- --------s-660701-----------------------------
- INT 66 - IBM Digitized Sound Package MIDI driver - GET DIGITIZED SOUND CAPABIL
- AX = 0701h
- Return: AX = digitized sound capabilities
- 0000h if digitized sound driver (functions 06xxh) not available
- InstallCheck: test for the signature "MIDI" six bytes before the interrupt
- handler
- Note: also supported by MIDPAK, the successor to the Digitized Sound
- Package's MIDI driver
- SeeAlso: AX=0688h
- --------s-660702-----------------------------
- INT 66 - MIDPAK - PLAY SEQUENCE
- AX = 0702h
- BX = Sequence number
- Return: AX = status
- 0000h Sequence is being played
- 0001h Sequence not available
- SeeAlso: AX=0703h,AX=0705h
- --------s-660703-----------------------------
- INT 66 - MIDPAK - SEGUE SEQUENCE
- AX = 0703h
- BX = sequence number
- CX = activation code (FFFFh is next trigger)
- Return: ???
- --------s-660704-----------------------------
- INT 66 - MIDPAK - REGISTER XMIDI
- AX = 0704h
- CX:BX -> XMIDI sequence data
- DI:SI = length of XMIDI data
- Return: AX = status
- 0000h unable to register XMIDI data
- 0001h XMIDI file registered resident
- 0002h XMIDI file was registered to the application
- --------s-660705-----------------------------
- INT 66 - MIDPAK - STOP MIDI
- AX = 0705h
- SeeAlso: AX=0702h,AX=0709h
- --------s-660706-----------------------------
- INT 66 O - MIDPAK - REMAP CHANNEL
- AX = 0706h
- BX = sequence
- CX = physical
- --------s-660707-----------------------------
- INT 66 - MIDPAK - REPORT TRIGGER EVENT COUNTER
- AX = 0707h
- Return: AX = count of number of callbacks since last reset
- DX = ID
- SeeAlso: AX=0708h,AX=0713h
- --------s-660708-----------------------------
- INT 66 - MIDPAK - RESET EVENT TRIGGER COUNTER
- AX = 0708h
- SeeAlso: AX=0707h,AX=0713h
- --------s-660709-----------------------------
- INT 66 O - MIDPAK - MIDI SLEEP
- AX = 0709h
- SeeAlso: AX=070Ah
- --------s-66070A-----------------------------
- INT 66 O - MIDPAK - MIDI AWAKE
- AX = 070Ah
- SeeAlso: AX=0709h
- --------s-66070B-----------------------------
- INT 66 - MIDPAK - RESUME PLAYING
- AX = 070Bh
- SeeAlso: AX=070Ch
- --------s-66070C-----------------------------
- INT 66 - MIDPAK - GET SEQUENCE STATUS
- AX = 070Ch
- Return: AX = status
- 0000h sequence stopped
- 0001h sequence playing
- 0002h sequence done
- SeeAlso: AX=070Bh
- --------s-66070D-----------------------------
- INT 66 - MIDPAK - REGISTER XMIDI FILE
- AX = 070Dh
- CX:BX -> ASCII filename
- SeeAlso: AX=0704h,AX=0710h
- --------s-66070E-----------------------------
- INT 66 - MIDPAK - GET RELATIVE VOLUME
- AX = 070Eh
- Return: AX = current volume
- SeeAlso: AX=070Fh
- --------s-66070F-----------------------------
- INT 66 - MIDPAK - SET RELATIVE VOLUME
- AX = 070Fh
- BX = new volume
- CX = time
- SeeAlso: AX=070Eh
- --------s-660710-----------------------------
- INT 66 - MIDPAK - LOAD MIDPAK DRIVER
- AX = 0710h
- BX = segment of .ADV driver
- CX = 0000h (offset must be zero)
- DX:SI -> .AD driver
- SeeAlso: AX=070Dh
- --------s-660711-----------------------------
- INT 66 - MIDPAK - POLL MIDPAK
- AX = 0711h
- Return: AX = ???
- ???
- SeeAlso: AX=0712h
- --------s-660712-----------------------------
- INT 66 - MIDPAK - GET MIDI CLOCK
- AX = 0712h
- Return: AX:DX = clock counter
- CX:BX = clock address
- SeeAlso: AX=0711h,AX=0713h
- --------s-660713-----------------------------
- INT 66 - MIDPAK - GET TRIGGER COUNT ADDRESS
- AX = 0713h
- Return: AX:DX -> trigger counter address
- SeeAlso: AX=0707h,AX=0712h,AX=0714h
- --------s-660714-----------------------------
- INT 66 - MIDPAK - GET EVENT ID ADDRESS
- AX = 0714h
- Return: AX:DX -> event ID
- SeeAlso: AX=0713h,AX=0716h
- --------s-660716-----------------------------
- INT 66 - MIDPAK - REPORT SEQUENCE NUMBER
- AX = 0716h
- Return: AX = current sequence number
- SeeAlso: AX=0702h
- Program: MIDPAK is a set of MIDI sound drivers developed by Miles Design
- Incorporated.
- --------n-6610-------------------------------
- INT 66 - PenDOS - TDMOUSE.EXE - GET ???
- AH = 10h
- Return: CF clear
- AX = 0000h
- BX = ??? (0012h)
- DX:CX -> TDMOUSE INT 33 handler (IRET to hide mouse from other apps)
- Program: TDMOUSE is a PenDOS hardware driver which allows a mouse to emulate
- a touchpad; PenDOS is a set of programs by Communication Intelligence
- Corporation which makes applications pen-aware
- --------n-6611-------------------------------
- INT 66 - PenDOS - TDMOUSE.EXE - SET ??? HANDLER
- AH = 11h
- DX:BX -> new handler for ???
- Return: CF clear
- AX = 0000h
- DX:BX -> old handler for ??? (points at RETF by default)
- --------n-6612-------------------------------
- INT 66 - PenDOS - TDMOUSE.EXE - INITIALIZE
- AH = 12h
- Return: CF clear
- AX = 0000h
- Note: this function calls the old mouse handler with functions 0000h, 0002h,
- 0007h, 0008h, 000Fh, 0004h, and 000Ch (in that order)
- SeeAlso: AH=13h
- --------n-6613-------------------------------
- INT 66 - PenDOS - TDMOUSE.EXE - SHUTDOWN???
- AH = 13h
- Return: CF clear
- other register as returned by INT 33/AX=0000h
- SeeAlso: AH=12h
- --------n-6614-------------------------------
- INT 66 - PenDOS - TDMOUSE.EXE - ???
- AH = 14h
- BX = ???
- CX = ???
- Return: CF clear
- AX = 0000h
- --------n-6615-------------------------------
- INT 66 - PenDOS - TDMOUSE.EXE - SET ??? HANDLER
- AH = 15h
- DX:BX -> new handler for ???
- Return: CF clear
- AX = 0000h
- DX:BX -> old handler (points at RETF by default)
- --------n-6616-------------------------------
- INT 66 - PenDOS - TDMOUSE.EXE - UNUSED FUNCTIONS
- AH = 16h to 1Fh
- Return: CF set
- Program: TDMOUSE is a PenDOS hardware driver which allows a mouse to emulate
- a touchpad; PenDOS is a set of programs by Communication Intelligence
- Corporation which makes applications pen-aware
- --------n-6621-------------------------------
- INT 66 - PenDOS - PINK - ???
- AH = 21h
- Return: CF clear if successful
- CF set on error
- Note: this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
- --------n-6622-------------------------------
- INT 66 - PenDOS - PINK - ???
- AH = 22h
- DX:BX -> ???
- CL = ???
- Return: CF clear if successful
- CF set on error
- ???
- SeeAlso: AH=24h
- --------n-6623-------------------------------
- INT 66 - PenDOS - PINK - ???
- AH = 23h
- ???
- Return: CF clear if successful
- CF set on error
- ???
- --------n-6624-------------------------------
- INT 66 - PenDOS - PINK - ???
- AH = 24h
- DX:BX -> ???
- CL = ???
- Return: CF clear if successful
- CF set on error
- ???
- SeeAlso: AH=22h
- --------n-6625-------------------------------
- INT 66 - PenDOS - PINK - ???
- AH = 25h
- CL = ??? (NOP if 00h)
- ???
- Return: CF clear if successful
- CF set on error
- ???
- --------n-6627-------------------------------
- INT 66 - PenDOS - PINK - ???
- AH = 27h
- BL = ???
- BH = ???
- CL = ??? (0-3)
- DL = ??? (> BL)
- DH = ??? (> BH)
- Return: ???
- --------n-6628-------------------------------
- INT 66 - PenDOS - PINK - ???
- AH = 28h
- ???
- Return: CF clear if successful
- CF set on error
- ???
- Note: this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
- --------n-6629-------------------------------
- INT 66 - PenDOS - PINK - ???
- AH = 29h
- ???
- Return: ???
- Note: this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
- --------n-662A-------------------------------
- INT 66 - PenDOS - PINK - ???
- AH = 2Ah
- DL = ??? (nonzero)
- DH = ??? (nonzero)
- Return: CF clear if successful
- CF set on error
- ???
- --------n-662B-------------------------------
- INT 66 - PenDOS - PINK - ???
- AH = 2Bh
- ???
- Return: CF clear if successful
- CF set on error
- ???
- --------n-662F-------------------------------
- INT 66 - PenDOS - PINK - INITIALIZE
- AH = 2Fh
- ???
- Return: AX = status
- 0000h failed
- FFFFh successful
- ???
- Note: this function sets ??? flag or counter to FFFFh and hooks INT 1Ch
- --------F-663345-----------------------------
- INT 66 - BitFax Scheduler - REMOVE TSR FROM MEMORY
- AX = 3345h
- Return: AX = FFFFh error removing TSR
- InstallCheck: test for the signature "BitFax Scheduler" beginning two bytes
- past the interrupt handler
- SeeAlso: AH=04h,INT 2F/AH=2Ah,INT 2F/AX=CB00h
- Index: installation check;BitFax Scheduler
- --------n-6640-------------------------------
- INT 66 - PenDOS - PKEYUS - GET VERSION
- AH = 40h
- Return: CF clear
- AX = 0000h
- BH = major version (02h for version bundled with IBM DOS 6.1)
- BL = minor version (00h for version bundled with IBM DOS 6.1)
- DL = ??? (4Eh)
- DH = ??? (0Eh)
- --------n-6641-------------------------------
- INT 66 - PenDOS - PKEYUS - SET ???
- AH = 41h
- BX = ???
- CL = ??? (08h-20h)
- DL = screen column??? (<= 50h)
- DH = screen row??? (<= 3Ch)
- Return: AX = status (0000h successful, 0001h error)
- Note: this function also sets an internal flag
- SeeAlso: AH=42h,AH=43h
- --------n-6642-------------------------------
- INT 66 - PenDOS - PKEYUS - ???
- AH = 42h
- Return: CF clear
- AX = 0000h
- Note: this function also clears the flag set by AH=41h
- SeeAlso: AH=41h
- --------n-6643-------------------------------
- INT 66 - PenDOS - PKEYUS - ???
- AH = 43h
- BX = ???
- DX = ???
- Return: AX = status
- 0000h if AH=41h flag set
- else
- AH = ???
- AL = ???
- BX = ???
- DX = ???
- SeeAlso: AH=41h
- --------n-6644-------------------------------
- INT 66 - PenDOS - PKEYUS - UNUSED FUNCTIONS
- AH = 44h to 4Fh
- Return: CF set
- --------n-6650-------------------------------
- INT 66 - PenDOS - PMOUSE - SET ???
- AH = 50h
- BX = ???
- CH = ???
- DX = ???
- Return: CF clear
- AX = 0000h
- --------n-6651-------------------------------
- INT 66 - PenDOS - PMOUSE - NOP
- AH = 51h
- Return: CF set
- --------n-6652-------------------------------
- INT 66 - PenDOS - PMOUSE - ???
- AH = 52h
- BX = ???
- CL = ???
- DX = ???
- Return: ???
- --------n-6653-------------------------------
- INT 66 - PenDOS - PMOUSE - UNUSED FUNCTIONS
- AH = 53h to 57h
- Return: CF set
- --------n-66---------------------------------
- INT 66 - PenDOS - PMOUSE - ALTERNATE API
- AH = function (58h-5Fh)
- Note: these functions exactly duplicate AH=50h-57h
- --------U-66AA02-----------------------------
- INT 66 - HelpTSR v2.10 - INSTALLATION CHECK
- AX = AA02h
- Return: ES:DI -> 7 byte signature "HelpTSR" if resident
- Program: HelpTSR is a resident viewer by David Jurgens for HelpPC
- --------n-66C5-------------------------------
- INT 66 - PenDOS - VLOAD - API
- AH = C5h
- ???
- Return: ???
- --------t-66FFFBBXFFFB-----------------------
- INT 66 - MicroHelp Stay-Res Plus - ???
- AX = FFFBh
- BX = FFFBh
- ???
- Return: ???
- SeeAlso: AX=FFFEh,INT 2D"AMIS"
- --------t-66FFFEBXFFFE-----------------------
- INT 66 - MicroHelp Stay-Res/Stay-Res Plus - UNINSTALL
- AX = FFFEh
- BX = FFFEh
- Return: only if unsuccessful
- InstallCheck: test whether the interrupt handler begins with the bytes
- FBh 9Ch or 9Ch FAh, and the program name (not case-sensitive) appears
- at offset 0005h (older versions) or the offset returned by
- AX=FFFFh/BX=FFF0h in the interrupt handler segment
- Note: Programs which use Stay-Res include ThesPlus (program name "THESPLUS")
- and Personal Calendar (program name "CAL") by Paul Mun~oz-Colman.
- SeeAlso: AX=FFFBh,AX=FFFFh,INT 2D"AMIS"
- Index: installation check;MicroHelp Stay-Res|installation check;ThesPlus
- Index: installation check;Personal Calendar|installation check;CAL
- --------t-66FFFFBXFFF0-----------------------
- INT 66 - MicroHelp Stay-Res Plus - FIND PROGRAM NAME
- AX = FFFFh
- BX = FFF0h
- Return: DI = offset of program name in interrupt handler segment
- SeeAlso: AX=FFFBh,AX=FFFEh,INT 2D"AMIS"
- --------d-67---------------------------------
- INT 67 - Adaptec controllers - DRIVE 1 DATA
- Desc: this vector stores the last four bytes of the parameter table for
- hard disk 1
- SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 66"Adaptec"
- --------b-67---------------------------------
- INT 67 - TI Professional PC - SYSTEM DATA (NOT A VECTOR!)
- Desc: this vector contains the TI Pro's system configuration words
- (see #03521)
- SeeAlso: INT 66"TI Professional PC"
- Bitfields for TI Professional PC System Configuration doubleword:
- Bit(s) Description (Table 03521)
- 0 8087 present
- 31-1 reserved (0)
- --------d-67---------------------------------
- INT 67 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
- SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
- --------I-67---------------------------------
- INT 67 - Sangoma CCPOP 3270 resident module
- SeeAlso: INT 61"Sangoma",INT 68"Sangoma"
- --------U-67---------------------------------
- INT 67 - CUCKOO.COM - INSTALLATION CHECK
- Program: CUCKOO is a resident on-screen clock with optional hourly chime or
- cuckoo by an unknown author with revisions by Thomas A. Lundin
- Note: this is not a vector; when loaded for the first time, CUCKOO.COM uses
- the last unused (0000h:0000h) vector in the range 60h-67h to store
- the signature value 434Ch:4F4Bh ('CLOK')
- ----------67---------------------------------
- INT 67 - PC-DRAFT - KEYBOARD DRIVER
- ???
- Return: ???
- Program: PC-DRAFT is a powerful CAD environment by rhv.
- SeeAlso: INT 62"PC-DRAFT",INT 64"PC-DRAFT",INT 65"PC-DRAFT",INT 66"PC-DRAFT"
- --------N-6700-------------------------------
- INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE AND WAIT
- AH = 00h
- DS:DX -> ASCIZ semaphore name (max 64 bytes)
- Return: AL = status (see #03522)
- AH = semaphore owner if status=02h
- SeeAlso: AH=01h,AH=02h"PC-NET",INT 7F/AH=00h
- (Table 03522)
- Values for PC-NET semaphore function status:
- 00h successful
- 01h invalid function
- 02h semaphore already locked
- 03h unable to lock semaphore
- 04h semaphore space exhausted
- --------N-6701-------------------------------
- INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE
- AH = 01h
- DS:DX -> ASCIZ semaphore name (max 64 bytes)
- Return: AL = status (see #03522)
- AH = semaphore owner if status=02h
- SeeAlso: AH=00h,AH=02h"PC-NET",INT 7F/AH=01h"Alloy"
- --------N-6702-------------------------------
- INT 67 - PC-NET, Alloy NTNX - UNLOCK SEMAPHORE
- AH = 02h
- DS:DX -> ASCIZ semaphore name (max 64 bytes)
- Return: AL = status (see #03522)
- AH = semaphore owner if status=02h
- SeeAlso: AH=00h,AH=01h"PC-NET",INT 7F/AH=02h
- --------m-671E-------------------------------
- INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - INSTALLATION CHECK
- AH = 1Eh
- Return: AH = 00h if installed
- AL destroyed
- ES:DI -> ASCII signature "MemLimit"
- SeeAlso: AH=1Fh,INT 21/AX=4402h"386MAX"
- --------m-671F-------------------------------
- INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - API
- AH = 1Fh
- DS:SI -> request packet (see #03523)
- Return: AH = status (00h successful, 84h invalid function code, etc.)
- SeeAlso: AH=1Eh
- Format of 386MAX MEMLIMIT request packet:
- Offset Size Description (Table 03523)
- 00h WORD function code (00h-0Fh)
- 02h WORD return code (see #03524)
- 04h 4 BYTEs ???
- 08h WORD ???
- ???
- (Table 03524)
- Values for 386MAX MEMLIMIT return code:
- 00h unknown request
- 01h invalid parameter for VCPI limit
- 02h VCPI limit set
- 03h invalid parameter for EMS limit
- 04h EMS limit set
- 05h DPMI disabled
- 06h XMS disabled
- 07h XMS limit set
- 08h unable to uninstall
- 09h unloaded
- --------m-672763CL01-------------------------
- INT 67 - VIDEMS.SYS v1.31+ - INSTALLATION CHECK
- AX = 2763h
- CL = 01h
- BX = signature AAFFh
- Return: AH = 00h if VIDEMS is installed
- CH = 00h if optimization for 80286 is used, 01h otherwise
- CL = internal revision number (typically 00h to 03h)
- DX = driver version (DH=major, DL=minor; not a BCD!)
- AH = 84h if not installed but EMS manager is present
- Program: VIDEMS is an expanded memory manager from Conea Software Corp. It
- converts video adapter RAM to LIM 3.2 EMS.
- SeeAlso: AX=2763h/CL=02h,AX=2763h/CL=03h
- --------m-672763CL02-------------------------
- INT 67 - VIDEMS.SYS v1.31+ - FLUSH EMS TO VIDEO RAM
- AX = 2763h
- CL = 02h
- BX = signature AAFFh
- Return: AH = 00h if successful
- Notes: This call is normally used by Conea products only.
- SeeAlso: AX=2763h/CL=01h,AX=2763h/CL=03h
- --------m-672763CL03-------------------------
- INT 67 - VIDEMS.SYS v1.31+ - RELOAD EMS FROM VIDEO RAM
- AX = 2763h
- CL = 03h
- BX = signature AAFFh
- Return: AH = 00h if successful
- Notes: This call is normally used by Conea products only.
- SeeAlso: AX=2763h/CL=01h,AX=2763h/CL=03h
- --------m-672763CL04-------------------------
- INT 67 - VIDEMS.SYS v1.31+ - RETURN HIDDEN BLOCK SIZE
- AX = 2763h
- CL = 04h
- BX = signature AAFFh
- Return: AH = 00h if successful
- DX = block size in kilobytes
- Desc: Returns the amount of EMS which can be safely used at any time, and
- can't be destroyed by writing anything to the B800:0000 buffer.
- Note: this function normally returns 184K, while the driver provides up to
- 240K of EMS.
- SeeAlso: AX=2763h/CL=01h,AX=2763h/CL=02h
- --------m-672763CL05-------------------------
- INT 67 - VIDEMS.SYS v1.31+ - RETURN PHYSICAL PAGE SIZE
- AX = 2763h
- CL = 05h
- BX = signature AAFFh
- Return: AH = 00h
- DX = size in bytes
- Desc: Used by Conea products to determine if addressing mode has changed.
- Normally, all VIDEMS versions beginning from 1.15 use 4K "physical"
- pages.
- Notes: this function will probably become raw page size in future releases of
- VIDEMS, which will support the LIM 4.0 standard.
- SeeAlso: AX=2763h/CL=01h,AX=2763h/CL=02h
- --------m-672763CL06-------------------------
- INT 67 - VIDEMS.SYS v1.50+ - RETURN VIDEO RAM SIZE
- AX = 2763h
- CL = 06h
- BX = signature AAFFh
- Return: AH = 00h
- DX = total amount of video RAM
- Desc: beginning with version 1.50, VIDEMS can use more adapter memory on
- some chipsets, and is no longer limited to the first 240K.
- Notes: this call is not officially documented, and Conea programmers use it
- mainly for debugging purposes.
- --------u-672833-----------------------------
- INT 67 - Q87 v4+ - PREPARE TO UNLOAD AND GET XMS HANDLE FOR Q87 MEMORY
- AX = 2833h
- EAX = 29482833h (entire EAX value required)
- Return: EAX = XMS handle for memory allocated when Q87 was installed
- EBX = status
- 00000000h Q87 is in demo mode (countdown running);
- Q87 remains active
- 00000001h Q87 is in registered mode; memory manager's IDT, GDT,
- and optionally CR0 (if BL <> 5Fh on entry) have
- been restored
- 00000002h Q87 is in demo mode (demo time has expired);
- Q87 remains active
- Note: this call is used by UNLOAD87 to release the memory used by Q87
- BUG: v4.00-v4.03 will hang on most machines when run under bare DOS with
- no memory manager, because neither Q87 nor UNLOAD87 checks whether
- there is a valid INT 67 handler before performing an installation
- check via INT 67
- SeeAlso: AX=4321h,INT 21/AX=4321h/BX=0000h
- --------m-673F--CX5145-----------------------
- INT 67 U - QEMM-386 v4.23+ - INSTALLATION CHECK
- AH = 3Fh
- CX = 5145h ("QE")
- DX = 4D4Dh ("MM")
- Return: AH = 00h if installed
- ES:DI -> QEMM API entry point (see #03525,#03528,#03640)
- Notes: if no other program has hooked INT 67, an alternate installation
- check is to test for the string
- "QUARTERDECK EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
- handler's segment; the word at offset 12h contains the offset in
- the handler's segment of the API entry point
- although this function is still undocumented, Quarterdeck has recently
- documented two alternate methods for determining the QEMM API entry
- point, as well as several of the API functions
- MICEMM (Micronics Expanded Memory Manager) versions 2.0C and 4D support
- the alternate QEMM installation check and entry point functions 00h,
- 02h, and 03h; version 4D only provides the signature string if the
- commandline argument "DV" is provided
- 386MAX v6.01 responds to this call, but DESQview 2.42 does not
- recognize the returned entry point as providing QEMM's capabilities
- because a) only functions 0Ch (different from QEMM 0Ch) and
- 1000h-1009h are supported,
- b) status is returned as for EMS functions, not QEMM funcs
- c) the protected-mode entry point returned by function 1000h
- only supports functions 0Ch, 1004h, 1005h, and 100Ah
- the string check mentioned above is not supported by 386MAX
- SeeAlso: AX=5BF0h,AH=DDh,AX=FFA5h,INT 15/AX=11DEh,INT 21/AX=4402h/SF=01h
- SeeAlso: INT 21/AX=4402h"QEMM",INT 21/AX=4402h"386MAX",INT 2F/AX=D201h/BX=5145h
- (Table 03525)
- Values for calling QEMM "QPI_GetStatus" function:
- AH = 00h get QEMM state
- Return: CF clear
- AL = QEMM state
- bit 0 set if QEMM turned OFF
- bit 1 set if in "Auto" mode
- Note: this function is officially documented
- SeeAlso: #03526,#03527,#03528,#03640
- (Table 03526)
- Values for calling QEMM "QPI_SetStatus" function:
- AH = 01h set QEMM state
- AL = new state
- bit 0 set: place QEMM in OFF state
- Return: CF clear if successful
- CF set on error
- Note: this function is officially documented
- SeeAlso: #03525
- (Table 03527)
- Values for calling QEMM QPI function 02h:
- AH = 02h get ???
- Return: CF clear
- AX = segment of ??? data structure
- Data Structure
- Offset Size Description
- 00h DWORD page table entry for ???
- ???
- SeeAlso: #03528
- (Table 03528)
- Values for calling QEMM "QPI_GetVersion" function:
- AH = 03h get QEMM version
- Return: CF clear
- AX = BX = version in BCD
- Notes: this function is officially documented. The most recent official docs
- state that the version is returned in both AX and BX; older
- documentation only mentions BX
- MICEMM returns AX=0001h, BX unchanged
- SeeAlso: #03525,#03529
- (Table 03529)
- Values for calling QEMM QPI function 04h:
- AH = 04h allocate 4K page and set AUTO/ON mode
- Return: CF clear if successful
- DX = page number of a 4K page
- CF set if unable to allocate page
- Note: QEMM mode unchanged if not AUTO/OFF
- SeeAlso: #03530
- (Table 03530)
- Values for calling QEMM QPI function 05h:
- AH = 05h free 4K page and turn QEMM off
- DX = page number returned by function 04h
- Return: CF clear
- Note: QEMM mode unchanged if not AUTO/ON
- SeeAlso: #03529,#03531
- (Table 03531)
- Values for calling QEMM QPI function 06h:
- AH = 06h make new mapping context???
- DX = page number of 4K page to hold page table
- Return: CF clear
- Note: copies page table into given page and then sets ??? page table entry
- to point at copy
- SeeAlso: #03532,#03533
- (Table 03532)
- Values for calling QEMM QPI function 07h:
- AH = 07h get mapping context
- Return: CF clear
- DX = page number of page table for current mapping context
- SeeAlso: #03528,#03531,#03533
- (Table 03533)
- Values for calling QEMM QPI function 08h:
- AH = 08h set mapping context???
- DX = linear page number of page table
- Return: CF clear
- SeeAlso: #03528,#03531,#03532,#03534,#03536
- (Table 03534)
- Values for calling QEMM QPI function 09h:
- AH = 09h get linear page number for page table entry
- CX = page table index
- Return: CF clear
- DX = linear page number
- SeeAlso: #03535
- (Table 03535)
- Values for calling QEMM QPI function 0Ah:
- AH = 0Ah set linear page number for page table entry
- CX = page table index
- DX = linear page number
- Return: CF clear
- SeeAlso: #03534
- (Table 03536)
- Values for calling QEMM QPI function 0Bh:
- AH = 0Bh map 4K pages
- BX = number of pages
- CX = first page number (must be 0100h to allocate HMA)
- DX = EMS handle (memory belonging to EMS handle will be mapped
- into the address space beginning with the first page
- allocated to the handle)
- Return: AH = 00h
- SeeAlso: #03533,#03537
- (Table 03537)
- Values for calling QEMM QPI function 0Ch:
- AH = 0Ch get available memory
- Return: CF clear
- BX = 0001h
- CX = total 4K pages???
- DX = number of 4K pages free
- SeeAlso: #03536,#03538
- (Table 03538)
- Values for calling QEMM QPI function 0Dh:
- AH = 0Dh CRT controller I/O port trapping
- AL = mode
- 00h only trap on I/O ports 03C0h-03C5h, 03C7h, 03CAh-03CFh
- 01h trap on ports 03B4h, 03B5h, 03B8h, 03C6h, 03C8h, 03C9h,
- 03D4h, and 03D5h
- 02h only trap on I/O ports 03C6h, 03C8h, and 03C9h
- Return: CF clear
- (Table 03539)
- Values for calling QEMM QPI function 0Eh:
- AH = 0Eh set cursor virtualization callbacks
- DS:BX -> FAR routine for getting hardware cursor address
- ES:DX -> FAR routine for setting hardware cursor address
- Return: CF clear
- Note: both callbacks are invoked with CL indicating which
- CRT controller register to access (0Eh for high
- byte of cursor address, 0Fh for low byte)
- the DS:BX callback should return BX=cursor address;
- ES:DX is called with BL or BH (depending on CL)
- set to the appropriate half of the cursor's address
- (Table 03540)
- Values for calling QEMM QPI function 0Fh:
- AH = 0Fh unmap 4K pages
- CX = first page number
- DX = number of pages
- Return: CF clear
- AL = 00h/01h if ???
- Note: if CX=0100h and DX=0010h, the HMA is remapped to
- simulate a disabled A20
- (Table 03541)
- Values for calling QEMM QPI function 1000h:
- AX = 1000h get protected-mode interface
- DS:SI -> 16-byte buffer for two GDT entries
- ES:DI -> buffer for 4K page table
- Return: CF clear
- EAX = offset of protected-mode API entry point
- DS:SI buffer filled with two GDT descriptors
- first is QEMM code segment, second is data???
- ES:DI buffer filled with 4K page table
- DI points to first unused page table entry
- SeeAlso: INT 67/AX=DE01h
- (Table 03542)
- Values for calling QEMM QPI function 1001h:
- AX = 1001h get CPU debug registers
- ES:DI -> buffer for debug registers (8 DWORDs)
- Return: CF clear
- BL = INT01 handling (see #03543)
- ES:DI buffer filled
- (Table 03543)
- Values for calling QEMM QPI function 1002h:
- AX = 1002h set CPU debug registers
- BL = INT01 handling
- 00h reflect all debugging exceptions as V86-mode INT 01's
- else convert debugging exceptions other than single-step
- into V86-mode INT 03's, single-step to INT 01's
- ES:DI -> buffer containing debug registers (8 DWORDs)
- Return: CF clear
- Notes: identical to INT 67/AX=DE09h if BL=01h
- the INT01 handling flag is set to 01h by the general-protection
- violation handler for certain privileged instructions
- SeeAlso: #03542
- (Table 03544)
- Values for calling QEMM QPI function 1003h:
- AX = 1003h get machine status word CR0
- Return: CF clear
- EAX = contents of CR0
- SeeAlso: INT 67/AX=DE07h
- (Table 03545)
- Values for calling QEMM QPI function 1004h:
- AX = 1004h allocate a 4K page
- Return: CF clear if successful
- EDX = linear address of allocated page
- CF set on error
- SeeAlso: INT 67/AX=DE04h
- (Table 03546)
- Values for calling QEMM QPI function 1005h:
- AX = 1005h free 4K page
- EDX = linear address of page to free
- Return: CF clear
- SeeAlso: INT 67/AX=DE05h
- (Table 03547)
- Values for calling QEMM QPI function 1006h:
- AX = 1006h NOP
- Return: CF set
- (Table 03548)
- Values for calling QEMM QPI function 1007h:
- AX = 1007h get maximum physical memory address
- Return: CF clear
- EDX = physical address of highest 4K memory page
- SeeAlso: INT 67/AX=DE02h
- (Table 03549)
- Values for calling QEMM QPI function 1008h:
- AX = 1008h get physical address of page in first megabyte
- CX = page number (linear address shifted right 12 bits)
- Return: CF clear
- EDX = linear address of page
- SeeAlso: #03548,#03624,#03625
- (Table 03550)
- Values for calling QEMM QPI function 1009h:
- AX = 1009h switch to protected mode
- ESI = linear address in first megabyte of system reg values
- (see INT 67/AX=DE0Ch)
- interrupts disabled
- Return: interrupts disabled
- GDTR, IDTR, LDTR, TR loaded
- SS:ESP must have at least 16 bytes space, and the
- entry point is required to set up a new stack
- before enabling interrupts
- EAX, ESI, DS, ES, FS, GS destroyed
- (Table 03551)
- Values for calling QEMM QPI function 100Ah:
- AX = 100Ah switch back to virtual-86 mode
- DS = selector for data segment from function 1000h
- SS:ESP in first megabyte of linear memory
- interrupts disabled
- STACK: QWORD return address from FAR call to 32-bit segment
- DWORD EIP
- DWORD CS
- DWORD reserved for EFLAGS
- DWORD ESP
- DWORD SS
- DWORD ES
- DWORD DS
- DWORD FS
- DWORD GS
- will switch to virtual86 mode with interrupts disabled, all
- segment registers loaded, and EAX destroyed.
- (Table 03552)
- Values for calling QEMM QPI function 11h:
- AH = 11h get memory type map
- AL = zero/nonzero ??? (set by QEMM.COM but apparently ignored
- by QEMM 6.00)
- ES:DI -> 256-byte buffer for memory types
- Return: CF clear
- BL = ???
- ES:DI buffer filled
- Note: each byte of the buffer corresponds to a 4K page, and
- contains the type of that page: 00h = mappable,
- 02h = mapped ROM, 03h = high RAM, 04h = excluded,
- 05h = video, 06h = ROM, 07h = adapter ROM,
- 08h = split ROM, 09h = page frame, 0Ah = RAMmable,
- 0Bh = conventional, 83h = high RAM under MS Windows
- (Table 03553)
- Values for calling QEMM QPI function 12h:
- AH = 12h get HIRAM chain
- Return: CF clear
- BX = segment of first MCB in high memory
- 0000h if no high memory
- (Table 03554)
- Values for calling QEMM QPI function 1300h:
- AX = 1300h VIDRAMEGA???
- BL = 00h copy ???
- nonzero copy ??? (reverse)
- Return: CF clear
- AL = status
- 00h if all pages clean
- 01h if any page dirty
- (Table 03555)
- Values for calling QEMM QPI function 1301h:
- AX = 1301h check if pages modified
- DX:DI = start address of range to check
- CX = length of range in paragraphs
- Return: CF clear
- CX = status
- 0000h none of the indicated pages is dirty
- DI destroyed
- 1000h one or more pages is dirty
- DI = low word of first dirty page's linear addr
- (Table 03556)
- Values for calling QEMM QPI function 1302h:
- AX = 1302h ???
- BL = ???
- BH = ???
- CX = ???
- SI = offset of ???
- DI = offset of ???
- ???
- Return: CF clear
- ???
- Note: disables certain interrupts at the two 8259 PICs during
- execution; also modifies CRT controller during
- execution under certain circumstances
- (Table 03557)
- Values for calling QEMM QPI function 1303h:
- AX = 1303h initialize EGA graphics virtualization
- BX = number of pages (less 1) of EMS to allocate
- Return: CF clear if successful
- DX = EMS handle
- CF set on error
- (Table 03558)
- Values for calling QEMM QPI function 1304h:
- AX = 1304h shutdown EGA graphics virtualization
- DX = EMS handle being used for virtualization
- Return: CF clear
- (Table 03559)
- Values for calling QEMM QPI function 1305h:
- AX = 1305h select portion of EGA graphics to virtualize???
- (related to graphics virtualization, changes memory mappings)
- CX = start offset within A000h segment of virtualized mem???
- Return: CF clear
- Note: disables certain interrupts at the two 8259 PICs during
- execution (see #03566) and runs inside a QEMM
- critical section
- (Table 03560)
- Values for calling QEMM QPI function 1306h:
- AX = 1306h set DESQview critical section counter address
- ES:BX -> WORD DESQview critical section counter or 0000h:0000h
- Return: CF clear
- Note: also sets a pointer in the low-memory part of QEMM to
- the current value of INT 15 if ES:BX not 0000h:0000h
- (Table 03561)
- Values for calling QEMM QPI function 1307h:
- AX = 1307h ??? (changes memory mappings for entire A000h segment)
- Return: CF clear
- Note: disables certain interrupts at the two 8259 PICs during
- execution (see #03566) and runs inside a QEMM
- critical section
- (Table 03562)
- Values for calling QEMM QPI function 1308h:
- AX = 1308h start/reset CRT controller I/O trapping
- BL = subfunction
- 00h restore CRTC I/O port trapping to previous state
- else start trapping all accesses to I/O ports 03B0-03DF
- Return: CF clear
- Note: if called more than once in a row with BL nonzero, the
- original state of the I/O port trapping will be lost
- (Table 03563)
- Values for calling QEMM QPI function 1309h:
- AX = 1309h Hercules mode-change support
- ES:BX -> new address for Hercules mode-change callback
- Return: CF clear
- Note: the callback function is called whenever the CRTC mode
- register is written, with AL set to the value written
- (Table 03564)
- Values for calling QEMM QPI function 130Ah:
- AX = 130Ah virtualize EGA/VGA DAC registers (I/O ports 03C8h/03C9h)
- CX:DX -> DAC register virtualization buffer (see #03647)
- or 0000h:0000h to disable
- Return: CF clear
- (Table 03565)
- Values for calling QEMM QPI function 130Bh:
- AX = 130Bh ???
- BL = ??? (??? or 00h)
- Return: CF clear
- ???
- Note: calls AX=130Eh in some cases
- (Table 03566)
- Values for calling QEMM QPI function 130Ch:
- AX = 130Ch set interrupts to mask
- BX = interrupts to mask out during AX=1302h,AX=1307h,AX=1308h,
- AX=130Dh,AX=1310h (BL = master PIC, BH = slave PIC)
- Return: CF clear
- (Table 03567)
- Values for calling QEMM QPI function 130Dh:
- AX = 130Dh map EGA memory at A0000h
- ???
- Return: CF clear
- Note: disables certain interrupts at the two 8259 PICs during execution
- (see #03566) and runs inside a QEMM critical section
- calls AX=1307h (see #03561)
- (Table 03568)
- Values for calling QEMM QPI function 130Eh:
- AX = 130Eh ??? (modifies CRT controller setup)
- ???
- Return: CF clear
- (Table 03569)
- Values for calling QEMM QPI function 130Fh:
- AX = 130Fh reset ???
- Return: CF clear
- (Table 03570)
- Values for calling QEMM QPI function 1310h:
- AX = 1310h copy modified pages to physical video RAM???
- ???
- Return: CF clear
- Note: disables certain interrupts at the two 8259 PICs during execution
- (see #03566) and runs inside a QEMM critical section
- also calls AX=130Dh (see #03567)
- (Table 03571)
- Values for calling QEMM QPI function 1311h:
- AX = 1311h set ???
- BL = zero/nonzero???
- Return: CF clear
- Note: certain operations will be performed with interrupts
- (as set by AX=130Ch) enabled rather than disabled if
- called with BL nonzero
- (Table 03572)
- Values for calling QEMM QPI function 1312h:
- AX = 1312h (v6.02) NOP???
- Note: called by DV 2.42, but appears to be a NOP in QEMM 6.02
- (Table 03573)
- Values for calling QEMM QPI function 1400h:
- AX = 1400h initialize DESQview "protection level" support
- ES:DI -> protection level configuration (at least 24 bytes)
- (see #03641)
- BL = highest ??? to return (one less than number of words)
- Return: CF clear
- AX = ??? (4204h for v6.00)
- Note: QEMM also sets the protected mode INT 02 and INT 06
- vectors to alternate handlers in certain cases
- (Table 03574)
- Values for calling QEMM QPI function 1401h:
- AX = 1401h turn off DESQview protection level support
- Return: CF clear
- ???
- Notes: clears the DV critical-section flag address set with
- function 1306h
- QEMM also sets the protected mode INT 02 and INT 06
- vectors to the default handlers if they had been
- revectored by function 1400h
- (Table 03575)
- Values for calling QEMM QPI function 1402h:
- AX = 1402h set protection level???
- BL = protection level???
- 00h NOP
- 01h ???
- 02h ???
- other (03h) ???
- ES:DI -> ???
- Return: CF clear
- ???
- Format of Data structure:
- Offset Size Description
- 00h WORD segment of ??? (X, word at X:0136h set to X)
- 02h WORD segment of ??? (word at X:0124h set to this)
- 04h WORD number of paragraphs of ???
- 06h 3 WORDs ??? (copied to X:0000h)
- 0Ch WORD ???
- (Table 03576)
- Values for calling QEMM QPI function 1403h:
- AX = 1403h add ??? to end of list and ??? (execute func 1406h)
- ES:DI -> ??? structure added to end of ??? list
- (at least 31 bytes, DWORD at offset 06h used for
- storing pointer to next struc, WORD at offset 00h
- seems to be a key or index)
- Return: CF clear
- (Table 03577)
- Values for calling QEMM QPI function 1404h:
- AX = 1404h NOP
- Return: CF clear
- (Table 03578)
- Values for calling QEMM QPI function 1405h:
- AX = 1405h remove ??? from ??? list
- BX = key???
- Return: CF clear
- (Table 03579)
- Values for calling QEMM QPI function 1406h:
- AX = 1406h ???
- ???
- Return: CF clear
- ???
- Notes: this function is a NOP unless protection level 2 or 3
- is active
- when not a NOP, one of the actions is to write-protect
- certain memory pages
- (Table 03580)
- Values for calling QEMM QPI function 1407h:
- AX = 1407h ???
- ???
- Return: CF clear
- ???
- Note: same as function 1406h, but only does anything if
- protection level 2 is active
- (Table 03581)
- Values for calling QEMM QPI function 1408h:
- AX = 1408h unprotect???
- ???
- Return: CF clear
- ???
- (Table 03582)
- Values for calling QEMM QPI function 1409h:
- AX = 1409h abort program causing protection violation???
- ???
- Return: CF clear
- ???
- (Table 03583)
- Values for calling QEMM QPI function 140Ah:
- AX = 140Ah set ???
- BX = index of ???
- Return: CF clear
- ???
- Notes: no range checking is performed on BX
- this function is a NOP unless protection level 3 active
- (Table 03584)
- Values for calling QEMM QPI function 140Bh:
- AX = 140Bh get ???
- BX = index of ???
- SI = 0000h
- Return: CF clear
- SI = segment of 256-byte buffer??? or 0000h
- Notes: no range checking is performed on BX
- this function is a NOP unless protection level 3 active
- (Table 03585)
- Values for calling QEMM QPI function 15h:
- AH = 15h set timer channel 0 virtualization buffer
- ES:BX -> WORD buffer for timer channel 0 divisor
- 0000h:0000h to disable virtualization
- Return: CF clear
- (Table 03586)
- Values for calling QEMM v5.00+ QPI function 1600h:
- AX = 1600h get memory access status
- ES:DI -> 256-byte buffer
- Return: ES:DI buffer filled
- Note: each byte of the buffer indicates the status of a 4K
- page (bit 0 set if read, bit 1 set if written)
- (Table 03587)
- Values for calling QEMM v5.00+ QPI function 1601h:
- AX = 1601h set memory access status
- ES:DI -> 256-byte buffer containing access statuses (see #03586)
- (Table 03588)
- Values for calling QEMM v5.00+ QPI function 17h:
- AH = 17h get memory usage statistics
- ES:DI -> 81-byte buffer for memory statistics (see #03645)
- Return: CF clear
- (Table 03589)
- Values for calling QEMM v5.11+ QPI function 18h:
- AH = 18h check whether conventional memory mapped into address range
- ES:BX = starting address
- CX = number of 4K pages
- Return: CF clear
- AL = 00h one or more pages is remapped
- 01h all pages in range are conventional memory
- (physical address == virtual address)
- (Table 03590)
- Values for calling QEMM v5.11+ QPI function 19h:
- AH = 19h NOP
- Return: CF set
- (Table 03591)
- Values for calling QEMM v5.11+ "QPI_UntrappedIORead" function:
- AX = 1A00h get byte from I/O port
- DX = port number
- Return: CF clear
- BL = port value
- Note: this function was officially documented with the release of QEMM 7.50
- (Table 03592)
- Values for calling QEMM v5.11+ "QPI_UntrappedIOWrite" function:
- AX = 1A01h send byte to I/O port
- BL = value to send
- DX = port number
- Return: CF clear
- Note: this function was officially documented with the release of QEMM 7.50
- (Table 03593)
- Values for calling QEMM v5.11+ "QPI_UntrappedIOReadIndexed" function:
- AX = 1A02h
- BH = index value to send
- DX = base port number
- Return: CF clear
- BL = value read from I/O port (DX+1)
- Note: this function was officially documented with the release of QEMM 7.50
- (Table 03594)
- Values for calling QEMM v5.11+ "QPI_UntrappedIOWriteIndexed" function:
- AX = 1A03h send bytes to two consecutive I/O ports
- BH = value for first I/O port (DX)
- BL = value for second I/O port (DX+1)
- DX = base port number
- Return: CF clear
- Note: this function was officially documented with the release of QEMM 7.50
- (Table 03595)
- Values for calling QEMM v7.03+ "QPI_UntrappedIO" function:
- AX = 1A04h
- BX = value to write to port
- CX = direction and size
- bit 2: output instead of input
- bit 3: word instead of byte
- DX = I/O port to be accessed
- Return: CF clear
- BX = value read (if CX indicates read)
- Note: this function was officially documented with the release of QEMM 7.50
- (Table 03596)
- Values for calling QEMM v7.03+ function 1A05h
- AX = 1A05h
- ???
- Return: ???
- (Table 03597)
- Values for calling QEMM v7.03+ "QPI_GetIOCallback" function:
- AX = 1A06h
- Return: CF clear
- ES:DI -> current I/O callback function (see #03599)
- Note: this function was officially documented with the release of QEMM 7.50
- (Table 03598)
- Values for calling QEMM v7.03+ "QPI_SetIOCallback" function:
- AX = 1A07h
- ES:DI -> new I/O callback function (see #03599)
- Return: CF clear
- Note: this function was officially documented with the release of QEMM 7.50
- (Table 03599)
- Values QEMM v7.03+ I/O callback function is called with:
- AL/AX = data to/from trapped port
- CL = I/O direction (00h = IN instruction, else OUT instruction)
- DX = I/O port address
- Return: CF clear if port handled by callback function
- CF set if not handled
- all other registers returned to application executing the IN or OUT
- instruction (allowing arbitrary changes to port address, data value,
- etc.)
- SeeAlso: #03597,#03598
- (Table 03600)
- Values for calling QEMM v7.03+ "QPI_GetPortTrap" function:
- AX = 1A08h
- DX = I/O port number
- Return: CF clear
- BL = trapping state (00h not being trapped, 01h trap installed)
- Note: this function was officially documented with the release of QEMM 7.50
- (Table 03601)
- Values for calling QEMM v7.03+ "QPI_SetPortTrap" function:
- AX = 1A09h
- DX = I/O port number
- Return: CF clear
- Note: this function was officially documented with the release of QEMM 7.50
- (Table 03602)
- Values for calling QEMM v7.03+ "QPI_ClearPortTrap" function:
- AX = 1A0Ah
- DX = I/O port number
- Return: CF clear
- Note: this function was officially documented with the release of QEMM 7.50
- (Table 03603)
- Values for calling QEMM v5.11+ QPI function 1B00h:
- AX = 1B00h get EMM Import Structure address
- ES:DI -> buffer for EMM import data structure (see #03643)
- Return: CF set on error
- CF clear if successful
- SeeAlso: INT 21/AX=4402h/SF=01h
- (Table 03604)
- Values for calling QEMM v5.11+ QPI function 1B01h:
- AX = 1B01h disable V86 mode
- Return: CF set on error
- (i.e. no Global EMM Import rec. allocated)
- CF clear if successful
- Note: shuts down EMS and initializes Global EMM Import record; this function
- is invoked from the callback supplied by INT 2F/AX=1605h
- (Table 03605)
- Values for calling QEMM v5.11+ QPI function 1B02h:
- AX = 1B02h enable V86 mode
- Return: CF set on error
- CF clear if successful
- Note: restarts EMS and frees Global EMM Import record; this function is
- invoked from the callback supplied by INT 2F/AX=1605h
- (Table 03606)
- Values for calling QEMM v5.11+ QPI function 1B03h:
- AX = 1B03h MS Windows initializing
- CX = segment from which Windows init broadcast made???
- DX = Windows startup flags
- DI = Windows version number (major in upper byte)
- Return: CF clear if successful
- DS:SI -> V86 mode enable/disable callback
- (see #02634 at INT 2F/AX=1605h)
- ES:BX -> startup info structure (see #02631 at INT 2F/AX=1605h)
- CF set on error (unable to start Windows)
- SeeAlso: INT 2F/AX=1605h
- (Table 03607)
- Values for calling QEMM v5.11+ QPI function 1B04h:
- AX = 1B04h MS Windows terminating
- Return: CF clear
- (Table 03608)
- Values for calling QEMM v5.11+ QPI function 1B05h:
- AX = 1B05h determine whether program is driver
- DS:DX -> ASCIZ filename
- Return: CF clear
- AL = status
- 01h if string ends in ".DRV"
- FFh if string ends in "GDI.EXE"
- 00h otherwise
- Note: when MS Windows 3.0 standard mode starts, QEMM patches all drivers
- until GDI.EXE is loaded
- (Table 03609)
- Values for calling QEMM v5.11+ QPI function 1B06h:
- AX = 1B06h patch protected-mode check in Windows driver
- CX = length of data pointed at by DS:DX
- DS:DX -> buffer containing Windows driver code
- Return: CF clear
- Note: patches all SMSW x/TEST x,1 instruction sequences into MOV x,CS/VERW x
- sequences, which has the effect that the protected-mode check will
- only indicate protected mode in native protected mode and not in V86
- mode
- (Table 03610)
- Values for calling QEMM v5.11+ QPI function 1B07h:
- AX = 1B07h
- BUG: QEMM 6.00-7.01 accept this and branch randomly
- (Table 03611)
- Values for calling QEMM v5.11+ QPI function 1Bxxh:
- AX = 1B08h to 1BFFh
- Return: CF set
- (Table 03612)
- Values for calling QEMM v5.11+ QPI function 1C00h:
- AX = 1C00h disable IRQ0-7 calldowns
- Return: CF clear
- (Table 03613)
- Values for calling QEMM v5.11+ QPI function 1C01h:
- AX = 1C01h set V86-mode IRQ0-7 handlers
- ES:DI -> 8 DWORDs containing V86-mode handler addresses
- Return: CF clear
- (Table 03614)
- Values for calling QEMM v5.11+ QPI function 1C02h:
- AX = 1C02h disable IRQ8-15 handlers
- Return: CF clear
- (Table 03615)
- Values for calling QEMM v5.11+ QPI function 1C03h:
- AX = 1C03h set V86-mode IRQ8-15 handlers
- ES:DI -> 8 DWORDs containing V86-mode handler addresses
- BUG: although the jump table only contains four entries, QEMM 6.00 will
- attempt to use it for any value of AL between 00h and 2Ah, thus
- branching unpredictably for AL=04h-2Ah; QEMM v7.01 behaves
- similarly for AL=04h-1Bh
- Note: when enabled, the appropriate IRQs are reflected back to the specified
- handlers in virtual-86 mode after the CPU automatically invokes the
- protected-mode handler inside QEMM
- (Table 03616)
- Values for calling QEMM v7.03+ "QPI_SimulateHWInt" function:
- AX = 1C04h
- BX = number of interrupt to simulate
- Return: ???
- Notes: this function will allow proper simulation of a hardware interrupt
- under DESQview and DESQview/X, where the correct interrupt handler
- may be in a different process with a completely different address
- space
- this function was officially documented with the release of QEMM v7.50
- (Table 03617)
- Values for calling QEMM v6.0x only QPI function 1D00h:
- AX = 1D00h switch to pre-Stealth interrupt vector table
- Return: CF clear if supported (QEMM v6.x)
- CF set if not supported (QEMM v7+)
- Notes: also switches VGA Save table pointer (0040h:00A8h) and overwrites the
- vectors currently assigned for use by the two interrupt controllers
- (see INT 67/AX=DE0Ah) with the vectors for INT 08-0F and 70-77 (to
- avoid crashing the system).
- functions 1Dxxh are not supported by QEMM v7.01, and always return CF
- set
- (Table 03618)
- Values for calling QEMM v6.0x only QPI function 1D01h:
- AX = 1D01h restore user interrupt vector table
- Return: CF clear if supported (QEMM v6.x)
- CF set if not supported (QEMM v7+)
- Notes: interrupts should be disabled around the AX=1D00h and AX=1D01h calls
- because QEMM does not modify the memory maps to map in ROM, so
- an interrupt could be disastrous
- clears any pending IRQ7 at end of function
- functions 1Dxxh are not supported by QEMM v7.01, and always return CF
- set
- (Table 03619)
- Values for calling QEMM v6.00+ QPI function 1Dxxh:
- AX = 1D02h to 1DFFh
- Return: CF set
- (Table 03620)
- Values for calling QEMM v6.00+ "QEMM_GET_INFO"/"QPI_GetInfo" function:
- AX = 1E00h get Stealth configuration
- Return: CF clear
- BL = memory configuration flags (documented as "reserved") (see #03644)
- BH = (v7.00+) disk buffer flags
- bit 0: DISKBUFFRAME buffer instead of DISKBUF buffer
- bit 1: buffer has already been used
- CL = stealth type (00h none, 46h Frame, 4Dh Map, 50h Protect)
- CH = suspend/resume interrupt (00h none)
- DL = (v7.00+) size of QEMM disk buffer in KB (00h none)
- DH = reserved (always 00h for v6.00)
- SI = reserved (always 0000h for v6.00)
- DI = reserved (always 0000h for v6.00)
- Note: this function is officially documented
- (Table 03621)
- Values for calling QEMM v6.00+ "QPI_GetStealthCount" function:
- AX = 1E01h get number of Stealth'ed ROMs
- Return: CF clear
- BX = number of Stealth'ed ROMs
- Note: this function is officially documented
- (Table 03622)
- Values for calling QEMM v6.00+ "QPI_GetStealthList" function:
- AX = 1E02h
- ES:DI -> buffer for Stealth ROM info (see #03646)
- Return: CF clear
- BX = number of Stealth'ed ROMs
- ES:DI buffer filled
- Note: this function is officially documented
- (Table 03623)
- Values for unimplemented Stealth information functions:
- AX = 1E03h to 1EFFh
- Return: CF set
- (Table 03624)
- Values for calling QEMM v6.00+ "QEMM_GET_PTE"/"QPI_GetPTE" function:
- AX = 1F00h get page table entry
- CX = page number (0000h-010Fh)
- Return: CF clear
- EDX = page table entry
- Note: this function is officially documented
- (Table 03625)
- Values for calling QEMM v6.00+ "QEMM_SET_PTE"/"QPI_SetPTE" function:
- AX = 1F01h set page table entry
- CX = page number (0000h-010Fh)
- EDX = new page table entry
- Return: CF clear
- Note: this function is officially documented
- SeeAlso: #03549
- (Table 03626)
- Values for calling QEMM v6.00+ QPI function 1Fxxh:
- AX = 1F02h to 1FFFh
- Return: CF set
- (Table 03627)
- Values for calling QEMM v6.00+ "QEMM_GET_VHI_INFO"/"QPI_GetVHIInfo" function:
- AX = 2000h "QEMM_GET_VHI_INFO" get VirtualHDIRQ information
- Return: CF clear
- BL = flags
- bit 7: VirtualHDIRQ setting respected
- (set if Stealth active)
- bits 6-1 reserved
- bit 0: VirtualHDIRQ currently enabled
- (INT 15/AH=90h suppressed when enabled)
- Note: this function is officially documented
- SeeAlso: #03628
- (Table 03628)
- Values for calling QEMM v6.00+ "QEMM_SET_VHI_INFO"/"QPI_SetVHIInfo" function:
- AX = 2001h set VirtualHDIRQ state
- BL bit 0 = new VirtualHDIRQ state
- Return: CF clear
- BL = old VHI setting (bits 0 and 7, see #03627)
- Note: this function is officially documented
- SeeAlso: #03627
- (Table 03629)
- Values for calling QEMM v6.00+ QPI function 20xxh:
- AX = 2002h to 20FFh
- Return: CF set
- (Table 03630)
- Values for calling QEMM v6.00+ "QEMM_COPY_STEALTH_ROMS"/"QPI_CopyStealthRoms":
- AX = 2100h copy data from Stealthed address space
- DS:SI -> start address of hidden memory to copy
- ES:DI -> buffer for copied data
- ECX = number of bytes to copy
- Return: CF clear if successful
- CF set on error (no Stealth or DS:SI < C000h:0000h or DS:SI + ECX > 1M)
- Note: this function was officially documented with the release of QEMM 7.50
- (Table 03631)
- Values for calling QEMM v6.00+ QPI function 21xxh:
- AX = 2101h to 21FFh
- Return: CF set
- (Table 03632)
- Values for calling QEMM v6.03+ QPI function 2200h:
- AX = 2200h DESQview/X support -- get ???
- Return: CF clear
- ES:DI -> ???
- (Table 03633)
- Values for calling QEMM v6.03+ QPI function 2201h:
- AX = 2201h DESQview/X support -- set ???
- ES:DI -> ??? or 0000h:0000h
- Return: CF clear if successful
- CF set on error
- (Table 03634)
- Values for calling QEMM v6.04+ QPI function 2300h:
- AX = 2300h get ???
- BX = which ??? to get (must be 0000h for v6.04)
- Return: CF clear if successful
- ES:DI -> ???
- CF set on error
- (Table 03635)
- Values for calling QEMM v6.04+ QPI function 2301h:
- AX = 2301h set ???
- BX = which ??? to set (must be 0000h for v6.04)
- ES:DI -> ???
- Return: CF clear if successful
- CF set on error
- (Table 03636)
- Values for calling QEMM v6.04+ QPI function 2302h:
- AX = 2302h clear specified ???
- BX = which ??? to clear (must be 0000h for v6.04)
- Return: CF clear if successful
- CF set on error
- (Table 03637)
- Values for calling QEMM v6.04+ QPI function 23FFh:
- AX = 23FFh clear all ???
- Return: CF clear if successful
- CF set on error
- (Table 03638)
- Values for calling QEMM v6.04+ QPI function 23xxh:
- AX = 2303h to 23FEh
- Return: CF set
- (Table 03639)
- Values for calling QEMM v7.01+ QPI function 24h:
- AH = 24h ST-DBL support
- AL = subfunction
- 00h set ???
- EDX -> information table (EDX = segment SHL 16 + offset)
- 01h ???
- Return: CF clear if successful
- CF set on error
- (Table 03640)
- Values for calling QEMM unimplemented QPI functions:
- AH = 25h to FFh
- Return: CF set
- Format of QEMM protection level configuration:
- Offset Size Description (Table 03641)
- 00h WORD segment of 128 breakpoint (INT 3) instructions for use in
- DESQview protection level 3 interrupt vector checking, or
- 0000h to disable; in pl3, INTs 00-7F are pointed at these
- breakpoints
- 02h DWORD -> array of actual interrupt handler addresses for INT 00-7F
- when interrupt vectors are pointed at protection level 3
- breakpoints
- 06h DWORD far pointer to ??? region list (see #03642)
- 0Ah DWORD far pointer to buffer for returned ???
- 0Eh DWORD seg:ofs of function to call on protection violation???
- 12h WORD segment of ???
- 14h DWORD far pointer to DWORD containing number of paragraphs of
- ??? for segment at offset 12h
- ???
- Format of protection level Region List:
- Offset Size Description (Table 03642)
- 00h WORD number of PAIRS of pointers to follow
- 02h 2N DWORDs start/end seg:ofs addresses of ??? regions
- Note: QEMM converts the segmented addresses into linear addresses in place
- Format of EMM Import structure:
- Offset Size Description (Table 03643)
- 00h DWORD physical address of EMM import struct
- 04h BYTE major version (v6.00 sets to 01h)
- 05h BYTE minor version (v6.00 sets to 00h/0Bh)
- SeeAlso: INT 21/AX=4402h/SF=01h
- Bitfields for memory configuration flags:
- Bit(s) Description (Table 03644)
- 0 conventional memory sorted
- 1 conventional memory filled
- 2 ???
- 3 ???
- 4 expanded memory is in use
- 5 ???
- Format of QEMM 6.0 memory statistics:
- Offset Size Description (Table 03645)
- 00h BYTE 01h if Shadow RAM found, 00h otherwise
- 01h DWORD initial conventional memory in bytes
- 05h DWORD initial extended memory in bytes
- 09h DWORD initial expanded memory in bytes
- 0Dh DWORD initial "top" or "shadow" memory in bytes
- 11h DWORD Unavailable conventional memory in bytes
- 15h DWORD Unavailable extended memory in bytes
- 19h DWORD Unavailable expanded memory in bytes
- 1Dh DWORD Unavailable "top" or "shadow" memory in bytes
- Add to offset 49h for Total unavailable top/shadow.
- 21h DWORD QEMM code size in bytes
- 25h DWORD QEMM data size in bytes
- 29h DWORD bytes used for TASKS=
- 2Dh DWORD DMA buffer size
- 31h DWORD bytes used for MAPS=
- 35h DWORD bytes of high RAM
- 39h DWORD bytes used by mapped ROMs
- 3Dh DWORD bytes of conventional memory provided by QEMM
- 41h DWORD bytes of extended memory NOT converted by QEMM (EXT=xxx)
- 45h DWORD bytes of EMS/XMS pool memory provided by QEMM
- 49h DWORD Unavailable "top" or "shadow" memory in bytes
- Add to offset 1Dh for Total unavailable top/shadow.
- 4Dh DWORD conventional memory overhead in bytes
- (set to 0 by QEMM.COM prior to call)
- Format of Stealth ROM info [array]:
- Offset Size Description (Table 03646)
- 00h WORD starting segment of ROM
- 02h WORD length of ROM in paragraphs
- Format of QEMM EGA/VGA DAC register virtualization buffer:
- Offset Size Description (Table 03647)
- 00h BYTE (temp) current color register number
- 01h BYTE (temp) number of bytes written so far for current color reg
- 02h 768 BYTEs three bytes per color register
- --------m-6740-------------------------------
- INT 67 - LIM EMS - GET MANAGER STATUS
- AH = 40h
- Return: AH = status (00h,80h,81h,84h) (see #03648)
- Note: this call can be used only after establishing that the EMS driver is in
- fact present
- SeeAlso: AH=3Fh,AX=FFA5h,@xxxxh:xxxxh"PMM"
- (Table 03648)
- Values for EMS function status:
- 00h successful
- 80h internal error
- 81h hardware malfunction
- 82h busy -- retry later
- 83h invalid handle
- 84h undefined function requested by application
- 85h no more handles available
- 86h error in save or restore of mapping context
- 87h insufficient memory pages in system
- 88h insufficient memory pages available
- 89h zero pages requested
- 8Ah invalid logical page number encountered
- 8Bh invalid physical page number encountered
- 8Ch page-mapping hardware state save area is full
- 8Dh save of mapping context failed
- 8Eh restore of mapping context failed
- 8Fh undefined subfunction
- 90h undefined attribute type
- 91h feature not supported
- 92h successful, but a portion of the source region has been overwritten
- 93h length of source or destination region exceeds length of region
- allocated to either source or destination handle
- 94h conventional and expanded memory regions overlap
- 95h offset within logical page exceeds size of logical page
- 96h region length exceeds 1M
- 97h source and destination EMS regions have same handle and overlap
- 98h memory source or destination type undefined
- 9Ah specified alternate map register or DMA register set not supported
- 9Bh all alternate map register or DMA register sets currently allocated
- 9Ch alternate map register or DMA register sets not supported
- 9Dh undefined or unallocated alternate map register or DMA register set
- 9Eh dedicated DMA channels not supported
- 9Fh specified dedicated DMA channel not supported
- A0h no such handle name
- A1h a handle found had no name, or duplicate handle name
- A2h attempted to wrap around 1M conventional address space
- A3h source array corrupted
- A4h operating system denied access
- --------m-6741-------------------------------
- INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
- AH = 41h
- Return: AH = status (see also AH=40h)
- 00h function successful
- BX = segment of page frame
- SeeAlso: AH=58h,AH=68h
- --------m-6742-------------------------------
- INT 67 - LIM EMS - GET NUMBER OF PAGES
- AH = 42h
- Return: AH = status (see also AH=40h)
- 00h function successful
- BX = number of unallocated pages
- DX = total number of pages
- BUG: DOS 6.0 EMM386.EXE causes a system lock-up or reboot if in AUTO mode
- when this call is made; use AH=46h to ensure that EMM386 is ON
- before making this call
- SeeAlso: INT 2F/AX=2702h
- --------m-6743-------------------------------
- INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
- AH = 43h
- BX = number of logical pages to allocate
- Return: AH = status (00h,80h,81h,84h,85h,87h,88h,89h) (see #03648)
- DX = handle if AH=00h
- SeeAlso: AH=45h
- --------u-674321-----------------------------
- INT 67 - Q87 v4+ - INSTALLATION CHECK
- AX = 4321h
- EAX = 87654321h (entire EAX value required)
- Return: EAX = 12345678h if Q87 is installed
- Note: this call requires that VCPI services be available; if they are not,
- this call will not be recognized
- BUG: v4.00-v4.03 will hang on most machines when run under bare DOS with
- no memory manager, because neither Q87 nor UNLOAD87 checks whether
- there is a valid INT 67 handler before performing an installation
- check via INT 67
- SeeAlso: AX=2833h,INT 21/AX=4321h
- --------m-6744-------------------------------
- INT 67 - LIM EMS - MAP MEMORY
- AH = 44h
- AL = physical page number (0-3)
- BX = logical page number
- or FFFFh to unmap (QEMM)
- DX = handle
- Return: AH = status (00h,80h,81h,83h,84h,8Ah,8Bh) (see #03648)
- SeeAlso: AH=69h
- --------m-6745-------------------------------
- INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
- AH = 45h
- DX = EMM handle
- Return: AH = status (00h,80h,81h,83h,84h,86h) (see #03648)
- SeeAlso: AH=43h
- --------m-6746-------------------------------
- INT 67 - LIM EMS - GET EMM VERSION
- AH = 46h
- Return: AH = status (00h,80h,81h,84h) (see #03648)
- AL = EMM version number if AH=00h
- --------m-6747-------------------------------
- INT 67 - LIM EMS - SAVE MAPPING CONTEXT
- AH = 47h
- DX = handle
- Return: AH = status (00h,80h,81h,83h,84h,8Ch-8Eh) (see #03648)
- SeeAlso: AH=48h
- --------m-6748-------------------------------
- INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
- AH = 48h
- DX = handle
- Return: AH = status (00h,80h,81h,83h,84h,8Eh) (see #03648)
- SeeAlso: AH=47h
- --------m-6749-------------------------------
- INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
- AH = 49h
- Note: defined in EMS 3.0, but undocumented in EMS 3.2
- --------m-674A-------------------------------
- INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
- AH = 4Ah
- Note: defined in EMS 3.0, but undocumented in EMS 3.2
- --------m-674B-------------------------------
- INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
- AH = 4Bh
- Return: AH = status (00h,80h,81h,83h,84h) (see #03648)
- BX = number of EMM handles if AH=00h
- --------m-674C-------------------------------
- INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
- AH = 4Ch
- DX = EMM handle
- Return: AH = status (see #02785)
- BX = number of logical pages if AH=00h
- SeeAlso: AH=4Dh
- --------m-674D-------------------------------
- INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
- AH = 4Dh
- ES:DI -> array to receive information
- Return: AH = status (00h,80h,81h,84h) (see #03648)
- ---if AH=00h---
- BX = number of active EMM handles
- array filled with 2-word entries, consisting of a handle and the
- number of pages allocated to that handle
- SeeAlso: AH=4Ch
- --------m-674E-------------------------------
- INT 67 - LIM EMS - GET OR SET PAGE MAP
- AH = 4Eh
- AL = subfunction
- 00h get mapping registers
- 01h set mapping registers
- 02h get and set mapping registers at once
- 03h get size of page-mapping array
- DS:SI -> array holding information (AL=01h/02h)
- ES:DI -> array to receive information (AL=00h/02h)
- Return: AH = status (00h,80h,81h,84h,8Fh,A3h) (see also AH=40h)
- 00h successful
- AL = bytes in page-mapping array (AL=03h only)
- array pointed to by ES:DI receives mapping info (AL=00h/02h)
- Notes: this function was designed to be used by multitasking operating systems
- and should not ordinarily be used by appplication software.
- MD386 returns the size of the page-mapping array in AX instead of AL
- SeeAlso: AH=4Fh
- --------m-674F-------------------------------
- INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
- AH = 4Fh
- AL = subfunction
- 00h get partial page map
- DS:SI -> structure containing list of segments whose mapping
- contexts are to be saved
- ES:DI -> array to receive page map
- 01h set partial page map
- DS:SI -> structure containing saved partial page map
- 02h get size of partial page map
- BX = number of mappable segments in the partial map to be saved
- Return: AH = status (00h,80h,81h,84h,8Bh,8Fh,A3h) (see also AH=40h)
- 8Bh one of the specified segments is not mappable
- A3h contents of partial page map corrupted or count of mappable
- segments exceeds total number of mappable segments in system
- AL = size of partial page map for subfunction 02h
- SeeAlso: AH=4Eh
- --------m-6750-------------------------------
- INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
- AH = 50h
- AL = subfunction
- 00h use physical page numbers
- 01h use segment addresses
- DX = handle
- CX = number of entries in array
- DS:SI -> mapping array (see #03649)
- Return: AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #03648)
- SeeAlso: AH=40h
- Format of EMS mapping array entry:
- Offset Size Description (Table 03649)
- 00h WORD logical page number or FFFFh to unmap physical page
- 02h WORD physical page number or segment address
- --------m-6751-------------------------------
- INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
- AH = 51h
- DX = handle
- BX = number of pages to be allocated to handle
- Return: AH = status (00h,80h,81h,83h,84h,87h,88h) (see #03650)
- BX = actual number of pages allocated to handle
- (Table 03650)
- Values for EMS function status:
- 00h successful
- 80h internal error
- 81h hardware malfunction
- 83h invalid handle
- 84h undefined function requested
- 87h more pages requested than present in system
- 88h more pages requested than currently available
- 8Ah invalid logical page number encountered
- 8Bh invalid physical page number encountered
- 8Fh undefined subfunction
- 90h undefined attribute type
- 91h feature not supported
- A0h no such handle name
- A1h duplicate handle name
- --------m-6752-------------------------------
- INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
- AH = 52h
- AL = subfunction
- 00h get handle attributes
- Return: AL = attribute
- 00h handle is volatile
- 01h handle is nonvolatile
- 01h set handle attributes
- BL = new attribute
- 00h handle is volatile
- 01h handle is nonvolatile
- 02h get attribute capability
- Return: AL = attribute capability
- 00h only volatile handles supported
- 01h both volatile and non-volatile supported
- DX = handle
- Return: AH = status (00h,80h,81h,83h,84h,8Fh-91h) (see #03648)
- SeeAlso: AH=53h
- --------m-6753-------------------------------
- INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
- AH = 53h
- AL = subfunction
- 00h get handle name
- ES:DI -> 8-byte buffer for handle name
- 01h set handle name
- DS:SI -> 8-byte handle name
- DX = handle
- Return: AH = status (00h,80h,81h,83h,84h,8Fh,A1h) (see #03648)
- SeeAlso: AH=52h
- --------m-6754-------------------------------
- INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
- AH = 54h
- AL = subfunction
- 00h get handle directory
- ES:DI -> buffer for handle directory (see #03651)
- 01h search for named handle
- DS:SI -> 8-byte name
- 02h get total number of handles
- Return: AL = number of entries in handle directory (subfunction 00h)
- DX = value of named handle (subfunction 01h)
- BX = total number of handles (subfunction 02h)
- AH = status (00h,80h,81h,84h,8Fh,A0h,A1h) (see also #03650)
- A1h a handle found had no name
- Format of EMS handle directory entry:
- Offset Size Description (Table 03651)
- 00h WORD handle
- 02h 8 BYTEs handle's name
- --------m-6755-------------------------------
- INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
- AH = 55h
- AL = subfunction
- 00h physical page numbers provided by caller
- 01h segment addresses provided by caller
- DX = handle
- DS:SI -> structure containing map and jump address
- Return: (at target address unless error)
- AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #03648)
- SeeAlso: AH=56h
- --------m-6756-------------------------------
- INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
- AH = 56h
- AL = subfunction
- 00h physical page numbers provided by caller
- DX = handle
- DS:SI -> structure containing page map and call address
- 01h segment addresses provided by caller
- DX = handle
- DS:SI -> structure containing page map and call address
- 02h get page map stack space required
- Return: BX = stack space required
- Return: (if successful, the target address is called. Use a RETF to return
- and restore mapping context)
- AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #03648)
- SeeAlso: AH=55h
- --------m-6756FF-----------------------------
- INT 67 - RM386 v6.00 - ???
- AX = 56FFh
- DS:SI -> ???
- ???
- Return: ???
- --------m-6757-------------------------------
- INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
- AH = 57h
- AL = subfunction
- 00h move memory region
- 01h exchange memory region
- DS:SI -> structure describing source and destination (see #03653)
- Return: AH = status (see #03652)
- Note: source and destination may overlap for a move, in which case the copy
- direction is chosen such that the destination receives an intact copy
- of the source region
- (Table 03652)
- Values for EMS function status:
- 00h successful
- 80h internal error
- 81h hardware failure
- 83h invalid handle
- 84h undefined function requested
- 8Ah invalid logical page number encountered
- 8Fh undefined subfunction
- 92h successful, but a portion of the source region has been overwritten
- 93h length of source or destination region exceeds length of region
- allocated to either source or destination handle
- 94h conventional and expanded memory regions overlap
- 95h offset within logical page exceeds size of logical page
- 96h region length exceeds 1M
- 97h source and destination EMS regions have same handle and overlap
- 98h memory source or destination type undefined
- A2h attempted to wrap around 1M conventional address space
- Format of EMS copy data:
- Offset Size Description (Table 03653)
- 00h DWORD region length in bytes
- 04h BYTE source memory type
- 00h conventional
- 01h expanded
- 05h WORD source handle (0000h if conventional memory)
- 07h WORD source initial offset (within page if EMS, segment if convent)
- 09h WORD source initial segment (conv mem) or logical page (EMS)
- 0Bh BYTE destination memory type
- 00h conventional
- 01h expanded
- 0Ch WORD destination handle
- 0Eh WORD destination initial offset
- 10h WORD destination initial segment or page
- --------m-6758-------------------------------
- INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
- AH = 58h
- AL = subfunction
- 00h get mappable physical address array
- ES:DI -> buffer to be filled with array (see #03654)
- 01h get number of entries in m.p.a. array
- Return: CX = number of entries in array
- AH = status (00h,80h,81h,84h,8Fh) (see #03652)
- Note: the returned array for subfunction 00h is filled in physical segment
- address order
- Format of EMS mappable physical address entry:
- Offset Size Description (Table 03654)
- 00h WORD physical page segment
- 02h WORD physical page number
- --------m-675857-----------------------------
- INT 67 U - NETROOM??? - ???
- AX = 5857h
- BX = function??? (0057h,0059h,0159h seen)
- ???
- Return: ???
- Note: BX=0059h appears to be analogous to AX=5800h and BX=0159h appears to
- be analogous to AX=5801h; BX=0057h appears to indicate whether
- AX=580xh or AX=5857h/BX=0x59h should be used
- SeeAlso: AX=5BF0h
- --------m-6759-------------------------------
- INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
- AH = 59h
- AL = subfunction
- 00h get hardware configuration array
- ES:DI -> buffer to be filled with array (see #03655)
- 01h get unallocated raw page count
- Return: BX = unallocated raw pages
- DX = total raw pages
- Return: AH = status (see also AH=58h"EMS 4.0")
- A4h access denied by operating system
- Note: subfunction 00h is for use by operating systems only, and can be
- enabled or disabled at any time by the operating system
- Format of EMS hardware configuration array:
- Offset Size Description (Table 03655)
- 00h WORD size of raw EMM pages in paragraphs
- 02h WORD number of alternate register sets
- 04h WORD size of mapping-context save area in bytes
- 06h WORD number of register sets assignable to DMA
- 08h WORD DMA operation type
- 0000h DMA with alternate register sets
- 0001h only one DMA register set
- --------m-675A-------------------------------
- INT 67 - LIM EMS 4.0 - ALLOCATE STANDARD/RAW PAGES
- AH = 5Ah
- AL = subfunction
- 00h allocate standard pages
- 01h allocate raw pages
- BX = number of pages to allocate
- Return: DX = handle
- AH = status (00h,80h,81h,84h,85h,87h,88h,8Fh) (see #03648)
- --------m-675B-------------------------------
- INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
- AH = 5Bh
- AL = subfunction
- 00h get alternate map register set
- Return: BL = current active alternate map register set number
- ES:DI -> map register context save area if BL=00h
- 01h set alternate map register set
- BL = new alternate map register set number
- ES:DI -> map register context save area if BL=0
- 02h get alternate map save array size
- Return: DX = array size in bytes
- 03h allocate alternate map register set
- Return: BL = number of map register set; 00h = not supported
- 04h deallocate alternate map register set
- BL = number of alternate map register set
- Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Dh,A3h,A4h) (see #03656)
- Note: this function is for use by operating systems only, and can be
- enabled or disabled at any time by the operating system
- (Table 03656)
- Values for EMS function status:
- 00h successful
- 80h internal error
- 81h hardware malfunction
- 84h undefined function requested
- 8Fh undefined subfunction
- 9Ah specified alternate map register or DMA register set not supported
- 9Bh all alternate map register or DMA register sets currently allocated
- 9Ch alternate map register or DMA register sets not supported
- 9Dh undefined or unallocated alternate map register/DMA register set
- 9Eh dedicated DMA channels not supported
- 9Fh specified dedicated DMA channel not supported
- A3h source array corrupted
- A4h operating system denied access
- --------m-675B-------------------------------
- INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
- AH = 5Bh
- AL = subfunction
- 05h allocate DMA register set
- Return: BL = DMA register set number, 00h if not supported
- 06h enable DMA on alternate map register set
- BL = DMA register set number
- DL = DMA channel number
- 07h disable DMA on alternate map register set
- BL = DMA register set number
- 08h deallocate DMA register set
- BL = DMA register set number
- Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Fh,A3h,A4h) (see #03656)
- Note: this function is for use by operating systems only, and can be
- enabled or disabled at any time by the operating system
- --------m-675BE0-----------------------------
- INT 67 - MICEMM v4D, RM386 - GET LINEAR ADDRESS OF MEMORY
- AX = 5BE0h
- ES:BX -> memory for which to get linear address
- Return: AH = 00h
- CX:DX = linear address of physical memory corresponding to ES:BX
- Program: RAM-MAN/386 is the memory manager included with Helix's Netroom;
- MICEMM is a memory manager for some Micronics motherboards
- Note: this has been superceded by AX=DE06h, which should be used instead
- SeeAlso: AX=5BF0h,AX=5BF1h,AX=DE06h
- --------m-675BE1-----------------------------
- INT 67 - RM386 v6.00+ - GET MEMORY MANAGER SIZE
- AX = 5BE1h
- Return: AH = 00h
- CX = code and data size in bytes
- DX:BX = physical address of RM386 code
- DI:SI = total size of RM386 area including handle tables
- BP = number of additional pages (high DOS, etc.)
- SeeAlso: AX=5BE0h,AX=5BE2h
- --------m-675BE2-----------------------------
- INT 67 - RM386 v6.00+ - GET INTERRUPT VECTORS
- AX = 5BE2h
- Return: DS:SI -> V86-mode table (see #03657)
- ES:BX -> ??? (undoc, middle of device driver interrupt routine!)
- SeeAlso: AX=5BE0h,AX=5BE1h
- Format of RM386 V86-mode table:
- Offset Size Description (Table 03657)
- 00h DWORD original INT 13 vector
- 04h DWORD original INT 15 vector
- 08h DWORD original INT 19 vector
- 0Ch DWORD original INT 21 vector
- 10h DWORD original INT 4B vector
- 14h DWORD original INT 67 vector
- --------m-675BF0-----------------------------
- INT 67 - MICEMM v4D, RM386 - INSTALLATION CHECK
- AX = 5BF0h
- Return: AH = 00h if MICEMM or RM386 present
- BX = code segment of driver
- Program: MICEMM is the Micronics Expanded Memory Manager; RM386 is the memory
- manager included in Helix Software's Netroom
- SeeAlso: AH=3Fh,AX=5BE0h,AX=5BF1h
- --------m-675BF1-----------------------------
- INT 67 - MICEMM v4D, RM386 - GET ADDRESS MAP
- AX = 5BF1h
- ES:BX -> 256-byte (MICEMM) or 512-byte (RM386) buffer for memory types
- Return: AH = 00h
- ES:BX buffer filled (see #03658)
- Note: each byte in the buffer specifies the type of a 4K page of memory
- SeeAlso: AX=5BE0h,AX=5BF0h
- (Table 03658)
- Values for MICEMM/RM386 memory type:
- 00h unused (MICEMM), RAM/available (RM386)
- 02h DOS extension (XMS UMB)
- 04h shadowed ROM
- 08h mappable EMS
- 10h page frame
- 20h ROM
- 40h reserved (video memory, etc)
- 80h RAM (MICEMM), Windows UMB (RM386)
- --------m-675BF2-----------------------------
- INT 67 - RM386 - GET RM386 INTERNAL DATA
- AX = 5BF2h
- CX = size of buffer
- DS:SI -> buffer for internal data
- (documentation says ES:BX -> buffer, SI = offset within RM386)
- Return: buffer filled
- Note: the data returned by this function is release-specific
- SeeAlso: AX=5BF0h
- --------m-675BF3-----------------------------
- INT 67 - RM386 - RETURN TO REAL MODE
- AX = 5BF3h
- Return: nothing
- Note: use AX=5DE0h instead of this functin
- SeeAlso: AX=5BF0h,AX=5DE0h
- --------m-675BF4-----------------------------
- INT 67 - RM386 v6.00 - GET RM386 GLOBAL FLAGS
- AX = 5BF4h
- Return: AH = 00h
- BX = global flags 1 (see #03659)
- CX = global flags 2 (see #03660)
- DX = global flags 3 (see #03661)
- SI = global flags 4 (see #03662)
- SeeAlso: AX=5BF0h
- Bitfields for RM386 global flags 1:
- Bit(s) Description (Table 03659)
- 0-3 reserved
- 4 V86 mode
- 5 reserved
- 6 80386 or higher CPU
- 7,8 reserved
- 9 A20 enabled at startup
- 10 "HIGH_IO"
- 11 ROM
- 12 large frame
- 13,14 reserved
- 15 PS/2-style A20 control
- Bitfields for RM386 global flags 2:
- Bit(s) Description (Table 03660)
- 0 HMA in use
- 1 XMS present
- 2 using XMS driver memory
- 3 HIGH (NEAT only)
- 4-7 reserved
- 8 NOBKTRAP
- 9 NORESET
- 10 ALTMAP
- 11 NOFRAME
- 12-15 reserved
- Bitfields for RM386 global flags 3:
- Bit(s) Description (Table 03661)
- 0 NOTEST
- 1 NOEBDA
- 2 Windows3 support
- 3 system board mouse
- 4 DISKBUF
- 5 EBDALOW
- 6 A20 global enable flag
- 7 A20 flag
- 8 EBDA moved to stub
- 9 VXD file was found
- 10 reserved
- 11 NOBOOTMAP
- 12 AUTO
- 13 PS/2 machine
- 14 Compaq ROM merge active
- 15 NOHMA set
- Bitfields for RM386 global flags 4:
- Bit(s) Description (Table 03662)
- 0 "NOV8259" don't virtualize interrupt controller
- 1 NOSCSI
- 2 NOSCAN
- 3 NOTR
- 4 ALTBOOT
- 5 NOCOMPQ
- 6 KB2TRAP
- 7 DESHADOW
- 8 Video 7 VGA detected
- 9 reserved
- 10 NOVGA
- 11 NOPS2
- 12 DEBUG
- 13 NOVKB
- 14,15 reserved
- --------m-675BF5-----------------------------
- INT 67 - RM386 v6.00 - GET RM386 EMS HANDLE COUNT
- AX = 5BF5h
- Return: AH = status
- 00h successful
- BX = current number of allocated EMS handles
- 84h function not available
- SeeAlso: AX=5BF0h
- --------m-675C-------------------------------
- INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
- AH = 5Ch
- Return: AH = status (see #03663)
- Note: when MS-DOS v6.xx EMM386 is loaded and the keyboard driver supports
- INT 15/AH=4Fh (keyboard intercept) calls, the system may hang
- instead of booting if this function is called just prior to a jump
- to F000h:FFF0h
- (Table 03663)
- Values for EMS function status:
- 00h successful
- 80h internal error
- 81h hardware malfunction
- 84h undefined function requested
- --------m-675D-------------------------------
- INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
- AH = 5Dh
- AL = subfunction
- 00h enable OS Function Set
- 01h disable OS Function Set
- 02h return access key (resets memory manager, returns access key at
- next invocation)
- BX,CX = access key returned by first invocation
- Return: BX,CX = access key, returned only on first invocation of function
- AH = status (see also AH=5Ch)
- 8Fh undefined subfunction
- A4h operating system denied access
- --------m-675D03-----------------------------
- INT 67 u - Nanosoft MD386 - INTERNAL INITIALIZATION
- AX = 5D03h
- ???
- Return: ???
- Program: MD386 is a subset EMS memory manager by Nanosoft specifically
- designed for use with the MultiDOS Plus multitasker
- SeeAlso: AX=5D04h,AX=5E00h
- --------m-675D04-----------------------------
- INT 67 - Nanosoft MD386 - GET ALTERNATE MAP STRUCTURE
- AX = 5D04h
- BX = alternate register set number
- ES:DI -> 1024-byte buffer for map structure
- Return: AH = status (see #03648)
- buffer filled if AH=00h
- Note: used for debugging purposes
- SeeAlso: AX=5D05h
- --------m-675D05-----------------------------
- INT 67 - Nanosoft MD386 - GET INTERNAL HANDLE TABLE
- AX = 5D05h
- BX = handle number
- ES:DI -> 1024-byte buffer for handle table
- Return: AH = status (see #03648)
- buffer filled if AH=00h
- Note: used for debugging purposes
- SeeAlso: AX=5D04h
- --------m-675DE0-----------------------------
- INT 67 - RM386 - DISABLE RM386
- AX = 5DE0h
- Note: RM386 traps this function on the initial transition to protected
- mode caused by the INT instruction, which means it can not be
- overridden simply by hooking the interrupt
- SeeAlso: AX=5DE1h
- --------m-675DE1-----------------------------
- INT 67 - RM386 - ENABLE RM386
- AX = 5DE1h
- Note: RM386 traps this function on the initial transition to protected
- mode caused by the INT instruction, which means it can not be
- overridden simply by hooking the interrupt
- SeeAlso: AX=5DE0h
- --------m-675DE2-----------------------------
- INT 67 - RM386 - GET PAGE TABLE
- AX = 5DE2h
- ES:DI -> 1088-byte buffer for page table
- Return: ES:DI buffer filled
- Note: RM386 traps this function on the initial transition to protected
- mode caused by the INT instruction, which means it can not be
- overridden simply by hooking the interrupt
- SeeAlso: AX=5DE3h
- --------m-675DE3-----------------------------
- INT 67 - RM386 - SET PAGE TABLE
- AX = 5DE3h
- ES:DI -> 1088-byte buffer containing page table
- Notes: only the access bits of the page table are used, the remainder is
- ignored
- RM386 traps this function on the initial transition to protected
- mode caused by the INT instruction, which means it can not be
- overridden simply by hooking the interrupt
- SeeAlso: AX=5DE2h
- --------m-675DE4-----------------------------
- INT 67 - RM386 - SET WRITE-PROTECTION FOR PAGE IN FIRST MEGABYTE
- AX = 5DE4h
- BL = page number
- BH = access (00h read-only, 01h read-write)
- Note: RM386 traps this function on the initial transition to protected
- mode caused by the INT instruction, which means it can not be
- overridden simply by hooking the interrupt
- --------m-675DE5-----------------------------
- INT 67 - RM386 - MAP PHYSICAL PAGE TO PHYSICAL SEGMENT
- AX = 5DE5h
- EBX = physical page number
- DX = page number in first megabyte to be remapped (linear-addr SHR 12)
- Return: AH = status
- 00h successful
- 8Bh invalid destination page (not in first megabyte)
- Note: RM386 traps this function on the initial transition to protected
- mode caused by the INT instruction, which means it can not be
- overridden simply by hooking the interrupt
- SeeAlso: AX=5DE6h
- --------m-675DE6-----------------------------
- INT 67 - RM386 - MAP LOGICAL 4K PAGE TO PHYSICAL SEGMENT
- AX = 5DE6h
- BX = logical page number in 4K pages from beginning of memory for EMS
- handle
- CX = segment in first megabyte to be remapped
- DX = previously-allocated EMS handle
- Return: AH = status
- 00h successful
- 83h invalid handle
- 8Ah invalid logical page (out of handle's range)
- 8Bh invalid destination page (not in first megabyte)
- Note: RM386 traps this function on the initial transition to protected
- mode caused by the INT instruction, which means it can not be
- overridden simply by hooking the interrupt
- SeeAlso: AX=5DE5h
- --------m-675DE7-----------------------------
- INT 67 - RM386 - SET PAGE TABLE BITS FOR RANGE OF PAGES
- AX = 5DE7h
- BL = page table bits to be set (bits 2-0 = U/S, R/W, P)
- CX = number of pages to set
- DX = first page number to set (in first megabyte)
- Return: AH = status
- 00h successful
- 8Bh invalid destination page (not in first megabyte)
- A5h invalid page bits
- A6h invalid page count (overflows first megabyte)
- Note: RM386 traps this function on the initial transition to protected
- mode caused by the INT instruction, which means it can not be
- overridden simply by hooking the interrupt
- --------m-675DE8-----------------------------
- INT 67 - RM386 - GET PARTIAL PAGE TABLE
- AX = 5DE8h
- BX = starting page number in first megabyte+HMA (0000h-010Fh)
- CX = number of page table entries to get
- ES:DI -> buffer for DWORD page table entries
- Return: AH = status (00h successful, 8Bh invalid page)
- Note: RM386 traps this function on the initial transition to protected
- mode caused by the INT instruction, which means it can not be
- overridden simply by hooking the interrupt
- SeeAlso: AX=5DE9h
- --------m-675DE9-----------------------------
- INT 67 - RM386 - SET PARTIAL PAGE TABLE
- AX = 5DE9h
- BX = starting page number in first megabyte+HMA (0000h-010Fh)
- CX = number of page table entries to get
- DS:SI -> buffer of DWORD page table entries
- Return: AH = status (00h successful, 8Bh invalid destination page)
- Note: RM386 traps this function on the initial transition to protected
- mode caused by the INT instruction, which means it can not be
- overridden simply by hooking the interrupt
- SeeAlso: AX=5DE8h
- --------m-675DEA-----------------------------
- INT 67 - RM386 - V86-MODE I/O PORT TRAPPING CONTROL
- AX = 5DEAh
- BX = function
- 00h globally disable V86-mode trapping
- 01h globally enable V86-mode trapping
- CL = interrupt to use for trapping
- 02h get I/O trapping state
- Return: AH = status
- 00h successful
- BX = current trapping state (function 02h)
- 0000h disabled, 0001h enabled
- CX = interrupt used as trap interrupt (functions 00h and 02h)
- Notes: RM386 traps this function on the initial transition to protected
- mode caused by the INT instruction, which means it can not be
- overridden simply by hooking the interrupt
- when I/O trapping is enabled and I/O port access occurs, RM386
- simulates an INT instruction for the specified interrupt; the
- interrupt handler is responsible for decoding the trapped instruction
- and performing the appropriate action. INT 2C/AX=002Dh provides a
- similar but more-easily used interface.
- SeeAlso: AX=5DEBh,AH=EFh"RM386",INT 2C/AX=002Dh
- --------m-675DEB-----------------------------
- INT 67 - RM386 - V86-MODE I/O TRAPPING PORT CONTROL
- AX = 5DEBh
- BX = function
- 00h disable V86-mode trapping for specified port
- 01h enable V86-mode trapping for specified port
- 02h get V86-mode trapping state for specified port
- DX = port for which to enable/disable/query trapping
- Return: AH = status
- 00h successful
- BX = current trapping state (00h off, 01h on) (function 02)
- A7h invalid port ID
- A8h reserved port--cannot trap/untrap (DMA/INT/KBD controllers)
- Notes: RM386 traps this function on the initial transition to protected
- mode caused by the INT instruction, which means it can not be
- overridden simply by hooking the interrupt
- SeeAlso: AX=5DEAh
- --------m-675DFD-----------------------------
- INT 67 U - RM386 v6.00 - ???
- AX = 5DFDh
- ???
- Return: ???
- Note: RM386 traps this function on the initial transition to protected
- mode caused by the INT instruction, which means it can not be
- overridden simply by hooking the interrupt
- SeeAlso: AX=5DFEh
- --------m-675DFE-----------------------------
- INT 67 U - RM386 v6.00 - ???
- AX = 5DFEh
- ???
- Return: ???
- Note: RM386 traps this function on the initial transition to protected
- mode caused by the INT instruction, which means it can not be
- overridden simply by hooking the interrupt
- SeeAlso: AX=5DFDh
- --------m-675DFF-----------------------------
- INT 67 U - RM386 v6.00 - ???
- AX = 5DFFh
- ???
- Return: ???
- Note: RM386 traps this function on the initial transition to protected
- mode caused by the INT instruction, which means it can not be
- overridden simply by hooking the interrupt
- SeeAlso: AX=5DFDh,AX=5DFEh
- --------m-675E00-----------------------------
- INT 67 - Nanosoft MD386 - SET HARDWARE BREAKPOINT
- AX = 5E00h
- DH = breakpoint number (0-3)
- DL = breakpoint attributes (used to set DR7)
- CX:BX = linear address of breakpoint
- SeeAlso: AX=5D03h,AX=5E01h
- --------m-675E01-----------------------------
- INT 67 - Nanosoft MD386 - GET HARDWARE DEBUG REGISTER
- AX = 5E01h
- BL = register number (0-3,7)
- Return: CX:BX = value of specified DRx register
- SeeAlso: AX=5E00h
- --------m-675E02-----------------------------
- INT 67 - Nanosoft MD386 - SET DEBUG EXCEPTION HANDLER
- AX = 5E02h
- CX:BX -> exception handler
- Note: the specified exception handler is called with a simulated interrupt
- whenever a debug exception occurs which was caused by a hardware
- breakpoint set with the debug registers
- SeeAlso: AX=5E04h,AX=5E05h
- --------m-675E03-----------------------------
- INT 67 - Nanosoft MD386 - ENABLE/DISABLE MEMORY WRITE PROTECTION
- AX = 5E03h
- BL = register map set number
- BH = new state (00h read-only, else read-write)
- CX = linear page number (linear address SHR 12)
- Note: setting write protection in map set 0 will cause the setting to become
- the default for newly-allocated map sets
- --------m-675E04-----------------------------
- INT 67 - Nanosoft MD386 - GET DEBUG EXCEPTION
- AX = 5E04h
- Return: BL = debug exception (low byte of DR6 register)
- SeeAlso: AX=5E02h,AX=5E05h
- --------m-675E05-----------------------------
- INT 67 - Nanosoft MD386 - IGNORE NEXT DEBUG EXCEPTION
- AX = 5E05h
- Note: may be required when using AX=5E02h for handling instruction
- breakpoints
- SeeAlso: AX=5E02h,AX=5E04h
- --------m-6760-------------------------------
- INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
- AH = 60h
- ES:DI -> buffer
- Return: AH = status (see also AH=40h)
- AL = number of entries
- buffer at ES:DI filled
- --------m-6761-------------------------------
- INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
- AH = 61h
- ???
- Return: ???
- Note: can be used by accelerator card manufacturer to flush RAM cache,
- ensuring that the cache accurately reflects what the processor would
- see without the cache.
- --------m-676100-----------------------------
- INT 67 - EEMS - STB GENERIC ACCELERATOR CARD SUPPORT - INSTALLATION CHECK???
- AX = 6100h
- Return: AH = status (00h if installed???)
- Note: STB's RAPIDMAP.SYS EMS driver calls this function and AX=6101h if
- the signature "GACXXX" is found at offset 0Ah in the INT 67 handler's
- segment (i.e. a device driver named GACXXX?? has hooked INT 67)
- SeeAlso: AX=6101h,INT 02/SI=0714h
- --------m-676101-----------------------------
- INT 67 - EEMS - STB GENERIC ACCELERATOR CARD SUPPORT - GET ??? ENTRY POINT
- AX = 6101h
- Return: AH = status
- ---if AH=00h---
- ES:BX -> ??? entry point
- SeeAlso: AX=6100h
- --------m-6768-------------------------------
- INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
- AH = 68h
- ES:DI -> buffer
- Return: AH = status (see also AH=40h)
- AL = number of entries
- buffer at ES:DI filled
- Note: equivalent to LIM 4.0 function 58h
- --------m-6769-------------------------------
- INT 67 - EEMS - MAP PAGE INTO FRAME
- AH = 69h
- AL = frame number
- BX = page number
- DX = handle
- Return: AH = status (see also AH=40h)
- Note: similar to EMS function 44h
- SeeAlso: AH=44h,AH=50h,AH=6Ah
- --------m-676A-------------------------------
- INT 67 - EEMS - PAGE MAPPING
- AH = 6Ah
- AL = subfunction
- 00h save partial page map
- CH = first page frame
- CL = number of frames
- ES:DI -> buffer which is to be filled
- 01h restore partial page map
- CH = first page frame
- CL = number of frames
- DI:SI -> previously saved page map
- 02h save and restore partial page map
- CH = first page frame
- CL = number of frames
- ES:DI = buffer for current page map
- DI:SI = new page map
- 03h get size of save array
- CH = first page frame
- CL = number of frames
- Return: AL = size of array in bytes
- 04h switch to standard map register setting
- 05h switch to alternate map register setting
- 06h deallocate pages mapped to frames in conventional memory
- CH = first page frame
- CL = number of frames
- Return: AH = status (see #03648)
- Note: similar to EMS function 4Eh, except that a subrange of pages can be
- specified
- SeeAlso: AH=69h
- --------m-676B-------------------------------
- INT 67 - DESQview 2.42-2.53 - BUG
- AH = 6Bh
- Note: the EMM.DVR portion of DESQview branches to a random location on this
- function due to a fencepost error
- --------m-67DD-------------------------------
- INT 67 - Quadtel QMAPS - API
- AH = DDh
- AL = function
- ???
- Return: ???
- Notes: details are not yet available
- Hewlett-Packard's HPMM.SYS is a licensed version of QMAPS, and thus
- supports this API
- SeeAlso: AH=3Fh,AX=FFA5h
- --------E-67DE00-----------------------------
- INT 67 - Virtual Control Program Interface - INSTALLATION CHECK
- AX = DE00h
- Return: AH = status
- 00h VCPI is present
- BH = major version number
- BL = minor version number
- nonzero VCPI not present
- BUG: MS Windows 3.00 is reported to "object violently" to this call.
- SeeAlso: INT 2F/AX=1687h
- --------E-67DE01-----------------------------
- INT 67 - Virtual Control Program Interface - GET PROTECTED MODE INTERFACE
- AX = DE01h
- ES:DI -> 4K page table buffer
- DS:SI -> three descriptor table entries in GDT
- first becomes code segment descriptor, other two for use by
- main control program
- Return: AH = 00h successful
- DI -> first unused page table entry in buffer
- EBX -> protected mode entry point in code segment (see #03664)
- AH = nonzero failed
- Note: protected mode entry point may be called with AX=DE00h-DE05h and
- AX=DE0Ch (in each case, all other registers as appropriate for
- the function)
- SeeAlso: INT 2F/AX=1687h,INT 67/AH=3Fh
- (Table 03664)
- Call QEMM v6.03 protected mode entry point additionally with:
- AX = DF00h ???
- ???
- Return: ???
- AX = DF01h ???
- ???
- Return: ???
- --------E-67DE02-----------------------------
- INT 67 - Virtual Control Program Interface - GET MAX PHYSICAL MEMORY ADDRESS
- AX = DE02h
- Return: AH = 00h successful
- EDX = physical address of highest 4K memory page
- AH nonzero: failed
- SeeAlso: AH=3Fh
- --------E-67DE03-----------------------------
- INT 67 - Virtual Control Program Interface - GET NUMBER OF FREE 4K PAGES
- AX = DE03h
- Return: AH = 00h successful
- EDX = number of free 4K pages
- AH nonzero: failed
- Notes: returns total number of pages available to ALL tasks in system
- also available in protected mode by calling the protected-mode VCPI
- entry point (see AX=DE01h,#03664)
- SeeAlso: AX=DE04h
- --------E-67DE04-----------------------------
- INT 67 - Virtual Control Program Interface - ALLOCATE A 4K PAGE
- AX = DE04h
- Return: AH = 00h successful
- EDX = physical address of allocated page
- AH nonzero: failed
- Notes: the client program is responsible for freeing all memory allocated
- with this call before terminating
- also available in protected mode by calling the protected-mode VCPI
- entry point (see AX=DE01h,#03664)
- SeeAlso: AH=3Fh,AX=DE03h,AX=DE05h
- --------E-67DE05-----------------------------
- INT 67 - Virtual Control Program Interface - FREE 4K PAGE
- AX = DE05h
- EDX = physical address of 4K page
- Return: AH = status
- 00h successful
- nonzero failed
- Note: also available in protected mode by calling the protected-mode VCPI
- entry point (see AX=DE01h,#03664)
- SeeAlso: AH=3Fh,AX=DE04h
- --------E-67DE06-----------------------------
- INT 67 - Virtual Control Program Interface - GET PHYS ADDR OF PAGE IN FIRST MB
- AX = DE06h
- CX = page number (linear address shifted right 12 bits)
- Return: AH = status
- 00h successful
- EDX = physical address of page
- nonzero invalid page number (AH = 8Bh recommended)
- SeeAlso: AX=5BE0h
- --------E-67DE07-----------------------------
- INT 67 - Virtual Control Program Interface - READ CR0
- AX = DE07h
- Return: AH = 00h
- EBX = value of Control Register 0
- SeeAlso: AH=3Fh,AX=DE07h
- --------E-67DE08-----------------------------
- INT 67 - Virtual Control Program Interface - READ DEBUG REGISTERS
- AX = DE08h
- ES:DI -> array of 8 DWORDs
- Return: AH = 00h
- buffer filled with DR0 first, DR7 last, DR4 and DR5 unused
- SeeAlso: AH=3Fh,AX=DE09h
- --------E-67DE09-----------------------------
- INT 67 - Virtual Control Program Interface - SET DEBUG REGISTERS
- AX = DE09h
- ES:DI -> array of 8 DWORDs holding new values of debug registers
- Return: AH = 00h
- Note: values for DR4 and DR5 ignored
- SeeAlso: AH=3Fh,AX=DE08h
- --------E-67DE0A-----------------------------
- INT 67 - Virtual Control Program Interface - GET 8259 INTERRUPT VECTOR MAPPINGS
- AX = DE0Ah
- Return: AH = 00h successful
- BX = first vector used by master 8259 (IRQ0)
- CX = first vector used by slave 8259 (IRQ8)
- AH nonzero: failed
- Note: CX is undefined in systems without a slave 8259
- SeeAlso: AX=DE0Bh,INT 21/AX=250Ch,INT 31/AX=0400h
- --------E-67DE0B-----------------------------
- INT 67 - Virtual Control Program Interface - SET 8259 INTERRUPT VECTOR MAPPINGS
- AX = DE0Bh
- BX = first vector used by master 8259
- CX = first vector used by slave 8259
- interrupts disabled
- Return: AH = 00h successful
- AH nonzero: failed
- Notes: This call merely informs the server that the client has changed the
- interrupt mappings. The client may not change the mappings if they
- have already been changed by the server or another client, and is
- responsible for restoring the original mappings before terminating.
- SeeAlso: AX=DE0Ah,INT 2C/AX=002Ah
- --------E-67DE0C-----------------------------
- INT 67 - Virtual Control Program Interface - SWITCH TO PROTECTED MODE
- AX = DE0Ch
- ESI = linear address in first megabyte of values for system
- registers (see #03665)
- interrupts disabled
- Return: interrupts disabled
- GDTR, IDTR, LDTR, TR loaded
- SS:ESP must have at least 16 bytes space, and the entry point is
- required to set up a new stack before enabling interrupts
- EAX, ESI, DS, ES, FS, GS destroyed
- Note: in protected mode, calling the protected-mode VCPI entry point with
- AX = DE0Ch
- DS = segment selector mapping entire linear address space obtained
- via AX=DE01h
- SS:ESP in first megabyte of linear memory
- STACK:QWORD return address from FAR call to 32-bit segment
- DWORD EIP
- DWORD CS
- DWORD reserved for EFLAGS
- DWORD ESP
- DWORD SS
- DWORD ES
- DWORD DS
- DWORD FS
- DWORD GS
- and interrupts disabled, will switch to virtual86 mode with
- interrupts disabled, all segment registers loaded, and EAX
- destroyed.
- SeeAlso: AH=3Fh,INT 15/AH=89h,INT D4/AH=10h
- Format of system register values for switch to protected mode:
- Offset Size Description (Table 03665)
- 00h DWORD value for CR3
- 04h DWORD linear address in first megabyte of value for GDTR
- 08h DWORD linear address in first megabyte of value for IDTR
- 0Ch WORD value for LDTR
- 0Eh WORD value for TR
- 10h PWORD CS:EIP of protected mode entry-point
- --------m-67DE0F-----------------------------
- INT 67 - Netroom3 - ???
- AX = DE0Fh
- ???
- Return: ???
- Note: called by Netroom's DPMI.EXE
- --------m-67EF-------------------------------
- INT 67 - RM386 v6.00+ - EXECUTE XMS FUNCTION
- AH = EFh
- AL = function (00h-12h,80h-8Fh)
- other register as appropriate for XMS function
- Return: varies by function (see INT 2F/AX=4310h"XMS")
- Note: these functions appear to be equivalent to the XMS functions with the
- same numbers
- SeeAlso: AX=5DFFh"RM386",INT 2F/AX=4310h"XMS"
- --------m-67FFA5-----------------------------
- INT 67 - Microsoft EMM386.EXE v4.20+ - INSTALLATION CHECK
- AX = FFA5h
- Return: AX = 845Ah/84A5h if loaded
- BX:CX -> API entry point (see #03666)
- Notes: this call is available even if EMM386 is not providing EMS
- the returned AX is 845Ah inside of MSWindows, 84A5h under bare DOS
- if no other program has hooked INT 67, an alternate installation
- check is to test for the string
- "MICROSOFT EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
- handler's segment; the word immediately preceding this string
- contains the offset of the API entry point
- SeeAlso: AH=3Fh,AX=FFA5h/BX=4345h,INT 21/AX=4402h"EMM386.EXE"
- (Table 03666)
- Call EMM386.EXE API entry point with:
- AH = 00h get memory manager's status
- Return: AH = status
- bit 0: not active (OFF)
- bit 1: in "Auto" mode
- AH = 01h set memory manager's state
- AL = new state (00h ON, 01h OFF, 02h AUTO)
- AH = 02h Weitek coprocessor support
- AL = subfunction
- 00h get Weitek support state
- Return: AL = status
- bit 0: Weitek coprocessor is present
- bit 1: Weitek support is enabled
- 01h turn on Weitek support
- 02h turn off Weitek support
- --- v4.20-4.41 only ---
- AH = 03h Windows support???
- AL = subfunction (00h, 01h)
- AH = 04h print copyright notice to standard output
- (using INT 21/AH=09h)
- AH = 05h print available report
- (the one shown when running EMM386 from the DOS prompt)
- SeeAlso: #01513 at INT 21/AX=4402h/SF=02h,#02617 at INT 2F/AX=12FFh/BX=0106h
- --------m-67FFA5BX4345-----------------------
- INT 67 U - Compaq CEMM v5.10+ - PRIVATE API
- AX = FFA5h
- BX = 4345h ("CE")
- DX = subfunction
- 0000h unshadow video ROM???
- 0001h shadow video ROM???
- 0002h map pages
- CX = number of pages (00h=one)
- ESI = linear address of first page to map into address space
- EDI = linear starting address at which pages are to be visible
- 0003h get ???
- Return: DX = ??? (0-2)
- 0004h BUG: crashes system due to fencepost error
- Return: AH = 84h
- AL = status (84h = error, FFh = success)
- Note: if BX <> 4345h or DX > 0004h on entry, CEMM behaves identically to
- Microsoft's EMM386 (see AX=FFA5h"EMM386")
- SeeAlso: AX=FFA5h"EMM386",#01513 at INT 21/AX=4402h/SF=02h,#03666
- --------I-68---------------------------------
- INT 68 - Sangoma CCPOP 3270 resident module
- SeeAlso: INT 67"Sangoma",INT 92"Sangoma"
- --------N-68---------------------------------
- INT 68 - Novell NetWare LU6.2
- InstallCheck: test for the signature string "APPC/PC" nine bytes before the
- interrupt handler
- SeeAlso: AH=01h/SF=1B00h,AH=FAh
- --------h-68---------------------------------
- INT 68 C - HP Vectra AT - IRQ16 - 8041 SERVICE REQUEST
- SeeAlso: INT 08"IRQ0",INT 69"HP Vectra",INT 6F/AH=00h"HP"
- --------N-6801--SF1B00-----------------------
- INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DISPLAY
- AH = 01h subfn 1B00h
- DS:DX -> control block (see #03667)
- Return: control block updated
- SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2B00h,INT 68"Novell"
- Format of APPC/PC "DISPLAY" control block:
- Offset Size Description (Table 03667)
- 00h 12 BYTEs reserved
- 0Ch WORD 1B00h (verb "DISPLAY")
- 0Eh 6 BYTEs 00h
- 14h DWORD (big-endian) return code (see #03668)
- 18h WORD 00h
- 1Ah 8 BYTEs (big-endian) logical unit ID
- 22h 8 BYTEs (big-endian) partner logical unit name
- 2Ah 8 BYTEs (big-endian) mode name
- 32h BYTE logical unit session limit
- 33h BYTE partner logical unit session limit
- 34h BYTE node maximum negotiable session limit
- 35h BYTE current session limit
- 36h BYTE minimum negotiated winner limit
- 37h BYTE maximum negotiated loser limit
- 38h BYTE active session count
- 39h BYTE active CONWINNER session count
- 3Ah BYTE active CONLOSER session count
- 3Bh BYTE session termination count
- 3Ch BYTE bit 7: SESSION_TERMINATION_TARGET_DRAIN
- bit 6: SESSION_TERMINATION_SOURCE_DRAIN
- (Table 03668)
- Values for APPC/PC return code:
- 0000h successful
- 0001h BAD_TP_ID
- 0002h BAD_CONV_ID
- 0003h bad logical unit ID
- 0008h no physical unit attached
- 0110h bad state
- 01B1h BAD_PART_LUNAME
- 01B2h bad mode name
- 0201h physical unit already active
- 0211h logical unit already active
- 0212h BAD_PART_SESS
- 0213h BAD_RU_SIZES
- 0214h BAD_MODE_SESS
- 0216h BAD_PACING_CNT
- 0219h EXTREME_RUS
- 021Ah SNASVCMG_1
- 0223h SSCP_CONNECTED_LU
- 0230h invalid change
- 0243h too many TPs
- 0272h adapter close failure
- 0281h GET_ALLOC_BAD_TYPE
- 0282h unsuccessful
- 0283h DLC failure
- 0284h unrecognized DLC
- 0286h duplicate DLC
- 0301h SSCP_PU_SESSION_NOT_ACTIVE
- 0302h data exceeds RU size
- 0401h invalid direction
- 0402h invalid type
- 0403h segment overlap
- 0404h invalid first character
- 0405h table error
- 0406h conversion error
- F0010000h APPC disabled
- F0020000h APPC busy
- F0030000h APPC abended
- F0040000h incomplete
- --------N-6801--SF2000-----------------------
- INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ATTACH PHYSICAL UNIT
- AH = 01h subfn 2000h
- DS:DX -> control block (see #03669)
- Return: control block updated
- SeeAlso: AH=01h/SF=2100h,AH=01h/SF=2B00h
- Format of APPC/PC "Attach Physical Unit" control block:
- Offset Size Description (Table 03669)
- 00h 12 BYTEs reserved
- 0Ch WORD 2000h (verb "Attach Physical Unit")
- 0Eh 6 BYTEs 00h
- 14h DWORD (big-endian) return code (see #03668)
- 18h WORD 00h
- 1Ah BYTE version
- 1Bh BYTE release
- 1Ch 8 BYTEs (big-endian) net name
- 24h 8 BYTEs (big-endian) physical unit name
- 2Ch 8 BYTEs 00h
- 34h DWORD pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
- (see also AH=01h/SF=2100h)
- 38h DWORD 00h
- 3Ch BYTE 00h RETURN_CONTROL: COMPLETE
- 01h RETURN_CONTROL: INCOMPLETE
- --------N-6801--SF2100-----------------------
- INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ATTACH LOGICAL UNIT
- AH = 01h subfn 2100h
- DS:DX -> control block (see #03670)
- Return: control block updated
- SeeAlso: #03673,#03674,#03676,AH=01h/SF=2000h,AH=01h/SF=2200h,AH=01h/SF=2B00h
- Format of APPC/PC "Attach Logical Unit" control block:
- Offset Size Description (Table 03670)
- 00h 12 BYTEs reserved
- 0Ch WORD 2100h (verb "Attach Logical Unit")
- 0Eh 6 BYTEs 00h
- 14h DWORD (big-endian) return code (see #03668)
- 18h WORD 70 offset to partner logical unit record
- 1Ah 8 BYTEs (big-endian) logical unit name
- 22h 8 BYTEs (big-endian) logical unit ID
- 2Ah BYTE logical unit local address
- 2Bh BYTE logical unit session limit
- 2Ch DWORD pointer to CREATE_TP_EXIT routine,
- FFFFFFFFh = reject incoming ALLOCATEs
- 00000000h = queue ALLOCATEs
- 30h DWORD 00h
- 34h DWORD pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
- 38h DWORD 00h
- 3Ch BYTE maximum TPs
- 3Dh BYTE queue depth
- 3Eh DWORD pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh=no pswd exit
- 42h DWORD 00h
- 46h WORD total length of partner records
- 48h var array of partner logical unit records (see #03671)
- SeeAlso: #03673,#03674,#03676
- Format of APPC/PC partner logical unit record:
- Offset Size Description (Table 03671)
- 00h WORD length of this partner logical unit record
- 02h WORD 42 offset to mode records
- 04h 8 BYTEs (big-endian) partner logical unit name
- 0Ch BYTE partner logical unit security capabilities
- bit 7: already verified
- bit 6: conversation level security
- bit 5: session level security
- 0Dh BYTE partner logical unit session limit
- 0Eh WORD partner logical unit maximum MC_SEND_LL
- 10h 8 BYTEs (big-endian) partner logical unit DLC name
- 18h BYTE partner logical unit adapter number
- 19h 17 BYTEs (counted string) partner logical unit adapter address
- 2Ah WORD total length of mode records
- 2Ch 16N BYTEs array of mode records (see #03672)
- Format of mode record:
- Offset Size Description (Table 03672)
- 00h WORD 16 length of this mode record
- 02h 8 BYTEs (big-endian) mode name
- 0Ah WORD RU_SIZE high bound
- 0Ch WORD RU_SIZE low bound
- 0Eh BYTE mode maximum negotiable session limit
- 0Fh BYTE pacing size for receive
- Routines defined by LU_LU_PASSWORD_EXIT, CREATE_TP_EXIT, and SYSTEM_LOG_EXIT
- pointers are called by pushing the DWORD pointer to the verb on the stack and
- then performing a FAR call.
- Format of ACCESS_LU_LU_PW verb:
- Offset Size Description (Table 03673)
- 00h 12 BYTEs reserved
- 0Ch WORD 1900h (verb "ACCESS_LU_LU_PW")
- 0Eh 8 BYTEs (big-endian) logical unit ID
- 16h 8 BYTEs (big-endian) logical unit name
- 1Eh 8 BYTEs (big-endian) partner logical unit name
- 26h 17 BYTEs (counted string) partner fully qualified logical unit name
- 37h BYTE password available (0=no, 1=yes)
- 38h 8 BYTEs password
- SeeAlso: #03670,#03674,#03676
- Format of CREATE_TP verb:
- Offset Size Description (Table 03674)
- 00h 12 BYTEs reserved
- 0Ch WORD 2300h (verb "CREATE_TP")
- 0Eh 6 BYTEs 00h
- 14h DWORD (big-endian) sense code (see #03675)
- 18h 8 BYTEs (big-endian) TP ID
- 20h 8 BYTEs (big-endian) logical unit ID
- 28h DWORD (big-endian) conversation ID
- 2Ch BYTE 0 basic conversation, 1 mapped conversation
- 2Dh BYTE 0 no sync level, 1 confirm
- 2Eh BYTE reserved
- 2Fh 65 BYTEs (counted string) transaction program name
- 70h 6 BYTEs 00h
- 76h WORD length of ERROR_LOG_DATA to return
- 78h DWORD pointer to ERROR_LOG_DATA buffer
- 7Ch 8 BYTEs (big-endian) partner logical unit name
- 84h 18 BYTEs (counted string) partner fully qualified logical unit name
- 96h 8 BYTEs (big-endian) mode name
- 9Eh 12 BYTEs 00h
- AAh 11 BYTEs (counted string) password
- B5h 11 BYTEs (counted string) user ID
- C0h BYTE 0 verification should be performed
- 1 already verified
- SeeAlso: #03673,#03676
- (Table 03675)
- Values for APPC/PC sense code:
- 00000000h Ok
- 080F6051h SECURITY_NOT_VALID
- 084B6031h TP_NOT_AVAIL_RETRY
- 084C0000h TP_NOT_AVAIL_NO_RETRY
- 10086021h TP_NAME_NOT_RECOGNIZED
- 10086034h CONVERSATION_TYPE_MISMATCH
- 10086041h SYNC_LEVEL_NOT_SUPPORTED
- Format of SYSLOG verb:
- Offset Size Description (Table 03676)
- 00h 12 BYTEs reserved
- 0Ch WORD 2600h (verb "SYSLOG")
- 0Eh 10 BYTEs 00h
- 18h WORD (big-endian) type
- 1Ah DWORD (big-endian) subtype
- 1Eh DWORD pointer to ADDITIONAL_INFO
- 22h DWORD (big-endian) conversation ID
- 26h 8 BYTEs (big-endian) TP ID
- 2Eh 8 BYTEs (big-endian) physical unit or logical unit name
- 36h WORD length of data
- 38h DWORD pointer to data
- 3Ch BYTE 00h
- SeeAlso: #03673,#03674
- --------N-6801--SF2200-----------------------
- INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DETACH LOGICAL UNIT
- AH = 01h subfn 2200h
- DS:DX -> control block (see #03677)
- Return: control block updated
- SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2100h,AH=01h/SF=2700h
- Format of APPC/PC "Detach Logical Unit" control block:
- Offset Size Description (Table 03677)
- 00h 12 BYTEs reserved
- 0Ch WORD 2200h (verb "Detach Logical Unit")
- 0Eh 6 BYTEs 00h
- 14h DWORD (big-endian) return code (see #03668)
- 18h 8 BYTEs (big-endian) logical unit ID
- 20h BYTE 00h
- --------N-6801--SF2700-----------------------
- INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DETACH PHYSICAL UNIT
- AH = 01h subfn 2700h
- DS:DX -> control block (see #03678)
- Return: control block updated
- SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2100h,AH=01h/SF=2200h
- Format of APPC/PC "Detach Physical Unit" control block:
- Offset Size Description (Table 03678)
- 00h 12 BYTEs reserved
- 0Ch WORD 2700h (verb "Detach Physical Unit")
- 0Eh 6 BYTEs 00h
- 14h DWORD (big-endian) return code (see #03668)
- 18h BYTE 00h type: hard
- 01h type: soft
- --------N-6801--SF2B00-----------------------
- INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ACTIVATE DLC
- AH = 01h subfn 2B00h
- DS:DX -> control block (see #03679)
- Return: control block updated
- SeeAlso: AH=01h/SF=1B00h,AH=01h/SF=2000h
- Format of APPC/PC "Activate DLC" control block:
- Offset Size Description (Table 03679)
- 00h 12 BYTEs reserved
- 0Ch WORD 2B00h (verb "Activate DLC")
- 0Eh 6 BYTEs 00h
- 14h DWORD (big-endian) return code (see #03668)
- 18h 8 BYTEs (big-endian) DLC name
- 20h BYTE adapter number
- --------N-6802--SF0100-----------------------
- INT 68 - APPC/PC - CONNECTION CONTROL - ALLOCATE
- AH = 02h subfn 0100h
- DS:DX -> control block (see #03680)
- Return: control block updated
- SeeAlso: AH=02h/SF=0500h
- Format of APPC/PC "Allocate" control block:
- Offset Size Description (Table 03680)
- 00h 12 BYTEs reserved
- 0Ch WORD 0100h (verb "Allocate" or "MC_Allocate")
- 0Eh BYTE 1 if MC_ (mapped conversation) form of verb
- 0 if basic verb
- 0Fh 5 BYTEs reserved (0)
- 14h WORD (big-endian) primary return code (see #03681)
- 16h DWORD (big-endian) error code (see #03682)
- 1Ah 8 BYTEs (big-endian) TP_ID
- 22h DWORD (big-endian) conversation ID
- 26h BYTE (MC_Allocate only) conversation type
- 0 basic conversation
- 1 mapped conversation
- 27h BYTE SYNC_LEVEL (00h none, 01h confirm)
- 28h WORD 0000h
- 2Ah BYTE RETURN_CONTROL
- 00h when session allocated
- 01h immediate
- 02h when session free
- 2Bh 8 BYTEs 00h
- 33h 8 BYTEs (big-endian) partner logical unit name
- 3Bh 8 BYTEs (big-endian) mode name
- 43h 65 BYTEs (counted string) TP name
- 84h BYTE security (00h none, 01h same, 02h pgm)
- 85h 11 BYTEs 00h
- 90h 11 BYTEs (counted string) password
- 9Bh 11 BYTEs (counted string) user ID
- A6h WORD PIP_DATA length
- A8h DWORD pointer to PIP_DATA
- (Table 03681)
- Values for APPC/PC primary return code:
- 0000h successful
- 0001h parameter check
- 0002h state check
- 0003h allocation error
- 0005h deallocate abended
- 0006h deallocate abended program
- 0007h deallocate abended SVC
- 0008h deallocate abended timer
- 0009h deallocate normal return
- 000Ah data posting blocked
- 000Bh posting not active
- 000Ch PROG_ERROR_NO_TRUNC
- 000Dh PROG_ERROR_TRUNC
- 000Eh PROG_ERROR_PURGING
- 000Fh CONV_FAILURE_RETRY
- 0010h CONV_FAILURE_NO_RETRY
- 0011h SVC_ERROR_NO_TRUNC
- 0012h SVC_ERROR_TRUNC
- 0013h SVC_ERROR_PURGING
- 0014h unsuccessful
- 0018h CNOS partner logical unit reject
- 0019h conversation type mixed
- F001h APPC disabled
- F002h APPC busy
- F003h APPC abended
- F004h incomplete
- (Table 03682)
- Values for APPC/PC error code:
- 0001h bad TP ID
- 0002h bad conversation ID
- 0004h allocation error, no retry
- 0005h allocation error, retry
- 0006h data area crosses segment boundary
- 0010h bad TPN length
- 0011h bad CONV length
- 0012h bad SYNC level
- 0013h bad security selection
- 0014h bad return control
- 0015h SEC_TOKENS too big
- 0016h PIP_LEN incorrect
- 0017h no use of SNASVCMG
- 0018h unknown partner mode
- 0031h confirm: SYNC_NONE
- 0032h confirm: bad state
- 0033h confirm: NOT_LL_BDY
- 0041h confirmed: bad state
- 0051h deallocate: bad type
- 0052h deallocate: flush bad state
- 0053h deallocate: confirm bad state
- 0055h deallocate: NOT_LL_BDY
- 0057h deallocate: log LL_WRONG
- 0061h flush: not send state
- 0091h post on receipt: invalid length
- 0092h post on receipt: not in receive state
- 0093h post on receipt: bad fill
- 00A1h prepare to receive:invalid type
- 00A2h prepare to receive: unfinished LL
- 00A3h prepare to receive: not in send state
- 00B1h receive and wait: bad state
- 00B2h receive and wait: NOT_LL_BDY
- 00B5h receive and wait: bad fill
- 00C1h receive immediate: not in receive state
- 00C4h receive immediate: bad fill
- 00E1h request to send: not in receive state
- 00F1h send data: bad LL
- 00F2h send data: not in send state
- 0102h send error: log LL wrong
- 0103h send error: bad type
- 0121h test: invalid type
- 0122h test: not in receive state
- --------N-6802--SF0300-----------------------
- INT 68 - APPC/PC - CONNECTION CONTROL - CONFIRM
- AH = 02h subfn 0300h
- DS:DX -> control block (see #03683)
- Return: control block updated
- SeeAlso: AH=02h/SF=0400h
- Format of APPC/PC "Confirm" control block:
- Offset Size Description (Table 03683)
- 00h 12 BYTEs reserved
- 0Ch WORD 0300h (verb "Confirm" or "MC_Confirm")
- 0Eh BYTE 1 if MC_ (mapped conversation) form of verb
- 0 if basic verb
- 0Fh 5 BYTEs reserved (0)
- 14h WORD (big-endian) primary return code (see #03681)
- 16h DWORD (big-endian) error code (see #03682)
- 1Ah 8 BYTEs (big-endian) TP_ID
- 22h DWORD (big-endian) conversation ID
- 26h BYTE request to send received (0=no, 1=yes)
- --------N-6802--SF0400-----------------------
- INT 68 - APPC/PC - CONNECTION CONTROL - CONFIRMED
- AH = 02h subfn 0400h
- DS:DX -> control block (see #03684)
- Return: control block updated
- SeeAlso: AH=02h/SF=0300h
- Format of APPC/PC "Confirmed" control block:
- Offset Size Description (Table 03684)
- 00h 12 BYTEs reserved
- 0Ch WORD 0400h (verb "Confirmed" or "MC_Confirmed")
- 0Eh BYTE 1 if MC_ (mapped conversation) form of verb
- 0 if basic verb
- 0Fh 5 BYTEs reserved (0)
- 14h WORD (big-endian) primary return code (see #03681)
- 16h DWORD (big-endian) error code (see #03682)
- 1Ah 8 BYTEs (big-endian) TP_ID
- 22h DWORD (big-endian) conversation ID
- --------N-6802--SF0500-----------------------
- INT 68 - APPC/PC - CONNECTION CONTROL - DEALLOCATE
- AH = 02h subfn 0500h
- DS:DX -> control block (see #03685)
- Return: control block updated
- SeeAlso: AH=02h/SF=0100h,AH=02h/SF=0300h
- Format of APPC/PC "Deallocate" control block:
- Offset Size Description (Table 03685)
- 00h 12 BYTEs reserved
- 0Ch WORD 0500h (verb "Deallocate" or "MC_Deallocate")
- 0Eh BYTE 1 if MC_ (mapped conversation) form of verb
- 0 if basic verb
- 0Fh 5 BYTEs reserved (0)
- 14h WORD (big-endian) primary return code (see #03681)
- 16h DWORD (big-endian) error code (see #03682)
- 1Ah 8 BYTEs (big-endian) TP_ID
- 22h DWORD (big-endian) conversation ID
- 26h BYTE 00h
- 27h BYTE type
- 00h SYNC_LEVEL
- 01h FLUSH
- 02h ABEND_PROC
- 03h ABEND_SVC
- 04h ABEND_TIMER
- 05h ABEND
- 28h WORD (MC_Deallocate only) length of error log data
- 2Ah DWORD (MC_Deallocate only) pointer to error log data
- --------N-6802--SF0600-----------------------
- INT 68 - APPC/PC - CONNECTION CONTROL - FLUSH
- AH = 02h subfn 0600h
- DS:DX -> control block (see #03686)
- Return: control block updated
- SeeAlso: AH=02h/SF=0300h
- Format of APPC/PC "Flush" control block:
- Offset Size Description (Table 03686)
- 00h 12 BYTEs reserved
- 0Ch WORD 0600h (verb "Flush" or "MC_Flush")
- 0Eh BYTE 1 if MC_ (mapped conversation) form of verb
- 0 if basic verb
- 0Fh 5 BYTEs reserved (0)
- 14h WORD (big-endian) primary return code (see #03681)
- 16h DWORD (big-endian) error code (see #03682)
- 1Ah 8 BYTEs (big-endian) TP_ID
- 22h DWORD (big-endian) conversation ID
- --------N-6802--SF0700-----------------------
- INT 68 - APPC/PC - CONNECTION CONTROL - GET ATTRIBUTES
- AH = 02h subfn 0700h
- DS:DX -> control block (see #03687)
- Return: control block updated
- SeeAlso: AH=02h/SF=0300h
- Format of APPC/PC "Get_Attributes" control block:
- Offset Size Description (Table 03687)
- 00h 12 BYTEs reserved
- 0Ch WORD 0700h (verb "Get_Attributes" or "MC_Get_Attributes")
- 0Eh BYTE 1 if MC_ (mapped conversation) form of verb
- 0 if basic verb
- 0Fh 5 BYTEs reserved (0)
- 14h WORD (big-endian) primary return code (see #03681)
- 16h DWORD (big-endian) error code (see #03682)
- 1Ah 8 BYTEs (big-endian) TP_ID
- 22h DWORD (big-endian) conversation ID
- 26h 8 BYTEs (big-endian) logical unit ID
- 2Eh BYTE 00h
- 2Fh BYTE SYNC_LEVEL (0=none, 1=confirm)
- 30h 8 BYTEs (big-endian) mode name
- 38h 8 BYTEs (big-endian) own net name
- 40h 8 BYTEs (big-endian) own logical unit name
- 48h 8 BYTEs (big-endian) partner logical unit name
- 50h 18 BYTEs (counted string) partner's fully qualified logical unit name
- 62h BYTE 00h
- 63h 11 BYTEs (counted string) user ID
- --------N-6802--SF0800-----------------------
- INT 68 - APPC/PC - CONNECTION CONTROL - GET CONVERSATION TYPE
- AH = 02h subfn 0800h
- DS:DX -> control block (see #03688)
- Return: control block updated
- SeeAlso: AH=02h/SF=0300h
- Format of APPC/PC "Get_Type" control block:
- Offset Size Description (Table 03688)
- 00h 12 BYTEs reserved
- 0Ch WORD 0800h (verb "Get_Type")
- 0Eh BYTE 1 if MC_ (mapped conversation) form of verb
- 0 if basic verb
- 0Fh 5 BYTEs reserved (0)
- 14h WORD (big-endian) primary return code (see #03681)
- 16h DWORD (big-endian) error code (see #03682)
- 1Ah 8 BYTEs (big-endian) TP_ID
- 22h DWORD (big-endian) conversation ID
- 26h BYTE (ret) type (0=basic conversation, 1=mapped conversation)
- --------N-6802--SF0900-----------------------
- INT 68 - APPC/PC - CONNECTION CONTROL - POST ON RECEIPT
- AH = 02h subfn 0900h
- DS:DX -> control block (see #03689)
- Return: control block updated
- SeeAlso: AH=02h/SF=0A00h
- Format of APPC/PC "Post_on_Receipt" control block:
- Offset Size Description (Table 03689)
- 00h 12 BYTEs reserved
- 0Ch WORD 0900h (verb "Post_on_Receipt")
- 0Eh BYTE 1 if MC_ (mapped conversation) form of verb
- 0 if basic verb
- 0Fh 5 BYTEs reserved (0)
- 14h WORD (big-endian) primary return code (see #03681)
- 16h DWORD (big-endian) error code (see #03682)
- 1Ah 8 BYTEs (big-endian) TP_ID
- 22h DWORD (big-endian) conversation ID
- 26h WORD maximum length
- 28h BYTE fill (0=buffer, 1=LL)
- --------N-6802--SF0A00-----------------------
- INT 68 - APPC/PC - CONNECTION CONTROL - PREPARE TO RECEIVE
- AH = 02h subfn 0A00h
- DS:DX -> control block (see #03690)
- Return: control block updated
- SeeAlso: AH=02h/SF=0900h,AH=02h/SF=0B00h
- Format of APPC/PC "Prepare_to_Receive" control block:
- Offset Size Description (Table 03690)
- 00h 12 BYTEs reserved
- 0Ch WORD 0A00h (verb "Prepare_to_Receive" or "MC_Prepare_to_Receive")
- 0Eh BYTE 1 if MC_ (mapped conversation) form of verb
- 0 if basic verb
- 0Fh 5 BYTEs reserved (0)
- 14h WORD (big-endian) primary return code (see #03681)
- 16h DWORD (big-endian) error code (see #03682)
- 1Ah 8 BYTEs (big-endian) TP_ID
- 22h DWORD (big-endian) conversation ID
- 26h BYTE type (0=SYNC_LEVEL, 1=FLUSH)
- 27h BYTE locks (0=short, 1=long)
- --------N-6802--SF0B00-----------------------
- INT 68 - APPC/PC - CONNECTION CONTROL - RECEIVE AND WAIT
- AH = 02h subfn 0B00h
- DS:DX -> control block (see #03691)
- Return: control block updated
- SeeAlso: AH=02h/SF=0C00h,AH=02h/SF=0F00h
- Format of APPC/PC "Receive_and_Wait" control block:
- Offset Size Description (Table 03691)
- 00h 12 BYTEs reserved
- 0Ch WORD 0B00h (verb "Receive_and_Wait" or "MC_Receive_and_Wait")
- 0Eh BYTE 1 if MC_ (mapped conversation) form of verb
- 0 if basic verb
- 0Fh 5 BYTEs reserved (0)
- 14h WORD (big-endian) primary return code (see #03681)
- 16h DWORD (big-endian) error code (see #03682)
- 1Ah 8 BYTEs (big-endian) TP_ID
- 22h DWORD (big-endian) conversation ID
- 26h BYTE type of information received (see #03692)
- 27h BYTE (MC_Receive_and_Wait only) fill (0=buffer, 1=LL)
- 28h BYTE Request_to_Send_Received (0=no, 1=yes)
- 29h WORD maximum length
- 2Bh WORD data length
- 2Dh DWORD pointer to data
- (Table 03692)
- Values for type of information received:
- 00h data
- 01h data complete
- 02h data incomplete
- 03h confirm
- 04h confirm send
- 05h confirm deallocate
- 06h send
- --------N-6802--SF0C00-----------------------
- INT 68 - APPC/PC - CONNECTION CONTROL - RECEIVE IMMEDIATE
- AH = 02h subfn 0C00h
- DS:DX -> control block (see #03693)
- Return: control block updated
- SeeAlso: AH=02h/SF=0B00h,AH=02h/SF=0F00h
- Format of APPC/PC "Receive_Immediate" control block:
- Offset Size Description (Table 03693)
- 00h 12 BYTEs reserved
- 0Ch WORD 0C00h (verb "Receive_Immediate" or "MC_Receive_Immediate")
- 0Eh BYTE 1 if MC_ (mapped conversation) form of verb
- 0 if basic verb
- 0Fh 5 BYTEs reserved (0)
- 14h WORD (big-endian) primary return code (see #03681)
- 16h DWORD (big-endian) error code (see #03682)
- 1Ah 8 BYTEs (big-endian) TP_ID
- 22h DWORD (big-endian) conversation ID
- 26h BYTE type of information received (see #03692)
- 27h BYTE (MC_Receive_Immediate only) fill (0=buffer, 1=LL)
- 28h BYTE Request_to_Send_Received (0=no, 1=yes)
- 29h WORD maximum length
- 2Bh WORD data length
- 2Dh DWORD pointer to data
- --------N-6802--SF0E00-----------------------
- INT 68 - APPC/PC - CONNECTION CONTROL - REQUEST TO SEND
- AH = 02h subfn 0E00h
- DS:DX -> control block (see #03694)
- Return: control block updated
- SeeAlso: AH=02h/SF=0F00h,AH=02h/SF=1000h
- Format of APPC/PC "Request_to_Send" control block:
- Offset Size Description (Table 03694)
- 00h 12 BYTEs reserved
- 0Ch WORD 0E00h (verb "Request_to_Send" or "MC_Request_to_Send")
- 0Eh BYTE 1 if MC_ (mapped conversation) form of verb
- 0 if basic verb
- 0Fh 5 BYTEs reserved (0)
- 14h WORD (big-endian) primary return code (see #03681)
- 16h DWORD (big-endian) error code (see #03682)
- 1Ah 8 BYTEs (big-endian) TP_ID
- 22h DWORD (big-endian) conversation ID
- --------N-6802--SF0F00-----------------------
- INT 68 - APPC/PC - CONNECTION CONTROL - SEND DATA
- AH = 02h subfn 0F00h
- DS:DX -> control block (see #03695)
- Return: control block updated
- SeeAlso: AH=02h/SF=0E00h,AH=02h/SF=1000h
- Format of APPC/PC "Send_Data" control block:
- Offset Size Description (Table 03695)
- 00h 12 BYTEs reserved
- 0Ch WORD 0F00h (verb "Send_Data" or "MC_Send_Data")
- 0Eh BYTE 1 if MC_ (mapped conversation) form of verb
- 0 if basic verb
- 0Fh 5 BYTEs reserved (0)
- 14h WORD (big-endian) primary return code (see #03681)
- 16h DWORD (big-endian) error code (see #03682)
- 1Ah 8 BYTEs (big-endian) TP_ID
- 22h DWORD (big-endian) conversation ID
- 26h BYTE request to send received (0=no, 1=yes)
- 27h BYTE 00h
- 28h WORD data length
- 2Ah DWORD pointer to data
- --------N-6802--SF1000-----------------------
- INT 68 - APPC/PC - CONNECTION CONTROL - SEND ERROR
- AH = 02h subfn 1000h
- DS:DX -> control block (see #03696)
- Return: control block updated
- SeeAlso: AH=02h/SF=0F00h
- Format of APPC/PC "Send_Error" control block:
- Offset Size Description (Table 03696)
- 00h 12 BYTEs reserved
- 0Ch WORD 1000h (verb "Send_Error" or "MC_Send_Error")
- 0Eh BYTE 1 if MC_ (mapped conversation) form of verb
- 0 if basic verb
- 0Fh 5 BYTEs reserved (0)
- 14h WORD (big-endian) primary return code (see #03681)
- 16h DWORD (big-endian) error code (see #03682)
- 1Ah 8 BYTEs (big-endian) TP_ID
- 22h DWORD (big-endian) conversation ID
- 26h BYTE request to send received (0=no, 1=yes)
- 27h BYTE type (0=program, 1=SVC)
- 28h DWORD 00h
- 2Ch WORD (MC_Send_Error only) LOG_DATA length
- 2Eh DWORD (MC_Send_Error only) pointer to LOG_DATA
- --------N-6802--SF1200-----------------------
- INT 68 - APPC/PC - CONNECTION CONTROL - TEST
- AH = 02h subfn 1200h
- DS:DX -> control block (see #03697)
- Return: control block updated
- SeeAlso: AH=02h/SF=1300h
- Format of APPC/PC "Test" control block:
- Offset Size Description (Table 03697)
- 00h 12 BYTEs reserved
- 0Ch WORD 1200h (verb "Test" or "MC_Test")
- 0Eh BYTE 1 if MC_ (mapped conversation) form of verb
- 0 if basic verb
- 0Fh 5 BYTEs reserved (0)
- 14h WORD (big-endian) primary return code (see #03681)
- 16h DWORD (big-endian) error code (see #03682)
- 1Ah 8 BYTEs (big-endian) TP_ID
- 22h DWORD (big-endian) conversation ID
- 26h BYTE (MC_Test only) test (0=posted, 1=request_to_send received)
- Note: error code has different interpretations for:
- 0 posted data
- 1 posted not data (primary return code = 0)
- 1 bad TP_ID (primary return code = 1)
- --------N-6802--SF1300-----------------------
- INT 68 - APPC/PC - CONNECTION CONTROL - WAIT
- AH = 02h subfn 1300h
- DS:DX -> control block (see #03698)
- Return: control block updated
- SeeAlso: AH=02h/SF=1200h
- Format of APPC/PC "Wait" control block:
- Offset Size Description (Table 03698)
- 00h 12 BYTEs reserved
- 0Ch WORD 1300h (verb "Wait")
- 0Eh BYTE 1 if MC_ (mapped conversation) form of verb
- 0 if basic verb
- 0Fh 5 BYTEs reserved (0)
- 14h WORD (big-endian) primary return code (see #03681)
- 16h DWORD (big-endian) error code (see #03682,#03697)
- 1Ah 8 BYTEs (big-endian) TP_ID
- 22h DWORD (big-endian) conversation ID
- 26h BYTE number of conversations to wait on
- Note: error codes have interpretations as for AH=02h/SF=1200h
- --------N-6803--SF2400-----------------------
- INT 68 - APPC/PC - TP STARTED
- AH = 03h subfn 2400h
- DS:DX -> control block (see #03699)
- Return: control block updated
- Format of APPC/PC "TP Started" control block:
- Offset Size Description (Table 03699)
- 00h 12 BYTEs reserved
- 0Ch WORD 2400h (verb "TP Started")
- 0Eh 6 BYTEs 00h
- 14h DWORD (big-endian) return code (see #03668)
- 18h WORD 00h
- 1Ah 8 BYTEs (big-endian) logical unit ID
- 22h 8 BYTEs (big-endian) TP ID
- --------N-6803--SF2800-----------------------
- INT 68 - APPC/PC - GET ALLOCATE
- AH = 03h subfn 2800h
- DS:DX -> control block (see #03700)
- Return: control block updated
- Format of APPC/PC "Get ALLOCATE" control block:
- Offset Size Description (Table 03700)
- 00h 12 BYTEs reserved
- 0Ch WORD 2800h (verb "Get ALLOCATE")
- 0Eh 6 BYTEs 00h
- 14h DWORD (big-endian) return code (see #03668)
- 18h WORD 00h
- 1Ah 8 BYTEs (big-endian) logical unit ID
- 22h BYTE type (00h dequeue, 01h test)
- 23h DWORD pointer to CREATE_TP record
- --------N-6803--SF2A00-----------------------
- INT 68 - APPC/PC - CHANGE LOGICAL UNIT
- AH = 03h subfn 2A00h
- DS:DX -> control block (see #03701)
- Return: control block updated
- Format of APPC/PC "Change Logical Unit" control block:
- Offset Size Description (Table 03701)
- 00h 12 BYTEs reserved
- 0Ch WORD 2A00h (verb "Change Logical Unit")
- 0Eh 6 BYTEs 00h
- 14h DWORD (big-endian) return code (see #03668)
- 18h WORD 00h
- 1Ah 8 BYTEs (big-endian) logical unit ID
- 22h DWORD pointer to CREATE_TP_EXIT routine
- 00000000h queue ALLOCATEs
- FFFFFFFFh reject incoming ALLOCATEs
- 26h DWORD 00000000h
- 2Ah DWORD pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh= don't log errors
- 2Eh DWORD 00000000h
- 32h BYTE maximum TPs
- 33h BYTE 00h stop QUEUE_ALLOCATEs
- 01h resume QUEUE_ALLOCATEs
- 34h DWORD pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh = no exit
- 38h DWORD 00000000h
- --------N-6804-------------------------------
- INT 68 - APPC/PC - TRANSACTION PROCESSING
- AH = 04h
- DS:DX -> control block (see #03702)
- Return: control block updated
- Format of APPC/PC control block:
- Offset Size Description (Table 03702)
- 00h 12 BYTEs reserved
- 0Ch WORD verb (action)
- 2500h TP_ENDED
- 2900h TP_VALID
- 0Eh 6 BYTEs 00h
- 14h DWORD (big-endian) return code (see #03668)
- 18h WORD 00h
- 1Ah 8 BYTEs (big-endian) TP_ID
- 22h DWORD -> CREATE_TP record (only if verb = 2900h)
- --------N-6805-------------------------------
- INT 68 - APPC/PC - TRANSFER MESSAGE DATA
- AH = 05h
- DS:DX -> control block (see #03703)
- Return: control block updated
- Format of APPC/PC "Transfer Message Data" control block:
- Offset Size Description (Table 03703)
- 00h 12 BYTEs reserved
- 0Ch WORD 1C00h (verb "Transfer Message Data")
- 0Eh BYTE data type
- 00h user defined
- 01h NMVT
- 02h alert subvectors
- 03h PDSTATS subvectors
- 0Fh 5 BYTEs 00h
- 14h DWORD (big-endian) return code (see #03668)
- 18h 12 BYTEs 00h
- 24h BYTE flags (see #03704)
- 25h BYTE 00h
- 26h WORD length of data
- 28h N BYTEs data
- Bitfields for APPC/PC message transfer flags:
- Bit(s) Description (Table 03704)
- 0 don't add correlation subvector
- 1 don't add product set ID subvector
- 2 don't do SYSLOG
- 3 don't send SSCP_PU_SESSION
- SeeAlso: #03703
- --------N-6806-------------------------------
- INT 68 - APPC/PC - CHANGE NUMBER OF SESSIONS
- AH = 06h
- DS:DX -> control block (see #03705)
- Return: control block updated
- Format of APPC/PC "Change Number of Sessions" control block:
- Offset Size Description (Table 03705)
- 00h 12 BYTEs reserved
- 0Ch WORD 1500h (verb "Change Number of Sessions")
- 0Eh 6 BYTEs 00h
- 14h WORD (big-endian) primary return code (see #03681)
- 16h DWORD (big-endian) secondary return code (see #03668,#03706)
- 1Ah 8 BYTEs (big-endian) logical unit ID
- 22h 8 BYTEs blanks
- 2Ah 8 BYTEs (big-endian) partner logical unit name
- 32h 8 BYTEs (big-endian) mode name
- 3Ah BYTE bit 7: use MODE_NAME_SELECT_ALL rather than MODE_NAME
- bit 6: set negotiable values
- 3Bh BYTE partner logical unit mode session limit
- 3Ch BYTE minimum CONWINNERS_SOURCE
- 3Dh BYTE maximum CONWINNERS_TARGET
- 3Eh BYTE automatic activation
- 3Fh BYTE 00h
- 40h BYTE flags
- bit 7: drain target
- bit 6: drain source
- bit 5: target responsible, not source
- (Table 03706)
- Values for secondary return code (see also AH=01h/SF=1B00h):
- 0000h accepted
- 0001h negotiated
- 0003h bad logical unit ID
- 0004h allocation failure, no retry
- 0005h allocation failure, retry
- 0151h can't raise limits
- 0153h all modes must reset
- 0154h bad SNASVCMG limits
- 0155h minimum greater than total
- 0156h mode closed (primary return code = 1)
- CNOS mode closed (primary return code = 18h)
- 0157h bad mode name (primary return code = 1)
- CNOS bad mode name (primary return code = 18h)
- 0159h reset SNA drains
- 015Ah single not SRC response
- 015Bh bad partner logical unit
- 015Ch exceeds maximum allowed
- 015Dh change SRC drains
- 015Eh logical unit detached
- 015Fh CNOS command race reject
- --------N-6807-------------------------------
- INT 68 - APPC/PC - PASSTHROUGH
- AH = 07h
- DS:DX -> control block (format depends on application subsystem)
- Return: control block updated
- SeeAlso: AH=FFh
- ----------684300-----------------------------
- INT 68 U - ??? - INSTALLATION CHECK???
- AX = 4300h
- Return: AX = F386h if ???
- ???
- Note: called by Novell DOS 7.0 EMM386.EXE
- SeeAlso: AX=4400h,INT 41/AX=004Fh
- ----------684400-----------------------------
- INT 68 U - ???
- AX = 4400h
- BX = ???
- CX = ???
- DX = ???
- DS:SI = real-mode address of protected-mode GDT
- ES:DI = real-mode address of protected-mode IDT
- Return: ???
- Note: called by Novell DOS 7.0 EMM386.EXE if AX=4300h returns AX=F386h
- SeeAlso: AX=4300h
- --------W-6847-------------------------------
- INT 68 - MS Windows debugging kernel - OUTPUT STRING
- AH = 47h
- ES:SI -> string
- Notes: output a string (to inform a debugger of some events)
- KERNEL outputs "Windows Kernel Entry\r\n" on startup
- SeeAlso: INT 41/AX=0012h
- --------N-68FA-------------------------------
- INT 68 - APPC/PC - ENABLE/DISABLE APPC
- AH = FAh
- AL bit 0 = new state (0 enable, 1 disable)
- SeeAlso: AH=FDh,INT 68"Novell"
- --------N-68FB-------------------------------
- INT 68 - APPC/PC - CONVERT
- AH = FBh
- DS:DX -> control block (see #03707)
- Return: control block updated
- Format of APPC/PC "CONVERT" control block:
- Offset Size Description (Table 03707)
- 00h 12 BYTEs reserved
- 0Ch WORD 1A00h (verb "CONVERT")
- 0Eh 6 BYTEs 00h
- 14h DWORD (big-endian) return code
- 18h BYTE conversion
- 00h ASCII to EBCDIC
- 01h EBCDIC to ASCII
- 19h BYTE character set
- 00h AE
- 01h A
- 02h G
- 1Ah WORD length of string to convert
- 1Ch DWORD pointer to source
- 20h DWORD pointer to target
- --------N-68FC-------------------------------
- INT 68 - APPC/PC - ENABLE/DISABLE MESSAGE TRACING
- AH = FCh
- AL = new state
- 00h disable tracing
- 01h enable tracing
- DX = number of bytes to keep (0=all)
- SeeAlso: AH=FDh,AH=FEh
- --------N-68FD-------------------------------
- INT 68 - APPC/PC - ENABLE/DISABLE API VERB TRACING
- AH = FDh
- AL = new tracing state (00h disabled, 01h enabled)
- SeeAlso: AH=FAh,AH=FCh,AH=FEh
- --------N-68FE-------------------------------
- INT 68 - APPC/PC - SET TRACE DESTINATION
- AH = FEh
- AL = trace destinations (see #03708)
- DS:DX -> trace stats record if AL bit 0 set (see #03709)
- SeeAlso: AH=FCh,AH=FDh
- Bitfields for trace destinations:
- Bit(s) Description (Table 03708)
- 0 storage (DS:DX -> trace stats record)
- 1 display
- 2 file (trace written to file OUTPUT.PC)
- 3 printer
- Format of APPC/PC Trace Statistics Record:
- Offset Size Description (Table 03709)
- 00h DWORD pointer to storage trace buffer
- 04h WORD max number of 80-byte records in trace
- 06h WORD (high-order byte first!) current record number (must init to 0)
- 08h DWORD (high-order byte first!) number of records written (init to 0)
- 0Ch DWORD reserved
- Note: do not move record while trace is active
- --------N-68FF-------------------------------
- INT 68 - APPC/PC - SET PASSTHROUGH
- AH = FFh
- DS:DX -> passthrough exit routine
- SeeAlso: AH=07h,INT 68"Novell"
- --------b-69---------------------------------
- INT 69 - Zenith AT BIOS - ???
- Note: called by INT 09 handler
- --------h-69---------------------------------
- INT 69 C - HP Vectra AT - IRQ17 - KEYBOARD OUTPUT-BUFFER-FULL SERVICE ROUTINE
- SeeAlso: INT 09"IRQ1",INT 68"HP Vectra",INT 6A"HP Vectra"
- --------N-690100-----------------------------
- INT 69 - DECnet DOS CTERM - INSTALLATION CHECK
- AX = 0100h
- Return: AL = FFh if present
- SeeAlso: AX=010Fh
- --------N-690101-----------------------------
- INT 69 - DECnet DOS CTERM - SEND BYTE
- AX = 0101h
- BL = character
- DX = session handle
- Return: AH >= 80h on error
- SeeAlso: AX=0102h
- --------N-690102-----------------------------
- INT 69 - DECnet DOS CTERM - READ BYTE
- AX = 0102h
- DX = session handle
- Return: AH >= 80h on error
- AH < 80h if successful
- AL = character
- SeeAlso: AX=0101h
- --------N-690103-----------------------------
- INT 69 - DECnet DOS CTERM - STATUS
- AX = 0103h
- DX = session handle
- Return: AH status flags (see #03710)
- AL = reason code if DECnet error (see #03711)
- SeeAlso: AX=0104h
- Bitfields for DECnet DOS CTERM status flags:
- Bit(s) Description (Table 03710)
- 7 session has been aborted
- 6 DECnet error
- 1 trace data available
- 0 receive data available
- (Table 03711)
- Values for reason code:
- 00h normal disconnect
- 01h unknown message from host
- 02h protocol violation from host
- 03h could not process the initiate message
- 04h error receiving message from host
- 05h error sending message to host
- 06h error checking for message from host
- 07h remote system does not support CTERM
- 08h remote system does not support correct protocol version
- 09h did not receive BIND message from host
- 0Ah could not send BIND message to host
- 0Bh no more sessions available
- 0Ch session does not exist
- 0Dh not enough memory to complete operation
- 0Eh connection has broken
- Index: error codes;DECnet DOS CTERM|DECnet DOS CTERM;error codes
- --------N-690104-----------------------------
- INT 69 - DECnet DOS CTERM - DECnet STATUS
- AX = 0104h
- DX = session handle
- Return: AX = reason code (see #03711)
- Note: use this call when AX=0103h returns a DECnet error
- SeeAlso: AX=0103h
- --------N-690105-----------------------------
- INT 69 - DECnet DOS CTERM - OPEN SESSION
- AX = 0105h
- DS:BX -> ASCIZ node name
- ES:DX -> buffer for session control block (see #03727 at INT 6A/AH=D0h)
- Return: AX <= 0 on error
- AX > 0 session handle
- SeeAlso: AX=0103h,AX=0106h,AX=010Ah
- --------N-690106-----------------------------
- INT 69 - DECnet DOS CTERM - CLOSE SESSION
- AX = 0106h
- DX = session handle
- Return: AH = status
- 00h good close
- other error code (see #03711)
- SeeAlso: AX=0103h,AX=0105h
- --------N-69010A-----------------------------
- INT 69 - DECnet DOS CTERM - GET SESSION CONTROL BLOCK SIZE
- AX = 010Ah
- Return: AX = length of session control block in bytes
- SeeAlso: AX=0105h
- --------N-69010B-----------------------------
- INT 69 - DECnet DOS CTERM - GET DECnet SOCKET
- AX = 010Bh
- DX = session handle
- Return: AX > 0 DECnet socket for the session
- AX = 0 no match for handle
- --------N-69010F-----------------------------
- INT 69 - DECnet DOS CTERM - DEINSTALL CTERM
- AX = 010Fh
- Return: AH = status
- 00h successful uninstall
- other error code (see #03711)
- Note: CTERM must have been the last TSR loaded in order to deinstall it
- SeeAlso: AX=0100h
- Index: uninstall;DECnet DOS CTERM
- --------N-690A-------------------------------
- INT 69 - DECnet DOS 2.1+ - DATA LINK LAYER
- AH = 0Ah
- AL = function number (see #03712)
- ES:BX -> Datalink Communication Block (see #03714)
- Return: AX = status (see #03713)
- SeeAlso: INT 6D"DECnet"
- (Table 03712)
- Values for DECnet DOS Data Link Layer function:
- 00h initialize
- 01h open portal
- 02h close portal
- 03h enable multicast address
- 04h disable multicast address
- 05h transmit
- 06h request transmit buffer
- 07h deallocate transmit buffer
- 08h read channel status
- 09h read datalink portal list
- 0Ah read information about a datalink portal
- 0Bh read and/or clear counters
- 0Ch request to boot from a network server
- 0Dh enable Ethernet channel
- 0Eh disable Ethernet channel
- 0Fh start MOP/send a System ID message
- 10h stop MOP
- 11h get DECPARM
- 12h set DECPARM
- 13h external loopback
- (Table 03713)
- Values for DECnet DOS Data Link Layer status:
- 00h successful
- 01h hardware failed to initialize
- 02h channel state was not off (must be off to execute that command)
- 03h channel state is off (must be on to execute that command)
- 04h address not set
- 05h hardware missing
- 06h buffer too small
- 07h no more buffers available
- 08h no more resources available
- 09h promiscuous receiver active
- 0Ah non exclusive
- 0Bh unrecognized portal
- 0Ch protocol type in use
- 0Dh not a valid Multicast address
- 0Eh outstanding calls
- 0Fh hardware doesn't support receiving bad frames
- 10h none outstanding
- 11h no events
- 12h broken
- 13h buffer quota exceeded
- 14h already initialized
- 15h loopback failure
- Index: error codes;DECnet DOS|DECnet DOS;error codes
- Format of Datalink Communication Block:
- Offset Size Description (Table 03714)
- 00h WORD portal ID
- 02h 6 BYTEs source address
- 08h 6 BYTEs destination address
- 0Eh DWORD buffer pointer
- 12h WORD buffer length
- 14h WORD operation
- 16h BYTE pad flag (used on open)
- 00h no pad
- 01h pad
- 17h BYTE mode flag (used on open)
- 00h 802.3
- 01h Ethernet
- 02h promiscuous
- 18h DWORD line status change function
- 1Ch DWORD received data function
- 20h DWORD transmitted data function
- 24h BYTE maximum outstanding transmits/receives
- 25h 2 BYTEs protocol type
- 27h WORD buffers lost
- --------N-694001-----------------------------
- INT 69 - 10NET v5.0 - SYSSVC.COM - ???
- AX = 4001h
- Return: CF clear
- AX = 0000h
- ES:SI -> ???
- InstallCheck: test for the signature "SYSV" immediately before the interrupt
- handler
- Range: INT 60 to INT 7F, selected by configuration
- SeeAlso: AX=4002h
- Index: installation check;10NET SYSSVC
- --------N-694002-----------------------------
- INT 69 - 10NET v5.0 - SYSSVC.COM - ???
- AX = 4002h
- ???
- Return: ???
- InstallCheck: test for the signature "SYSV" immediately before the interrupt
- handler
- Range: INT 60 to INT 7F, selected by configuration
- --------N-694101-----------------------------
- INT 69 - 10NET v5.0 - SYSSVC.COM - ???
- AX = 4101h
- Return: CF clear
- ES:SI -> ???
- Range: INT 60 to INT 7F, selected by configuration
- SeeAlso: AX=4102h,AX=4103h,AX=4104h
- --------N-694102-----------------------------
- INT 69 - 10NET v5.0 - SYSSVC.COM - ???
- AX = 4102h
- ???
- Return: ???
- --------N-694103-----------------------------
- INT 69 - 10NET v5.0 - SYSSVC.COM - ???
- AX = 4103h
- ???
- Return: ???
- --------N-694104-----------------------------
- INT 69 - 10NET v5.0 - SYSSVC.COM - ???
- AX = 4104h
- ???
- Return: ???
- --------N-6942-------------------------------
- INT 69 - 10NET v5.0 - SYSSVC.COM - ???
- AH = 42h
- AL = function (01h-14h)
- ???
- Return: ???
- Range: INT 60 to INT 7F, selected by configuration
- --------N-6943-------------------------------
- INT 69 - 10NET v5.0 - SYSSVC.COM - ???
- AH = 43h
- AL = function (01h-05h)
- ???
- Return: ???
- --------N-6944-------------------------------
- INT 69 - 10NET v5.0 - SYSSVC.COM - ???
- AH = 44h
- AL = function (01h-03h)
- ???
- Return: ???
- Range: INT 60 to INT 7F, selected by configuration
- --------N-6949-------------------------------
- INT 69 - 10NET v5.0 - SYSSVC.COM - BUG
- AH = 49h
- Note: due to a fencepost error, this function branches to hyperspace
- SeeAlso: AX=4001h,AH=FFh
- --------G-696996-----------------------------
- INT 69 - ISR.COM v1.00 - SPECIFY INTERRUPT HANDLER
- AX = 6996h
- DS:DX -> interrupt handler or 0000h:0000h to disable
- Return: AX = 9669h
- Program: ISR (Interrupt Service Reflector) is a TSR by Rich Bono which permits
- a program to provide hardware interrupt handlers even while being
- debugged with a debugger that swaps interrupt vectors during
- debugging.
- Note: the interrupt vector which is to be reflected is set at installation
- time and cannot be changed
- --------N-69FF-------------------------------
- INT 69 - 10NET v5.0 - SYSSVC.COM - SIGNAL SYSTEM ERROR
- AH = FFh
- Return: never???
- Desc: displays "System Error" message and register dump, then halts system
- InstallCheck: test for the signature "SYSV" immediately before the interrupt
- handler
- Range: INT 60 to INT 7F, selected by configuration
- SeeAlso: AX=4001h,AH=49h
- --------U-6A---------------------------------
- INT 6A - OPTHELP.COM
- Program: OPTHELP is an optionally-resident help system for SLR Systems's OPTASM
- assembler
- Range: INT 60h to INT 7Fh, selected by configuration
- --------N-6A---------------------------------
- INT 6A - DECnet DOS - LOCAL AREA TRANSPORT PROGRAM - INSTALLATION CHECK
- InstallCheck: test for a signature area immediately preceding the interrupt
- handler (see #03715)
- SeeAlso: AH=01h/DH=FFh,INT 6B"DECnet",INT 6D"DECnet"
- Index: installation check;DECnet DOS Local Area Transport
- Format of DECnet DOS signature area:
- Offset Size Description (Table 03715)
- -5 BYTE major version number
- -4 BYTE minor version number
- -3 3 BYTEs signature (ASCII "LAT")
- --------h-6A---------------------------------
- INT 6A C - HP Vectra AT - IRQ18 - RESERVED HARDWARE INTERRUPT
- SeeAlso: INT 0A"IRQ2",INT 69"HP Vectra",INT 6B"HP Vectra"
- --------N-6A0000-----------------------------
- INT 6A U - Super-TCP DOS TSR Kernel v3.57 - INSTALLATION CHECK
- AX = 0000h
- Return: AX = 4357h ('CW')
- Program: Super-TCP is a TCP/IP protocol stack by Frontier Technologies Corp.
- Note: an alternate installation check is to test for the ASCIZ signature
- "FTC Super-TCP" three bytes past the interrupt handler
- SeeAlso: AX=0001h,AX=0002h,AX=000Fh,AX=0010h,INT 21/AH=3Fh"BW-TCP"
- SeeAlso: INT 61"FTP Software",INT 62/AH=00h"ETHDEV"
- --------N-6A0001-----------------------------
- INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ???
- AX = 0001h
- BH = function number
- 01h ???
- DS:SI -> ??? 24-byte record1 (see #03717)
- ES:DI -> buffer containing ???
- 02h ???
- DS:SI -> ??? 18-byte record2 (see #03718)
- ES:DI -> buffer containing ???
- 04h ???
- BL = subfunction
- 01h
- DS:SI -> ??? 28-byte record3 (see #03719)
- ES:DI -> buffer containing ???
- 02h
- DS:SI -> ??? 28-byte record3 (see #03719)
- ES:DI -> buffer containing ???
- 03h
- DS:SI -> ??? 28-byte record3 (see #03719)
- else Return: AX = 0005h
- 05h ???
- DS:SI -> ??? 20-byte record4 (see #03720)
- ES:DI -> buffer containing ???
- 06h ???
- BL = subfunction
- 01h
- DS:SI -> ??? 40-byte record5 (see #03721)
- 02h
- DS:SI -> ??? 20-byte record6 (see #03722)
- ES:DI -> ???
- 03h
- DS:SI -> ??? 20-byte record6 (see #03722)
- 04h
- DS:SI -> ??? 46-byte record7 (see #03723)
- else Return: AX = 0005h
- 11h ???
- DS:SI -> ??? 28-byte record8 (see #03724)
- ES:DI -> ???
- Return: AX = function status (see #03716)
- SeeAlso: AX=0000h
- (Table 03716)
- Values for Super-TCP function status:
- 0000h successful
- 0005h unsupported function
- 000Ah out of memory
- Format of record1:
- Offset Size Description (Table 03717)
- 00h 4 BYTEs ???
- 04h WORD size of ES:DI buffer
- 06h 18 BYTEs ???
- Format of record2:
- Offset Size Description (Table 03718)
- 00h 4 BYTEs ???
- 04h WORD size of ES:DI buffer
- 06h 12 BYTEs ???
- Format of record3:
- Offset Size Description (Table 03719)
- 00h 2 BYTEs ???
- 02h WORD ???
- 04h WORD size of ES:DI buffer
- 06h WORD ???
- 08h WORD operation number (for function 0401h)
- 0Ah DWORD -> ???
- 0Eh WORD (ret) ???
- 10h 12 BYTEs ???
- Format of record4:
- Offset Size Description (Table 03720)
- 00h 4 BYTEs ???
- 04h WORD size of ES:DI buffer
- 06h 14 BYTEs ???
- Format of record5:
- Offset Size Description (Table 03721)
- 00h BYTE operation??? (00h-07h)
- 01h BYTE ???
- 02h WORD (ret) ???
- 04h DWORD -> ???
- 08h 4 BYTEs ???
- 0Ch DWORD -> ??? or 0000h:0000h
- 10h 16 BYTEs ???
- 20h DWORD ???
- 24h 4 BYTEs ???
- Format of record6:
- Offset Size Description (Table 03722)
- 00h 4 BYTEs ???
- 04h WORD size of ES:DI buffer
- 06h 14 BYTEs ???
- Format of record7:
- Offset Size Description (Table 03723)
- 00h WORD ???
- 02h WORD ???
- 04h WORD ???
- 06h 40 BYTEs ???
- Format of record8:
- Offset Size Description (Table 03724)
- 00h 4 BYTEs ???
- 04h WORD size of ES:DI buffer
- 06h 6 BYTEs ???
- 0Ch WORD (ret) ???
- 0Eh WORD operation??? (01h-03h)
- 10h 12 BYTEs ???
- --------N-6A0002-----------------------------
- INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ???
- AX = 0002h
- BX = ??? (zero/nonzero)
- CX = ??? identifier (see AX=0004h)
- DS:SI -> 40-byte buffer for ??? or 0000h:0000h
- ES:DI -> buffer for ??? or 0000h:0000h
- Return: AX = 0000h (successful) ???
- BL = ???
- BH = ???
- CX = ???
- DX = ???
- --------N-6A0003-----------------------------
- INT 6A U - Super-TCP DOS TSR Kernel v3.57 - GET ??? DATA AREA
- AX = 0003h
- Return: CX:DX -> data area (see #03725)
- Format of Super-TCP data area:
- Offset Size Description (Table 03725)
- 00h 2 BYTEs ???
- 02h DWORD original INT 6A vector
- 06h 2 BYTEs ???
- 08h 96 BYTEs array of 16 6-byte ???
- 68h WORD number of elements of above array in use
- 6Ah WORD ???
- ???
- --------N-6A0004-----------------------------
- INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ALLOCATE ???
- AX = 0004h
- CX = size in ???
- Return: AX = 0000h (successful)
- CX = DX = ???
- SeeAlso: AX=0005h,AX=000Fh
- --------N-6A0005-----------------------------
- INT 6A U - Super-TCP DOS TSR Kernel v3.57 - FREE/CLOSE ???
- AX = 0005h
- CX = ??? identifier (from AX=0004h)
- Return: AX = status (0000h successful, FFFFh failed)
- SeeAlso: AX=0004h,AX=000Fh
- --------N-6A000F-----------------------------
- INT 6A U - Super-TCP DOS TSR Kernel v3.57 - FREE/CLOSE ALL ???
- AX = 000Fh
- Return: AX = 0000h (successful)
- SeeAlso: AX=0000h,AX=0004h,AX=0005h
- --------N-6A0010-----------------------------
- INT 6A U - Super-TCP DOS TSR Kernel v3.57 - UNINSTALL
- AX = 0010h
- Return: AX = status
- 0000h successful
- 0002h can't uninstall, interrupt vector hooked by another program
- Program: Super-TCP is a TCP/IP protocol stack by Frontier Technologies Corp.
- Note: if AX is not one of the values listed here on entry, Super-TCP
- returns AX=FFFEh
- SeeAlso: AX=0000h
- --------N-6A01--DHFF-------------------------
- INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BYTE
- AH = 01h
- DH = FFh
- AL = character
- DL = handle
- Return: AH >= 80h on error
- SeeAlso: AH=02h
- --------N-6A02--DHFF-------------------------
- INT 6A - DECnet DOS LOCAL AREA TRANSPORT - READ BYTE
- AH = 02h
- DH = FFh
- DL = handle
- Return: AH < 80h if successful
- AL = character
- AH >= 80h on error
- SeeAlso: AH=01h
- --------N-6A03--DHFF-------------------------
- INT 6A - DECnet DOS LOCAL AREA TRANSPORT - STATUS
- AH = 03h
- DH = FFh
- DL = handle
- Return: AH = status flags (see #03726)
- Bitfields for DECnet DOS LAT status flags:
- Bit(s) Description (Table 03726)
- 5 transmit buffer empty
- 3 session in start state
- 2 session not active
- 1 unable to queue transmit data
- 0 receive data available
- --------N-6AD0--DHFF-------------------------
- INT 6A - DECnet DOS LOCAL AREA TRANSPORT - OPEN SESSION
- AH = D0h
- DH = FFh
- AL = password flag
- FFh no password
- 0Fh password at ES:DI
- ES:BX -> LAT session control block (see #03727)
- ES:DI -> 16-byte blank-padded password (optional)
- Return: AH = 00h success
- DL = handle
- SeeAlso: AX=D000h
- Format of LAT Session Control Block:
- Offset Size Description (Table 03727)
- 00h 18 BYTEs service name
- 12h 18 BYTEs node name (future use)
- 24h 18 BYTEs port name (future use)
- 36h DWORD -> session stopped post routine
- 3Ah DWORD -> service table overflow post routine
- 3Eh DWORD -> transmit post routine
- 42h DWORD -> receive post routine
- 46h WORD session status
- 04h circuit failure
- 08h stop slot received
- ---LAT v???---
- 48h WORD slot state (LAT driver use)
- 4Ah WORD local credits (LAT driver use)
- 4Ch DWORD -> VCB (LAT driver use)
- 50h WORD backward slot (LAT driver use)
- 52h WORD forward slot (LAT driver use)
- 54h WORD remote slot ID (LAT driver use)
- 56h WORD local slot ID (LAT driver use)
- 58h WORD slot byte count (LAT driver use)
- 5Ah BYTE remote credits (LAT driver use)
- 5Bh 255 BYTEs transmitted data slot
- 15Ah BYTE number of receive data slots (4 recommended)
- 15Bh BYTE number of occupied slots
- 15Ch BYTE index of next receive slot to use
- 15Dh BYTE index of current receive slot
- 15Eh WORD pointer to first received character
- 160h N WORDs pointers to receive slots (buffers); each is 259 bytes
- 259N BYTEs buffers
- Note: set post routines to 0000h:0000h if polled operation will be used
- ---LAT v4.1.17---
- 48h WORD session state (LAT driver use)
- 4Ah BYTE local credits (LAT driver use)
- 4Bh DWORD -> VCB (LAT driver use)
- 4Fh WORD backward slot (LAT driver use)
- 51h WORD forward slot (LAT driver use)
- 53h BYTE remote slot ID (LAT driver use)
- 54h BYTE local slot ID (LAT driver use)
- 55h BYTE slot byte count (LAT driver use)
- 56h BYTE remote credits (LAT driver use)
- 57h 255 BYTEs transmitted data slot
- 156h BYTE number of receive data slots (4 recommended)
- 157h BYTE number of occupied slots
- 158h BYTE index of next receive slot to use
- 159h BYTE index of current receive slot
- 15Ah WORD pointer to first received character
- 15Ch N WORDs pointers to receive slots (buffers); each is 259 bytes
- 259N BYTEs buffers
- Note: set post routines to 0000h:0000h if polled operation will be used
- --------N-6AD000DHFF-------------------------
- INT 6A - DECnet DOS LOCAL AREA TRANSPORT - CLOSE SESSION
- AX = D000h
- DH = FFh
- DL = handle
- Return: AX = status (see #03728)
- SeeAlso: AH=D0h
- (Table 03728)
- Values for DECnet DOS LAT function status:
- 0000h successful
- 0001h no such session
- 0002h session not running, try again later
- --------N-6AD100DHFF-------------------------
- INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BREAK
- AX = D100h
- DH = FFh
- DL = handle
- Return: AX = 0000h if successful
- AH bit 7 set if unable to send break
- --------N-6AD300DHFF-------------------------
- INT 6A - DECnet DOS LOCAL AREA TRANSPORT - RESET LAT COUNTERS
- AX = D300h
- DH = FFh
- SeeAlso: AX=D400h
- --------N-6AD400DHFF-------------------------
- INT 6A - DECnet DOS LOCAL AREA TRANSPORT - COPY LAT COUNTERS
- AX = D400h
- DH = FFh
- CX = buffer size
- ES:BX -> buffer for LAT counters
- Return: AX = status
- 0000h counters copied into buffer
- FFFFh buffer too small
- SeeAlso: AX=D300h
- --------N-6AD500DHFF-------------------------
- INT 6A - DECnet DOS LOCAL AREA TRANSPORT - GET NEXT LAT SERVICE NAME
- AX = D500h
- DH = FFh
- ES:BX -> 17-byte buffer for name
- Return: AH = 00h if successful
- ES:BX buffer filled
- AX = FFFFh if end of table or no name available
- Notes: use this function to get the names of the hosts on the network
- successive calls are necessary to get all names
- SeeAlso: AX=D600h/DH=FFh
- --------N-6AD600DHFF-------------------------
- INT 6A - DECnet DOS LOCAL AREA TRANSPORT - LAT SERVICE TABLE RESET
- AX = D600h
- DH = FFh
- Return: AX = number of service table entries
- BX = status
- 0000h service table has not overflowed
- FFFFh service table has overflowed
- SeeAlso: AX=D500h
- --------!---Section--------------------------
- Interrupt List, part 17 of 18
- Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
- --------N-6B---------------------------------
- INT 6B - DECnet DOS - PORT DRIVER
- InstallCheck: test for a signature area (see #03729) immediately preceding
- the interrupt handler
- SeeAlso: INT 6A"DECnet",INT 6C"DECnet"
- Index: installation check;DECnet DOS Port Driver
- Format of DECnet DOS signature area:
- Offset Size Description (Table 03729)
- -5 BYTE major version number
- -4 BYTE minor version number
- -3 3 BYTEs signature (ASCII "PDV")
- --------v-6B---------------------------------
- INT 6B - VIRUS - "Saddam" - ORIGINAL INT 21h VECTOR
- SeeAlso: INT 21/AX=FFFFh,INT 61"VIRUS",INT 70"VIRUS"
- --------h-6B---------------------------------
- INT 6B C - HP Vectra AT - IRQ19 - RESERVED HARDWARE INTERRUPT
- SeeAlso: INT 0B"IRQ3",INT 6A"HP Vectra",INT 6C"HP Vectra"
- --------S-6B0000-----------------------------
- INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED WRITE
- AX = 0000h
- CX = length
- ES:BX -> buffer
- Return: CX = number of bytes written
- Program: NASI is Novell's NetWare Asynchronous Services Interface (purchased
- from Network Products Corp, who call it NCSI) which runs on
- workstations; NACS is the NetWare Asynchronous Communications
- Services module which runs on servers
- InstallCheck: test for the signature string "NCSI" three bytes past the
- interrupt handler; see also AH=02h.
- As of version 3.0, Novell's NASI can be distinguished from NPC's
- NCSI by the presence of an 'A' immediately following the signature
- Notes: this function is also supported by TelAPI, NPC NCSI, and Connection
- Manager CLIENT.EXE; for TelAPI, nonzero values in AL specify a
- connection ID
- Connection Manager returns CF set/AL=FFh if called while an INT 6B
- call is already in progress
- SeeAlso: AX=0100h,AH=18h,INT 14/AH=19h,INT 14/AH=E3h
- --------S-6B0100-----------------------------
- INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED READ
- AX = 0100h
- CX = length of buffer
- ES:BX -> buffer
- Return: CX = number of bytes read
- Note: also supported by TelAPI and NPC NCSI; for TelAPI, nonzero values in
- AL specify a connection ID
- SeeAlso: AX=0000h,AH=19h,INT 14/AH=18h,INT 14/AH=E2h,INT 14/AX=FF02h
- --------S-6B02-------------------------------
- INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - INSTALL CHECK
- AH = 02h
- AL nonzero
- Return: AL = 00h if present and OK
- Note: this function is also supported by TelAPI and NPC NCSI
- SeeAlso: AX=0700h
- --------S-6B0600-----------------------------
- INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - CONTROL
- AX = 0600h
- CX = command
- 02h send break
- 04h disconnect
- 06h hold
- Return: CF clear if successful
- AL = 00h
- CF set on error
- AX < 0
- Note: this function is also supported by TelAPI and NPC NCSI
- --------S-6B0700-----------------------------
- INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - GET STATUS
- AX = 0700h
- Return: CH <> 00h if connection active
- Notes: this function is also supported by TelAPI and NPC NCSI
- Novell TelAPI returns CX=FF01h and CF clear
- SeeAlso: AH=02h,AH=10h
- --------N-6B08-------------------------------
- INT 6B - TelAPI - CHECK FOR BREAK SIGNAL
- AH = 08h
- AL = circuit number
- Return: CF clear if no breaks
- AL = 00h
- CX = 0000h
- CF set if one or more breaks received
- Note: this function also clears ??? flag
- SeeAlso: INT 14/AX=FF00h
- --------S-6B10-------------------------------
- INT 6B - NPC NCSI EXTENDED SERIAL I/O - GET STATUS
- AH = 10h
- AL = connection ID (Novell TELAPI.EXE)
- CX = ???
- ES:BX -> buffer for status (see #03730)
- Return: CF clear if successful
- CL = ???
- CH = ???
- CF set on error
- ???
- Notes: this function is also supported by TelAPI
- when shelled out to an external protocol from Novell NASI, the circuit
- whose status indicates that it is connected is the currently active
- circuit
- SeeAlso: AX=0700h,AH=12h,AH=1Fh
- Format of NASI status:
- Offset Size Description (Table 03730)
- 00h BYTE number of allocated virtual circuits
- 01h BYTE reserved
- 02h 9 BYTEs states of emulated circuits 0-8
- 00h idle
- 01h attached Telnet session, in command state
- 02h attached Telnet session, connected with host
- 03h-06h ??? (not returned by TelAPI)
- Note: this description is derived from the Novell TelAPI emulation of NASI
- --------S-6B11--DX0001-----------------------
- INT 6B - NPC NCSI EXTENDED SERIAL I/O - ALLOCATE A VIRTUAL CIRCUIT
- AH = 11h
- DX = 0001h
- AL = 00h
- ES:BX -> service name string (8 characters, blank-padded)
- Return: CF clear if successful
- AL = virtual circuit number allocated (01h for Novell TELAPI.EXE)
- CL = ??? (01h for Novell TELAPI.EXE)
- CH = ??? (01h for Novell TELAPI.EXE)
- CF set on error
- ???
- Note: this function is also supported by TelAPI
- SeeAlso: AH=12h,AH=15h,AH=16h,AH=17h,AH=18h
- --------S-6B12-------------------------------
- INT 6B - NPC NCSI EXTENDED SERIAL I/O - VIRTUAL CIRCUIT STATUS
- AH = 12h
- AL = virtual circuit number (0-8)
- Return: CF clear if successful
- AL = virtual circuit number
- CL = virtual circuit's state
- 00h idle
- 01h Telnet session, in command state
- 02h Telnet session, connected to host
- 03h-06h ??? (not returned by TelAPI)
- CF set on error
- AL = error code
- E2h invalid virtual circuit number
- E4h specified virtual circuit not allocated
- Note: this function is also supported by TelAPI
- SeeAlso: AH=10h,AH=15h,AH=1Ah,AH=1Bh,AH=1Fh
- --------S-6B13-------------------------------
- INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE REQUEST/REPLY SERVICE NAME
- AH = 13h
- AL = virtual circuit number
- CL = direction (00h get, nonzero set)
- ES:BX -> buffer for/containing service name
- Return: ???
- Note: this function is also supported by TelAPI
- SeeAlso: AH=14h,AH=15h
- --------S-6B14-------------------------------
- INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE SERVICE ADDRESS
- AH = 14h
- AL = virtual circuit number
- ES:BX -> buffer for/containing service address
- Return: ???
- Note: this function is also supported by TelAPI, which only supports
- retrieving the address
- SeeAlso: AH=13h,AH=15h,AH=21h
- --------S-6B15-------------------------------
- INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE VIRTUAL CIRCUIT CONFIG
- AH = 15h
- AL = virtual circuit number
- CL = direction (00h get, nonzero set)
- ES:BX -> buffer for/containing virtual circuit config (see #03731)
- Return: ES:BX buffer filled
- Note: this function is also supported by TelAPI
- SeeAlso: AH=13h"NCSI",AH=14h"NCSI"
- Format of virtual circuit configuration:
- Offset Size Description (Table 03731)
- 00h WORD buffer length
- 02h WORD port ID
- 04h WORD receive rate
- 06h WORD receive word length
- 08h WORD receive stop bits
- 0Ah WORD receive parity
- 0Ch WORD transmit rate
- 0Eh WORD transmit word length
- 10h WORD transmit stop bits
- 12h WORD transmit parity
- 14h WORD DTR
- 16h WORD RTS
- --------S-6B16-------------------------------
- INT 6B - NPC NCSI EXTENDED SERIAL I/O - LOG AND/OR INITIALIZE VIRTUAL CIRCUIT
- AH = 16h
- AL = virtual circuit number
- CL = ??? switch (00h, ???)
- Return: CF clear if successful
- AL = virtual circuit number
- CF set on error
- ???
- Note: this function is also supported by TelAPI, which always returns CF
- clear and AL=00h
- SeeAlso: AH=11h,AH=12h,AH=17h
- --------S-6B17-------------------------------
- INT 6B - NPC NCSI EXTENDED SERIAL I/O - DISCONNECT A VIRTUAL CIRCUIT
- AH = 17h
- AL = virtual circuit number
- Return: CF clear if successful
- CF set on error
- ???
- Note: this function is also supported by TelAPI, which always returns CF
- clear and AL=00h
- SeeAlso: AH=11h,AH=16h
- --------S-6B18-------------------------------
- INT 6B - NPC NCSI EXTENDED SERIAL I/O - WRITE DATA ON A VIRTUAL CIRCUIT
- AH = 18h
- AL = virtual circuit number
- CX = number of characters to send
- ES:BX -> buffer containing characters to be sent
- Return: CF clear if successful
- CF set on error
- ???
- Note: this function is also supported by TelAPI, which always returns CF
- clear and AL=30h
- SeeAlso: AX=0000h,AH=12h,AH=19h
- --------S-6B19-------------------------------
- INT 6B - NPC NCSI EXTENDED SERIAL I/O - READ DATA ON A VIRTUAL CIRCUIT
- AH = 19h
- AL = virtual circuit number
- CX = number of characters to read
- ES:BX -> buffer for received characters
- Return: CX = 0000h if failed
- CX = nonzero (possibly number of characters received) if successful
- Note: this function is also supported by TelAPI
- SeeAlso: AX=0100h,AH=12h,AH=18h
- --------S-6B1A-------------------------------
- INT 6B - NPC NCSI EXTENDED SERIAL I/O - RECEIVE STATUS
- AH = 1Ah
- ???
- Return: ???
- SeeAlso: AH=12h,AH=1Bh
- --------S-6B1B-------------------------------
- INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT STATUS
- AH = 1Bh
- ???
- Return: ???
- SeeAlso: AH=12h,AH=1Ah
- --------S-6B1C-------------------------------
- INT 6B - NPC NCSI EXTENDED SERIAL I/O - CLEAR RECEIVE BUFFER
- AH = 1Ch
- AL = circuit number
- Return: nothing
- SeeAlso: AH=1Dh"NCSI",AH=1Eh"NCSI"
- --------S-6B1D-------------------------------
- INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT BUFFER CONTROL
- AH = 1Dh
- ???
- Return: ???
- SeeAlso: AH=1Ch,AH=1Eh
- --------S-6B1E-------------------------------
- INT 6B - NPC NCSI EXTENDED SERIAL I/O - ISSUE CONTROL REQUEST
- AH = 1Eh
- ???
- Return: ???
- SeeAlso: AH=1Ch,AH=1Dh
- --------S-6B1F-------------------------------
- INT 6B - NPC NCSI EXTENDED SERIAL I/O - EXTERNAL STATUS
- AH = 1Fh
- ???
- Return: ???
- SeeAlso: AH=10h,AH=12h
- --------S-6B20-------------------------------
- INT 6B - Connection Manager CLIENT.EXE - ???
- AH = 20h
- ???
- Return: ???
- Program: Connection Manager by Softwarehouse Corp. permits the sharing of
- serial ports over an IPX or NetBIOS-based network
- Note: CLIENT.EXE returns CF set/AL=F9h if AH is not 00h to 21h on entry
- --------S-6B21-------------------------------
- INT 6B - NPC NCSI EXTENDED SERIAL I/O - QUERY NAME SERVICE
- AH = 21h
- AL = virtual circuit number
- CL = ??? (00h or 01h)
- ES:BX -> buffer for service name structure (see #03732)
- Return: CF clear if successful
- ES:BX buffer filled
- CF set on error
- Notes: a program should call this function after allocating a virtual circuit
- and check that the general name matches the requested service
- prior to version 3.0, Novell's NASI returned the first available port;
- v3.0+ returns the first port found--check the returned status to
- determine whether the port is available
- SeeAlso: AH=14h"NCSI"
- Format of NCSI service name structure:
- Offset Size Description (Table 03732)
- 00h WORD buffer length
- 02h 8 BYTEs service name
- 0Ah 8 BYTEs general name
- 12h 8 BYTEs specific name
- 1Ah 4 BYTEs ???
- ---Novell NASI v3.0+ ---
- 1Eh BYTE port number
- 1Fh BYTE port status
- 00h idle (available)
- 01h allocated (available)
- 02h connected
- 03h on hold
- ----------6B6B-------------------------------
- INT 6B - Tandy SCHOOLMATE PLUS - API
- AH = 6Bh
- AL = E0h to FFh
- Note: details not yet available
- ----------6C---------------------------------
- INT 6C - system resume vector (CONVERTIBLE)
- ----------6C---------------------------------
- INT 6C - DOS 3.2 Realtime Clock update
- --------N-6C---------------------------------
- INT 6C - DECnet DOS network scheduler
- InstallCheck: test for a signature area immediately preceding the interrupt
- handler (see #03733)
- Note: this function is also supported by DEC Pathworks for DOS
- SeeAlso: INT 6B"DECnet",INT 6D"DECnet",INT 6E"DECnet"
- Index: installation check;DECnet DOS scheduler
- Format of DECnet DOS signature area:
- Offset Size Description (Table 03733)
- -5 BYTE major version number
- -4 BYTE minor version number
- -3 3 BYTEs signature (ASCII "SCH")
- --------h-6C---------------------------------
- INT 6C C - HP Vectra AT - IRQ20 - HP-HIL CONTROLLER INTERRUPT
- SeeAlso: INT 0C"IRQ4",INT 6B"HP Vectra",INT 6D"HP Vectra"
- --------V-6D---------------------------------
- INT 6D - VIDEO - many VGA - VIDEO BIOS ENTRY POINT
- Desc: points at the original INT 10 entry point set up by the VGA BIOS
- Notes: used by IBM, ATI VGA Wonder, Paradise, Video7, and NCR, and many others
- the Diamond Stealth64 BIOS uses this vector to store the INT 42 vector
- of the inactive video (see INT 10/AH=12h/BL=35h)
- SeeAlso: INT 10/AH=00h,INT 10/AH=0Eh,INT 10/AH=12h/BL=10h
- --------V-6D---------------------------------
- INT 6D - Trident SVGA - VIDEO BIOS HANDLER
- Note: the BIOS INT 10 handler on various Trident VGA cards consists merely
- of a call to INT 6D followed by an IRET.
- --------N-6D---------------------------------
- INT 6D - DECnet DOS (before 2.1) - DATA LINK LAYER PROGRAM
- AH = function
- ???
- Return: ???
- InstallCheck: test for a signature area immediately preceding the interrupt
- handler (see #03734)
- SeeAlso: INT 69/AH=0Ah,INT 6C"DECnet",INT 6E"DECnet"
- Index: installation check;DECnet DOS Data Link Layer
- Format of DECnet DOS signature area:
- Offset Size Description (Table 03734)
- -5 BYTE major version number
- -4 BYTE minor version number
- -3 3 BYTEs signature (ASCII "DLL")
- --------h-6D---------------------------------
- INT 6D C - HP Vectra AT - IRQ21 - RESERVED HARDWARE INTERRUPT
- SeeAlso: INT 0D"IRQ5",INT 6C"HP Vectra",INT 6E"HP Vectra"
- --------V-6DBD60-----------------------------
- INT 6D U - Matrox Multiple Monitor Support v1.0 - ???
- AX = BD60h
- DS:SI -> buffer containing ??? (see #03735)
- ???
- Return: AX = 00BDh if function executed
- ???:SI -> 22-byte buffer (inside TSR) filled with ??? (see #03735)
- AX unchanged if function disabled
- Note: this function is a NOP if AX=BD6Fh/BL=01h was called
- SeeAlso: AX=BD61h,AX=BD6Fh,AX=BDFFh
- Format of Matrox ??? buffer:
- Offset Size Description (Table 03735)
- 00h 4 BYTEs ???
- 04h WORD video mode width in pixels
- 06h WORD video mode height in pixels
- 08h BYTE ???
- 09h BYTE ???
- 0Ah BYTE ???
- 0Bh BYTE flags
- bit 1: ???
- bit 4: ??? (corresponds to bit 14 for AX=BD61h)
- bit 5: ??? (corresponds to bit 15 for AX=BD61h)
- 0Ch DWORD -> ??? buffer
- 10h WORD ???
- bit 4: ??? (corresponds to bit 14 for AX=BD61h)
- bit 5: ??? (corresponds to bit 15 for AX=BD61h)
- 12h 4 BYTEs ???
- SeeAlso: #03736
- --------V-6DBD61-----------------------------
- INT 6D U - Matrox Multiple Monitor Support v1.0 - GET VIDEO MODE INFORMATION
- AX = BD61h
- BX = width in pixels (bits 13-0)
- bit 14: ???
- bit 15: ???
- CX = height in pixels
- Return: AL = BDh if function supported
- AH = status
- 00h successful
- 01h failed (resolution/flags not supported)
- CX:BX -> video mode data structure (see #03736)
- (first word is FFFFh if unsupported resolution)
- EAX high word cleared
- SeeAlso: AX=BD60h,AX=BD6Fh,AX=BDFFh
- Format of Matrox video mode information (VCE structure):
- Offset Size Description (Table 03736)
- 00h WORD width in pixels
- 02h WORD height in pixels
- 04h WORD ???
- 06h DWORD dot clock frequency
- 0Ah 25 BYTEs ???
- SeeAlso: #03735
- --------V-6DBD6F-----------------------------
- INT 6D U - Matrox Multiple Monitor Support v1.0 - INSTALLATION CHECK
- AX = BD6Fh
- BL = subfunction
- 00h installation check
- 01h disable TSR
- 02h enable TSR (see AX=BD60h)
- Return: AX = 00BDh if installed
- SeeAlso: AX=BD60h,AX=BD61h,AX=BDFFh
- --------V-6DBDFF-----------------------------
- INT 6D U - Matrox Multiple Monitor Support v1.0 - UNHOOK INTERRUPT (UNINSTALL)
- AX = BDFFh
- Return: AX = 00BDh if supported
- Note: this function revectors INT 6D without checking that it points at the
- TSR, and does not release the memory occupied by the TSR
- SeeAlso: AX=BD60h,AX=BD61h,AX=BD6Fh
- --------N-6E---------------------------------
- INT 6E - DECnet DOS - DECnet NETWORK PROCESS API
- InstallCheck: test for the signature/data area (see #03737) immediately prior
- to the interrupt handler
- Note: this is the main DECnet DOS access, and is described in Digital manual
- AA-EB46B-TV ("DECnet-DOS Programmer's Reference Manual")
- Index: installation check;DECnet DOS
- Format of DECnet DOS signature area:
- Offset Size Description (Table 03737)
- -5 BYTE major version number
- -4 BYTE minor version number
- -3 3 BYTEs signature (ASCII "DNP")
- --------h-6E---------------------------------
- INT 6E C - HP Vectra AT - IRQ22 - RESERVED HARDWARE INTERRUPT
- SeeAlso: INT 0E"IRQ6",INT 6D"HP Vectra",INT 6F/AH=00h"HP Vectra"
- --------N-6F---------------------------------
- INT 6F - Novell NetWare - PCOX API (3270 PC terminal interface)
- AX = function
- 0000h enter terminal mode
- Return: AX = status
- 0000h no action requested
- 0001h screen save
- 0001h reset interface and set configuration parameters
- DX = bitfields
- bits 2-0: model number
- bits 4-3: I/O address
- bits 6-5: DMA channel
- Return: nothing
- 0002h set display parameters
- DX = bitfields
- bits 1-0: OIA mode
- bits 4-2: monitor support
- Return: nothing
- 0003h read status
- Return: AX = status word (see #03738)
- 0004h read cursor position
- Return: AX = cursor position
- 0005h get character from device buffer
- DX = cursor position
- Return: AH = type (00h data, 01h attribute)
- AL = data or attribute character
- 0006h send character
- DH = type (00h ASCII, 01h extended code)
- DL = ASCII character or extended code
- Return: nothing
- 0007h set timeout
- DX = timeout in seconds
- Return: nothing
- 0008h wait for location to be modified
- DX = cursor position
- Return: AX = status (0000h modified, nonzero timeout)
- 0009h NOP
- 000Ah restore display
- Return: nothing
- 000Bh update device buffer
- Return: AX = cursor positoin
- 000Ch write string to add information area
- DS:DX -> string
- Return: nothing
- 000Dh maintenance operations
- DX = maintenance operation code
- Return: AX = operation status
- 000Eh get control program version
- Return: AH = release number (major version)
- AL = level number (minor version)
- 000Fh get microcode version
- Return: AH = release number (major version)
- AL = level number (minor version)
- 0010h save or display graphics
- BX = length of data buffer
- CX = subfunction request code
- DS:DX -> data buffer
- Return: AX = return code
- CX = length of PIF data
- 0011h perform structured field operation
- CX = request number
- DS:DX -> parameter list
- Return: AX = status word (see #03738)
- CX = error number
- 0012h set cursor position for direct write buffer
- DX = new cursor position
- Return: AX = status word (see #03738)
- 0013h write direct to buffer
- DL = character to be written
- DH = translation option
- Return: AX = status word (see #03738)
- 0014h write direct to buffer without echo
- DL = character to be written
- DH = translation option
- Return: AX = status word (see #03738)
- 0015h set direct write string length
- DX = string value
- Return: nothing
- 0016h write string direct to buffer
- DS:DX -> string
- Return: AX = status word (see #03738)
- 0017h write string direct to buffer, untranslated
- DS:DX -> string
- Return: AX = status word (see #03738)
- 0018h get direct-write cursor position
- Return: AX = cursor position
- 0019h convert row/column to cursor position
- DH = display row (1-43)
- DL = display column (1-132)
- Return: AX = cursor position
- 001Ah convert cursor position to row/column
- DX = cursor position
- Return: AH = display row
- AL = display column
- 001Bh find next field
- DX = initial cursor position
- Return: AX = field cursor position
- 001Ch find previous field
- DX = initial cursor position
- Return: AX = field cursor position
- 001Dh find next unprotected field
- DX = initial cursor position
- Return: AX = field cursor position
- 001Eh find previous unprotected field
- DX = initial cursor position
- Return: AX = field cursor position
- 001Fh find next protected field
- DX = initial cursor position
- Return: AX = field cursor position
- 0020h find previous protected field
- DX = initial cursor position
- Return: AX = field cursor position
- 0021h masked search forward
- DH = mask
- DL = search pattern
- Return: AX = cursor position or 0000h
- 0022h masked search backward
- DH = mask
- DL = search pattern
- Return: AX = cursor position or 0FFFh
- 0023h find field length
- DX = cursor position
- Return: AX = field length
- 0024h read field
- DS:DX -> buffer for field contents
- Return: AX = status word (see #03738)
- 0025h read screen
- DS:DX -> buffer for screen contents
- Return: AX = status word (see #03738)
- 0026h read buffer untranslated
- DX = cursor position
- Return: AX = buffer code
- CX:BX -> 3278/79 device buffer image
- 0027h enable/disable keyboard
- DL = new state of keyboard breaks (00h enabled, 01h disabled)
- Return: nothing
- 0028h select host session
- DL = session short name
- Return: AX = session information
- 0029h retrieve host session name
- AX = short name (DFT) or 0000h (not available, CUT mode)
- 002Ah get current device buffer size
- Return: AX = device buffer size
- CX = segment of EAB
- 002Bh arm modified location trigger
- DX = cursor position
- Return: AX = status (0000h not available, 0001h successful)
- Bitfields for PCOX status word:
- Bit(s) Description (Table 03738)
- 0,1 cursor type
- 2 cursor inhibited
- 3 display inhibited
- 4 feature step inhibited
- 5 480-character format code
- 6,7 unused
- 8-10 model number (2-5)
- 11 unit has been reset by controller (cleared after status returned)
- 12 buffer has been written into (cleared after status returned)
- 13 alarm has been sounded (cleared after status returned)
- 14-15 monitor type (01 mono, 10 color, 11 hybrid)
- --------N-6F00-------------------------------
- INT 6F - 10NET - LOGIN
- AH = 00h
- DS:DX -> login record (see #03739)
- Return: CL = security level
- AX = status (see #03740)
- SeeAlso: AH=01h,AH=80h,INT 21/AX=4402h"10MEMMGR"
- Format of 10NET login record:
- Offset Size Description (Table 03739)
- 00h 8 BYTEs user name
- 08h 8 BYTEs password
- 10h 12 BYTEs name of SuperStation
- (Table 03740)
- Values for 10NET status:
- 0000h successful
- 01FFh "RTO_NERR" transmit interrupt lost (time out on response)
- 02FFh "NET_NERR" network (hardware) error
- 03FFh "PAS_NERR" invalid password
- 04FFh "LRN_NERR" local resource not available
- 05FFh "SRN_NERR" server resource not available
- 06FFh "LNM_NERR" already logged in under different name
- 07FFh "LSF_NERR" login security failure (node)
- 08FFh "NLI_NERR" not logged in
- 09FFh "DIVZ_NERR" position calc error
- 0AFFh "NT1_NERR" receive subfunction not = send subfunction (i.e. read,write)
- 0BFFh "RFNC_NERR" request function not in range
- 0CFFh "NSFH_NERR" no more server file handle entries left
- 0DFFh "NFTAB_NERR" no more shared file table entries left
- 0EFFh "NUFH_NERR" no more user file handle entries left
- 0FFFh "CHAT_NERR" chat permit not on
- 10FFh "NSRV_NERR" not a server on request
- 11FFh "NOBD_NERR" no transporter board error
- 12FFh "STO_NERR" time out on send
- 13FFh "INF_NERR" item not found (spool item not on queue)
- 14FFh "DACS_NERR" DOS access incompatible
- 15FFh "RLOCK_NERR" record already locked
- 16FFh "IVP_NERR" invalid parameter
- 17FFh "RLTO_NERR" record lock time out error
- 18FFh "CSPL_NERR" currently spooling to named device
- 19FFh "DRP_NERR" dropped receive message (throttle)
- 1AFFh "SOPV_NERR" open sharing violation
- 1BFFh "NTUF_NERR" no more tuf entries left
- 1CFFh "NOWN_NERR" not file owner on open
- 1DFFh "RSEC_NERR" read security not passed
- 1EFFh "WSEC_NERR" write security not passed
- 1FFFh "GSEC_NERR" group security not passed
- 20FFh "SEC1_NERR" security file failure
- 21FFh "ACT1_NERR" activity file failure
- 22FFh "SPL1_NERR" spool control file failure
- 23FFh "NMT_NERR" device not mounted (spooling)
- 24FFh "RSPL_NERR" spool file has not been terminated
- 25FFh "DNSH_NERR" device not mounted or is not being shared
- 26FFh "DUP_NERR" duplicate node ID
- 27FFh "FNF_NERR" file not found error
- 28FFh "NMF_NERR" no more files
- 29FFh "UN_NERR" unknown internal system error
- 2AFFh "QCP_NERR" print queue is full or corrupted
- 2BFFh "IFNC_NERR" invalid function
- 2CFFh "IVH_NERR" invalid handle
- 2DFFh "TOF_NERR" too many files opened
- 2EFFh "PNF_NERR" path not found
- 2FFFh "SACT_NERR" named file is active
- ---10NET v5.0+ ---
- 30FFh "NAK_NERR" received NAK on send (destination out of buffers)
- 31FFh "RENT_NERR" reentrancy in driver F_SEND
- 32FFh "RECV_NERR" driver could not be put in receive mode
- 33FFh "NRLT_NERR" no more RLTAB entries left
- 34FFh "DIAL_NERR" function requires an unsupported dialect
- 35FFh "IVD_NERR" invalid device
- 36FFh "NALV_NERR" netname access level violated
- 37FFh "NPIDNF_NERR" network path not found
- 38FFh "SP_NERR" server is paused
- 39FFh "TMNM_NERR" too many remote user names
- 3AFFh "DUPD_NERR" duplicate network device
- 3BFFh "DIU_NERR" shared device in use, can't delete
- 3CFFh "NNWD_NERR" network name was deleted
- 3DFFh "NPFS_NERR" not enough space for print file
- 3EFFh "NNNF_NERR" network name not found (can't find the call name)
- 3FFFh "NB_NERR" network busy
- 40FFh "NDNLE_NERR" network device no longer exists
- 41FFh "NBCLE_NERR" NetBIOS command limit exceeded
- 42FFh "FINT24_NERR" Fail on INT 24h
- 43FFh "PEXP_NERR" password expired
- 44FFh "NPUP_NERR" new password error
- 45FFh "MAXS_NERR" maximum allowed disk space exceeded
- 46FFh "TDOW_NERR" time-of-day/day-of-week error
- SeeAlso: #03767
- Index: error codes;10Net|10Net;error codes
- --------b-6F00-------------------------------
- INT 6F - HP Vectra EX-BIOS - "F_ISR" (internal) - RESPOND TO LOGICAL ISR
- AH = 00h
- BP = ID for driver (see #03741)
- DH = data type (see #03742)
- DL = physical device driver's index (driver ID / 6)
- BX,CX = data
- ES:0000h -> physical device's Describe Record (see #03749)
- ---keypress event data---
- BH = keyboard state (only if bit 5 of DH set) (see #03743)
- BL = scancode (if bit 4 of DH clear)
- CX = number of scancodes in list (if bit 4 of DH set)
- ES:SI -> scancode list (if bit 4 of DH set)
- ---motion event data---
- BX = new X position (abs device) or X increment (relative device)
- CX = new Y position (abs device) or Y increment (relative device)
- ---button event data
- BL = button information
- bits 15-8 reserved
- bit 7: button state (0 = down, 1 = up)
- bits 6-0: button number (0-7)
- BH = reserved
- Return: AH = status (see #03744)
- BP,DS destroyed
- ---if device is keyboard translator---
- BL = translated scancode
- BH = new keyboard state (if DH bit 5 set) (see #03743)
- DH = new scancode type (see #03742)
- Notes: INT 6F corresponds to IRQ23 on the original HP Vectra AT, which is
- unavailable because of its use as a BIOS extension software interrupt
- the INT 6F handler consists of an instruction to load DS with the
- driver's data segment followed by an indexed far jump using BP to
- select the destination vector; since the interrupt handler is
- located immediately following the dispatch table, the HP_VECTOR_TABLE
- may be found by looking at offset 0000h in the INT 6F segment, and
- its size is equal to the offset of the interrupt handler
- each entry in the HP_VECTOR table consists of a DWORD for the driver's
- entry point address and a WORD for the driver's data segment
- this function is not user-callable, as it is a response to a physical
- event, and assumes that the caller has already handled the physical
- interrupt and updated the Describe Record (see #03749) to reflect
- the event
- SeeAlso: INT 6C"HP Vectra",INT 6F/AX=0200h"HP Vectra"
- (Table 03741)
- Values for HP Vectra EX-BIOS driver ID:
- 0000h V_SCOPY (null driver, but DS value points at system copyright string)
- 0006h V_DOLITTLE (null driver)
- 000Ch V_PNULL (null driver)
- 0012h V_SYSTEM
- 0018h reserved
- 001Eh V_S8259
- 0024h reserved
- 002Ah V_SINPUT
- 0030h reserved
- 0036h V_QWERTY (keyboard translator)
- 003Ch V_SOFTKEY (keyboard translator)
- 0042h V_FUNCTION (keyboard translator)
- 0048h V_NUMPAD (keyboard translator)
- 004Eh V_CCP (keyboard translator)
- 0054h V_SVIDEO
- 005Ah V_STRACK
- 0060h V_EVENT_TOUCH
- 0066h V_EVENT_TABLET
- 006Ch V_EVENT_POINTER
- 0072h reserved
- 0078h reserved
- 007Eh reserved
- 0084h reserved
- 008Ah V_CCPCUR (keyboard translator)
- 0090h V_RAW (keyboard translator)
- 0096h V_CCPNUM (keyboard translator)
- 009Ch V_OFF (keyboard translator)
- 00A2h V_CCPGID (translator: cursor control pad keys to GID data)
- 00A8h V_SKEY2FKEY (keyboard translator)
- 00AEh V_8041
- 00B4h V_PGID_CCP
- 00BAh C_LTABLET
- 00C0h V_LPOINTER (pointing device: mouse, etc.)
- 00C6h V_LTOUCH (touch screen)
- 00CCh V_LHPMOUSE
- 00D2h ???
- ...
- 0102h ???
- 0108h V_LNULL
- 010Eh reserved
- 0114h V_HPHIL
- 011Ah-01C2h reserved
- 016Eh V_SCANDOOR (scancode management chip driver) (ES/QS/RS only)
- 01C8h-0228h available
- (Table 03742)
- Values for HP Vectra EX-BIOS ISR data type:
- 00h reserved "T_KC_R0"
- 01h reserved "T_KC_R1"
- 02h ASCII data
- 03h reserved "T_KC_R3"
- 04h HP150 keyboard (ITF) scancode
- 05h reserved "T_KC_R5"
- 06h device-definable type
- 07h HP Vectra keyboard set
- 08h IBM AT scancode set
- 09h button data
- 0Ah IBM PC scancode set
- 0Bh Softkey keypad (F1-F8)
- 0Ch function key keypad (F1-F10)
- 0Dh HP Cursor Control Pad keypad
- 0Eh Qwerty keypad
- 0Fh Numeric keypad
- 1xh bit 4 set: string of CX scancode of type 0xh at ES:SI
- 2xh bit 5 set: BH contains current keyboard state
- 40h signed 8-bit relative data
- 41h signed 16-bit relative data
- 42h unsigned 8-bit absolute data
- 43h unsigned 16-bit absolute data
- 45h specially-formed data (80x25) generated by V_LTOUCH
- 46h specially-formed data (640x200) generated by V_LTABLET
- 47h specially-formed data (640x200) generated by V_LPOINTER
- Bitfields for HP Vectra EX-BIOS keyboard state:
- Bit(s) Description (Table 03743)
- 0 Alt pressed
- 1 Left Shift pressed
- 2 Right Shift pressed
- 3 Ctrl pressed
- 4 CapsLock active
- 5 NumLock active
- 6 Right unlabeled key pressed (some international keyboards)
- 7 Left unlabeled key pressed (some international keyboards)
- SeeAlso: #00582
- (Table 03744)
- Values for HP Vectra EX-BIOS status:
- 00h successful
- 02h unsupported function
- 04h not serviced
- 06h done (no further processing should be performed on the ISR event)
- F2h device is out of paper
- F4h device is offline
- F6h no more space for more drivers
- F8h driver is busy
- FAh bad parameter
- FEh operation failed
- Note: status codes are always even; negative values (>= 80h) indicate errors
- while positive values indicate exceptional conditions
- Format of HP EX-BIOS driver header data:
- Offset Size Description (Table 03745)
- 00h WORD driver attributes (see #03746)
- 02h WORD string index of driver's name
- 04h WORD driver's default logical device vector (see #03741)
- 06h WORD driver's parent class (bitset) (see #03747)
- 08h WORD driver's child class (bitset)
- 0Ah WORD driver's parent vector
- 0Ch WORD driver's child vector
- 0Eh BYTE major subaddress
- 0Fh BYTE minor subaddress
- Notes: this structure is located at offset 0 in the driver's data segment,
- which in turn may be read from the HP_VECTOR_TABLE (refer to note in
- main entry)
- only the first WORD is required, and everything from offset 6 onward
- is only required if the device wishes to perform device mapping
- SeeAlso: #03748,#03749
- Bitfields for HP EX-BIOS driver header attributes:
- Bit(s) Description (Table 03746)
- 15 this is a complete driver header
- 14 "ATR_DEVCFG" reserved
- 13 driver can be mapped with the parent vector at offset 0Ah
- 12 driver can be mapped with the child vector at offset 0Ch
- 11-9 driver type
- 000 reserved vector
- 001 free vector
- 010 EX-BIOS service
- 011 logical driver (mapped from parent to child)
- 100 mappable driver (cannot be last in driver chain)
- 101 mappable driver that is last in driver chain
- 110 input driver (mappable)
- 111 reserved
- 8 "ATR_STRING" reserved
- 7 call SF_START whenever driver is remapped
- 6-5 addressing requirements
- 00 no subaddresses required
- 01 requires major address be stored at offset 0Eh
- 10 requires minor address be stored at offset 0Fh
- 11 required major,minor, and mid addresses (minor in low nybble of
- offset 0Fh, mid address in high nybble of 0Fh)
- 4 driver can be shared between several parent drivers
- 3 driver can be shared between several child drivers
- 2 this driver header is in ROM
- 1 "ATR_YIELD" reserved
- 0 reserved
- SeeAlso: #03745,#03747
- Bitfields for HP EX-BIOS driver class:
- Bit(s) Description (Table 03747)
- 15 maps F1 to F8 softkeys
- 14 keyboard
- 13 cursor pad
- 12 console device
- 11 serial output device (may be capable of limited input)
- 10 "CL_COMM" reserved
- 9 interfaces multiple resources transparent to operating system
- 8 serial output device filter (can be mapped between logical and physical
- driver to perform translations)
- 7 addressed block device
- 6 priority boot device
- 5 logical graphics input device
- 4 physical graphics input device (can map to child of another driver)
- 3 "CL_GID" can map to an event
- 2 physical touch device
- 1 reserved
- 0 class extension bit
- Note: special values: FFFFh maps to all other devices (V_PNULL), and 0000h
- maps to no other driver
- SeeAlso: #03745
- Format of HP EX-BIOS global data area:
- Offset Size Description (Table 03748)
- 00h 20 BYTEs reserved
- 14h BYTE sound driver status
- 15h BYTE number of pending key clicks (max 4) (see AH=34h/BP=0012h)
- 16h BYTE current tick duration scaling factor
- 17h BYTE current key click volume
- 18h WORD current beep period (10 us increments) (see AH=3Ch/BP=0012h)
- 1Ah WORD current beep duration (10 us increments)
- 1Ch BYTE number of pending beep functions (max 4) (see AH=3Ah/BP=0012h)
- 1Dh BYTE reserved
- 1Eh WORD next unused string index number
- 20h ... reserved
- SeeAlso: #03745
- Format of HP EX-BIOS Driver Describe Record:
- Offset Size Description (Table 03749)
- 00h 16 BYTEs EX-BIOS driver header data (see #03745)
- 10h BYTE device GID type
- bits 7-4: device type
- bits 3-0: physical device link address
- 11h BYTE physical device ID (see #03751)
- 12h WORD logical device status bits (see #03750)
- 14h BYTE physical device vector number (driver ID / 6)
- 15h BYTE maximum number of axes reported (0-2)
- 16h BYTE device class
- bits 7-4: current class
- bits 3-0: default class
- 17h BYTE number of buttons/prompts
- bits 7-4: number of prompts
- bits 3-0: number of buttons
- 18h BYTE reserved
- 19h BYTE (physical devices only) maximum output burst length
- 1Ah BYTE (physical devices only) number of write registers
- 1Bh BYTE (physical devices only) number of read registers
- 1Ch BYTE button transition flags (bit 0 = button0, etc.)
- 1Dh BYTE current button states (bit 0 = button0, etc.)
- 1Eh WORD device resolution
- 20h WORD maximum x-axis count
- 22h WORD maximum y-axis count
- 24h WORD X position data for absolute devices
- 26h WORD Y position data for absolute devices
- 28h WORD X delta for relative devices
- 2Ah WORD Y delta for relative devices
- 2Ch WORD (logical devices only) X-axis scaling accumulator
- (fraction of one logical unit)
- 2Eh WORD (logical devices only) Y-axis scaling accumulator
- (fraction of one logical unit)
- Bitfields for HP logical device status flags:
- Bit(s) Description (Table 03750)
- 15-5 reserved
- 4 event enabled
- 3 tracking enabled
- 2 clipping enabled
- 1 button error occurred
- 0 interrupt in progress
- SeeAlso: #03749
- (Table 03751)
- Values for HP-HIL device ID:
- 00h-02h reserved
- 03h Swiss-French keyboard
- 04h-06h reserved
- 07h Canadian-English keyboard
- 08h-0Ah reserved
- 0Bh Italian keyboard
- 0Ch reserved
- 0Dh Dutch keyboard
- 0Eh Swedish keyboard
- 0Fh German keyboard
- 10h-12h reserved
- 13h Spanish keyboard
- 14h reserved
- 15h Belgian (Flemish) keyboard
- 16h Finnish keyboard
- 17h UK keyboard
- 18h French-Canadian keyboard
- 19h Swiss-German keyboard
- 1Ah Nerwegian keyboard
- 1Bh Frensh keyboard
- 1Ch Danish keyboard
- 1Dh Katakana keyboard
- 1Eh Latin American-Spanish keyboard
- 1Fh US-American keyboard
- 20h-2Bh reserved
- 2Ch-2Fh tone generator
- 30h-3Fh reserved
- 40h-5Bh reserved (character entry)
- 5Ch-5Fh barcode reader
- 60h-67h reserved (relative positions)
- 68h-6Bh mouse
- 6Ch-6Fh trackball
- 70h-7Fh reserved (relative positions)
- 80h-87h reserved (absolute positions)
- 88h-8Bh touchpad
- 8Ch-8Fh touch screen
- 90h-97h graphics tablet
- 98h-9Fh reserved (absolute positions)
- A0h-BFh compressed keyboard (91-93 keys)
- C0h-DFh extended keyboard (107-109 keys)
- E0h-FFh standard keyboard (85-87 keys)
- --------N-6F01-------------------------------
- INT 6F - 10NET - LOGOFF
- AH = 01h
- DS:DX -> superstation ID or nulls (12 bytes)
- Return: CX = number of files closed
- AX = status (see also #03740)
- 08FFh superstation ID not already logged in
- SeeAlso: AH=00h"10NET",AH=81h
- --------N-6F02-------------------------------
- INT 6F - 10NET - STATUS OF NODE
- AH = 02h
- DS:DX -> 512-byte status record (see #03753)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #03740)
- SeeAlso: INT 21/AX=5E01h"10NET"
- (Table 03752)
- Values for 10NET station type:
- 00h workstation
- 01h superstation
- 02h gateway station
- 03h gateway active
- 04h logged into multiple superstations
- 05h reserved
- Format of 10NET node status record:
- Offset Size Description (Table 03753)
- 00h 8 BYTEs user name (0 if none)
- 08h BYTE station type (see #03752)
- 09h 24 BYTEs list of superstations logged into more than one superstation
- 21h 12 BYTEs node ID
- 2Dh WORD message count for this station (send for user node, receive for
- superstations)
- ---for superstations only---
- 2Fh WORD drives allocated (bit 0=A:, bit 1=B:,...)
- 31h BYTE user service flags (see #03754)
- 32h BYTE printers allocated (bit 0=LPT1,...)
- 33h BYTE number of unprinted spool files
- 34h BYTE number of opened files
- 35h BYTE number of logged on nodes
- 36h BYTE primary drive (1=A:)
- 37h BYTE reserved
- 38h N BYTEs list of logged on node IDs (each 12 bytes, max 37 IDs)
- 1F4h 3 BYTEs time: sec/min/hrs
- 1F7h 3 BYTEs date: day/mon/year-1980
- Bitfields for 10NET user service flags:
- Bit(s) Description (Table 03754)
- 7 gate
- 6 print permit on
- 4 SUBMIT is on
- 3 mail waiting for node
- 2 calendar waiting for you
- 1 news waiting for you
- 0 mail waiting for you
- --------b-6F0200-----------------------------
- INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_INIT" - START INITIALIZING DRIVER
- AX = 0200h
- BP = driver ID (see #03741)
- BX = "last-used DS" value from HP global data area (see #03748)
- Return: AH = status (see #03744)
- BX = new "last-used DS" value
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AX=0202h,AH=0Ch"F_INS_FIXOWNDS"
- --------b-6F0202-----------------------------
- INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_START" - COMPLETE DRIVER INITIALIZ.
- AX = 0202h
- BP = driver ID (see #03741)
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0204h"HP Vectra"
- --------W-6F0204-----------------------------
- INT 6F C - MS Windows 3.0 - DOS APPLICATION SWITCH HOOK
- AX = 0204h
- Return: AX = status
- 0000h switch is allowed
- other switch not allowed
- Note: intercepting this call will allow a DOS application to ensure that
- Windows will not switch away from it.
- --------b-6F0204-----------------------------
- INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_REPORT_STATE" - GET DRIVER STATE
- AX = 0204h
- BP = driver ID (see #03741)
- Return: AH = status (see #03744)
- DX = device state from Logical Describe Record (see #03749,#03755)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0206h"HP Vectra"
- Bitfields for HP Vectra V_HPHIL driver state:
- Bit(s) Description (Table 03755)
- 0 link configuration in progress
- 1 reserved
- 2 no devices attached
- 3 general failure
- 4,5 reserved
- 6 HP-HIL driver open
- 7 reserved
- 8 link has been reconfigured
- 9 error during output request
- 10 reserved
- 11 output request complete
- 12 timeout
- 13-15 reserved
- --------b-6F0206-----------------------------
- INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_VERSION_DESC" - GET DRIVER VERSION
- AX = 0206h
- BP = driver ID (see #03741)
- Return: AH = status (see #03744)
- BX = driver release date code
- (BL = BCD years since 1960, BH = BCD week number within year)
- CX = length of version string
- ES:DI -> version string
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0204h"HP Vectra",AX=0208h
- --------b-6F0208-----------------------------
- INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_DEF_ATTR" - RESET TO DEFAULT ATTR
- AX = 0208h
- BP = driver ID (see #03741)
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=020Ah,AX=020Ch
- --------b-6F020A-----------------------------
- INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_GET_ATTR" - GET CURRENT ATTRIBUTES
- AX = 020Ah
- BP = driver ID (see #03741)
- Return: AH = status (see #03744)
- BX,CX = current attributes
- BP,DS destroyed
- ---for V_LTOUCH, V_LPOINTER---
- BX = logical width
- CX = logical height
- SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Ch
- --------b-6F020C-----------------------------
- INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_SET_ATTR" - SET DEVICE ATTRIBUTES
- AX = 020Ch
- BP = driver ID (see #03741)
- BX,CX = new attributes
- ---for V_LTOUCH, V_LPOINTER---
- BX = new logical width
- CX = new logical height
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Ah
- --------b-6F020E-----------------------------
- INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_OPEN" - RESERVE DRIVER FOR ACCESS
- AX = 020Eh
- BP = driver ID (see #03741) for V_HPHIL, others
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: place device in open state, which allows output to the device
- SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=0210h
- --------b-6F0210-----------------------------
- INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_CLOSE" - RELEASE DRIVER
- AX = 0210h
- BP = driver ID (see #03741) for V_HPHIL, others
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: place device in closed state, which disallows output to the device
- SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Eh
- --------b-6F0212-----------------------------
- INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_TIMEOUT" - REPORT REQUESTED TIMEOUT
- AX = 0212h
- BP = driver ID (see #03741)
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: report to driver that a previously-requested timeout interval has
- expired
- SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Eh,AX=0214h,AX=0216h
- --------b-6F0214-----------------------------
- INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_INTERVAL" - 60 HZ INTERVAL EXPIRED
- AX = 0214h
- BP = driver ID (see #03741)
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: report to driver that a previously-requested 60 Hz interval has
- expired
- SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Eh,AX=0212h,AX=0216h
- --------b-6F0216-----------------------------
- INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_TEST" - PERFORM HARDWARE TEST
- AX = 0216h
- BP = driver ID (see #03741)
- Return: AH = status (see #03744)
- BP,DS destroyed
- ---on failure---
- CX = length of reason string
- ES:DI -> string describing error
- SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Eh,AX=0212h,AX=0214h
- --------N-6F03-------------------------------
- INT 6F - 10NET - GET ADDRESS OF CONFIGURATION TABLE
- AH = 03h
- DS:DI -> node ID (optional)
- Return: ES:BX -> configuration table (see #03756)
- SeeAlso: AH=13h,INT 21/AX=5E01h"10NET"
- Format of 10NET configuration table:
- Offset Size Description (Table 03756)
- -41 WORD local device table address
- -39 WORD extended network error mapping table address
- -37 WORD shared device table address
- -35 WORD mounted device table address
- -33 BYTE receive buffer counter
- -32 BYTE collect buffer counter
- -31 WORD TUF address
- -29 BYTE enable flag
- -28 BYTE FCB keep flag
- -27 WORD reserved
- ---up to here, 10NET v3.3---
- -25 WORD count of dropped Send6F
- -23 WORD buffer start address
- -21 WORD comm driver base address
- -19 WORD send/receive retry count
- -17 BYTE number of 550ms loops before timeout
- -16 WORD UFH address
- -14 WORD CDIR address
- -12 WORD LTAB address
- -10 WORD SFH address
- -8 WORD FTAB address
- -6 WORD RLTAB address
- -4 WORD SMI address
- -2 WORD NTAB address
- 00h WORD address of first CT_DRV
- 02h BYTE number of DRV entries
- 03h 8 BYTEs login name
- 0Bh 12 BYTEs node ID (blank-padded)
- 17h 6 BYTEs node address
- 1Dh BYTE flag
- 1Eh BYTE CT_CFLG (chat permit)
- bit 1: sound bell
- bit 0: CHAT permit
- 1Fh BYTE CT_PSFLG (see #03757)
- 20h BYTE in 10Net flag
- 21h WORD receive message count
- 23h WORD send message count
- 25h WORD retry count
- 27h WORD failed count
- 29h WORD driver errors
- 2Bh WORD dropped responses/CHATs
- 2Dh 9 BYTEs LIST ID/NTAB address (3 entries--LPT1-3)
- 36h 6 BYTEs AUX ID/NTAB address (2 entries--COM1-2)
- 3Ch BYTE active CB channel
- 3Dh BYTE received 6F messages on queue
- 3Eh 9 BYTEs activity counters for channels 1-9
- ---beyond here, 10NET v3.3---
- 47h BYTE bit 0: RS232 gate
- bit 1: Send6F gate (user set)
- 48h DWORD pointer into gate (user set)
- 4Ch DWORD pointer into 10Net send
- 50h N WORDs addresses of timer blocks
- Bitfields for CT_PSFLG:
- Bit(s) Description (Table 03757)
- 5 PRINT permit
- 4 KB initiated
- 3 CHAT called FOXPTRM
- 2 SUBMIT active
- 1 SUBMIT received
- 0 SUBMIT permit
- --------N-6F04-------------------------------
- INT 6F - 10NET - SEND
- AH = 04h
- DS:BX -> send record (see #03758)
- DS:DX -> data (max 1024 bytes)
- Return: CF clear if successful
- CF set on error
- AX = error code (see #03740)
- SeeAlso: AH=05h"10NET",AH=09h"10NET",AH=0Ah"10NET"
- Format of 10NET send record:
- Offset Size Description (Table 03758)
- 00h 12 BYTEs receiving node's ID
- if first byte has high-order bit set, message is directed to
- the CT_RGATE vector at the receiver
- if second byte is 00h, first byte is taken as a CB
- channel number and delivered to all nodes on same channel
- 0Ch WORD length of data at DX
- --------b-6F04--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_INS_BASEHPVT" - GET HP_VECTOR_TABLE ADDRESS
- AH = 04h
- BP = 0012h (driver ID for V_SYSTEM)
- Return: AH = status (see #03744)
- ES = segment of HP_VECTOR_TABLE (see also AH=00h"HP Vectra")
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AH=06h"F_INS_XCHGFIX",AH=08h"F_INS_XCHGRSVD"
- --------b-6F04--BP005A-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_TRACK_INIT" - RESET TRACKING DRIVER TO DEFAULTS
- AH = 04h
- BP = 005Ah (driver ID for V_STRACK)
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AH=06h"F_TRACK_ON",AH=08h"F_TRACK_OFF"
- SeeAlso: AH=0Ah"F_DEF_MASKS",AH=0Ch"F_SET_LIMITS_X"
- --------b-6F0400-----------------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_LOCK" - RESERVE SUB-ADDRESSES
- AX = 0400h
- BP = driver ID (see #03741)
- DH,DL = major,minor address (optional)
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: reserve specified sub-addresses on an already-allocated driver for
- exclusive access
- Note: this function is documented as present but unsupported in the drivers
- V_LTABLET, V_LPOINTER, and V_LTOUCH
- SeeAlso: AX=0200h"HP Vectra",AX=0402h"SF_UNLOCK"
- --------b-6F0400BP001E-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_ENABLE_SVC" - UNMASK 8041 SVC INT
- AX = 0400h
- BP = 001Eh (driver ID for V_S8259)
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AX=0402h"SF_DISABLE_SVC",AX=0404h"SF_ENABLE_KBD"
- SeeAlso: AX=0408h"SF_ENABLE_HPHIL"
- --------b-6F0400BP002A-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DEF_LINKS" - SET DEFAULT PARENTS
- AX = 0400h
- BP = 002Ah (driver ID for V_SINPUT)
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: set the parent vectors in the physical device driver headers to their
- system defaults
- SeeAlso: AH=00h"HP Vectra",AX=0402h/BP=002Ah,AX=0404h/BP=002Ah
- SeeAlso: AH=06h"F_INQUIRE"
- --------b-6F0400BP0054-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_ID_HP" - INSTALLATION CHECK
- AX = 0400h
- BP = 0054h (driver ID for V_SVIDEO)
- ???
- Return: AH = status (see #03744)
- BX = 4850h ('BP')
- BP,DS destroyed
- ???
- Note: only partially documented
- SeeAlso: AX=0402h/BP=0054h,AX=0404h/BP=0054h,AX=0406h/BP=0054h
- SeeAlso: AX=0408h/BP=0054h,AX=040Ah/BP=0054h
- --------b-6F0400BP00CC-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_MOUSE_COM" - INIT INT 33 HANDLER
- AX = 0400h
- BP = 00CCh (driver ID for V_LHPMOUSE)
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AX=0402h/BP=00CCh
- --------b-6F0402-----------------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_UNLOCK" - RELEASE SUB-ADDRESSES
- AX = 0402h
- BP = driver ID (see #03741)
- DH,DL = major,minor address (optional)
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: release specified sub-addresses from exclusive access
- Note: this function is documented as present but unsupported in the drivers
- V_LTABLET, V_LPOINTER, and VLTOUCH
- SeeAlso: AX=0200h"HP Vectra",AX=0400h"SF_LOCK"
- --------b-6F0402BP001E-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DISABLE_SVC" - MASK 8041 SVC INT
- AX = 0402h
- BP = 001Eh (driver ID for V_S8259)
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=001Eh,AX=0406h/BP=001Eh
- SeeAlso: AX=040Ah/BP=001Eh
- --------b-6F0402BP002A-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_GET_LINKS" - GET DRIVER LINK FIELDS
- AX = 0402h
- BP = 002Ah (driver ID for V_SINPUT)
- ES:SI -> buffer for link table (see #03759)
- Return: AH = status (see #03744)
- ES:SI buffer filled
- BP,DS destroyed
- Desc: get the parent and child vectors for the seven supported physical
- device drivers
- SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_DEF_LINKS",AX=0404h"SF_SET_LINKS"
- SeeAlso: AH=06h"F_INQUIRE"
- Format of HP Vectra EX-BIOS driver link table:
- Offset Size Description (Table 03759)
- 00h BYTE vector number of HP-HIL device #1's child
- 01h BYTE vector number of HP-HIL device #1's parent
- ...
- 0Ch BYTE vector number of HP-HIL device #7's child
- 0Dh BYTE vector number of HP-HIL device #7's parent
- --------b-6F0402BP0054-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_GET_INFO" - GET DISPLAY INFO
- AX = 0402h
- BP = 0054h (driver ID for V_SVIDEO)
- ???
- Return: AH = status (see #03744)
- BP,DS destroyed
- ???
- Note: only partially documented
- SeeAlso: AX=0400h/BP=0054h,AX=0404h/BP=0054h,AX=0406h/BP=0054h
- SeeAlso: AX=0408h/BP=0054h,AX=040Ah/BP=0054h
- --------b-6F0402BP00CC-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_MOUSE_COM" - FORCE INT 33 INIT
- AX = 0402h
- BP = 00CCh (driver ID for V_LHPMOUSE)
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: set up INT 33 even if no mouse is installed
- SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=00CCh
- --------b-6F0404-----------------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_TRACK_ON" - GRAPHICS CURSOR ON
- AX = 0404h
- BP = driver ID (see #03741) for V_LPOINTER, V_LTOUCH, V_LTABLET
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: enables graphics cursor tracking of the logical device's movement
- SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_LOCK",AX=0406h"SF_TRACK_OFF"
- --------b-6F0404BP001E-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_ENABLE_KBD" - UNMASK 8041 OBF INT
- AX = 0404h
- BP = 001Eh (driver ID for V_S8259)
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_ENABLE_SVC",AX=0406h"SF_DISABLE_KBD"
- SeeAlso: AX=0408h"SF_ENABLE_HPHIL"
- --------b-6F0404BP002A-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_SET_LINKS" - SET DRIVER LINK FIELDS
- AX = 0404h
- BP = 002Ah (driver ID for V_SINPUT)
- ES:SI -> buffer containing link table (see #03759)
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: specify the parent and child vectors for the seven supported physical
- device drivers
- SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_DEF_LINKS",AX=0402h"SF_GET_LINKS"
- SeeAlso: AH=06h"F_INQUIRE"
- --------b-6F0404BP0054-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_SET_INFO" - SET EXT-CTRL INFO
- AX = 0404h
- BP = 0054h (driver ID for V_SVIDEO)
- ???
- Return: AH = status (see #03744)
- BP,DS destroyed
- ???
- Note: only partially documented
- SeeAlso: AX=0400h/BP=0054h,AX=0402h/BP=0054h,AX=0406h/BP=0054h
- SeeAlso: AX=0408h/BP=0054h,AX=040Ah/BP=0054h
- --------b-6F0406-----------------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_TRACK_OFF" - GRAPHICS CURSOR OFF
- AX = 0406h
- BP = driver ID (see #03741) for V_LPOINTER, V_LTOUCH, V_LTABLET
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: disables graphics cursor tracking of the logical device's movement
- SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_LOCK",AX=0404h"SF_TRACK_ON"
- SeeAlso: AX=0408h"SF_CREATE_EVENT"
- --------b-6F0406BP001E-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DISABLE_KBD" - MASK 8041 OBF INT
- AX = 0406h
- BP = 001Eh (driver ID for V_S8259)
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AX=0402h"SF_DISABLE_SVC",AX=0404h"SF_ENABLE_KBD"
- SeeAlso: AX=040Ah"SF_DISABLE_HPHIL"
- --------b-6F0406BP0054-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_MOD_INFO" - SET EXT-CTRL REG
- AX = 0406h
- BP = 0054h (driver ID for V_SVIDEO)
- ???
- Return: AH = status (see #03744)
- BP,DS destroyed
- ???
- Note: only partially documented
- SeeAlso: AX=0400h/BP=0054h,AX=0402h/BP=0054h,AX=0404h/BP=0054h
- SeeAlso: AX=0408h/BP=0054h,AX=040Ah/BP=0054h
- --------b-6F0406BP0114-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_RECONFIGURE" - RECONFIG LINK
- AX = 0406h
- BP = 0114h (driver ID for V_HPHIL)
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AX=020Eh,AX=0408h"SF_CRV_WR_PROMPTS"
- SeeAlso: AX=0410h"SF_CRV_SELF_TEST"
- --------b-6F0408-----------------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CREATE_EVENT" - SET EVENT HANDLER
- AX = 0408h
- BP = driver ID (see #03741) for V_LPOINTER, V_LTOUCH, V_LTABLET
- ES:SI -> new event handler (see AH=00h"HP Vectra")
- DX = new handler's DS
- Return: AH = status (see #03744)
- ES:SI -> old event handler
- DX = old handler's DS
- BP,DS destroyed
- Desc: specify routine to be called on logical device events
- Note: when events occur, the event handler is called with the same registers
- as the "F_ISR" function on AH=00h"HP Vectra"
- SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_LOCK",AX=0406h"SF_TRACK_OFF"
- SeeAlso: AX=040Ah"SF_EVENT_ON",AX=040Ch"SF_EVENT_OFF",AH=06h"F_SAMPLE"
- --------b-6F0408BP001E-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_ENABLE_HPHIL" - UNMASK HP-HIL INT
- AX = 0408h
- BP = 001Eh (driver ID for V_S8259)
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=001Eh,AX=0404h/BP=001Eh
- SeeAlso: AX=040Ah/BP=001Eh
- --------b-6F0408BP0054-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_GET_RES" - GET VIDMODE RESOLUTN
- AX = 0408h
- BP = 0054h (driver ID for V_SVIDEO)
- ???
- Return: AH = status (see #03744)
- BP,DS destroyed
- ???
- Note: only partially documented
- SeeAlso: AX=0400h/BP=0054h,AX=0402h/BP=0054h,AX=0404h/BP=0054h
- SeeAlso: AX=0406h/BP=0054h,AX=040Ah/BP=0054h
- --------b-6F0408BP0114-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_WR_PROMPTS" - WRITE PROMPT
- AX = 0408h
- BP = 0114h (driver ID for V_HPHIL)
- BX = device address indicator (see #03760)
- DH = HP HIL device major address
- DL = prompt number
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AX=020Eh,AX=0406h/BP=0114h,AX=040Ah/BP=0114h
- Bitfields for HP Vectra V_HPHIL device address indicator:
- Bit(s) Description (Table 03760)
- 15-14 reserved
- 13 address in DH is valid (must be set, clear is reserved)
- 12 valid value in DL
- 11-0 reserved
- --------b-6F040A-----------------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_EVENT_ON" - ENABLE EVENT HANDLER
- AX = 040Ah
- BP = driver ID (see #03741) for V_LPOINTER, V_LTOUCH, V_LTABLET
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AX=0408h"SF_CREATE_EVENT",AX=040Ch"SF_EVENT_OFF"
- SeeAlso: AX=040Eh"SF_CLIPPING_ON"
- --------b-6F040ABP001E-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DISABLE_HPHIL" - MASK HP-HIL INT
- AX = 040Ah
- BP = 001Eh (driver ID for V_S8259)
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AX=0402h/BP=001Eh,AX=0406h/BP=001Eh
- SeeAlso: AX=0408h/BP=001Eh
- --------b-6F040ABP0054-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_SET_MODE" - SET VIDEO MODE
- AX = 040Ah
- BP = 0054h (driver ID for V_SVIDEO)
- ???
- Return: AH = status (see #03744)
- BP,DS destroyed
- ???
- Note: only partially documented
- SeeAlso: AX=0400h/BP=0054h,AX=0402h/BP=0054h,AX=0404h/BP=0054h
- SeeAlso: AX=0406h/BP=0054h,AX=0408h/BP=0054h
- --------b-6F040ABP00AE-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CREATE_INTR" - CREATE INTERVAL ENTRY
- AX = 040Ah
- BP = 00AEh (driver ID for V_8041)
- BH = vector number of driver to be called regularly (vector addr / 6)
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: add a driver to the list (max eight) of drivers which will be called
- by the HP's 8041 at 60 Hz
- Note: the newly added entry will not be called until enabled with
- AX=040Eh/BP=00AEh
- SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
- SeeAlso: AX=0412h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
- --------b-6F040ABP0114-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_WR_ACK" - ACKNOWLEDGE DEVICE
- AX = 040Ah
- BP = 0114h (driver ID for V_HPHIL)
- BX = device address indicator (see #03760)
- DH = HP HIL device major address
- DL = acknowledge number (specific if 01h-07h, generic otherwise)
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AX=0406h/BP=0114h,AX=040Ch/BP=0114h
- --------b-6F040C-----------------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_EVENT_OFF" - DISABLE EVENT HANDLER
- AX = 040Ch
- BP = driver ID (see #03741) for V_LPOINTER, V_LTOUCH, V_LTABLET
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AX=0408h"SF_CREATE_EVENT",AX=040Ah"SF_EVENT_ON"
- --------b-6F040CBP00AE-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DELET_INTR" - DELETE INTERVAL ENTRY
- AX = 040Ch
- BP = 00AEh (driver ID for V_8041)
- BH = vector number of driver to be removed (vector addr / 6)
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: remove a driver to the list (max eight) of drivers which will be called
- by the HP's 8041 at 60 Hz
- SeeAlso: AH=00h"HP Vectra",AX=040Ah/BP=00AEh,AX=0410h/BP=00AEh
- SeeAlso: AX=0412h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
- --------b-6F040CBP0114-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_REPEAT" - SET KEY REPEAT RATE
- AX = 040Ch
- BP = 0114h (driver ID for V_HPHIL)
- BX = device address indicator (see #03760)
- DH = HP HIL device major address
- DL = repeat rate (00h = 30 Hz, 01h = 60 Hz)
- Return: AH = status (see #03744)
- BP,DS destroyed
- Note: this function is only available if the driver is in the open state
- (see AX=020Eh"SF_OPEN")
- SeeAlso: AH=00h"HP Vectra",AX=040Ah/BP=0114h,AX=040Eh/BP=0114h
- --------b-6F040E-----------------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CLIPPING_ON" - ENABLE CLIPPING
- AX = 040Eh
- BP = driver ID (see #03741) for V_LPOINTER, V_LTOUCH, V_LTABLET
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: causes the physical device's motion to be clipped to prevent overflow
- or underflow of the logical position
- SeeAlso: AH=00h"HP Vectra",AX=040Ah"SF_EVENT_ON",AX=0410h"SF_CLIPPING_OFF"
- --------b-6F040EBP00AE-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_ENABL_INTR" - START INTERRUPT SRVICE
- AX = 040Eh
- BP = 00AEh (driver ID for V_8041)
- BH = vector number of driver to be called regularly (vector addr / 6)
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: enable 60 Hz calling of a driver previously added to the list of
- drivers to be called by the HP's 8041
- SeeAlso: AH=00h"HP Vectra",AX=040Ah/BP=00AEh,AX=0410h/BP=00AEh
- SeeAlso: AX=0412h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
- --------b-6F040EBP0114-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_DISABLE_REPEAT" - KEY REPT OFF
- AX = 040Eh
- BP = 0114h (driver ID for V_HPHIL)
- BX = device address indicator (see #03760)
- DH = HP HIL device major address
- Return: AH = status (see #03744)
- BP,DS destroyed
- Note: this function is only available if the driver is in the open state
- (see AX=020Eh"SF_OPEN")
- SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=0114h,AX=0410h/BP=0114h
- SeeAlso: AX=0416h/BP=0114h
- --------b-6F0410-----------------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CLIPPING_OFF" - DISABLE CLIPPING
- AX = 0410h
- BP = driver ID (see #03741) for V_LPOINTER, V_LTOUCH, V_LTABLET
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: disables clipping of the physical device's motion, which may cause
- overflow or underflow of the logical position
- SeeAlso: AH=00h"HP Vectra",AX=040Ah"SF_EVENT_ON",AX=040Eh"SF_CLIPPING_ON"
- --------b-6F0410BP00AE-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DISBL_INTR" - END INTERRUPT SERVICE
- AX = 0410h
- BP = 00AEh (driver ID for V_8041)
- BH = vector number of driver (vector addr / 6)
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: disable 60 Hz interval calls to the specified driver
- SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
- SeeAlso: AX=0412h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
- --------b-6F0410BP0114-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_SELF_TEST" - PERFORM SELFTEST
- AX = 0410h
- BP = 0114h (driver ID for V_HPHIL)
- BX = device address indicator (see #03760)
- DH = HP HIL device major address
- ES:SI -> buffer for result
- Return: AH = status (see #03744)
- CX = number of bytes in buffer
- BP,DS destroyed
- Note: this function is only available if the driver is in the open state
- (see AX=020Eh"SF_OPEN")
- SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=0114h,AX=0412h/BP=0114h
- --------b-6F0412BP00AE-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_SET_RAMSW" - SET RAM SWITCH IN 8041
- AX = 0412h
- BP = 00AEh (driver ID for V_8041)
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: sets a flag in the 8041 indicating that a second 256K bank of RAM
- on the motherboard is enabled
- SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
- SeeAlso: AX=0414h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
- --------b-6F0412BP0114-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_REPORT_STATUS" - GET DEVSTATUS
- AX = 0412h
- BP = 0114h (driver ID for V_HPHIL)
- BX = device address indicator (see #03760)
- DH = HP HIL device major address
- ES:SI -> 15-byte buffer for status
- Return: AH = status (see #03744)
- CX = number of bytes returned in buffer
- BP,DS destroyed
- Note: this function is only available if the driver is in the open state
- (see AX=020Eh"SF_OPEN")
- SeeAlso: AH=00h"HP Vectra",AX=0410h/BP=0114h,AX=0414h/BP=0114h
- --------b-6F0414BP00AE-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CLR_RAMSW" - CLEAR 8041 RAM SWITCH
- AX = 0414h
- BP = 00AEh (driver ID for V_8041)
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: clears a flag in the 8041 indicating that a second 256K bank of RAM
- on the motherboard is enabled, causing the second bank to be disabled
- Note: this function should normally never be called
- SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
- SeeAlso: AX=0412h/BP=00AEh,AX=0418h/BP=00AEh,AX=041Ah/BP=00AEh
- --------b-6F0414BP0114-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_REPORT_NAME" - GET DEV NAME
- AX = 0414h
- BP = 0114h (driver ID for V_HPHIL)
- BX = device address indicator (see #03760)
- DH = HP HIL device major address
- ES:SI -> 15-byte buffer for name
- Return: AH = status (see #03744)
- CX = number of bytes returned in buffer
- BP,DS destroyed
- Note: this function is only available if the driver is in the open state
- (see AX=020Eh"SF_OPEN")
- SeeAlso: AH=00h"HP Vectra",AX=0412h/BP=0114h
- --------b-6F0416BP00AE-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_SET_CRTSW" - SET CRT TO MULTIMODE
- AX = 0416h
- BP = 00AEh (driver ID for V_8041)
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: sets a flag in the 8041 indicating that the primary display is the
- Multimode graphics adapter (default)
- SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
- SeeAlso: AX=0412h/BP=00AEh,AX=0418h/BP=00AEh,AX=041Ah/BP=00AEh
- --------b-6F0416BP0114-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_KEYBOARD_REPEAT" - SET TYPEMATIC
- AX = 0416h
- BP = 0114h (driver ID for V_HPHIL)
- BH = what to set (00h typematic rate, 01h delay, 02h both)
- BL = flag (00h = non-CCP keypad, 01h = Cursor Control Pad only)
- DL = rate
- bits 7-4: delay value
- bits 3-0: typematic rate
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AX=040Eh/BP=0114h,AX=0418h/BP=0114h
- --------b-6F0418BP00AE-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CLR_CRTSW" - SET CRT TO MONOCHROME
- AX = 0418h
- BP = 00AEh (driver ID for V_8041)
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: clears a flag in the 8041, indicating that the primary display is the
- monochrome adapter
- SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
- SeeAlso: AX=0414h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
- --------b-6F0418BP0114-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_KEYBOARD_LED" - SET KEYBOARD LEDS
- AX = 0418h
- BP = 0114h (driver ID for V_HPHIL)
- BL = new LED states
- bit 0: scroll lock
- bit 1: NumLock
- bit 2: CapsLock
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AX=040Eh/BP=0114h,AX=0416h/BP=0114h
- --------b-6F041ABP00AE-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_PASS_THRU" - SEND DATA BYTE TO 8041
- AX = 041Ah
- BP = 00AEh (driver ID for V_8041)
- BL = byte to send to 8041
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AX=040Ah/BP=00AEh,AX=040Eh/BP=00AEh
- --------N-6F05-------------------------------
- INT 6F - 10NET - RECEIVE
- AH = 05h
- CX = number of seconds before timeout
- DS:DX -> receive buffer (see #03761)
- Return: CF clear if successful
- AH = FEh if dequeued message is a CB message
- CF set on error
- AX = error code (see #03740)
- SeeAlso: AH=04h"10NET"
- Format of 10NET receive buffer:
- Offset Size Description (Table 03761)
- 00h 12 BYTEs sending node's ID
- 0Ch WORD length of message
- 0Eh N BYTEs message (maximum 1024 bytes)
- --------b-6F06-------------------------------
- INT 6F - HP Vectra EX-BIOS - "F_PUT_BYTE" - WRITE A BYTE OF DATA TO DEVICE
- AH = 06h
- BP = driver ID (see #03741) for V_HPHIL, others
- AL = value to output
- ---if driver is V_HPHIL---
- BX = device address indicator (see #03760)
- DH = HP HIL device major address
- DL = HP-HIL device register (00h-7Fh)
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: output a byte to a specific HP-HIL device register
- Note: this function is only available if the driver is in the open state
- (see AX=020Eh"SF_OPEN")
- SeeAlso: AH=04h"HP Vectra",AH=08h"F_GET_BYTE",AH=0Ah"F_PUT_BUFFER"
- --------b-6F06-------------------------------
- INT 6F - HP Vectra EX-BIOS - "F_SAMPLE" - POLL CURRENT ABSOLUTE POSITION
- AH = 06h
- BP = driver ID (see #03741) for V_LTOUCH, V_LPOINTER, V_LTABLET, etc.
- Return: AH = status (see #03744)
- BX = current logical X position
- CX = current logical Y position
- DL = button transitions (bit N = button N state has changed)
- DH = current button states (bit N = current button N state)
- ES:0000h -> logical device's Describe Record (see #03749)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AX=040Ah"SF_EVENT_ON",AX=040Eh"SF_CLIPPING_ON"
- --------b-6F06--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_INS_XCHGFIX" - EXCH VALUES WITH FIXED VECTOR
- AH = 06h
- BP = 0012h (driver ID for V_SYSTEM)
- BX = vector address
- DX = new value for DS
- ES:DI -> new CS:IP entry point
- Return: AH = status (see #03744)
- DX = old value for DS
- ES:DI -> old CS:IP entry point
- BP,DS destroyed
- Desc: replace an existing EX-BIOS driver at a fixed HPVT location without
- initialization
- SeeAlso: AH=00h"HP Vectra",AH=04h"F_INS_BASEHPVT",AH=08h"F_INS_XCHGRSVD"
- SeeAlso: AH=0Ah"F_INS_XCHGFREE",AH=0Ch"F_INS_FIXOWNDS"
- --------b-6F06--BP002A-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_INQUIRE" - GET DRIVER PHYSICAL DESCRIBE RECORD
- AH = 06h
- BP = 002Ah (driver ID for V_SINPUT)
- AL = HP-HIL physical device number (01h-07h)
- Return: AH = status (see #03744)
- ES:SI -> physical describe record for driver
- BP,DS destroyed
- Note: the returned physical describe record must not be modified
- SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=002Ah,AH=08h/BP=002Ah,AH=0Ah/BP=002Ah
- SeeAlso: AH=0Ch/BP=002Ah
- --------b-6F06--BP005A-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_TRACK_ON" - ENABLE CURSOR TRACKING
- AH = 06h
- BP = 005Ah (driver ID for V_STRACK)
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AH=04h"F_TRACK_INIT",AH=08h"F_TRACK_OFF"
- SeeAlso: AH=0Ah"F_DEF_MASKS",AH=0Ch"F_SET_LIMITS_X"
- --------N-6F07-------------------------------
- INT 6F - 10NET - LOCK HANDLE
- AH = 07h
- BX = file handle
- CX:DX = starting offset in file
- SI = record length
- Return: CF clear if successful
- CF set on error
- AX = error code (see also AH=00h)
- 0002h file not found
- SeeAlso: AH=08h"10NET",AH=0Fh,INT 21/AH=5Ch
- --------N-6F08-------------------------------
- INT 6F - 10NET - UNLOCK HANDLE
- AH = 08h
- BX = file handle
- AL = mode
- 00h unlock all
- 01h unlock record at CX:DX
- Return: CF clear if successful
- CF set on error
- AX = error code (see also AH=00h)
- 0002h file not found
- SeeAlso: AH=07h,AH=0Fh,INT 21/AH=5Ch
- --------b-6F08-------------------------------
- INT 6F - HP Vectra EX-BIOS - "F_GET_BYTE" - READ A BYTE OF DATA FROM DEVICE
- AH = 08h
- BP = driver ID (see #03741) for V_HPHIL (0114h), others
- ---if device is V_HPHIL---
- BX = device address indicator (see #03760)
- DH = HP HIL device major address
- DL = HP-HIL device register (00h-7Fh)
- Return: AH = status (see #03744)
- AL = value read from device
- BP,DS destroyed
- Desc: generic read-byte function; for driver V_HPHIL, retrieves the value
- of a specific HP-HIL device register
- Note: this function is only available if the driver is in the open state
- (see AX=020Eh"SF_OPEN")
- SeeAlso: AH=06h"F_PUT_BYTE",AH=0Ah"F_PUT_BUFFER",AH=0Ch"F_GET_BUFFER"
- --------b-6F08--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_INS_XCHGRSVD" - EXCH VALUES WITH RESRVED VECTOR
- AH = 08h
- BP = 0012h (driver ID for V_SYSTEM)
- DX = new value for DS
- ES:DI -> new CS:IP entry point
- Return: AH = status (00h,F6h) (see also #03744)
- 00h successful
- BX = vector address used
- DX = old value for DS
- ES:DI -> old CS:IP entry point
- BP,DS destroyed
- Desc: exchange the supplied entry point and DS with the values in the next
- reserved entry in the HP_VECTOR_TABLE
- Note: returns AH=F6h if no more reserved vectors are available
- SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=06h/BP=0012h,AH=0Ah/BP=0012h
- SeeAlso: AH=0Ch/BP=0012h
- --------b-6F08--BP002A-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_INQUIRE_ALL" - GET DRIVER STATUS TABLE
- AH = 08h
- BP = 002Ah (driver ID for V_SINPUT)
- ES:SI -> buffer for device status table (see #03762)
- Return: AH = status (see #03744)
- ES:SI buffer filled
- BP,DS destroyed
- Note: the returned physical describe record must not be modified
- SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=002Ah,AH=06h/BP=002Ah,AH=0Ah/BP=002Ah
- SeeAlso: AH=0Ch/BP=002Ah
- Format of HP Vectra HP-HIL physical device status table:
- Offset Size Description (Table 03762)
- 00h BYTE status for HP-HIL device #1
- bit 0: device present
- bits 7-2 reserved
- 01h BYTE device ID for HP-HIL device #1
- ...
- 0Ch BYTE status for HP-HIL device #7
- 0Dh BYTE device ID for HP-HIL device #7
- --------b-6F08--BP005A-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_TRACK_OFF" - DISABLE CURSOR TRACKING
- AH = 08h
- BP = 005Ah (driver ID for V_STRACK)
- Return: AH = status (see #03744)
- BP,DS destroyed
- Note: also removes the graphics cursor sprite from the screen
- SeeAlso: AH=00h"HP Vectra",AH=04h"F_TRACK_INIT",AH=06h"F_TRACK_ON"
- SeeAlso: AH=0Ah"F_DEF_MASKS",AH=0Ch"F_SET_LIMITS_X"
- --------N-6F09-------------------------------
- INT 6F - 10NET - SUBMIT
- AH = 09h
- DS:BX -> submit record (see #03763)
- SeeAlso: AH=04h"10NET"
- Format of 10NET submit record:
- Offset Size Description (Table 03763)
- 00h 12 BYTEs destination node ID (must be logged in)
- 0Ch WORD length+2 of following 'command line' text
- 0Eh N BYTEs command line text (<=100 bytes), system adds CR
- --------N-6F0A-------------------------------
- INT 6F - 10NET - CHAT
- AH = 0Ah
- DS:BX -> control parameters (see #03764)
- DS:DX -> chat message (see #03765)
- SeeAlso: AH=04h"10NET",AH=8Ah
- Format of 10NET chat control parameters:
- Offset Size Description (Table 03764)
- 00h 8 BYTEs sender ID, defaults to node's userID if nulls
- 08h 8 BYTEs destination user ID, 'EVERYONE' may be used
- 10h 12 BYTEs destination node ID
- Format of 10NET chat message:
- Offset Size Description (Table 03765)
- 00h WORD length+2 of following text
- 02h N BYTEs text, max 101 bytes
- --------b-6F0A-------------------------------
- INT 6F - HP Vectra EX-BIOS - "F_PUT_BUFFER" - WRITE A BUFFER TO DEVICE
- AH = 0Ah
- BP = driver ID (see #03741) for V_HPHIL (0114h), others
- CX = number of bytes to write
- ES:DI -> buffer containing data
- ---if driver is V_HPHIL---
- BX = device address indicator (see #03760)
- DH = HP HIL device major address
- DL = HP-HIL device register (00h-7Fh)
- Return: AH = status (see #03744)
- CX = number of unwritten bytes left in buffer
- BP,DS destroyed
- SeeAlso: AH=06h"F_PUT_BYTE",AH=0Ah"F_PUT_BLOCK",AH=0Ch"F_GET_BUFFER"
- SeeAlso: AH=0Eh"F_PUT_WORD"
- --------b-6F0A-------------------------------
- INT 6F - HP Vectra EX-BIOS - "F_PUT_BLOCK" - WRITE BLOCKS TO DEVICE
- AH = 0Ah
- BP = driver ID (see #03741) for block device
- DH = device major number
- DL = device minor number
- ES:DI -> command block (see #03766)
- Return: AH = status (see #03744)
- BX = operation status
- BP,DS destroyed
- SeeAlso: AH=06h"F_PUT_BYTE",AH=0Ah"F_PUT_BUFFER",AH=0Ch"F_GET_BUFFER"
- SeeAlso: AH=0Eh"F_PUT_WORD"
- Format of HP Vectra F_PUT_BLOCK/F_GET_BLOCK command block:
- Offset Size Description (Table 03766)
- 00h DWORD data transfer address
- 04h WORD number of blocks
- 06h DWORD block address (some devices only use low word)
- --------b-6F0A--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_INS_XCHGFREE" - EXCH VALUES WITH FREE VECTOR
- AH = 0Ah
- BP = 0012h (driver ID for V_SYSTEM)
- DX = new value for DS
- ES:DI -> new CS:IP entry point
- Return: AH = status (00h,F6h) (see also #03744)
- 00h successful
- BX = vector address used
- DX = old value for DS
- ES:DI -> old CS:IP entry point
- BP,DS destroyed
- Desc: exchange the supplied entry point and DS with the values in the next
- free entry in the HP_VECTOR_TABLE
- Note: returns AH=F6h if no more reserved vectors are available
- SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=06h/BP=0012h,AH=08h/BP=0012h
- SeeAlso: AH=0Ch/BP=0012h
- --------b-6F0A--BP002A-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_INQUIRE_FIRST" - GET PHYSICAL DRIVER VECTOR
- AH = 0Ah
- BP = 002Ah (driver ID for V_SINPUT)
- Return: AH = status (see #03744)
- BX = vector address for first HP-HIL device
- BP,DS destroyed
- Note: all seven HP-HIL devices use consecutive vectors in the
- HP_VECTOR_TABLE
- SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=002Ah,AH=06h/BP=002Ah,AH=08h/BP=002Ah
- SeeAlso: AH=0Ch/BP=002Ah
- --------b-6F0A--BP005A-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_DEF_MASKS" - DEFINE GRAPHICS CURSOR MASKS
- AH = 0Ah
- BP = 005Ah (driver ID for V_STRACK)
- BH = width of save area in bytes
- BL = hot-spot X coordinate
- CH = height in scan lines
- CL = hot-spot Y coordinate
- ES:SI -> sprite mask (screen mask followed by XOR sprite mask)
- Return: AH = status (see #03744)
- BP,DS destroyed
- Note: the save area is one byte wider than the actual sprite mask; the total
- size of the sprite is at most 144 bytes
- SeeAlso: AH=00h"HP Vectra",AH=04h"F_TRACK_INIT",AH=08h"F_TRACK_OFF"
- SeeAlso: AH=0Ch"F_SET_LIMITS_X",AH=10h"F_PUT_SPRITE",AH=12h"F_REMOVE_SPRITE"
- --------N-6F0B-------------------------------
- INT 6F - 10NET - LOCK SEMAPHORE, RETURN IMMEDIATELY
- AH = 0Bh
- AL = drive number or 0
- ES:SI = Ethernet address or 0
- DS:BX -> 31-byte ASCIZ semaphore name
- Return: AL = status (see #03767)
- Note: same as INT 60/AH=12h
- SeeAlso: AH=0Ch"10NET",INT 60/AH=12h
- (Table 03767)
- Values for 10NET status:
- 00h successful
- 01h semaphore currently locked
- 02h server not responding
- 03h invalid semaphore name
- 04h semaphore list is full
- 05h invalid drive ID
- 06h invalid Ethernet address
- 07h not logged in
- 08h write to network failed
- 09h semaphore already logged in this CPU
- SeeAlso: #03740
- Index: error codes;10-Net|10-Net;error codes
- --------N-6F0C-------------------------------
- INT 6F - 10NET - UNLOCK SEMAPHORE
- AH = 0Ch
- AL = drive number or 0
- ES:SI = Ethernet address or 0
- DS:BX -> 31-byte ASCIZ semaphore name
- Return: AL = status (see also #03767)
- 01h semaphore not locked
- Note: same as INT 60/AH=13h
- SeeAlso: AH=0Bh,INT 60/AH=13h
- --------b-6F0C-------------------------------
- INT 6F - HP Vectra EX-BIOS - "F_GET_BUFFER" - READ A BUFFER OF DATA FROM DEVICE
- AH = 0Ch
- BP = driver ID (see #03741) for V_HPHIL (0114h), others
- CX = number of bytes or blocks to read
- DS:SI -> buffer for received data
- Return: AH = status (see #03744 at AH=00h"HP Vectra")
- BP,DS destroyed
- SeeAlso: AH=08h"F_GET_BYTE",AH=0Ah"F_PUT_BUFFER",AH=0Ch"F_GET_BLOCK"
- SeeAlso: AH=10h"F_GET_WORD"
- --------b-6F0C-------------------------------
- INT 6F - HP Vectra EX-BIOS - "F_GET_BLOCK" - READ BLOCKS OF DATA FROM DEVICE
- AH = 0Ch
- BP = driver ID (see #03741)
- DH = device major number
- DL = device minor number
- ES:DI -> command block (see #03766)
- Return: AH = status (see #03744 at AH=00h"HP Vectra")
- BX = operation status
- BP,DS destroyed
- SeeAlso: AH=08h"F_GET_BYTE",AH=0Ah"F_PUT_BLOCK",AH=0Ch"F_GET_BUFFER"
- SeeAlso: AH=10h"F_GET_WORD"
- --------b-6F0C--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_INS_FIXOWNDS" - INSTALL VALUES IN FIXED VECTOR
- AH = 0Ch
- BP = 0012h (driver ID for V_SYSTEM)
- BX = vector address used
- ES:DI -> new CS:IP entry point
- Return: AH = status (00h) (see #03744)
- BP,DS destroyed
- Note: on installation, the given entry point will be invoked with an SF_INIT
- call (see AX=0200h"SF_INIT"), which should return the routine's DS
- in BX. If the SF_INIT call returns with error code FEh, the power-on
- self-test sequence will be called.
- SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=06h/BP=0012h,AH=08h/BP=0012h
- SeeAlso: AH=0Eh/BP=0012h,AH=12h/BP=0012h
- --------b-6F0C--BP002A-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_INQUIRE_ENTRY" - GET GID DRIVER ENTRY POINT
- AH = 0Ch
- BP = 002Ah (driver ID for V_SINPUT)
- Return: AH = status (see #03744)
- ES:BX -> physical GID driver CS:IP
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=002Ah,AH=06h/BP=002Ah,AH=08h/BP=002Ah
- SeeAlso: AH=0Ah/BP=002Ah
- --------b-6F0C--BP005A-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_SET_LIMITS_X" - SET HORIZONTAL TRACKING LIMITS
- AH = 0Ch
- BP = 005Ah (driver ID for V_STRACK)
- CX = minimum X coordinate
- DX = maximum X coordinate
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AH=04h/BP=005Ah,AH=08h/BP=005Ah,AH=0Eh/BP=005Ah
- SeeAlso: AH=10h/BP=005Ah,AH=12h/BP=005Ah,INT 33/AX=0007h
- --------N-6F0D-------------------------------
- INT 6F - 10NET - "WHO" - ENUMERATE USERS ON NETWORK
- AH = 0Dh
- AL = type code
- 01h return superstations only
- 02h return non-superstations only
- otherwise return all
- CX = length of data buffer
- DS:DX -> array of records to be filled (see #03768)
- Return: CL = number of records returned (responding stations)
- SeeAlso: AH=16h,AH=8Dh
- Format of station record:
- Offset Size Description (Table 03768)
- 00h 12 BYTEs node ID
- 0Ch BYTE station flags (see #03769)
- ---if AL = 01h---
- 0Dh BYTE version number
- 0Eh WORD level number of 10Net software in responding node
- ---if AL = 02h---
- 0Dh 8 BYTEs user ID
- 15h BYTE version number
- 16h WORD level number
- Bitfields for station flags:
- Bit(s) Description (Table 03769)
- 1 workstation
- 2 superstation
- 3 xgate
- 4 active gate
- --------N-6F0E-------------------------------
- INT 6F - 10NET - SPOOL/PRINT
- AH = 0Eh
- DS:DX -> spool/print record (see #03771)
- Return: CF clear if successful
- CF set on error
- AX = error code (see also #03740)
- 17FFh device not mounted
- 18FFh already spooling to named device
- (Table 03770)
- Values for 10NET spooler operation code:
- 0000h initiate spool
- 0001h abort print
- 0002h close spool
- 0003h delete spool
- 0004h print
- 0005h get report info
- 0006h set chat template
- 0007h queue
- 0008h return queue
- 0009h queue non-spooled file for printing
- Format of 10NET Spool/Print record:
- Offset Size Description (Table 03771)
- 00h WORD operation code (see #03770)
- 02h 11 BYTEs file name in FCB format
- ---if operation code = 00h or 06h---
- 0Dh BYTE notification flags (see #03772)
- 0Eh BYTE days to keep (FFh=forever)
- 0Fh BYTE bits 0,1: device (1=LPT1)
- bits 4-7: remote drive to store spool file (1=A,...)
- 10h WORD length of following data area
- 12h N BYTEs up to 64 bytes of description
- ---if operation code = 03h---
- 0Dh 8 BYTEs user ID to associate with filename
- ---if operation code = 04h---
- 0Dh WORD block number
- 0Fh 8 BYTEs user ID to associate with filename
- ---if operation code = 05h---
- 0Dh BYTE RRN to start retrieve
- 0Eh BYTE bits 0,1: local print device (LPTx)
- bit 3: if set, return entries for all users
- 0Fh WORD length of following area
- 11h N BYTEs up to 1500 bytes to receive $SCNTL records returned
- ---if operation code = 07h---
- 0Dh BYTE queue number
- 0Eh BYTE bits 0,1: local print device (LPTx)
- 0Fh WORD number of bytes of test print to be done
- 11h BYTE code:
- 01h print device
- 02h test print count
- 03h prn
- ---if operation code = 08h---
- 0Dh BYTE queue location or $SCNTL location to start access
- returns next item for access:
- 00h-7Fh queued items
- 80h-FEh non-queued, non-printed items
- FFh no more items
- 0Eh WORD unused
- 10h WORD length of following area
- 12h N BYTEs up to 64 bytes to receive $SCNTL records (see #03773)
- ---if operation code = 09h---
- 0Dh 3 BYTEs unused
- 10h N BYTEs path to non-spooled file to be queued for printing
- Bitfields for notification flags:
- Bit(s) Description (Table 03772)
- 7 queue to top
- 6 do ID page
- 5 no form feed
- 4 reserved
- 3 explicit queuing only
- 2 notify at print completion
- 1 notify server operator, with reply
- 0 notify at print start
- Format of 10NET $SCNTL record:
- Offset Size Description (Table 03773)
- 00h 8 BYTEs user ID
- 08h 11 BYTEs filename in FCB format
- 13h 6 BYTEs node ID
- 19h 3 BYTEs creation date
- 1Ch BYTE notification flags (see #03772)
- 1Dh BYTE retention time in days
- 1Eh BYTE printing device (LPTx)
- 1Fh 3 BYTEs date last printed (0 = never)
- 22h BYTE device containing spoolfile
- 23h WORD bytes to print for test print
- 25h WORD block number to start print
- 27h BYTE reserved
- --------b-6F0E-------------------------------
- INT 6F - HP Vectra EX-BIOS - "F_PUT_WORD" - WRITE WORD OF DATA TO DEVICE
- AH = 0Eh
- BP = driver ID (see #03741)
- DX = data word
- Return: AH = status (see #03744 at AH=00h"HP Vectra")
- BP,DS destroyed
- SeeAlso: AH=06h"F_PUT_BYTE",AH=0Ah"F_PUT_BUFFER",AH=10h"F_GET_WORD"
- --------b-6F0E-------------------------------
- INT 6F - HP Vectra EX-BIOS - "F_PUT_WORD" - WRITE A WORD OF DATA
- AH = 0Eh
- BP = driver ID (see #03741)
- ??? details not yet available
- Return: ???
- SeeAlso: AH=06h"HP Vectra",AH=0Ah"HP Vectra",AH=10h"HP Vectra"
- --------b-6F0E--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_INS_FIXGETDS" - INSTALL VALUES IN FIXED VECTOR
- AH = 0Eh
- BP = 0012h (driver ID for V_SYSTEM)
- BX = vector address used
- ES:DI -> new CS:IP entry point
- Return: AH = status (00h) (see #03744)
- BP,DS destroyed
- Note: on installation, the given entry point will be invoked with an SF_INIT
- call (see AX=0200h"SF_INIT"), with the "last used DS" value in BX;
- the routine should adjust BX and return the new value. If the
- SF_INIT call returns with error code FEh, the power-on self-test
- sequence will be called.
- SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=06h/BP=0012h,AH=0Ch/BP=0012h
- SeeAlso: AH=10h/BP=0012h,AH=14h/BP=0012h
- --------b-6F0E--BP005A-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_SET_LIMITS_Y" - SET VERTICAL TRACKING LIMITS
- AH = 0Eh
- BP = 005Ah (driver ID for V_STRACK)
- CX = minimum Y coordinate
- DX = maximum Y coordinate
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AH=04h/BP=005Ah,AH=08h/BP=005Ah,AH=0Ch/BP=005Ah
- SeeAlso: AH=10h/BP=005Ah,AH=12h/BP=005Ah,INT 33/AX=0008h
- --------N-6F0F-------------------------------
- INT 6F - 10NET v5.0 - "RM LOCK" - ???
- AH = 0Fh
- ???
- Return: ???
- SeeAlso: AH=07h,AH=08h"10NET"
- --------N-6F10-------------------------------
- INT 6F - 10NET - ATTACH/DETACH PRINTER
- AH = 10h
- AL = subfunction
- 00h initiate spooling if LPT1 is mounted
- 01h terminate spooling if LPT1 is mounted
- SeeAlso: INT 21/AX=5D08h
- --------b-6F10-------------------------------
- INT 6F - HP Vectra EX-BIOS - "F_GET_WORD" - READ WORD OF DATA FROM DEVICE
- AH = 10h
- BP = driver ID (see #03741)
- Return: AH = status (see #03744 at AH=00h"HP Vectra")
- DX = data word
- BP,DS destroyed
- SeeAlso: AH=08h"F_GET_BYTE",AH=0Ch"F_GET_BUFFER",AH=0Eh"F_PUT_WORD"
- --------b-6F10--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_INS_FIXGLBDS" - INSTALL VALUES IN FIXED VECTOR
- AH = 10h
- BP = 0012h (driver ID for V_SYSTEM)
- BX = vector address used
- ES:DI -> new CS:IP entry point
- Return: AH = status (00h) (see #03744)
- BP,DS destroyed
- Note: on installation, the given entry point will be invoked with an SF_INIT
- call (see AX=0200h"SF_INIT"), with BX set to the EX-BIOS global
- data area. If the SF_INIT call returns with error code FEh, the
- power-on self-test sequence will be called.
- SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=06h/BP=0012h
- SeeAlso: AH=0Ch/BP=0012h,AH=0Eh/BP=0012h,AH=12h/BP=0012h,AH=16h/BP=0012h
- --------b-6F10--BP005A-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_PUT_SPRITE" - DISPLAY GRAPHICS CURSOR SPRITE
- AH = 10h
- BP = 005Ah (driver ID for V_STRACK)
- BX = X coordinate
- CX = Y coordinate
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AH=04h"F_TRACK_INIT",AH=08h"F_TRACK_OFF"
- SeeAlso: AH=12h"F_REMOVE_SPRITE",INT 33/AX=0004h
- --------N-6F11-------------------------------
- INT 6F - 10NET - LOCK FCB
- AH = 11h
- AL = mode
- 01h sequential
- 02h random
- 03h random block
- CX = number of records
- DS:DX -> FCB (see #01345 at INT 21/AH=0Fh)
- Return: CF clear if successful
- CF set on error
- AX = error code (see also #03740)
- 0002h file not found
- SeeAlso: AH=12h,INT 21/AH=0Fh
- --------N-6F12-------------------------------
- INT 6F - 10NET - UNLOCK FCB
- AH = 12h
- AL = mode
- 00h sequential
- 01h random
- 02h random block
- CX = number of records
- DS:DX -> FCB (see #01345 at INT 21/AH=0Fh)
- Return: CF clear if successful
- CF set on error
- AX = error code (see also #03740)
- 0002h file not found
- SeeAlso: AH=11h
- --------b-6F12--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_INS_FREEOWNDS" - INSTALL VALUES IN FREE VECTOR
- AH = 12h
- BP = 0012h (driver ID for V_SYSTEM)
- ES:DI -> new CS:IP entry point
- Return: AH = status (00h) (see #03744)
- BP,DS destroyed
- Note: on installation, the given entry point will be invoked with an SF_INIT
- call (see AX=0200h"SF_INIT"), which should return the routine's DS
- in BX. If the SF_INIT call returns with error code FEh, the power-on
- self-test sequence will be called.
- SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=0Ch/BP=0012h,AH=14h/BP=0012h
- SeeAlso: AH=16h/BP=0012h,AH=18h/BP=0012h
- --------b-6F12--BP005A-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_REMOVE_SPRITE" - REMOVE GRAPHICS CURSOR SPRITE
- AH = 12h
- BP = 005Ah (driver ID for V_STRACK)
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AH=06h"F_TRACK_ON",AH=10h"F_PUT_SPRITE"
- --------N-6F13-------------------------------
- INT 6F - 10NET v3.3+ - GET REMOTE CONFIGURATION TABLE ADDRESS
- AH = 13h
- DS:DX -> node ID, 12 bytes blank-padded
- Return: CF clear if successful
- ES:BX = configuration table address on given machine
- CF set on error
- AX = error code (see #03740)
- SeeAlso: AH=03h
- --------N-6F14-------------------------------
- INT 6F - 10NET v3.3+ - GET REMOTE MEMORY
- AH = 14h
- BX:SI = address of remote memory
- CX = length (<=1024 bytes)
- DS:DX -> node ID, 12 bytes blank-padded
- DS:DI -> area to receive remote memory image
- Return: CF clear if successful
- CX = amount of memory copied to DS:SI
- CF set on error
- AX = error code (see #03740)
- --------b-6F14--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_INS_FREEGETDS" - INSTALL VALUES IN FREE VECTOR
- AH = 14h
- BP = 0012h (driver ID for V_SYSTEM)
- ES:DI -> new CS:IP entry point
- Return: AH = status (00h) (see #03744)
- BP,DS destroyed
- Note: on installation, the given entry point will be invoked with an SF_INIT
- call (see AX=0200h"SF_INIT"), with the "last used DS" value in BX;
- the routine should adjust BX and return the new value. If the
- SF_INIT call returns with error code FEh, the power-on self-test
- sequence will be called.
- SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=0Eh/BP=0012h,AH=12h/BP=0012h
- SeeAlso: AH=16h/BP=0012h
- --------N-6F1501-----------------------------
- INT 6F - 10NET v3.3+ - GET SHARED DEVICE ENTRY
- AX = 1501h
- BX = zero-based index
- DS:SI -> node ID, 12 bytes blank-padded
- ES:DI -> 85-byte buffer for shared device table entry (see #03774)
- Return: CF clear if successful
- ES:DI buffer contains shared device table entry of BXth device
- CF set on error
- AX = error code (see #03740)
- SeeAlso: AX=1502h,AX=1503h,AX=9501h
- Format of 10NET shared device table entry:
- Offset Size Description (Table 03774)
- 00h 8 BYTEs device
- 08h 8 BYTEs alias
- 10h 64 BYTEs path
- 50h 8 BYTEs password
- 58h BYTE access
- 59h 4 BYTEs mask
- --------N-6F1502-----------------------------
- INT 6F - 10NET v3.3+ - SET SHARED DEVICE ENTRY
- AX = 1502h
- DS:SI -> node ID, 12 bytes blank-padded
- ES:DI -> valid shared device table entry
- Return: CF clear if successful
- CF set on error
- AX = error code (see #03740)
- SeeAlso: AX=1501h,AX=1503h,AX=9502h
- --------N-6F1503-----------------------------
- INT 6F - 10NET v3.3+ - DELETE SHARED DEVICE ENTRY
- AX = 1503h
- BX = zero-based index
- DS:SI -> node ID, 12 bytes blank-padded
- Return: CF clear if successful
- CF set on error
- AX = error code (see #03740)
- SeeAlso: AX=1501h,AX=1502h,AX=9503h
- --------N-6F16-------------------------------
- INT 6F - 10NET v5.0 - "GL WHO" - ???
- AH = 16h
- ???
- Return: ???
- SeeAlso: AH=0Dh
- --------b-6F16--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_INS_FREEGLBDS" - INSTALL VALUES IN FREE VECTOR
- AH = 16h
- BP = 0012h (driver ID for V_SYSTEM)
- ES:DI -> new CS:IP entry point
- Return: AH = status (00h) (see #03744 at INT 6F/AH=00h"HP Vectra")
- BP,DS destroyed
- Note: on installation, the given entry point will be invoked with an SF_INIT
- call (see AX=0200h"SF_INIT"), with BX set to the EX-BIOS global
- data area. If the SF_INIT call returns with error code FEh, the
- power-on self-test sequence will be called.
- SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=10h/BP=0012h,AH=12h/BP=0012h
- SeeAlso: AH=14h/BP=0012h,AH=18h/BP=0012h
- --------N-6F17-------------------------------
- INT 6F - 10NET v3.3+ - MOUNT
- AH = 17h
- AL = local drive number (0=A:)
- BL = remote drive letter or '1'..'3' for LPTn or '4' or '5' for COMx
- DS:DX -> node ID, 12 bytes blank-padded
- Return: CF clear if successful
- CF set on error
- AX = error code (see #03740)
- SeeAlso: AH=18h
- --------N-6F18-------------------------------
- INT 6F - 10NET v3.3+ - UNMOUNT
- AH = 18h
- AL = local drive number (0=A:)
- BL = type
- 00h disk
- 01h-03h LPTn
- 04h,05h COMx
- Return: CF clear if successful
- CF set on error
- AX = error code (see #03740)
- SeeAlso: AH=17h
- --------b-6F18--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_INS_FIND" - FIND DRIVER BY ATTRIBUTES
- AH = 18h
- BP = 0012h (driver ID for V_SYSTEM)
- AL = sense of test (00h equal, 02h non-equal)
- BX = AND mask
- DX = pattern
- SI = first vector address to search
- DI = offset in HP header of field to test
- Return: AH = status (00h,FEh) (see #03744 at INT 6F/AH=00h"HP Vectra")
- BP,DS destroyed
- ---if AH=00h---
- SI = first matching vector address
- Desc: compare successive drivers' header fields starting at address SI
- until the header field AND BX is either equal or non-equal to DX
- SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=0Ch/BP=0012h,AH=10h/BP=0012h
- SeeAlso: AH=12h/BP=0012h,AH=16h/BP=0012h
- --------N-6F19-------------------------------
- INT 6F U - 10NET v5.0 - AUDIT
- AH = 19h
- ???
- Return: ???
- SeeAlso: AH=99h
- --------N-6F1A-------------------------------
- INT 6F U - 10NET v5.0 - "BULL" - ???
- AH = 1Ah
- ???
- Return: ???
- --------N-6F1B-------------------------------
- INT 6F U - 10NET v5.0 - "GMOUNT" - ???
- AH = 1Bh
- ???
- Return: ???
- --------N-6F1C-------------------------------
- INT 6F U - 10NET v5.0 - "GLOGIN" - GET LOGIN LIST
- AH = 1Ch
- ???
- Return: ???
- --------N-6F1D-------------------------------
- INT 6F U - 10NET v5.0 - "TABDATA" - ???
- AH = 1Dh
- ???
- Return: ???
- --------N-6F1E-------------------------------
- INT 6F U - 10NET v5.0 - "SCHED" - ???
- AH = 1Eh
- ???
- Return: ???
- --------b-6F1E--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_RAM_GET" - GET EX-BIOS FREE RAM AREA
- AH = 1Eh
- BP = 0012h (driver ID for V_SYSTEM)
- Return: AH = status (00h) (see #03744 at INT 6F/AH=00h"HP Vectra")
- BX = last-used DS
- DX = maximum DS
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=20h/BP=0012h,AH=22h/BP=0012h
- --------N-6F1F-------------------------------
- INT 6F U - 10NET v5.0 - "WHOAMI" - ???
- AH = 1Fh
- ???
- Return: ???
- --------N-6F20-------------------------------
- INT 6F U - 10NET v5.0 - ???
- AH = 20h
- ???
- Return: ???
- --------b-6F20--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_RAM_RET" - RESERVE EX-BIOS MEMORY
- AH = 20h
- BP = 0012h (driver ID for V_SYSTEM)
- BX = new value for "last-used DS"
- DX = new value for "maximum DS"
- Return: AH = status (00h) (see #03744 at INT 6F/AH=00h"HP Vectra")
- BP,DS destroyed
- Note: the F_INS_FIXGETDS and F_INS_FREEGETDS functions
- (see AH=0Eh/BP=0012h,AH=14h/BP=0012h) also modify the values returned
- by this call, requiring care if both methods are used to allocate
- memory
- SeeAlso: AH=00h"HP Vectra",AH=0Eh/BP=0012h,AH=14h/BP=0012h,AH=1Eh/BP=0012h
- --------N-6F21-------------------------------
- INT 6F U - 10NET v5.0 - ???
- AH = 21h
- ???
- Return: ???
- --------N-6F22-------------------------------
- INT 6F U - 10NET v5.0 - ???
- AH = 22h
- ???
- Return: ???
- --------b-6F22--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_CMOS_GET" - READ CMOS MEMORY
- AH = 22h
- BP = 0012h (driver ID of V_SYSTEM)
- BL = address of CMOS byte to read
- Return: AH = status (see #03744 at AH=00h"HP Vectra")
- AL = byte read
- BP,DS destroyed
- Note: supported by ES, QS, and RS series HP Vectras
- SeeAlso: AH=00h"HP Vectra",AH=1Eh/BP=0012h,AH=24h/BP=0012h
- --------b-6F24--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_CMOS_RET" - WRITE CMOS MEMORY
- AH = 24h
- BP = 0012h (driver ID of V_SYSTEM)
- BL = address of CMOS byte to write
- AL = new value
- Return: AH = status (see #03744)
- BP,DS destroyed
- Note: updates the CMOS checksum fields (both IBM-standard and HP checksums)
- SeeAlso: AH=00h"HP Vectra",AH=22h/BP=0012h
- --------b-6F2A--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_YIELD" - GIVE UP CPU TO OTHER TASKS
- AH = 2Ah
- BP = 0012h (driver ID of V_SYSTEM)
- Return: AH = status (see #03744)
- BP,DS destroyed
- Note: this is a hook for multitasking systems
- SeeAlso: AH=00h"HP Vectra",INT 15/AX=1000h,INT 2F/AX=1680h
- --------b-6F30--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_SND_CLICK_ENABLE" - TURN ON KEYCLICKS
- AH = 30h
- BP = 0012h (driver ID of V_SYSTEM)
- Return: AH = status (see #03744 at AH=00h"HP Vectra")
- BP,DS destroyed
- Desc: enables keyclicks and flushes any pending keyclicks
- SeeAlso: AH=32h/BP=0012h,AH=34h/BP=0012h,AH=36h/BP=0012h
- --------b-6F32--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_SND_CLICK_DISABLE" - TURN OFF KEYCLICKS
- AH = 32h
- BP = 0012h (driver ID of V_SYSTEM)
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: disables keyclicks and flushes any pending keyclicks
- SeeAlso: AH=00h"HP Vectra",AH=30h/BP=0012h,AH=38h/BP=0012h
- --------b-6F34--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_SND_CLICK" - GENERATE KEYCLICK
- AH = 34h
- BP = 0012h (driver ID of V_SYSTEM)
- Return: AH = status (see #03744)
- BP,DS destroyed
- Desc: generate a keyclick if fewer than four clicks are already pending
- Note: if keyclicks are already pending, the remaining click count is
- incremented and the function returns immediately
- SeeAlso: AH=00h"HP Vectra",AH=30h/BP=0012h,AH=36h/BP=0012h,AH=3Ah/BP=0012h
- --------b-6F36--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_SND_BEEP_ENABLE" - ENABLE BEEPS
- AH = 36h
- BP = 0012h (driver ID of V_SYSTEM)
- Return: AH = status (see #03744 at AH=00h"HP Vectra")
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AH=30h/BP=0012h,AH=34h/BP=0012h,AH=38h/BP=0012h
- --------b-6F38--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_SND_BEEP_DISABLE" - DISABLE BEEPS
- AH = 38h
- BP = 0012h (driver ID of V_SYSTEM)
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AH=32h/BP=0012h,AH=36h/BP=0012h
- --------b-6F3A--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_SND_BEEP" - SOUND BEEP WITH CURRENT VALUES
- AH = 3Ah
- BP = 0012h (driver ID of V_SYSTEM)
- Return: AH = status (see #03744 at AH=00h"HP Vectra")
- BP,DS destroyed
- Desc: make a sound of the frequency and duration defined in the EX-BIOS
- global data area (see #03748)
- SeeAlso: AH=00h"HP Vectra",AH=34h/BP=0012h,AH=36h/BP=0012h,AH=38h/BP=0012h
- SeeAlso: AH=3Ch/BP=0012h,AH=3Eh/BP=0012h
- --------b-6F3C--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_SND_SET_BEEP" - SET BEEP FREQUENCY AND DURATION
- AH = 3Ch
- BP = 0012h (driver ID of V_SYSTEM)
- BX = frequency in Hz (1-25000, 0 = off)
- DX = duration in 10-microsecond increments
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AH=3Ah/BP=0012h,AH=3Eh/BP=0012h,#03748
- --------b-6F3E--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_SND_TONE" - SOUND TONE WITH FREQ AND DURATION
- AH = 3Eh
- BP = 0012h (driver ID of V_SYSTEM)
- BX = frequency in Hz (1-25000, 0 = off)
- DX = duration in 10-microsecond increments
- Return: AH = status (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AH=3Ah/BP=0012h,AH=3Ch/BP=0012h,AH=40h/BP=0012h
- --------b-6F40--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_STR_GET_FREE_INDEX" - FIND FREE STRING INDEX
- AH = 40h
- BP = 0012h (driver ID of V_SYSTEM)
- Return: AH = status (see #03744)
- BX = next free string index
- BP,DS destroyed
- Desc: get the next string index available to user programs
- SeeAlso: AH=00h"HP Vectra",AH=42h/BP=0012h,AH=44h/BP=0012h,AH=46h/BP=0012h
- --------b-6F42--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_STR_DEL_BUCKET" - DEL HEADER FROM BUCKET LIST
- AH = 42h
- BP = 0012h (driver ID of V_SYSTEM)
- ES:DI -> bucket header (see #03775)
- Return: AH = status (00h,FEh) (see #03744 at AH=00h"HP Vectra")
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AH=40h/BP=0012h,AH=44h/BP=0012h
- Format of HP Vectra EX-BIOS bucket header:
- Offset Size Description (Table 03775)
- 00h DWORD pointer to next bucket header (FFFFh:FFFFh if last)
- 04h WORD upper bound on string index
- 06h WORD lower bound on string index
- 08h DWORD pointer to array of string offset pointers
- 0Ch WORD segment of strings
- Note: the strings pointed at by the offset pointers are byte-counted ASCIZ
- strings
- --------b-6F44--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_STR_PUT_BUCKET" - ADD HEADER TO BUCKET HDR LIST
- AH = 44h
- BP = 0012h (driver ID of V_SYSTEM)
- ES:DI -> bucket header (see #03775)
- Return: AH = status (00h) (see #03744)
- BP,DS destroyed
- SeeAlso: AH=00h"HP Vectra",AH=42h/BP=0012h,AH=46h/BP=0012h
- --------b-6F46--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_STR_GET_STRING" - FIND STRING IN BUCKET LIST
- AH = 46h
- BP = 0012h (driver ID of V_SYSTEM)
- BX = string index
- Return: AH = status (00h,other) (see #03744)
- BP,DS destroyed
- ---if successful---
- CX = length of string (excluding count byte and terminating NUL)
- DS:SI -> header for string
- ES:DI -> found string
- SeeAlso: AH=00h"HP Vectra",AH=44h/BP=0012h,AH=48h/BP=0012h
- --------b-6F48--BP0012-----------------------
- INT 6F - HP Vectra EX-BIOS - "F_STR_GET_INDEX" - GET INDEX FOR STRING
- AH = 48h
- BP = 0012h (driver ID of V_SYSTEM)
- ES:DI -> ASCIZ string
- Return: AH = status (00h,other) (see #03744 at AH=00h"HP Vectra")
- BP,DS destroyed
- ---if successful---
- BX = index for the given string
- SeeAlso: AH=00h"HP Vectra",AH=40h/BP=0012h,AH=46h/BP=0012h
- --------A-6F636FBX6D70-----------------------
- INT 6F - Clara Empricost - TSR Version - INSTALLATION CHECK
- AX = 636Fh ('co')
- BX = 6D70h ('mp')
- CX = 696Eh ('in')
- SS:DX -> WORD to set if installed
- Return: SS:DX word set to 636Fh if installed
- Program: Condition List Action Rejection Algorithm for the Evaluation
- of Music at Pseudo-Random Idea COnstruction STage
- (CLARA EMPRICOST) is an experimental program by Silas Brown
- SeeAlso: AX=636Fh/BX=6D70h"UNINSTALL"
- --------A-6F636FBX6D70-----------------------
- INT 6F - Clara Empricost - TSR Version - UNINSTALL
- AX = 636Fh ('co')
- BX = 6D70h ('mp')
- CX = 6F73h ('os')
- Return: nothing -- call installation check to determine whether successful
- Program: Condition List Action Rejection Algorithm for the Evaluation
- of Music at Pseudo-Random Idea COnstruction STage
- (CLARA EMPRICOST) is an experimental program by Silas Brown
- Notes: Saves any unfinished task and prevents processing of
- new tasks, even if can't uninstall
- If INT 28h or INT 6Fh have been chained since installation,
- returns without changing interrupts or freeing memory
- do not call while DOS is active (i.e. InDOS flag is nonzero or INT 28
- is active and InDOS > 1)
- SeeAlso: AX=636Fh/BX=6D70h"INSTALLATION CHECK"
- --------N-6F80-------------------------------
- INT 6F - 10NET v5.0 - LOGIN
- AH = 80h
- DS:DX -> login record (see #03776)
- Return: CF clear if successful
- BL = number of days until password expires (00h = never)
- CL = security level
- CF set on error
- AX = status (see #03740)
- SeeAlso: AH=00h,AH=81h
- Format of 10NET login record:
- Offset Size Description (Table 03776)
- 00h 8 BYTEs user name
- 08h 8 BYTEs password
- 10h 15 BYTEs server node ID
- 1Fh 8 BYTEs new password
- 27h BYTE invoke mode (00h command line, 01h interactive)
- --------N-6F81-------------------------------
- INT 6F - 10NET v5.0 - LOGOUT
- AH = 81h
- DS:DX -> server node ID (DX=0000h for universal logout)
- Return: AX = status (see #03740)
- SeeAlso: AH=01h,AH=80h
- --------N-6F8A-------------------------------
- INT 6F - 10NET v5.0 - CHAT
- AH = 8Ah
- DS:BX -> chat parameters (see #03777)
- DS:DX -> chat message (see #03778)
- Return: CF clear if successful
- CF set on error
- AX = status (see #03740)
- SeeAlso: AH=0Ah"10NET"
- Format of 10NET chat parameters:
- Offset Size Description (Table 03777)
- 00h 8 BYTEs sender's user name
- 08h 8 BYTEs destination user name
- 10h 15 BYTEs destination node (0 if broadcast-style chat)
- Format of 10NET chat message:
- Offset Size Description (Table 03778)
- 00h WORD message length
- 02h N BYTEs chat message contents
- --------N-6F8D-------------------------------
- INT 6F - 10NET v5.0 - "WHO" - ENUMERATE USERS ON NETWORK
- AH = 8Dh
- BX = service mask (see #03779)
- CX = length of buffer
- DS:DX -> buffer for array of Who data structures (see #03780)
- Return: CF clear if successful
- CX = number of nodes matching service mask
- DS:DX buffer filled
- CF set on error
- AX = status (see #03740)
- SeeAlso: AH=0Dh
- Bitfields for 10NET service mask:
- Bit(s) Description (Table 03779)
- 0 workstation
- 1 file server
- 2 print server
- 3 de-spool server
- Format of 10NET Who data structure:
- Offset Size Description (Table 03780)
- 00h 8 BYTEs user name
- 08h 15 BYTEs node ID
- 17h 3 BYTEs unique portion of Ethernet address
- 1Ah BYTE Who group number
- 1Bh WORD service mask (see #03779)
- 1Dh DWORD serial number
- 21h BYTE maximum concurrent users with same serial number allowed on net
- 22h BYTE chat mask (see #03781)
- 23h BYTE internal system bits (see #03782)
- 24h 9 BYTEs version number in format MM.mm.xxx
- 2Dh BYTE number of shared directories
- 2Eh BYTE number of shared printer queues
- Bitfields for 10NET chat mask:
- Bit(s) Description (Table 03781)
- 0 chat permitted
- 1 bell enabled
- 2 chat keyboard initiated
- 3 in INT 16 handler
- 4 in Get Input
- 5 display has timed out
- 6 chat is idle
- Bitfields for 10NET internal system bits:
- Bit(s) Description (Table 03782)
- 0 submit permitted
- 1 submit initiated
- 2 submit executing
- 3 internal client call/chat/spool/autospool
- 4 in spool termination
- 5 print permitted
- 6 waiting for keyboard input
- --------N-6F9501-----------------------------
- INT 6F - 10NET v5.0 - GET SHARED DEVICE ENTRY
- AX = 9501h
- BX = zero-based index
- DS:SI -> server's node ID
- ES:DI -> buffer for shared device structure (see #03783)
- Return: CF clear if successful
- CF set on error
- AX = status (see #03740)
- SeeAlso: AX=1501h,AX=9502h,AX=9503h,AX=9504h
- Format of 10NET shared device structure:
- Offset Size Description (Table 03783)
- 00h 8 BYTEs alias
- 08h BYTE type (02h modem, 03h print queue, 04h directory)
- 09h BYTE access rights
- bit 0: read
- bit 1: write
- bit 2: create
- 0Ah 8 BYTEs password
- 12h 32 BYTEs comment
- ---directory---
- 32h 64 BYTEs pathname of shared directory
- ---print queue---
- 32h BYTE notification bit mask (see #03784)
- 33h BYTE job control bit mask (see #03785)
- 34h WORD number of days to retain file
- 36h WORD test print length
- 38h BYTE number of copies to print
- 39h BYTE compression algorithm
- 3Ah BYTE tab width (00h = don't expand)
- 3Bh BYTE priority
- 3Ch WORD time to open queue (FFFFh = always)
- 3Eh WORD time to close queue
- 40h WORD pause following queue switch, in clock ticks
- 42h WORD pause between print jobs, in clock ticks
- 44h BYTE associate queue file existence mask
- bit 0: queue switch file exists
- bit 1: initiate file exists
- bit 2: abort file exists
- 45h 6 BYTEs character sequence for page eject
- 4Bh BYTE status of print queue
- bit 0: queue is closed
- 4Ch WORD number of jobs on queue
- 4Eh WORD offset of next print job to be dispatched (FFFFh = none)
- 50h BYTE number of print devices in printer pool
- 51h WORD offset of first print device structure (FFFFh if empty)
- Bitfields for notification flags:
- Bit(s) Description (Table 03784)
- 0 user at print start
- 1 operator at start, with reply
- 2 user at print completion
- 3 operator at completion, with reply
- 4 user on queue switch
- 5 operator on queue switch, with reply
- 6 user on print error
- Bitfields for 10NET job control mask:
- Bit(s) Description (Table 03785)
- 0 print banner page
- 1 eject page at end of job
- 2 mark as "held" (queue but don't print)
- 3 rush job (queue at top)
- 4 overwrite file with zeros before deletion
- 5 hyperspool if possible
- --------N-6F9502-----------------------------
- INT 6F - 10NET v5.0 - SET SHARED DEVICE ENTRY
- AX = 9502h
- DS:SI -> server's node ID
- ES:DI -> shared device structure (see #03783)
- Return: CF clear if successful
- CF set on error
- AX = status (see #03740)
- SeeAlso: AX=1502h,AX=9501h,AX=9503h,AX=9504h
- --------N-6F9503-----------------------------
- INT 6F - 10NET v5.0 - DELETE SHARED DEVICE
- AX = 9503h
- BX = zero-based index
- DS:SI -> server's node ID
- Return: CF clear if successful
- CF set on error
- AX = status (see #03740)
- SeeAlso: AX=1503h,AX=9501h,AX=9502h,AX=9504h
- --------N-6F9504-----------------------------
- INT 6F - 10NET v5.0 - ENUMERATE USERS OF SHARED DEVICE
- AX = 9504h
- BX = zero-based shared device index
- CX = zero-based user index
- DS:SI -> server's node ID
- Return: CF clear if successful
- ES:DI -> node ID of the CX'th user of the BX'th device
- CF set on error
- AX = status (see #03740)
- SeeAlso: AX=9501h,AX=9502h,AX=9503h
- --------N-6F99-------------------------------
- INT 6F - 10NET v5.0 - AUDIT
- AH = 99h
- DS:SI -> server's node ID
- ES:DI -> data to be appended to audit trail file (max 106 bytes)
- Return: CF clear if successful
- CF set on error
- AX = status (see #03740)
- SeeAlso: AH=19h,AH=9Ch
- --------N-6F9C-------------------------------
- INT 6F - 10NET v5.0 - GET LOGIN LIST
- AH = 9Ch
- BX = zero-based index
- Return: CF clear if successful
- DS:DI -> BX'th node ID that caller's machine is logged into
- CF set on error
- AX = status (see #03740)
- --------H-70---------------------------------
- INT 70 C - IRQ8 - CMOS REAL-TIME CLOCK
- Desc: this interrupt is called when the real-time clock chip generates an
- alarm or periodic interrupt, among others. The periodic interrupt
- occurs 1024 times per second.
- Notes: many BIOSes turn off the periodic interrupt in the INT 70h handler
- unless in an event wait (see INT 15/AH=83h,INT 15/AH=86h).
- may be masked by setting bit 0 on I/O port A1h
- SeeAlso: INT 08,INT 0F"HP 95LX",INT 15/AH=01h"Amstrad",INT 15/AH=83h
- SeeAlso: INT 15/AH=86h,INT 1A/AH=02h,INT 58"DESQview",MEM FEE00320h
- SeeAlso: MEM 0040h:006Bh
- --------v-70---------------------------------
- INT 70 - VIRUS - "Stupid" - ORIGINAL INT 21h VECTOR
- Note: the virus sets this interrupt to be the same as INT 21, and then
- performs only INT 70 calls; since INT 70 is also generated by the
- real-time clock on the PC/AT and higher, this could cause random
- actions on an infected system
- SeeAlso: INT 6B"VIRUS",INT 9E"VIRUS",INT E0"VIRUS"
- --------H-71---------------------------------
- INT 71 C - IRQ9 - REDIRECTED TO INT 0A BY BIOS
- Notes: may be masked by setting bit 1 on I/O port A1h
- the default BIOS handler invokes INT 0A for compatibility, since the
- pin for IRQ2 on the PC expansion bus became the pin for IRQ9 on the
- AT expansion bus.
- under DESQview, only the INT 15h vector and BASIC segment address (the
- word at 0000h:0510h) may be assumed to be valid for the handler's
- process
- SeeAlso: INT 0A"IRQ2",INT 59"IRQ9",MEM 0040h:006Bh
- --------H-72---------------------------------
- INT 72 C - IRQ10 - RESERVED
- Note: may be masked by setting bit 2 on I/O port A1h
- SeeAlso: INT 5A"IRQ10",MEM 0040h:006Bh
- --------H-73---------------------------------
- INT 73 C - IRQ11 - RESERVED
- Note: may be masked by setting bit 3 on I/O port A1h
- SeeAlso: INT 5B"IRQ11",MEM 0040h:006Bh
- --------H-74---------------------------------
- INT 74 C - IRQ12 - POINTING DEVICE (PS)
- Notes: may be masked by setting bit 4 on I/O port A1h
- under DESQview, only the INT 15h vector and BASIC segment address (the
- word at 0000h:0510h) may be assumed to be valid for the handler's
- process
- SeeAlso: INT 33/AX=0000h,INT 33/AX=0024h,INT 5C"NetBIOS",MEM 0040h:006Bh
- --------H-75---------------------------------
- INT 75 C - IRQ13 - MATH COPROCESSOR EXCEPTION (AT and up)
- Desc: redirected to INT 02 by the BIOS, for compatibility with the PC
- Notes: may be masked by setting bit 5 on I/O port A1h
- not all clones wire the coprocessor to generate this IRQ; some systems
- generate an NMI (see INT 02) or assert the -ERROR pin on the CPU
- (see INT 10"COPROCESSOR")
- under DESQview, only the INT 15h vector and BASIC segment address (the
- word at 0000h:0510h) may be assumed to be valid for the handler's
- process
- SeeAlso: INT 10"COPROCESSOR",INT 5D"IRQ13",MEM 0040h:006Bh
- --------H-76---------------------------------
- INT 76 C - IRQ14 - HARD DISK CONTROLLER OPERATION COMPLETE (AT and later)
- Notes: may be masked by setting bit 6 on I/O port A1h
- on the PS/2, this interrupt is designed to be shared with other
- devices that produce an operation-complete interrupt, though
- the only current user is the hard disk
- SeeAlso: INT 0E"IRQ6",INT 15/AH=91h,INT 5E"IRQ14",MEM 0040h:006Bh
- --------H-77---------------------------------
- INT 77 C - IRQ15 - RESERVED (AT,PS)
- Note: may be masked by setting bit 7 on I/O port A1h
- SeeAlso: INT 5F"IRQ15",MEM 0040h:006Bh
- --------H-77---------------------------------
- INT 77 C - IRQ15 - SECONDARY IDE CONTROLLER - OPERATION COMPLETE
- Note: may be masked by setting bit 7 on I/O port A1h
- SeeAlso: INT 5F"IRQ15",MEM 0040h:006Bh
- --------H-77---------------------------------
- INT 77 C - IRQ15 - POWER CONSERVATION (Compaq SLT/286)
- Note: may be masked by setting bit 7 on I/O port A1h
- SeeAlso: INT 15/AX=4600h,INT 5F"IRQ15"
- --------E-78---------------------------------
- INT 78 - UofSalford DBOS DOS extender - API
- AH = function
- 00h (PB) display 32-bit memory specified by command argument
- 01h (PT) display 32-bit instruction(s) specified by command arg
- 02h specify offset to subsequent PB and PT commands
- 03h switch to protected mode
- DWORD following INT instruction point to map; protected-mode
- entry point is immediately following the DWORD
- Return: never
- Note: if bit 31 of the map address is set, only a stub was
- loaded by DOS and DBOS will load the entire program
- 04h specify that subsequent load (AH=03h) should leave program in
- memory
- 05h release program from memory
- 06h set break point at address and option count from commandline
- 07h resume program execution
- 08h single-step program
- 09h set read/write breakpoint using 386 debug registers
- 0Ah set write breakpoint using 386 debug register
- 0Bh set memory byte to new value
- 0Ch display CPU registers
- 0Dh run until specified program address reached
- 0Fh print trace from program map
- 10h specify an offset using a map symbol
- 14h print memory without any offset
- 18h switch DBOS into/out of test mode (ON/OFF commandline args)
- 1Dh get address of real/protected-mode communication buffer
- Return: ES:BP -> comm buffer
- 1Eh set real-mode memory size (specify how much real-mode memory
- to leave free when running FTN77 programs)
- 22h uninstall DBOS
- 24h force DBOS to emulate coprocessor instructions
- 26h set named DBOS switches from commandline
- 27h reset named DBOS switched from commandline
- 2Ah set list of dynamic link libraries to contents of commandline
- file
- 35h specify that subsequent load (AH=03h) should stop at first
- instruction
- Return: ???
- Notes: DBOS supports functions 00h through 50h; many of these functions
- provide a low-level debugging interface
- command arguments are read from the calling program's PSP
- SeeAlso: INT 79"DBOS"
- Index: uninstall;DBOS DOS extender
- --------E-78---------------------------------
- INT 78 - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ0
- Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
- GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
- Notes: this vector is overwritten when GO32 starts but is not restored by
- early versions of the extender
- the newest versions of GO32 dynamically allocate the vectors used
- for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
- SeeAlso: INT 08,INT 10/AH=FFh"GO32",INT 79"GO32"
- --------A-78---------------------------------
- INT 78 R - AutoCAD Device Interface - PLOTTER - SEND COMMAND
- AX = function
- 0001h begin plot
- BX = file level
- 0000h ASCII file
- 0001h binary file
- 0002h AutoCAD DXB file
- 0003h installed ADI driver
- 0002h end plot (close plotter)
- 0003h move (pen up)
- BX = new X position
- CX = new Y position
- 0004h move (pen down)
- BX = new X position
- CX = new Y position
- 0005h select pen
- BX = pen number
- 0006h select drawing speed
- BX = drawing speed N
- 0007h select line style
- BX = line style N
- 0008h raise pen
- 0009h abort plot
- Return: AX = 0000h (may be used for driver status in future releases)
- SeeAlso: INT 79"AutoCAD",INT 7A/AX=0001h"AutoCAD",INT 7B/AX=8001h"AutoCAD"
- --------d-78---------------------------------
- INT 78 - ADP-60 IDE controller - ORIGINAL INT 13
- SeeAlso: INT 79"ADP-60"
- --------s-78-------------------------------
- INT 78 - ULTRAMID - API
- AX = function
- --- digital functions ---
- 0000h start digital
- ES:DI -> Sound Structure
- Return: AX = voice used
- 0001h play next buffer
- ES:DI -> Sound Structure
- 0002h set panning
- BX = pan
- CX = voice
- 0003h set volume
- BX = volume
- CX = voice
- 0004h set rate (not yet implemented)
- 0005h pause digital
- CX = voice
- 0006h restart digital
- CX = voice
- 0007h stop digital
- CX = voice
- 0008h get digital position
- CX = voice
- Return: AX:DX -> position in PC buffer
- 0009h get voice status (not yet implemented)
- --- MIDI functions ---
- 000Ah load MIDI patches
- ES:DI -> MIDI track just after the Mtrk header
- BX:DX = length of MIDI track
- 000Bh load XMIDI patches
- ES:DI -> event buffer including the EVNT header
- 000Ch load patch
- CX = MIDI number of patch
- 000Dh unload patch
- CX = MIDI number of patch
- 000Eh start sequence
- 000Fh unload all patches
- 0010h MIDI out byte
- CX = MIDI byte
- 0011h MIDI out string
- CX = length
- ES:DI -> string of MIDI data
- 0012h all notes off
- --- resource functions ---
- 0013h allocate memory
- BX:DX = size of GUS memory needed
- Return: AX:DX = address of memory, or 0000:0000 if not avaiable
- 0014h free memory
- BX:DX = address of memory to be freed
- 0015h uninstall
- 0016h sem enter
- 0017h sem leave
- 0018h add external semaphore
- BX:DX -> external semaphore
- 0019h clear external semaphore
- BX:DX -> external semaphore
- 001Ah application start
- 001Bh application end
- --- v1.12 ---
- 001Ch ???
- 001Dh ???
- 001Eh ???
- 001Fh ???
- Program: UltraMid is a TSR from Advanced Gravis to play MIDI and digital data
- through the Gravis UltraSound (GUS)
- InstallCheck: test for the signature "ULTRAMID" at offset 0103h in the
- interrupt handler's segment
- Range: INT 78 to INT 7F
- SeeAlso: INT 2F/AX=CD00h"ULTRAMID",INT 7E/AH=00h"SBOS",INT 7E/AX=00FEh"SBOS"
- Index: uninstall;UltraMID
- --------d-7800-------------------------------
- INT 78 - TARGA.DEV - CMC International SCSI device driver - SET I/O PORT
- AH = 00h
- DX = interface board I/O port
- Return: CF set on error
- AL = error code (see #03786)
- InstallCheck: (used by TARGA.DEV) test for the string "SCSI" at offset 03h
- into the interrupt handler
- Note: if this routine is not called, the port is the driver's default
- (usually 0280h or 0300h)
- SeeAlso: AH=01h,AH=02h
- Index: installation check;TARGA.DEV
- (Table 03786)
- Values for TARGA.DEV error code:
- 00h illegal command given to SCSI code
- 01h invalid I/O port specified (must be from 100H to 3F8H, and must be on
- an 8-port boundary)
- 02h invalid DMA channel specified (must be from 1 to 3)
- 03h invalid SCSI board number specified (must be from 0 to 7)
- 04h error from data register test during self-test
- 05h SCSI input signals not all 0 when SCSI RST activated
- 06h SCSI input signals not all 0 before selecting a SCSI device
- 07h BSY signal is active; SCSI bus is busy
- 08h SCSI board not selected, BSY signal did not come on in response to
- raising SEL
- 09h time-out waiting for status state, signifying end of DMA transfer
- --------E-780000-----------------------------
- INT 78 - HugeRealMode Driver - INSTALLATION CHECK
- AX = 0000h
- Return: AX = DBCAh if installed
- Program: the HugeRealMode driver was published in the German DOS Extra Nr. 20
- (1992), and makes a 4G flat address space (for both data and code)
- available to real-mode DOS programs
- SeeAlso: AX=0001h
- --------E-780001-----------------------------
- INT 78 - HugeRealMode Driver - GET ENTRY POINT
- AX = 0001h
- Return: ES:BX -> far call entry point (see #03788,#03803)
- SeeAlso: AX=0000h
- (Table 03787)
- Values for HugeRealMode Server error code:
- 00h successful
- 01h unknown function
- 02h A20 disabled
- 03h A20 enabled
- 04h memory allocation error
- 05h memory not fixeable (LOCK)
- 06h memory not deallocaable
- 07h memory not moveable (UNLOCK)
- 08h change in memory allocation size not possible
- 09h file error (with .XMF-file)
- 0Ah memory error (with .XMF-file)
- 0Bh unknown procedure (currently Turbo Pascal unit only)
- (Table 03788)
- Call HugeRealMode Server "Enable A20" function with:
- AL = 00h
- Return: AX = error code (see #03787)
- Note: The HugeRealMode Server requires an XMS-driver like HIMEM.SYS loaded
- before HUGEREAL (for XMS-memory allocation and A20 control). It
- utilizes some undocumented 386+ features to enable 4G code and data
- segments (flat memory model) in the CPUs real-mode. It is not
- compatible with V86-mode (as with most EMM386). For maximum speed
- and compatibility with DOS it uses a two stage interrupt model
- (see #03791)
- SeeAlso: #03789,#03790,#03791
- (Table 03789)
- Call HugeRealMode Server "Disable A20" function with:
- AL = 01h
- Return: AX = error code (see #03787)
- SeeAlso: #03788,#03790
- (Table 03790)
- Call HugeRealMode Server "Query A20 State" function with:
- AL = 02h
- Return: AX = A20 state (0000h disabled, 0001h enabled)
- SeeAlso: #03788,#03789
- (Table 03791)
- Call HugeRealMode Server "Enable Two-Stage Interrupt Model" function with:
- AL = 03h
- Return: AX = error code (see #03787)
- Notes: If the two stage interrupt model is disabled, the IP must stay below
- 1MB, because the high word of EIP is not saved correctly by the
- standard interrupt management in real mode. Routines in extended
- memory may only be called with interrupts disabled (only usable for
- very short routines).
- If the two stage interupt model is enabled, these conventions are not
- required. The outer (transparent) ISRs save the higher word of EIP
- in the high word of CR3 (possible modification: in memory, if this
- is not safe) and then invoke the standard ISRs.
- Because of this handling, one should use pseudo segmented code even in
- extended memory (64K blocks located on 64K boundaries) to avoid the
- misalignment of the saved EIP (in CR3). Another way is to track and
- realign CR3 each time when jumping over a 64K boundary in extended
- memory
- SeeAlso: #03788,#03792
- (Table 03792)
- Call HugeRealMode Server "Disable Two-Stage Interrupt Model" function with:
- AL = 04h
- Return: AX = error code (see #03787)
- SeeAlso: #03788,#03791
- (Table 03793)
- Call HugeRealMode Server "Get Segment Address Of Server-Management Range" with:
- AL = 05h
- Return: AX = error code (see #03787)
- ES = segment address
- SeeAlso: #03803
- (Table 03794)
- Call HugeRealMode Server "Allocate Memory" function with:
- AL = 06h
- DX = length in KB
- Return: AX = error code (see #03787)
- DX = handle
- EBX = start address of allocated block
- SeeAlso: #03795,#03796
- (Table 03795)
- Call HugeRealMode Server "Deallocate Memory" function with:
- AL = 07h
- DX = handle
- Return: AX = error code (see #03787)
- SeeAlso: #03794,#03796
- (Table 03796)
- Call HugeRealMode Server "Modify Allocated Memory Size" function with:
- AL = 08h
- DX = handle
- BX = new size in KB
- Return: AX = error code (see #03787)
- EBX = new address
- SeeAlso: #03794,#03795
- (Table 03797)
- Call HugeRealMode Server "Load .XMF-file" function with:
- AL = 09h
- ES:BX -> filename (see #03798)
- Return: AX = error code (see #03787)
- ECX = target address
- Notes: memory must be allocated before loading
- .XMF file format (eXtended Memory executable File format) is supported
- by the HugeRealMode server for easier handling of XMS-code.
- The utility CONFXMF converts .OBJ-files (.COM 'tiny' model) to
- .XMF-format
- SeeAlso: #03794
- Format of .XMF program file header:
- Offset Size Description (Table 03798)
- 00h DWORD signature "XMF_"
- 04h WORD length of programs code
- 06h WORD count of 32bit addresses to relocate
- 08h WORD offset to code start (releative to file start) (see #03799)
- 0Ah WORD relocation table
- Note: each word contains a 16bit address, where a relocation has to be
- performed
- SeeAlso: #03797,#03799
- Format of .XMF-file code header:
- Offset Size Description (Table 03799)
- 00h WORD count of exported functions
- 02h N PWORDs 48bit pointers (16bit segment+32bit offset) to each function
- (16bit segment is always zero)
- var start of program's code
- SeeAlso: #03797,#03798
- (Table 03800)
- Call HugeRealMode Server "Set Segment Limits" function with:
- AL = 0Ah
- BL = segment limits (see #03801)
- Return: AX = error code (see #03787)
- SeeAlso: #03793
- Bitfields for HugeRealMode Server segment limits:
- Bit(s) Description (Table 03801)
- 7 CS size: 1=4GB, 0=64KB
- 6-5 not used
- 4 SS size: 1=4GB, 0=64KB
- 3 GS size
- 2 FS size
- 1 ES size
- 0 DS size
- SeeAlso: #03800
- (Table 03802)
- Call HugeRealMode Server "Transfer Memory From DOS To XMS" function with:
- AL = 0Bh
- ES:SI = source address
- EDI = target address
- ECX = length
- Return: AX = error code
- SeeAlso: #03803
- (Table 03803)
- Call HugeRealMode Server "Transfer Memory From XMS To DOS" function with:
- AL = 0Ch
- ESI = source address
- ES:DI = target address
- ECX = length
- Return: AX = error code
- SeeAlso: #03802
- --------d-7801-------------------------------
- INT 78 - TARGA.DEV - GET I/O PORT
- AH = 01h
- Return: DX = current interface board I/O port
- SeeAlso: AH=00h,AH=03h"TARGA"
- --------d-7802-------------------------------
- INT 78 - TARGA.DEV - SET DMA CHANNEL
- AH = 02h
- AL = interface board DMA channel
- Return: CF set on error
- AL = error code (see #03786)
- Note: if this routine is not called, the DMA channel is the driver's default
- (usually 3)
- SeeAlso: AH=00h,AH=03h"TARGA"
- --------d-7803-------------------------------
- INT 78 - TARGA.DEV - GET DMA CHANNEL
- AH = 03h
- Return: AL = current interface board DMA channel
- SeeAlso: AH=01h,AH=02h
- --------d-7804-------------------------------
- INT 78 - TARGA.DEV - SET SCSI DEVICE NUMBER
- AH = 04h
- AL = SCSI device number
- Return: CF set on error
- AL = error code (see #03786)
- Note: if this routine is not called, the device number used is the driver's
- default (usually 0)
- SeeAlso: AH=02h,AH=05h
- --------d-7805-------------------------------
- INT 78 - TARGA.DEV - GET SCSI DEVICE NUMBER
- AH = 05h
- Return: AL = current SCSI device number
- SeeAlso: AH=03h"TARGA",AH=04h
- --------d-7806-------------------------------
- INT 78 - TARGA.DEV - SET/CLEAR EARLY RETURN MODE
- AH = 06h
- AL = new state
- 00h clear early return mode
- 01h set early return mode
- Note: if early return mode is set then SCSI will return with no errors
- when the last DMA transfer is started in a call with AH=13h or AH=14h
- if this routine is not called, early return mode is cleared
- SeeAlso: AH=13h,AH=14h,AH=15h
- --------d-7808-------------------------------
- INT 78 - TARGA.DEV - INTERFACE BOARD SELF-TEST
- AH = 08h
- Return: CF set on error
- AL = error code (see #03786)
- Note: the SCSI bus is also reset
- SeeAlso: AH=09h
- --------d-7809-------------------------------
- INT 78 - TARGA.DEV - RESET SCSI BUS
- AH = 09h
- Return: AL = error code if carry set (see #03786)
- SeeAlso: AH=08h
- --------d-7810-------------------------------
- INT 78 - TARGA.DEV - SEND SCSI COMMAND
- AH = 10h
- DS:SI -> command bytes (see #03804)
- Return: AH = SCSI status byte
- CF clear if successful
- AL = SCSI message byte
- CF set on error
- AL = error code (see #03786)
- SeeAlso: AH=11h,INT 21/AX=4403h"ST-01"
- Format of SCSI Command:
- Offset Size Description (Table 03804)
- 00h BYTE length of command
- 01h ??? command bytes
- --------d-7811-------------------------------
- INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (PROGRAMMED I/O)
- AH = 11h
- DS:SI -> command bytes (see #03805)
- ES:BX -> data storage area
- CX = number of data bytes to transfer
- Return: AH = SCSI status byte
- CF clear if successful
- AL = SCSI message byte
- CF set on error
- AL = error code (see #03786)
- Note: this command receives data internally one byte at a time
- SeeAlso: AH=10h,AH=13h
- Format of TARGA.DEV SCSI Command:
- Offset Size Description (Table 03805)
- 00h BYTE length of command
- 01h ??? command bytes
- --------d-7812-------------------------------
- INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (PROGRAMMED I/O)
- AH = 12h
- DS:SI -> command bytes (see #03806)
- ES:BX -> data storage area
- CX = number of data bytes to transfer
- Return: AH = SCSI status byte
- CF clear if successful
- AL = SCSI message byte
- CF set on error
- AL = error code (see #03786)
- Note: this command sends data internally one byte at a time
- SeeAlso: AH=14h
- Format of TARGA.DEV SCSI Command:
- Offset Size Description (Table 03806)
- 00h BYTE length of command
- 01h ??? command bytes
- --------d-7813-------------------------------
- INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (DMA)
- AH = 13h
- DS:SI -> command bytes (see #03807)
- ES:BX -> data storage area
- DX:CX = number of data bytes to transfer
- Return: AH = SCSI status byte (if early return mode is clear)
- CF clear if successful
- AL = SCSI message byte (if early return mode is clear)
- CF set on error
- AL = error code (see #03786)
- Note: this command receives data using DMA
- SeeAlso: AH=11h,AH=12h
- Format of TARGA.DEV SCSI Command:
- Offset Size Description (Table 03807)
- 00h BYTE length of command
- 01h ??? command bytes
- --------d-7814-------------------------------
- INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (DMA)
- AH = 14h
- DS:SI -> command bytes (see #03808)
- ES:BX -> data storage area
- DX:CX = number of data bytes to transfer
- Return: AH = SCSI status byte (if early return mode is clear)
- CF clear if successful
- AL = SCSI message byte (if early return mode is clear)
- CF set on error
- AL = error code (see #03786)
- Note: this command sends data using DMA
- SeeAlso: AH=12h,AH=13h
- Format of TARGA.DEV SCSI Command:
- Offset Size Description (Table 03808)
- 00h BYTE length of command
- 01h ??? command bytes
- --------d-7815-------------------------------
- INT 78 - TARGA.DEV - FINISH DATA TRANSFER (DMA)
- AH = 15h
- Return: AH = SCSI status byte
- CF clear if successful
- AL = SCSI message byte
- CF set on error
- AL = error code (see #03786)
- Note: if AH=06h was previously called to set the early return mode, this
- function finishes a command AH=13h or AH=14h which returned before
- the last DMA transfer was finished
- SeeAlso: AH=06h,AH=13h,AH=14h
- --------V-79---------------------------------
- INT 79 - AVATAR.SYS - FAST GET KEYSTROKE
- Return: CF set if no keystroke available
- AX = FFFFh
- CF clear if key pressed
- AX = keystroke
- Program: AVATAR.SYS is a CON driver by George Adam Stanislav which interprets
- AVATAR command codes just as ANSI.SYS interprets ANSI commands
- Note: if a keystroke is available, it is removed from the keyboard buffer
- before being returned
- SeeAlso: INT 29,INT 2F/AX=1A00h/BX=4156h
- --------E-79---------------------------------
- INT 79 - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ1
- Notes: this vector is overwritten when GO32 starts but is not restored by
- early versions of the extender
- the newest versions of GO32 dynamically allocate the vectors used
- for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
- SeeAlso: INT 09,INT 78"GO32",INT 7A"GO32"
- --------d-79---------------------------------
- INT 79 U - ADP-60 IDE adapter - ???
- SeeAlso: INT 78"ADP-60"
- --------E-79---------------------------------
- INT 79 - DBOS DOS Extender
- details not available
- Desc: this interrupt is used by an MS Windows virtual device driver with
- which the DBOS extender communicates when run inside a Windows
- Enhanced Mode DOS box
- SeeAlso: INT 78"DBOS"
- --------A-790001-----------------------------
- INT 79 R - AutoCAD Device Interface - DIGITIZER - INITIALIZE
- AX = 0001h
- BX = interface level (0001h)
- Return: AX = status (0000h initialization failed, 0001h init successful)
- BX = digitizer type
- 0000h relative pointing device (mouse, etc.)
- 0001h digitizing tablet
- CX = digitizer dataflow type
- 0000h continuous
- 0001h pauses between packets
- SeeAlso: AX=0002h,AX=0003h,INT 7A/AX=0001h"AutoCAD"
- --------A-790002-----------------------------
- INT 79 R - AutoCAD Device Interface - DIGITIZER - TERMINATE
- AX = 0002h
- SeeAlso: AX=0001h,AX=0003h
- --------A-790003-----------------------------
- INT 79 R - AutoCAD Device Interface - DIGITIZER - GET DIGITIZER STATUS
- AX = 0003h
- Return: AX = status
- 0000h nothing
- 0002h tracking point (no button pressed)
- BX = X coordinate
- CX = Y coordinate
- 0003h picked point (button 0,A,B,C,D pressed)
- BX = X coordinate
- CX = Y coordinate
- 0004h button pick
- BX = button number
- 0005h button and coordinates
- BX = button number
- CX = X coordinate
- DX = Y coordinate
- SeeAlso: AX=0001h,AX=0002h
- --------N-7A---------------------------------
- INT 7A U - Topware Network Operating System - ???
- AL = ???
- ???
- Return: ???
- SeeAlso: INT 21/AX=FF00h"Topware",INT 2F/AX=FF00h
- --------N-7A---------------------------------
- INT 7A - X.PC Packet software interface
- ES:BX -> parameter block
- SeeAlso: INT 60/AX=01FFh
- --------E-7A---------------------------------
- INT 7A - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ2
- Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
- GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
- Notes: this vector is overwritten when GO32 starts but is not restored by
- early versions of the extender
- the newest versions of GO32 dynamically allocate the vectors used
- for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
- SeeAlso: INT 0A"IRQ2",INT 79"GO32",INT 7B"GO32"
- --------P-7A---------------------------------
- INT 7A O - PRINDIR - API (moved to INT 7C, then INT 2F/AX=7F00h)
- SeeAlso: INT 7C"PRINDIR",INT 2F/AX=7F00h"PRINDIR"
- --------N-7A---------------------------------
- INT 7A - Novell NetWare - LOW-LEVEL API - Notes
- Note: this interrupt is used for IPX/SPX access in NetWare versions through
- 2.0a; in later versions, you should use INT 2F/AX=7A00h to get an
- entry point even though INT 7A still exists. For both INT 7A and
- the FAR entry point, BX contains the function number; IPX is
- sometimes called internally with BX bit 15 set, which causes the
- handler to bypass some initial checks and an optional call to the
- IPX Windows support handler set with INT 2F/AX=7AFFh/BX=0000h
- (see #02926)
- SeeAlso: INT 2F/AX=7A00h,INT 64"Novell",INT 7A/BX=0000h
- --------N-7A----BX0000-----------------------
- INT 7A - Novell NetWare - IPX Driver - OPEN SOCKET
- BX = 0000h
- AL = socket longevity
- 00h open until close or terminate
- FFh open until close
- DX = socket number (high byte in DL)
- 0000h dynamic allocation
- else socket to open (see #03809)
- Return: AL = return code
- 00h success
- DX = socket number
- FEh socket table full
- FFh socket already open
- Notes: TSRs which need to use sockets should set AL to FFh, non-resident
- programs should normally use AL=00h
- IPX can be configured to support up to 150 open sockets on a
- workstation, and defaults to 20
- this function is supported by Advanced NetWare 1.02+
- SeeAlso: INT 7A/BX=0001h,INT 7A/BX=0004h,INT 7A/BX=0023h
- (Table 03809)
- Values for IPX socket number:
- 0451h File Service (NetWare Core Protocol)
- 0452h Service Advertising Protocol (see #03817)
- 0453h Routing Information Packet (see #03820)
- 0455h NetBIOS Packet
- 0456h diagnostics
- 0457h server serial numbers (labeled "Copy Protection" by Lanalyzer)
- 2222h NetWare Core Protocol
- 4000h-7FFFh used for dynamic allocation
- 4444h Brightwork Development's SiteLock server
- 5555h Brightwork Development's SiteLock client (workstation)
- 8000h-FFFFh assigned by Novell
- 869Ch ID Software's DOOM
- Note: SiteLock is an application metering product using IPX to communicate
- between the application and the license server
- --------N-7A----BX0001-----------------------
- INT 7A - Novell NetWare - IPX Driver - CLOSE SOCKET
- BX = 0001h
- DX = socket number (high byte in DL) (see #03809)
- Notes: also cancels events set by any Event Control Blocks for the socket
- the program must close all open sockets before terminating
- this function is supported by Advanced NetWare 1.02+
- SeeAlso: BX=0000h
- --------N-7A----BX0002-----------------------
- INT 7A - Novell NetWare - IPX Driver - GET LOCAL TARGET
- BX = 0002h
- ES:SI -> target internetwork address (see #03824 at INT 7A/BX=000Bh)
- ES:DI -> 6-byte buffer for local target
- Return: AL = return code
- 00h success
- CX = expected one-way transfer time (clock ticks) for a 576-byte
- packet
- ES:DI -> local target
- FAh unsuccessful (no path to destination)
- Notes: the internetwork address consists of a 4-byte network address followed
- by a 6-byte node address. The local target is only a 6-byte node
- address. If the target is in the same network, the local target is
- just the node address of target; otherwise, the local target is the
- node address of the bridge that leads to the target.
- this function may be called from inside IPX and AES Event Service
- Routines, but not from other interrupt handlers
- this function is supported by Advanced NetWare 1.02+
- SeeAlso: BX=0009h
- --------N-7A----BX0003-----------------------
- INT 7A - Novell NetWare - IPX Driver - SEND PACKET
- BX = 0003h
- ES:SI -> Event Control Block (see #03810,#03811)
- Notes: returns immediately; IPX attempts to send the packet in the background
- this function is supported by Advanced NetWare 1.02+
- this function is nearly identical to BX=000Fh, except that it always
- copies the source address into the IPX header assumed to be at the
- beginning of the first fragment
- SeeAlso: BX=0004h,BX=000Fh,INT 21/AH=EEh"Novell"
- Format of IPX Event Control Block:
- Offset Size Description (Table 03810)
- 00h DWORD Link
- 04h DWORD -> Event Service Routine (00000000h if none) (see #03814)
- 08h BYTE in use flag (see #03812)
- 09h BYTE completion code (see #03813)
- 0Ah WORD (big-endian) socket number (see #03809)
- 0Ch 4 BYTEs IPX workspace
- 10h 12 BYTEs driver workspace
- 1Ch 6 BYTEs immediate local node address
- 22h WORD fragment count
- 24h var fragment descriptors
- Offset Size Description
- 00h DWORD -> fragment data
- 04h WORD size of fragment in bytes.
- Notes: ESR is a far procedure that is called when the ECB has been handled.
- On call, the in use flag is zero if the ECB has been handled,
- non-zero otherwise. If the flag is zero, the completion code holds
- the result of the event.
- the first fragment should start with an IPX header (see #03815)
- all fragments are concatenated and sent in one piece
- node address FFh FFh FFh FFh FFh FFh broadcasts to all nodes
- SeeAlso: #03811
- Format of AES-ECB:
- Offset Size Description (Table 03811)
- 00h DWORD Link
- 04h DWORD ESR (Event Service Routine) address (see #03814)
- 08h BYTE in use flag (see #03812)
- 09h 5 BYTEs AES workspace
- SeeAlso: #03810
- (Table 03812)
- Values for ECB in use flag:
- 00h available
- E0h AES temporary
- F6h \ special IPX/SPX processing for v3.02+
- F7h /
- F8h IPX in critical section
- F9h SPX listening
- FAh processing
- FBh holding
- FCh AES waiting
- FDh AES couting down delay time
- FEh awaiting packet reception
- FFh sending packet
- SeeAlso: #03810,#03811,#03813
- (Table 03813)
- Values for ECB completion code:
- 00h success
- ECh remote terminated connection without acknowledging packet
- EDh abnormal connection termination
- EEh invalid connection ID
- EFh SPX connection table full
- F9h event should not be cancelled
- FAh cannot establish connection with specified destination
- FCh cancelled
- FDh malformed packet
- FEh packet undeliverable
- FFh physical error
- SeeAlso: #03810,#03812
- (Table 03814)
- Values Event Service Routine is called with:
- AL = caller's identity (00h = AES, FFh = IPX)
- ES:SI -> event control block
- interrupts disabled
- Return: all registers preserved
- SeeAlso: #03810,#03815
- Format of IPX header:
- Offset Size Description (Table 03815)
- 00h WORD (big-endian) checksum
- 02h WORD (big-endian) length in bytes of total packet
- 04h BYTE transport control
- 05h BYTE packet type (see #03816)
- 06h 10 BYTEs destination internetwork address
- 10h WORD (big-endian) destination socket
- 12h 10 BYTEs source internetwork address
- 1Ch WORD (big-endian) source socket
- Notes: an IPX packet has the identical format as a Xerox Network Standard
- (XNS) packet
- the application must set packet type, destination address, and
- destination socket; IPX/SPX set the remaining fields
- SeeAlso: #03810,#03826
- (Table 03816)
- Values for IPX packet type:
- 00h unknown packet type
- 01h routing information packet
- 02h echo packet
- 03h error packet
- 04h packet exchange packet (always use this one for data)
- 05h SPX packet (see #03826)
- 11h NetWare Core Protocol (also used by Service Advertising Protocol)
- 14h Propagated Packet (for NetWare), NetBIOS name packet
- 15h-1Eh experimental protocols
- Note: undocumented packet type 14h will cross up to 16 networks deep in
- all directions; as Aaron Martin of Origin Systems discovered, the
- first 64 bytes of the IPX data in such packets should be considered
- reserved, as IPX places the traversed server nodes there.
- Format of Service Advertising Protocol Service Query Packet:
- Offset Size Description (Table 03817)
- 00h 30 BYTEs IPX header
- 1Eh WORD (big-endian) query type
- 0001h general find service
- 0003h find nearest server
- 20h WORD (big-endian) server type
- (see #01890 at INT 21/AH=E3h"CONNECTION CONTROL")
- SeeAlso: #03818
- Format of Service Advertising Protocol Server Identification Packet:
- Offset Size Description (Table 03818)
- 00h 30 BYTEs IPX header
- 1Eh WORD (big-endian) response type
- 0002h general service
- 0004h nearest service
- 20h 64N BYTEs server entries (1-7) (see #03819)
- SeeAlso: #03817,#03820
- Format of SAP server entry:
- Offset Size Description (Table 03819)
- 00h WORD (big-endian) server type
- (see #01890 at INT 21/AH=E3h"CONNECTION CONTROL")
- 02h 48 BYTEs ASCIZ server name
- 32h 2 WORDs (big-endian) network number
- 34h 3 WORDs (big-endian) node number
- 3Ch WORD (big-endian) socket number
- 3Eh WORD (big-endian) number of hops between caller and server
- 10h = Server Shutdown Advertising Packet
- SeeAlso: #03818
- Format of IPX Routing Information packet:
- Offset Size Description (Table 03820)
- 00h 30 BYTEs IPX header
- 1Eh WORD operation (0001h request, 0002h response)
- 20h 8N BYTEs network entries (1-50) (see #03821)
- SeeAlso: #03818
- Format of RIP network entry:
- Offset Size Description (Table 03821)
- 00h DWORD network number (FFFFFFFFh = general request)
- 04h WORD (response) number of hops
- 06h WORD (response) number of clock ticks to reach destination
- --------N-7A----BX0004-----------------------
- INT 7A - Novell NetWare - IPX Driver - LISTEN FOR PACKET
- BX = 0004h
- ES:SI -> Event Control Block (see BX=0003h)
- Return: AL = status
- 00h successful
- FFh no listening socket for packet
- Desc: this function provides IPX with an ECB for receiving an IPX packet, but
- does not wait for a packet to arrive
- Notes: the application must open a socket and initialize the ECB's ESR
- address, socket number, fragment count, and fragment descriptor
- fields before invoking this function
- there is no limit on the number of ECBs which may simultaneously be
- listening on a socket
- this function is supported by Advanced NetWare 1.02+
- SeeAlso: BX=0000h,BX=0003h
- --------N-7A----BX0005-----------------------
- INT 7A - Novell NetWare - IPX Driver - SCHEDULE IPX EVENT
- BX = 0005h
- AX = delay time in clock ticks
- ES:SI -> Event Control Block (see BX=0003h)
- Note: this function is supported by Advanced NetWare 1.02+
- SeeAlso: BX=0006h,BX=0007h,BX=0008h
- --------N-7A----BX0006-----------------------
- INT 7A - Novell NetWare - IPX Driver - CANCEL EVENT
- BX = 0006h
- ES:SI -> Event Control Block (see BX=0003h)
- Return: AL = return code (see #03822)
- Notes: cannot cancel packets which the node's driver has already sent
- this function is supported by Advanced NetWare 1.02+
- SeeAlso: BX=0005h
- (Table 03822)
- Values for IPX return code:
- 00h success
- F9h event in use
- FCh event cancelled
- FFh unsuccessful, event not in use, or unrecognized ECB flag
- --------N-7A----BX0007-----------------------
- INT 7A - Novell NetWare - IPX Driver - SCHEDULE SPECIAL EVENT
- BX = 0007h
- AX = delay time
- ES:SI -> Event Control Block (see BX=0003h)
- Note: this function is supported by Advanced NetWare 1.02+
- SeeAlso: BX=0006h
- --------N-7A----BX0008-----------------------
- INT 7A - Novell NetWare - IPX Driver - GET INTERVAL MARKER
- BX = 0008h
- Return: AX = interval marker in clock ticks (big-endian???)
- Notes: may be used to measure the time elapsed between two events, up to one
- hour
- this function is supported by Advanced NetWare 1.02+
- SeeAlso: BX=0005h
- --------N-7A----BX0009-----------------------
- INT 7A - Novell NetWare - IPX Driver - GET INTERNETWORK ADDRESS
- BX = 0009h
- ES:SI -> buffer for own internetwork address (see #03823)
- Return: ES:SI buffer filled
- SI destroyed
- Note: this function is supported by Advanced NetWare 1.02+
- SeeAlso: BX=0002h,BX=000Bh
- Format of IPX internetwork address:
- Offset Size Description (Table 03823)
- 00h 4 BYTEs (big-endian) network number
- 04h 6 BYTEs (big-endian) node number within network
- --------N-7A----BX000A-----------------------
- INT 7A - Novell NetWare - IPX Driver - RELINQUISH CONTROL
- BX = 000Ah
- Desc: this call indicates that the application is idle and permits the IPX
- driver to do some work
- Note: this function is supported by Advanced NetWare 1.02+
- SeeAlso: INT 15/AX=1000h,INT 21/AH=89h,INT 2F/AX=1680h
- --------N-7A----BX000B-----------------------
- INT 7A - Novell NetWare - IPX Driver - DISCONNECT FROM TARGET
- BX = 000Bh
- ES:SI -> internetwork address (see #03824)
- Return: nothing
- Notes: this function permits the network software on the remote machine to
- remove any virtual connection with the calling machine
- only use in point-to-point networks
- should never be called from within an Event Service Routine
- this function is supported by Advanced NetWare 1.02+
- SeeAlso: BX=0002h,BX=0009h
- Format of IPX internetwork address:
- Offset Size Description (Table 03824)
- 00h 4 BYTEs (big-endian) destination network
- 04h 6 BYTEs (big-endian) destination node
- 0Ah 2 BYTEs (big-endian) destination socket
- --------N-7A----BX000C-----------------------
- INT 7A U - Novell NetWare - IPX Driver - internal - INITIALIZE NETWORK ADDRESS
- BX = 000Ch
- CX:DX = global network address (see INT 7A/BX=0002h)
- ES:DI -> "OSINCRITICALSECTION" flag
- DS:SI -> current mode for socket
- Note: the address cannot be changed once it has been initialized
- SeeAlso: INT 7A/BX=0024h
- --------N-7A----BX000D-----------------------
- INT 7A U - Novell NetWare - IPX Driver - internal - IPX GET PACKET SIZE
- BX = 000Dh
- Return: AX = maximum packet size
- CX = retry count
- SeeAlso: BX=001Ah
- --------N-7A----BX000E-----------------------
- INT 7A U - Novell NetWare - IPX Driver - internal - TERMINATE SOCKETS
- BX = 000Eh
- Return: nothing
- Notes: this function terminates all sockets opened with the current mode; this
- may be intended for future enhancements as the socket mode never
- changes in v2.15
- called by the NetWare shell if a program terminates
- --------N-7A----BX000F-----------------------
- INT 7A - Novell NetWare - IPX Driver - INTERNAL - SEND PACKET
- BX = 000Fh
- ES:SI -> Event Control Block (see #03810 at BX=0003h)
- IPX header's checksum field must be set to FFFFh (see #03815)
- IPX header's total-length field must be set
- Note: nearly identical to function 0003h, but does not copy address into
- the first fragment, and bypasses normal error checking
- SeeAlso: BX=0003h
- --------N-7A----BX0010-----------------------
- INT 7A - Novell NetWare - SPX Driver - INSTALLATION CHECK
- BX = 0010h
- AL = 00h
- Return: AL = status
- 00h if SPX not installed
- F0h if IPX not installed
- FFh if SPX loaded
- BH = SPX major version
- BL = SPX minor version
- CX = maximum SPX connections
- DX = SPX connections available
- Notes: this function is supported by Advanced NetWare 2.1+
- this interrupt is used for IPX/SPX access in NetWare versions through
- 2.0a; in later versions, you should use INT 2F/AX=7A00h to get an
- entry point even though INT 7A still exists. For both INT 7A and
- the FAR entry point, BX contains the function number
- IPX is sometimes called internally with BX bit 15 set, which causes the
- entry point handler to bypass some checks and an optional call to
- the IPX Windows support handler set with INT 2F/AX=7AFFh/BX=0000h
- (see #02926)
- SeeAlso: BX=0015h
- --------N-7A----BX0011-----------------------
- INT 7A - Novell NetWare - SPX Driver - ESTABLISH SPX CONNECTION
- BX = 0011h
- AL = retry count
- AH = watchdog flag
- ES:SI -> Event Control Block (see #03810 at BX=0003h)
- Return: AL = status (00h,EFh,FDh,FFh) (see #03825)
- DX = assigned connection ID number
- Desc: attempt to establish a connection with a listening socket
- Notes: there should always be at least two SPX ECB's listening to a socket, so
- that NetWare can perform its internal packet exchanges
- the first fragment should start with a SPX header (see #03826). Fill
- in all destination addresses.
- this function is supported by Advanced NetWare 2.1+
- SeeAlso: BX=0000h,BX=0012h,BX=0013h,BX=0014h,BX=0015h
- (Table 03825)
- Values for SPX function status:
- 00h attempting to contact destination socket
- EEh no such connection
- EFh local connection table full
- FDh buffer size not 42 or fragment count not 1
- FFh sending socket not open
- Format of SPX header:
- Offset Size Description (Table 03826)
- 00h WORD (big-endian) checksum
- 02h WORD (big-endian) length in bytes of total packet
- 04h BYTE transport control
- 05h BYTE packet type (see #03816 at INT 7A/BX=0003h)
- 06h 10 BYTEs destination internet address
- 10h WORD (big-endian) destination socket
- 12h 10 BYTEs source internet address
- 1Ch WORD (big-endian) source socket
- 1Eh BYTE connection control (see #03827)
- 1Fh BYTE datastream type
- FEh terminate connection request packet
- FFh terminate connection acknowledgement packet
- other user-defined, ignored by SPX
- 20h WORD (big-endian) source connection ID
- 22h WORD (big-endian) destination connection ID
- 24h WORD (big-endian) sequence number
- 26h WORD (big-endian) acknowledge number
- 28h WORD (big-endian) allocation number
- SeeAlso: #03815
- Bitfields for SPX connection control:
- Bit(s) Description (Table 03827)
- 3-0 unused???
- 4 end of message
- 5 reserved
- 6 acknowledgement required
- 7 system packet
- --------N-7A----BX0012-----------------------
- INT 7A - Novell NetWare - SPX Driver - LISTEN FOR SPX CONNECTION
- BX = 0012h
- AH = watchdog flag (00h disabled, 01h enabled)
- AL = retry count (00h = default)
- ES:SI -> Event Control Block (see #03810 at BX=0003h)
- Return: nothing
- Notes: there should always be at least two SPX ECB's listening to a socket, so
- that NetWare can perform its internal packet exchanges
- this function is supported by Advanced NetWare 2.1+
- SeeAlso: BX=0011h,BX=0013h,BX=0014h
- --------N-7A----BX0013-----------------------
- INT 7A - Novell NetWare - SPX Driver - TERMINATE SPX CONNECTION
- BX = 0013h
- DX = connection ID to terminate
- ES:SI -> Event Control Block (see #03810 at BX=0003h)
- Note: this function is supported by Advanced NetWare 2.1+
- SeeAlso: BX=0011h,BX=0012h,BX=0014h
- --------N-7A----BX0014-----------------------
- INT 7A - Novell NetWare - SPX Driver - ABORT SPX CONNECTION
- BX = 0014h
- DX = connection ID to terminate
- Return: nothing
- Notes: this function is supported by Advanced NetWare 2.1+
- this function does not tell the other side that the connection has been
- terminated
- also aborts any outstanding Establish Connection, Terminate Connection,
- and Send Sequenced Packet commands
- SeeAlso: BX=0011h,BX=0013h
- --------N-7A----BX0015-----------------------
- INT 7A - Novell NetWare - SPX Driver - GET SPX CONNECTION STATUS
- BX = 0015h
- DX = connection ID
- ES:SI -> status buffer (see #03828)
- Return: AL = return code (00h,EEh) (see also #03825)
- 00h connection still valid
- ES:SI -> status buffer filled
- Note: this function is supported by Advanced NetWare 2.1+
- SeeAlso: BX=0010h,BX=0011h
- Format of SPX status buffer:
- Offset Size Description (Table 03828)
- 00h BYTE connection state
- 01h waiting to establish connection
- 02h starting (attempting to create connection)
- 03h connection established
- 04h terminating
- 01h BYTE watchdog flag
- bit 0: used internally by SPX
- bit 1: SPX watchdog is monitoring connection
- bits 2-7 used internally by SPX
- 02h WORD (big-endian) source connection ID
- 04h WORD (big-endian) destination connection ID
- 06h WORD (big-endian) sequence number of next packet sent
- 08h WORD (big-endian) acknowledge number, expected sequence number of
- next received packet
- 0Ah WORD (big-endian) maximum sequence number remote SPX may send
- without ACK from local SPX
- 0Ch WORD (big-endian) remote acknowledge number, next sequence number
- remote SPX expects to receive
- 0Eh WORD (big-endian) remote allocation number, maximum sequence number
- local SPX may send
- 10h WORD (big-endian) connection socket
- 12h 6 BYTEs immediate node address--bridge on local network to destination
- 18h 10 BYTEs destination internetwork address (see #03824 at INT 7A/BX=000Bh)
- 22h WORD (big-endian) retransmit count
- 24h WORD (big-endian) estimated roundtrip delay
- 26h WORD (big-endian) retransmitted packets
- 28h WORD (big-endian) suppressed packets
- 2Ah 12 BYTEs ??? (v2.15)
- --------N-7A----BX0016-----------------------
- INT 7A - Novell NetWare - SPX Driver - SEND SPX PACKET
- BX = 0016h
- DX = connection ID
- ES:SI -> Event Control Block (see BX=0003h)
- Notes: this function is supported by Advanced NetWare 2.1+
- CX may need to be 0001h ???
- SeeAlso: BX=0011h,BX=0017h
- --------N-7A----BX0017-----------------------
- INT 7A - Novell NetWare - SPX Driver - LISTEN FOR SPX PACKET
- BX = 0017h
- DX = connection ID (unused in v2.15)
- ES:SI -> Event Control Block (see BX=0003h)
- Notes: this function is supported by Advanced NetWare 2.1+
- CX may need to be 0001h ???
- SeeAlso: BX=0011h,BX=0016h
- --------N-7A----BX0018-----------------------
- INT 7A U - Novell NetWare - IPX Driver - internal - ADD DIAGNOSTIC ELEMENT
- BX = 0018h
- ES:SI -> diagnostic element (see #03829) to be added to Diagnostic Queue
- Note: this function is supported on file servers only under v2.15; v3.02 also
- supports it on workstations
- SeeAlso: BX=0019h
- Format of IPX diagnostic element:
- Offset Size Description (Table 03829)
- 00h DWORD pointer to next diagnostic element
- 04h DWORD pointer to function for ???
- 08h DWORD pointer to function for ???
- --------N-7A----BX0019-----------------------
- INT 7A U - Novell NetWare - IPX Driver - internal - CANCEL DIAGNOSTIC ELEMENT
- BX = 0019h
- ES:SI -> diagnostic element (see BX=0018h) to be removed
- Note: this function is supported on file servers only under v2.15; v3.02 also
- supports it on workstations
- SeeAlso: BX=0018h
- --------N-7A----BX001A-----------------------
- INT 7A - Novell NetWare - IPX Driver - GET DRIVER MAXIMUM PACKET SIZE
- BX = 001Ah
- Return: AX = maximum packet size with preamble (at least 576 bytes)
- CX = IPX retry count
- DS,FLAGS preserved
- SeeAlso: BX=000Dh
- --------N-7A----BX001B-----------------------
- INT 7A U - Novell NetWare - IPX Driver - INTERNAL
- BX = 001Bh
- ???
- Return: ???
- Notes: this function is supported on file servers only under v2.15; v3.02 also
- supports it on workstations
- used by NetWare Access Server, which may call INT 15/AX=1117h with
- BX=0000h in some cases (it uses a modified DESQview)
- --------N-7A----BX001C-----------------------
- INT 7A U - Novell NetWare - NetWare Access Server - GET ???
- BX = 001Ch
- Return: AX = length of ???
- ES:BX -> ???
- Notes: these functions are NOPs for standard IPX drivers such as IPXODI v2.12
- SeeAlso: INT 2F/AX=7AF1h,INT 7A/BX=001Dh,INT 7A/BX=001Eh
- --------N-7A----BX001D-----------------------
- INT 7A U - Novell NetWare - NetWare Access Server - GET ??? ECB AND SOCKET
- BX = 001Dh
- Return: DX = socket number chosen by IPX
- ES:SI -> ECB in IPX's code segment (will be listening)
- BX corrupted
- Notes: these functions are NOPs for standard IPX drivers such as IPXODI v2.12
- SeeAlso: INT 2F/AX=7AF1h,INT 7A/BX=001Ch,INT 7A/BX=001Eh
- --------N-7A----BX001E-----------------------
- INT 7A U - Novell NetWare - NetWare Access Server - GET ??? ECB
- BX = 001Eh
- Return: ES:SI -> ECB
- BX corrupted
- Notes: these functions are NOPs for standard IPX drivers such as IPXODI v2.12
- SeeAlso: INT 2F/AX=7AF1h,INT 7A/BX=001Ch,INT 7A/BX=001Dh
- --------N-7A----BX001F-----------------------
- INT 7A - Novell NetWare - IPXODI v2.12+ - GET IPX INFORMATION
- BX = 001Fh
- DX = 0000h
- Return: AX = ???
- BX:CX -> ??? entry point (see #03830) (undocumented)
- DX = feature flags
- bit 0: IPXODI rather than dedicated IPX
- bit 1: checksumming functions 0020h-0022h supported
- ES:SI -> array of words containing used socket number (undocumented);
- 0000h ends array
- all other registers except DS and FLAGS may be destroyed
- Note: IPXODI v2.12 is distributed as part of the Personal NetWare system
- bundled with Novell DOS 7
- SeeAlso: BX=0020h,INT 2F/AX=7A2Fh
- (Table 03830)
- Call IPXODI entry point with:
- ES:SI -> ECB??? (offset 24h is far pointer to ??? data)
- --------N-7A----BX0020-----------------------
- INT 7A - Novell NetWare - IPXODI v2.12+ - SEND WITH CHECKSUM
- BX = 0020h
- ES:SI -> ECB (see #03810 at INT 7A/BX=0003h)
- Return: DS,FLAGS preserved
- BX,BP corrupted (documented as potentially destroying all other regs)
- Desc: generate a checksum for the packet data and store it in the IPX
- checksum field before transmitting the packet
- SeeAlso: BX=001Fh,BX=0021h,BX=0022h,INT 2F/AX=7A2Fh
- --------N-7A----BX0021-----------------------
- INT 7A - Novell NetWare - IPXODI v2.12+ - IPX GENERATE CHECKSUM
- BX = 0021h
- ES:SI -> ECB data (see #03810 at INT 7A/BX=0003h)
- Return: ES,DS,SI preserved
- BX,BP corrupted, all other registers potentially destroyed
- Notes: the checksum and TransportControl fields of the IPX packet are updated
- this function enables interrupts and is fully reentrant
- SeeAlso: BX=001Fh,BX=0020h,BX=0022h,INT 2F/AX=7A2Fh
- --------N-7A----BX0022-----------------------
- INT 7A - Novell NetWare - IPXODI v2.12+ - IPX VERIFY CHECKSUM
- BX = 0022h
- ES:SI -> ECB data (see #03810 at INT 7A/BX=0003h)
- Return: AX = status (0000h checksum matches)
- DS,ES,SI preserved
- BX,BP corrupted, all other registers potentially destroyed
- Note: this function enables interrupts and is fully reentrant
- SeeAlso: BX=001Fh,BX=0020h,BX=0021h,INT 2F/AX=7A2Fh
- --------N-7A----BX0023-----------------------
- INT 7A - Novell NetWare - IPXODI v2.12+ - OPEN LOOK-AHEAD SOCKET
- BX = 0023h
- DX = socket number (0000h for dynamic allocation)
- ES:SI -> Look Ahead handler (see #03831)
- BP = desired lookahead size (0000h-0080h)
- Return: AL = status
- 00h successful
- DX = assigned socket number (big-endian)
- FEh maximum number of sockets already open
- FFh specific socket already opened by another application
- DS,FLAGS preserved
- all other registers may be destroyed
- Notes: the socket will always be long-lived, and must thus be explicitly
- closed with INT 7A/BX=0001h before the Look Ahead handler code is
- removed from memory (i.e. the program terminates)
- this function is only supported if INT 2F/AX=7A00h returns ES:BX
- pointing at an IPX version greater than 3.30
- the desired lookahead size is the smallest-size packet (including IPX
- header) that should be passed to the lookahead handler when it
- arrives
- SeeAlso: INT 7A/BX=0000h,INT 7A/BX=0001h
- (Table 03831)
- Call IPX Look-Ahead handler with:
- AX = packet's destination socket
- DS:SI -> look-ahead structure (see #03010 at INT 2F/AX=C000h"LSL")
- DF clear
- interrupt disabled (must remain disabled)
- Return: AX = packet use
- 0000h application want packet
- ES:SI -> ODI ECB (see #03011 at INT 2F/AX=C000h"LSL")
- 8001h application does not want packet
- ZF set if AX=0000h
- DS,DI,BP,SS,SP preserved
- interrupts disabled
- --------N-7A----BX0024-----------------------
- INT 7A U - Novell NetWare - IPXODI v2.20+ - SET INTERNETWORK ADDRESS
- BX = 0024h
- ES:SI -> buffer containing internetwork address (see #03824)
- Return: BX,CX,SI,DI,ES destroyed
- Note: this function differs from INT 7A/BX=000Ch in that it unconditionally
- sets the address
- SeeAlso: INT 7A/BX=000Ch
- --------A-7A0001-----------------------------
- INT 7A R - AutoCAD Device Interface - DISPLAY - INITIALIZE (INIT1)
- AX = 0001h
- BX = configuration
- CX = interface level (0001h)
- Return: AX = status
- 0000h initialization failed
- 0001h pre-v4.0 driver initialized successfully
- 0003h post-v3.1 driver initialized successfully (driver truncates
- excessivly long packets)
- BX = width of graphics area in pixels, or 0000h if using packet
- communication
- DX:CX -> packet-mode entry point (see #03832)
- SeeAlso: AX=0001h,AX=0200h,AX=07D0h,INT 61/AX=0007h"OPTIMA",INT 78"AutoCAD"
- SeeAlso: INT 79/AX=0001h,INT 7B/AX=8001h"AutoCAD",INT 7C"AutoShade"
- (Table 03832)
- Call packet-mode entry point with:
- STACK: DWORD pointer to request packet (see #03833)
- WORD length of packet
- Format of request packet:
- Offset Size Description (Table 03833)
- 00h WORD function number (00h-45h for Compaq VGADI41.EXE)
- --------A-7A0200BX0000-----------------------
- INT 7A R - AutoCAD Device Interface - RENDERING DEVICE - INITIALIZE (RDLINKUP)
- AX = 0200h
- BX = 0000h
- CX = interface level (0001h)
- Return: BX = 0000h (driver uses packet communication)
- DX:CX -> packet-mode entry point (see #03832)
- SeeAlso: AX=0001h"AutoCAD",INT 79/AX=0001h,INT 7B/AX=8001h"AutoCAD"
- --------I-7A04-------------------------------
- INT 7A - IBM 3270 Workstation Program API - CREATE A QUEUE
- AH = 04h
- ???
- Return: ???
- SeeAlso: AH=06h
- --------I-7A06-------------------------------
- INT 7A - IBM 3270 Workstation Program API - DELETE A QUEUE
- AH = 06h
- ???
- Return: ???
- SeeAlso: AH=04h
- ----------7A07D0-----------------------------
- INT 7A R - AutoCAD Device Interface - Compaq VGADI41.EXE - GET ENTRY POINT
- AX = 07D0h
- Return: AX = ??? (0003h)
- BX = 0000h
- DX:CX -> ADI entry point (see AX=0001h)
- SeeAlso: AX=0001h
- --------I-7A09--BX8020-----------------------
- INT 7A - IBM 3270 Workstation Program API - SESSION SERVICES
- AH = 09h
- BX = 8020h (synchronous request)
- CX = 0000h
- DX = ID of session manager (SESSMGR)
- AL = service (see #03834)
- ES:DI -> control block
- Return: ???
- (Table 03834)
- Values for service:
- 01h get session ID
- 02h get session info
- 04h dettach from session
- 05h attach to session
- 06h get list of windows available
- 07h get environment of window
- 08h get 'PIF' (program information file) info
- 0Ah get base window ID
- 0Bh get cursor info
- --------I-7A09--BX8020-----------------------
- INT 7A - IBM 3270 Workstation Program API - KEYBOARD SERVICES
- AH = 09h
- BX = 8020h (synchronous request)
- CX = 0000h
- DX = ID of keyboard manager
- AL = service number (see #03835)
- ES:DI -> control block
- Return: ???
- (Table 03835)
- Values for 3270 Workstation Program keyboard service:
- 01h connect to keyboard
- 02h disconnect from keyboard
- 03h read from keyboard
- 04h send keystroke to session
- 05h disable input
- 06h enable input
- 07h update status code
- --------I-7A09--BX8020-----------------------
- INT 7A - IBM 3270 Workstation Program API - WINDOW SERVICES
- AH = 09h
- BX = 8020h (synchronous request)
- CX = 00FFh
- DX = ID of window service controller (WSCTRL)
- AL = service number (see #03836)
- ES:DI -> control block
- Return: ???
- (Table 03836)
- Values for 3270 Workstation Program window service:
- 01h connect to WS control
- 02h disconnect from WS control
- 03h add a window
- 04h change window's position on screen
- 05h change window's size
- 06h change window's color
- 07h change window's position in the presentation space
- 08h hide/unhide toggle
- 09h enlarge/reduce toggle
- 0Ah change screen background color
- 0Bh get window's position on screen
- 0Ch get window's size
- 0Dh get window's color
- 0Eh get window's position in the presentation space
- 0Fh determine whether hidden
- 10h determine whether enlarged
- 11h get background color
- 12h get window names
- 13h delete all windows from profile
- 14h pick active window
- 15h redraw screen
- 16h redraw window
- 17h delete a window from profile
- 18h get active window
- 19h get active screen
- 1Ah get window data
- 1Bh change window data
- 1Ch select active screen
- --------I-7A09--BX8020-----------------------
- INT 7A - IBM 3270 Workstation Program API - PRESENTATION SPACE SERVICES
- AH = 09h
- BX = 8020h
- CX = 00FFh
- DX = ID of PCPSM
- AL = service
- 01h define presentation space
- 02h delete presentation space
- 03h display presentation space
- 04h position cursor in presentation space
- 05h change default presentation space
- ES:DI -> control block
- Return: ???
- --------I-7A09--BX8020-----------------------
- INT 7A - IBM 3270 Workstation Program API - 3270 EMULATION
- AH = 09h
- BX = 8020h
- CX = 00FFh
- DX = ID of 3270EML
- AL = service
- 01h connect
- 02h disconnect
- ES:DI -> control block
- Return: ???
- --------I-7A09--BX8020-----------------------
- INT 7A - IBM 3270 Workstation Program API - OPERATOR INFORMATION AREA
- AH = 09h
- BX = 8020h
- CX = 00FFh
- DX = ID of OIAM
- AL = service
- 01h read Operator Information Area
- 02h read OIA subset
- ES:DI -> control block
- Return: ???
- Note: the OIA is the 25th line on the Host session
- --------I-7A09--BX8020-----------------------
- INT 7A - IBM 3270 Workstation Program API - TRANSLATE DATA
- AH = 09h
- BX = 8020h
- CX = 00FFh
- DX = ID of XLATE
- AL = service
- 01h translate from host characters to ASCII and vice versa
- (determined by control block byte 11)
- ES:DI -> control block
- Return: ???
- --------I-7A09--BX8020-----------------------
- INT 7A - IBM 3270 Workstation Program API - COPY SERVICE
- AH = 09h
- BX = 8020h
- CX = 00FFh
- DX = ID of copy service
- AL = service
- 01h copy string from one presentation space to another
- 02h copy block from one presentation space to another
- 03h connect to PC session for copy
- 04h disconnect PC session from copy
- ES:DI -> control block
- Return: ???
- --------I-7A09--BX8020-----------------------
- INT 7A - IBM 3270 Workstation Program API - Multi-DOS
- AH = 09h
- BX = 8020h
- CX = 00FFh
- ES:DI -> control block
- DX = ID of INDJQRY
- get environment size
- = ID of INDJASY
- request DOS functions from workstation
- = ID of MEMORY
- AL = function
- 01h allocate memory
- 02h deallocate memory
- 03h modify allocated size
- Return: ???
- --------I-7A09-------------------------------
- INT 7A - IBM 3270 Workstation Program API - HOST SERVICES
- AH = 09h
- BX = request type (4000h async, 8028h synchronous)
- CX = 0000h
- DX = ID of MFIC
- AL = service (see #03837)
- ES:DI -> control block
- (Table 03837)
- Values for 3270 Workstation Program host service:
- 01h connect to host
- 02h disconnect from host
- 03h read DFT structured data from host
- 04h write DFT structured data to host
- 05h create a host buffer
- --------I-7A13-------------------------------
- INT 7A - IBM 3270 Workstation Program API - GET DATA FROM A QUEUE
- AH = 13h
- ???
- Return: ???
- ----------7A7A-------------------------------
- INT 7A - Canon IX-30F Image Scanner SI3.SYS - INTERFACE
- AH = 7Ah
- ???
- Return: AX = status
- 0000h success
- 000Eh undefined function code
- Range: unknown, selected by device driver commandline arguments
- --------I-7A81-------------------------------
- INT 7A - IBM 3270 Workstation Program API - RESOLVE A GATE NAME
- AH = 81h
- ES:DI -> 8-char blank-padded gate name (see #03838)
- Return: DX = gate ID
- (Table 03838)
- Values for 3270 Workstation Program gate name:
- "SESSMGR "
- "KEYBOARD"
- "WSCTRL "
- "MFIC "
- "PCPSM "
- "3270EML "
- "COPY "
- "XLATE "
- "OIAM "
- "MEMORY "
- "INDJQRY "
- "INDJASY "
- --------I-7A83-------------------------------
- INT 7A - IBM 3270 Workstation Program API - GET COMPLETION RESULTS
- AH = 83h
- ???
- Return: ???
- --------I-7AFDCB-----------------------------
- INT 7A - IBM Personal Communications/3270 - INSTALLATION CHECK
- AX = FDCBh
- Return: DX:AX -> PCS/3270 signature block if loaded (see #03839)
- Format of Personal Communications/3270 signature block:
- Offset Size Description (Table 03839)
- 04h WORD PCS/3270 signature (5741h)
- 06h WORD version (0501h = PCS/3270 v1.0)
- --------I-7AFE01-----------------------------
- INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION
- AX = FE01h
- ???
- Return: ???
- SeeAlso: AX=FE02h
- --------I-7AFE02-----------------------------
- INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION
- AX = FE02h
- ???
- Return: ???
- SeeAlso: AX=FE01h
- --------I-7AFF01-----------------------------
- INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION
- AX = FF01h
- ES:DI -> API function handler routine
- Return: CX = 1200h
- SeeAlso: AX=FF02h,AX=FF03h
- --------I-7AFF02-----------------------------
- INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API TERMINATION
- AX = FF02h
- Return: CX = 1200h
- SeeAlso: AX=FF01h
- --------I-7AFF03-----------------------------
- INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION
- AX = FF03h
- ES:DI -> send/receive function handler routine
- Return: CX = 1200h
- SeeAlso: AX=FF01h
- --------I-7AFF04-----------------------------
- INT 7A U - IBM PC3270 EMUL PROG v3 - INTERNAL ???
- AX = FF04h
- ES:DI -> ???
- Return: CX = 1200h
- --------f-7B---------------------------------
- INT 7B - Btrieve API (single user)
- DS:DX -> 38-byte parameter record (see #03840)
- Return: return code field set
- Note: Btrieve sets low byte of vector to 33h; this serves as the installation
- check
- SeeAlso: INT 2F/AX=AB01h,INT 7F/AX=0200h
- Format of Btrieve parameter record:
- Offset Size Description (Table 03840)
- 00h DWORD pointer to data buffer
- 04h WORD data buffer length
- 06h DWORD pointer to 90-byte record containing positioning info
- (should be same for all calls for same file)
- 0Ah DWORD pointer to 38-byte FCB info buffer
- (should be same for all calls for same file)
- 0Eh WORD function code (see #03841)
- 10h DWORD pointer to file name/key buffer
- 14h BYTE key length
- 15h BYTE key number
- 16h DWORD pointer to status code (see #03842)
- 1Ah WORD interface code (version specific)
- 6176h version 5.10
- (Table 03841)
- Values for function code:
- 00h open
- 01h close
- 02h insert
- 03h update
- 04h delete
- 05h get_equal
- 06h get_next
- 07h get_prev
- 08h get_greater
- 09h get_gr_eql
- 0Ah get_less
- 0Bh get_less_eq
- 0Ch get_first
- 0Dh get_last
- 0Eh create
- 0Fh stat
- 10h extend
- 11h set_dir: set directory information
- 12h get_dir: get directory information
- 13h begin_trans
- 14h end_trans
- 15h abort_trans
- 16h get_pos: get record position number
- 17h get_direct: get data by sending record position
- 18h step_next
- 19h stop
- 1Ah version
- 1Bh unlock
- 1Ch reset
- 1Dh set owner
- 1Eh clear owner
- 1Fh create supplemental index
- 20h drop supplemental index
- 21h step first
- 22h step last
- 23h step previous
- 24h get next extended: get multiple records using a filter
- 25h get previous extended: get multiple records using a filter
- 26h step next extended: get multiple records using a filter
- 27h step previous extended: get multiple records using a filter
- 28h insert extended: insert one or more records
- 31h ???
- Notes: add 50 (32h) to any "get" operation to just return the key data
- add 100 (64h) for a single-record wait lock (automatically released
- on next get)
- add 200 (C8h) for a single-record nowait lock (nowait lock returns
- error 54h or 55h if record already locked)
- add 300 (12Ch) for a multiple-record wait lock (not released until
- unlock called)
- add 400 (190h) for a multiple-record nowait lock (nowait lock returns
- error 54h or 55h if record already locked)
- (Table 03842)
- Values for Btrieve status code:
- 00h successful
- 01h invalid operation
- 02h I/O error
- 03h file not open
- 04h key value not found
- 05h duplicate key value
- 06h invalid key number
- 07h different key number
- 08h invalid positioning
- 09h end of file
- 0Ah modifiable key value error
- 0Bh invalid file name
- 0Ch file not found
- 0Dh extended file error
- 0Eh pre-image open error
- 0Fh pre-image I/O error
- 10h expansion error
- 11h close error
- 12h disk full
- 13h unrecoverable error
- 14h record manager inactive
- 15h key buffer too short
- 16h data buffer length overrun
- 17h position block length
- 18h page size error
- 19h create I/O error
- 1Ah number of keys
- 1Bh invalid key position
- 1Ch invalid record length
- 1Dh invalid key length
- 1Eh not a Btrieve file
- 1Fh file already extended
- 20h extended I/O error
- 22h invalid extension name
- 23h directory error
- 24h transaction error
- 25h transaction is active
- 26h transaction control file I/O error
- 27h end/abort transaction error
- 28h transaction max files
- 29h operation not allowed
- 2Ah incomplete accelerated access
- 2Bh invalid record address
- 2Ch null key path
- 2Dh inconsistent key flags
- 2Eh access to file denied
- 2Fh maximum open files
- 30h invalid alternate sequence definition
- 31h key type error
- 32h owner already set
- 33h invalid owner
- 34h error writing cache
- 35h invalid interface
- 36h variable page error
- 37h autoincrement error
- 38h incomplete index
- 39h expanded memory error
- 3Ah compression buffer too short
- 3Bh file already exists
- 3Ch reject count reached
- 3Dh work space too small
- 3Eh incorrect descriptor
- 3Fh invalid extended insert
- 40h filter limit reached
- 41h incorrect field offset
- 4Ah automatic transaction abort
- 4Dh Btrieve engine busy or resource locked by another user
- 4Eh deadlock detected
- 50h conflict
- 51h lock error
- 52h lost position
- 53h read outside transaction
- 54h record in use
- 55h file in use
- 56h file table full
- 57h handle table full
- 58h incompatible open mode
- 5Ah redirected device table full
- 5Bh server error
- 5Ch transaction table full
- 5Dh incompatible lock type
- 5Eh permission error
- 5Fh session no longer valid
- 60h communications environment error
- 61h data message too small
- 62h internal transaction error
- --------I-7B---------------------------------
- INT 7B - Eicon Access API (3270/5250 gateways)
- SeeAlso: INT 5C"NetBIOS"
- --------E-7B---------------------------------
- INT 7B - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ3
- Notes: this vector is overwritten when GO32 starts but is not restored by
- early versions of the extender
- the newest versions of GO32 dynamically allocate the vectors used
- for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
- SeeAlso: INT 0B,INT 10/AH=FFh"GO32",INT 7A"GO32",INT 7C"GO32"
- --------A-7B---------------------------------
- INT 7B CR - AutoCAD Device Interface - PRINTER/PLOTTER - SEND PLOTTING DATA
- AX = data length (0000h-7FFFh)
- CX:BX -> data to be plotted
- DX = vertical position of line on page
- Return: nothing
- Notes: This interrupt is called by AutoCAD to perform its output
- A data length of 0000h indicates that a blank line is to be output
- SeeAlso: AX=8001h,AX=8002h,INT 78"AutoCAD",INT 7A/AX=0001h"AutoCAD"
- --------e-7B---------------------------------
- INT 7B U - MCI Express v2.11+ - DRIVER.EXE - ???
- Program: MCI Express is a front end to MCI Mail; DRIVER.EXE is its
- communication driver
- ----------7B---------------------------------
- INT 7B - Novell XQL - XQL PRIMITIVES MANAGER API
- DS:DX -> parameter block (see #03844)
- Return: parameter block updated
- (Table 03843)
- Values for Novell XQL function number:
- 00h log in
- 01h log out
- 02h "tNewFcn"
- 03h "tFreeFcn"
- 04h "tMoveFldFcn"
- 05h "tFieldFcn"
- 06h "tDescribeFcn"
- 07h "tFetchFcn"
- 08h "tComputeFcn"
- 09h "tOrderFcn"
- 0Ah "tRestrictFcn"
- 0Bh "tJoinFcn"
- 0Ch "tInsertFcn"
- 0Dh "tUpdateFcn"
- 0Eh "tUpdallFcn"
- 0Fh "tRemoveFcn"
- 10h "tRemallFcn"
- 11h "tResetFcn"
- 12h "tTransFcn"
- 13h "tStatFcn"
- 14h "tDDCreFcn"
- 15h "tStoreFcn"
- 16h "tRecallFcn"
- 17h "tStopFcn"
- 18h "tDDFileFcn"
- 19h "tDDFieldFcn"
- 1Ah "tDDIndexFcn"
- 1Bh "tDDModFcn"
- 1Ch "tDDViewFcn"
- 1Dh "tDDDrpFcn"
- 1Eh "tDDPathFcn"
- 1Fh "tDDAttrFcn"
- 20h "tDDFcn"
- 21h "tSecurFcn"
- 22h "tUserFcn"
- 23h "tAccessFcn"
- 24h "tPswdFcn"
- 25h "tCharFcn"
- 26h "tVersionFcn"
- 27h "tCnvFcn"
- 28h "tValFcn"
- 29h "tMaskFcn"
- SeeAlso: #03844
- Format of XQL parameter block:
- Offset Size Description (Table 03844)
- 00h 4 BYTEs signature "XQLP"
- 04h WORD function number (see #03843)
- 06h WORD handle
- 08h WORD status
- 0Ah WORD session ID
- 0Ch var data record (varies by function)
- ---function 00h---
- 0Ch DWORD -> user name
- 10h DWORD -> password
- 14h DWORD -> dictionary
- 18h DWORD -> filepath
- 1Ch DWORD -> machine name
- 20h WORD process ID
- ---function 01h---
- no additional fields???
- ---function 02h---
- 0Ch DWORD -> filename
- 10h DWORD -> owner name
- 14h WORD open mode
- ---function 03h---
- no additional fields???
- ---function 04h---
- 0Ch WORD "frompos"
- 0Eh WORD "topos"
- ---function 05h---
- 0Ch WORD subfunction
- 0Eh WORD position
- 10h WORD count
- 12h DWORD -> field list
- ---function 06h---
- 0Ch WORD subfunction
- 0Eh WORD length of description
- 10h WORD position
- 12h WORD count
- 14h DWORD pointer to description list
- ---function 07h---
- 0Ch WORD data length
- 0Eh WORD "op"
- 10h DWORD "select"
- 14h DWORD "reject"
- 18h DWORD pointer to data buffer
- ---function 08h---
- 0Ch DWORD -> field name
- 10h WORD field type
- 12h WORD field size
- 14h WORD "flddec"
- 16h WORD "explen"
- 18h DWORD pointer to "expbuf"
- ---function 09h---
- 0Ch WORD count
- 0Eh DWORD -> field list
- ---function 0Ah---
- 0Ch WORD "newexp"
- 0Eh WORD "explen"
- 10h DWORD -> "expbuf"
- ---function 0Bh---
- 0Ch DWORD -> filename
- 10h DWORD -> owner name
- 14h WORD type of join
- 16h WORD "pCount"
- 18h DWORD -> "pNames"
- 1Ch WORD "sCount"
- 1Eh DWORD -> "sNames"
- ---functions 0Ch, 0Dh, 0Fh---
- 0Ch WORD file count
- 0Eh DWORD -> file list
- 12h DWORD count
- 16h DWORD -> buffer
- ---function 0Eh---
- 0Ch WORD file count
- 0Eh DWORD -> file list
- 12h WORD "op"
- 14h DWORD "select"
- 18h DWORD "reject"
- 1Ch WORD count
- 1Eh DWORD -> "res"
- 22h DWORD -> "comp"
- ---function 10h---
- 0Ch WORD file count
- 0Eh DWORD -> file list
- 12h WORD "op"
- 14h DWORD "select"
- 18h DWORD "reject"
- ---function 11h---
- 0Ch DWORD machine name
- ---function 12h---
- 0Ch WORD option
- ---function 13h---
- 0Ch WORD subfunction
- 0Eh WORD length of buffer
- 10h DWORD -> buffer
- ---function 14h---
- 0Ch WORD subfunction
- 0Eh DWORD -> filename
- 12h WORD "create"
- 14h DWORD -> pathname
- 18h DWORD -> owner name
- 1Ch WORD owner access restrictions
- 1Eh WORD number of fields
- 20h DWORD -> field list
- 24h WORD number of keys
- 28h DWORD -> key list
- 2Ch WORD "buflen"
- 2Eh DWORD -> create parameters
- ---function 15h---
- 0Ch DWORD -> "StoreName"
- 10h WORD length of buffer
- 12h DWORD -> buffer
- ---function 16h---
- 0Ch DWORD -> "RecallName"
- 10h WORD owner number
- 12h DWORD -> owner list
- 16h WORD open mode
- 18h WORD length of buffer
- 1Ah DWORD -> buffer
- ---function 17h---
- no additional fields???
- ---function 18h---
- 0Ch WORD "rtype"
- 0Eh WORD count
- 10h DWORD -> "filebuf"
- 14h WORD length of following buffer
- 16h DWORD -> output buffer
- ---functions 19h, 1Ah---
- 0Ch WORD "rtype"
- 0Eh WORD count
- 10h DWORD -> field buffer
- 14h WORD length of following buffer
- 16h DWORD -> output buffer
- ---function 1Bh---
- 0Ch WORD subfunction
- 0Eh DWORD -> filename
- 12h WORD "create"
- 14h DWORD -> pathname
- 18h DWORD -> owner name
- 1Ch WORD owner access restrictions
- 1Eh WORD field count
- 20h DWORD -> field list
- 24h WORD number of keys
- 26h DWORD -> list of keys
- ---function 1Ch---
- 0Ch WORD count
- 0Eh DWORD -> view name
- 12h WORD length of following buffer
- 14h DWORD -> output buffer
- ---function 1Dh---
- 0Ch DWORD -> filename
- 10h WORD file type
- 12h WORD "deletepath"
- ---function 1Eh---
- 0Ch WORD "dirtype"
- 0Eh DWORD -> pathname
- ---function 1Fh---
- 0Ch WORD function
- 0Eh DWORD -> field name
- 12h WORD attribute
- 14h WORD size of buffer
- 16h DWORD -> buffer for attributes
- ---function 20h---
- 0Ch DWORD -> directory path
- 10h WORD function
- ---function 21h---
- 0Ch DWORD -> master password
- 10h WORD "securityflag"
- ---function 22h---
- 0Ch DWORD -> master password
- 10h WORD function (add/modify/remove)
- 12h DWORD -> user name
- 16h DWORD -> password
- 1Ah WORD global rights
- 1Ch WORD count
- 1Eh WORD length of following buffer
- 20h DWORD -> "userbuf"
- ---function 23h---
- 0Ch DWORD -> master password
- 10h DWORD -> user name
- 14h WORD function (allow/deny/getrights)
- 16h WORD rights
- 18h DWORD -> filename
- 1Ch WORD number of field names in following buffer
- 1Eh DWORD -> field names
- 22h WORD maximum buffer length
- 24h DWORD -> output buffer
- ---function 24h---
- 0Ch DWORD -> user name
- 10h DWORD -> password
- ---function 25h---
- 0Ch WORD "charFcn"
- 0Eh WORD "charType"
- 10h WORD "charValue"
- ---function 26h---
- 0Ch DWORD -> buffer
- ---function 27h---
- 0Ch WORD option
- 0Eh WORD type
- 10h WORD size
- 12h WORD "dec"
- 14h WORD "dsize"
- 16h DWORD -> value
- 1Ah DWORD -> "retval"
- 1Eh DWORD -> mask
- 22h WORD "justify"
- ---function 28h---
- 0Ch DWORD -> field name
- 10h WORD length of buffer
- 12h DWORD -> buffer for data
- ---function 29h---
- 0Ch WORD option
- 0Eh WORD type
- 10h WORD size
- 12h WORD "dec"
- 14h WORD length of mask
- 16h DWORD -> mask
- --------A-7B8001-----------------------------
- INT 7B R - AutoCAD Device Interface - PRINTER/PLOTTER - BEGIN PLOT
- AX = 8001h
- BX = file level
- 0000h binary file
- 0001h CAD/camera image file
- 0002h installed ADI driver
- CX = horizontal size in pixels
- DX = vertical size in pixels
- Return: AX = status (0000h initialization failed, 0001h init successful)
- BX = allowed output format
- 0000h monochrome
- 0001h color (4 bits per pixel)
- SeeAlso: AX=8002h,AX=8003h,INT 7B"AutoCAD",INT 7C"AutoShade"
- --------A-7B8002-----------------------------
- INT 7B R - AutoCAD Device Interface - PRINTER/PLOTTER - END PLOT
- AX = 8002h
- SeeAlso: AX=8001h,AX=8003h
- --------A-7B8003-----------------------------
- INT 7B R - AutoCAD Device Interface - PRINTER/PLOTTER - ABORT PLOT
- AX = 8003h
- SeeAlso: AX=8001h,AX=8002h
- --------r-7C---------------------------------
- INT 7C U - IBM REXX88PC command language
- ???
- --------E-7C---------------------------------
- INT 7C - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ4
- Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
- GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
- Notes: this vector is overwritten when GO32 starts but is not restored by
- early versions of the extender
- the newest versions of GO32 dynamically allocate the vectors used
- for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
- SeeAlso: INT 0C,INT 7B"GO32",INT 7D"GO32"
- --------P-7C---------------------------------
- INT 7C - PRINDIR v8.02-8.xx - API
- AH = function
- 00h set output to Invisible mode
- 01h set output to LPT1
- 02h set output to LPT2
- 03h set output to LPT3
- 04h set output to COM1
- 05h set output to COM2
- 06h set output to COM3
- 07h set output to COM4
- 08h set output to screen
- 09h set output to file
- 0Ah change file path
- ES:DI -> new path
- CX = length of path (max 41, but not range-checked)
- 0Bh change file name
- ES:DI -> new filename
- CX = length of new name (max 41, but not range-checked)
- 0Ch set redirected device
- (01h = LPT1 ... 03h = LPT3, 04h = COM1 ... 07h = COM4)
- 0Dh force buffer dump
- 0Eh set display color
- AL = new color attribute (see #00014 at INT 10/AH=08h)
- 0Fh set popup hotkey
- AL = hotkey scancode
- 10h toggle byte display
- AL = new state (00h off, 01h on)
- 11h change buffer flush delay
- AL = timer ticks before flush
- Return: AX = status
- 0000h successful
- 0001h invalid function or nothing in buffer to be dumped
- (documented as "nonzero = error")
- Program: PRINDIR is a shareware printer-redirection program by J.M. Allen
- Creations
- InstallCheck: test for the ASCIZ signature "PRINDIR N.NN" (where N.NN is the
- version number) two bytes beyond the start of the interrupt handler
- Note: prior versions of PRINDIR used INT 7A instead of INT 7C
- SeeAlso: INT 7A"PRINDIR",INT 2F/AX=7F00h"PRINDIR"
- Index: hotkeys;PRINDIR
- --------A-7C---------------------------------
- INT 7C - AutoShade v2 - RENDERING HARDCOPY DRIVER
- Note: this is the default interrupt vector for rendering hardcopy drivers
- instead of INT 7A used by AutoCAD drivers
- SeeAlso: INT 7A/AX=0001h"AutoCAD"
- --------N-7C---------------------------------
- INT 7C - SK-UPPS/SK-PASSPORT Data Link Interface (DLI) API
- Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
- which provides an API on top of it Data Link Interface, allowing the
- use of any of several network transport layers; this product is
- called SK-PASSPORT in the USA.
- InstallCheck: test for the ASCII signature string "UPPS_DLI" immediately
- preceding the interrupt handler
- Notes: To find the service interrupt being used by the driver, an application
- should scan through the interrupt table until it finds an interrupt
- vector with the "UPPS_DLI" string.
- There may be more than one DLI loaded, each having its own service
- interrupt.
- SeeAlso: AX=0000h,AX=0002h,AX=000Fh
- Index: installation check;SK-UPPS
- --------N-7C0000-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - GET DRIVER VERSION
- AX = 0000h
- Return: AH = major DLI version
- AL = minor DLI version
- DX = OEM signature (see #03845)
- CL = DLI 2.8+ topology: 1=Ethernet, 2=FDDI, 3=Token-Ring
- SeeAlso: AX=0002h,AX=000Bh,AX=000Dh,AX=000Eh
- (Table 03845)
- Values for SK-UPPS Data Link Interface OEM signature (defined by SK):
- 0001h experimental
- 3343h ('3C') 3COM
- 4942h ('IB') IBM
- 4943h ('IC') Intellicom
- 494Eh ('IN') Intel
- 4B4Fh ('KO') Kodiak
- 4D41h ('MA') Madge
- 4E45h ('NE') Novell
- 4F43h ('OC') Olicom
- 5349h ('SI') Siemens
- 534Bh ('SK') Schneider & Koch (SysKonnect)
- 5744h ('WD') Western Digital
- --------N-7C0001-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - DOWN DRIVER
- AX = 0001h
- Return: AX = completion code (see #03846)
- Note: the DLI will refuse to unload if there are any protocols
- (see AX=0007h) or clients (see AX=0010h) active.
- Index: uninstall;SK-UPPS Data Link Interface
- (Table 03846)
- Values for SK-UPPS completion code:
- 0000h SUCCESS
- 0005h INVALID_MULTICAST
- 0006h BUFFER_TOO_SMALL
- 0007h NO_BUFFERS_LEFT
- 0008h NO_RESOURCES_LEFT
- 000Bh ILLEGAL_PROTOCOL_ID
- 000Ch PROTOCOL_IN_USE
- 000Dh NO_MULTICAST_ADDRESS
- 000Fh PROTOCOLS_ACTIVE
- 0010h CLIENTS_ACTIVE
- 001Bh INVALID_MODE
- 001Ch MODE_NOT_SUPPORTED
- FFFFh UNKNOWN_SERVICE
- --------N-7C0002-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - GET DRIVER STATUS
- AX = 0002h
- ES:DI -> Status Information Block (SIB) (see #03858)
- Return: AX = completion code (see #03846)
- Note: GET DRIVER INFO (AX=000Eh) should be used instead.
- SeeAlso: AX=0000h,AX=000Bh,AX=000Dh,AX=000Eh
- --------N-7C0003-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - CHANGE DRIVER ADDRESS
- AX = 0003h
- ES:DI -> new node address (6 bytes)
- Return: AX = completion code (see #03846)
- Note: the DLI will refuse to change the address if any protocols
- (see AX=0007h) are active
- SeeAlso: AX=0001h,AX=000Eh
- --------N-7C0004-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - REQUEST BUFFER
- AX = 0004h
- DX = protocol ID (see AX=0007h,#03849)
- Return: AX = completion code (see also #03846)
- 0000h successful
- ES:BX -> Memory Buffer (Mbuf) (see #03847)
- Note: if the DLI has no free Mbufs, it will set an internal flag for the
- protocol and later call the protocol's Event Upcall with
- EV_BUFFER_AVAILABLE (see #03853,#03854) as soon as an Mbuf becomes
- available. There will only be one "buffer available" Upcall, even
- if this function has been called several times before.
- SeeAlso: AX=0005h,AX=0006h,AX=0012h,AX=0013h
- Format of SK-UPPS Memory Buffer (Mbuf):
- Offset Size Description (Table 03847)
- 00h DWORD -> NEXT Mbuf (linked list)
- 04h WORD OFFSET of actual data within DATA area
- 06h 2 BYTEs reserved (currently unused)
- 08h WORD LENGTH of actual data found in DATA area starting at OFFSET
- 0Ah 2 BYTEs reserved (currently unused)
- 0Ch DWORD -> DATA area (size can be obtained via AX=000Eh call)
- 10h WORD PROTOCOL ID of protocol currently "owning" the Mbuf
- 12h BYTE IN USE flag; nonzero if Mbuf still in use by DLI (see AX=0006h)
- 13h BYTE RECEIVE STATUS (bit 0-7 only; see AX=0007h - Receive Upcall)
- --------N-7C0005-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - RELEASE BUFFER
- AX = 0005h
- ES:BX -> Mbuf (see #03847)
- Return: nothing
- SeeAlso: AX=0004h
- --------N-7C0006-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - TRANSMIT FRAME
- AX = 0006h
- ES:BX -> Mbuf (see #03847)
- Return: nothing
- Notes: The DLI will send LENGTH bytes found in the Mbuf's DATA area starting
- at OFFSET. A complete and valid frame must be stored there. The DLI
- will only copy the current node address (see AX=0003h) to the
- source node field of the frame's MAC header.
- On Ethernet, the DLI will always send a minimum of 60 bytes, regardless
- of the value found in the LENGTH field.
- This function returns immediately; the DLI will call the protocol's
- Transmit Upcall (see #03848) when the frame has been sent.
- The Mbuf's IN USE field will be non-zero until the DLI calls the
- Transmit Upcall.
- SeeAlso: AX=0002h,AX=0004h,AX=0013h
- (Table 03848)
- Values SK-UPPS Transmit Upcall is called with:
- ES:BX -> Mbuf (NEXT field destroyed)
- interrupts disabled
- Note: On FDDI the bytes of the source and destination node fields in the MAC
- header have been bit-swapped to physical address format.
- --------N-7C0007-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - REGISTER PROTOCOL
- AX = 0007h
- ES:BX -> Protocol Control Block (see #03849)
- Return: AX = completion code (see #03846)
- Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
- which provides an API on top of its Data Link Interface, allowing the
- use of any of several network transport layers
- SeeAlso: AX=0008h,AX=000Bh
- Format of SK-UPPS Protocol Control Block (PCB):
- Offset Size Description (Table 03849)
- 00h WORD (big-endian) protocol type
- 02h WORD protocol mode (see #03850)
- 04h DWORD -> Receive Upcall routine (see #03851)
- 08h DWORD -> Transmit Upcall routine
- 0Ch DWORD -> Event Upcall routine (see #03853)
- 10h DWORD -> ASCIZ protocol name (zero if none)
- 14h WORD protocol ID will be returned here (always non-zero)
- Bitfields for SK-UPPS protocol mode:
- Bit(s) Description (Table 03850)
- 0 promiscuous mode; protocol receives all frames regardless of their
- destination (PROTOCOL TYPE must be FFFFh)
- 1 if set, protocol's Event Upcall will be called on entry and exit of the
- DLI's Interrupt Service Routine (see #03854)
- 2 DLI 2.2+ hook mode; protocol receives all directed frames destined for
- this station (PROTOCOL TYPE must be FFFFh)
- 3 DLI 2.3+ receive error frames (only valid in promiscuous mode (0))
- 4-5 DLI 2.5+ frame type:
- 00 Ethernet II; specify type code in PROTOCOL TYPE field (high-low)
- 01 IEEE 802.2; specify Service Access Point (SAP) in MSB
- (offset 0) of PROCOTOL TYPE field; LSB must be zero
- 10 IEEE 802.2 with SNAP header; specify type code in PROTOCOL TYPE
- field (high-low)
- 11 reserved (currently unused)
- 6 DLI 2.5+ if set, protocol's Event Upcall will be called with event code
- EV_BUFFER_WANTED, when DLI runs out of Mbufs
- 7 DLI 2.7+ chain mode; if set, client allows the specified frame type to
- be shared with other clients
- 8 DLI 2.8+ receive non-LLC frames rather than LLC frames
- 9 DLI 2.8+ receive all multicast frames (see also AX=0009h)
- 10-15 reserved (currently unused; must be zero)
- Notes: If PROTOCOL TYPE is FFFFh and neither the "promiscuous" nor the "hook"
- mode is set, the protocol receives all frames that did not match
- any registered frame type (demultiplexor mode).
- Protocols using "promiscuous", "hook" or "chain" mode should always
- return from the Receive Upcall with the received Mbuf in ES:BX and
- the Carry Flag set. The DLI will then pass the Mbuf to the FEED BACK
- BUFFER function (see AX=000Fh).
- Some DLIs do not support all or even any of the "promiscuous",
- "receive non-LLC" and "receive all multicasts" mode bits.
- SeeAlso: #03849
- (Table 03851)
- Values SK-UPPS Receive Upcall is called with:
- ES:BX -> Mbuf
- AX = receive status (see #03852) (also stored in Mbuf's RECEIVE STATUS field)
- interrupts disabled
- Return: nothing
- SeeAlso: #03853
- Bitfields for SK-UPPS receive status:
- Bit(s) Description (Table 03852)
- 0-2 reserved (0), currently unused
- 3 frame check sequence (FCS) error
- 4 overflow (frame too long)
- 5 framing error
- 6 reserved (0), currently unused
- 7 non-LLC frame (see #03850 [bit 8])
- 8-15 reserved (0), currently unused
- Notes: The protocol's Receive Upcall routine will be called whenever a frame
- matching the specified frame type is received. A received frame is
- passed to the protocol in the Mbuf's DATA area at OFFSET and its size
- is LENGTH bytes.
- The receive status passed to the Receive Upcall in register AL is
- always zero, except for protocols using "non-LLC" mode (8 of PCB's
- protocol mode field) or "promiscuous" mode together with "receive
- error frames" (0 & 3).
- Upcalls are FAR routines and must return with a RET FAR. If the Carry
- Flag is set on return from a Receive or Transmit Upcall, then ES:BX
- must point to an Mbuf, which the DLI will then pass to the RELEASE
- BUFFER function (see AX=0005h). See also notes for PROTOCOL MODE.
- (Table 03853)
- Values SK-UPPS Event Upcall is called with:
- AX = event code (see #03854)
- Return: nothing
- Note: All Event Upcalls may be ignored by the protocol.
- SeeAlso: #03851
- (Table 03854)
- Values for SK-UPPS Event Upcall event code:
- 00h EV_BUFFER_AVAILABLE client may now call REQUEST BUFFER (AX=0004h)
- 01h EV_ISR_START start of Interrupt Service Routine
- 02h EV_ISR_END end of ISR (see #03850 [bit 1])
- 03h EV_BUFFER_WANTED DLI temporarily out of Mbufs
- 04h EV_NETWORK_STATUS DLI 2.8+ network status -- DX=status (see #03855)
- 05h EV_IO_CONTROL DLI 2.8+ I/O control -- DX=subfunc (see AX=0016h)
- SeeAlso: #03853
- Bitfields for EV_NETWORK_STATUS in register DX:
- Bit(s) Description (Table 03855)
- Token-Ring FDDI
- 15 SIGNAL_LOSS SIGNAL_LOSS
- 14 HARD_ERROR HARD_ERROR
- 13 SOFT_ERROR SOFT_ERROR
- 12 TRANSMIT_BEACON TRANSMIT_BEACON
- 11 LOBE_WIRE_FAULT PATH_TEST_FAILED
- 10 AUTO_REMOVAL SELF_TEST_REQUIRED
- 9 reserved reserved
- 8 REMOVE_RECEIVED REMOTE_DISCONNECT
- 7 COUNTER_OVERFLOW reserved
- 6 SINGLE_STATION DUPLICATE_ADDRESS
- 5 RING_RECOVERY NO_RING_OP_STATUS
- 4 reserved VERSION_MISMATCH
- 3 reserved STUCK_BYPASS
- 2 reserved FDDI_EVENT
- 1 reserved RING_OP_CHANGE
- 0 reserved reserved
- Note: EV_NETWORK_STATUS is not supported on Ethernet
- --------N-7C0008-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - DISABLE PROTOCOL
- AX = 0008h
- BX = protocol ID (see #03849)
- Return: AX = completion code (see #03846)
- Note: the DLI will handle any Mbufs given to TRANSMIT FRAME (AX=0006h) as if
- they had been given to TRANSMIT FRAME RELEASE (AX=0013h).
- all multicast addresses registered for this protocol will be disabled.
- after this function returns, the protocol's Upcall routines will no
- longer be called.
- SeeAlso: AX=0007h,AX=000Bh
- --------N-7C0009-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - REGISTER MULTICAST
- AX = 0009h
- BX = protocol ID (see #03849)
- ES:DI -> multicast address (6 bytes)
- Return: AX = completion code (see #03846)
- Notes: The broadcast address is always enabled.
- Set bit 9 of PCB's protocol mode field in REGISTER PROTOCOL call
- (AX=0007h) to receive all multicast frames.
- SeeAlso: AX=000Ah,AX=0014h
- --------N-7C000A-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - DISABLE MULTICAST
- AX = 000Ah
- BX = protocol ID (see #03849)
- ES:DI -> multicast address (6 bytes)
- Return: AX = completion code (see #03846)
- SeeAlso: AX=0009h,AX=0014h
- --------N-7C000B-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - GET PROTOCOL LIST
- AX = 000Bh
- ES:DI -> protocol ID buffer
- CX = number of 2-byte protocol IDs that may be stored in buffer
- Return: AX = completion code (see #03846)
- CX = number of active protocols (regardless of value returned in AX)
- protocol ID buffer filled with active protocol IDs
- Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
- which provides an API on top of its Data Link Interface, allowing the
- use of any of several network transport layers
- Note: If the buffer supplied is too small, CX still contains the total number
- of active protocols and the buffer has been filled until full.
- SeeAlso: AX=000Ch,AX=0014h
- --------N-7C000C-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - GET PROTOCOL STATUS
- AX = 000Ch
- BX = protocol ID (see #03849,AX=000Bh)
- ES:DI -> Protocol Status Block (see #03856)
- Return: AX = completion code (see #03846)
- SeeAlso: AX=000Bh,AX=0014h
- Format of SK-UPPS Protocol Status Block (PSB):
- Offset Size Description (Table 03856)
- 00h DWORD -> ASCIZ protocol name
- 04h WORD protocol mode (see #03850)
- 06h WORD protocol type (see AX=0007h)
- 08h WORD number of registered multicasts (see AX=0009h,AX=0014h)
- --------N-7C000D-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - GET DRIVER STATISTICS
- AX = 000Dh
- BX = flag: 0=don't clear statistics, 1=clear statistics
- ES:DI -> Statistics Data Block (see #03857)
- Return: AX = completion code (see #03846)
- SeeAlso: AX=0002h,AX=0015h
- Format of SK-UPPS Statistics Data Block (SDB):
- Offset Size Description (Table 03857)
- 00h DWORD node uptime in ticks (1/18.21 sec.)
- 04h DWORD bytes received
- 08h DWORD bytes transmitted
- 0Ch DWORD frames received
- 10h DWORD frames transmitted
- 14h DWORD multicast bytes received
- 18h DWORD multicast frames received
- 1Ch DWORD unrecognized frames
- 20h WORD missed frames
- 22h WORD frame check sequence (FCS) errors
- 24h WORD framing errors
- 26h WORD babbling errors
- 28h WORD late collision errors
- 2Ah WORD loss of carrier errors
- 2Ch WORD 16 retries failed errors
- 2Eh WORD overflow errors
- Note: fields 26h through 2Ch are always zero, except in some very old
- versions of the DLI. Use GET MEDIA STATISTICS (AX=0015h) to get
- more detailed information.
- --------N-7C000E-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - DLI 2.5+ - GET DRIVER INFO
- AX = 000Eh
- ES:DI -> Driver Information Block (see #03858)
- BX = offset of 1st field within DIB to be returned
- CX = number of bytes to be returned
- Return: AX = completion code (see #03846)
- CX = number of bytes copied (regardless of value returned in AX)
- Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
- which provides an API on top of its Data Link Interface, allowing the
- use of any of several network transport layers
- SeeAlso: AX=0000h,AX=0002h,AX=000Bh,AX=000Dh,AX=0015h
- Format of SK-UPPS Driver Information Block (DIB):
- Offset Size Description (Table 03858)
- 00h 6 BYTEs physical node address (from adapter's ROM)
- 06h 6 BYTEs current node address (see AX=0003h)
- 0Ch BYTE adapter id (defined by OEM)
- 0Dh BYTE IRQ line (FFh if none)
- 0Eh DWORD -> shared memory (zero if none)
- 12h DWORD size of shared memory (zero if none)
- 16h WORD base I/O port (zero if none)
- 18h BYTE DMA line (FFh if none)
- 19h BYTE DLI 2.4+ topology (see AX=0000h)
- 1Ah WORD size of an Mbuf's DATA area (see #03847)
- 1Ch 2 BYTEs reserved (currently unused)
- 1Eh WORD total number of Mbufs the DLI has
- 20h WORD maximum number of Mbufs that can be allocated via REQUEST
- BUFFER (AX=0004h) and SYNC REQUEST BUFFER (AX=0012h)
- ---- end of Status Information Block returned by GET DRIVER STATUS (AX=0002h)
- 22h DWORD -> ASCIZ adapter name
- 26h WORD number of I/O ports used (zero if none)
- 28h DWORD line speed in bits/sec.
- --------N-7C000F-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - FEED BACK BUFFER
- AX = 000Fh
- ES:BX -> Mbuf (see #03847)
- Return: nothing
- Notes: A protocol may call this function instead of returning the Mbuf
- directly from the Receive Upcall if it is running in "promiscuous",
- "hook" or "chain" mode.
- SeeAlso: AX=0007h
- --------N-7C0010-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - CLIENT HOOK
- AX = 0010h
- Return: nothing
- Notes: An application having no active protocols may call this function to
- prevent the DLI from unloading.
- SeeAlso: AX=0001h,AX=0011h
- --------N-7C0011-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - CLIENT UNHOOK
- AX = 0011h
- Return: nothing
- Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
- which provides an API on top of its Data Link Interface, allowing the
- use of any of several network transport layers
- SeeAlso: AX=0010h
- --------N-7C0012-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - SYNC REQUEST BUFFER
- AX = 0012h
- DX = protocol ID (see #03849)
- Return: AX = completion code (see #03846)
- if AX=0000h: ES:BX -> Mbuf (see #03847)
- Note: If the protocol wants to be informed when an Mbuf becomes available,
- REQUEST BUFFER (AX=0004h) should be used instead.
- SeeAlso: AX=0004h,AX=0005h,AX=0006h,AX=0013h
- --------N-7C0013-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - TRANSMIT FRAME RELEASE
- AX = 0013h
- ES:BX -> Mbuf (see #03847)
- Return: nothing
- Notes: Returns immediately; The protocol's Transmit Upcall will NOT be called.
- The Mbuf may no more be used by the protocol in any way (i.e. the
- Mbuf's IN USE field may not be polled).
- SeeAlso: AX=0004h,AX=0013h
- --------N-7C0014-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - GET MULTICAST LIST
- AX = 0014h
- BX = protocol ID (see #03849,AX=000Bh)
- ES:DI -> multicast address buffer
- CX = number of 6-byte multicast addresses that may be stored in buffer
- Return: AX = completion code (see #03846)
- CX = number of registered multicast addresses for this protocol
- (regardless of value returned in AX)
- multicast address buffer filled with multicast addresses registered for
- this protocol
- Note: If the buffer supplied is too small, CX still contains the total number
- of registered multicast addresses for this protocol and the buffer
- has been completely filled
- SeeAlso: AX=000Bh,AX=0009h,AX=000Ch
- --------N-7C0015-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - DLI 2.6+ - GET MEDIA STATISTICS
- AX = 0015h
- ES:DI -> media-specific statistics buffer (see #03859,#03860,#03861)
- BX = offset of 1st field within MSS to be returned
- CX = number of bytes to be returned
- Return: AX = completion code (see #03846)
- CX = number of bytes copied (regardless of value returned in AX)
- Note: not supported by all DLIs (will return AX=FFFFh if not supported).
- SeeAlso: AX=0000h,AX=000Dh
- Format of SK-UPPS media-specific statistics for Ethernet:
- Offset Size Description (Table 03859)
- 00h DWORD alignment errors
- 04h DWORD frame check sequence (FCS) errors
- 08h DWORD single collision frames
- 0Ch DWORD multiple collision frames
- 10h DWORD signal quality error (SQE) test errors
- 14h DWORD deferred transmissions
- 18h DWORD late collisions
- 1Ch DWORD excessive collisions
- 20h DWORD internal MAC transmit errors
- 24h DWORD carrier sense errors
- 28h DWORD excessive deferrals
- 2Ch DWORD frame too longs
- 30h DWORD in range length errors
- 34h DWORD out of range length fields
- 38h DWORD internal MAC receive errors
- Format of SK-UPPS media-specific statistics for FDDI:
- Offset Size Description (Table 03860)
- 00h DWORD SMT operating version id (refer to ANSI 7.1.2.2)
- 04h DWORD SMT CF state: 1=Isolated, 2= Wrap_S, 3=Wrap_A, 4=Wrap_B,
- 5=Wrap_AB, 6=Thru (refer to ANSI SMT 9.7.4.3)
- 08h DWORD SMT frames sent
- 0Ch DWORD SMT frames received
- 10h DWORD SMT ring up count
- 14h 6 BYTEs MAC upstream neighbour
- 1Ah 6 BYTEs MAC downstream neighbour
- 20h DWORD MAC frame counter (refer to ANSI MAC 2.2.1)
- 24h DWORD MAC error counter ( " )
- 28h DWORD MAC lost counter ( " )
- 2Ch BYTE port 1 link error estimate (ranges from 10**-4 to 10**-15 and
- is reported as the absolute value of the exponent)
- 2Dh BYTE port 2 link error estimate ( " )
- 2Eh 2 BYTEs reserved (currently unused)
- 30h DWORD attachment class: 1=single-attachment (S PORT),
- 2=dual-attachment (A/B PORT pairs), 3=concentrator (M PORTs)
- 34h DWORD attachment optical bypass present: 1=true, 2=false
- Format of SK-UPPS media-specific statistics for Token-Ring:
- Offset Size Description (Table 03861)
- 00h 6 BYTEs upstream neighbour
- 06h WORD local ring number
- 08h DWORD ring up count
- 0Ch DWORD signal loss errors
- 10h DWORD lobe wire faults
- 14h DWORD ring recovery count
- 18h DWORD line errors
- 1Ch DWORD burst errors
- 20h DWORD ARI/FCI errors
- 24h DWORD lost frame errors
- 28h DWORD receive congestion errors
- 2Ch DWORD frame copied errors
- 30h DWORD token errors
- 34h DWORD DMA bus errors
- 38h DWORD DMA parity errors
- 3Ch DWORD receive overflow errors
- --------N-7C0016-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - DLI 2.8+ - DRIVER I/O CONTROL
- AX = 0016h
- DX = subfunction; bits 14-15 specify direction of I/O:
- 00 no data at all (ES:BX undefined)
- 01 driver -> application (GET)
- 10 application -> driver (SET)
- 11 both directions (GET/SET)
- ES:BX -> I/O buffer (optional)
- CX = size of buffer (if ES:BX valid)
- Return: AX = completion code; defined by OEM
- Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
- which provides an API on top of its Data Link Interface, allowing the
- use of any of several network transport layers
- Notes: not supported by all DLIs (will return AX=FFFFh if not supported)
- subfunction codes are defined by OEMs
- SeeAlso: AX=0001h
- --------N-7C0017-----------------------------
- INT 7C - SK-UPPS Data Link Interface API - DLI 2.8+ - INTERRUPT REQUEST
- AX = 0017h
- Return: AX = completion code (see #03846)
- Notes: not supported by all DLIs (will return AX=FFFFh, if not supported).
- must be called with interrupts disabled; when the client re-enables
- interrupts, an interrupt will be generated and reported to the client
- through an Event Upcall (see #03853 [EV_ISR_START/EV_ISR_END])
- SeeAlso: AX=0007h
- --------t-7D---------------------------------
- INT 7D O - [obsoleted proposal] - ALTERNATE MULTIPLEX INTERRUPT
- Note: this interface has been moved to INT 2D; there are no known
- implementations on INT 7D
- SeeAlso: INT 2D"AMIS",INT 2F"NOTES"
- --------S-7D---------------------------------
- INT 7D U - YTERM 1.4 - CLOCK SUPPORT
- SeeAlso: INT 7E"YTERM"
- --------E-7D---------------------------------
- INT 7D - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ5
- Notes: this vector is overwritten when GO32 starts but is not restored by
- early versions of the extender
- the newest versions of GO32 dynamically allocate the vectors used
- for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
- SeeAlso: INT 0D"IRQ5",INT 7C"GO32",INT 7E"GO32"
- --------U-7D---------------------------------
- INT 7D - HyperPAD v2.2 - API ACCESS
- Note: this vector is hooked but immediately passed on (without checking
- whether the previous handler was 0000h:0000h). The sole purpose of
- this vector is to provide the address of the data area described
- below (see #03862).
- Format of HyperPAD data area:
- Offset Size Description (Table 03862)
- -16h DWORD pointer to ??? FAR function
- -12h DWORD pointer to callback setting function
- [C calling conventions, (*callback)(int (_loadds far *)()) ]
- -0Eh 6 BYTEs signature "BRC001"
- -08h DWORD pointer to previous INT 7D handler
- -04h DWORD pointer to ??? data
- 00h HyperPAD INT 7D handler
- ----------7D---------------------------------
- INT 7D - IBM DOS 6.1 E.EXE - ???
- Note: E.EXE checks whether this interrupt is in use (not 0000h:0000h),
- and if it is used, attempts to load E55VGA.EX instead of the
- default E.EX overlay. However, E55VGA.EX is not included in
- IBM DOS 6.1.
- --------G-7D00-------------------------------
- INT 7D - SCSILink - RESET SCSI BUS
- AH = 00h
- Program: SCSILink is a TSR by Cross Products Ltd which allows its PC-hosted
- cross assemblers and similar products to communicate with Cross
- Products hardware debuggers
- Desc: reset all devices on the SCSI bus
- InstallCheck: test for the signature "SCSILINK" immediately prior to the
- interrupt handler
- Index: installation check;SCSILink
- --------G-7D01-------------------------------
- INT 7D - SCSILink - CONNECT TO TARGET
- AH = 01h
- AL = target ID
- Return: CF clear if successful
- CF set on error
- AL = initiator error
- AH = target error
- Desc: arbitrate the use of the bus and select the specified target device
- --------G-7D02-------------------------------
- INT 7D - SCSILink - SEND COMMAND
- AH = 02h
- ES:BX -> parameter block (see #03863)
- Return: CF clear if successful
- CF set on error
- AL = initiator error
- AH = target error
- Desc: send the specified command block to the target device and perform any
- related I/O
- Format of SCSILink parameter block:
- Offset Size Description (Table 03863)
- 00h DWORD size of command block
- 04h DWORD address of command block (see #03864)
- 08h DWORD size of buffer
- 0Ch DWORD address of buffer
- Format of SCSILink command block:
- Offset Size Description (Table 03864)
- 00h info not yet available
- --------G-7D03-------------------------------
- INT 7D - SCSILink - SET TIMEOUT
- AH = 03h
- AL = timeout selector (see #03865)
- BX = new value in 55ms ticks
- Desc: change an internal timeout value to allow communication with very
- slow targets
- (Table 03865)
- Values for SCSILink timeout selector:
- 00h time to wait for bus (default 18)
- 01h time to wait for new phase (default 5)
- 02h maximum time to send/receive block (default 18)
- 03h time to wait for reselect (default 180)
- --------G-7D04-------------------------------
- INT 7D - SCSILink - GET ERROR STRING
- AH = 04h
- AL = error number
- Return: ES:BX -> ASCIZ error string for error number
- --------G-7D05-------------------------------
- INT 7D - SCSILink - GET ADDRESS
- AH = 05h
- Return: AL = DMA channel
- AH = initiator ID
- BX = card address
- Desc: determine the current hardware configuration
- --------G-7D06-------------------------------
- INT 7D - SCSILink - PUT DATA
- AH = 06h
- CX = number of bytes to store (0001h-0100h)
- ES:BX -> data to be saved
- Return: CF clear if successful
- CF set on error
- AL = error code (01h = too much data)
- Note: the specified data is stored in SCSILink's PSP
- SeeAlso: AH=07h
- --------G-7D07-------------------------------
- INT 7D - SCSILink - GET DATA
- AH = 07h
- CX = number of bytes to retrieve (0001h-0100h)
- ES:BX -> buffer for data
- Return: CF clear if successful
- CF set on error
- AL = error code (01h = too much data)
- Note: retrieve data previously stored with AH=06h
- SeeAlso: AH=06h
- --------G-7D08-------------------------------
- INT 7D - SCSILink - TERMINATE SESSION
- AH = 08h
- Desc: indicate to any other programs that intercept INT 7D that the program
- has finished with the link
- Note: the program should call this function even if a SCSI error caused its
- termination
- --------G-7D09-------------------------------
- INT 7D - SCSILink - POLL REQUEST
- AH = 09h
- AL = target ID
- Return: AL = status
- FEh resident driver experienced SCSI error
- FFh resident driver handleded event
- Desc: give any drivers chained onto INT 7D a chance to handle an exception
- not specifically handled by the calling program
- Notes: this service exists so that resident disk servers, etc. can continue
- running even while debuggers and profilers are active
- the resident driver assumes that a connection has been established and
- attempts to leave the target connected
- --------*-7E---------------------------------
- INT 7E - RESERVED FOR DIP, Ltd. ROM LIBRARY
- --------S-7E---------------------------------
- INT 7E U - YTERM 1.4 - ???
- SeeAlso: INT 7D"YTERM",INT 7F"YTERM"
- --------E-7E---------------------------------
- INT 7E - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ6
- Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
- GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
- Notes: this vector is overwritten when GO32 starts but is not restored by
- early versions of the extender
- the newest versions of GO32 dynamically allocate the vectors used
- for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
- SeeAlso: INT 0E"IRQ6",INT 7D"GO32",INT 7F"GO32"
- --------s-7E00-------------------------------
- INT 7E - MaxSBOS v0.21 - GET ???
- AH = 00h
- Return: DX:AX -> ???
- SeeAlso: AH=01h,AH=02h,AH=03h
- --------s-7E0001-----------------------------
- INT 7E - IWSBSDRV v1.41 - SEND MIDI BYTE
- AX = 0001h
- DX = game device handle
- BL = MIDI byte to send???
- ???
- Return: EAX = status
- 00000000h if successful
- FFFFFFFFh on error (function disabled)
- Program: IWSBSDRV is the resident portion of the InterWave SBOS sound card
- emulator for the Gravis UltraSound Plug-and-Play
- Note: this function is only supported if the MIDISIMPLE device has been
- opened via the InterWave Game API (see INT 2F/AX=CD21h)
- SeeAlso: AX=0002h,INT 2F/AX=CD21h,#03074
- --------s-7E0002-----------------------------
- INT 7E - IWSBSDRV v1.41 - SEND MIDI STRING
- AX = 0002h
- DX = game device handle
- ES:EDI -> buffer containing MIDI string to be sent
- ECX = length of buffer in bytes
- Return: EAX = status
- 00000000h if successful
- FFFFFFFFh on error (function disabled)
- Note: this function is only supported if the MIDISIMPLE device has been
- opened via the InterWave Game API (see INT 2F/AX=CD21h)
- SeeAlso: AX=0001h,INT 2F/AX=CD21h,#03074
- --------s-7E00F6-----------------------------
- INT 7E - SBOS v3.82 - SET ???
- AX = 00F6h
- BL = ??? (max. 20h, value will be set to 20h if BL greater)
- Return: AX=00F9h,AX=00FEh
- --------s-7E00F7-----------------------------
- INT 7E - SBOS v3.82 - GET ???
- AX = 00F7h
- Return: AX = status
- 0000h failed
- 0001h successful
- BX = ??? (if nonzero, ??? is hooked) (see AX=00FFh)
- CH = ???
- CL = ???
- SeeAlso: AX=00F6h,AX=00FDh,AX=00FFh
- --------s-7E00F9-----------------------------
- INT 7E - SBOS v3.82 - SET ???
- AX = 00F9h
- BX = ???
- SeeAlso: AX=00F6h,AX=00FBh,AX=00FDh
- --------s-7E00FB-----------------------------
- INT 7E - SBOS v3.82 - SET ???
- AX = 00FBh
- BL = ???
- SeeAlso: AX=00F6h,AX=00FDh,AX=00FFh
- --------s-7E00FD-----------------------------
- INT 7E - SBOS v3.82 - SET ???
- AX = 00FDh
- BL = ??? (max. 20h, value will be set to 20h if BL greater)
- SeeAlso: AX=00F9h,AX=00FEh
- --------s-7E00FE-----------------------------
- INT 7E - SBOS v3.82 - UNINSTALL
- AX = 00FEh
- Return: AX = status
- 0000h successful
- 00FCh unable to unhook INT 21
- 00FDh unable to unhook INT 09
- 00FEh unable to release memory
- Program: SBOS is a SoundBlaster emulator for the Gravis UltraSound
- InstallCheck: test for the ASCII signature "SBOS" at offset 0Ah in the
- interrupt handler's segment (similar to one of the possible EMS
- installation checks)
- Range: SBOS may use INT 78-INT 7F
- Note: this function may not be called if any SBOS vectors have been hooked
- SeeAlso: INT 21/AX=FD12h,INT 78"UltraMID"
- --------s-7E00FF-----------------------------
- INT 7E - SBOS v3.82 - SET INTERRUPT FOR ???
- AX = 00FFh
- BL = new interrupt vector to hook
- Return: BX = 03CDh if supported
- Desc: unhooks the current interrupt handler for ???, and reconnects it to the
- specified new interrupt number
- SeeAlso: AX=00F7h,AX=00F9h,AX=00FEh
- --------s-7E01-------------------------------
- INT 7E - MaxSBOS v0.21 - ???
- AH = 01h
- ???
- Return: ???
- Program: MaxSBOS is a SoundBlaster FM synthesis emulator for the Gravis
- UltraSound MAX
- Range: INT 78-INT 7F, selected by commandline parameter
- Note: the installation check is the same as for 'regular' SBOS (see AX=00FEh)
- although the API in v0.21 does not provide the functions present in
- the older SBOS
- SeeAlso: AX=00FEh,AH=02h,AH=03h
- --------s-7E02-------------------------------
- INT 7E - MaxSBOS v0.21 - ???
- AH = 02h
- Return: AX = FFFFh
- SeeAlso: AX=00FEh,AH=01h,AH=03h
- --------s-7E03-------------------------------
- INT 7E - MaxSBOS v0.21 - NOP
- AH = 03h
- Return: nothing
- SeeAlso: AX=00FEh,AH=01h,AH=02h
- --------m-7E5857BL57-------------------------
- INT 7E - XLOAD - INSTALLATION CHECK
- AX = 5857h
- BL = 57h
- Return: AX = 0000h if installed
- Program: XLOAD is the LOADHIGH-equivalent from Helix Software's Netroom
- SeeAlso: AX=5857h/BL=5Ah,AX=5857h/BL=5Bh
- --------m-7E5857BL5A-------------------------
- INT 7E - XLOAD - GET ???
- AX = 5857h
- BL = 5Ah
- Return: AX = 0000h
- CX = ???
- DS:SI -> ???
- SeeAlso: AX=5857h/BL=57h,AX=5857h/BL=5Bh
- --------m-7E5857BL5B-------------------------
- INT 7E - XLOAD - GET XLOAD MEMORY SIZE
- AX = 5857h
- BL = 5Bh
- Return: AX = 0000h
- CX = segment of XLOAD TSR
- DX = size of memory block in which XLOAD TSR is located
- SeeAlso: AX=5857h/BL=57h,AX=5857h/BL=5Ah
- --------s-7E--80-----------------------------
- INT 7E - IWSBSDRV v1.41 - GET ???
- AL = 80h
- Return: DX:AX -> ???
- SeeAlso: AL=81h,AL=82h,AL=83h,AL=84h,AL=85h,AL=86h,AL=87h
- --------s-7E--81-----------------------------
- INT 7E - IWSBSDRV v1.41 - ???
- AL = 81h
- ???
- Return: ???
- SeeAlso: AL=80h,AL=82h,AL=83h,AL=84h,AL=85h,AL=86h,AL=87h
- --------s-7E--82-----------------------------
- INT 7E - IWSBSDRV v1.41 - GET ???
- AL = 82h
- Return: AX = ??? (FFFFh)
- SeeAlso: AL=80h,AL=81h,AL=83h,AL=84h,AL=85h,AL=86h,AL=87h
- --------s-7E--83-----------------------------
- INT 7E - IWSBSDRV v1.41 - ??? (CALLS VIWD.VXD)
- AL = 83h
- ???
- Return: ???
- SeeAlso: AL=80h,AL=81h,AL=82h,AL=84h,AL=85h,AL=86h,AL=87h
- SeeAlso: INT 2F/AX=1684h/BX=38DAh"VIWD"
- --------s-7E--84-----------------------------
- INT 7E - IWSBSDRV v1.41 - WAKE PROGRAM???
- AL = 84h
- Return: AL = status
- 00h successful
- else failed
- SeeAlso: AL=80h,AL=81h,AL=82h,AL=83h,AL=85h,AL=86h,AL=87h
- SeeAlso: INT 2F/AX=CD04h"InterWave"
- --------s-7E--85-----------------------------
- INT 7E - IWSBSDRV v1.41 - SET ??? FLAG
- AL = 85h
- Return: nothing
- SeeAlso: AL=80h,AL=81h,AL=82h,AL=83h,AL=84h,AL=86h,AL=87h
- --------s-7E--86-----------------------------
- INT 7E - IWSBSDRV v1.41 - HOOK INT 21
- AL = 86h
- Return: AX,BX,DX,ES destroyed
- SeeAlso: AL=80h,AL=81h,AL=82h,AL=83h,AL=84h,AL=85h,AL=87h
- --------s-7E--87-----------------------------
- INT 7E - IWSBSDRV v1.41 - RESTORE INT 21
- AL = 87h
- Return: AX,DX destroyed
- SeeAlso: AL=80h,AL=81h,AL=82h,AL=83h,AL=84h,AL=85h,AL=86h
- --------V-7F---------------------------------
- INT 7F - Halo88 - API
- BX = function number (see #03866)
- additional parameters on stack
- Return: ???
- Program: Halo88 is a suite of graphics routines
- Note: according to Stuart Kemp, the code appears to make no provisions for
- chaining
- (Table 03866)
- Values for Halo88 API function:
- 64h arc
- 65h bar
- 66h box
- 67h circle
- 68h clr
- 69h default hatch style
- 6Ah default line style
- 6Bh delhcur
- 6Ch delln / deltcur
- 6Dh ellipse
- 6Eh fill
- 6Fh flood
- 70h flood2
- 71h init graphics
- 72h init hcur
- 73h init marker
- 74h init tcur
- 75h inqarc
- 76h inqbknd
- 77h inqclr
- 78h inqerr
- 79h inqgcur
- 7Ah inqhcur
- 7Bh inqmarker
- 7Dh inqtcur
- 7Eh inqtext
- 7Fh lnabs
- 80h lnrel
- 81h markerabs
- 82h markerrel
- 83h moveabs
- 84h movehcurabs
- 85h movehcurrel
- 86h moverel
- 87h movetcurabs
- 88h movetcurrel
- 89h movefrom
- 8Ah moveto
- 8Bh pie
- 8Ch polylnabs
- 8Dh polylnrel
- 8Eh ptabs
- 8Fh ptrel
- 91h setasp
- 92h set color
- 93h set font
- 94h set hatch style
- 95h set line style
- 97h settext
- 98h set text color
- 99h btext
- 9Ah setseg
- 9Bh display
- 9Ch setscreen
- 9Eh close graphics
- 9Fh ftinit
- A0h ftlocate
- A1h ftext
- A5h set viewport
- A6h set window
- A7h set world
- AAh ftcolor
- ACh initlp
- ADh inqasp
- AEh inqdev
- AFh inqdisplay
- B0h inqft
- B1h inqftcolor
- B2h inqinterlace
- B3h inqlpa
- B4h inqlpg
- B5h inqmode
- B6h inqscreen
- B7h inqversion
- B8h roam
- B9h scroll
- BAh setieee
- BBh set interlace
- BCh shift
- BDh start graphics
- BEh vpan
- CBh gwrite
- CCh gread
- CDh setxor
- CEh rbox
- CFh rcir
- D0h rlnabs
- D1h rlnrel
- D2h delbox
- D3h delcir
- D5h setseg2
- DCh worldoff
- DDh mapwtod
- DEh mapdtow
- DFh mapwton
- E0h mapntow
- E1h mapdton
- E2h mapntod
- E3h inqworld
- E4h inqviewport
- E5h set line width
- E6h lnjoint
- E7h set locator
- E8h read locator
- E9h setdev
- EBh setstext
- ECh setstclr
- EDh setstang
- EEh stext
- EFh inqstext
- F0h setdegree
- F1h inqstsize
- F2h polyfabs
- F3h polyfrel
- F4h inqdrange
- F5h inqstang
- F6h orglocator
- F7h inqlocator
- F8h inqarea
- F9h setipal
- FAh setborder
- FBh inqcrange
- FEh setclip
- FFh fcir
- 100h setcrange
- 101h setdrange
- 102h setlattr
- 103h polycabs
- 104h polycrel
- 108h memcom
- 109h memexp
- 10Ah memmov
- 10Eh movefx
- 10Fh movetx
- 110h inqrgb
- 111h save image
- 112h restore image
- 113h setapal
- 114h setxpal
- 118h inqtsize
- 12Eh gprint
- 130h setprn
- 131h setpattr
- 133h setbattr
- 135h pexpand
- 136h ptnorm
- 137h pfnorm
- 13Bh inqprn
- 13Ch lopen
- 13Dh lclose
- 13Eh lappend
- 13Fh lrecord
- 140h lswitch
- 142h inqfun
- 15Dh lsetup
- 15Eh lrest
- 15Fh lsave
- --------N-7F---------------------------------
- INT 7F - CONVERGENT TECHNOLOGIES ClusterShare CTOS ACCESS VECTOR
- AL = request ID
- 01h "Request"/"RequestDirect"
- ES:BX -> pRq
- DX ignored
- 04h "Wait"
- ES:BX -> ppMsgRet
- DX = exchange
- 05h "AllocExch"
- ES:BX -> pExchRet
- 06h "DeAllocExch"
- DX = exchange
- 07h "Check"
- ES:BX -> ppMsgRet
- DX = exchange
- CX = 4354h ('CT')
- Return: AX = status
- 0000h successful
- --------S-7F---------------------------------
- INT 7F - Telebit ACS SERIAL I/O
- ES:SI-> parameter block (see #03867)
- Return: CF set on error
- CF clear on success
- InstallCheck: test for the signature "PDGATEWRKSTNIF" just prior to the
- interrupt handler
- Index: installation check;Telebit ACS Serial I/O
- Format of Telebit ACS parameter block:
- Offset Size Description (Table 03867)
- 00h BYTE command (see #03868)
- 01h BYTE gateway number
- 02h BYTE reserved
- 03h BYTE port
- 04h 17 BYTEs auxiliary buffer
- 15h BYTE session
- 16h WORD count of bytes passed to API
- 18h DWORD buffer pointer passed to/from API
- 1Ch WORD count of bytes passed from API
- 1Eh BYTE return code (see #03869)
- (Table 03868)
- Values for Telebit ACS command:
- 3Ch status
- 3Dh connect
- 3Eh disconnect
- 3Fh read
- 40h data/command write
- 41h clear receive buffer
- 42h get configuration
- 43h get receiver status
- 44h raw write
- 45h search servers
- 46h set transmit buffer size
- (Table 03869)
- Values for Telebit ACS return code:
- 00h success
- 01h invalid session
- 05h servername invalid
- 06h NetWare fileserver bindery is locked
- 07h communication server not active
- 08h general failure in NetWare fileserver
- 09h not logged into a fileserver
- 10h connection table full
- 11h no response from communication server
- 12h connection attempt terminated abnormally
- 13h connection refused - no sessions available
- 14h gateway number/port already in use
- 15h invalid connection response
- 16h port invalid
- 17h incorrect version in server response
- 18h gateway number/port combination not configured
- 19h initialization has not been completed
- 20h no more sockets are available
- 21h no active poolname
- 23h FATAL internal interface error
- 24h registration of host workstation failed - name is already in use
- 25h registration of host workstation failed - workstation name table full
- 26h registration of host workstation failed - only one session may be
- registered for dial-in
- FFh Telebit ACS API is busy - retry later
- --------N-7F---------------------------------
- INT 7F - Non-dedicated NetWare 2.x File Server - ENTER CONSOLE MODE
- InstallCheck: test for the signature "Lynn" in the four bytes preceding the
- interrupt handler; if present, the current program is running as a
- DOS task on a non-dedicated NetWare 2.x file server.
- Note: Before placing the server into "console" mode, it is recommended that
- NetWare broadcast messages be disabled with INT 21/AH=DEh/DL=00h.
- SeeAlso: INT 21/AH=DEh/DL=04h
- Index: installation check;non-dedicated NetWare server
- --------S-7F---------------------------------
- INT 7F U - YTERM - ???
- SeeAlso: INT 7E"YTERM"
- --------E-7F---------------------------------
- INT 7F - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ7
- Notes: this vector is overwritten when GO32 starts but is not restored by
- early versions of the DOS extender
- the newest versions of GO32 dynamically allocate the vectors used
- for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
- SeeAlso: INT 0F"IRQ7",INT 7E"GO32"
- ----------7F---------------------------------
- INT 7F - Canon IXHND2 Scanner Interface
- --------U-7F---------------------------------
- INT 7F - SBS WinRun 1.00 - TRANSMITTER ENTRY POINT
- DS:SI -> WinRun control block (WCB) (see #03870)
- Return: WinRun receiver status returned in WCB
- Program: WinRun is a DOS/Windows utility written by Sven B. Schreiber to start
- Windows applications from a virtual DOS machine under Windows
- Note: The WinRun transmitter (WINRUN-T.COM) and receiver (WINRUN-R.EXE) need
- to be up and running
- Format of the WinRun control block (WCB):
- Offset Size Description (Table 03870)
- 00h DWORD pointer to ASCIZ command string
- 04h WORD (ret) WinRun receiver status
- 0000h-001Fh WinExec() error
- 0020h-FFFEh WinExec() instance handle
- FFFFh Windows not running or WinRun receiver not
- installed
- --------N-7F---------------------------------
- INT 7F - Alloy 386/MultiWare (MW386), Novell-Type Network Executive (NTNX)
- Notes: the words at C800h:0000h and C800h:0002h will both be 584Eh if the
- MW386 multitasking system is present (i.e. signature "NXNX")
- NTNX allows its API to be placed on a different interrupt than 7Fh at
- load time. To determine the actual vector used, open the device
- "SPOOLER" with INT 21/AX=3D02h, place it in RAW mode with
- INT 21/AX=4400h and INT 21/AX=4401h, then read one byte which will
- be the actual interrupt number being used; the other interrupts may
- be found with INT 7F/AH=09h/CL=03h
- --------N-7F---------------------------------
- INT 7F - Alloy NetWare Support Kit (ANSK) v2.2+ - INSTALLATION CHECK
- Note: a program may determine that it is running on an ANSK Slave by checking
- the five bytes at F000h:0000h for the ASCIZ signature "ANSK"; this
- address is RAM, and should not be written. However, the above check
- will not work on Slaves with <1MB RAM or those using the SLIM.SYS
- device driver
- --------N-7F00-------------------------------
- INT 7F - Alloy NTNX, MW386 - SEMAPHORE LOCK AND WAIT
- AH = 00h
- DS:DX -> ASCIZ semaphore name (max 64 bytes)
- Return: AL = status (see #03871)
- AH = semaphore owner if status=02h
- SeeAlso: AH=01h,AH=02h,AH=41h,INT 67/AH=00h
- (Table 03871)
- Values for Alloy function status:
- 00h successful
- 01h invalid function
- 02h semaphore already locked
- 03h unable to lock/unlock semaphore
- 04h semaphore space exhausted
- 05h host/target PC did not respond (NTNX)
- --------T-7F00-------------------------------
- INT 7F - MultiLink Advanced v1.0+ - ENQUEUE SYSTEM RESOURCE
- AH = 00h
- BX = resource identifier
- AL = wait flag
- Return: AL = status
- 00h successful
- 01h resource not available
- 02h user error
- InstallCheck: ensure that the interrupt vector is not pointing at segment
- 0000h, then test whether the byte at offset 0000h in the interrupt
- handler's segment is E9h
- Notes: function will not return until the resource is available if AL is
- nonzero on entry
- a maximum of 100 resources may be enqueued at once
- SeeAlso: AH=01h"MultiLink"
- --------N-7F00-------------------------------
- INT 7F - G8BPQ v4.07+ - GET NODE/SWITCH VERSION AND DESCRIPTION
- AH = 00h
- ES:SI -> buffer for "USERS" text string
- Return: AX = 4250h ('BP') if installed
- BX = 5120h ('Q ') if installed
- DX = version number (DH = major, DL = minor)
- CX = length of returned string
- Program: the G8BPQ AX25 Networking Package is amateur packet radio software by
- John Wiseman which allows a PC to act as a node in an AX.25 network
- SeeAlso: AH=01h"G8BPQ",AH=09h"G8BPQ"
- --------N-7F01-------------------------------
- INT 7F - Alloy NTNX, MW386 - SEMAPHORE LOCK
- AH = 01h
- DS:DX -> ASCIZ semaphore name (max 64 bytes)
- Return: AL = status (see #03871)
- AH = semaphore owner if status=02h
- SeeAlso: AH=00h,AH=02h,AH=41h
- --------T-7F01-------------------------------
- INT 7F - MultiLink Advanced v1.0+ - DEQUEUE SYSTEM RESOURCE
- AH = 01h
- BX = resource identifier
- Return: AL = status
- 00h successful
- 02h user error
- Note: the indicated resource may be dequeued even if it was enqueued by
- another task
- SeeAlso: AH=00h"MultiLink",AH=02h"MultiLink"
- --------V-7F01-------------------------------
- INT 7F - TIGA Communications Driver v2.05 - GET ENTRY POINTS
- AH = 01h
- Return: BX = 1234h if installed
- DX:AX -> array of FAR entry points
- CH = driver major version
- CL = driver minor version
- Note: TIGACD 2.05 returns CF set on unrecognized functions in AX
- SeeAlso: AX=1234h,AX=4321h
- --------N-7F01-------------------------------
- INT 7F - G8BPQ v4.00+ - HOST MODE - SET APPLICATION FLAGS AND MASK
- AH = 01h
- AL = stream number (01h-40h)
- CL = new application flags
- bit 7: monitored frames available via AH=0Bh"G8BPQ"
- DL = new application mask
- Program: the G8BPQ AX25 Networking Package is amateur packet radio software by
- John Wiseman which allows a PC to act as a node in an AX.25 network
- Range: INT 00h to INT FFh, set in configuration file BPQCFG.TXT for v4.03+
- (earlier versions were hard-wired for INT 7F)
- SeeAlso: AH=00h"G8BPQ",AH=02h"G8BPQ",AH=0Bh"G8BPQ"
- --------I-7F0104BX0000-----------------------
- INT 7F - HLLAPI (IBM 3270 High-Level Language API)/LLAPI (Rabbit Low Level API)
- AX = 0104h (HLLAPI gate ID)
- BX = 0000h
- DS:SI -> parameter control block (see #03872)
- Return: parameter control block updated
- InstallCheck: for the Novell HLLAPI TSR, test for the signature "CXI" (for
- the company Novell bought) immediately prior to the interrupt handler
- SeeAlso: AX=0105h,AX=ABCDh
- Format of HLLAPI parameter control block:
- Offset Size Description (Table 03872)
- 00h 3 BYTEs signature = 'PCB'
- 03h BYTE function number (see #03873,#03874)
- 04h WORD segment of control string
- 06h WORD offset of control string
- 08h WORD length of control string, unless explicit end-of-str char set
- 0Ah BYTE unused (IBM)
- ControlString[0] (Rabbit)
- 0Bh WORD return code (see #03876)
- 0Dh WORD maximum length of control string (IBM)
- unused (Rabbit)
- (Table 03873)
- Values for HLLAPI function number:
- 00h OEM function (Query system for Attachmate implementation)
- 01h Connect presentation space
- 02h Disconnect presentation space
- 03h Send string of keystrokes as if typed from keyboard
- 04h Wait ~60s, returns status of presentation space
- 05h Copy current presentation space into a user-defined buffer
- 06h Search presentation space for first occurrence of a specified string
- 07h Query cursor location in current presentation space
- 08h Copy part or all of current presentation space into user buffer
- 09h Set session parameters; parameters vary by vendor (see #03875)
- 0Ah Get info on sessions currently connected
- 0Bh Lock current presentation space
- 0Ch Unlock previously locked presentation space
- 0Dh Return copy of operator info area (OIA) of current presentation space
- 0Eh get attribute byte for given position in the current presentation space
- 0Fh copy string of characters to the current presentation space
- 10h workstation control functions
- 11h storage manager functions, intended primarily for BASIC applications
- (not implemented by Rabbit)
- 12h set delay period in half-second intervals
- 14h get info on level of workstation support used
- 15h reset session parameters to default values
- 16h get detailed info on the current session
- 17h start host notification to application on presentation sp or OIA update
- 18h check host update when host notification enabled
- 19h stop host notification
- 1Eh search field within current presentation space for string
- 1Fh get first positionof a selected field in the current presentation space
- 20h get length of specified field
- 21h copy string into a specified field
- 22h copy specified field into a user-defined buffer
- 23h create alternate presentation space (IBM only), don't use with BASIC
- 24h switch to alternate presentation space (IBM only), not with BASIC
- 25h display cursor in specified area (IBM only), don't use with BASIC
- 26h display alternate presentation space (IBM only), don't use with BASIC
- 27h delete alternate presentation space (IBM only), don't use with BASIC
- 28h set cursor
- 29h start Close Intercept
- 2Ah query Close Intercept
- 2Bh stop Close Intercept
- 32h start intercepting keystrokes to allow filtering
- 33h get keystrokes after turning on interception
- 34h notify operator when keystroke rejected by filter subroutine
- 35h stop intercepting keystrokes
- 5Ah send file
- 5Bh receive file
- 5Ch run a program (not implemented by Rabbit)
- 5Dh execute DOS command (not implemented by Rabbit)
- 63h change presentation space position to PC display row/col or vice versa
- 65h connect to Window Services
- 66h disconnect from Window Services
- 67h set/query window coordinates
- 68h set/query window status
- 69h change presentation space name
- 78h connect Structured Fields
- 79h disconnect Structured Fields
- 7Ah query size of communications buffer
- 7Bh allocate communications buffer
- 7Ch free communications buffer
- 7Dh get request completion state
- 7Eh read Structured Fields
- 7Fh write Structured Fields
- FFh Get info on DCA implementation
- (Table 03874)
- Values for LLAPI function number:
- 80h initialize LLAPI (internal call)
- 83h set Session ID (one-character ID)
- 84h read Session ID (one-character ID)
- 85h lock 327x keyboard
- 86h unlock 327x keyboard
- 87h wait for Clear to Send
- 88h type ASCII character
- 89h type 327x key
- 8Ah read keyboard lock state
- 8Fh force screen update
- 90h view session
- 91h relinquish (suspend foreground until background becomes idle)
- 92h poke screen character
- 93h poke translated character
- 94h peek screen character
- 95h peek translated character
- 96h set cursor position
- 97h send scan code (Rabbit only)
- 98h synchronize (returns after keystroke queue empty)
- 99h type PC key (Rabbit only)
- (Table 03875)
- Values for HLLAPI Function 09h Session Parameters:
- ASCII ??? (Rabbit only)
- ATTRIB return attributes in hex
- NOATTRIB return attributes as blanks
- CONPHYS make physical connection
- CONLOG only make logical connection
- EAB copy extended attribute bytes along with data
- NOEAB copy data only
- ESC=n set escape character to "n" (default '@')
- EOT=n set end of string character (default 00h)
- FPAUSE full-duration pause
- FTNOWAIT return immediately from functions 5Ah and 5Bh (Rabbit only)
- FTWAIT wait for file transfer to complete (Rabbit only)
- IPAUSE interruptable pause
- RABESC ??? (Rabbit only)
- NORABESC ??? (Rabbit only)
- SCANCODE ??? (Rabbit only)
- STRLEN use explicit string lengths
- STREOT use terminated strings
- SRCHALL search entire presentation space
- SRCHFROM search from specified offset
- SRCHFRWD search forward from position 1
- SRCHBKWD search backward from last position in presentation space
- TIMEOUT=n ??? (Rabbit only)
- TWAIT wait specified time for keyboard ready
- LWAIT wait until keyboard ready
- NWAIT no wait
- TRON enable tracing
- TROFF disable tracing
- AUTORESET send reset before sending keys with function 03h
- NORESET don't send reset
- QUIET don't display messages sent with INT 21/AH=09h
- NOQUIET allow messages to be displayed
- TIMEOUT=n set timeout in 30-second intervals, 0 = wait until ^Break
- XLATE translate extended attribute bytes
- NOXLATE don't translate
- NEWRET use HLLAPI v3.0 return code conventions
- OLDRET use HLLAPI v2.0 return code conventions
- (Table 03876)
- Values for Windows HLLAPI return code:
- 00h successful
- 01h Presentation Space not connected/requested size unavailable
- 02h invalid function or parameter error/invalid block ID
- 03h file transfer complete
- 04h file transfer complete (segmented)/Presentation Space busy
- 05h inhibited or keyboard locked
- 06h data truncated
- 07h invalid Presentation Space position
- 08h operation not available
- 09h system error
- 0Ah blocking error
- 0Bh resource not available
- 0Ch session stopped
- 14h undefined key combination
- 15h OIA updated
- 16h Presentation Space updated
- 17h both Presentation Space and OIA updated
- 18h no such field
- 19h no keystrokes available
- 1Ah Presentation Space or Operator Information Area changed
- 1Bh file transfer aborted
- 1Ch zero-length field
- 1Eh cursor type invalid
- 1Fh keystroke overflow
- 20h another application is already connected
- 22h message sent to host cancelled
- 23h transmission from host cancelled
- 24h lost contact with host
- 25h function successful
- 26h function incomplete
- 27h a DDM session is already connected
- 28h disconnected, but asynchronous requests still pending
- 29h buffer already in use
- 2Ah no matching request found
- 12Dh invalid function number
- 12Eh file not found
- 131h access denied
- 134h out of memory
- 136h environment invalid
- 137h format invalid
- 270Eh (9998) invalid Presentation Space ID
- 270Fh (9999) invalid row or column code
- ---Windows HLLAPI extensions---
- F000h asynchronous call already in progress
- F001h invalid asynchronous task ID
- F002h blocking call cancelled
- F003h underlying subsystem not started
- F004h unsupported application version
- --------V-7F0105-----------------------------
- INT 7F - IBM 8514/A Adapter Interface (HDILOAD.EXE)
- AX = 0105h
- Return: CF set on error
- CF clear if successful
- CX:DX -> array of FAR pointers to entry points (see #03877)
- Note: most functions are invoked by pushing the DWORD parameter block pointer
- and then performing a FAR call via the appropriate vector of the
- entry point array, placing the FAR address of the function's
- parameter block on the top of the stack
- SeeAlso: AX=0104h,AX=0106h,AX=ABCDh
- (Table 03877)
- Values for HDILOAD function number: (do FAR call via entry_points+4*function)
- 08h HOPEN Open Adapter (see #03909)
- 09h HSMX Set Mix (see #03938)
- 10h HINT Interrupt (see #03905)
- 13h HLDPAL Load Palette (see #03906)
- 15h HBBW BitBLT Write Image Data (see #03892)
- 17h HBBR BitBLT Read Image Data (see #03893)
- 18h HBBCHN Chained Data Go (see #03891)
- 19h HBBC BitBLT Copy Data (see #03890)
- 1Dh HQMODE Get Current Mode (see #03915)
- 20h HRECT Fill Rectangle (see #03917)
- 22h HCLOSE Close Adapter and place in quiescent state (see #03898)
- 30h HINIT Initialize State (see #03904)
- 31h HSYNC Synchronize Adapter (see #03943)
- 39h HSPAL Save Palette (see #03940)
- 3Ah HRPAL Restore Palette (see #03920)
- ??? HSGQ Set Graphics Quality (see #03929)
- ??? HSCOORD Set Coordinate Type (see #03926)
- ??? HESC Escape, Terminate Processing (see #03903)
- ??? HSBCOL Set Background Color (see #03921)
- ??? HSBP Set Bit Plane Controls (see #03922)
- ??? HSCMP Set Color Comparison Register (see #03924)
- ??? HSCOL Set Color (see #03925)
- ??? HSHS Set Scissors (clipping rectangle) (see #03930)
- ??? HXLATE Assign Text Color (see #03944)
- ??? HQMODES Get Adapter Modes (see #03916)
- ??? HQDPS Get Drawing Process State Size (see #03914)
- ??? HQDFPAL Get Default Palette (see #03913)
- ??? HQCOORD Get Coordinate Type (see #03911)
- ??? HQCP Get Current Position (see #03912)
- ??? HSMODE Change Mode (see #03936)
- ??? HLINE Draw Line at Given Position (see #03907)
- ??? HCLINE Draw Line at Current Position (see #03897)
- ??? HRLINE Draw Line Relative from Given Position (see #03918)
- ??? HCRLINE Draw Line Relative at Current Position (see #03900)
- ??? HSLT Set Line Type (see #03933)
- ??? HSLW Set Line Width (see #03935)
- ??? HSLPC Save Line Pattern Count (see #03932)
- ??? HRLPC Restore Line Pattern Count (see #03919)
- ??? HCBBW BitBLT Write Image Data at Current Position (see #03894)
- ??? HBAR Begin Area (see #03889)
- ??? HEAR End Area (see #03901)
- ??? HSPATT Set Pattern (see #03941)
- ??? HSPATTO Set Pattern Reference Point (see #03942)
- ??? HEGS Erase Graphics Screen (see #03902)
- ??? HSCP Set Current Position (see #03927)
- ??? HMRK Set Marker (see #03908)
- ??? HCMRK Set Marker at Current Position (see #03899)
- ??? HSMARK Set Marker Shape (see #03937)
- ??? HSCS Set Character Set (see #03928)
- ??? HCHST Write Character String at Given Position (see #03896)
- ??? HCCHST Write Character String at Current Position (see #03895)
- ??? HSCELL Set Cell Size for Alphanumeric Text (see #03923)
- ??? ABLOCKMFI Write Character/Attribute Block MFI (see #03880)
- ??? ABLOCKCGA Write Character Block CGA (see #03878)
- ??? AERASE Erase Rectangle (see #03883)
- ??? ASCROLL Scroll Rectangle (see #03884)
- ??? ACURSOR Set Alphanumerics Cursor Position (see #03882)
- ??? ASCUR Set Alphanumeric Cursor Shape (see #03885)
- ??? ASFONT Set Font (see #03886)
- ??? AXLATE Assign Alphanumeric Color (see #03888)
- Format of ABLOCKCGA parameter block:
- Offset Size Description (Table 03878)
- 00h WORD 000Ah (length of following data)
- 02h WORD top-left coordinate of character block
- 04h WORD width of block
- 06h DWORD -> block of WORDs describing characters (see #03879)
- 0Ah BYTE length of block in characters
- 0Bh BYTE highlight attribute
- bit 4: transparent background
- bit 5: overstrike
- bit 6: reverse video
- bit 7: underscore
- SeeAlso: #03880
- Bitfields for one character in ABLOCKCGA character block:
- Bit(s) Description (Table 03879)
- 3-0 foreground attribute
- 7-4 background attribute
- 15-8 character code
- Format of ABLOCKMFI parameter block:
- Offset Size Description (Table 03880)
- 00h WORD 0009h (length of following data)
- 02h WORD top-left coordinate of character block
- 04h WORD width of block
- 06h DWORD -> block of DWORDs describing characters (see #03881)
- 0Ah BYTE length of block in characters
- SeeAlso: #03878
- Bitfields for one character in ABLOCKMFI character block:
- Bit(s) Description (Table 03881)
- 7-0 reserved
- 9-8 low two bits of font number
- 12 transparent background
- 13 overstrike
- 14 reverse video
- 15 underscore
- 19-16 foreground color attribute
- 23-20 background color attribute
- 31-24 character code
- Format of ACURSOR parameter block:
- Offset Size Description (Table 03882)
- 00h WORD 0002h (length of following data)
- 02h BYTE column (0-based)
- 03h BYTE row (0-based)
- SeeAlso: #03885
- Format of AERASE parameter block:
- Offset Size Description (Table 03883)
- 00h WORD 0005h (length of following data)
- 02h BYTE left-most column (0-based)
- 03h BYTE top-most row (0-based)
- 04h BYTE rectangle's width in character cells
- 05h BYTE rectangle's height in character cells
- 06h BYTE background color (bits 7-4)
- SeeAlso: #03884
- Format of ASCROLL parameter block:
- Offset Size Description (Table 03884)
- 00h WORD 0006h (length of following data)
- 02h BYTE left-most column (0-based) of source
- 03h BYTE top-most row (0-based) of source
- 04h BYTE rectangle's width in character cells
- 05h BYTE rectangle's height in character cells
- 06h BYTE left-most column (0-based) of destination
- 07h BYTE top-most row (0-based) of destination
- SeeAlso: #03883
- Format of ASCUR parameter block:
- Offset Size Description (Table 03885)
- 00h WORD 0003h (length of following data)
- 02h BYTE cursor start line (00h = top of cell, FFh = keep current shape)
- 03h BYTE cursor stop line
- 04h BYTE cursor attribute
- 00h normal
- 01h hidden
- 02h left-arrow (requires start = 2 and stop = bottom of cell)
- 03h right-arrow (requires start = 2 and stop = bottom of cell)
- Notes: no cursor is shown if the start line is greater than the stop line
- the alphanumeric cursor is hidden after each mode change
- SeeAlso: #03882,INT 10/AH=01h
- Format of ASFONT parameter block:
- Offset Size Description (Table 03886)
- 00h WORD 0005h (length of following data)
- 02h BYTE font number (0-3)
- 03h DWORD -> character set definition block (see #03887)
- Format of 8514/A character set definition block:
- Offset Size Description (Table 03887)
- 00h BYTE reserved
- 01h BYTE type of character set
- 00h bitmapped, 01h&02h reserved, 03h short-stroke font
- 02h BYTE reserved
- 03h DWORD reserved
- 07h BYTE cell width in pixels
- 08h BYTE cell height in pixels
- 09h BYTE reserved
- 0Ah WORD cell size in bytes
- 0Ch WORD flags
- bit 15: reserved (0)
- bit 14: color bitmap
- bit 13: proportional spacing
- 0Eh DWORD -> index table
- 12h DWORD -> character width table
- 16h BYTE initial code point
- 17h BYTE final code point
- 18h DWORD -> character definition table
- 1Ch WORD reserved
- 1Eh DWORD -> second character definition table
- 22h WORD reserved
- 24h DWORD -> third character definition table
- Format of AXLATE parameter block:
- Offset Size Description (Table 03888)
- 00h WORD 0080h (length of following data)
- 02h 64 BYTEs character foreground translation table
- 42h 64 BYTEs character background translation table
- Format of HBAR parameter block:
- Offset Size Description (Table 03889)
- 00h WORD 0000h (no data following)
- SeeAlso: #03901
- Format of HBBC parameter block:
- Offset Size Description (Table 03890)
- 00h WORD 0010h (length of following data)
- 02h WORD data format
- 0000h across-the-plane copy (color expansion)
- 0008h through-the-plane copy
- 04h WORD data rectangle's width
- 06h WORD data rectangle's height
- 08h BYTE source bit plane number (across-the-plane copies only)
- 09h BYTE reserved
- 0Ah 2 WORDs X,Y coordinates of source's upper-left corner in display memory
- 0Eh 2 WORDs X,Y coordinates of destination's upper-left corner in
- display memory
- Note: copies data from one location in video memory to another
- SeeAlso: #03891
- Format of HBBCHN parameter block:
- Offset Size Description (Table 03891)
- 00h WORD 0006h (length of following data)
- 02h DWORD -> data buffer in system memory
- 06h WORD number of bytes to transfer
- Note: this function performs the actual data transfer for a bitBLT set up
- with HBBR, HBBW, or HCBBW
- SeeAlso: #03890,#03892,#03893,#03894
- Format of HBBR parameter block:
- Offset Size Description (Table 03892)
- 00h WORD 000Ch or 0014h (length of following data)
- 02h WORD data format
- 0000h across-the-plane copy (color expansion)
- 0008h through-the-plane copy
- 04h WORD data rectangle's width
- 06h WORD data rectangle's height
- 08h BYTE source bit plane number
- 09h BYTE reserved
- 0Ah 2 WORDs X,Y coordinates of destination's upper-left corner in
- display memory
- ---optional---
- 0Eh WORD sub-rectangle left margin in pixels
- 10h WORD sub-rectangle top margin in pixels
- 12h WORD sub-rectangle width
- 14h WORD sub-rectangle height
- SeeAlso: #03891,#03892,#03894
- Format of HBBW parameter block:
- Offset Size Description (Table 03893)
- 00h WORD 000Ah or 0012h (length of following data)
- 02h WORD data format
- 0000h across-the-plane copy (color expansion)
- 0008h through-the-plane copy
- 04h WORD data rectangle's width
- 06h WORD data rectangle's height
- 08h 2 WORDs X,Y coordinates of destination in display memory
- ---optional---
- 0Ch WORD sub-rectangle left margin in pixels
- 0Eh WORD sub-rectangle top margin in pixels
- 10h WORD sub-rectangle width
- 12h WORD sub-rectangle height
- SeeAlso: #03891,#03893,#03894
- Format of HCBBW parameter block:
- Offset Size Description (Table 03894)
- 00h WORD 0006h or 000Eh (length of following data)
- 02h WORD data format
- 0000h across-the-plane copy (color expansion)
- 0008h through-the-plane copy
- 04h WORD data rectangle's width
- 06h WORD data rectangle's height
- ---optional---
- 08h WORD sub-rectangle left margin in pixels
- 0Ah WORD sub-rectangle top margin in pixels
- 0Ch WORD sub-rectangle width
- 0Eh WORD sub-rectangle height
- SeeAlso: #03891,#03892,#03893
- Format of HCCHST parameter block:
- Offset Size Description (Table 03895)
- 00h WORD length of following data
- 02h N BYTEs ASCII string to display (length given by 'length' field above)
- SeeAlso: #03896
- Format of HCHST parameter block:
- Offset Size Description (Table 03896)
- 00h WORD length of following data
- 02h 2 WORDs X,Y of left-bottom corner of string on screen
- 06h N BYTEs ASCII string to display (length given by 'length' field above)
- SeeAlso: #03895
- Format of HCLINE parameter block:
- Offset Size Description (Table 03897)
- 00h WORD length of following data (multiple of 4)
- 02h 2N WORDs X,Y coordinates for each of N points in polyline
- Notes: the first line segment is drawn beginning at the current position
- on completion, the current position is set to the last point drawn
- SeeAlso: #03907,#03918,#03900
- Format of HCLOSE parameter block:
- Offset Size Description (Table 03898)
- 00h WORD 0001h (length of following data)
- 01h BYTE (ret) return code
- SeeAlso: #03909
- Format of HCMRK parameter block:
- Offset Size Description (Table 03899)
- 00h WORD length of following data
- 02h 2N WORDs X,Y of N points
- Note: draws N+1 marker symbols, the first one at the current position
- SeeAlso: #03908
- Format of HCRLINE parameter block:
- Offset Size Description (Table 03900)
- 00h WORD length of following data (multiple of 4)
- 02h 2N WORDs X,Y coordinates relative to the position of the previous point
- (current position for first point) for each of N points in
- polyline
- Notes: the first line segment is drawn beginning at the current position
- on completion, the current position is set to the last point drawn
- SeeAlso: #03907,#03897,#03918
- Format of HEAR parameter block:
- Offset Size Description (Table 03901)
- 00h WORD 0001h (length of following data)
- 02h BYTE area definition flags
- bits 7-6: End Area type
- 00 complete, perform fill
- 01 suspend definition
- 10 complete, but don't fill
- SeeAlso: #03889
- Format of HEGS parameter block:
- Offset Size Description (Table 03902)
- 00h WORD 0000h (no data following)
- Format of HESC parameter block:
- Offset Size Description (Table 03903)
- 00h WORD 0000h (no data following)
- Format of HINIT parameter block:
- Offset Size Description (Table 03904)
- 00h WORD 0002h (length of following data)
- 02h WORD segment of task buffer
- SeeAlso: #03943
- Format of HINT parameter block:
- Offset Size Description (Table 03905)
- 00h WORD 0004h (length of following data)
- 02h DWORD interrupt/event identifier
- bit 31: vertical blanking
- Format of HLDPAL parameter block:
- Offset Size Description (Table 03906)
- 00h WORD 000Ah (length of following data)
- 02h BYTE palette ID (00h = user, 01h = default)
- 03h BYTE reserved
- 04h WORD number of first palette entry
- 06h WORD number of entries
- 08h DWORD -> palette entries
- SeeAlso: #03940
- Format of HLINE parameter block:
- Offset Size Description (Table 03907)
- 00h WORD length of following data (multiple of 4)
- 02h 2N WORDs X,Y coordinates for each of N points in polyline
- Note: on completion, the current position is set to the last point drawn
- SeeAlso: #03897,#03918,#03900
- Format of HMRK parameter block:
- Offset Size Description (Table 03908)
- 00h WORD length of following data (multiple of 4)
- 02h 2N WORDs X,Y for N points
- SeeAlso: #03899
- Format of HOPEN parameter block:
- Offset Size Description (Table 03909)
- 00h WORD 0003h (length of following data)
- 01h BYTE initialization flags
- bit 6: don't load default palette
- bit 7: clear bitplanes
- 02h BYTE mode type (see #03910)
- 03h BYTE (ret) return code
- bit 7: no adapter (hardware mismatch)
- SeeAlso: #03898
- (Table 03910)
- Values for 8514/A display mode:
- 0000h 12x20 characters, 1024x768
- 0001h 8x14 characters, 640x480
- 0002h 8x14 characters, 1024x768
- 0003h 7x15 characters, 1024x768
- Format of HQCOORD parameter block:
- Offset Size Description (Table 03911)
- 00h WORD 0004h (length of following data)
- 02h BYTE (ret) coordinate format
- bits 7-4: bytes per coordinate
- bits 3-0: fraction bytes in coordinate
- 03h BYTE (ret) relative coordinate format
- bits 7-4: bytes per coordinate
- bits 3-0: fraction bytes in coordinate
- 04h BYTE (ret) number of dimensions (2-4)
- 05h BYTE (ret) test results
- bit 7: coordinate format not supported
- bit 6: relative coordinate format not supported
- bit 5: specified dimension not supported
- Format of HQCP parameter block:
- Offset Size Description (Table 03912)
- 00h WORD 0004h (length of following data)
- 02h WORD (ret) current X position
- 04h WORD (ret) current Y position
- Format of HQDFPAL parameter block:
- Offset Size Description (Table 03913)
- 00h WORD 0040h (length of following data)
- 02h 16 DWORDs (ret) color index values
- Note: the default palette is set to match the default EGA/VGA 16-color
- palettes
- Format of HQDPS parameter block:
- Offset Size Description (Table 03914)
- 00h WORD 0006h (length of following data)
- 02h WORD (ret) size of data buffer in bytes
- 04h WORD (ret) stack size in bytes
- 06h WORD (ret) size of palette save buffer in bytes
- Format of HQMODE parameter block:
- Offset Size Description (Table 03915)
- 00h WORD 0012h (length of following data)
- 02h BYTE current video mode (see #03910)
- 03h WORD driver version
- bit 6: 80286/8086 CPU
- bit 5: 8 bit planes instead of 4 planes
- bits 4-0: hardware release number
- 05h BYTE adapter type
- 03h 8514/A
- 04h XGA
- 06h BYTE reserved (display type)
- 07h BYTE character cell width
- 08h BYTE character cell height
- 09h BYTE number of bit planes
- 0Ah WORD screen width (pixels)
- 0Ch WORD screen height (pixels)
- 0Eh WORD horizontal resolution (pixels/inch)
- 10h WORD vertical resolution (pixels/inch)
- 12h BYTE flag: 00h = monochrome, FFh = color
- 13h BYTE intensity levels
- SeeAlso: #03916
- Format of HQMODES parameter block:
- Offset Size Description (Table 03916)
- 00h WORD 0021h (length of following data)
- 02h BYTE (ret) adapter type
- 03h 32 BYTEs (ret) available display modes (FFh byte marks end of data)
- SeeAlso: #03915
- Format of HRECT parameter block:
- Offset Size Description (Table 03917)
- 00h WORD 0008h (legth of following data)
- 02h 2 WORDs X,Y coordinates of top left corner or rectangle
- 06h WORD rectangle's width
- 08h WORD rectangle's height
- Note: the rectangle is filled using the current pattern, color, and mix
- Format of HRLINE parameter block:
- Offset Size Description (Table 03918)
- 00h WORD length of following data (multiple of 4)
- 02h 2 WORDs X,Y coordinates of starting point
- 06h 2N WORDs X,Y coordinates relative to the position of the previous point
- for each of N points in polyline
- Note: on completion, the current position is set to the last point drawn
- SeeAlso: #03907,#03897,#03900
- Format of HRLPC parameter block:
- Offset Size Description (Table 03919)
- 00h WORD 0000h (no data following)
- Note: used for continuity of lines crossing scissors boundaries
- SeeAlso: #03932
- Format of HRPAL parameter block:
- Offset Size Description (Table 03920)
- 00h WORD 0300h (length of following data)
- 02h 768 BYTEs buffer containing previously-saved palette table
- SeeAlso: #03940
- Format of HSBCOL parameter block:
- Offset Size Description (Table 03921)
- 00h WORD 0004h (length of following data)
- 02h DWORD color index for new background color
- SeeAlso: #03925
- Format of HSBP parameter block:
- Offset Size Description (Table 03922)
- 00h WORD 000Ch (length of following data)
- 02h DWORD bitmask for graphics updates
- 06h DWORD bitmask for alphanumeric updates
- 0Ah DWORD display bitmask
- Format of HSCELL parameter block:
- Offset Size Description (Table 03923)
- 00h
- Format of HSCMP parameter block:
- Offset Size Description (Table 03924)
- 00h WORD 0005h (length of following data)
- 02h DWORD comparison color
- 06h BYTE logical operation
- 00h True
- 01h pel > testcolor
- 02h pel == testcolor
- 03h pel < testcolor
- 04h False
- 05h pel >= testcolor
- 06h pel <> testcolor
- 07h pel <= testcolor
- Format of HSCOL parameter block:
- Offset Size Description (Table 03925)
- 00h WORD 0004h (length of following data)
- 02h DWORD color index for new foreground color
- SeeAlso: #03921
- Format of HSCOORD parameter block:
- Offset Size Description (Table 03926)
- 00h WORD 0003h (length of following data)
- 02h BYTE coordinate format
- bits 7-4: bytes per coordinate
- bits 3-0: fraction bytes in coordinate
- 03h BYTE relative coordinates format
- bits 7-4: bytes per coordinate
- bits 3-0: fraction bytes in coordinate
- 04h BYTE number of dimensions (2-4)
- Format of HSCP parameter block:
- Offset Size Description (Table 03927)
- 00h WORD 0004h (length of following data)
- 02h 2 WORDs X,Y or coordinate for new current position
- Format of HSCS parameter block:
- Offset Size Description (Table 03928)
- 00h WORD 0004h (length of following data)
- 02h DWORD -> character set definition
- Format of HSGQ parameter block:
- Offset Size Description (Table 03929)
- 00h WORD 0002h (length of following data)
- 02h WORD quality settings (see #03931)
- Format of HSHS parameter block:
- Offset Size Description (Table 03930)
- 00h WORD 0008h (length of following data)
- 02h WORD left edge of clipping rectangle (-2048 to +6143)
- 04h WORD right edge
- 06h WORD top edge
- 08h WORD bottom edget
- Bitfields for 8514/A quality settings:
- Bit(s) Description (Table 03931)
- 15 reserved
- 14 high precision
- 13 reserved
- 12-11 pel code
- 00 not drawn
- 01 drawn
- 02 conditional on overpainting/mixes
- 10 don't close areas to be filed
- 9-0 reserved
- Format of HSLPC parameter block:
- Offset Size Description (Table 03932)
- 00h WORD 0000h (no data following)
- Note: used for continuity of lines crossing scissors boundaries
- SeeAlso: #03919
- Format of HSLT parameter block:
- Offset Size Description (Table 03933)
- 00h WORD 0006h (length of following data)
- 02h BYTE line type (see #03934)
- 03h BYTE reserved
- 04h DWORD -> user line-type definition (if user type)
- SeeAlso: #03935
- (Table 03934)
- Values for 8514/A line type:
- 00h user line type
- 01h dotted
- 02h short dashes
- 03h dash-dot
- 04h double dotted
- 05h dashed
- 06h dash double dot
- 07h solid
- 08h invisible
- SeeAlso: #03933
- Format of HSLW parameter block:
- Offset Size Description (Table 03935)
- 00h WORD 0001h (length of following data)
- 02h BYTE width of line in pixels
- SeeAlso: #03933
- Format of HSMODE parameter block:
- Offset Size Description (Table 03936)
- 00h WORD 0001h (length of following data)
- 02h BYTE new display mode number (see #03910)
- Format of HSMRK paramter block:
- Offset Size Description (Table 03937)
- 00h WORD 000Eh (length of following data)
- 02h BYTE cell width
- 03h BYTE cell height
- 04h BYTE flags
- 05h BYTE reserved
- 06h WORD length of marker symbol
- 08h DWORD -> image definition data
- 0Ch DWORD -> color definition data
- SeeAlso: #03941
- Format of HSMX parameter block:
- Offset Size Description (Table 03938)
- 00h WORD 0002h (length of following data)
- 02h BYTE foreground mix (see #03939)
- 03h BYTE background mix (see #03939)
- (Table 03939)
- Values for 8514/A mix:
- 00h retain previous mix
- 01h source OR destination
- 02h source
- 04h source XOR destination
- 05h leave as-is
- 06h max(source,destination)
- 07h min(source,destination)
- 08h source+destination (clipped)
- 09h destination-source (clipped to zero)
- 0Ah source-destination (clipped to zero)
- 0Bh average source and destination
- 10h zero destination
- 11h source AND destination
- 12h source AND NOT destination
- 13h source
- 14h NOT source AND destination
- 15h leave as-is
- 16h source XOR destination
- 17h source OR destination
- 18h NOT source AND NOT destination
- 19h NOT (source XOR destination)
- 1Ah NOT destination
- 1Bh source OR NOT destination
- 1Ch NOT source
- 1Dh NOT source OR destination
- 1Eh NOT source OR NOT destination
- 1Fh set all bits of destination
- Format of HSPAL parameter block:
- Offset Size Description (Table 03940)
- 00h WORD 0300h (length of following data)
- 02h 768 BYTEs buffer for palette table
- SeeAlso: #03906,#03920
- Format of HSPATT parameter block:
- Offset Size Description (Table 03941)
- 00h WORD 000Eh (length of following data)
- 02h BYTE cell width
- 03h BYTE cell height
- 04h BYTE flags
- 05h BYTE reserved
- 06h WORD length of marker symbol
- 08h DWORD -> image definition data
- 0Ch DWORD -> color definition data
- SeeAlso: #03937,#03942
- Format of HSPATTO parameter block:
- Offset Size Description (Table 03942)
- 00h WORD 0004h (length of following data)
- 02h 2 WORDs X,Y of pattern reference point (origin)
- SeeAlso: #03941
- Format of HSYNC parameter block:
- Offset Size Description (Table 03943)
- 00h WORD 0002h (length of following data)
- 02h WORD segment of task state buffer
- SeeAlso: #03904
- Format of HXLATE parameter block:
- Offset Size Description (Table 03944)
- 00h WORD 0020h (length of following data)
- 02h 32 BYTEs color index table
- --------V-7F0105-----------------------------
- INT 7F - IBM XGA Adapter Interface (XGAAIDOS.SYS)
- AX = 0105h
- Return: CF set on error
- CF clear if successful
- CX:DX -> array of FAR pointers to entry points (see #03877)
- Note: this API is a superset of the 8514/A Adapter Interface
- (see AX=0105h"HDILOAD")
- --------V-7F0106-----------------------------
- INT 7F - HDILOAD Mach32 Adapter Interface - UNINSTALL
- AX = 0106h
- Return: AX = 0105h if successfully unloaded
- SeeAlso: AX=0105h
- --------N-7F02-------------------------------
- INT 7F - Alloy NTNX, MW386 - RELEASE SEMAPHORE
- AH = 02h
- DS:DX -> ASCIZ semaphore name (max 64 bytes)
- Return: AL = status (see #03871)
- AH = semaphore owner if status=02h
- SeeAlso: AH=00h,AH=01h,AH=42h
- --------T-7F02-------------------------------
- INT 7F - MultiLink Advanced v1.0+ - RELEASE CPU
- AH = 02h
- Return: ???
- Desc: yields CPU to other tasks
- SeeAlso: AH=00h"MultiLink",AH=09h"MultiLink",INT 15/AX=1000h
- --------N-7F02-------------------------------
- INT 7F - G8BPQ v4.00+ - HOST MODE - SEND FRAME
- AH = 02h
- AL = stream number (01h-40h)
- CX = length of frame
- ES:SI -> frame to be sent
- SeeAlso: AH=00h"G8BPQ",AH=03h"G8BPQ",AH=07h"G8BPQ",AH=0Ah"G8BPQ"
- --------f-7F0200-----------------------------
- INT 7F - Btrieve Multi-User - GIVE UP TIME???
- AX = 0200h
- SeeAlso: INT 2F/AX=AB01h,INT 2F/AX=AB02h,INT 7B"Btrieve"
- --------N-7F03-------------------------------
- INT 7F - Alloy ANSK, NTNX, MW386 - GET USER NUMBER
- AH = 03h
- Return: AL = user number
- AH = machine number (MW386)
- Note: this function call is the recommended method for a CPU-bound process to
- prevent its priority from being lowered
- SeeAlso: AH=04h,AH=05h,AH=A1h
- --------N-7F03-------------------------------
- INT 7F - G8BPQ v4.00+ - HOST MODE - RECEIVE FRAME
- AH = 03h
- AL = stream number (01h-40h)
- ES:DI -> buffer for frame (must be large enough for a full frame; 350
- bytes is usually sufficient)
- Return: BX = number of pending frames (0000h if returned frame was last avail)
- CX = length of received frame
- SeeAlso: AH=02h"G8BPQ",AH=07h"G8BPQ",AH=0Bh"G8BPQ"
- --------N-7F04-------------------------------
- INT 7F - Alloy NTNX, MW386 - GET NUMBER OF USERS
- AH = 04h
- Return: AL = total number of users on currrent machine (MW386)
- AL = number of slaves on system (NTNX)
- SeeAlso: AH=03h
- --------N-7F04-------------------------------
- INT 7F - G8BPQ v4.00+ - HOST MODE - GET STREAM STATUS
- AH = 04h
- AL = stream number (01h-40h)
- Return: CX = state (0000h disconnected, 0001h connected)
- DX = delta state (0000h no change, 0001h changed since last check)
- SeeAlso: AH=00h"G8BPQ",AH=02h"G8BPQ",AH=05h"G8BPQ"
- --------N-7F05-------------------------------
- INT 7F - Alloy NTNX (Host) - LOCK/UNLOCK SYSTEM, SPOOLER CONTROL
- AH = 05h
- AL = function
- 00h lock system (disable slave services)
- 01h unlock system
- 02h enable spooler
- 03h disable spooler
- 04h enable slave timer update
- 05h disable slave timer update
- 06h enable form feeds
- 07h disable form feeds
- SeeAlso: INT 17/AH=A4h
- --------N-7F05-------------------------------
- INT 7F - Alloy NTNX (Slave), MW386 - GET USER PARAMETERS
- AH = 05h
- DX:DI -> buffer for user information record (see #03945)
- Notes: MW386 provides this function for backward compatibility only, and sets
- many of the fields to zero because they are meaningless under MW386
- this function has no effect when called by the host (user 0)
- SeeAlso: AH=03h
- Format of Alloy user information record:
- Offset Size Description (Table 03945)
- 00h WORD segment of video RAM
- 02h WORD segment of secondary copy of video RAM
- 04h WORD offset of screen update flag (see INT 10/AH=8Bh)
- flag nonzero if update needed
- 06h WORD video NMI enable port
- (not used by MW386, set to 0000h)
- 08h WORD video NMI disable port
- (not used by MW386, set to 0000h)
- 0Ah BYTE processor type
- 00h 8088
- 01h V20
- 02h 8086
- 03h V30
- 06h 80386
- 0Bh WORD multitasking flag (00h = single tasking, 01h = multitasking)
- (not used by MW386, set to 0000h)
- 0Dh WORD offset of terminal driver
- (not used by MW386, set to 0000h)
- 0Fh BYTE port for console I/O
- (not used by MW386, set to 0000h)
- 10h WORD offset of processor communication busy flag
- bit 7 set when slave communicating with host
- 12h WORD pointer to FAR NX system call
- (not used by MW386, set to 0000h)
- 14h WORD offset of 16-byte user configuration record (see AH=38h)
- 16h WORD offset of command/status word
- 18h WORD offset of screen valid flag (see INT 10/AH=93h)
- nonzero if screen must be repainted
- 1Ah WORD offset of screen repaint flag
- 1Ch WORD pointer to NEAR NX system call
- (not used by MW386, set to 0000h)
- 1Eh WORD offset for intercept flags
- (not used by MW386, set to 0000h)
- intercept flag = FFh if MS-DOS intercepts should be disabled
- 20h WORD offset of terminal lock flag (see INT 10/AH=92h)
- lock flag = FFh if backgrnd screen updates should be suspended
- 22h 26 BYTEs reserved
- --------N-7F05-------------------------------
- INT 7F - G8BPQ v4.00+ - HOST MODE - ACKNOWLEDGE STREAM STATUS CHANGE
- AH = 05h
- AL = stream number (01h-40h)
- Note: this function must be called in order to receive a report of another
- status change
- SeeAlso: AH=00h"G8BPQ",AH=04h"G8BPQ"
- --------N-7F06-------------------------------
- INT 7F - Alloy NTNX (Host) - GET SHARED DRIVE INFO
- AH = 06h
- AL = drive number (1=A:, 2=B:, etc)
- ES:DI -> drive info record (see #03946)
- Return: AX = status
- 0000h successful
- ES:DI buffer filled
- 0001h not shared drive
- Format of Alloy drive info record:
- Offset Size Description (Table 03946)
- 00h WORD segment of drive IO-REQUEST structure (MS-DOS DPB)
- 02h WORD segment of allocation map (owner table)
- one byte per FAT entry, containing user ID owning that entry
- 04h WORD segment of master FAT for drive (copy of FAT on disk)
- 06h WORD pointer to configuration file
- 08h WORD total number of clusters
- 0Ah WORD bytes per sector
- 0Ch WORD sectors per cluster
- 0Eh BYTE FAT type (0Ch = 12-bit, 10h = 16-bit)
- --------N-7F06-------------------------------
- INT 7F - Alloy NTNX (Slave) - ALLOCATE FREE CLUSTER ON SHARED DRIVE
- AH = 06h
- DL = drive number (1=A:,2=B:,etc)
- CX = number of clusters to allocate
- Return: AH = status
- 00h successful
- CX = number of clusters still free
- 10h invalid shared drive request
- CL = first and second shared drives
- 11h invalid cluster count (must be 01h-FFh)
- --------N-7F06-------------------------------
- INT 7F - G8BPQ v4.00+ - HOST MODE - SESSION CONTROL
- AH = 06h
- AL = stream number (01h-40h)
- CX = subfunction
- 0000h connect to node
- DL bit 0: use BBS callsign instead of Node Call
- 0001h connect to node
- use BBS Call if APPLMASK=1
- 0002h disconnect
- 0003h return user to node
- SeeAlso: AH=01h"G8BPQ",AH=04h"G8BPQ"
- --------N-7F07-------------------------------
- INT 7F - Alloy NTNX, MW386 - GET LIST OF SHARED DRIVES
- AH = 07h
- Return: ES:DI -> shared drive list (see #03947)
- Note: MW386 considers all fixed disks to be shared drives; only C and D will
- be returned as shared
- Format of Alloy shared drive list:
- Offset Size Description (Table 03947)
- 00h BYTE string length
- 01h BYTE number of shared drives
- 02h N BYTEs one byte per shared drive
- --------N-7F07-------------------------------
- INT 7F - G8BPQ v4.00+ - HOST MODE - GET BUFFER COUNTS FOR STREAM
- AH = 07h
- AL = stream number (01h-40h)
- Return: BX = number of pending receive frames
- CX = number of unacknowledged sent frames
- DX = number of buffers available
- SeeAlso: AH=02h"G8BPQ",AH=03h"G8BPQ"
- --------N-7F08-------------------------------
- INT 7F - Alloy NTNX (Host) - GET INTERRUPT VECTORS
- AH = 08h
- CL = function
- 00h get original interrupt vector
- 01h get Network Executive interrrupt
- AL = interrupt number
- DX:SI -> DWORD to hold interrupt vector
- Return: AL = status
- 00h successful
- 01h interrupt vector not used by network executive
- 02h invalid subfunction
- Note: the network executive uses interrupts 02h,08h,09h,0Fh,10h,13h,16h-19h,
- 1Ch,20h,28h,2Ah,2Fh,5Bh,67h,7Fh,ECh, and F0h-FFh
- SeeAlso: AH=09h/CL=03h,INT 21/AH=35h
- --------N-7F08--CL02-------------------------
- INT 7F - Alloy NTNX - SET MESSAGE DISPLAY TIMEOUT
- AH = 08h
- CL = 02h
- DX = timeout in seconds
- Return: AL = status
- 00h successful
- 02h invalid subfunction
- --------N-7F08-------------------------------
- INT 7F - G8BPQ v4.00+ - HOST MODE - PORT CONTROL/INFORMATION
- AH = 08h
- AL = stream number (01h-40h)
- Return: ES:DI -> 10-byte buffer containing blank-padded callsign
- ---v4.05+ ---
- AL = radio port to which channel is connected (level 2)
- AH = session type (see #03948)
- BX = L2 paclen for session
- CX = maximum frame size
- DX = L4 window size or 0000h if not L4 circuit
- Program: the G8BPQ AX25 Networking Package is amateur packet radio software by
- John Wiseman which allows a PC to act as a node in an AX.25 network
- SeeAlso: AH=01h"G8BPQ",AH=02h"G8BPQ",AH=03h"G8BPQ",AH=0Ah"G8BPQ"
- Bitfields for G8BPQ session type:
- Bit(s) Description (Table 03948)
- 0 L2LINK
- 1 SESSION
- 2 UPLINK
- 3 DOWNLIND
- 5 BPQHOST
- --------T-7F09-------------------------------
- INT 7F - MultiLink Advanced v1.0+ - SET TASK PRIORITY
- AH = 09h
- AL = priority (0-7)
- Return: nothing
- InstallCheck: ensure that the interrupt vector is not pointing at segment
- 0000h, then test whether the byte at offset 0000h in the interrupt
- handler's segment is E9h
- Index: installation check;MultiLink Advanced
- SeeAlso: AH=00h"MultiLink",AH=0Ah"MultiLink"
- --------N-7F09-------------------------------
- INT 7F - G8BPQ - proposed addition - GET NODE/APPLICATION CALLSIGN AND ALIAS
- AH = 09h
- AL = application
- 00h node
- 01h BBS
- 02h HOST
- 03h SYSOP
- BL = what to get (00h callsign, 01h application name)
- ES:SI -> buffer for callsign/name string
- Return: CX = length of returned string
- SeeAlso: AH=00h"G8BPQ",AH=01h"G8BPQ",AH=0Ch"G8BPQ"
- --------N-7F09-------------------------------
- INT 7F - Alloy NTNX - ENABLE/DISABLE MUD FILE CHECKING
- AH = 09h
- CL = function
- 00h enable checking of RTNX.MUD file
- 01h disable RTNX.MUD checking
- --------N-7F09--CL02-------------------------
- INT 7F - Alloy NTNX - SWITCH HOST TO DEDICATED MODE
- AH = 09h
- CL = 02h
- Note: in dedicated mode, the host will only poll for I/O requests from the
- slave processors, and not provide workstation services
- --------N-7F09--CL03-------------------------
- INT 7F - Alloy NTNX,MW386 - GET ALTERNATE INTERRUPT
- AH = 09h
- CL = 03h
- AL = default interrupt number (67h,7Fh,etc)
- Return: CL = actual interrupt which handles specified interrupt's calls
- SeeAlso: AH=08h
- --------N-7F0A--CL00-------------------------
- INT 7F - Alloy NTNX - GET SYSTEM FLAGS
- AH = 0Ah
- CL = 00h
- ES:DI -> buffer for system flags (see #03949)
- Return: ES:DI buffer filled
- Notes: on a slave, only the NX_Busy flag is returned
- all three flags are at fixed positions, so this function only needs to
- be called once
- an interrupt handler should only perform DOS or device accesses when
- all three flags are 00h
- Format of Alloy system flags:
- Offset Size Description (Table 03949)
- 00h DWORD pointer to NX_Busy flag (nonzero when communicating with users)
- 04h DWORD pointer to device driver busy flag
- 08h DWORD pointer to InTimer flag
- --------N-7F0A-------------------------------
- INT 7F - G8BPQ v4.00+ - HOST MODE - TRANSMIT RAW (KISS) FRAME
- AH = 0Ah
- AL = radio port
- ES:SI -> buffer containing data to be sent
- CX = number of bytes to send
- SeeAlso: AH=02h"G8BPQ",AH=08h"G8BPQ",AH=0Bh"G8BPQ"
- --------T-7F0A-------------------------------
- INT 7F - MultiLink Advanced v1.0+ - SET KEYBOARD TEST STATUS
- AH = 0Ah
- AL = task-switch status
- 00h normal (disable task when it repeatedly polls keyboard)
- 01h disable task until keyboard input available
- FFh never disable task
- Return: ???
- SeeAlso: AH=09h"MultiLink"
- --------N-7F0B--CL02-------------------------
- INT 7F - Alloy NTNX (Host) - SET/RESET GRAPHICS DOS ON SLAVE
- AH = 0Bh
- CL = 02h
- AL = slave ID number
- CH = DOS to activate
- 00h graphics DOS
- 01h character DOS
- Return: AL = status
- 00h successful
- 01h nothing done, proper DOS type already loaded
- --------N-7F0B-------------------------------
- INT 7F - G8BPQ v4.00+ - HOST MODE - RECEIVE TRACE (RAW DATA) FRAME
- AH = 0Bh
- ES:DI -> buffer for received data (see #03950)
- Return: CX = number of bytes received
- Note: the specified buffer must be large enough to receive a full frame
- SeeAlso: AH=03h"G8BPQ",AH=08h"G8BPQ",AH=0Ah"G8BPQ"
- Format of G8BPQ received data:
- Offset Size Description (Table 03950)
- 00h WORD internal control information
- 02h BYTE port number (bit 7 set if transmitted frame)
- 03h WORD frame length including this header
- 05h var user data
- --------N-7F0C-------------------------------
- INT 7F - G8BPQ v4.00+ - HOST MODE - UPDATE SWITCH INFORMATION
- AH = 0Ch
- DX = function
- 0001h update beacon text
- CX = length of data
- ES:SI -> data to be sent in beacons
- 0002h (v4.07+) initiate NODES broadcast
- SeeAlso: AH=09h"G8BPQ"
- --------N-7F0D00-----------------------------
- INT 7F - G8BPQ v4.07+ - HOST MODE - GET AVAILABLE STREAM
- AX = 0D00h
- Return: AL = first available stream number, or FFh if none free
- SeeAlso: AH=00h"G8BPQ",AH=0Dh
- --------N-7F0D-------------------------------
- INT 7F - G8BPQ v4.07+ - HOST MODE - ALLOCATE/DEALLOCATE STREAM
- AH = 0Dh
- AL = stream number (01h-FFh)
- CL = function
- 01h allocate stream
- Return: CX = status (0000h successful, else already in use)
- 02h deallocate stream
- SeeAlso: AX=0D00h
- --------N-7F0F-------------------------------
- INT 7F - G8BPQ v4.00+ - HOST MODE - GET TIME MARKER
- AH = 0Fh
- Return: AX = time marker (clock ticks modulo 64K)
- Program: the G8BPQ AX25 Networking Package is amateur packet radio software by
- John Wiseman which allows a PC to act as a node in an AX.25 network
- SeeAlso: AH=01h"G8BPQ",AX=0D00h,INT 1A/AH=00h
- --------N-7F10--CL00-------------------------
- INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - OPEN CHANNEL
- AH = 10h
- CL = 00h
- AL = channel number
- DX:DI -> channel buffer
- Return: AL = status (00h-03h,0Dh) (see #03951)
- Note: may not be invoked from within a hardware interrupt handler
- SeeAlso: AH=10h/CL=01h,AH=10h/CL=04h,AH=14h/CL=02h
- (Table 03951)
- Values for Alloy function status:
- 00h successful
- 01h busy
- 02h channel range error (not 00h-3Fh)
- 03h invalid subfunction
- 0Ah channel not open
- 0Ch channel already locked
- 0Dh unable to open
- --------N-7F10--CL01-------------------------
- INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - CLOSE CHANNEL
- AH = 10h
- CL = 01h
- AL = channel number
- Return: AL = status (00h-03h,0Ah) (see #03951)
- Note: may not be invoked from within a hardware interrupt handler
- SeeAlso: AH=10h/CL=00h,AH=10h/CL=05h
- --------N-7F10--CL02-------------------------
- INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK CHANNEL
- AH = 10h
- CL = 02h
- AL = channel number
- Return: AL = status (00h-03h,0Ah,0Ch) (see #03951)
- Note: may not be invoked from within a hardware interrupt handler
- SeeAlso: AH=10h/CL=03h,AH=10h/CL=06h,AH=10h/CL=08h
- --------N-7F10--CL03-------------------------
- INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK CHANNEL
- AH = 10h
- CL = 03h
- AL = channel number
- Return: AL = status (00h-03h,0Ah) (see #03951)
- Notes: should only be used on channels locked with AH=10h/CL=02h, not on those
- locked by receipt of a datagram
- may not be invoked from within a hardware interrupt handler
- SeeAlso: AH=10h/CL=02h,AH=10h/CL=04h,AH=10h/CL=09h
- --------N-7F10--CL04-------------------------
- INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - RELEASE BUFFER
- AH = 10h
- CL = 04h
- AL = channel number
- Return: AL = status (00h-03h) (see #03951)
- Notes: unlocks buffer after received datagram has been processed
- may not be invoked from within a hardware interrupt handler
- SeeAlso: AH=10h/CL=00h
- --------N-7F10--CL05-------------------------
- INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - CLOSE ALL CHANNELS
- AH = 10h
- CL = 05h
- Return: AL = status (00h-03h) (see #03951)
- Notes: clears all pending datagrams and clears buffer pointers before closing
- the channels
- may not be invoked from within a hardware interrupt handler
- SeeAlso: AH=10h/CL=01h
- --------N-7F10--CL06-------------------------
- INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK ALL OPEN CHANNELS
- AH = 10h
- CL = 06h
- Return: AL = status (00h-03h) (see #03951)
- Note: may not be invoked from within a hardware interrupt handler
- SeeAlso: AH=10h/CL=02h,AH=10h/CL=08h
- --------N-7F10--CL07-------------------------
- INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK ALL LOCKED IDLE CHANNELS
- AH = 10h
- CL = 07h
- Return: AL = status (00h-03h) (see #03951)
- Notes: unlocks all locked channels which have no pending datagrams
- may not be invoked from within a hardware interrupt handler
- SeeAlso: AH=10h/CL=03h,AH=10h/CL=09h
- --------N-7F10--CL08-------------------------
- INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK MULTIPLE CHANNELS
- AH = 10h
- CL = 08h
- DX = maximum channel number to lock
- Return: AL = status (00h-03h) (see #03951)
- Notes: locks channels numbered 00h through the value in DX
- may not be invoked from within a hardware interrupt handler
- SeeAlso: AH=10h/CL=02h,AH=10h/CL=06h,AH=10h/CL=09h
- --------N-7F10--CL09-------------------------
- INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK MULTIPLE CHANNELS
- AH = 10h
- CL = 09h
- DX = maximum channel number to unlock
- Return: AL = status (00h-03h) (see #03951)
- Notes: unlocks channels numbered 00h through the value in DX
- may not be invoked from within a hardware interrupt handler
- SeeAlso: AH=10h/CL=03h,AH=10h/CL=07h,AH=10h/CL=08h
- --------N-7F11-------------------------------
- INT 7F - Alloy NTNX, MW386 - SEND DATAGRAM
- AH = 11h
- DX:SI -> request block (see #03953)
- Return: AL = status (see #03952)
- Note: if wildcard channel FFh used, actual channel number will be filled in
- SeeAlso: AH=12h
- (Table 03952)
- Values for Alloy function status:
- 00h successful
- 01h busy
- 02h channel range error (not 00h-3Fh)
- 03h invalid subfunction
- 0Ah packet too large (or <2 bytes if NTNX)
- 0Bh can't send packet to itself
- 0Ch invalid number of destinations
- 0Dh destination channel number out of range
- 0Eh destination user is busy
- 0Fh destination user has locked channel
- 10h channel not open
- 11h no datagram server on destination (NTNX)
- Format of Alloy request block:
- Offset Size Description (Table 03953)
- 00h DWORD pointer to packet to send
- 04h WORD packet size in bytes (1-4096)
- 06h BYTE number of destinations for packet (max 1Fh)
- 07h 31 BYTEs destination user IDs (FFh = broadcast to all except sender)
- 26h 31 BYTEs destination channels (FFh = first available channel)
- 45h 31 BYTEs return destination statuses
- --------N-7F12-------------------------------
- INT 7F - Alloy NTNX, MW386 - ACKNOWLEDGE DATAGRAM
- AH = 12h
- AL = channel number being acknowledged
- DI:DX = 32-bit status to return to sender
- Return: AL = status (see #03954)
- Note: also unlocks the channel, allowing the next datagram to be received
- SeeAlso: AH=11h,AH=15h/CL=04h
- (Table 03954)
- Values for Alloy function status:
- 00h successful
- 01h busy
- 02h channel range error (not 00h-3Fh)
- 03h invalid subfunction
- 0Ah channel not open
- 0Bh no message in channel
- 0Ch destination slave busy--retry (NTNX)
- 0Dh destination user not active
- 0Eh destination slave not active (NTNX)
- 0Fh destination disabled datagram service
- --------V-7F1234-----------------------------
- INT 7F - TIGA Communications Driver v2.05 - UNINSTALL
- AX = 1234h
- SeeAlso: AX=4321h
- --------N-7F13--CL00-------------------------
- INT 7F - Alloy NTNX, MW386 - RESET USER DATAGRAMS
- AH = 13h
- CL = 00h
- Note: clears all pending datagrams and removes all channels opened in NTNX
- compatibility mode
- --------N-7F14--CL00-------------------------
- INT 7F - Alloy NTNX, MW386 - SET RECEIVE ISR
- AH = 14h
- CL = 00h
- DX:DI -> application FAR receive service routine (see #03955)
- Return: AL = status (00h-03h) (see #03954)
- SeeAlso: AH=14h/CL=01h,AH=14h/CL=03h
- (Table 03955)
- Values Alloy receive service routine is called with:
- DH = sender ID
- DL = channel with datagram
- interrupts disabled
- Return: AL = response code
- 00h leave buffer locked, set channel status, and repeat call later
- 01h release channel buffer
- 02h change buffer pointer to DX:DI
- AH,CX,DX,DI,SI may be destroyed
- --------N-7F14--CL01-------------------------
- INT 7F - Alloy NTNX, MW386 - SET ACKNOWLEDGE ISR
- AH = 14h
- CL = 01h
- DX:DI -> application FAR acknowledge service routine (see #03956)
- Return: AL = status (00h-03h) (see #03954)
- Note: the service routine will be called as soon as an acknowledgment arrives
- SeeAlso: AH=12h,AH=14h/CL=00h,AH=14h/CL=04h,AH=15h/CL=04h
- (Table 03956)
- Values Alloy acknowledge service routine is called with:
- DS:SI -> acknowledge structure (see #03960)
- Return: AL = response code
- 00h application busy, network executive should call again later
- 01h acknowledge accepted
- AH,DX,SI may be destroyed
- --------N-7F14--CL02-------------------------
- INT 7F - Alloy NTNX, MW386 - SET CHANNEL BUFFER POINTER
- AH = 14h
- CL = 02h
- AL = channel number
- DX:DI -> receive buffer
- Return: AL = status (00h-03h) (see #03954)
- Note: may be called from within a receive ISR or when a datagram is pending
- SeeAlso: AH=10h/CL=00h,AH=14h/CL=00h
- --------N-7F14--CL03-------------------------
- INT 7F - Alloy NTNX, MW386 - GET RECEIVE ISR
- AH = 14h
- CL = 03h
- Return: DX:DI -> current receive ISR
- SeeAlso: AH=14h/CL=00h,AH=14h/CL=04h
- --------N-7F14--CL04-------------------------
- INT 7F - Alloy NTNX, MW386 - GET ACKNOWLEDGE ISR
- AH = 14h
- CL = 04h
- Return: DX:DI -> current acknowledge ISR
- SeeAlso: AH=14h/CL=01h,AH=14h/CL=03h
- --------N-7F14--CL05-------------------------
- INT 7F - Alloy NTNX (Host), MW386 - GET BUSY POINTER
- AH = 14h
- CL = 05h
- DX:DI -> buffer for busy structure (see #03957)
- Return: DX:DI buffer filled
- Format of Alloy busy structure:
- Offset Size Description (Table 03957)
- 00h DWORD pointer to busy flag byte
- 04h WORD fixed port address (FF00h)
- --------N-7F15--CL00-------------------------
- INT 7F - Alloy NTNX, MW386 - GET CHANNEL STATUS
- AH = 15h
- CL = 00h
- AL = channel number
- DX:DI -> status structure (see #03958)
- Return: AL = status (00h-03h) (see #03954)
- SeeAlso: AH=15h/CL=01h
- Format of Alloy channel status structure:
- Offset Size Description (Table 03958)
- 00h BYTE channel status
- bit 0: channel open
- bit 1: channel buffer contains received data
- bit 7: channel locked
- 01h BYTE sender ID
- --------N-7F15--CL01-------------------------
- INT 7F - Alloy NTNX, MW386 - GET NEXT FULL CHANNEL
- AH = 15h
- CL = 01h
- DX:DI -> full-channel structure (see #03959)
- Return: AL = status
- 00h successful
- 01h busy
- 0Ah no datagrams available
- Note: MW386 v1.0 returns the lowest channel with a datagram; newer versions
- and NTNX return the oldest datagram
- SeeAlso: AH=15h/CL=00h
- Format of Alloy full-channel structure:
- Offset Size Description (Table 03959)
- 00h BYTE number of channel with oldest datagram
- 01h BYTE sender ID
- --------N-7F15--CL02-------------------------
- INT 7F - Alloy NTNX, MW386 - GET MAXIMUM NUMBER OF CHANNELS
- AH = 15h
- CL = 02h
- Return: AH = number of channels available (40h for MW386)
- Note: the application may always assume at least 32 channels available
- SeeAlso: AH=15h/CL=03h
- --------N-7F15--CL03-------------------------
- INT 7F - Alloy NTNX, MW386 - GET MAXIMUM PACKET SIZE
- AH = 15h
- CL = 03h
- DX:DI -> WORD for return value
- Return: buffer WORD filled with maximum packet size (4096 for MW386)
- SeeAlso: AH=15h/CL=02h
- --------N-7F15--CL04-------------------------
- INT 7F - Alloy NTNX, MW386 - GET AND CLEAR ACKNOWLEDGE STATUS
- AH = 15h
- CL = 04h
- DX:DI -> status structure (see #03960)
- Return: AL = status
- 00h successful
- DX:DI structure filled
- 01h busy
- 0Ah no acknowledgement has arrived
- SeeAlso: AH=12h,AH=14h/CL=01h
- Format of Alloy status structure:
- Offset Size Description (Table 03960)
- 00h BYTE sender ID
- 01h BYTE channel number
- 02h 4 BYTEs receiver status (see #03954)
- --------N-7F16-------------------------------
- INT 7F - Alloy NTNX, MW386 - DIRECT MEMORY TRANSFER
- AH = 16h
- DX:SI -> transfer structure (see #03961)
- Return: AL = status
- 00h successful
- 0Ah source or destination out of range
- 0Bh transfer kernel busy--try again
- Notes: this call transfers memory contents directly between users; both source
- and destination user IDs may differ from the caller's ID
- no segment wrap is allowed
- Format of Alloy transfer structure:
- Offset Size Description (Table 03961)
- 00h WORD bytes to transfer
- 02h BYTE source ID
- FEh = caller
- 03h DWORD source address
- 07h BYTE destination ID
- FFh = all slaves except caller
- FEh = caller
- 08h DWORD destination address
- --------N-7F21-------------------------------
- INT 7F - Alloy NTNX, MW386 - SEND MESSAGE OR COMMAND TO USER(S)
- AH = 21h
- AL = sender's user ID
- DS:DX -> control packet (see #03962)
- Note: messages or commands are ignored if disabled by the destination user
- SeeAlso: AH=22h
- Format of Alloy control packet:
- Offset Size Description (Table 03962)
- 00h BYTE packet type
- 00h message
- 01h NTNX command
- 02h MW386 command
- 01h BYTE destination user ID or 'A' for all users
- 02h 62 BYTEs ASCIZ message (packet type 00h)
- BIOS keycodes terminated by NUL byte (type 01h) or word (02h)
- Note: a maximum of 16 keycodes will be processed for NTNX and MW386 commands
- --------N-7F22-------------------------------
- INT 7F - Alloy NTNX - GET MESSAGE
- AH = 22h
- Return: pending messages displayed on user's screen
- SeeAlso: AH=21h
- --------N-7F24-------------------------------
- INT 7F - Alloy NTNX, MW386 - ATTACH OR RELEASE DRIVE FOR LOW-LEVEL WRITE ACCESS
- AH = 24h
- CL = function
- 00h attach
- 01h release
- CH = drive (0=A:,1=B:,etc)
- Return: AX = status (see #03963)
- Note: only drives on the current machine may be attached
- (Table 03963)
- Values for Alloy function status:
- 00h successful
- 01h invalid request
- 02h already attached
- 03h not attached
- 04h lock table full
- --------N-7F24-------------------------------
- INT 7F - Alloy NTNX - ATTACH/RELEASE HOST PROCESSOR
- AH = 24h
- CL = function
- 02h attach host
- 03h release host
- Return: AX = status (see #03963)
- Note: the host processor may be attached in order to perform I/O via the host
- --------N-7F25--CL00-------------------------
- INT 7F - Alloy ANSK, NTNX, MW386 - GET NETWORK EXECUTIVE VERSION
- AH = 25h
- CL = 00h
- Return: AH = version suffix letter
- CH = major version number
- CL = minor version number
- SeeAlso: AH=25h/CL=01h
- --------N-7F25--CL01-------------------------
- INT 7F - Alloy ANSK, NTNX, MW386 - GET NETWORK EXECUTIVE TYPE
- AH = 25h
- CL = 01h
- Return: CL = executive type (see #03964)
- SeeAlso: AH=25h/CL=00h
- (Table 03964)
- Values for Alloy network executive type:
- 00h RTNX
- 01h ATNX
- 02h NTNX
- 03h BTNX
- 04h MW386
- 05h ANSK
- --------V-7F2525-----------------------------
- INT 7F - TIGA Communications Driver v2.05 - ???
- AX = 2525h
- BX = ???
- Return: ???
- SeeAlso: AX=4321h,AX=5555h
- --------N-7F26--CL00-------------------------
- INT 7F - Alloy NTNX, MW386 - GET NTNX FILE MODE
- AH = 26h
- CL = 00h
- Return: AX = file mode bits (see #03965)
- Note: MW386 does not support file modes, and always returns AX=001Fh
- SeeAlso: AH=26h,AH=26h/CL=06h
- Bitfields for Alloy file mode bits:
- Bit(s) Description (Table 03965)
- 0 directory protection enabled
- 1 extended open enabled
- 2 flush on every disk write
- 3 flush on every disk write in locked interval
- 4 flush on reads from simultaneously opened file
- --------N-7F26-------------------------------
- INT 7F - Alloy NTNX - SET FILE I/O CHECKING LEVEL
- AH = 26h
- CL = check type to set/reset
- 01h directory protection
- 02h extended open
- 03h flush on every disk write
- 04h flush on disk write if any lock set during write
- 05h flush on all reads if file written
- AL = new state (00h off, 01h on)
- SeeAlso: AH=26h/CL=00h,AH=26h/CL=06h
- --------N-7F26--CL06-------------------------
- INT 7F - Alloy NTNX - CANCEL FLUSH ON WRITE
- AH = 26h
- CL = 06h
- Note: cancels flags set by AH=26h/CL=03h and AH=26h/CL=04h
- SeeAlso: AH=26h/CL=00h
- --------N-7F30-------------------------------
- INT 7F - Alloy MW386 - GET PORT INFORMATION
- AH = 30h
- CX = MW386 port number
- Return: AL = result
- FFh if port not found
- else driver unit number
- BL = port mode
- BH = port type
- 02h remote
- DH = owner's machine ID
- DL = owner's user ID
- SeeAlso: INT 17/AH=8Bh
- --------N-7F31-------------------------------
- INT 7F - Alloy MW386 v1.x only - CHECK PORT ASSIGNMENT
- AH = 31h
- ???
- Return: ???
- --------N-7F37-------------------------------
- INT 7F - Alloy NTNX (Host) - GET SEMAPHORE TABLE
- AH = 37h
- Return: ES:AX -> semaphore table
- --------N-7F37-------------------------------
- INT 7F - Alloy ANSK, NTNX (Slave) - DUMP STRING TO TERMINAL
- AH = 37h
- DS:DX -> ASCIZ string to display
- Note: if the string is empty, a terminal update will be forced
- --------N-7F38-------------------------------
- INT 7F - Alloy NTNX (Slave), MW386 - SET NEW TERMINAL DRIVER
- AH = 38h
- AL = new terminal driver number
- FFh dummy driver
- FEh current driver
- FDh load new driver
- DS:SI -> new driver
- SeeAlso: AH=39h
- --------N-7F39-------------------------------
- INT 7F - Alloy MW386 - SET TERMINAL DRIVER FOR ANOTHER USER
- AH = 39h
- AL = new terminal driver number
- FFh dummy driver
- FEh current driver
- FDh load new driver
- DS:SI -> new driver
- DL = user number (FFh = caller)
- DH = machine number if DL <> FFh
- Return: CF set if invalid user number
- CF clear if successful
- Notes: only available to supervisors
- the new driver number will not take effect until the user is rebooted
- SeeAlso: AH=38h
- --------N-7F3A-------------------------------
- INT 7F - Alloy MW386 - GET TERMINAL PARAMETERS
- AH = 3Ah
- DL = user number (FFh = caller)
- DH = machine number
- Return: CF clear if successful
- AH = terminal driver number
- AL = baud rate (00h = 38400, 01h = 19200, etc)
- CL = parity (00h none, 01h even, 02h odd)
- CH = handshaking (00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC)
- CF set if invalid user number
- SeeAlso: AH=3Bh
- --------N-7F3B-------------------------------
- INT 7F - Alloy MW386 - SET TERMINAL PARAMETERS
- AH = 3Bh
- AL = baud rate (00h = 38400, 01h = 19200, etc)
- CL = parity (00h none, 01h even, 02h odd)
- CH = handshaking (00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC)
- DL = user number (FFh = caller)
- DH = machine number for user
- Return: CF set if invalid user number
- Notes: only available to supervisors
- the new parameters will take effect immediately if the user's terminal
- has not been started, else AH=3Dh must be called to post the changes
- SeeAlso: AH=3Ah,AH=3Dh
- --------N-7F3C-------------------------------
- INT 7F - Alloy MW386 - ENABLE/DISABLE AUTOBAUD DETECT
- AH = 3Ch
- AL = new state (00h disabled, 01h enabled)
- DL = user number (FFh = caller)
- DH = machine number for user
- Return: CF set if invalid user number
- Note: only available to supervisors
- SeeAlso: AH=3Dh
- --------N-7F3D-------------------------------
- INT 7F - Alloy MW386 - POST TERMINAL CONFIGURATION CHANGES
- AH = 3Dh
- Note: should be called whenever a program changes the terminal type or its
- parameters
- SeeAlso: AH=3Bh
- --------N-7F41-------------------------------
- INT 7F - Alloy NTNX - LOCK FILE FOR USER
- AH = 41h
- AL = user ID
- DS:DX -> ASCIZ filename
- Return: AL = status (see #03966)
- Note: requests exclusive read/write access to file
- SeeAlso: AH=00h,AH=41h"MW386",AH=42h"NTNX"
- (Table 03966)
- Values for Alloy function status:
- 00h successful
- 01h invalid function
- 02h already locked
- 03h unable to lock
- 04h lock table full or semaphore space exhausted
- --------N-7F41-------------------------------
- INT 7F - Alloy MW386 - LOCK SEMAPHORE FOR USER
- AH = 41h
- AL = user ID
- DS:DX -> ASCIZ semaphore name
- Return: AL = status (see #03966)
- SeeAlso: AH=00h,AH=42h"MW386"
- --------s-7F4150BHC1-------------------------
- INT 7F U - Voyetra - AAPISG - API
- AX = 4150h ('AP')
- BH = C1h
- BL = function (00h-13h)
- 00h initialize (fails except first time called)
- ???
- Return: AX = status???
- 0000h successful
- 0001h failed
- Program: AAPISG is a driver by Voyetra for the Aztech Sound Galaxy sound board
- BUG: the function range check uses JL instead of JB, so it will cause a
- crash if BL >= 80h on entry
- SeeAlso: AX=4331h,AX=564Dh,AX=5658h
- --------N-7F42-------------------------------
- INT 7F - Alloy NTNX - UNLOCK FILE FOR USER
- AH = 42h
- AL = user ID
- DS:DX -> ASCIZ filename
- Return: AL = status (see #03966)
- SeeAlso: AH=00h,AH=41h"NTNX",AH=42h"MW386"
- --------N-7F42-------------------------------
- INT 7F - Alloy MW386 - UNLOCK SEMAPHORE FOR USER
- AH = 42h
- AL = user ID
- DS:DX -> ASCIZ semaphore name
- Return: AL = status
- 00h successful
- 01h invalid function
- 03h unable to unlock semaphore
- SeeAlso: AH=02h,AH=41h"MW386",AH=42h"NTNX"
- --------V-7F4321-----------------------------
- INT 7F - TIGA Communications Driver v2.05 - INSTALLATION CHECK
- AX = 4321h
- Return: AX = 0000h if installed
- Note: INT 7F is the default, but may be overridden
- SeeAlso: AH=01h"TIGA",AX=1234h,AX=2525h,AX=4321h,AX=5555h
- --------s-7F4331BHC1-------------------------
- INT 7F U - Voyetra - VAPISG - API
- AX = 4331h ('C1')
- BH = C1h
- BL = function (00h-7Ah)
- ???
- Return: ???
- Program: VAPISG is a MIDI driver by Voyetra for the Aztech Sound Galaxy
- sound board
- SeeAlso: AX=4150h,AX=564Dh,AX=5658h
- --------N-7F4E-------------------------------
- INT 7F - Alloy MW386 v2+ - SET ERROR MODE
- AH = 4Eh
- AL = error mode flags
- bit 0: display critical disk errors
- bit 1: display sharing errors
- DX = 4E58h ("NX")
- Return: AL = status
- 00h successful
- SeeAlso: AH=4Fh
- --------N-7F4F-------------------------------
- INT 7F - Alloy MW386 v2+ - SET FCB MODE
- AH = 4Fh
- AL = FCB mode
- 02h read/write compatibility
- 42h read/write shared
- DX = 4E58h ("NX")
- Return: AL = status
- 00h successful
- --------V-7F5555-----------------------------
- INT 7F - TIGA Communications Driver v2.05 - ???
- AX = 5555h
- BX = ???
- Return: ???
- SeeAlso: AX=4321h
- --------s-7F564DBHC1-------------------------
- INT 7F U - Voyetra Multimedia Player - VMP.EXE API
- AX = 564Dh ('VM')
- BH = C1h
- BL = function (00h-1Bh)
- 00h ???
- Return: CF clear
- AX = 0000h
- ???
- Return: AX = FFFFh if invalid function
- ???
- SeeAlso: AX=4331h,AX=5658h
- --------s-7F5658BHC1-------------------------
- INT 7F U - Voyetra - VAPISG - API
- AX = 5658h ('VX')
- BH = C1h
- BL = function (00h-1Bh)
- ???
- Return: ???
- Program: VAPISG is a MIDI driver by Voyetra for the Aztech Sound Galaxy
- sound board
- SeeAlso: AX=4331h,AX=564Dh
- --------N-7F81-------------------------------
- INT 7F - Alloy NTNX - ATTACH DEVICE FOR USER
- AH = 81h
- AL = user ID
- DS:DX -> ASCIZ device name
- SeeAlso: AH=82h
- --------N-7F82-------------------------------
- INT 7F - Alloy NTNX - RELEASE DEVICE FOR USER
- AH = 82h
- AL = user ID
- DS:DX -> ASCIZ device name
- SeeAlso: AH=81h
- --------N-7FA0-------------------------------
- INT 7F - Alloy MW386 - GET USER NAME
- AH = A0h
- DL = user number (FFh = caller)
- DH = machine number for user
- ES:DI -> 17-byte buffer for ASCIZ user name
- Return: CF set if invalid user number
- SeeAlso: AH=03h,AH=A1h
- --------N-7FA1-------------------------------
- INT 7F - Alloy MW386 - GET MACHINE, USER, AND PROCESS NUMBER
- AH = A1h
- Return: AL = process number
- DL = user number
- DH = machine number
- SeeAlso: AH=03h,AH=A0h,AH=A2h
- --------N-7FA2-------------------------------
- INT 7F - Alloy MW386 - GET USER PRIVILEGE LEVEL
- AH = A2h
- DL = user number (FFh = caller)
- DH = machine number for user
- Return: CF clear if successful
- AL = privilege level
- 00h supervisor
- 01h high
- 02h medium
- 03h low
- CF set if invalid user number
- SeeAlso: AH=A1h,AH=A3h
- --------N-7FA3-------------------------------
- INT 7F - Alloy MW386 - GET USER LOGIN STATE
- AH = A3h
- DL = user number
- DH = machine number for user
- Return: CF clear if successful
- AL = login state
- 00h never logged in
- 01h currently logged out
- 03h currently logged in
- CF set if invalid user number or user not active
- SeeAlso: AH=A2h
- --------N-7FA4-------------------------------
- INT 7F - Alloy MW386 - VERIFY USER PASSWORD
- AH = A4h
- DS:DX -> ASCIZ password (null-padded to 16 bytes)
- Return: AL = status
- 00h accepted
- else invalid password
- --------N-7FA500-----------------------------
- INT 7F - Alloy MW386 - GET USER STATUS
- AX = A500h
- DI = machine number and user number
- Return: CF clear if successful
- BX = user flags
- bit 5: allow messages
- CL = scan code for task manager hotkey
- CH = scan code for spooler hotkey
- DL = scan code for task swapper hotkey
- DH = modifier key status
- CF set if invalid user number
- SeeAlso: AX=A501h
- Index: hotkeys;Alloy MW386
- --------N-7FA501-----------------------------
- INT 7F - Alloy MW386 - SET USER STATUS
- AX = A501h
- BX = user flags (see AX=A500h)
- CL = scan code for task manager hotkey
- CH = scan code for spooler hotkey
- DL = scan code for task swapper hotkey
- DH = modifier key status
- DI = machine number and user number
- Return: CF set if invalid user number
- Note: must have supervisor privilege to set another user's status
- SeeAlso: AX=A500h
- Index: hotkeys;Alloy MW386
- --------V-7FABCDBX0000-----------------------
- INT 7F - IBM 8516 Touch Screen Device Driver - GET API ENTRY
- AX = ABCDh
- BX = 0000h
- Return: AX = total number of functions available
- ES:BX -> entry point array (see #03967)
- SeeAlso: AX=0104h,AX=0105h
- (Table 03967)
- Values for 8516 Touch Screen function number:
- 00h check initialization and reset (see #03968)
- 14h set user-defined subroutine (see #03969)
- Notes: each driver function takes two stack parameters using Pascal calling
- conventions: address of parameter block and address of results buffer
- all pointers are FAR pointers
- on return, AX contains the status of the call:
- AX = 0000h successful
- 0001h invalid input
- 0002h interface error
- 0003h unable to perform function
- Format of 8516 Touch Screen Function 00h parameter block:
- Offset Size Description (Table 03968)
- 00h WORD 0000h (function number)
- Note: this function should be called before any other device driver functions
- Format of 8516 Touch Screen Function 00h results buffer:
- Offset Size Description (Table 03969)
- 00h WORD touch screen status
- 0000h unavailable
- 0001h uncalibrated
- FFFFh available
- 02h WORD aux mouse status (0000h not present, FFFFh present)
- Notes: the following driver parameters will have been reset to zero:
- touchdown counter, liftoff counter, position at last touch, position
- at last lift, int call mask, select on count, select off count,
- pos select on count, pos select off count.
- the following driver parameters will have been reset as listed:
- mouse emulation mode: left on
- thresholds: 46 on screen, 96 push harder, 80 push release
- x, y hysteresis: 400
- data repeat rate: 40/sec
- select mechanism: push-harder - first-touch
- coordinate origin: upper left corner
- filter frequency: medium
- data block mask: all enabled
- click lock: on
- --------N-7FB0-------------------------------
- INT 7F - Alloy NTNX, MW386 - RELEASE ALL SEMAPHORES FOR USER
- AH = B0h
- AL = user number
- DS = code segment
- Note: MW386 ignores AL and DS; it releases all semaphores locked using INT 67
- or INT 7F locking functions
- SeeAlso: AH=B1h,AH=B2h,AH=B3h,AH=B4h
- --------N-7FB1--SF00-------------------------
- INT 7F - Alloy NTNX, MW386 - RELEASE NORMAL SEMAPHORES FOR USER
- AH = B1h subfn 00h
- AL = (bits 7-5) 000
- (bits 4-0) user ID
- Note: MW386 ignores AL; it releases all semaphores locked using INT 67 or
- INT 7F locking functions
- SeeAlso: AH=B0h,AH=B2h,AH=B3h,AH=B4h
- --------N-7FB2--SF01-------------------------
- INT 7F - Alloy NTNX - RELEASE MESSAGES FOR USER
- AH = B2h subfn 01h
- AL = (bits 7-5) 001
- (bits 4-0) user ID
- SeeAlso: AH=B0h,AH=B1h,AH=B3h,AH=B4h
- --------N-7FB3--SF02-------------------------
- INT 7F - Alloy NTNX - RELEASE FILES FOR USER
- AH = B3h subfn 02h
- AL = (bits 7-5) 010
- (bits 4-0) user ID
- SeeAlso: AH=B0h,AH=B1h,AH=B2h,AH=B4h
- --------N-7FB4-------------------------------
- INT 7F - Alloy NTNX - RELEASE DEVICES FOR USER
- AH = B4h
- AL = user ID
- SeeAlso: AH=B0h,AH=B1h,AH=B2h,AH=B3h
- --------N-7FC3-------------------------------
- INT 7F - Alloy MW386 - WRITE BYTE TO TERMINAL AUX PORT
- AH = C3h
- AL = byte to write
- Return: CF clear if successful
- CF set on error
- SeeAlso: AH=C6h
- --------N-7FC5-------------------------------
- INT 7F - Alloy MW386 - CHANGE CONSOLE MODE
- AH = C5h
- AL = new console mode
- 00h keyboard indirect
- 01h keyboard direct
- 02h data handshake enforced
- 03h no data handshake
- Return: CF clear if successful
- AL = prior console mode
- CF set on error (caller is not remote user)
- Note: modes 2 and 3 may be used for input through the console port; no video
- output should be performed in these modes
- --------N-7FC6-------------------------------
- INT 7F - Alloy MW386 - WRITE BYTE TO CONSOLE PORT
- AH = C6h
- AL = byte to write
- Return: CF clear if successful
- CF set on error (caller is not remote user)
- Note: any terminal driver data translation will be bypassed
- SeeAlso: AH=C3h,AH=C7h
- --------N-7FC7-------------------------------
- INT 7F - Alloy MW386 - READ CONSOLE DATA BYTE
- AH = C7h
- Return: CF clear if successful
- AL = byte read
- CF set on error (no data available or caller is not remote user)
- Note: used to read data after placing console in mode 2 or 3 (see AH=C5h)
- SeeAlso: AH=C5h,AH=C6h,AH=C8h
- --------N-7FC8-------------------------------
- INT 7F - Alloy MW386 - READ CONSOLE DATA INTO BUFFER
- AH = C8h
- AL = maximum bytes to read
- ES:DI -> buffer for console data
- Return: CF clear if successful
- CX = number of bytes read
- CF set on error (caller is not remote user)
- SeeAlso: AH=C7h
- --------N-7FCF-------------------------------
- INT 7F - Alloy NTNX - REBOOT USER PROCESSOR
- AH = CFh
- DS:DX -> ASCIZ string containing user number to be reset
- SeeAlso: AH=D6h
- --------N-7FD6-------------------------------
- INT 7F - Alloy MW386 - RESET NETWORK EXECUTIVE
- AH = D6h
- DS:DX -> reset packet (see #03970)
- Return: never if successful
- Note: all users will be shut down immediately if successful
- SeeAlso: AH=CFh
- Format of Alloy MW386 reset packet:
- Offset Size Description (Table 03970)
- 00h DWORD reset code (60606060h)
- 04h 16 BYTEs ASCIZ supervisor password padded with nulls
- --------N-7FD7-------------------------------
- INT 7F - Alloy MW386 - POST EVENT
- AH = D7h
- AL = user number (if local event)
- DX = event number
- --------N-7FD8-------------------------------
- INT 7F - Alloy MW386 - FLUSH DISK BUFFERS
- AH = D8h
- Return: CF set on error
- Note: forces all disk buffers to be written out immediately
- SeeAlso: INT 21/AH=0Dh,INT 21/AX=5D01h,INT 2F/AX=1120h
- --------N-7FDB-------------------------------
- INT 7F - Alloy MW386 v2+ - GET MW386 INVOCATION DRIVE
- AH = DBh
- Return: AL = drive from which MW386 was started (2=C:,3=D:,etc)
- --------N-7FE0-------------------------------
- INT 7F - Alloy MW386 - CREATE DOS TASK
- AH = E0h
- AL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
- DS:DX -> ASCIZ task name (max 16 bytes)
- Return: CF clear if successful
- AL = task create ID
- CF set on error
- Note: only foreground DOS tasks can use this function
- SeeAlso: AH=E1h,AH=E2h,AH=E3h,AH=E6h,AH=E7h
- --------N-7FE1-------------------------------
- INT 7F - Alloy MW386 - GET DOS TASK PID FROM CREATE ID
- AH = E1h
- AL = create ID (from AH=E0h)
- Return: AL = DOS process number
- CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
- Note: this function should not be called immediately after creating a new
- DOS task, since the new task is being initialized by a concurrent
- process
- SeeAlso: AH=E0h,AH=E2h
- --------N-7FE2-------------------------------
- INT 7F - Alloy MW386 - SWITCH TO NEW DOS TASK
- AH = E2h
- AL = DOS process number (from AH=E1h)
- Return: CF set on error (invalid process number or caller not foreground task)
- Notes: specified task becomes the foreground task and current task is placed
- in the background
- may only be called by a foreground task
- SeeAlso: AH=E0h,AH=E1h
- --------N-7FE3-------------------------------
- INT 7F - Alloy MW386 - CHANGE NAME OF DOS TASK
- AH = E3h
- DS:DX -> ASCIZ task name
- ---v1.x---
- AL = user number
- ---v2+---
- BH = user number
- BL = task number
- Return: CF clear if successful
- CF set on error (invalid process number)
- SeeAlso: AH=E0h,AH=E4h,AH=E5h
- --------N-7FE4-------------------------------
- INT 7F - Alloy MW386 - GET TASK NAME FROM PROCESS NUMBER
- AH = E4h
- ES:DI -> buffer for task name
- ---v1.x---
- AL = user number
- ---v2+---
- BH = user number
- BL = task number
- Return: CF clear if successful
- CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
- DX = task flags
- bit 7: MS-DOS process
- ES:DI buffer filled
- CF set on error (invalid process number)
- SeeAlso: AH=E3h,AH=E5h
- --------N-7FE5-------------------------------
- INT 7F - Alloy MW386 - GET PROCESS NUMBER FROM TASK NAME
- AH = E5h
- DS:DX -> ASCIZ task name
- BH = user number
- Return: CF clear if successful
- AL = DOS process number
- CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
- CF set on error (no match for name)
- SeeAlso: AH=E3h,AH=E4h
- --------N-7FE6-------------------------------
- INT 7F - Alloy MW386 - GET NUMBER OF AVAILABLE USER TASKS
- AH = E6h
- Return: AX = number of processes available to current user
- SeeAlso: AH=E0h
- --------N-7FE7-------------------------------
- INT 7F - Alloy MW386 - REMOVE DOS TASK
- AH = E7h
- AL = DOS process number
- Return: CF clear if successful
- CF set on error (invalid process number or first process)
- Note: can only be called by a foreground task
- SeeAlso: AH=E0h
- --------N-7FE8-------------------------------
- INT 7F - Alloy MW386 - DOS TASK DELAY
- AH = E8h
- CX = delay time in milliseconds
- Note: a delay of 0 may be used to surrender the current time slice
- SeeAlso: INT 15/AX=1000h,INT 1A/AX=FF01h,INT 21/AH=EEh"DoubleDOS"
- SeeAlso: INT 2F/AX=1680h
- --------N-7FF0-------------------------------
- INT 7F - Alloy MW386 - RESTRICT DIRECTORY TO GROUP
- AH = F0h
- AL = group number
- DS:DX -> ASCIZ directory name
- Return: CF clear if successful
- AX = status
- 0002h directory not found
- 0003h directory not found
- 0005h directory in use, cannot be restricted
- 02xxh restricted to group xxh
- CF set on error
- Note: the restriction on the directory may be removed by calling this
- function with group 0, then using AH=F1h to assign the directory to
- group 0
- SeeAlso: AH=F1h,AH=F2h,AH=F3h
- --------N-7FF1-------------------------------
- INT 7F - Alloy MW386 - ASSIGN DIRECTORY TO GROUP
- AH = F1h
- AL = group number
- DS:DX -> ASCIZ directory name
- Notes: performs permanent assignment to a group; no immediate action is taken
- unless the directory has been restricted with AH=F0h
- may be used to restrict a nonexistent directory
- SeeAlso: AH=F0h
- --------N-7FF2-------------------------------
- INT 7F - Alloy MW386 - READ RESTRICTED DIRECTORY ENTRY
- AH = F2h
- CX = entry number
- ES:DI -> 64-byte buffer
- Return: CF clear if successful
- buffer filled with 63-byte directory info and 1-byte group number
- CF set on error (invalid entry)
- SeeAlso: AH=F0h,AH=F3h
- --------N-7FF3-------------------------------
- INT 7F - Alloy MW386 - READ RESTRICTED DIRECTORY ENTRY FOR GROUP
- AH = F3h
- AL = group number
- CX = entry number
- ES:DI -> 64-byte buffer
- Return: CF clear if successful
- CX = next entry number
- buffer filled with 63-byte directory info and 1-byte group number
- CF set on error (no more matching entries)
- Note: like AH=F2h, but only returns directories belonging to the specified
- group
- SeeAlso: AH=F2h
- --------N-7FF8-------------------------------
- INT 7F - Alloy MW386 - ASSIGN USER TO GROUP
- AH = F8h
- AL = group number
- DL = user number
- DH = machine number (currently 00h)
- Return: CF clear if successful
- CF set on error (user already in maximum number of groups)
- Note: each user is allowed eight group assignments
- SeeAlso: AH=F9h,AH=FAh
- --------N-7FF9-------------------------------
- INT 7F - Alloy MW386 - REMOVE USER FROM GROUP
- AH = F9h
- AL = group number
- DL = user number
- DH = machine number (currently 00h)
- Return: CF clear if successful
- CF set if failed
- SeeAlso: AH=F8h,AH=FAh
- --------N-7FFA-------------------------------
- INT 7F - Alloy MW386 - GET USER GROUP LIST
- AH = FAh
- DL = user number
- DH = machine number (currently 00h)
- ES:DI -> 16-byte buffer for group list
- Return: CX = number of groups
- ES:DI buffer filled with group numbers
- SeeAlso: AH=F8h,AH=F9h
- --------N-7FFB-------------------------------
- INT 7F - Alloy MW386 - ASSIGN GROUP NAME
- AH = FBh
- CL = group number
- ES:DI -> ASCIZ group name (max 17 bytes)
- SeeAlso: AH=FCh
- --------N-7FFC-------------------------------
- INT 7F - Alloy MW386 - GET GROUP NAME
- AH = FCh
- CL = group number
- ES:DI -> 17-byte buffer for ASCIZ name
- Return: ES:DI buffer filled
- Note: if the group has not been named, "(unnamed)" is returned
- SeeAlso: AH=FBh
- ----------80---------------------------------
- INT 80 - Q-PRO4 - ???
- --------r-80---------------------------------
- INT 80 - reserved for BASIC
- Note: this vector and INT 81 through INT ED are modified but not restored by
- Direct Access v4.0, and may be left dangling by other programs
- written with the same version of compiled BASIC
- SeeAlso: INT 81"BASIC",INT 86"BASIC",INT EF"BASIC"
- --------E-80---------------------------------
- INT 80 - Phar Lap 386|DOS-Extender - RELOCATED PRINT-SCREEN
- Note: the extender relocates INT 05 to here by default, but can be told to
- leave INT 05 alone with the commandline (or DOSX= environment
- variable) flag -PRIVEC 5
- SeeAlso: INT 05"PRINT SCREEN"
- --------d-80---------------------------------
- INT 80 - BusLogic BT-946C PCI SCSI Adapter - SCRATCHPAD RAM (NOT A VECTOR!)
- Note: the factory-default location for the eight bytes of scratchpad RAM
- needed by the SCSI adapter is 0000h:0200h, which is interrupt
- vectors 80h and 81h
- SeeAlso: INT 81"BusLogic"
- --------b-80---------------------------------
- INT 80 U - AMI BIOS v1.00.12.AX1T - internal - BIOS SUBSYSTEM SELECTION
- AH = function
- 00h install and initialize BIOS subsystem
- AL = ??? (00h,01h,03h)
- CX:BX = subsystem ID (see #03971)
- ESI = address from which to load, or 00000000h for default for
- subsystem
- EDI = physical address at which to install, or 0 for default
- Note: if CX=0000h on entry, this call is applied to all
- subsystems whose ID has low word BX
- 01h get BIOS subsystem information
- CX:BX = subsystem ID (see #03971)
- Return: AL = ???
- AH = ???
- EDX = uncompressed size of subsystem in bytes
- SI = offset within subsystem of initialization
- routine, or FFFFh if none
- EDI = physical address of default location or 0
- 02h get matching subsystem identifier
- AL = index into subsystem list (return ALth occurrence
- matching BX)
- BX = low word of subsystem identifier
- (0001h,0002h,0004h,0005h,000Bh,FFFFh)
- Return: CF clear if successful
- CX = high word of ALth matching subsystem
- CF set on error
- Note: the system is halted if AL=00h on entry
- 03h set up "big real" mode (4G segment limits)
- 04h turn off "big real" mode (restore 64K segment limits)
- 05h remove BIOS subsystem
- CX:BX = subsystem ID to leave out
- Note: the system is halted if an invalid (not installed)
- subsystem ID is specified
- 06h get installed subsystem info
- CX:BX = subsystem ID (see #03971)
- Return: CF clear
- EDX = length of ???
- EDI = linear address of start of ???
- Note: the system is halted if an invalid (not installed)
- subsystem ID is specified
- Return: CF clear if successful
- CF set on non-fatal error
- Note: this interrupt vector is cleared to 0000h:0000h near the end of the
- BIOS startup sequence
- (Table 03971)
- Values for AMI BIOS subsystem ID:
- 00010001h ROM BIOS @F000-FFFF
- 00010002h setup??? (loaded @6000-68FF)
- 00010005h APM code
- 0001000Bh language-specific error message set (English)
- 00020002h PnP/PCI ACFG code (loaded @F000-F1FF)
- 0001FFFFh
- 0002FFFFh recovery code
- 00030004h
- 0003FFFFh BIOS decompression code
- 0004000Bh
- 00060004h
- 0100FFFFh ACFG data
- 10000000h ROM @C000 (64K)
- 10000001h HMA (48K)
- 10000002h RAM @7A00 (24K)
- 10000003h RAM @8000-BFFF
- 10000004h
- 10000005h real-mode address space (0-1M)
- 1000000Bh installed language-specific message set???
- --------s-80----BL00-------------------------
- INT 80 - SBSIM - "STARTSND" - START SOUND ON SPECIFIED DRIVER
- BL = 00h
- BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
- Return: AX = initialization result (see #03972)
- Program: SBSIM is Creative Labs' SoundBlaster Simplified Interface Module,
- which provides access to multiple drivers for the SoundBlaster
- board through a single interface
- Range: INT 80h to INT BFh, selected automatically
- Note: the SBSIM installation check consists of testing for the signature
- "SBSIM" at offset 103h in the interrupt handler's segment.
- SeeAlso: INT 80/BL=01h"SBSIM",INT 80/BL=02h"SBSIM",INT 80/BL=03h"SBSIM"
- SeeAlso: INT 80/BX=0000h"SBSIM"
- (Table 03972)
- Values for SBSIM error code:
- 01h busy--currently in use
- 02h bad driver specified
- 03h invalid function
- 04h voice process already active
- 05h couldn't start CT-VOICE
- 06h couldn't start CTVDSK
- 07h invalid SBSIM handle
- 08h buffer not initialized yet
- 09h bad filename
- 0Ah bad file handle
- 0Bh driver not started yet
- 0Ch XMS driver not installed
- 0Dh no free SBSIM handles
- 0Eh bad file type
- 0Fh couldn't free XMS block
- 10h invalid source selected
- 11h get pan position failed
- 12h set pan position failed
- 13h set volume failed
- 14h couldn't start fade/pan
- 15h couldn't stop fade/pan
- 16h couldn't pause fade/pan
- 17h not a fade/pan operation
- 18h bad mode for fade/pan
- 19h couldn't start fade/pan
- 1Ah source not fading/panning
- 1Bh FM or MIDI already playing
- 1Ch bad MIDI mapper format
- --------s-80----BL01-------------------------
- INT 80 - SBSIM - "PLAYSND" - PLAY MUSIC/VOICE ON SELECTED DRIVER
- BL = 01h
- BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
- Return: AX = result (see #03972)
- SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=02h"SBSIM",INT 80/BL=04h"SBSIM"
- --------s-80----BL02-------------------------
- INT 80 - SBSIM - "STOPSND" - STOP MUSIC/VOICE ON SELECTED DRIVER
- BL = 02h
- BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
- Return: nothing
- SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=01h"SBSIM",INT 80/BL=03h"SBSIM"
- --------s-80----BL03-------------------------
- INT 80 - SBSIM - "PAUSESND" - TEMPORARILY PAUSE PLAYBACK ON SELECTED DRIVER
- BL = 03h
- BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
- Return: nothing
- SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=02h"SBSIM",INT 80/BL=04h"SBSIM"
- SeeAlso: INT 80/BL=05h
- --------s-80----BL04-------------------------
- INT 80 - SBSIM - "RESUMESND" - RESTART PLAYBACK ON SELECTED DRIVER
- BL = 04h
- BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
- Return: nothing
- SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=03h"SBSIM",INT 80/BL=05h"SBSIM"
- --------s-80----BL05-------------------------
- INT 80 - SBSIM - "GETSNDSTAT" - GET DRIVER'S STATUS
- BL = 05h
- BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
- Return: AX = status
- SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=01h"SBSIM",INT 80/BL=03h"SBSIM"
- --------s-80----BX0000-----------------------
- INT 80 - SoundBlaster SBFM driver - GET VERSION
- BX = 0000h
- Return: ???
- Note: SBFM installs at a free interrupt in the range 80h through BFh
- SeeAlso: BX=0008h"SBFM",INT 2F/AX=FBFBh/ES=0000h
- --------s-80----BX0000-----------------------
- INT 80 - SBSIM - "QUERYVERSION" - GET VERSION
- BX = 0000h
- Return: AX = version (AH = major, AL = minor)
- Program: SBSIM is Creative Labs' SoundBlaster Simplified Interface Module,
- which provides access to multiple drivers for the SoundBlaster
- board through a single interface
- Range: INT 80h to INT BFh, selected automatically
- Note: the SBSIM installation check consists of testing for the signature
- "SBSIM" at offset 103h in the interrupt handler's segment.
- SeeAlso: BX=0001h"SBSIM",BX=0005h"SBSIM",INT 21/AX=4402h"CTMMSYS"
- SeeAlso: INT 80/BL=00h"SBSIM"
- Index: installation check;SBSIM|installation check;SoundBlaster
- --------s-80----BX0001-----------------------
- INT 80 - SoundBlaster SBFM driver - SET MUSIC STATUS BYTE ADDRESS
- BX = 0001h
- DX:AX -> music status byte
- SeeAlso: BX=0000h"SBFM",BX=0002h"SBFM",BX=0003h"SBFM"
- --------s-80----BX0001-----------------------
- INT 80 - SBSIM - "QUERYDRIVERS" - CHECK DRIVERS INSTALLED
- BX = 0001h
- Return: AX = bit flags for loaded drivers (see #03973)
- SeeAlso: BX=0000h"SBSIM",BX=0002h"SBSIM",BX=0005h"SBSIM",INT 80/BL=00h"SBSIM"
- Bitfields for SBSIM loaded drivers:
- Bit(s) Description (Table 03973)
- 0 FM
- 1 double disk-buffered voice driver (DDBV)
- 2 memory voice driver
- 3 auxiliary driver (mixer)
- 4 MIDI
- --------s-80----BX0002-----------------------
- INT 80 - SoundBlaster SBFM driver - SET INSTRUMENT TABLE
- BX = 0002h
- CX = number of instruments
- DX:AX -> instrument table
- SeeAlso: BX=0000h"SBFM",BX=0001h"SBFM",BX=0005h"SBFM"
- --------s-80----BX0002-----------------------
- INT 80 - SBSIM - GETADDRESS" - GET SELECTED DRIVER'S ENTRY POINT
- BX = 0002h
- AX = driver (00h = FM,01h = DDBV,02h = memvoice,03h = mixer,04h = MIDI)
- Return: CF clear if successful
- DX:AX -> entry point
- CF set on error
- SeeAlso: BX=0000h"SBSIM",BX=0001h"SBSIM",BX=0005h"SBSIM",INT 80/BL=00h"SBSIM"
- --------s-80----BX0003-----------------------
- INT 80 - SoundBlaster SBFM driver - SET SYSTEM CLOCK RATE
- BX = 0003h
- AX = clock rate divisor (1193180 / desired frequency in Hertz)
- FFFFh to restore to 18.2 Hz
- SeeAlso: BX=0000h"SBFM",BX=0001h"SBFM",BX=0004h"SBFM"
- --------s-80----BX0004-----------------------
- INT 80 - SoundBlaster SBFM driver - SET DRIVER CLOCK RATE
- BX = 0004h
- AX = driver clock rate divisor (1193180 / frequency in Hertz)
- Note: default frequency is 96 Hz
- SeeAlso: BX=0000h"SBFM",BX=0003h"SBFM"
- --------s-80----BX0005-----------------------
- INT 80 - SoundBlaster SBFM driver - TRANSPOSE MUSIC
- BX = 0005h
- AX = semi-tone offset
- SeeAlso: BX=0000h"SBFM",BX=0002h"SBFM",BX=0006h"SBFM"
- --------s-80----BX0005-----------------------
- INT 80 - SBSIM - "GETBUFFERINFO" - GET DRIVER'S BUFFER ADDRESS
- BX = 0005h
- AX = driver (00h = FM, 01h = DDB Voice, 04h = MIDI)
- Return: CF clear if successful
- DX:AX -> buffer
- CX = buffer size in K
- CF set on error
- Program: SBSIM is Creative Labs' SoundBlaster Simplified Interface Module,
- which provides access to multiple drivers for the SoundBlaster
- board through a single interface
- Range: INT 80h to INT BFh, selected automatically
- Note: the SBSIM installation check consists of testing for the signature
- "SBSIM" at offset 103h in the interrupt handler's segment.
- SeeAlso: BX=0000h"SBSIM",BX=0001h"SBSIM",BX=0002h"SBSIM",INT 80/BL=00h"SBSIM"
- --------s-80----BX0006-----------------------
- INT 80 - SoundBlaster SBFM driver - PLAY MUSIC
- BX = 0006h
- DX:AX -> music block
- Return: AX = status
- 0000h successful
- 0001h music already active
- SeeAlso: BX=0000h"SBFM",BX=0007h"SBFM",BX=000Ah"SBFM",INT 1A/AX=FF04h
- --------s-80----BX0007-----------------------
- INT 80 - SoundBlaster SBFM driver - STOP MUSIC
- BX = 0007h
- Return: AX = status
- 0000h successful
- 0001h music not active
- SeeAlso: BX=0000h"SBFM",BX=0006h"SBFM",BX=0009h"SBFM",INT 1A/AX=FF05h
- --------s-80----BX0008-----------------------
- INT 80 - SoundBlaster SBFM driver - RESET DRIVER
- BX = 0008h
- Return: AX = status
- 0000h successful
- 0001h music is active
- SeeAlso: BX=0000h"SBFM"
- --------s-80----BX0009-----------------------
- INT 80 - SoundBlaster SBFM driver - PAUSE MUSIC
- BX = 0009h
- Return: AX = status
- 0000h successful
- 0001h no music active
- SeeAlso: BX=0000h"SBFM",BX=0007h"SBFM",BX=000Ah"SBFM",INT 1A/AX=FF01h
- --------s-80----BX000A-----------------------
- INT 80 - SoundBlaster SBFM driver - RESUME MUSIC
- BX = 000Ah
- Return: AX = status
- 0000h successful
- 0001h no music paused
- SeeAlso: BX=0000h"SBFM",BX=0006h"SBFM",BX=0009h"SBFM"
- --------s-80----BX000B-----------------------
- INT 80 - SoundBlaster SBFM driver - SET USER-DEF TRAP FOR SYSTEM-EXCLUSIVE CMDS
- BX = 000Bh
- DX:AX -> trap routine
- SeeAlso: BX=0000h"SBFM"
- --------s-80----BX0400-----------------------
- INT 80 - SBSIM - "GETVOLUME" - GET SOURCE'S VOLUME
- BX = 0400h
- AX = sound source (see #03974)
- Return: CF clear if successful
- AX = volume
- CF set on error
- AX = error code (see #03972 at INT 80/BL=00h)
- SeeAlso: BX=0401h"SBSIM"
- (Table 03974)
- Values for SBSIM sound source:
- 00h master volume
- 01h voice
- 02h FM
- 03h CD
- 04h line in
- 05h microphone
- --------s-80----BX0401-----------------------
- INT 80 - SBSIM - "SETVOLUME" - SET SOURCE'S VOLUME
- BX = 0401h
- AX = sound source (see #03974)
- DX = new volume
- Return: AX = result (0000h = success) (see also INT 80/BL=00h)
- SeeAlso: BX=0400h"SBSIM"
- --------N-8001-------------------------------
- INT 80 - QPC Software PKTINT.COM - INITIALIZE
- AH = 01h
- Return: AX = 0000h
- CX = FFFFh
- DX = FFFFh
- Notes: this interrupt is the WinQVTNet protected mode interface to Windows 3.0
- all buffer pointers are reset back to 0
- --------N-8002-------------------------------
- INT 80 - QPC Software PKTINT.COM - GET BUFFER ADDRESSES
- AH = 02h
- BX = extra bytes to allocate per packet
- Return: AX = segment address of 10K buffer (for receives???)
- BX = segment address of 2K buffer (for sends???)
- SeeAlso: AH=05h
- --------N-8003-------------------------------
- INT 80 - QPC Software PKTINT.COM - GET ENTRY POINT
- AH = 03h
- Return: CX:DX -> receive call address
- Note: the returned address can be used in the packet driver calls since it
- will be a valid address in all DOS boxes
- SeeAlso: AH=06h
- --------N-8004-------------------------------
- INT 80 - QPC Software PKTINT.COM - ENABLE???
- AH = 04h
- BX = ???
- Return: ???
- SeeAlso: AH=01h
- --------N-8005-------------------------------
- INT 80 - QPC Software PKTINT.COM - GET RECEIVE STATISTICS
- AH = 05h
- Return: AX = amount of buffer currently in use
- BX = current offset in buffer
- CX = number of times receive has been called
- SeeAlso: AH=02h
- --------N-8006-------------------------------
- INT 80 - QPC Software PKTINT.COM - REMOVE RECEIVED PACKET
- AH = 06h
- Return: BX = next packet offset
- CX = number of bytes still buffered
- DX = size of packet released back into buffer pool
- SeeAlso: AH=03h
- --------r-81---------------------------------
- INT 81 - reserved for BASIC
- Note: this vector is modified but not restored by Direct Access v4.0, and
- may be left dangling by other programs written with the same version
- of compiled BASIC
- SeeAlso: INT 80"BASIC",INT 82"BASIC"
- --------N-81---------------------------------
- INT 81 - IBM TOKEN RING ADAPTER - ???
- SeeAlso: INT 82"TOKEN RING",INT 91"TOKEN RING"
- --------d-81---------------------------------
- INT 81 - BusLogic BT-946C PCI SCSI Adapter - SCRATCHPAD RAM (NOT A VECTOR!)
- Note: the factory-default location for the eight bytes of scratchpad RAM
- needed by the SCSI adapter is 0000h:0200h, which is interrupt
- vectors 80h and 81h
- SeeAlso: INT 80"BusLogic"
- --------b-81---------------------------------
- INT 81 - AMI WinBIOS - SECOND HARD DRIVE AUTODETECTION
- Notes: used by WinBIOS with core version of July 1994 or later
- QEMM 7.5 began using this interrupt internally after the QPAT3
- maintenance release when searching for "ROM holes", causing a
- lengthy delay during bootup. Adding the QEMM parameter RH:N will
- avoid the QEMM call to INT 81 and speed up the boot process
- --------O-81---------------------------------
- INT 81 - Paragon Technology PTS/DOS 6.5x, S/DOS 1.0 - API
- --------s-810200---------------------------
- INT 81 - Gravis UltraSound - MegaEm - PROCESS COMMAND LINE
- AX = 0200h
- BX = PSP segment
- SI = ??? (data area)
- Return: AX = status (see #03975)
- BL = emulation state
- bit 1 Emulation is on
- bit 2 Emulation is off
- Program: MegaEm is a protected-mode SoundBlaster, SoundCanvas, and MT-32
- emulator for the Gravis UltraSound
- Range: INT 81 to INT FF (see INT 21/AX=FD12h), selected by scanning for an
- interrupt with vector 0000h:0000h
- SeeAlso: AX=0202h,AX=0300h,AX=0400h,INT 21/AX=FD12h/BX=3457h
- (Table 03975)
- Values for MegaEm status:
- 0000h successful
- 0001h invalid command line optie
- 0002h display options
- 0003h ???
- 0004h invalid number of voices specified
- 0005h could not load enough patches to provide acceptable emulation
- 0006h to many warnings on patch loading
- 0007h ??? (not used anymore)
- 0008h /CO and SCSI don't work together
- 0009h invalid music volume
- 000Ah invalid master volume
- 000Bh /SC switch is no longer valid
- 0100h ??? (some error on patch loading)
- --------s-810202---------------------------
- INT 81 - Gravis UltraSound - MegaEm - ???
- AX = 0202h
- Return: AX = ???
- SeeAlso: AX=0200h,AX=0300h,AX=0400h,INT 21/AX=FD12h/BX=3457h
- --------s-810300---------------------------
- INT 81 - Gravis UltraSound - MegaEm - LOAD SAMPLE ???
- AX = 0300h
- Return: AX = ???
- SeeAlso: AX=0200h,AX=0202h,AX=0400h,INT 21/AX=FD12h/BX=3457h
- --------s-810400---------------------------
- INT 81 - Gravis UltraSound - MegaEm - ???
- AX = 0400h
- BX = ??? (segment)
- Return: AX = ???
- BX = ???
- Program: MegaEm is a protected-mode SoundBlaster, SoundCanvas, and MT-32
- emulator for the Gravis UltraSound
- SeeAlso: AX=0200h,AX=0202h,AX=0300h,INT 21/AX=FD12h/BX=3457h
- --------s-812010------------------------
- INT 81 - Gravis UltraSound - MEGA_EM v3.0+ - INT 78 REDIRECT
- AX = 2010h
- ???
- Return: ???
- Note: MegaEm calls this function from its INT 78 handler, and then
- immediately returns (via RETF in v3.10, thus leaving the flags on
- the stack); this permits it to operate while hooking only one
- interrupt through the memory manager in protected mode
- SeeAlso: AX=2011h,AX=2012h
- --------s-812011------------------------
- INT 81 - Gravis UltraSound - MEGA_EM v3.0+ - NMI REDIRECT
- AX = 2011h
- ???
- Return: ???
- Note: MegaEm calls this function from its NMI (INT 02) handler, and then
- immediately returns; this permits it to operate while hooking only
- one interrupt through the memory manager in protected mode
- SeeAlso: AX=2010h,AX=2012h
- --------s-812012------------------------
- INT 81 - Gravis UltraSound - MEGA_EM v3.0+ - SOUNDCARD IRQ REDIRECT
- AX = 2012h
- ???
- Return: ???
- Note: MegaEm calls this function from its GUS IRQ handler, and then
- immediately returns; this permits it to operate while hooking only
- one interrupt through the memory manager in protected mode
- SeeAlso: AX=2010h,AX=2011h
- --------s-812015------------------------
- INT 81 - Gravis UltraSound - MEGA_EM v3.0+ - ???
- AX = 2015h
- ???
- Return: ???
- --------r-82---------------------------------
- INT 82 - reserved for BASIC
- SeeAlso: INT 81"BASIC",INT 83"BASIC"
- --------N-82---------------------------------
- INT 82 - IBM TOKEN RING ADAPTER - ???
- AH = function
- 00h display message???
- DS:BX -> string
- ???
- Return: ???
- SeeAlso: INT 81"TOKEN RING",INT 91"TOKEN RING"
- --------r-83---------------------------------
- INT 83 - reserved for BASIC
- SeeAlso: INT 82"BASIC",INT 84"BASIC"
- --------s-8300-------------------------------
- INT 83 - JM Pro Tracker v5.0 - ???
- AH = 00h
- ???
- Return: CF clear (successful)
- AX = ??? (0302h)
- Program: JM Pro Tracker is a public-domain resident .MOD (digital music)
- player by Josha Munnik
- (Table 03976)
- Values for JM Pro Tracker error code:
- 000Ah ???
- 000Bh ???
- 0014h ???
- 001Eh some required parameters have not yet been set
- 001Fh already playing???
- FExxh busy (API call already in progress)
- FFxxh invalid function number
- --------s-8301-------------------------------
- INT 83 - JM Pro Tracker v5.0 - ???
- AH = 01h
- DX = ??? or FFFFh
- ???
- Return: CF clear if successful
- CF set on error
- AX = error code (see #03976)
- --------s-8302-------------------------------
- INT 83 - JM Pro Tracker v5.0 - ???
- AH = 02h
- BX = ???
- ???
- Return: CF clear if successful
- AX = ???
- BX = ???
- CX = ???
- DX = ???
- SI = ???
- CF set on error
- AX = error code (000Ah,000Bh,other) (see #03976)
- --------s-8303-------------------------------
- INT 83 - JM Pro Tracker v5.0 - ???
- AH = 03h
- BX = ??? (only low four bits, must be nonzero)
- CX = ???
- ???
- Return: CF clear if successful
- CF set on error
- AX = error code (0014h) (see #03976)
- --------s-8304-------------------------------
- INT 83 - JM Pro Tracker v5.0 - SET DMA BUFFER???
- AH = 04h
- CX = number of bytes in suggested buffer
- ES:DI -> suggested buffer for DMA transfers???
- Return: CF clear if successful
- ES:AX -> actual buffer (filled with bytes of 80h)
- CX = actual length (multiple of 4)
- CF set on error
- AX = error code (see #03976)
- Note: the buffer must not cross a 64K DMA page boundary
- --------s-8305-------------------------------
- INT 83 - JM Pro Tracker v5.0 - SET ??? BUFFER
- AH = 05h
- CX = length of buffer
- ES:DI -> buffer for/containing ???
- Return: CF clear (successful)
- SeeAlso: AH=06h,AH=07h,AH=18h
- --------s-8306-------------------------------
- INT 83 - JM Pro Tracker v5.0 - SET ??? BUFFER
- AH = 06h
- CX = length of buffer
- ES:DI -> buffer for/containing ???
- Return: CF clear (successful)
- SeeAlso: AH=05h,AH=07h,AH=18h
- --------s-8307-------------------------------
- INT 83 - JM Pro Tracker v5.0 - SET ??? BUFFER
- AH = 07h
- BX = ???
- CX = length of buffer
- ES:DI -> buffer for/containing ???
- Return: CF clear (successful)
- SeeAlso: AH=05h,AH=06h,AH=18h
- --------s-8308-------------------------------
- INT 83 - JM Pro Tracker v5.0 - START PLAYING???
- AH = 08h
- ???
- Return: CF clear if successful
- ???
- CF set on error
- AX = error code (001Eh,001Fh) (see #03976)
- SeeAlso: AH=09h,AH=0Ah
- --------s-8309-------------------------------
- INT 83 - JM Pro Tracker v5.0 - PAUSE???
- AH = 09h
- ???
- Return: CF clear if successful
- CF set on error
- AX = error code (see #03976)
- SeeAlso: AH=08h,AH=0Ah
- --------s-830A-------------------------------
- INT 83 - JM Pro Tracker v5.0 - RESUME???
- AH = 0Ah
- ???
- Return: CF clear if successful
- CF set on error
- AX = error code (001Fh) (see #03976)
- SeeAlso: AH=08h,AH=09h
- --------s-830B-------------------------------
- INT 83 - JM Pro Tracker v5.0 - ???
- AH = 0Bh
- BX = ???
- ???
- Return: CF clear if successful
- CF set on error
- --------s-830C-------------------------------
- INT 83 - JM Pro Tracker v5.0 - ???
- AH = 0Ch
- DX bit 5 = ???
- ???
- Return: CF clear if successful
- BX = ??? (FFFFh)
- CX = ??? (0000h)
- DX = ???
- CF set on error
- AX = error code (see #03976)
- --------s-830D-------------------------------
- INT 83 - JM Pro Tracker v5.0 - ???
- AH = 0Dh
- BX = ???
- ???
- Return: CF clear (successful)
- --------s-830E-------------------------------
- INT 83 - JM Pro Tracker v5.0 - ???
- AH = 0Eh
- BX = ??? (ignored if ES:DI = 0000h:0000h)
- ES:DI -> ??? or 0000h:0000h
- Return: CF clear (successful)
- --------s-830F-------------------------------
- INT 83 - JM Pro Tracker v5.0 - ???
- AH = 0Fh
- ???
- Return: CF clear if successful
- AX = ???
- CF set on error
- AX = error code (see #03976)
- --------s-8310-------------------------------
- INT 83 - JM Pro Tracker v5.0 - ???
- AH = 10h
- BL = subfunction???
- CX = ???
- DX = ???
- ???
- Return: CF clear if successful
- CX = DX = ???
- CF set on error
- AX = error code (see #03976)
- SeeAlso: AH=18h
- --------s-8311-------------------------------
- INT 83 - JM Pro Tracker v5.0 - ???
- AH = 11h
- BL = ???
- CX = ???
- Return: CF clear (successful)
- --------s-8312-------------------------------
- INT 83 - JM Pro Tracker v5.0 - CLEAR ???
- AH = 12h
- Return: nothing
- --------s-8313-------------------------------
- INT 83 - JM Pro Tracker v5.0 - ???
- AH = 13h
- BX = ???
- Return: CF clear (successful)
- --------s-8314-------------------------------
- INT 83 - JM Pro Tracker v5.0 - ???
- AH = 14h
- ???
- Return: CF clear (successful)
- BX = ???
- --------s-8315-------------------------------
- INT 83 - JM Pro Tracker v5.0 - GET ???
- AH = 15h
- BX = what to get (zero/nonzero)
- Return: CF clear if successful
- BX = ???
- DX = ???
- CF set on error
- AX = error code (see #03976)
- --------s-8316-------------------------------
- INT 83 - JM Pro Tracker v5.0 - ???
- AH = 16h
- AL = subfunction
- 00h ???
- Return: BX = ???
- CX = ???
- DX = ???
- ES:DI -> ???
- CF indicates ???
- 01h ???
- Return: BX = ???
- CX = ???
- DX = ???
- Return: CF clear if successful
- CF set on error
- AX = error code (FFxxh) (see #03976)
- --------s-8317-------------------------------
- INT 83 - JM Pro Tracker v5.0 - UNHOOK API INTERRUPT
- AH = 17h
- Return: CF clear if successful
- CF set on error (hooked by another program)
- --------s-8318-------------------------------
- INT 83 - JM Pro Tracker v5.0 - SET BUFFERS
- AH = 18h
- ES:DI -> buffer-pointer structure (see #03977)
- Return: nothing
- SeeAlso: AH=05h,AH=06h,AH=07h,AH=10h
- Format of JM Pro Tracker buffer-pointer structure:
- Offset Size Description (Table 03977)
- 00h WORD length of ??? buffer (see AH=05h)
- 02h DWORD -> ??? buffer (see AH=05h)
- 06h WORD length of ??? buffer (see AH=06h)
- 08h DWORD -> ??? buffer (see AH=06h)
- 0Ch WORD length of ??? buffer (see AH=07h)
- 0Eh DWORD -> ??? buffer (see AH=07h)
- 12h WORD ??? (see AH=07h)
- 14h WORD ??? (see AH=10h) (subfunction 01h)
- 16h WORD ??? (see AH=10h) (subfunction 01h)
- 18h WORD ??? (see AH=10h) (subfunction 00h)
- 1Ah WORD ??? (see AH=10h) (subfunction 01h)
- --------r-84---------------------------------
- INT 84 - reserved for BASIC
- SeeAlso: INT 83"BASIC",INT 85"BASIC"
- --------r-85---------------------------------
- INT 85 - reserved for BASIC
- Note: INT 80 through INT ED are modified but not restored by Direct Access
- v4.0, and may be left dangling by other programs written with the
- same version of compiled BASIC
- SeeAlso: INT 84"BASIC",INT 86"BASIC"
- --------N-86---------------------------------
- INT 86 - NetBIOS - ORIGINAL INT 18
- Note: some implementations of NetBIOS reportedly relocate INT 18 here
- SeeAlso: INT 18"BOOT HOOK"
- --------r-86---------------------------------
- INT 86 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 85"BASIC",INT 87"BASIC"
- --------r-86---------------------------------
- INT 86 - APL*PLUS/PC - Terminate APL session and return to DOS
- SeeAlso: INT 21/AH=4Ch,INT 87"APL"
- --------r-87---------------------------------
- INT 87 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 86"BASIC",INT 88"BASIC"
- --------r-87---------------------------------
- INT 87 - APL*PLUS/PC - ???
- SeeAlso: INT 86"APL",INT 88/AL=00h
- --------v-87---------------------------------
- INT 87 - VIRUS - "ZeroHunt" - VIRAL CODE (NOT A VECTOR!)
- Note: the ZeroHunt virus copies its resident code down to 0000h:021Ch and
- following
- SeeAlso: INT 8B"VIRUS"
- --------r-88---------------------------------
- INT 88 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 87"BASIC",INT 89"BASIC"
- --------r-88--00-----------------------------
- INT 88 - APL*PLUS/PC - CREATE OBJECT OF ARBITRARY RANK OR SHAPE
- AL = 00h
- BX = STPTR of the variable to be assigned
- ES:SI -> model of type, rank, and shape (see #03978)
- Return: ES:DI -> first data byte of object
- DX:CX = number of elements in the object
- SeeAlso: INT 88/AL=01h,INT 88/AL=08h,INT C8"APL"
- Format of APL*PLUS/PC shape model:
- Offset Size Description (Table 03978)
- 00h BYTE type
- 01h character (2-byte dimension sizes)
- 02h integer (2-byte dimension sizes)
- 08h floating point (2-byte dimension sizes)
- 11h character (4-byte dimension sizes)
- 12h integer (4-byte dimension sizes)
- 18h floating point (4-byte dimension sizes)
- 01h BYTE rank
- 02h (D)WORD first dimension of shape
- N (D)WORD second dimension of shape
- ...
- --------r-88--01-----------------------------
- INT 88 - APL*PLUS/PC - CREATE CHARACTER SCALAR/VECTOR/MATRIX <64K IN SIZE
- AL = 01h
- AH = rank
- BX = STPTR of the variable to be assigned
- CX = first dimension (if any)
- DX = second dimension (if any)
- Return: ES:DI -> object
- CX = number of elements in the object
- Note: each dimension must be 32767 or smaller
- SeeAlso: AL=00h,AL=02h,AL=08h,INT C8"APL"
- --------r-88--02-----------------------------
- INT 88 - APL*PLUS/PC - CREATE INTEGER SCALAR/VECTOR/MATRIX <64K IN SIZE
- AL = 02h
- AH = rank
- BX = STPTR of the variable to be assigned
- CX = first dimension (if any)
- DX = second dimension (if any)
- Return: ES:DI -> object
- CX = number of elements in the object
- Note: each dimension must be 32767 or smaller
- SeeAlso: AL=01h,AL=08h,INT C8"APL"
- --------r-88--08-----------------------------
- INT 88 - APL*PLUS/PC - CREATE FLOATING POINT SCALAR/VECTOR/MATRIX <64K IN SIZE
- AL = 08h
- AH = rank
- BX = STPTR of the variable to be assigned
- CX = first dimension (if any)
- DX = second dimension (if any)
- Return: ES:DI -> object
- CX = number of elements in the object
- Note: each dimension must be 32767 or smaller
- SeeAlso: AL=01h,AL=02h,INT C8"APL"
- --------r-88--F5-----------------------------
- INT 88 - APL*PLUS/PC - FORCE OBJECT INTO REAL WORKSPACE FROM VIRTUAL
- AL = F5h
- BX = STPTR of object
- SeeAlso: INT C8"APL"
- --------r-88--F6-----------------------------
- INT 88 - APL*PLUS/PC - MAKE NAME IMMUNE FROM OUTSWAPPING
- AL = F6h
- BX = STPTR of object
- SeeAlso: AL=F7h,AL=F8h,INT C8"APL"
- --------r-88--F7-----------------------------
- INT 88 - APL*PLUS/PC - MAKE NAME ELIGIBLE FOR OUTSWAPPING
- AL = F7h
- BX = STPTR of object
- SeeAlso: AL=F6h,AL=F8h,INT C8"APL"
- --------r-88--F8-----------------------------
- INT 88 - APL*PLUS/PC - REPORT WHETHER NAME IS ELIGIBLE FOR OUTSWAPPING
- AL = F8h
- BX = STPTR of object
- Return: BX = name's outswapping status
- 0000h eligible
- 0001h not eligible
- SeeAlso: AL=F6h,AL=F7h,INT C8"APL"
- --------r-88--F9-----------------------------
- INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
- AL = F9h
- ES:SI -> name
- CX = length of name
- Return: CF set if name ill-formed or already in use
- BX = STPTR if already in symbol table
- CF clear if name is available for use
- BX = 0000h
- Note: does not force the name into the workspace
- SeeAlso: AL=FEh,AL=FFh,INT C8"APL"
- --------r-88--FC-----------------------------
- INT 88 - APL*PLUS/PC - DETERMINE IF MEMORY AVAIL WITHOUT GARBAGE COLLECTION
- AL = FCh
- BX = amount of memory needed (paragraphs)
- Return: CF clear if memory available
- CF set if a workspace compaction is required
- SeeAlso: AL=FDh,INT C8"APL"
- --------r-88--FD-----------------------------
- INT 88 - APL*PLUS/PC - PERFORM GARBAGE COLLECTION AND RETURN AVAILABLE MEMORY
- AL = FDh
- Return: BX = number of paragraphs available in workspace
- SeeAlso: AL=FCh,INT C8"APL"
- --------r-88--FE-----------------------------
- INT 88 - APL*PLUS/PC - CREATE NAME
- AL = FEh
- ES:SI -> name
- CX = length of name
- Return: BX = STPTR of name
- DX = interpreter's data segment
- SeeAlso: AL=F9h,AL=FFh,INT C8"APL"
- --------r-88--FF-----------------------------
- INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
- AL = FFh
- ES:SI -> name
- CX = length of name
- Return: CF set if name ill-formed or already in use
- BX = STPTR if already in symbol table
- CF clear if name is available for use
- BX = 0000h
- Note: forces the name into the workspace and makes it immune from outswapping
- SeeAlso: AL=F9h,AL=FEh,INT C8"APL"
- --------r-89---------------------------------
- INT 89 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 88"BASIC",INT 8A"BASIC"
- --------r-89---------------------------------
- INT 89 - APL*PLUS/PC - ???
- Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
- the older interrupts
- SeeAlso: INT C9"APL"
- --------r-8A---------------------------------
- INT 8A - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 89"BASIC",INT 8B"BASIC"
- --------r-8A---------------------------------
- INT 8A - APL*PLUS/PC - PRINT SCREEN
- Note: same as INT 05
- SeeAlso: INT 05"PRINT SCREEN",INT 8C"APL",INT CA"APL"
- --------r-8B---------------------------------
- INT 8B - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 8A"BASIC",INT 8C"BASIC"
- --------r-8B---------------------------------
- INT 8B - APL*PLUS/PC - BEEP
- Note: same as printing a ^G via INT 21/AH=02h
- SeeAlso: INT 21/AH=02h,INT CB"APL"
- --------v-8B---------------------------------
- INT 8B - VIRUS - "ZeroHunt" - INSTALLATION CHECK (NOT A VECTOR!)
- Note: if the ZeroHunt virus is resident, this vector will contain either
- EE83h:019Bh (ZH-411) or EE83h:019Fh (ZH-415)
- SeeAlso: INT 70"VIRUS",INT 87"VIRUS",INT 9C"VIRUS"
- --------r-8C---------------------------------
- INT 8C - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-8C---------------------------------
- INT 8C - APL*PLUS/PC - CLEAR SCREEN MEMORY
- AX = flag
- 0000h do not save display attributes
- 0001h save attributes
- SeeAlso: INT CC"APL"
- --------r-8D---------------------------------
- INT 8D - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-8E---------------------------------
- INT 8E - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-8F---------------------------------
- INT 8F - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-90---------------------------------
- INT 90 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-90---------------------------------
- INT 90 - APL*PLUS/PC - USED BY PORT 10 PRINTER DRIVER
- --------r-91---------------------------------
- INT 91 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------N-91---------------------------------
- INT 91 - IBM TOKEN RING ADAPTER - ???
- SeeAlso: INT 81"TOKEN RING",INT 82"TOKEN RING",INT 93"TOKEN RING"
- --------!---Section--------------------------
- Interrupt List, part 18 of 18
- Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
- --------r-92---------------------------------
- INT 92 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------N-92---------------------------------
- INT 92 - Sangoma X.25 INTERFACE PROGRAM
- BX:DX -> control block
- SeeAlso: INT 68"Sangoma"
- --------e-92E1-------------------------------
- INT 92 - Da Vinci eMail Dispatcher INTERFACE
- AH = E1h
- AL = function
- BX = stack count (number of words to push)
- CX:DX -> stack data (in word-reversed order ready to push)
- Return: AX = status (see #03979)
- Note: preserves BP, DS, SI, DI; other registers may be destroyed
- (Table 03979)
- Values for Da Vinci eMail function status:
- 0001h success
- FF97h "ERS_NOT_AVAILABLE"
- FF99h "ERS_TOO_MANY_NAMES"
- FF9Ah "ERS_BAD_NAME_PASSWORD"
- FFE3h "ERS_NAME_NOT_FOUND"
- FFF8h "ERS_USE_STRING" (call NetGetError to get error string)
- FFFFh "ERS_NO_SUCH_FILE"
- --------e-92E100-----------------------------
- INT 92 - Da Vinci eMail Dispatcher - "NetInitStart"
- AX = E100h
- BX = size of parameter block in words (000Ah)
- CX:DX -> parameter block (see #03980)
- Return: AX = 0001h success
- Desc: this function is used to initialize the dispatcher
- SeeAlso: AX=E101h,AX=E103h
- Format of Da Vinci eMail "NetInitStart" parameter block:
- Offset Size Description (Table 03980)
- 00h WORD segment of ???
- 02h WORD offset of ???
- 04h WORD high part of long ???
- 06h WORD low part of long ???
- 08h WORD high part of long ???
- 0Ah WORD low part of long ???
- 0Ch WORD high part of long ???
- 0Eh WORD low part of long ???
- 10h WORD high part of long ???
- 12h WORD low part of long ???
- --------e-92E101BX0000-----------------------
- INT 92 - Da Vinci eMail Dispatcher - "NetInitCheck"
- AX = E101h
- BX = 0000h
- CX:DX ignored
- Return: AX = 0001h success
- SeeAlso: AX=E100h,AX=E180h
- --------e-92E102BX0000-----------------------
- INT 92 - Da Vinci eMail Dispatcher - "NetCheckDriver"
- AX = E102h
- BX = 0000h
- CX:DX ignored
- Return: AX = 0001h success
- Desc: this function is used to determine if the dispatcher is loaded
- SeeAlso: AX=E10Bh,AX=E180h
- --------e-92E103BX0000-----------------------
- INT 92 - Da Vinci eMail Dispatcher - "NetTerminate"
- AX = E103h
- BX = 0000h
- CX:DX ignored
- Return: AX = status (see #03979)
- SeeAlso: AX=E100h
- --------e-92E104-----------------------------
- INT 92 - Da Vinci eMail Dispatcher - "NetWhereIs"
- AX = E104h
- BX = size of parameter block in words (0006h)
- CX:DX -> parameter block (see #03981)
- Return: AX = status (see #03979)
- Desc: this function is used to verify node address for usernames
- SeeAlso: AX=E180h
- Format of Da Vinci eMail "NetWhereIs" parameter block:
- Offset Size Description (Table 03981)
- 00h WORD segment of node address buffer
- 02h WORD offset of node address buffer
- 04h WORD segment of uppercase username
- 06h WORD offset of uppercase username
- 08h WORD segment of "DVSEMAIL"
- 0Ah WORD offset of "DVSEMAIL"
- --------e-92E105-----------------------------
- INT 92 - Da Vinci eMail Dispatcher - "NetOpen"
- AX = E105h
- BX = size of parameter block in words (0007h)
- CX:DX -> parameter block (see #03982)
- Return: AX = 0000h Error
- AX = handle
- Desc: this function is used to open a submission channel
- SeeAlso: AX=E10Ah,AX=E106h,AX=E108h
- Format of Da Vinci eMail "NetOpen" parameter block:
- Offset Size Description (Table 03982)
- 00h WORD operation (1 = read, 2 = write)
- 02h WORD segment of uppercase To: username
- 04h WORD offset of uppercase To: username
- 06h WORD segment of "DVSEMAIL"
- 08h WORD offset of "DVSEMAIL"
- 0Ah WORD segment of node address
- 0Ch WORD offset of node address
- --------e-92E106BX0004-----------------------
- INT 92 - Da Vinci eMail Dispatcher - "NetRead"
- AX = E106h
- BX = 0004h
- CX:DX -> parameter block
- Return: AX = 0001h
- SeeAlso: AX=E108h
- --------e-92E107BX0002-----------------------
- INT 92 - Da Vinci eMail Dispatcher - "NetGetError"
- AX = E107h
- BX = 0002h
- CX:DX -> parameter block
- Return: AX = 0001h
- SeeAlso: AX=E109h,AX=E180h
- --------e-92E108-----------------------------
- INT 92 - Da Vinci eMail Dispatcher - "NetWrite"
- AX = E108h
- BX = size of parameter block in words (0004h)
- CX:DX -> parameter block (see #03983)
- Return: AX = amount written
- Desc: This function is used to write transactions to the dispatcher.
- The command block is written first and then another call is used
- to write the associated data.
- SeeAlso: AX=E106h
- Format of Da Vinci eMail "NetWrite" parameter block:
- Offset Size Description (Table 03983)
- 00h WORD buffer count (see #03985)
- 02h WORD segment of command buffer (see #03984)
- 04h WORD offset of command buffer
- 06h WORD handle from NetOpen
- Format of Da Vinci eMail command buffer:
- Offset Size Description (Table 03984)
- 00h BYTE command
- 21h '!' Protocol commands for remote control
- 41h 'A' Authorization protocol element
- 42h 'B' Return(back) routing information
- Associated data is the From: username
- 43h 'C' Carbon Copy list
- Associated data is a comma delimitted list of usernames
- 44h 'D' Distribution list
- Associated data is a comma delimitted list of usernames
- 45h 'E' Mail end marker
- No associated data
- 48h 'H' Mail message header
- Associated data is a message header buffer
- 4Dh 'M' Mail message
- Associated data is the body of the message
- 4Fh 'O' Object
- 50h 'P' Paperclip attachment
- 52h 'R' Routing information
- Associated data is the To: username
- 53h 'S' Subject
- Associated data is the subject of the message
- 54h 'T' Trail of Reply/Forwards
- 01h BYTE subcommand
- 02h DWORD length of associated data
- Format of Da Vinci eMail message header buffer:
- Offset Size Description (Table 03985)
- 00h 30 BYTEs subject line
- 1Eh 24 BYTEs To
- 36h 24 BYTEs From
- 4Eh DWORD Time
- BYTE 00h
- BYTE hour
- BYTE minute
- BYTE second
- 52h DWORD Date
- BYTE 00h
- BYTE year
- BYTE month
- BYTE day
- 56h DWORD serial number (00000000h)
- 5Ah WORD mail types (see #03986)
- 5Ch WORD special types (0)
- Bitfields for Da Vinci eMail mail types:
- Bit(s) Description (Table 03986)
- 7 blind carbon copy
- 6 carbon copy
- 5 priority
- 4 confidential
- 3 certified
- 2 bulk
- 1-0 class (first, second, third, bulk)
- --------e-92E109-----------------------------
- INT 92 - Da Vinci eMail Dispatcher - "NetErrorFix" (UNUSED)
- AX = E109h
- BX = size of parameter block in words (0001h)
- CX:DX -> parameter block (see #03987)
- Return: AX = FF97h (ERS_NOT_AVAILABLE)
- SeeAlso: AX=E107h,AX=E180h
- Format of Da Vinci eMail "NetErrorFix" parameter block:
- Offset Size Description (Table 03987)
- 00h WORD ???
- --------e-92E10A-----------------------------
- INT 92 - Da Vinci eMail Dispatcher - "NetClose"
- AX = E10Ah
- BX = size of parameter block in words (0001h)
- CX:DX -> parameter block (see #03988)
- Return: AX = 0001h
- Desc: this function is used to close a dispatcher handle
- SeeAlso: AX=E105h
- Format of Da Vinci eMail "NetClose" parameter block:
- Offset Size Description (Table 03988)
- 00h WORD handle from NetOpen
- --------e-92E10B-----------------------------
- INT 92 - Da Vinci eMail Dispatcher - "NetCheckQueue"
- AX = E10Bh
- BX = size of parameter block in words (0004h)
- CX:DX -> parameter block (see #03989)
- Return: AX = 0001h
- SeeAlso: AX=E102h,AX=E10Ch
- Format of Da Vinci eMail "NetCheckQueue" parameter block:
- Offset Size Description (Table 03989)
- 00h WORD segment of 24-byte username buffer
- 02h WORD offset of 24-byte username buffer
- 04h WORD segment of 24-byte protocol buffer
- 06h WORD offset of 24-byte protocol buffer
- --------e-92E10C-----------------------------
- INT 92 - Da Vinci eMail Dispatcher - "NetReadQueue"
- AX = E10Ch
- BX = size of parameter block in words (0002h)
- CX:DX -> parameter block (see #03990)
- Return: AX = 0001h
- SeeAlso: AX=E10Bh
- Format of Da Vinci eMail "NetReadQueue" parameter block:
- Offset Size Description (Table 03990)
- 00h WORD Segment of 128 byte node address buffer
- 02h WORD Offset of 128 byte node address buffer
- --------e-92E10D-----------------------------
- INT 92 - Da Vinci eMail Dispatcher - "NetSubmitName"
- AX = E10Dh
- BX = size of parameter block in words (0006h)
- CX:DX -> parameter block (see #03991)
- Return: AX = status (see #03979)
- Desc: this function is used to verify username/password
- SeeAlso: AX=E10Eh
- Format of Da Vinci eMail "NetSubmitName" parameter block:
- Offset Size Description (Table 03991)
- 00h WORD segment of uppercase password string
- 02h WORD offset of uppercase password string
- 04h WORD segment of uppercase username string
- 06h WORD offset of uppercase username string
- 08h WORD segment of "DVSEMAIL"
- 0Ah WORD offset of "DVSEMAIL"
- --------e-92E10E-----------------------------
- INT 92 - Da Vinci eMail Dispatcher - "NetRemoveName"
- AX = E10Eh
- BX = size of parameter block in words (0004h)
- CX:DX -> parameter block (see #03992)
- Return: AX = 0001h
- Desc: this function is used to remove a username
- SeeAlso: AX=E10Dh
- Format of Da Vinci eMail "NetRemoveName" parameter block:
- Offset Type Description (Table 03992)
- 00h WORD segment of uppercase username
- 02h WORD offset of uppercase username
- 04h WORD segment of "DVSEMAIL"
- 06h WORD offset of "DVSEMAIL"
- --------e-92E10FBX0000-----------------------
- INT 92 - Da Vinci eMail Dispatcher - IS ANYONE THERE? QUERY
- AX = E10Fh
- BX = 0000h
- CX:DX ignored
- Return: AX = 0001h
- SeeAlso: AX=E180h
- --------e-92E110-----------------------------
- INT 92 - Da Vinci eMail Dispatcher - "NetGetAltRoute"
- AX = E110h
- BX = size of parameter block in words (0006h)
- CX:DX -> parameter block (see #03993)
- Return: AX = 0001h
- SeeAlso: AX=E111h,AX=E113h
- Format of Da Vinci eMail "NetGetAltRoute" parameter block:
- Offset Size Description (Table 03993)
- 00h 6 WORDs ???
- --------e-92E111-----------------------------
- INT 92 - Da Vinci eMail Dispatcher - "NetDeleteAltRoutes"
- AX = E111h
- BX = size of parameter block in words (0004h)
- CX:DX -> parameter block (see #03994)
- Return: AX = 0001h
- SeeAlso: AX=E110h,AX=E113h
- Format of Da Vinci eMail "NetDeleteAltRoutes" parameter block:
- Offset Size Description (Table 03994)
- 00h 4 WORDs ???
- --------e-92E112-----------------------------
- INT 92 - Da Vinci eMail Dispatcher - "NetChangePassword"
- AX = E112h
- BX = size of parameter block in words (0008h)
- CX:DX -> parameter block (see #03995)
- Return: AX = 0001h
- SeeAlso: AX=E180h
- Format of Da Vinci eMail "NetChangePassword" parameter block:
- Offset Size Description (Table 03995)
- 00h 8 WORDs ???
- --------e-92E113-----------------------------
- INT 92 - Da Vinci eMail Dispatcher - "NetSetAltRoute"
- AX = E113h
- BX = size of parameter block in words (0008h)
- CX:DX -> parameter block (see #03996)
- Return: AX = 0001h
- SeeAlso: AX=E110h,AX=E111h
- Format of Da Vinci eMail "NetSetAltRoute" parameter block:
- Offset Size Description (Table 03996)
- 00h 8 WORDs ???
- --------e-92E175-----------------------------
- INT 92 - Da Vinci eMail Dispatcher - BECOME MICRO TSR
- AX = E175h
- Return: AX = 0012h
- BX = PSP
- SeeAlso: AX=E180h
- --------e-92E180-----------------------------
- INT 92 - Da Vinci eMail Dispatcher - INSTALLATION CHECK
- AX = E180h
- Return: AX = 0012h if installed
- ES:DX -> '$'-terminated driver information string
- SeeAlso: AX=E102h,AX=E105h,AX=E10Fh,AX=E175h
- --------r-93---------------------------------
- INT 93 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------N-93---------------------------------
- INT 93 - IBM TOKEN RING ADAPTER - ???
- SeeAlso: INT 81"TOKEN RING",INT 91"TOKEN RING"
- --------r-94---------------------------------
- INT 94 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------s-94----SI0000-----------------------
- INT 94 u - PCM driver - INITIALIZE SOUND
- SI = 0000h
- ES:BX -> parameters
- Return: ???
- Program: PCM.COM is a sound driver for Media Vision's Pro Audio Spectrum
- sound boards
- InstallCheck: test for the signature string "PCMDRIVER" immediately preceding
- the interrupt handler; the word preceding the signature gives the PCM
- driver's version
- SeeAlso: SI=0001h,SI=0002h,SI=0003h,SI=0004h,SI=0005h,SI=000Ah
- Index: installation check;PCM driver|PCM.COM;installation check
- Index: PCM driver;installation check
- --------s-94----SI0001-----------------------
- INT 94 u - PCM driver - INITIALIZE PCM
- SI = 0001h
- ES:BX -> parameters
- Return: ???
- SeeAlso: SI=0000h,SI=0002h,SI=0003h,SI=000Ah
- --------s-94----SI0002-----------------------
- INT 94 u - PCM driver - INITIALIZE PCM INFO
- SI = 0002h
- ES:BX -> parameters (see #03997)
- Return: ???
- SeeAlso: SI=0000h,SI=0001h,SI=0003h,SI=000Ah
- Format of PCM driver function 0002h parameters:
- Offset Size Description (Table 03997)
- 00h DWORD rate
- 04h WORD channel number
- 06h WORD "comp"
- 08h WORD "dsize"
- --------s-94----SI0003-----------------------
- INT 94 u - PCM driver - INITIALIZE DMA BUFFER
- SI = 0003h
- ES:BX -> parameters (see #03998)
- Return: ???
- SeeAlso: SI=0000h,SI=000Ah,SI=000Bh
- Format of PCM driver function 0003h parameters:
- Offset Size Description (Table 03998)
- 00h DWORD -> DMA buffer
- 04h WORD size of DMA buffer
- 06h WORD number of divisions
- --------s-94----SI0004-----------------------
- INT 94 u - PCM driver - INITIALIZE USER FUNCTION
- SI = 0004h
- ES:BX -> parameters (see #03999)
- Return: ???
- SeeAlso: SI=0000h,SI=0001h
- Format of PCM driver function 0004h parameters:
- Offset Size Description (Table 03999)
- 00h DWORD -> user function
- --------s-94----SI0005-----------------------
- INT 94 u - PCM driver - BEGIN AUDIO PLAY
- SI = 0005h
- Return: ???
- SeeAlso: SI=0000h,SI=0006h,SI=0007h,SI=0009h
- --------s-94----SI0006-----------------------
- INT 94 u - PCM driver - BEGIN AUDIO RECORD
- SI = 0006h
- Return: ???
- SeeAlso: SI=0005h,SI=0007h,SI=0009h
- --------s-94----SI0007-----------------------
- INT 94 u - PCM driver - PAUSE AUDIO PLAY/RECORD
- SI = 0007h
- Return: ???
- SeeAlso: SI=0005h,SI=0006h,SI=0008h
- --------s-94----SI0008-----------------------
- INT 94 u - PCM driver - RESUME AUDIO PLAY/RECORD
- SI = 0008h
- Return: ???
- SeeAlso: SI=0007h
- --------s-94----SI0009-----------------------
- INT 94 u - PCM driver - STOP AUDIO PLAY/RECORD
- SI = 0009h
- Return: ???
- SeeAlso: SI=0005h,SI=0006h,SI=0007h
- --------s-94----SI000A-----------------------
- INT 94 u - PCM driver - UNHOOK INTERRUPTS AND TURN OFF DMA
- SI = 000Ah
- Return: ???
- SeeAlso: SI=0000h,SI=0001h,SI=0003h
- Index: uninstall;PCM driver
- --------s-94----SI000B-----------------------
- INT 94 u - PCM driver - FIND VALID DMA BUFFER IN HUGE MEMORY BLOCK
- SI = 000Bh
- ES:BX -> parameters (see #04000)
- Return: ???
- SeeAlso: SI=0003h
- Format of PCM driver functio 000Bh parameters:
- Offset Size Description (Table 04000)
- 00h DWORD -> memory block to contain DMA buffer
- 04h WORD desired size of DMA buffer
- --------s-94----SI000D-----------------------
- INT 94 u - Media Vision PCM.COM - GET STATUS
- SI = 000Dh
- Return: AX = status (0000h = waiting) (see #04001)
- Bitfields for PCM.COM status:
- Bit(s) Description (Table 04001)
- 0 playing
- 1 recording
- 2 SBplaying
- 3 SBrecording
- 14 SBpaused
- 15 paused
- --------s-94----SI8000-----------------------
- INT 94 u - Media Vision PCM.COM - GET INTERNAL DMA BUFFER ADDRESS
- SI = 8000h
- Return: DX:AX -> DMA buffer
- Program: PCM.COM is a superset of the standard PCM driver which provides
- additional functions for fine control of the driver
- InstallCheck: for the Media Vision PCM.COM "shark" functions, test for the
- signature "PCM-SHARK" at offset 107h in the INT 94 handler's segment
- SeeAlso: SI=8001h,SI=8004h
- Index: installation check;Media Vision PCM.COM|PCM.COM;installation check
- Index: Media Vision PCM.COM;"shark" functions
- --------s-94----SI8001-----------------------
- INT 94 u - Media Vision PCM.COM - GET INTERNAL DMA BUFFER SIZE AND DIVISIONS
- SI = 8001h
- Return: AX = DMA buffer size
- DX = divisions
- SeeAlso: SI=8000h
- --------s-94----SI8002-----------------------
- INT 94 u - Media Vision PCM.COM - CHECK BOARD ADDRESS
- SI = 8002h
- Return: AX = status
- 0000h if board not at specified I/O address
- other if board found
- Note: the I/O address is specified by ORing the base I/O port shifted left
- four bits into SI before calling INT 94
- SeeAlso: SI=8000h
- --------s-94----SI8004-----------------------
- INT 94 u - Media Vision PCM.COM - GET INTERNAL NOTE BUFFER
- SI = 8004h
- Return: AX = offset of note buffer (segment = segment of internal DMA buffer)
- DX = size of buffer in note structures
- SeeAlso: SI=8000h
- --------s-94----SI8005-----------------------
- INT 94 u - Media Vision PCM.COM - SINGLE-STEP QUEUE
- SI = 8005h
- Return: ???
- --------s-94----SI8011-----------------------
- INT 94 u - Media Vision PCM.COM - INITIALIZE
- SI = 8011h
- ES:BX -> "iobf91" structure
- Return: ???
- --------s-94----SI8012-----------------------
- INT 94 u - Media Vision PCM.COM - LOAD SOUND FOR LATER PLAY THROUGH KEYBOARD
- SI = 8012h
- ES:BX -> "i94f92buf" structure
- Return: ???
- SeeAlso: SI=8013h,SI=8014h
- --------s-94----SI8013-----------------------
- INT 94 u - Media Vision PCM.COM - GET INTERNAL SOUND USAGE
- SI = 8013h
- Return: AX = number of sounds used
- DX = maximum handles
- --------s-94----SI8014-----------------------
- INT 94 u - Media Vision PCM.COM - GET DATA FOR SPECIFIED SOUND
- SI = 8014h
- ES:BX -> "i94f92buf" structure to be filled in
- sound number field set to desired sound
- Return: AX = status
- 0000h successful
- FFFFh sound number out of range
- SeeAlso: SI=8012h,SI=8013h
- --------s-94----SI8015-----------------------
- INT 94 u - Media Vision PCM.COM - GET/SET INTERNAL DMA BUFFER
- SI = 8015h
- ES:BX -> DMA info structure (see #04002)
- Return: ???
- Format of PCM.COM DMA info structure:
- Offset Size Description (Table 04002)
- 00h DWORD -> DMA buffer (offset FFFFh = return current buffer info)
- 04h WORD DMA buffer size
- 06h WORD divisions
- --------s-94----SI8016-----------------------
- INT 94 u - Media Vision PCM.COM - SIMULATE DOUBLE-SHIFT HOTKEY
- SI = 8016h
- AX = hotkey number (01h-08h)
- Return: ???
- SeeAlso: AL=02h/SI=8017h
- --------s-94--01SI8017-----------------------
- INT 94 u - Media Vision PCM.COM - CTRL-G INTERCEPT
- AL = 01h
- SI = 8017h
- AH = new state (00h off, 01h on)
- Return: ???
- SeeAlso: AL=02h/SI=8017h
- --------s-94--02SI8017-----------------------
- INT 94 u - Media Vision PCM.COM - DOUBLE-SHIFT-HOTKEY SOUND FEATURE
- AL = 02h
- SI = 8017h
- AH = new state (00h off, 01h on)
- Return: ???
- --------s-94--04SI8017-----------------------
- INT 94 u - Media Vision PCM.COM - RANDOM SOUND FEATURE
- AL = 04h
- SI = 8017h
- AH = new state
- 00h off
- 01h on
- CX = minimum delay
- DX = maximum delay
- Return: ???
- --------s-94--08SI8017-----------------------
- INT 94 u - Media Vision PCM.COM - NO ACTIVITY FEATURE
- AL = 08h
- SI = 8017h
- AH = new state
- 00h off
- 01h on
- DX:CX = delay
- Return: ???
- SeeAlso: AL=10h/SI=8017h
- --------s-94--10SI8017-----------------------
- INT 94 u - Media Vision PCM.COM - TIMER CONTROL
- AL = 10h
- SI = 8017h
- AH = timer options (see #04003)
- DX:CX = delay if AH bit 7 set (one-shot if DX bit 15 set)
- Return: ???
- SeeAlso: AL=08h/SI=8017h
- Bitfields for PCM.COM timer options:
- Bit(s) Description (Table 04003)
- 7 set timer
- 6 timer active (timer turned off if clear)
- 5-0 timer number
- --------s-94----SI8018-----------------------
- INT 94 u - Media Vision PCM.COM - GET INFO
- SI = 8018h
- AL = what to get
- 00h "F92state"
- 01h "F92bkgd"
- 02h "I10timer"
- 03h "I08state"
- Return: DX:AX -> desired information
- --------r-95---------------------------------
- INT 95 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-95---------------------------------
- INT 95 - APL*PLUS/PC - DETERMINE R= SPACE
- Note: use only when the R= option is invoked on entering APL
- --------r-96---------------------------------
- INT 96 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------U-96---------------------------------
- INT 96 U - KILL.COM, QKILL.COM - POP UP
- Program: KILL.COM is a TSR utility that allows you to terminate programs
- by calling INT 21/AH=4Ch or reboot the computer (author unknown);
- QKILL.COM is a modification of KILL.COM by Solar Designer that
- supports QEMM's Quick Boot feature
- Notes: This interrupt is intercepted but not chained by KILL.COM; it is never
- called by KILL.COM itself. It points into the middle of KILL.COM's
- INT 09 handler and assumes specific values have been placed on the
- stack (thus it can't be called as an interrupt).
- To invoke KILL, use the following code:
- pushf
- push cs
- push offset $+0Dh
- push ax
- push es
- push 0
- pop es
- jmp dword ptr es:[96h*4]
- --------r-97---------------------------------
- INT 97 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-98---------------------------------
- INT 98 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-99---------------------------------
- INT 99 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-9A---------------------------------
- INT 9A - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT 99,INT 9B
- --------r-9B---------------------------------
- INT 9B - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT 9A,INT 9C"BASIC"
- --------r-9C---------------------------------
- INT 9C - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT 9B,INT 9D"BASIC"
- --------v-9C---------------------------------
- INT 9C - VIRUS - "INT13" - ORIGINAL INT 13h VECTOR
- SeeAlso: INT 8B"VIRUS",INT 9D"VIRUS",INT 9E"VIRUS",INT 9F"VIRUS"
- --------r-9D---------------------------------
- INT 9D - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT 9C"BASIC",INT 9E"BASIC"
- --------v-9D---------------------------------
- INT 9D - VIRUS - "INT13" - ROM INT 13h ENTRY POINT
- Note: this vector is used by the virus to store the result of a call to
- INT 2F/AH=13h
- SeeAlso: INT 2F/AH=13h,INT 9C"VIRUS",INT 9E"VIRUS",INT 9F"VIRUS"
- --------r-9E---------------------------------
- INT 9E - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT 9D"BASIC",INT 9F"BASIC"
- --------v-9E---------------------------------
- INT 9E - VIRUS - "INT13" - ORIGINAL INT 21h VECTOR
- SeeAlso: INT 70"VIRUS",INT 9C"VIRUS",INT 9D"VIRUS",INT E0"VIRUS"
- --------r-9F---------------------------------
- INT 9F - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT 9D"BASIC",INT A0"BASIC"
- --------v-9F---------------------------------
- INT 9F - VIRUS - "INT13" - STORAGE FOR USER INT 13h VECTOR
- Note: while it is infecting a file, the INT13 virus grabs INT 13 and uses
- this interrupt to store the existing INT 13 vector for later
- restoration
- SeeAlso: INT 9C"VIRUS",INT 9D"VIRUS",INT D3"VIRUS"
- --------r-A0---------------------------------
- INT A0 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT 9F"BASIC",INT A1"BASIC"
- --------r-A0---------------------------------
- INT A0 - APL*PLUS/PC - USED BY APL/GSS*CGI GRAPHICS INTERFACE
- SeeAlso: INT 59"GSS"
- --------r-A1---------------------------------
- INT A1 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT A0"BASIC",INT A2"BASIC"
- --------r-A2---------------------------------
- INT A2 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT A1"BASIC",INT A3"BASIC"
- --------r-A3---------------------------------
- INT A3 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT A2"BASIC",INT A4"BASIC"
- --------r-A4---------------------------------
- INT A4 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT A3"BASIC",INT A5"BASIC"
- --------U-A4---------------------------------
- INT A4 U - Right Hand Man - API
- AH = function number (v3.3 supports functions 00h-52h)
- Return: CF set on error
- CF clear if successful
- Program: Right Hand Man is a TSR desk-top utility originally by Red E Products
- which has evolved into Futurus Team
- Note: this interrupt is only hooked while popped up
- SeeAlso: INT 2F/AX=A4E0h
- --------r-A5---------------------------------
- INT A5 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT A4"BASIC",INT A6"BASIC"
- --------r-A6---------------------------------
- INT A6 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT A5"BASIC",INT A7"BASIC"
- --------r-A7---------------------------------
- INT A7 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-A8---------------------------------
- INT A8 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-A9---------------------------------
- INT A9 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-AA---------------------------------
- INT AA - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-AB---------------------------------
- INT AB - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-AC---------------------------------
- INT AC - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-AD---------------------------------
- INT AD - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-AE---------------------------------
- INT AE - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-AF---------------------------------
- INT AF - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-B0---------------------------------
- INT B0 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-B1---------------------------------
- INT B1 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-B2---------------------------------
- INT B2 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-B3---------------------------------
- INT B3 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------U-B370-------------------------------
- INT B3 - ZIPKEY - GET VERSION
- AH = 70h
- Return: AH = major version
- AL = minor version
- CL = number of states and territories in current database
- DH = year of current database - 1900
- DL = month of current database's file date
- Program: ZIPKEY is a resident ZIPCODE database by Eric Isaacson
- Note: if installed, the string "ZIPKEY" is present at offset 75h in the
- interrupt handler's segment, and the byte at 7Bh contains the API
- version number (00h for v1.x, 01h for v2.0)
- --------U-B371-------------------------------
- INT B3 - ZIPKEY - CONVERT TWO-LETTER ABBREVIATION TO STATE CODE
- AH = 71h
- BX = abbreviation, in either case (first letter in BL)
- Return: CF set on error
- AL = FFh
- CF clear if successful
- AL = ZIPKEY state code
- SeeAlso: AH=72h
- --------U-B372-------------------------------
- INT B3 - ZIPKEY - CONVERT STATE CODE TO TWO-LETTER ABBREVIATION
- AH = 72h
- BL = ZIPKEY state code
- Return: CF set on error
- AX destroyed
- CF clear if successful
- AX = abbreviation, in upper case
- SeeAlso: AH=71h,AH=73h
- --------U-B373-------------------------------
- INT B3 - ZIPKEY - CONVERT STATE CODE TO STATE NAME
- AH = 73h
- BL = ZIPKEY state code
- ES:DI -> buffer for name
- Return: CF set on error
- AX destroyed
- CF clear if successful
- ES:DI points one byte beyond end of name
- SeeAlso: AH=72h
- --------U-B374-------------------------------
- INT B3 - ZIPKEY - CONVERT ZIPCODE TO ASCII DIGITS
- AH = 74h
- DX = zipcode region (0-999)
- CH = last two digits of zipcode (0-99)
- ES:DI -> buffer
- Return: CF set on error
- AX destroyed
- CF clear if successful
- ES:DI points one byte beyond end of digit string
- --------U-B375-------------------------------
- INT B3 - ZIPKEY - LOOK UP STATE CODE FOR ZIPCODE
- AH = 75h
- DX = zipcode region (0-999)
- CH = last two digits of zipcode (0-99)
- Return: CF set on error (zipcode not found)
- AL = suggested state code, FFh if none
- CF clear if successful
- AL = ZIPKEY state code
- BX = area code (v2.0+)
- SeeAlso: AH=76h,AH=79h
- --------U-B376-------------------------------
- INT B3 - ZIPKEY - LOOK UP CITY AND STATE FOR ZIPCODE
- AH = 76h
- DX = zipcode region (0-999)
- CH = last two digits of zipcode (0-99)
- ES:DI -> buffer for name
- Return: CF set on error
- AL = suggested state code, FFh if none
- ES:DI buffer filled with suggested city name
- CF clear if successful
- AL = ZIPKEY state code
- BX = area code (v2.0+)
- ES:DI points one byte beyond end of name
- SeeAlso: AH=75h,AH=78h,AH=7Eh
- --------U-B377-------------------------------
- INT B3 - ZIPKEY - PLAY BACK EXIT KEY FOR ENTRY WITH GIVEN ZIPCODE
- AH = 77h
- DX = zipcode region (0-999)
- CH = last two digits of zipcode (0-99)
- BX = 16-bit BIOS keycode for a defined ZIPKEY alternate exit key
- Return: CF set on error
- AX destroyed
- CF clear if successful
- zipcode specification as defined by the BX keystroke is placed in
- keyboard buffer, as if the user had popped up ZIPKEY and exited
- by pressing the key specified by BX
- --------U-B378-------------------------------
- INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN STATE AND CITY
- AH = 78h
- BL = ZIPKEY state code
- DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
- Return: BH = number of matching entries (set to 51 if more than 50)
- DX = zipcode region of first match (0-999)
- CL = last two digits of first zipcode in the range (0-99)
- CH = last two digits of last zipcode in the range (0-99)
- AX destroyed
- SeeAlso: AH=79h,AH=7Ah
- --------U-B379-------------------------------
- INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN CITY
- AH = 79h
- BL = ZIPKEY state code of first state to search
- DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
- Return: AL = ZIPKEY state code of first matching state
- BH = number of matching entries (set to 51 if more than 50)
- DX = zipcode region of first match (0-999)
- CL = last two digits of first zipcode in first range (0-99)
- CH = last two digits of last zipcode in first range (0-99)
- Note: to find all matching cities, repeat search with BL set to one more than
- the returned AL
- SeeAlso: AH=78h,AH=7Ah
- --------U-B37A-------------------------------
- INT B3 - ZIPKEY - FETCH AN ENTRY FROM A PREVIOUS LOOKUP
- AH = 7Ah
- BL = case number (0 to one less than value returned in BH by lookup)
- Return: AL = ZIPKEY state code
- DX = zipcode region (0-999)
- CL = last two digits of first zipcode in the range (0-99)
- CH = last two digits of last zipcode in the range (0-99)
- SeeAlso: AH=78h,AH=79h
- --------U-B37B-------------------------------
- INT B3 - ZIPKEY - GET VALUES NEEDED TO SAVE ZIPKEY CONTEXT
- AH = 7Bh
- Return: BL = maximum number of characters for a city name
- BH = ZIPKEY state code for last city-name search, or FFh if none
- CX:DX = internal code identifying last city search
- AX destroyed
- SeeAlso: AH=7Ch
- --------U-B37C-------------------------------
- INT B3 - ZIPKEY - RESTORE ZIPKEY CONTEXT
- AH = 7Ch
- BL = maximum number of characters for a city name
- BH = ZIPKEY state code for last city-name search, or FFh if none
- CX:DX = internal code returned by AH=7Bh
- Return: CF set on error
- CF clear if successful
- AX destroyed
- SeeAlso: AH=7Bh
- --------U-B37D-------------------------------
- INT B3 - ZIPKEY - REQUEST POP UP
- AH = 7Dh
- BL = index number to simulate pressing a hotkey
- FFh for immediate popup with no playback on return
- Return: CF set on error
- AL = error code
- FDh already busy with another request
- FEh illegal function
- CF clear if successful
- AX destroyed
- window popped up and was closed by the user
- SeeAlso: AH=70h
- --------U-B37E-------------------------------
- INT B3 - ZIPKEY - GET NAME OF PRIMARY CITY FOR A ZIPCODE REGION
- AH = 7Eh
- DX = zipcode region (0-999)
- ES:DI -> buffer for name
- Return: CF set on error
- AL = FFh region does not exist
- CF clear if successful
- AL = ZIPKEY state code
- ES:DI points one byte beyond end of name
- SeeAlso: AH=76h
- --------U-B37F-------------------------------
- INT B3 - ZIPKEY - ENABLE/DISABLE HOTKEYS
- AH = 7Fh
- BL = function
- 00h turn off hotkeys
- 01h turn on hotkeys
- 02h return hotkey status
- 03h toggle hotkey status
- Return: AL = hotkey status
- 00h off
- 01h on
- --------U-B380-------------------------------
- INT B3 - ZIPKEY v2.0+ - DETERMINE STATE FOR AREA CODE
- AH = 80h
- BX = telephone area code (decimal)
- Return: CF clear if successful
- AL = ZIPKEY state code
- DX = first ZIP region for state (03E8h if Canada)
- CX = number of ZIP regions in state
- CF set on error
- AL = FFh
- DX = 03E9h
- --------r-B4---------------------------------
- INT B4 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-B4---------------------------------
- INT B4 - StackMan - REQUEST NEW STACK
- Return: SS:SP -> new stack
- Program: StackMan is a freeware stack manager by Franz Veldman of ESaSS B.V.
- which functions as a replacement for the DOS STACK= command as well
- as permitting multiple TSRs to share a pool of stack space
- InstallCheck: test for the string "STACKXXX" at offset 0Ah from the
- interrupt handler
- SeeAlso: INT 2F/AX=C9FFh,INT B5"STACKMAN"
- Index: installation check;STACKMAN
- --------r-B5---------------------------------
- INT B5 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT B4"BASIC",INT B6"BASIC"
- --------r-B5---------------------------------
- INT B5 - StackMan - RESTORE ORIGINAL STACK
- SS:SP -> stack returned by INT B4
- Return: SS:SP restored to value before INT B4
- SeeAlso: INT 2F/AX=C9FFh,INT B4"StackMan"
- --------m-B5---------------------------------
- INT B5 U - Netroom NETSWAP4 - ???
- ???
- Return: ???
- SeeAlso: INT 31/AH=57h
- --------r-B6---------------------------------
- INT B6 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT B5"BASIC",INT B7"BASIC"
- --------y-B6---------------------------------
- INT B6 - (NOT A VECTOR!) - USED BY TBFENCE
- Program: TBFence is a security program by ESaSS B.V. which transparently
- encrypts floppies and optionally allows only encrypted diskettes to
- be accessed
- Note: the low word of this vector (0000h:02D8h) contains the segment of the
- TBFence INT 13h code, which starts with the signature word E487h;
- this forms the installation check
- the highest byte of this vector contains the start of a FAR JMP
- instruction to ???
- SeeAlso: INT B7"TBFENCE"
- Index: installation check;TBFence
- --------r-B7---------------------------------
- INT B7 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT B6"BASIC",INT B8"BASIC"
- --------y-B7---------------------------------
- INT B7 - TBFENCE - ???
- SeeAlso: INT B6"TBFENCE"
- --------r-B8---------------------------------
- INT B8 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT B7"BASIC",INT B9"BASIC"
- --------r-B9---------------------------------
- INT B9 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-BA---------------------------------
- INT BA - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-BB---------------------------------
- INT BB - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-BC---------------------------------
- INT BC - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-BD---------------------------------
- INT BD - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-BE---------------------------------
- INT BE - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT BD"BASIC",INT BF"BASIC"
- --------Q-BE---------------------------------
- INT BE - DESQview/X - ???
- Note: points at an IRET
- SeeAlso: INT 15/AX=BFDEh/BX=0006h,INT 63"DESQview"
- --------r-BF---------------------------------
- INT BF - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT BE"BASIC",INT C0"BASIC"
- --------r-C0---------------------------------
- INT C0 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT BF"BASIC",INT C1"BASIC"
- --------d-C0---------------------------------
- INT C0 - AMI BIOS - DRIVE 0 DATA
- Note: this vector is used by some AMI BIOSes to store the first four bytes
- of the hard disk parameter table
- SeeAlso: INT 41"HARD DISK 0",INT 60"Adaptec",INT C1"AMI",INT C2"AMI"
- SeeAlso: INT C3"AMI",INT C4"AMI"
- --------r-C1---------------------------------
- INT C1 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT C0"BASIC",INT C2"BASIC"
- --------d-C1---------------------------------
- INT C1 - AMI BIOS - DRIVE 0 DATA
- Note: this vector is used by some AMI BIOSes to store the second four bytes
- of the hard disk parameter table
- SeeAlso: INT 41"HARD DISK 0",INT 60"Adaptec",INT C0"AMI",INT C2"AMI"
- SeeAlso: INT C3"AMI"
- --------r-C2---------------------------------
- INT C2 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT C1"BASIC",INT C3"BASIC"
- --------d-C2---------------------------------
- INT C2 - AMI BIOS - DRIVE 0 DATA
- Note: this vector is used by some AMI BIOSes to store the third four bytes
- of the hard disk parameter table
- SeeAlso: INT 41"DISK 0",INT 60"Adaptec",INT C0"AMI",INT C1"AMI",INT C3"AMI"
- --------r-C3---------------------------------
- INT C3 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT C2"BASIC",INT C4"BASIC"
- --------d-C3---------------------------------
- INT C3 - AMI BIOS - DRIVE 0 DATA
- Note: this vector is used by some AMI BIOSes to store the final four bytes
- of the hard disk parameter table
- SeeAlso: INT 41"DISK 0",INT 60"Adaptec",INT C0"AMI",INT C1"AMI",INT C2"AMI"
- --------r-C4---------------------------------
- INT C4 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT C3"BASIC",INT C5"BASIC"
- --------d-C4---------------------------------
- INT C4 - AMI BIOS - DRIVE 1 DATA
- Note: this vector is used by some AMI BIOSes to store the first four bytes
- of the second hard disk's parameter table
- SeeAlso: INT 46"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C5"AMI"
- SeeAlso: INT C6"AMI",INT C7"AMI"
- --------r-C5---------------------------------
- INT C5 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT C4"BASIC",INT C6"BASIC"
- --------d-C5---------------------------------
- INT C5 - AMI BIOS - DRIVE 1 DATA
- Note: this vector is used by some AMI BIOSes to store the second four bytes
- of the second hard disk's parameter table
- SeeAlso: INT 46"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C4"AMI"
- SeeAlso: INT C6"AMI",INT C7"AMI"
- --------r-C6---------------------------------
- INT C6 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT C5"BASIC",INT C7"BASIC"
- --------r-C6---------------------------------
- INT C6 - APL*PLUS/PC - IDENTICAL TO INT 86
- Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
- the older interrupts
- SeeAlso: INT 86"APL"
- --------d-C6---------------------------------
- INT C6 - AMI BIOS - DRIVE 1 DATA
- Note: this vector is used by some AMI BIOSes to store the third four bytes
- of the second hard disk's parameter table
- SeeAlso: INT 46"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C4"AMI"
- SeeAlso: INT C5"AMI",INT C7"AMI"
- --------r-C7---------------------------------
- INT C7 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT C6"BASIC",INT C8"BASIC"
- --------r-C7---------------------------------
- INT C7 - APL*PLUS/PC - ???
- Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
- the older interrupts
- SeeAlso: INT 87"APL"
- --------d-C7---------------------------------
- INT C7 - AMI BIOS - DRIVE 1 DATA
- Note: this vector is used by some AMI BIOSes to store the final four bytes
- of the second hard disk's parameter table
- SeeAlso: INT 46"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C4"AMI"
- SeeAlso: INT C5"AMI",INT C6"AMI"
- --------r-C8---------------------------------
- INT C8 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT C7"BASIC",INT C9"BASIC"
- --------r-C8---------------------------------
- INT C8 - APL*PLUS/PC - IDENTICAL TO INT 88
- Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
- the older interrupts
- SeeAlso: INT 88/AL=00h"APL",INT 88/AL=08h"APL"
- --------r-C9---------------------------------
- INT C9 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT C8"BASIC",INT CA"BASIC"
- --------r-C9---------------------------------
- INT C9 - APL*PLUS/PC - ???
- Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
- the older interrupts
- SeeAlso: INT 89"APL"
- --------r-CA---------------------------------
- INT CA - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT C9"BASIC",INT CB"BASIC"
- --------r-CA---------------------------------
- INT CA - APL*PLUS/PC - PRINT SCREEN
- Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
- the older interrupts
- SeeAlso: INT 8A"APL"
- --------r-CB---------------------------------
- INT CB - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT CA"BASIC",INT CC"BASIC"
- --------r-CB---------------------------------
- INT CB - APL*PLUS/PC - BEEP
- Notes: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
- the older interrupts
- same as printing a ^G via INT 21/AH=02h
- SeeAlso: INT 8B"APL"
- --------r-CC---------------------------------
- INT CC - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT CB"BASIC",INT CD"BASIC"
- --------r-CC---------------------------------
- INT CC - APL*PLUS/PC - CLEAR SCREEN MEMORY
- AX = flag
- 0000h do not save display attributes
- 0001h save attributes
- Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
- the older interrupts
- SeeAlso: INT 8C"APL"
- --------r-CD---------------------------------
- INT CD - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT CC"BASIC",INT CE"BASIC"
- --------r-CD---------------------------------
- INT CD - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
- --------r-CE---------------------------------
- INT CE - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT CD"BASIC",INT CF"BASIC"
- --------r-CE---------------------------------
- INT CE - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
- --------r-CF---------------------------------
- INT CF - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT CE"BASIC",INT D0"BASIC"
- --------r-CF---------------------------------
- INT CF - APL*PLUS/PC - DEFAULT LOW-RESOLUTION TIMER FOR QUAD MF FUNCTION
- SeeAlso: INT E0"APL"
- --------r-D0---------------------------------
- INT D0 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT CF"BASIC",INT D1"BASIC"
- --------r-D0---------------------------------
- INT D0 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
- --------U-D0---------------------------------
- INT D0 - [not a vector!] - NJFRERAM SIGNATURE VECTOR
- Program: NJFRERAM is a resident free-memory display utility by Mike "Nifty
- James" Blaszczak
- Note: if NJFRERAM is installed, this vector points at the signature "NJ"
- Index: installation check;NJFRERAM
- --------r-D1---------------------------------
- INT D1 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT D0"BASIC",INT D2"BASIC"
- --------r-D1---------------------------------
- INT D1 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
- --------r-D2---------------------------------
- INT D2 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT D1"BASIC",INT D3"BASIC"
- --------r-D2---------------------------------
- INT D2 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
- --------r-D3---------------------------------
- INT D3 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT D2"BASIC",INT D4"BASIC"
- --------r-D3---------------------------------
- INT D3 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
- --------v-D3---------------------------------
- INT D3 - VIRUS - "Antiexe" - RELOCATED INT 13
- SeeAlso: INT 9F"VIRUS"
- --------r-D4---------------------------------
- INT D4 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT D3"BASIC",INT D5"BASIC"
- --------r-D4---------------------------------
- INT D4 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
- --------O-D400-------------------------------
- INT D4 O - PC-MOS/386 v5.01 - OBSOLETE FUNCTIONS
- AH = 00h and 01h
- Return: nothing
- Desc: PC-MOS/386 v5.01 reports that these functions are no longer supported
- and enters an endless loop
- Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
- system by The Software Link, Inc.
- --------O-D402-------------------------------
- INT D4 - PC-MOS/386 v3.0+ - GET SYSTEM CONTROL BLOCK POINTER
- AH = 02h
- Return: AX = 0000h
- ES:BX -> System Control Block in V86 mode (see #04004)
- ES:EBX -> System Control Block in native mode (see #04004)
- Note: superseded by AH=26h
- SeeAlso: AH=04h,AH=10h,AH=26h,AH=28h,AH=29h,AH=2Ah,INT 21/AX=3000h,INT 38
- Format of PC-MOS/386 System Control Block:
- Offset Size Description (Table 04004)
- 00h WORD pointer to first TCB in chain
- 02h 17 BYTEs reserved
- 13h WORD pointer to current task's TCB
- 15h WORD pointer to TCB of visible (console) task
- --------O-D403-------------------------------
- INT D4 - PC-MOS/386 v5.01 - GET/SET EXTENDED DIRECTORY INFORMATION
- AH = 03h
- AL = subfunction (00h get, 01h set)
- DS:(E)DX -> pathname
- ES:(E)BX -> 10-byte buffer for directory information (see #04005)
- Return: CF clear if successful
- AL = permitted access level for file (00h-03h)
- ES:(E)BX -> modified buffer (AL=01h on entry)
- CF set on error
- AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
- Notes: BX/DX are used in V86 mode, EBX/EDX in native mode
- the file class cannot be changed for files because it affects the
- encryption method, but directories can have their classes changed
- Format of PC-MOS/386 directory information:
- Offset Size Description (Table 04005)
- 00h BYTE reserved (0)
- 01h BYTE file class ('A'-'Z' or 00h)
- 02h DWORD user ID of file creator
- 06h WORD file creation time (see #01665 at INT 21/AX=5700h)
- 08h WORD file creation date (see #01666 at INT 21/AX=5700h)
- --------O-D404-------------------------------
- INT D4 - PC-MOS/386 v3.0+ - GET TASK CONTROL BLOCK
- AH = 04h
- BX = task ID or FFFFh for calling task
- Return: CF clear if successful
- ES = segment of Task Control Block (TCB) (see #04006)
- CF set on error
- AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
- Note: superseded by AH=27h
- SeeAlso: AH=02h,AH=27h,AH=28h,AH=29h,AH=2Ah,INT 38
- Format of PC-MOS/386 Task Control Block:
- Offset Size Description (Table 04006)
- 00h BYTE signature byte "H" if allocated from system memory pool
- 01h BYTE header block ID, "T" = TCB
- 02h WORD length of block in paragraphs
- 04h WORD segment address of next header block (0000h if last)
- 06h WORD segment address of previous header block (0000h if first)
- 08h WORD pointer to next TCB
- 0Ah WORD pointer to previous TCB
- 0Ch WORD pointer to associated TCB (if applicable)
- 0Eh WORD reserved
- ---TCB---
- 10h WORD TCB task ID
- 12h WORD native context save area
- 14h WORD start address of task
- 16h WORD end address of task
- 18h BYTE task priority
- 19h BYTE task time slice
- 1Ah BYTE "TCBWAIT" run status of task
- 1Bh BYTE "TCBSTAT" what the task is waiting for
- 1Ch DWORD address of polling routine
- 20h BYTE error code from last function call
- 21h 11 BYTEs name of currently executing task
- 2Ch 4 BYTEs ???
- 30h BYTE keyboard disabled if bit 1 set
- 31h BYTE current shift state and toggles
- 32h 2 BYTEs ???
- 34h BYTE current video mode
- 35h BYTE current video page
- 36h BYTE number of text columns per screen
- 37h BYTE number of text rows per screen
- 38h WORD length of video buffer
- 3Ah WORD video page length
- 3Ch WORD apge start address in video RAM
- 3Eh 4 WORDs current cursor positions for four screen pages
- 46h 8 BYTEs ???
- 4Eh WORD current cursor type
- 50h BYTE current palette setting
- 51h BYTE original video mode
- 52h BYTE start CRT row (00h or 01h)
- 53h BYTE video RAM in task active
- 54h WORD handle of video save area
- 56h WORD page count of video save area
- 58h WORD segment address of video save area
- 5Ah WORD poitner to first Task File Block (see #04009)
- 5Ch WORD pointer to first Current Directory Block (see #04012)
- 5Eh WORD pointer to active Current Directory Block (see #04012)
- 60h BYTE number of drives
- 61h BYTE current drive (0=A:, etc.)
- 62h DWORD disk transfer address
- 66h 4 BYTEs ???
- 6Ah BYTE verify flag (nonzero = on)
- 6Bh BYTE break flag (nonzero = on)
- 6Ch WORD share/lock retry count
- 6Eh WORD ticks between share/lock retries
- 70h BYTE remote printer flags (see #04007)
- 71h BYTE ETX/ACK delay count
- 72h WORD spooler segment address
- 74h 2 BYTEs ???
- 76h 3 BYTEs remote printer redirection for LPT1 through LPT3 (see #04008)
- 79h 2 BYTEs ???
- 7Bh DWORD offset of username in TCB
- 7Fh BYTE current output class
- 80h 7 BYTEs protection access rights, 2 bits per class (writeable!)
- 87h 122 BYTEs ???
- 101h BYTE TCB sleep downcounter value
- 102h 20 BYTEs ???
- 116h BYTE last scan code
- ...
- 5D0h DWORD far pointer to Device Driver Terminal's entry point
- 5D4h WORD offset of logical screen
- 5D6h WORD segment of logical screen
- 5D8h WORD cursor offset within page
- 5DAh BYTE screen columns
- 5DBh WORD async port number (0000h = none)
- 5DDh DWORD physical baudrate
- 5E1h 19 BYTEs reserved for Device Driver Terminal (DDT)
- ...
- 7A6h DWORD far pointer to unregister calling chain
- Bitfields for PC-MOS/386 remote printer flags:
- Bit(s) Description (Table 04007)
- 0 LPT1 to terminal
- 1 LPT2 to terminal
- 2 LPT3 to terminal
- 3 escape to printer pending
- 4 use XON/XOFF
- 5 use ETX/ACK
- 6 waiting for ACK or XON
- 7 transparent printing on
- (Table 04008)
- Values for PC-MOS/386 remote printer redirection:
- 00h not redirected
- 01h redirected to COM1
- ...
- 18h redirected to COM24
- 51h redirected to LPT1
- 52h redirected to LPT2
- 53h redirected to LPT3
- Format of PC-MOS/386 Task File Block:
- Offset Size Description (Table 04009)
- 00h BYTE signature byte "H" if allocated from system memory pool
- 01h BYTE header block ID, "F" = task file block
- 02h WORD length of block in paragraphs
- 04h WORD segment address of next header block (0000h if last)
- 06h WORD segment address of previous header block (0000h if first)
- 08h WORD pointer to next TCB
- 0Ah WORD pointer to previous TCB
- 0Ch WORD pointer to associated TCB (if applicable)
- 0Eh WORD reserved
- ---TFB---
- 10h WORD segment address of next TFB
- 12h WORD segment address of previous TFB
- 14h WORD segment address of TFB's Global File Block (see #04011)
- 16h WORD segment address of owner's PSP
- 18h WORD file handle
- 1Ah 3 BYTEs ???
- 1Dh DWORD file position
- 21h 4 BYTEs ???
- 25h BYTE IOCTL flags (see #04010)
- 26h 2 BYTEs ???
- Bitfields for PC-MOS/386 IOCTL flags:
- Bit(s) Description (Table 04010)
- 0 stdin
- 1 stdout
- 2 null device
- 3 clock device
- 4 reserved
- 5 ASCII mode instead of binary
- 6 EOF encountered on input
- 7 device rather than file
- Format of PC-MOS/386 Global File Block:
- Offset Size Description (Table 04011)
- 00h BYTE signature byte "H" if allocated from system memory pool
- 01h BYTE header block ID, "G" = global file block
- 02h WORD length of block in paragraphs
- 04h WORD segment address of next header block (0000h if last)
- 06h WORD segment address of previous header block (0000h if first)
- 08h WORD pointer to next TCB
- 0Ah WORD pointer to previous TCB
- 0Ch WORD pointer to associated TCB (if applicable)
- 0Eh WORD reserved
- ---GFB---
- 10h 10 BYTEs ???
- 1Ah WORD file attribute
- 1Ch BYTE ???
- 1Dh DWORD address of device driver
- 21h WORD first cluster
- 23h WORD time of last modification
- 25h WORD date of last modification
- 27h DWORD size of file in bytes
- 2Bh 11 BYTEs ???
- 36h 11 BYTEs device name or FCB-format filename
- 41h WORD segment address of TFB list
- 43h WORD segment address of first RLB (see #04014) (0000h = none)
- 45h BYTE flag: nonzero if GFB refers to character device
- 46h WORD address of Block Device Block (see #04013)
- 48h WORD sector of file's directory entry (see #01352)
- 4Ah WORD high word of file's directory entry
- 4Ch WORD ofsset of directory entry within sector
- Format of PC-MOS/386 Current Directory Block:
- Offset Size Description (Table 04012)
- 00h BYTE signature byte "H" if allocated from system memory pool
- 01h BYTE header block ID, "C" = current directory block
- 02h WORD length of block in paragraphs
- 04h WORD segment address of next header block (0000h if last)
- 06h WORD segment address of previous header block (0000h if first)
- 08h WORD pointer to next TCB
- 0Ah WORD pointer to previous TCB
- 0Ch WORD pointer to associated TCB (if applicable)
- 0Eh WORD reserved
- ---CDB---
- 10h BYTE drive number
- 11h BYTE ???
- 12h 64 BYTEs directory name
- 52h WORD first directory cluster (0000h = root)
- Format of PC-MOS/386 Block Device Block:
- Offset Size Description (Table 04013)
- 00h BYTE signature byte "H" if allocated from system memory pool
- 01h BYTE header block ID, "B" = block device block
- 02h WORD length of block in paragraphs
- 04h WORD segment address of next header block (0000h if last)
- 06h WORD segment address of previous header block (0000h if first)
- 08h WORD pointer to next TCB
- 0Ah WORD pointer to previous TCB
- 0Ch WORD pointer to associated TCB (if applicable)
- 0Eh WORD reserved
- ---BDB---
- 10h BYTE logical drive
- 11h BYTE unit passed to driver
- 12h WORD sector size
- 14h BYTE cluster mask
- 15h BYTE cluster shift count
- 16h WORD starting sector of first FAT
- 18h BYTE number of FATs
- 19h WORD number of root directories
- 1Bh WORD sector number of first data sector (cluster 0002h)
- 1Dh WORD number of clusters + 1 (number of highest data cluster)
- 1Fh BYTE number of sectors in FAT
- 20h WORD beginning root directory sector number
- 22h DWORD device driver address
- 26h BYTE media descriptor byte
- 27h 5 BYTEs ???
- 2Ch BYTE flag: volume > 32MB
- 2Dh BYTE ???
- 2Eh BYTE number of sectors per cluster
- 2Fh WORD number of clusters on device
- 31h WORD number of free clusters (FFFFh = unknown)
- 33h WORD root directory cluster number
- 35h WORD pointer to alias/subst string
- 37h WORD TCB segment address of owner (0000h = none)
- Format of PC-MOS/386 Record Lock Block:
- Offset Size Description (Table 04014)
- 00h BYTE signature byte "H" if allocated from system memory pool
- 01h BYTE header block ID, "R" = record lock block
- 02h WORD length of block in paragraphs
- 04h WORD segment address of next header block (0000h if last)
- 06h WORD segment address of previous header block (0000h if first)
- 08h WORD pointer to next TCB
- 0Ah WORD pointer to previous TCB
- 0Ch WORD pointer to associated TCB (if applicable)
- 0Eh WORD reserved
- ---RLB---
- 10h WORD segment address of owner's PSP
- 12h WORD segment address of Global File Block (see #04011)
- 14h WORD segment address of owner's Task File Block (see #04009)
- 16h DWORD file offset of locked region start
- 1Ah DWORD length of locked region
- 1Eh WORD owner's handle for file
- --------O-D407-------------------------------
- INT D4 - PC-MOS/386 v3.0+ - WAIT FOR EVENT
- AH = 07h
- AL = events to monitor (see #04015)
- BX = number of timer ticks until timeout if AL bit 1 set
- CX = bitmap of IRQs to monitor if AL bit 2 set
- (bit 0 = IRQ0 .. bit 15 = IRQ15)
- DX = port to monitor if AL bit 3 set
- Return: CF clear if successful
- AL = type of event which woke up task (see #04015)
- CX = IRQ (if any) which awakened task
- DX = port (if any) which awakened task
- CF set on error
- AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
- Note: a device driver may make this call with AL=00h, which indicates that
- the driver is responsible for setting and clearing the TCBWAIT field
- in the TCB. To put task to sleep, set TCBWAIT bits 2-0 to 001; to
- reawaken it, set bit 1 (leaving other bits unchanged)
- SeeAlso: AH=04h,INT 16/AH=00h,INT 38
- Bitfields for PC-MOS/386 events to monitor:
- Bit(s) Description (Table 04015)
- 0 keystroke
- 1 timeout
- 2 IRQ
- 3 port access
- 7 return status of user poll routine (other ignored if set)
- --------O-D410-------------------------------
- INT D4 - PC-MOS/386 v3.0+ - ENTER/LEAVE NATIVE 386 EXECUTION MODE
- AH = 10h
- AL = direction (00h return to V86 mode, 01h enter native mode)
- CX = length in bytes of Native Context Area ( >=1024 )
- DX = segment of Native Context Area
- Return: CF clear if successful
- running in desired mode at instruction following INT D4 call
- all segment registers converted to appropriate selectors/segments
- CF set on error
- AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
- Note: MS-DOS calls are available in protected mode
- SeeAlso: AH=11h,AH=12h,AH=13h,INT 2F/AX=1687h,INT 67/AX=DE0Ch,INT 38
- --------O-D411-------------------------------
- INT D4 - PC-MOS/386 v3.0+ - ALLOCATE NATIVE MODE MEMORY BLOCK
- AH = 11h
- EBX = block length in bytes
- Return: CF clear if successful
- EBX = number of bytes actually allocated
- ES = selector for allocated block
- CF set on error
- AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
- Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
- system by The Software Link, Inc.
- Note: the memory must be released before the program terminates
- SeeAlso: AH=10h,AH=12h,INT 38
- --------O-D412-------------------------------
- INT D4 - PC-MOS/386 v3.0+ - FREE NATIVE MODE MEMORY BLOCK
- AH = 12h
- ES = selector for block to free
- Return: CF clear if successful
- CF set on error
- AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
- SeeAlso: AH=10h,AH=11h,AH=13h,INT 38
- --------O-D413-------------------------------
- INT D4 - PC-MOS/386 v5.01 - GET ALIAS FOR SELECTOR (NATIVE MODE ONLY)
- AH = 13h
- AL = type of alias selector (00h data, 01h stack, 02h code)
- BX = selector
- Return: CF clear if successful
- AX = new selector or 0000h if BX selector not found
- CF set on error
- AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
- SeeAlso: AH=11h,AH=12h
- --------O-D416-------------------------------
- INT D4 - PC-MOS/386 v5.01 - SET/CLEAR IRQ RESERVATION
- AH = 16h
- AL = function (00h clear, 01h set reservation)
- CX = IRQ number
- Return: AX = status
- (0000h successful, 0001h currently reserved by another task)
- SeeAlso: AH=07h,INT 14/AH=11h"PC-MOS"
- --------O-D419-------------------------------
- INT D4 - PC-MOS/386 v5.01 - GET TASK ID
- AH = 19h
- Return: BX = caller's task ID
- Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
- system by The Software Link, Inc.
- SeeAlso: AH=1Dh,AH=1Eh
- --------O-D41A-------------------------------
- INT D4 - PC-MOS/386 v5.01 - GET/SET TASK PRIORITY
- AH = 1Ah
- AL = subfunction (00h read, 01h set, 02h get and set)
- BX = task ID (FFFFh for current task)
- CL = new priority value
- Return: CF clear if successful
- CL = current priority value
- CF set on error
- AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
- SeeAlso: AH=1Bh,AH=1Ch
- --------O-D41B-------------------------------
- INT D4 - PC-MOS/386 v5.01 - GET/SET TIME SLICE
- AH = 1Bh
- AL = subfunction (00h read, 01h set, 02h get and set)
- BX = task ID (FFFFh for current task) (see AH=19h)
- CL = new time slice value
- Return: CF clear if successful
- CL = current time slice value
- CF set on error
- AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
- SeeAlso: AH=1Ah,AH=1Ch
- --------O-D41C-------------------------------
- INT D4 - PC-MOS/386 v5.01 - GET/SET KEYBOARD MODE
- AH = 1Ch
- AL = subfunction (00h enable, 01h disable, 02h get mode)
- BX = task ID (FFFFh for current task)
- Return: CF clear if successful
- CL = current keyboard state
- CF set on error
- AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
- Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
- system by The Software Link, Inc.
- SeeAlso: AH=1Ah,AH=1Bh
- --------O-D41D-------------------------------
- INT D4 - PC-MOS/386 v5.01 - GET CURRENT PROGRAM NAME
- AH = 1Dh
- BX = task ID (FFFFh for current task) (see AH=19h)
- ES:DI -> buffer for program name (see #04016)
- Return: CF clear if successful
- ES:DI buffer filled
- CF set on error
- AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
- SeeAlso: AH=19h,AH=1Eh
- Format of PC-MOS/386 program name buffer:
- Offset Size Description (Table 04016)
- 00h 8 BYTEs filename
- 08h 3 BYTEs extension
- --------O-D41E-------------------------------
- INT D4 - PC-MOS/386 v5.01 - GET CURRENT USERNAME AND SECURITY CLASS
- AH = 1Eh
- BX = task ID (FFFFh for current task)
- ES:DI -> 4-byte buffer for username
- Return: CF clear if successful
- CL = security class
- 20h (' ') none
- 41h-5Ah ('A'-'Z') security level
- ES:DI buffer filled
- CF set on error
- AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
- SeeAlso: AH=19h,AH=1Dh
- --------O-D41F-------------------------------
- INT D4 - PC-MOS/386 v5.01 - GET TASK PARTITION INFORMATION
- AH = 1Fh
- BX = task ID (FFFFh for current task) (see AH=19h)
- Return: CF clear if successful
- CX = start segment of task
- DX = ending segment of task
- CF set on error
- AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
- Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
- system by The Software Link, Inc.
- SeeAlso: AH=2Dh
- --------O-D420-------------------------------
- INT D4 - PC-MOS/386 v5.01 - GET PORT AND BAUDRATE INFORMATION
- AH = 20h
- BX = task ID (FFFFh for current task) (see AH=19h)
- Return: CF clear if successful
- CX = port number (0000h if none)
- DI:SI = baudrate (if CX nonzero)
- CF set on error
- AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
- SeeAlso: INT 14/AH=0Ch"FOSSIL"
- --------O-D421-------------------------------
- INT D4 - PC-MOS/386 v5.01 - REMOVE A TASK
- AH = 21h
- BX = task ID (FFFFh for current task) (see AH=19h)
- Return: CF clear if successful
- AX = ASCII percentage of System Memory Pool used
- (AH = tens digit, AL = ones digit)
- DS,SI destroyed
- CF set on error
- AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
- Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
- system by The Software Link, Inc.
- SeeAlso: AH=22h
- --------O-D422-------------------------------
- INT D4 - PC-MOS/386 v5.01 - ADD A TASK TO THE SYSTEM
- AH = 22h
- DS:SI -> addtask data structure (see #04018)
- Return: CF clear if successful
- ES = segment address of the new task's TCB data structure
- CF set on error
- AX = error code (see #04017)
- SeeAlso: AH=21h
- (Table 04017)
- Values for PC-MOS/386 error code:
- 08h insufficient memory
- 0Bh invalid addtask structure format
- 12h insufficient available space in system memory pool
- 1Fh general failure
- 55h already allocated
- 57h if task already in use or invalid parameter
- Format of PC-MOS/386 addtask data structure:
- Offset Size Description (Table 04018)
- 00h WORD task size in KB (min 16KB)
- 02h WORD task ID (0000h for automatic selection)
- 04h BYTE task class (' ' or 'A'-'Z')
- 05h DWORD -> ASCIZ name of task startup batchfile
- 09h DWORD -> task's terminal driver (0000000h = background task)
- 0Dh WORD task port
- 0Fh DWORD task baud rate
- 13h DWORD (ret) total extended memory
- 17h DWORD (ret) number of 4K extended memory pages allocated
- 1Bh WORD (ret) paragraphs of system memory pool allocated
- 1Dh WORD (ret) system memory pool size in paragraphs
- 1Fh WORD (ret) ASCII task percentage of system memory pool
- 21h 3 BYTEs reserved
- --------O-D423-------------------------------
- INT D4 - PC-MOS/386 v5.01 - CHANGE TERMINAL DRIVER
- AH = 23h
- BX = task ID (FFFFh for current task)
- DS:SI -> entry point of the new Device Driver Terminal
- Return: CF clear if successful
- CF set on error
- AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
- --------O-D424-------------------------------
- INT D4 U - PC-MOS/386 v5.01 - GET OPERATING SYSTEM SERIAL NUMBER
- AH = 24h
- Return: DS:DX -> '$'-terminated string containing the serial number
- --------O-D425-------------------------------
- INT D4 - PC-MOS/386 v5.01 - IDENTIFY LOAD ADDRESS OF DEVICE DRIVER LOCATION
- AH = 25h
- DX = driver's CS value
- Return: AX = segment address of driver in system memory pool
- (0000h if the driver is not within the system memory pool)
- Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
- system by The Software Link, Inc.
- --------O-D426-------------------------------
- INT D4 - PC-MOS/386 v5.01 - GET SYSTEM CONTROL BLOCK SEGMENT/SELECTOR
- AH = 26h
- Return: DX = segment/selector of the System Control Block (see #04004)
- Note: this function supersedes AH=02h
- SeeAlso: AH=02h,AH=27h,AH=28h,AH=29h,AH=2Ah
- --------O-D427-------------------------------
- INT D4 - PC-MOS/386 v5.01 - GET TASK CONTROL BLOCK SEGMENT/SELECTOR
- AH = 27h
- BX = task ID (FFFFh if current task) (see AH=19h)
- Return: CF clear if successful
- DX = segment/selector for the Task Control Block (see #04006)
- CF set on error
- AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
- Note: this function supersedes AH=04h
- SeeAlso: AH=26h,AH=28h,AH=29h,AH=2Ah
- --------O-D428-------------------------------
- INT D4 - PC-MOS/386 v5.01 - GET CONTROL BLOCK DATA FROM SCB OR TCB
- AH = 28h
- BX = offset into control block at which to start reading
- CX = number of bytes to read
- DX = segment/selector of control block obtained via AH=26h or AH=27h
- ES:DI -> buffer for data
- Return: CF clear if successful
- CF set on error
- AX = error code (see also #01680 at INT 21/AH=59h/BX=0000h)
- 05h access denied due to an invalid segment/selector
- SeeAlso: AH=26h,AH=27h,AH=29h,AH=2Ah
- --------O-D429-------------------------------
- INT D4 - PC-MOS/386 v5.01 - WRITE CONTROL BLOCK DATA INTO SCB OR TCB
- AH = 29h
- BX = offset into control block at which to start writing
- CX = number of bytes to write
- DX = segment/selector of control block obtained via AH=26h or AH=27h
- DS:SI -> buffer containing data to be written
- Return: CF clear if successful
- CF set on errro
- AX = error code (see also #01680 at INT 21/AH=59h/BX=0000h)
- 05h access denied due to an invalid segment/selector
- Note: this function performs no bounds checking
- Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
- system by The Software Link, Inc.
- SeeAlso: AH=26h,AH=27h,AH=28h,AH=2Ah
- --------O-D42A-------------------------------
- INT D4 - PC-MOS/386 v5.01 - SWAP CONTROL BLOCK DATA OF SCB OR TCB
- AH = 2Ah
- BX = offset into control block at which to start swap
- CX = number of bytes to swap
- DX = segment/selector of control block obtained via AH=26h or AH=27h
- DS:SI -> buffer containing new data and to receive current data
- Return: CF clear if successful
- CF set on error
- AX = error code (see also #01680 at INT 21/AH=59h/BX=0000h)
- 05h access denied due to an invalid segment/selector
- Note: the interrupts are disabled during the swap to prevent corruption
- SeeAlso: AH=26h,AH=27h,AH=28h,AH=29h
- --------O-D42C-------------------------------
- INT D4 - PC-MOS/386 v5.01 - GET/SET SPOOLER PARAMETERS
- AH = 2Ch
- AL = function
- 00h set spooler timeout
- CX = timout value in seconds
- 01h get spooler timeout
- Return: CX = current timeout in seconds
- 02h get spooler parameters
- Return: CH = priority (00h-09h)
- CL = disposition (d, h, i, n, s)
- SI = class (a - z)
- 03h set spooler parameters
- CH = priority (00h-09h)
- CL = disposition (d, h, i, n, s)
- SI = class (a - z)
- BX = task ID (FFFFh for current task)
- DX = LPT number
- Return: CF clear if successful
- CF set on error
- AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
- SeeAlso: AH=00h,AH=02h,AH=03h
- --------O-D42D-------------------------------
- INT D4 - PC-MOS/386 v5.01 - GET MAXIMUM TASK SIZE
- AH = 2Dh
- Return: DX = maximum task size in paragraphs
- BX = start address of task space
- Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
- system by The Software Link, Inc.
- SeeAlso: AH=1Fh,AH=22h
- --------r-D5---------------------------------
- INT D5 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT D4"BASIC",INT D6"BASIC"
- --------r-D5---------------------------------
- INT D5 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
- --------r-D6---------------------------------
- INT D6 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT D5"BASIC",INT D7"BASIC"
- --------r-D6---------------------------------
- INT D6 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
- --------r-D7---------------------------------
- INT D7 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT D6"BASIC",INT D8"BASIC"
- --------r-D7---------------------------------
- INT D7 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
- --------r-D8---------------------------------
- INT D8 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT D7"BASIC",INT D9"BASIC"
- --------r-D8---------------------------------
- INT D8 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
- --------H-D8---------------------------------
- INT D8 - Screen Thief v1.00 - RELOCATED IRQ0
- Range: INT 78h to INT E0h, selected by commandline switch
- Note: Screen Thief relocates IRQs 0 through 7 to INT D8 to INT DF by default,
- but may be directed via a commandline switch to use any range
- starting at a multiple of 8 between 78h and E0h
- SeeAlso: INT 08"IRQ0",INT 2D/AL=10h"Screen Thief",INT 50"DESQview"
- SeeAlso: INT D9"Screen Thief"
- --------r-D9---------------------------------
- INT D9 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT D8"BASIC",INT DA"BASIC"
- --------r-D9---------------------------------
- INT D9 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
- --------H-D9---------------------------------
- INT D9 - Screen Thief v1.00 - RELOCATED IRQ1
- Range: INT 79h to INT E1h, selected by commandline switch
- Note: (see INT D8"Screen Thief")
- SeeAlso: INT 09"IRQ1",INT D8"Screen Thief",INT DA"Screen Thief"
- --------r-DA---------------------------------
- INT DA - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT D9"BASIC",INT DB"BASIC"
- --------r-DA---------------------------------
- INT DA - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
- --------H-DA---------------------------------
- INT DA - Screen Thief v1.00 - RELOCATED IRQ2
- Range: INT 7Ah to INT E2h, selected by commandline switch
- Note: (see INT D8"Screen Thief")
- SeeAlso: INT 0A"IRQ2",INT D9"Screen Thief",INT DB"Screen Thief"
- --------r-DB---------------------------------
- INT DB - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT DA"BASIC",INT DC"BASIC"
- --------r-DB---------------------------------
- INT DB - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
- --------H-DB---------------------------------
- INT DB - Screen Thief v1.00 - RELOCATED IRQ3
- Range: INT 7Bh to INT E3h, selected by commandline switch
- Note: (see INT D8"Screen Thief")
- SeeAlso: INT 0B"IRQ3",INT DA"Screen Thief",INT DC"Screen Thief"
- --------u-DC---------------------------------
- INT DC - PC/370 v4.1- - API
- SeeAlso: INT 60"PC/370"
- --------r-DC---------------------------------
- INT DC - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT DB"BASIC",INT DD"BASIC"
- --------r-DC---------------------------------
- INT DC - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
- --------H-DC---------------------------------
- INT DC - Screen Thief v1.00 - RELOCATED IRQ4
- Range: INT 7Ch to INT E4h, selected by commandline switch
- Note: (see INT D8"Screen Thief")
- SeeAlso: INT 0C"IRQ4",INT DB"Screen Thief",INT DD"Screen Thief"
- --------r-DD---------------------------------
- INT DD - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT DC"BASIC",INT DE"BASIC"
- --------r-DD---------------------------------
- INT DD - STSC APL*PLUS/PC v9.0 - PLACE KEYSTROKE EVENTS IN INPUT BUFFER
- BX = where to place keystrokes
- FFFFh insert before current buffer contents
- 0000h replace current contents
- 0001h insert after current contents
- CX = number of keystroke events to insert
- ES:SI -> data to be placed into buffer (list of WORD key codes)
- 4000h + N = normal ASCII keystroke N (N = 00h to FFh)
- 4100h + N = extended ASCII keystroke N (N = 03h to 84h)
- Return: nothing
- SeeAlso: INT 16/AH=05h
- --------H-DD---------------------------------
- INT DD - Screen Thief v1.00 - RELOCATED IRQ5
- Range: INT 7Dh to INT E5h, selected by commandline switch
- Note: (see INT D8"Screen Thief")
- SeeAlso: INT 0D"IRQ5",INT DC"Screen Thief",INT DE"Screen Thief"
- --------r-DE---------------------------------
- INT DE - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT DD"BASIC",INT DF"BASIC"
- --------r-DE---------------------------------
- INT DE - APL*PLUS/PC - ???
- Note: appears to be the same as INT 16
- --------H-DE---------------------------------
- INT DE - Screen Thief v1.00 - RELOCATED IRQ6
- Range: INT 7Eh to INT E6h, selected by commandline switch
- Note: (see INT D8"Screen Thief")
- SeeAlso: INT 0E"IRQ6",INT DD"Screen Thief",INT DF"Screen Thief"
- --------b-DF---------------------------------
- INT DF - Victor 9000/Sirius 1 - SuperBIOS
- SeeAlso: INT 21/AH=EAh"NetWare"
- --------r-DF---------------------------------
- INT DF - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT DE"BASIC",INT E0"BASIC"
- --------r-DF---------------------------------
- INT DF - APL*PLUS/PC - SAME AS INT 10
- SeeAlso: INT 10/AH=00h,INT 10/AH=0Eh
- --------H-DF---------------------------------
- INT DF - Screen Thief v1.00 - RELOCATED IRQ7
- Range: INT 7Fh to INT E7h, selected by commandline switch
- Note: (see INT D8"Screen Thief")
- SeeAlso: INT 0F"IRQ7",INT DE"Screen Thief"
- --------r-E0---------------------------------
- INT E0 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT 80"BASIC",INT DF"BASIC",INT E1"BASIC"
- --------r-E0---------------------------------
- INT E0 - APL*PLUS/PC - RESTIME HIGH-RESOLUTION TIMER FOR QUAD MF FUNCTION
- SeeAlso: INT CF"APL"
- --------v-E0---------------------------------
- INT E0 - VIRUS - "Micro-128" - ???
- Note: Micro-128 also overwrites the upper half of the interrupt table
- SeeAlso: INT 9E"VIRUS",INT F1"VIRUS"
- ----------E0---------------------------------
- INT E0 - DeskMate (Tandy) - DESK EXECUTIVE API
- AX = function code (numerous)
- parameters passed in BX, DX, ES, DI, and/or BP
- Return: AX = return from function
- Program: DeskMate is a proprietary GUI from Tandy distributed with several
- models of the Tandy 1000's, 2500's, 3000's, and laptops. Retail
- and runtime versions also exist. Some Tandy's are designed to
- boot directly into DeskMate.
- SeeAlso: INT 15/AX=7002h,INT E1"DeskMate"
- --------O-E0---------------------------------
- INT E0 - CP/M-86, Concurrent CP/M, DR Multiuser DOS - FUNCTION CALLS
- CL = function number (see #04019,#04020)
- DS,DX contain parameter(s):
- DL = byte parameter
- DX = word parameter
- DS:DX -> structure
- Return: as appropriate for function:
- AL = byte result
- AX = word
- ES:AX -> structure (and BX=ES)
- CX is often the error code (see #04021)
- Notes: several functions are covered in more detail in following entries
- most of these calls are also supported by Digital Research's DOS Plus
- v2.1; the unsupported functions are 26h,29h-2Bh,3Ah,3Dh-62h,71h-8Ch,
- 90h-92h,94h-97h,9Bh-ABh, and AEh-FFh
- SeeAlso: INT 21/AX=4459h,INT 21/AH=E0h"DOS Plus",INT E6"CP/M-86"
- (Table 04019)
- Values for CP/M-86,DR Multiuser DOS function number:
- 00h terminate calling process (see INT E0/CL=00h)
- 01h read a character (see INT E0/CL=01h)
- 02h write character to default console (see INT E0/CL=02h)
- 03h read character from default AUX (see INT E0/CL=03h)
- 04h write character to default AUX (see INT E0/CL=04h)
- 05h write character to default list device (see INT E0/CL=05h)
- 06h perform raw I/O on default console (see INT E0/CL=06h)
- 07h return default AUX input status (see INT E0/CL=07h)
- 08h return default AUX output status (see INT E0/CL=08h)
- 09h write string to default console (see INT E0/CL=09h)
- 0Ah read string from default console (see INT E0/CL=0Ah)
- 0Bh return default console input status (see INT E0/CL=0Bh)
- 0Ch get BDOS release ID (see INT E0/CL=0Ch)
- 0Dh reset all disk drives (see also INT 21/AH=0Dh)
- 0Eh set default drive (see also INT 21/AH=0Eh"DOS 1+")
- 0Fh open file via FCB (see also INT 21/AH=0Fh,#01345)
- 10h close file via FCB (see also INT 21/AH=10h)
- 11h search for first matching file with FCB (see also INT 21/AH=11h)
- 12h search for next matching file with FCB (see also INT 21/AH=12h)
- 13h delete file via FCB (see also INT 21/AH=13h)
- 14h sequential read via FCB (see also INT 21/AH=14h)
- 15h sequential write via FCB (see also INT 21/AH=15h)
- 16h create file via FCB (see also INT 21/AH=16h)
- 17h rename file via FCB (see also INT 21/AH=17h)
- 18h get bit map of logged drives
- 19h get default drive (see also INT 21/AH=19h)
- 1Ah set DMA address offset
- 1Bh get default disk allocation vector (see also INT 21/AH=1Bh)
- 1Ch set default drive to read-only
- 1Dh get bit map of read-only drives
- 1Eh set file attributes via FCB (see also INT 21/AX=4301h)
- 1Fh get address of disk parameter block (see also INT 21/AH=1Fh)
- 20h get/set default user number
- 21h read random record via FCB (see also INT 21/AH=21h)
- 22h write random record via FCB (see also INT 21/AH=22h)
- 23h compute file size with FCB (see also INT 21/AH=23h)
- 24h get FCB random record number (see also INT 21/AH=24h)
- 25h reset specified drives
- 26h access specified drives (not in DR DOS Plus v2.1)
- 27h free specified drives
- 28h write random with FCB, zero fill (see also INT 21/AH=28h)
- 2Ah lock records in FCB file (see also INT 21/AH=5Ch)
- 2Bh unlock records in FCB file (see also INT 21/AH=5Ch)
- 2Ch set BDOS multisector count
- 2Dh set BDOS error mode
- 2Eh get free space on disk
- 2Fh load, initialize, and jump to process ("chain process")
- (see INT E0/CL=2Fh,INT 21/AH=4Bh)
- 30h flush write-deferred buffers
- 31h get/set system variable (DOS Plus v2.1)
- 32h call BIOS (XIOS) character routine (see #04020)
- 33h set DMA address segment
- 34h get DMA buffer address
- 35h CP/M-86 allocate maximum memory (see INT E0/CL=35h)
- 36h allocate maximum memory at specified segment (see INT E0/CL=36h)
- 37h CP/M-86 allocate memory segment (see INT E0/CL=37h,INT 21/AH=48h)
- 38h allocate memory at specified segment (see INT E0/CL=38h)
- 39h CP/M-86 free specified memory segment (see INT E0/CL=39h,INT 21/AH=49h)
- 3Ah CP/M-86 free all memory (not in DOS Plus v2.1) (see INT E0/CL=3Ah)
- 3Bh load .CMD file into memory (see INT E0/CL=3Bh)
- 3Ch (DOS Plus v2.1) call RSX program
- 40h (DR-NET, REAL/32) log on a server (see INT E0/CL=40h)
- 41h (DR-NET, REAL/32) log off a server (see INT E0/CL=41h)
- 42h (DR-NET) send a message
- 43h (DR-NET) receive a message
- 44h (DR-NET, REAL/32) get network status (see INT E0/CL=44h)
- 45h (DR-NET, REAL/32) get requestor config table (see INT E0/CL=45h)
- 46h (DR-NET) set compatibility attributes
- 47h (DR-NET, REAL/32) get server configuration table (see INT E0/CL=47h)
- 48h (DR-NET, REAL/32) set network error mode (see INT E0/CL=48h)
- 49h (DR-NET, REAL/32) attach network
- 4Ah (DR-NET, REAL/32) detach network
- 4Bh (DR-NET, REAL/32) set default password
- 4Ch (DR-NET, REAL/32) get-set long timeout
- 4Dh (DR-NET, REAL/32) get parameter table
- 4Fh (REAL/32) get extended network error
- 50h (DR-NET, REAL/32) get network information
- 53h get current time (see also INT 21/AH=2Ch)
- 54h set current time (see also INT 21/AH=2Dh)
- 55h get binary system date (see also INT 21/AH=2Ah)
- 56h set system date (see also INT 21/AH=2Bh"DATE")
- 57h allocate system flag
- 58h deallocate system flag
- 59h reserve memory in global area (see INT E0/CL=59h)
- 5Ah lock physical drive
- 5Bh unlock physical drive
- 5Ch search path for executable file (see INT E0/CL=5Ch)
- 5Dh load and execute command (see INT E0/CL=5Dh)
- 5Eh get/set process exit code (see INT E0/CL=5Eh)
- 5Fh set country information
- 60h get country information
- 63h truncate FCB file (see also INT 21/AH=28h)
- 64h create/update directory label
- 65h get directory label
- 66h get FCB date stamp and password mode
- 67h write extended FCB
- 68h set system date and time
- 69h get system date and time in binary
- 6Ah establish password for file access
- 6Bh get OS serial number (see INT E0/CL=6Bh)
- 6Ch (DOS Plus v2.1) get/set program return code
- 6Dh get/set console mode (see INT E0/CL=6Dh)
- 6Eh get/set string delimiter (see INT E0/CL=6Eh)
- 6Fh write block to default console (see INT E0/CL=6Fh)
- 70h write block to default list device (see INT E0/CL=70h)
- 71h execute DOS-compatible function (see INT E0/CL=71h)
- 74h set FCB time and date stamps
- 80h allocate memory (see INT E0/CL=80h)
- 82h deallocate memory (see INT E0/CL=81h)
- 83h poll I/O device
- 84h wait on system flag (see INT E0/CL=84h)
- 85h set system flag (see INT E0/CL=85h)
- 86h create message queue (see INT E0/CL=86h)
- 87h open message queue (see INT E0/CL=87h)
- 88h delete message queue (see INT E0/CL=88h)
- 89h read from message queue (see INT E0/CL=89h)
- 8Ah conditionally read from message queue (see INT E0/CL=8Ah)
- 8Bh write to message queue (see INT E0/CL=8Bh)
- 8Ch conditionally write to message queue (see INT E0/CL=8Ch)
- 8Dh delay calling process (see INT E0/CL=8Dh)
- 8Eh call process dispatcher (yield CPU) (see INT E0/CL=8Eh)
- 8Fh terminate calling process (same as func 00h) (see INT E0/CL=8Fh)
- 90h create a process (see INT E0/CL=90h)
- 91h set calling process' priority (see INT E0/CL=91h)
- 92h attach to default console (see INT E0/CL=92h)
- 93h detach from default console (see INT E0/CL=93h)
- 94h (REAL/32) set the process' default console (see INT E0/CL=94h)
- 95h assign default console to process (see INT E0/CL=95h)
- 96h interpret and execute commandline (see INT E0/CL=96h)
- 97h resident procedure library
- 98h parse ASCII string into FCB (see also INT 21/AH=29h)
- 99h return default console (see INT E0/CL=99h)
- 9Ah get address of system data (SYSDAT) (see INT E0/CL=9Ah)
- 9Bh get system time and date
- 9Ch return calling process' descriptor (see INT E0/CL=9Ch)
- 9Dh terminate process by name or PD address (see INT E0/CL=9Dh)
- 9Eh attach to default list device (see INT E0/CL=9Eh)
- 9Fh detach from default list device (see INT E0/CL=9Fh)
- A0h select default list device (see INT E0/CL=A0h)
- A1h conditionally attach to default list device (see INT E0/CL=A1h)
- A2h conditionally attach to default console (see INT E0/CL=A2h)
- A3h get OS version number (see INT E0/CL=A3h)
- A4h get default list device (see INT E0/CL=A4h)
- A5h attach to default AUX (see INT E0/CL=A5h)
- A6h detach from default AUX (see INT E0/CL=A6h)
- A7h conditionally attach to default AUX (see INT E0/CL=A7h)
- A8h set default AUX (see INT E0/CL=A8h)
- A9h return default AUX (see INT E0/CL=A9h)
- ACh read block from default AUX (see INT E0/CL=ACh)
- ADh (DOS Plus v2.1) write block to default AUX (see INT E0/CL=ADh)
- B0h configure default AUX (see INT E0/CL=B0h)
- B1h get/set device control parameters (see INT E0/CL=B1h)
- B2h send Break through default AUX (see INT E0/CL=B2h)
- B3h allocate physical memory (see INT E0/CL=B3h)
- B4h free physical memory (see INT E0/CL=B4h)
- B5h map physical memory (see INT E0/CL=B5h)
- B6h nondestructive conditional message queue read (see INT E0/CL=B6h)
- B7h timed wait on system flag (see INT E0/CL=B7h)
- B8h get/set I/O port mapping (see INT E0/CL=B8h)
- B9h set list device timeout (see INT E0/CL=B9h)
- BAh set AUX timeout value (see INT E0/CL=BAh)
- BBh execute XIOS service
- BDh (DR Multiuser DOS) delay (see INT E0/CL=BDh)
- FFh return 80386 to native mode
- SeeAlso: #04020,#04021
- (Table 04020)
- Values for DOS Plus v2.1 XIOS functions:
- 00h terminate program
- 01h ???
- 02h check for console input status
- 03h read character from console
- 04h write character to console
- 05h write character to list device
- 06h write character to auxiliary device
- 07h read character from auxiliary device
- 0Fh get list device status
- 10h-14h reserved
- 15h device initialization
- 16h check console output status
- 17h-7Fh reserved
- ---BBC Acorn---
- 80h get XIOS version
- 81h get Tube semaphore
- 82h release Tube semaphore
- 83h select text/graphics
- 84h update B&W graphics rectangle
- 85h update color graphics rectangle
- 86h get/release/update mouse
- 87h get system error info
- 88h entry in CLOCK called by WatchDog RSP
- 89h BBC OSBYTE function
- 8Ah BBC OSWORD function
- SeeAlso: #04019
- (Table 04021)
- Values for DR Multiuser DOS Error Return Code:
- 00h no error
- 01h system call not implemented
- 02h illegal system call number
- 03h cannot find memory
- 04h illegal flag number
- 05h flag overrun
- 06h flag underrun
- 07h no unused Queue Descriptors
- 08h no free queue buffer
- 09h cannot find queue
- 0Ah queue in use
- 0Ch no free Process Descriptors
- 0Dh no queue access
- 0Eh empty queue
- 0Fh full queue
- 10h CLI queue missing
- 11h no 8087 in system
- 12h no unused Memory Descriptors
- 13h illegal console number
- 14h no Process Descriptor match
- 15h no console match
- 16h no CLI process
- 17h illegal disk number
- 18h illegal filename
- 19h illegal filetype
- 1Ah character not ready
- 1Bh illegal Memory Descriptor
- 1Ch bad return from BDOS load
- 1Dh bad return from BDOS read
- 1Eh bad return from BDOS open
- 1Fh null command
- 20h not owner of resource
- 21h no CSEG in load file
- 22h process Descriptor exists on Thread Root
- 23h could not terminate process
- 24h cannot attach to process
- 25h illegal list device number
- 26h illegal password
- 28h external termination occurred
- 29h fixup error upon load
- 2Ah flag set ignored
- 2Bh illegal auxilliary device number
- SeeAlso: #04019
- --------O-E0----CL00-------------------------
- INT E0 - REAL/32 - "P_TERMCPM" - TERMINATE CALLING PROCESS
- CL = 00h
- Return: AX = error code
- FFFFh on failure
- may destroy SI,DI???
- Program: REAL/32 is the descendant of IMS Multiuser DOS, which in turn is
- derived from DR Multiuser DOS and its predecessors (Concurrent DOS,
- etc.)
- Note: sets the exit code (ERRORLEVEL) to 00h
- SeeAlso: INT 21/AH=00h
- --------O-E0----CL01-------------------------
- INT E0 - REAL/32 - "C_READ" - FETCH CHARACTER FROM THE DEFAULT CONSOLE
- CL = 01h
- Return: AX = character
- may destroy SI,DI???
- Notes: this function echos the character to the screen, expanding Tab
- characters to the next multiple of eight columns; Ctrl-C is
- ignored if the calling process can not terminate
- the calling process is suspended until a character is available; if
- the caller does not own the console, it is suspended until it
- can attach to the console
- SeeAlso: INT E0/CL=02h,INT E0/CL=06h,INT 21/AH=01h
- --------O-E0----CL02-------------------------
- INT E0 - REAL/32 - "C_WRITE" - WRITE CHARACTER TO DEFAULT CONSOLE
- CL = 02h
- DX = character
- Return: nothing
- may destroy SI,DI???
- Note: Tab characters are expanded to blanks up to the next multiple of
- eight columns
- SeeAlso: INT E0/CL=01h,INT E0/CL=06h,INT 21/AH=02h
- --------O-E0----CL03-------------------------
- INT E0 - DR Multiuser DOS - "A_READ" - READ CHARACTER FROM DEFAULT AUX DEVICE
- CL = 03h
- Return: AL = ASCII character
- may destroy SI,DI???
- Notes: A_READ reads the next 8-bit character from the logical auxilliary
- input device (AUXn:); control is not returned to the calling
- process until a character has been read.
- if another process owns AUX, this call blocks until the device becomes
- available
- this function is also supported by REAL/32
- SeeAlso: INT 21/AH=03h,INT E0/CL=04h,INT E0/CL=07h,INT E0/CL=A5h,INT E0/CL=ACh
- --------O-E0----CL04-------------------------
- INT E0 - DR Multiuser DOS - "A_WRITE" - WRITE CHARACTER TO DEFAULT AUX DEVICE
- CL = 04h
- DL = BYTE to write
- Return: nothing
- may destroy SI,DI,DH???
- Note: if another process owns AUX, this call blocks until the device becomes
- available
- SeeAlso: INT 21/AH=04h,INT E0/CL=03h,INT E0/CL=08h,INT E0/CL=A5h,INT E0/CL=ADh
- --------O-E0----CL05-------------------------
- INT E0 - REAL/32 - "L_WRITE" - WRITE CHARACTER TO DEFAULT LIST DEVICE
- CL = 05h
- DL = char to write
- Return: nothing
- may destroy SI,DI???
- Note: if another process owns the list device, this call blocks until the
- device becomes available
- SeeAlso: INT 21/AH=05h
- --------O-E0----CL06-------------------------
- INT E0 - REAL/32 - "C_RAWIO" - PERFORM RAW I/O WITH DEFAULT CONSOLE
- CL = 06h
- DL = mode describing the operation to be performed
- FFh get console input/status
- FEh get console status
- FDh get console input (blocking)
- else output DL to the console as a character
- Return: AX = returned value
- for DL = FFh, the character or 00h if none available
- for DL = FEh, 00h if no characters available, FFh if any available
- for DL = FDh, the character read from the console
- else AX = 0000h
- may destroy SI,DI???
- Notes: during raw I/O, the special characters ^C, ^O, ^P, and ^S are not
- interpreted, but are passed through
- if the virtual console is in ^S mode and the owning process calls
- this function, the ^S state is cleared
- SeeAlso: INT E0/CL=01h,INT E0/CL=02h,INT 21/AH=06h
- --------O-E0----CL07-------------------------
- INT E0 - DR Multiuser DOS - "A_STATIN" - GET INPUT STATUS OF AUX DEVICE
- CL = 07h
- Return: AL = status
- 00h not ready
- FFh character available
- Desc: determine whether the current AUX device has input available
- SeeAlso: INT E0/CL=03h,INT E0/CL=08h
- --------O-E0----CL08-------------------------
- INT E0 - DR Multiuser DOS - "A_STATOUT" - GET OUTPUT STATUS OF AUX DEVICE
- CL = 08h
- Return: AL = status
- 00h not ready
- FFh ready for output
- Desc: determine whether the current AUX device is able to accept more output
- SeeAlso: INT E0/CL=04h,INT E0/CL=07h
- --------O-E0----CL09-------------------------
- INT E0 - REAL/32 - "C_WRITESTR" - WRITE STRING TO DEFAULT CONSOLE
- CL = 09h
- DS:DX -> string
- Return: nothing
- may destroy SI,DI,DS???
- Note: the string terminated with a '$' character (24h) by default; the
- terminator may be changed with C_DELIMIT
- tabs are expanded to the next multiple of eight columns
- SeeAlso: INT E0/CL=6Eh
- --------O-E0----CL0A-------------------------
- INT E0 - REAL/32 - "C_READSTR" - READ STRING FROM DEFAULT CONSOLE
- CL = 0Ah
- DS:DX -> buffer for string (see #04022)
- Return: nothing
- Format of REAL/32 "C_READSTR" buffer:
- Offset Size Description (Table 04022)
- 00h BYTE maximum number of characters buffer can hold
- 01h BYTE actual number of buffers read
- 02h N BYTEs input line
- --------O-E0----CL0B-------------------------
- INT E0 - REAL/32 - "C_STAT" - RETURN DEFAULT CONSOLE INPUT STATUS
- CL = 0Bh
- Return: AX = status
- 0000h no characters ready
- 0001h character available
- may destroy SI,DI???
- Note: after setting bit 0 of the console mode word with C_MODE, this function
- will only return AX=0001h when the user presses Ctrl-C.
- --------O-E0----CL0C-------------------------
- INT E0 - REAL/32 - "S_BDOSVER" - GET BDOS VERSION
- CL = 0Ch
- Return: AX = version (see #04023)
- may destroy SI,DI???
- SeeAlso: INT E0/CL=A3h,INT 21/AX=4451h
- (Table 04023)
- Values for REAL/32 BDOS version:
- 1432h - DR Concurrent PC DOS Version 3.2
- 1441h - DR Concurrent DOS Version 4.1
- 1450h - DR Concurrent DOS/XM Version 5.0
- 1463h - DR Multiuser DOS Release 5.0
- 1465h - DR Multiuser DOS Release 5.01
- 1466h - DR Multiuser DOS Release 5.1, IMS Multiuser DOS Enhanced Release 5.1
- 1467h - IMS Multiuser DOS Version 7.0, 7.1
- 1468h - IMS REAL/32 Version 7.50, 7.51
- 1469h - IMS REAL/32 Version 7.52, 7.53
- 14??h - IMS REAL/32 Version 7.6
- SeeAlso: #01579,#01580,#01581
- --------O-E0----CL2F-------------------------
- INT E0 - REAL/32 - "P_CHAIN" - CHAIN PROCESS
- CL = 2Fh
- [DTA] = ASCIZ command line for process to start
- Return: AX = return code
- 0000h successful
- FFFFh failed
- may destroy SI,DI???
- --------O-E0----CL35-------------------------
- INT E0 R - REAL/32 - "MC_MAX" - CP-M/86 ALLOCATE MAXIMUM MEMORY
- CL = 35h
- DS:DX -> MCB (see #04024)
- Return: AX = status
- may destroy SI,DI,DS???
- SeeAlso: INT E0/CL=39h
- Format of REAL/32 MCB (Memory Control Block):
- Offset Size Description (Table 04024)
- 00h WORD segment address of memory block
- 02h WORD length of block in paragraphs
- 04h BYTE reserved (0)
- --------O-E0----CL36-------------------------
- INT E0 R - REAL/32 - "MC_ABSMAX" - ALLOCATE MAXIMUM MEMORY SEGMENT ABSOLUTE
- CL = 36h
- DS:DX -> MCB (see #04024)
- Return: AX = status
- may destroy SI,DI,DS???
- SeeAlso: INT E0/CL=39h
- --------O-E0----CL37-------------------------
- INT E0 R - REAL/32 - "MC_ALLOC" - CP-M/86 ALLOCATE MEMORY SEGMENT
- CL = 37h
- DS:DX -> MCB (see #04024)
- Return: AX = status
- may destroy SI,DI,DS???
- SeeAlso: INT E0/CL=39h
- --------O-E0----CL38-------------------------
- INT E0 R - REAL/32 - "MC_ABSALLOC" - ALLOCATE MEMORY SEGMENT ABSOLUTE
- CL = 38h
- DS:DX -> MCB (see #04024)
- Return: AX = status
- may destroy SI,DI,DS???
- SeeAlso: INT E0/CL=39h
- --------O-E0----CL39-------------------------
- INT E0 R - REAL/32 - "MC_FREE" - CP-M/86 FREE SPECIFIED MEMORY SEGMENT
- CL = 39h
- DS:DX -> MCB (see #04024)
- Return: AX = status
- may destroy SI,DI,DS???
- SeeAlso: INT E0/CL=3Ah
- --------O-E0----CL3A-------------------------
- INT E0 R - REAL/32 - "MC_ALLFREE" - CP-M/86 FREE ALL MEMORY
- CL = 3Ah
- Return: nothing???
- Desc: release all of the calling process's memory except the User Data Area
- SeeAlso: INT E0/CL=39h
- --------O-E0----CL3B-------------------------
- INT E0 u - REAL/32 - "P_LOAD" - LOAD .CMD FILE INTO MEMORY
- CL = 3Bh
- ???
- Return: ???
- Note: IMS does not document the details of this call because .CMD files are
- supported for backward compatibility only
- --------O-E0----CL40-------------------------
- INT E0 - REAL/32 - "N_LOGON" - LOG ONTO A SERVER
- CL = 40h
- DS:DX -> LPB (see #04025)
- Return: AX = status (0000h,00FFh,07FFh,0DFFh,0EFFh,FFFFh) (see #04030)
- may destroy SI,DI,DS???
- SeeAlso: INT E0/CL=41h
- Format of REAL/32 Logon/Logoff Parameter Block:
- Offset Size Description (Table 04025)
- 00h BYTE node ID
- 01h 8 BYTEs password for server access
- 09h DWORD -> process descriptor of process to be logged on (see #04026)
- Format of REAL/32 Process Descriptor:
- Offset Size Description (Table 04026)
- 00h WORD offset of next entry in current descriptor list
- 02h WORD offset of thread list
- 04h BYTE current processor status (see #04027)
- 05h BYTE priority
- 06h WORD runtime flags (see #04028)
- 08h 8 BYTEs process name
- 10h WORD segment of User Data Area (256 or 352 bytes)
- 12h BYTE current default disk drive
- 13h BYTE drive from which process was loaded
- 14h WORD reserved (0)
- 16h WORD offset of memory descriptor list for memory owned by process
- 18h 6 BYTEs reserved
- 1Eh WORD offset of process descriptor for parent process
- 0000h if parent has already terminated
- 20h BYTE number of default console
- 21h BYTE number of default AUX device
- 22h 2 BYTEs reserved
- 24h BYTE number of default list device
- 25h BYTE reserved
- 26h WORD flags (see #04029)
- 28h 12 BYTEs reserved
- 34h WORD offset of memory page allocation root
- 36h 22 BYTEs reserved
- SeeAlso: #04025
- (Table 04027)
- Values for REAL/32 processor status:
- 00h process is ready to run
- 01h process is polling a device
- 02h delaying for a number of ticks
- 03h in swap list
- 04h terminating
- 05h asleep
- 06h waiting to read a message from a queue
- 07h waiting to write a message
- 08h waiting on system flag or semaphore
- 09h waiting to attach to an I/O device
- 0Ah waiting on sync block
- 0Bh waiting for system flag or semaphore with timeout
- 0Ch forced dispatch
- SeeAlso: #04026
- Bitfields for REAL/32 process flags:
- Bit(s) Description (Table 04028)
- 0 system process
- 1 do not terminate
- 2 special rsp process
- 3 from process descriptor table
- 14-4 unused???
- 15 uses math coprocessor
- SeeAlso: #04026,#04029
- Bitfields for REAL/32 secondary flags:
- Bit(s) Description (Table 04029)
- 0 suspend when in background
- 1 ???
- 2 in foreground
- 3 enable APPEND processing on file opens
- 4 Ctrl-C was typed
- 5 Ctrl-C will reset disk system
- 6 OK to read locked record
- 7 ???
- 8 do not perform banking
- SeeAlso: #04026,#04028
- (Table 04030)
- Values for REAL/32 "N_LOGON" status:
- 0000h successful
- 00FFh server could not create shadow process
- 07FFh incorrect password
- 0CFFh not logged into specified server
- 0DFFh process already logged onto 16 servers,
- LPB process not attached to network
- 0EFFh physical transmission prevented message or response from getting thru
- network error during logoff
- FFFFh calling process not attached to network
- --------O-E0----CL41-------------------------
- INT E0 - REAL/32 - "N_LOGON" - LOG OFF A SERVER
- CL = 41h
- DS:DX -> LPB (see #04025)
- Return: AX = status (0000h,0CFFh,0DFFh,0EFFh,FFFFh) (see #04030)
- may destroy SI,DI,DS???
- SeeAlso: INT E0/CL=40h
- --------O-E0----CL44-------------------------
- INT E0 - REAL/32 - "N_STAT" - GET NETWORK STATUS
- CL = 44h
- Return: AX = network status or 0FFFh on error
- bit 8: calling process is attached to network
- may destroy SI,DI???
- --------O-E0----CL45-------------------------
- INT E0 - REAL/32 - "N_RCT" - GET REQUESTOR CONFIGURATION TABLE
- CL = 45h
- DS:DX -> RCT Control Block (see #04031,#04032)
- Return: AX = status or error code (see #04033,#04030)
- may destroy SI,DI,DS???
- SeeAlso: INT E0/CL=47h
- Format of REAL/32 RCT Control Block for Drives:
- Offset Size Description (Table 04031)
- 00h BYTE command byte
- 00h map disk drive
- 02h map list device
- 01h BYTE local resource ID
- 02h BYTE remote resource ID
- 03h BYTE server node ID number
- Note: the RCT Control Block is a union of two possible structures; this
- variant is used when mapping disk drives and list devices
- SeeAlso: #04032
- Format of REAL/32 RCT Control Block for Queues:
- Offset Size Description (Table 04032)
- 00h BYTE command byte
- 03h map local queue to server
- 04h unmap queue
- 01h 8 BYTEs local queue name (case-sensitive)
- 09h 8 BYTEs remote queue name (case-sensitive)
- 11h BYTE server node ID number
- Note: the RCT Control Block is a union of two possible structures; this
- variant is used when mapping queues
- SeeAlso: #04031
- (Table 04033)
- Values for REAL/32 "N_RCT" status:
- 0000h successful
- 0001h invalid local device
- 0002h invalid remote device
- 0003h no queue entry space
- --------O-E0----CL47-------------------------
- INT E0 - REAL/32 - "N_SCT" - GET SERVER CONFIGURATION TABLE
- CL = 47h
- DS:DX -> 112-byte buffer for Server Configuration Table (see #04034)
- Return: AX = status (0000h successful, else error code)
- may destroy SI,DI,DS???
- Note: the first byte of the SCT buffer is set to the desired server number
- prior to calling this function
- SeeAlso: INT E0/CL=45h
- Format of REAL/32 Server Configuration Table:
- Offset Size Description (Table 04034)
- 00h BYTE server's default physical drive ID
- 01h BYTE network status
- 02h BYTE server node ID number
- 03h BYTE maximum number of requesters supported by server
- 04h BYTE current number of shadow processes
- 05h 108 BYTEs six logon structures, each:
- Offset Size Description
- 00h WORD bit vector of logged-in nodes
- 02h 16 BYTEs list of requester node IDs
- --------O-E0----CL48-------------------------
- INT E0 - REAL/32 - "N_ERRMODE" - SET NETWORK ERROR MODE
- CL = 48h
- DL = new error mode
- FFh return error in registers AX,BX,CX
- FEh display message and return error
- FDh display message and abort (default)
- Return: CX = error code (0000h successful, FFFFh failed)
- may destroy SI,DI???
- Desc: specify how the REAL/32 Net Server responds to error numbers 0CFFh,
- 0DFFh, and 0EFFh (see #04030)
- --------O-E0----CL59-------------------------
- INT E0 - ConcCP/M,DR Multiuser DOS - "S_MEMORY" - RESERVE MEMORY IN GLOBAL AREA
- CL = 59h
- DX = size in bytes
- Return: AX = status
- FFFFh failed
- other successful
- ES:BX -> reserved memory
- --------O-E0----CL5C-------------------------
- INT E0 - REAL/32 - "P_PATH" - SCAN PATH FOR EXECUTABLE FILE
- CL = 5Ch
- DS:DX -> Exec Parameter Block (EPB) (see #04035)
- Return: AX = status
- FFFEh file not found
- FFFDh path not found
- FFFCh too many handles open
- FFFBh access denied
- FFF6h invalid environment
- FFDCh sharing conflict
- FFAAh invalid password
- EPB updated (if successful)
- may destroy SI,DI,DS
- SeeAlso: INT E0/CL=5Dh,INT E0/CL=5Eh,INT 21/AH=4Bh
- Format of REAL/32 Exec Parameter Block (EPB):
- Offset Size Description (Table 04035)
- 00h DWORD -> ASCIZ command to be executed
- 04h BYTE type of exec
- 00h .CMD
- 01h .COM
- 02h .EXE
- 03h .BAT
- 04h RSP-type queue
- 05h BYTE flags
- bit 0: overlay existing program
- bit 1: don't assign console to child
- bit 2: allocate memory for .CMD within parent's memory space
- bit 3: make full banked window available while loading child
- 06h DWORD 32-bit offset to ASCIZ command line
- 0Ah WORD selector for ASCIZ command line
- --------O-E0----CL5D-------------------------
- INT E0 - REAL/32 - "P_EXEC" - EXECUTE CHILD PROCESS
- CL = 5Dh
- DS:DX -> Exec Parameter Block (EPB) (see #04035)
- Return: AX = status
- FFFEh file not found
- FFFDh path not found
- FFFCh too many handles open
- FFFBh access denied
- FFF6h invalid environment
- FFDCh sharing conflict
- FFAAh invalid password
- EPB updated (if successful)
- may destroy SI,DI,DS
- SeeAlso: INT E0/CL=5Ch,INT E0/CL=5Eh,INT 21/AH=4Bh
- --------O-E0----CL5E-------------------------
- INT E0 - REAL/32 - "P_EXITCODE" - GET/SET PROCESS EXIT CODE
- CL = 5Eh
- DX = exit code or FFFFh to get
- DH ignored when setting code
- DL = process exit code
- Return: AX = status (FFFFh on error)
- if getting:
- AH = termination reason
- 00h normal
- 01h external termination via Ctrl-C or P_ABORT
- 02h hardware (critical) error abort
- 03h child did not terminate
- FFh illegal request (no child, or exit code already retrieved)
- AL = process exit code
- SeeAlso: INT E0/CL=5Dh,INT 21/AH=4Ch
- --------O-E0----CL6B-------------------------
- INT E0 - REAL/32 - "S_SERIAL" - GET OS SERIAL NUMBER
- CL = 6Bh
- DS:DX -> 6-byte buffer for ASCII serial number
- Return: nothing???
- --------O-E0----CL6D-------------------------
- INT E0 - REAL/32 - "C_MODE" - GET/SET CONSOLE MODE
- CL = 6Dh
- DX = new console mode (see #04036), or FFFFh to get current mode
- Return: AX = status if setting (0000h = success)
- AX = current console mode if DX=FFFFh on entry
- Bitfields for REAL/32 console mode:
- Bit(s) Description (Table 04036)
- 0 C_STAT function will return 01h only when Ctrl-C is pressed
- 1 disable support for stop/start scroll (Ctrl-S/Ctrl-Q)
- 2 raw console output (no tab expansion, no printer echo)
- 3 disable program termination on Ctrl-C
- 7 disable Ctrl-O console bit-bucket
- 10 enable Esc as end-of-line character
- --------O-E0----CL6E-------------------------
- INT E0 - REAL/32 - "C_DELIMIT" - GET/SET STRING DELIMITER
- CL = 6Eh
- DX = new delimiter, or FFFFh to get current string delimiter
- Return: AX = status (0000h success) if setting
- AX = current string delimiter (default is 24h '$' at process start)
- SeeAlso: INT E0/CL=09h
- --------O-E0----CL6F-------------------------
- INT E0 - REAL/32 - "C_WRITEBLK" - WRITE BLOCK TO DEFAULT CONSOLE
- CL = 6Fh
- DS:DX -> Character Control Block (see #04051,#04052)
- Return: nothing???
- SeeAlso: INT E0/CL=70h
- --------O-E0----CL70-------------------------
- INT E0 - REAL/32 - "L_WRITEBLK" - WRITE BLOCK TO DEFAULT LIST (PRINTER) DEVICE
- CL = 70h
- DS:DX -> Character Control Block (see #04051,#04052)
- Return: nothing???
- SeeAlso: INT E0/CL=6Fh
- --------O-E0----CL71-------------------------
- INT E0 R - ConcCP/M,DR Multiuser DOS - EXECUTE DOS-COMPATIBLE FUNCTIONS
- CL = 71h
- DS:DX -> parameter block (see #04038)
- Return: AX = status (0000h successful, else error code)
- may destroy SI,DI,DS
- (Table 04037)
- Values for DR "execute DOS-compatible function" function number:
- 00h "fd_getdpb" get disk information (see also INT 21/AH=32h)
- 01h "fd_mkdir" create directory (see also INT 21/AH=39h)
- 02h "fd_rmdir" remove directory (see also INT 21/AH=3Ah)
- 03h "fd_chdir" change directory (see also INT 21/AH=3Bh)
- 04h "fd_creat" create file (see also INT 21/AH=3Ch)
- 05h "fd_open" open existing file (see also INT 21/AH=3Dh)
- 06h "fd_close" close file (see also INT 21/AH=3Eh)
- 07h "fd_read" read from file (see also INT 21/AH=3Fh)
- 08h "fd_write" write to file (see also INT 21/AH=40h)
- 09h "fd_delete" delete file (see also INT 21/AH=41h)
- 0Ah "fd_lseek" get/set file position (see also INT 21/AH=42h)
- 0Bh "fd_chmod" get/set file attributes (see also INT 21/AH=43h)
- 0Ch "fd_curdir" get current directory (see also INT 21/AH=47h)
- 0Dh "fd_sfirst" find first matching file (see also INT 21/AH=4Eh)
- 0Eh "fd_snext" find next matching file (see also INT 21/AH=4Fh)
- 0Fh "fd_rename" rename file (see also INT 21/AH=56h)
- 10h "fd_gsfdate" get/set file date (see also INT 21/AX=5700h)
- 11h "fd_mktemp" make temporary file (see also INT 21/AH=5Ah)
- 12h "fd_mknew" create new file (see also INT 21/AH=5Bh)
- 13h "fd_lock" lock/unlock file data (see also INT 21/AH=5Ch)
- 14h "fd_dup" duplicate file handle (see also INT 21/AH=45h)
- 15h "fd_dup2" force duplicate file handle (see also INT 21/AH=46h)
- 16h-19h ???
- 1Ah "fd_ioctl" I/O control emulation
- 1Bh "fd_commit" commit file to disk (see also INT 21/AH=68h)
- 1Ch "fd_expand" expand file name (see also INT 21/AH=60h)
- 1Dh ???
- 1Eh ???
- 1Fh "fd_sethandles" set number of handles for calling process
- SeeAlso: #04038
- Format of DR "execute DOS-compatible function" parameter block:
- Offset Size Description (Table 04038)
- 00h WORD function number (see #04037)
- ---function 00h---
- 02h WORD drive
- 04h DWORD -> DPB (see #04039)
- ---function 01h,02h,03h---
- 02h DWORD -> ASCIZ directory name
- ---function 04h---
- 02h DWORD -> ASCIZ filename
- 06h WORD file attributes
- ---function 05h---
- 02h DWORD -> ASCIZ filename
- 06h WORD open mode (see INT 21/AH=3Dh)
- ---function 06h---
- 02h WORD file handle
- ---function 07h,08h---
- 02h WORD file handle
- 04h DWORD -> buffer
- 08h WORD number of bytes to read or write
- ---function 09h---
- 02h DWORD -> ASCIZ filename
- ---function 0Ah---
- 02h WORD file handle
- 04h DWORD (call) desired offset
- (ret) new file position if function is successful
- 08h WORD seek origin (offset is calculated from specified position)
- 00h start of file
- 01h current position
- 02h end of file
- ---function 0Bh---
- 02h DWORD -> ASCIZ filename
- 06h WORD (call) new file attributes or new file owner
- (ret) current/new file attributes, depending on function
- 08h WORD subfunction
- 00h get attribute
- 01h set attribute
- 02h get extended attributes
- 03h set extended attributes (and password)
- 04h get encrypted password
- 05h set extended attributes (and encrypted password)
- 06h get file owner
- 07h set file owner
- Note: the password is taken from the first 8 bytes of the DTA
- ---function 0Ch---
- 02h WORD drive
- 04h DWORD -> 64-byte buffer for ASCIZ current directory path
- ---function 0Dh---
- 02h DWORD -> ASCIZ filespec
- 06h WORD file attributes
- 08h WORD (call) size of buffer pointed at by current DTA
- (ret) number of matching files returned???
- Note: if the volume label attribute is specified, the root
- directory will be searched
- if the buffer is at least 47 bytes, multiple matching
- entries will be stored in the DTA (at 21 bytes per
- entry)
- ---function 0Eh---
- 02h WORD number of additional matches to store in DTA
- (normally set to 0, but if DTA is at least 47 bytes, can be
- set to (DTAsize-21)/26 to return multiple matches)
- ---function 0Fh---
- 02h DWORD -> ASCIZ filename
- 06h DWORD -> ASCIZ new name
- ---function 10h---
- 02h WORD file handle
- 04h WORD subfunction
- 00h get date and time
- 01h set date and time
- 06h WORD file date
- 08h WORD file time
- ---function 11h---
- 02h DWORD -> ASCIZ pathname + 13 extra bytes for generated filename
- (if pathname does not end in backslash, one will be appended)
- 06h WORD file attributes
- ---function 12h---
- 02h DWORD -> ASCIZ filename
- 06h WORD file attributes
- ---function 13h---
- 02h WORD file handle
- 04h DWORD offset of start of region
- 08h DWORD length of region to lock/unlock
- 0Ch WORD subfunction (00h = lock, 01h = unlock)
- ---function 14h---
- 02h WORD file handle to be duplicated
- (new file handle is returned as function return value)
- ---function 15h---
- 02h WORD file handle to be duplicated
- 04h WORD file handle which is to become the duplicate
- ---function 1Ah, form 1---
- 02h WORD file handle
- 04h WORD IOCTL function number (00h,01h,06h,07h,0Ah)
- 06h WORD (ret) status
- ---function 1Ah, form 2---
- 02h WORD drive number
- 04h WORD IOCTL function number (08h,09h,0Eh,0Fh)
- 06h WORD (ret) status
- ---function 1Ah, form 3---
- 02h WORD file handle
- 04h WORD IOCTL function number (02h,03h,54h)
- 06h DWORD -> buffer
- 0Ah WORD (call) size of buffer in bytes
- (ret) size of returned data
- ---function 1Ah, form 4---
- 02h WORD drive number
- 04h WORD IOCTL function number (04h,05h)
- 06h DWORD -> buffer
- 0Ah WORD (call) size of buffer in bytes
- (ret) size of returned data
- ---function 1Bh---
- 02h WORD file handle of file to be committed to disk
- ---function 1Ch---
- 02h DWORD -> ASCIZ relative filename
- 06h DWORD -> buffer for absolute filename
- ---function 1Fh---
- 02h WORD desired number of file handles for process
- Format of DR Multiuser DOS Disk Parameter Block (DPB):
- Offset Size Description (Table 04039)
- 00h BYTE drive number (00h = A:)
- 01h BYTE relative unit number
- 02h WORD sector size in bytes
- 04h BYTE sectors per cluster - 1
- 05h BYTE shift count to convert clusters into sectors
- 06h WORD number of reserved sectors at beginning of drive
- 08h BYTE number of FATs
- 09h WORD number of root directory entries
- 0Bh WORD number of first sector containing user data
- 0Dh WORD number of clusterse on disk
- 0Fh BYTE number of sectors per FAT
- 10h WORD sector number of first directory sector
- 12h 4 BYTEs reserved
- 16h BYTE media ID byte (see #01356)
- 17h BYTE 00h if disk accessed, FFh if not
- 18h 6 BYTEs reserved
- 1Eh WORD number of free clusters on drive
- Note: this structure is a subset of the MS-DOS 3.x Drive Parameter Block
- SeeAlso: #04038,#01357 at INT 21/AH=1Fh,#01395 at INT 21/AH=32h
- --------O-E0----CL73-------------------------
- INT E0 - GSX-86, GEM/1, GEM/2 - API
- CL = 73h
- CH = 04h
- DS:DX -> parameter block
- --------O-E0----CL80-------------------------
- INT E0 - REAL/32 - "M_ALLOC" - ALLOCATE MEMORY
- CL = 80h
- DS:DX -> Memory Parameter Block (MPB) (see #04040)
- Return: AX = status (0000h success, else error code)
- SeeAlso: INT E0/CL=81h
- Format of REAL/32 Memory Parameter Block (MPB):
- Offset Size Description (Table 04040)
- 00h WORD (call) desired starting paragraph of block, or
- 0000h for anywhere
- (ret) starting paragraph of allocated block
- 02h WORD (call) minimum number of paragraphs required
- (ret) actual number of paragraphs allocated
- 04h WORD (call) maximum number of paragraphs to allocate
- (ret) actual number of paragraphs allocated
- 06h WORD process descriptor (see #04026) of memory's owner or 0000h
- 08h WORD flags (normally set to 0000h on call)
- SeeAlso: #04041
- --------O-E0----CL81-------------------------
- INT E0 - REAL/32 - "M_FREE" - DEALLOCATE MEMORY
- CL = 81h
- DS:DX -> Memory Free Parameter Block (MFPB) (see #04041)
- Return: AX = status (0000h success, else error code)
- SeeAlso: INT E0/CL=81h
- Format of REAL/32 Memory Free Parameter Block (MFPB) :
- Offset Size Description (Table 04041)
- 00h WORD starting segment of block to be freed
- 02h WORD reserved (0)
- SeeAlso: #04040
- --------O-E0----CL84-------------------------
- INT E0 - REAL/32 - "DEV_WAITFLAG" - WAIT ON SYSTEM FLAG
- CL = 84h
- DX = system flag ID
- Return: AX = status (0000h success, else error code)
- if successful, this function does not return until the system flag has
- been set by an interrupt handler (see INT E0/CL=85h); if the flag was
- already set, this call returns immediately
- SeeAlso: INT E0/CL=85h,INT E0/CL=B7h
- --------O-E0----CL85-------------------------
- INT E0 - REAL/32 - "DEV_SETFLAG" - SET SYSTEM FLAG
- CL = 85h
- DX = system flag ID
- Return: AX = status (0000h success, else error code)
- Note: REAL/32 returns an error if the flag was already set, which indicates
- that a previous logical interrupt has not yet been serviced
- SeeAlso: INT E0/CL=84h
- --------O-E0----CL86-------------------------
- INT E0 - ConcCP/M,DR Multiuser DOS - "Q_MAKE" - CREATE MESSAGE QUEUE
- CL = 86h
- DS:DX -> queue descriptor (see #04042)
- Return: AX = status (0000h success, FFFFh failure)
- CX = error code (see #04021)
- Note: also supported by REAL/32
- SeeAlso: INT E0/CL=87h
- Format of DR Multiuser DOS queue descriptor:
- Offset Size Description (Table 04042)
- 00h 2 WORDs internal use, initialize to zeros
- 04h WORD queue flags (see #04043)
- 06h 8 BYTEs queue name
- 0Eh WORD length of message
- 10h WORD number of messages
- 12h 4 WORDs internal use, initialize to zeros
- 1Ah WORD offset in system area of buffer for messages
- Bitfields for REAL/32 queue flags:
- Bit(s) Description (Table 04043)
- 0 mutual exclusion queue
- 1 can not be deleted
- 2 restricted to system processes
- 3 RSP message queue
- 4 reserved for internal use
- 5 RPL address queue
- 7-6 reserved for internal use
- 15-8 reserved for future use
- SeeAlso: #04042
- --------O-E0----CL87-------------------------
- INT E0 - ConcCP/M,DR Multiuser DOS - "Q_OPEN" - OPEN MESSAGE QUEUE
- CL = 87h
- DS:DX -> queue parameter block (QPB) (see #04044,#04045)
- Return: AX = status (0000h success, FFFFh failure)
- CX = error code (see #04021)
- Note: also supported by REAL/32
- SeeAlso: INT E0/CL=86h,INT E0/CL=88h,INT E0/CL=89h
- Format of DR Multiuser DOS queue parameter block:
- Offset Size Description (Table 04044)
- 00h WORD internal use, initialize to zero
- 02h WORD queue ID (set by INT E0/CL=87h)
- 04h WORD internal use, initialize to zero
- 06h WORD offset of queue message buffer
- (REAL/32) if FFFFh, then full address of buffer is stored at
- offest 10h
- 08h 8 BYTEs queue name
- ---REAL/32 only----
- 10h DWORD segment:offset of queue message buffer
- SeeAlso: #04045
- Format of protected-mode REAL/32 Queue Parameter Block (QPB):
- Offset Size Description (Table 04045)
- 00h WORD internal use
- 02h WORD queue ID
- 04h WORD internal use
- 06h DWORD 32-bit offset to buffer
- 0Ah WORD selector for buffer
- 0Ch 8 BYTEs queue name
- SeeAlso: #04044
- --------O-E0----CL88-------------------------
- INT E0 - REAL/32 - "Q_DELETE" - DELETE SYSTEM QUEUE
- CL = 88h
- DS:DX -> queue parameter block (QPB) (see #04044,#04045)
- Return: AX = status (0000h success, FFFFh failure)
- SeeAlso: INT E0/CL=87h
- --------O-E0----CL89-------------------------
- INT E0 - ConcCP/M,DR Multiuser DOS - "Q_READ" - READ MESSAGE QUEUE
- CL = 89h
- DS:DX -> queue parameter block (QPB) (see #04044,#04045)
- Return: AX = status (0000h success, FFFFh failure)
- CX = error code (see #04021)
- Note: also supported by REAL/32
- SeeAlso: INT E0/CL=87h,INT E0/CL=8Ah,INT E0/CL=8Bh,INT E0/CL=B6h
- --------O-E0----CL8A-------------------------
- INT E0 - ConcCP/M,DR Multiuser DOS - "Q_CREAD" - CONDITIONALLY READ MSG QUEUE
- CL = 8Ah
- DS:DX -> queue parameter block (QPB) (see #04044,#04045)
- Return: AX = status (0000h success, FFFFh failure)
- CX = error code (see #04021)
- Note: also supported by REAL/32
- SeeAlso: INT E0/CL=87h,INT E0/CL=89h,INT E0/CL=8Ch,INT E0/CL=B6h
- --------O-E0----CL8B-------------------------
- INT E0 - ConcCP/M,DR Multiuser DOS - "Q_WRITE" - WRITE MESSAGE QUEUE
- CL = 8Bh
- DS:DX -> queue parameter block (QPB) (see #04044,#04045)
- Return: AX = status (0000h success, FFFFh failure)
- CX = error code (see #04021)
- Note: also supported by REAL/32
- SeeAlso: INT E0/CL=89h,INT E0/CL=8Ch
- --------O-E0----CL8C-------------------------
- INT E0 - ConcCP/M,DR Multiuser DOS - "Q_CWRITE" - CONDITIONALLY WRITE MSG QUEUE
- CL = 8Ch
- DS:DX -> queue parameter block (QPB) (see #04044,#04045)
- Return: AX = status (0000h success, FFFFh failure)
- CX = error code (see #04021)
- Note: also supported by REAL/32
- SeeAlso: INT E0/CL=8Ah,INT E0/CL=8Bh
- --------O-E0----CL8E-------------------------
- INT E0 - ConcCP/M,DR Multiuser DOS - "P_DISPATCH" - CALL DISPATCHER
- CL = 8Eh
- DX = FFFFh (optional) to force dispatch
- Return: nothing
- Desc: allow other processes of the same or higher priority to run if they
- are ready
- Notes: if DX=FFFFh, a dispatch is forced even if no other process is ready
- also supported by REAL/32
- SeeAlso: INT E0/CL=91h,INT 15/AX=1000h,INT 2F/AX=1680h
- --------O-E0----CL8F-------------------------
- INT E0 - REAL/32 - "P_TERM" - TERMINATE CALLING PROCESS
- CL = 8Fh
- DX = termination code
- Return: never if successful
- AX = FFFFh on failure
- Note: this function can not terminate processes whose KEEP flag is set
- if the termination code is FFh, this function can terminate the process
- even if its SYSTEM flag is on; otherwise, only user processes can
- terminate themselves
- SeeAlso: INT E0/CL=90h,INT 21/AH=4Ch
- --------O-E0----CL90-------------------------
- INT E0 - REAL/32 - "P_CREATE" - CREATE A PROCESS
- CL = 90h
- DS:DX -> process descriptor in calling process' system memory area
- (see #04026)
- Return: AX = status
- Notes: this call can create more than one process if the specied process
- descriptor's link (next-process) field is nonzero
- all reserved and unused fields in the process descriptor should be
- filled with zeros; passing an invalid descriptor or pointer may
- crash the system because the descriptor is not checked by the OS
- the newly-created process(es) is always a native process, which can not
- make DOS calls
- SeeAlso: INT E0/CL=8Fh
- --------O-E0----CL91-------------------------
- INT E0 - ConcCP/M,DR Multiuser DOS - "P_PRIORITY" - SET PROCESS PRIORITY
- CL = 91h
- DL = new priority (00h highest to FFh lowest)
- Return: nothing
- Notes: sets priority of calling process; transient processes are initialized
- to priority C8h
- also supported by REAL/32
- SeeAlso: INT E0/CL=8Eh
- --------O-E0----CL92-------------------------
- INT E0 - ConcCP/M,DR Multiuser DOS - "C_ATTACH" - ATTACH TO DEFAULT CONSOLE
- CL = 92h
- Return: AX = status
- Notes: also supported by REAL/32
- if the console is currently owned by another process, this function
- waits until the console is available
- SeeAlso: INT E0/CL=93h,INT E0/CL=94h,INT E0/CL=99h,INT E0/CL=9Eh,INT E0/CL=A2h
- --------O-E0----CL93-------------------------
- INT E0 - ConcCP/M,DR Multiuser DOS - "C_DETACH" - DETACH FROM DEFAULT CONSOLE
- CL = 93h
- Return: AX = status
- 0000h successfully detached
- FFFFh detach failed
- Note: also supported by REAL/32
- SeeAlso: INT E0/CL=92h,INT E0/CL=A6h
- --------O-E0----CL94-------------------------
- INT E0 - REAL/32 - "C_SET" - SET PROCESS'S DEFAULT CONSOLE
- CL = 94h
- DX = console ID
- Return: AX = status (0000h success, else error code)
- SeeAlso: INT E0/CL=92h,INT E0/CL=95h,INT E0/CL=99h
- --------O-E0----CL95-------------------------
- INT E0 - REAL/32 - "C_ASSIGN" - ASSIGN DEFAULT CONSOLE TO ANOTHER PROCESS
- CL = 95h
- DS:DX -> Assign Control Parameter Block (ACPB) (see #04046)
- Return: AX = status
- SeeAlso: INT E0/CL=94h,INT E0/CL=99h
- Format of REAL/32 Assign Control Parameter Block (ACPB):
- Offset Size Description (Table 04046)
- 00h BYTE ID of console to assign
- 01h BYTE flag: if FFh, new process must have CNS as console for this
- call to succeed
- 02h DWORD -> process descriptor (see #04026) or 00000000h
- 06h 8 BYTEs name of process to search for if descriptor field above is zero
- --------O-E0----CL96-------------------------
- INT E0 - REAL/32 - "P_CLI" - RUN COMMAND LINE INTERFACE
- CL = 96h
- DS:DX -> Command Line Buffer (CLBUF) (see #04047)
- Return: AX = status
- Desc: execute the indicated command concurrently with the calling process;
- system queue commands, .BAT, .CMD, .COM, and .EXE files can be
- executed
- Note: the calling process will lose its virtual console and must reattach it
- before attempting any I/O
- SeeAlso: INT E0/CL=92h
- Format of REAL/32 Command Line Buffer (CLBUF):
- Offset Size Description (Table 04047)
- 00h BYTE reserved (0)
- 01h 128 BYTEs ASCIZ command line
- 81h BYTE (0)
- --------O-E0----CL99-------------------------
- INT E0 - REAL/32 - "C_GET" - GET DEFAULT CONSOLE
- CL = 99h
- Return: AX = default console ID
- SeeAlso: INT E0/CL=94h
- --------O-E0----CL9A-------------------------
- INT E0 - REAL/32 - "S_SYSDAT" - GET SYSTEM DATA AREA
- CL = 9Ah
- Return: ES:AX -> system data area (see #04048)
- may destroy SI,DI
- Format of REAL/32 system data area:
- Offset Size Description (Table 04048)
- 00h DWORD address of supervisor entry point
- 04h 36 BYTEs reserved
- 28h DWORD address of XIOS entry point
- 2Ch DWORD address of XIOS initialization point
- 30h 8 BYTEs reserved
- 38h DWORD address of IRET dispatcher entry point
- 3Ch DWORD address of RETF dispatcher entry point
- 40h WORD segment of operating system code
- 42h WORD paragraph address of first Resident System Process (RSP)
- 44h WORD paragraph after OS system area
- 46h BYTE reserved
- 47h BYTE number of system console devices
- 48h BYTE number of system list (printer) devices
- 49h BYTE number of Character Control blocks
- 4Ah BYTE number of system flags
- 4Bh BYTE current search disk
- 4Ch WORD maximum memory per process
- 4Eh BYTE reserved
- 4Fh BYTE "dayfile" (flag, true if FFh)
- 50h BYTE default disk for temporary files
- 51h BYTE system ticks per second (typically 60)
- 52h WORD offset of Locked Unused list
- 54h WORD offset of CCB table
- 56h WORD offset of system flag table
- 58h WORD offset of root of Memory Descriptor Unused list
- 5Ah WORD offset of Memory Free list
- 5Ch WORD offset of Process Unused list
- 5Eh WORD offset of Queue Unused list
- 60h 4 WORDs (no longer used) QMAU
- 68h WORD offset of root of Ready List
- 6Ah WORD offset of root of Delay List
- 6Ch WORD offset of Dispatcher Ready list
- 6Eh WORD offset of root of Poll List
- 70h WORD reserved
- 72h WORD offset of root of Thread List
- 74h WORD offset of root of Queue List
- 76h WORD offset of Memory Allocation list
- 78h WORD segment of version string
- 7Ah WORD BDOS version number
- 7Ch WORD OS version number
- 7Eh WORD number of days since 01jan1978
- 80h BYTE current time: hour
- 81h BYTE current time: minute
- 82h BYTE current time: second
- 83h BYTE number of XIOS consoles
- 84h BYTE number of XIOS list (printer) devices
- 85h BYTE total number of character devices
- 86h WORD offset of LCB table
- 88h WORD bitmap of open files
- 8Ah BYTE maximum locked records per process
- 8Bh BYTE maximum open files per process
- 8Ch WORD offset of process descriptor for math coprocessor's owner
- 8Eh WORD offset of Auxiliary Control Block
- 90h 8 BYTEs reserved
- 98h WORD offset of root Memory Window Descriptor
- 9Ah WORD reserved
- 9Ch BYTE number of Auxiliary Control Blocks
- 9Dh BYTE default search disk
- 9Eh BYTE reserved
- 9Fh BYTE number of physical consoles
- A0h DWORD address of 8087 interrupt handler
- A4h DWORD address of default 8087 exception handler
- ... reserved
- C00h 82 BYTEs XIOS header structure (see #04049)
- Format of REAL/32 XIOS header structure:
- Offset Size Description (Table 04049)
- 00h 3 BYTEs XIOS initialization entry point
- 03h 3 BYTEs XIOS service entry point
- 06h WORD segment address of system data
- 08h DWORD address of supervisor entry point
- 0Ch BYTE set tick flag
- 0Dh BYTE ticks per second
- 0Eh BYTE global Door Open interrupt flag
- 0Fh BYTE number of Auxiliary Control Blocks
- 10h BYTE number of physical consoles
- 11h BYTE number of virtual consoles
- 12h BYTE number of logical consoles
- 13h BYTE number of list control blocks
- 14h WORD offset of CCB table
- 16h WORD offset of LCB table
- 18h 16 WORDs offsets into DPH for drives A-P
- 38h WORD buffer size in paragraphs
- 3Ah WORD offset of ACB table
- 3Ch WORD used by OEM
- 3Eh WORD offset of CCB pointer array
- 40h WORD offset of LCB pointer array
- 42h WORD offset of ACB pointer array
- 44h BYTE 'first' flag
- 45h BYTE unused
- 46h WORD offset of print device support table
- 48h WORD offset of aux device support table
- 4Ah WORD XIOS extra segment
- 4Ch WORD segment of save end address for debug
- 4Eh WORD segment of save start address for debug
- 50h BYTE number of main virtual console
- 51h WORD segment of XIOS code
- SeeAlso: #04048
- --------O-E0----CL9C-------------------------
- INT E0 - REAL/32 - "P_PDADR" - GET ADDRESS OF PROCESS DESCRIPTOR
- CL = 9Ch
- Return: ES:AX -> caller's process descriptor (see #04026)
- may destroy SI,DI
- SeeAlso: INT E0/CL=8Fh,INT E0/CL=90h
- --------O-E0----CL9D-------------------------
- INT E0 - REAL/32 - "P_ABORT" - ABORT PROCESS BY NAME OR DESCRIPTOR
- CL = 9Dh
- DS:DX -> Abort Parameter Block (see #04050)
- Return: AX = status
- may destroy SI,DI,DS
- SeeAlso: INT E0/CL=8Fh,INT E0/CL=9Ch
- Format of REAL/32 Abort Parameter Block:
- Offset Size Description (Table 04050)
- 00h WORD process descriptor of process to abort, or 0000h
- 02h WORD termination code
- 04h BYTE default console number
- 05h BYTE reserved (0)
- 06h 8 BYTEs name of process to abort, if descriptor at offset 00h is 0000h
- --------O-E0----CL9E-------------------------
- INT E0 - REAL/32 - "L_ATTACH" - ATTACH TO DEFAULT LIST DEVICE
- CL = 9Eh
- Return: AX = status
- may destroy SI,DI
- SeeAlso: INT E0/CL=92h,INT E0/CL=9Fh,INT E0/CL=A0h,INT E0/CL=A1h
- --------O-E0----CL9F-------------------------
- INT E0 - REAL/32 - "L_DETACH" - DETACH FROM DEFAULT LIST DEVICE
- CL = 9Fh
- Return: AX = status
- may destroy SI,DI
- SeeAlso: INT E0/CL=92h,INT E0/CL=9Eh
- --------O-E0----CLA0-------------------------
- INT E0 - REAL/32 - "L_SET" - SET DEFAULT LIST DEVICE
- CL = A0h
- DX = ID of list (printer) device
- Return: AX = status (0000h success, FFFFh if invalid printer number)
- may destroy SI,DI
- SeeAlso: INT E0/CL=92h,INT E0/CL=9Eh,INT E0/CL=A4h
- --------O-E0----CLA1-------------------------
- INT E0 - REAL/32 - "L_CATTACH" - CONDITIONALLY ATTACH TO DEFAULT LIST DEVICE
- CL = A1h
- Return: AX = status (00h = successful, FFh = unable to attach)
- may destroy SI,DI
- Desc: attach the default list device to the calling process only if it is
- currently available
- SeeAlso: INT E0/CL=92h,INT E0/CL=9Eh,INT E0/CL=A0h
- --------O-E0----CLA2-------------------------
- INT E0 - REAL/32 - "C_CATTACH" - CONDITIONALLY ATTACH TO DEFAULT CONSOLE
- CL = A2h
- Return: AL = status (FFh = console attached to another process)
- Note: if the console is currently owned by another process, this function
- will return an error code instead of attaching or waiting
- SeeAlso: INT E0/CL=93h,INT E0/CL=94h,INT E0/CL=99h,INT E0/CL=92h
- --------O-E0----CLA3-------------------------
- INT E0 - ConcCP/M,DR Multiuser DOS,REAL/32 - "S_OSVER" - GET OS VERSION
- CL = A3h
- Return: AX = operating system version (see #04023) (see also INT 21/AX=4451h)
- SeeAlso: INT E0/CL=0Ch,INT 21/AX=4451h
- --------O-E0----CLA4-------------------------
- INT E0 - REAL/32 - "L_GET" - GET DEFAULT LIST (PRINTER) DEVICE
- CL = A4h
- Return: AL = number of default list device
- SeeAlso: INT E0/CL=A0h
- --------O-E0----CLA5-------------------------
- INT E0 - DR Multiuser DOS - "A_ATTACH" - ATTACH AUX DEVICE
- CL = A5h
- Return: nothing (DR)
- AX = status (REAL/32)
- Desc: attaches the default auxiliary device to the calling process unless
- it is already attached to another process, in which case the call
- blocks until the device becomes available
- Notes: this call should be used before attempting to read or write from
- the AUX device; however, the I/O calls internally call this function
- to ensure device ownership
- also supported by REAL/32
- SeeAlso: INT E0/CL=03h,INT E0/CL=04h,INT E0/CL=A6h,INT E0/CL=A7h,INT E0/CL=A8h
- SeeAlso: INT E0/CL=ACh,INT E0/CL=ADh,INT E0/CL=B0h
- --------O-E0----CLA6-------------------------
- INT E0 - DR Multiuser DOS - "A_DETACH" - DETACH FROM AUX DEVICE
- CL = A6h
- Return: AX = status
- 0000h successfully detached
- FFFFh detach failed
- CX = error code
- Note: also supported by REAL/32
- SeeAlso: INT E0/CL=93h,INT E0/CL=A5h,INT E0/CL=A7h
- --------O-E0----CLA7-------------------------
- INT E0 - DR Multiuser DOS - "A_CATTACH" - CONDITIONALLY ATTACH TO AUX DEVICE
- CL = A7h
- Return: AX = status
- 0000h attached
- FFFFh unable to attach
- Desc: attaches the default auxiliary device to the calling process if it is
- available
- Notes: does not block if the device is already in use
- also supported by REAL/32
- SeeAlso: INT E0/CL=A5h,INT E0/CL=A6h,INT E0/CL=A8h,INT E0/CL=B0h
- --------O-E0----CLA8-------------------------
- INT E0 - DR Multiuser DOS - "A_SET" - SET DEFAULT AUX DEVICE NUMBER
- CL = A8h
- DL = auxiliary device number
- Return: AX = status
- 0000h successful
- FFFFh failed
- CX = error code
- Desc: specify which physical device will become AUX
- SeeAlso: INT E0/CL=A5h,INT E0/CL=A9h
- --------O-E0----CLA9-------------------------
- INT E0 - DR Multiuser DOS - "A_GET" - GET DEFAULT AUX DEVICE NUMBER
- CL = A9h
- Return: AL = current default auxiliary device number
- Desc: determine which physical device is currently AUX
- SeeAlso: INT E0/CL=A8h
- --------O-E0----CLAC-------------------------
- INT E0 - DR Multiuser DOS - "A_READBLK" - READ STRING FROM AUX DEVICE
- CL = ACh
- DS:DX -> character control block (CHCB) (see #04051,#04052)
- Return: AX = number of characters read
- Desc: read characters from the default auxiliary (AUXn:) device into a buffer
- until the buffer is full or the device is no longer ready
- Notes: if the device is initially not ready, blocks until at least one
- character has been read
- if another process owns AUX, this call blocks until the device becomes
- available
- also supported by REAL/32
- SeeAlso: INT E0/CL=03h,INT E0/CL=A5h,INT E0/CL=ADh
- Format of DR Multiuser DOS character control block (CHCB):
- Offset Size Description (Table 04051)
- 00h DWORD pointer to character buffer
- 04h WORD length of character buffer
- Note: this version of the structure is used by REAL/32 in real mode
- SeeAlso: #04059
- Format of REAL/32 protected-mode Character Control Block (CHCB):
- Offset Size Description (Table 04052)
- 00h DWORD 32-bit offset of character buffer
- 04h WORD selector for character buffer
- 06h WORD length of character buffer
- SeeAlso: #04051
- --------O-E0----CLAD-------------------------
- INT E0 - DR Multiuser DOS - "A_WRITEBLK" - WRITE STRING TO AUX DEVICE
- CL = ADh
- DS:DX -> character control block (see #04051,#04052)
- Return: AX = number of characters written
- Notes: does not return until at least one character has been written
- also supported by REAL/32
- SeeAlso: INT E0/CL=04h,INT E0/CL=A5h,INT E0/CL=ACh
- --------O-E0----CLB0-------------------------
- INT E0 - DR Multiuser DOS - "A_CONFIG" - GET/SET AUX DEVICE PARAMETERS
- CL = B0h
- DX:DX -> AUX device parameter block (see #04053)
- Return: AX = status
- 0000h successful
- parameter block updated
- FFFFh failed
- CX = error code
- Note: also supported by REAL/32
- SeeAlso: INT E0/CL=A5h,INT E0/CL=B1h
- Format of DR Multiuser DOS AUX device parameter block:
- Offset Size Description (Table 04053)
- 00h BYTE function (00h get, 01h set)
- 01h BYTE baud rate (see #04055) FFh = don't change/unknown
- 02h BYTE parity (see #04054)
- 03h BYTE stop bits (00h one, 01h 1.5, 02h two, FFh unknown/don't change)
- 04h BYTE data bits (05h-08h or FFh unknown/don't change)
- 05h BYTE handshake (00h none, 01h DTS/DSR, 02h RTS/CTS, 04h XON/XOFF,
- FFh unknown/don't change)
- 06h BYTE XON character, FFh unknown/don't change
- 07h BYTE XOFF character, FFh unknown/don't change
- (Table 04054)
- Values for DR Multiuser DOS AUX parity:
- 00h none
- 01h odd
- 02h none
- 03h even
- 04h stick parity bit
- FFh don't change/unknown
- SeeAlso: #04053,#04055
- (Table 04055)
- Values for DR Multiuser DOS AUX baud rate:
- 00h 50 baud
- 01h 62.5 baud
- 02h 75 baud
- 03h 110 baud
- 04h 134.5 baud
- 05h 150 baud
- 06h 200 baud
- 07h 300 baud
- 08h 600 baud
- 09h 1200 baud
- 0Ah 1800 baud
- 0Bh 2000 baud
- 0Ch 2400 baud
- 0Dh 3600 baud
- 0Eh 4800 baud
- 0Fh 7200 baud
- 10h 9600 baud
- 11h 19200 baud
- 12h 38400 baud
- 13h 56000 baud
- 14h 76800 baud
- 15h 115200 baud
- SeeAlso: #04053,#04054
- --------O-E0----CLB1-------------------------
- INT E0 - DR Multiuser DOS - "A_CONTROL" - GET/SET AUX CONTROL PARAMETERS
- CL = B1h
- DS:DX -> AUX device control block (see #04056)
- Return: AX = status
- 0000h successful
- control block updated
- FFFFh failed
- CX = error code
- Note: also supported by REAL/32
- SeeAlso: INT E0/CL=B0h,INT E0/CL=B2h
- Format of DR Multiuser DOS AUX device control block:
- Offset Size Description (Table 04056)
- 00h BYTE function (00h get, 01h set)
- 01h BYTE DTR state (00h low, 01h high, FFh unknown/don't change)
- 02h BYTE RTS state (00h low, 01h high, FFh unknown/don't change)
- 03h BYTE DSR state (00h low, 01h high, FFh unknown/don't change)
- 04h BYTE CTS state (00h low, 01h high, FFh unknown/don't change)
- 05h BYTE DCD state (00h low, 01h high, FFh unknown/don't change)
- 06h BYTE RI state (00h inactive, 01h active, FFh unknown/don't change)
- --------O-E0----CLB2-------------------------
- INT E0 - DR Multiuser DOS - "A_BREAK" - SEND BREAK TO AUX DEVICE
- CL = B2h
- DX = duration of break in system ticks (0001h-FFFFh)
- Return: AX = status
- 0000h successful
- break signal completed
- FFFFh failed
- CX = error code
- Notes: if the AUX device is currently owned by another process, this call will
- block until the device becomes available
- also supported by REAL/32
- SeeAlso: INT E0/CL=A5h,INT E0/CL=B1h
- --------O-E0----CLB3-------------------------
- INT E0 R - REAL/32 - "MP_ALLOC" - ALLOCATE PHYSICAL MEMORY
- CL = B3h
- DX = number of 4K pages to allocate
- Return: AX = number of first 4K page allocated, or FFFFh on error
- Note: memory allocated with this function is not automatically freed when
- the process terminates
- SeeAlso: INT E0/CL=B4h,INT E0/CL=B5h
- --------O-E0----CLB4-------------------------
- INT E0 R - REAL/32 - "MP_FREE" - DEALLOCATE PHYSICAL MEMORY
- CL = B4h
- DX = number of the physical page to free
- Return: AX = status (0000h successful, FFFFh error)
- SeeAlso: INT E0/CL=B3h
- --------O-E0----CLB5-------------------------
- INT E0 R - REAL/32 - "MP_MAP" - MAP PHYSICAL MEMORY
- CL = B5h
- DS:DX -> Memory Physical Parameter Block (see #04057)
- Return: AX = status (0000h successful, FFFFh error)
- may destroy SI,DI,DS
- SeeAlso: INT E0/CL=B3h
- Format of REAL/32 Memory Physical Parameter Block:
- Offset Size Description (Table 04057)
- 00h WORD 4K page number in first megabyte to be mapped
- 02h WORD number of page to map into above page, or 0000h to unmap
- 04h WORD window number (0000h, as only one window currently supported)
- 06h WORD reserved
- Note: all users of the system share the window, so applications should not
- use it for arguments to system calls, attempt to read/write to/from
- files via the window, etc.
- --------O-E0----CLB6-------------------------
- INT E0 - REAL/32 - "Q_NCREAD" - CONDITIONALLY NONDESTRUCTIVELY READ QUEUE
- CL = B6h
- DS:DX -> Queue Parameter Block (QPB) (see #04045,#04044)
- Return: AX = status
- SeeAlso: INT E0/CL=89h,INT E0/CL=8Ah
- --------O-E0----CLB7-------------------------
- INT E0 - REAL/32 - "DEV_TWAITFLAG" - TIMED WAIT ON SYSTEM FLAG
- CL = B7h
- DS:DX -> Flag Parameter Block (FPB) (see #04058)
- Return: AX = status
- may destroy SI,DI,DS
- Note: if the flag was already set, this function returns immediately
- SeeAlso: INT E0/CL=84h,INT E0/CL=85h
- Format of REAL/32 Flag Parameter Block (FPB):
- Offset Size Description (Table 04058)
- 00h WORD number of system flag on which to wait
- 02h WORD maximum number of system ticks (see INT E0/CL=9Ah) to wait
- --------O-E0----CLB8-------------------------
- INT E0 - REAL/32 - "DEV_MAP" - GET/SET SERIAL/PARALLEL PORT MAPPINGS
- CL = B8h
- DS:DX -> Device Map Parameter Block (DEVPB) (see #04059)
- Return: nothing???
- may destroy SI,DI,DS
- Format of REAL/32 Device Map Parameter Block (DEVPB):
- Offset Size Description (Table 04059)
- 00h WORD direction (00h = get current mapping, 01h = set new mapping)
- 02h 4 BYTEs physical device IDs which map into LPT1 - LPT4
- 06h 4 BYTEs physical device IDs which map into COM1 - COM4
- Note: LPT4 and COM3/COM4 are reserved on early versions of Multiuser DOS,
- but are supported from at least CCI Multiuser DOS v7.22 onward
- --------O-E0----CLB9-------------------------
- INT E0 - REAL/32 - "L_TIMEOUT" - SET LIST DEVICE TIMEOUT
- CL = B9h
- DX = timeout value in system ticks (see #04048)
- 0000h-FFEFh = new number of system ticks
- FFFDh = get current value without changing
- FFFEh = start timeout count
- FFFFh = never timeout
- Return: AX = status, or current timeout value if DX=FFFDh on entry
- may destroy SI,DI
- SeeAlso: INT E0/CL=BAh
- --------O-E0----CLBA-------------------------
- INT E0 - REAL/32 - "A_TIMEOUT" - SET AUX DEVICE TIMEOUT
- CL = BAh
- DX = timeout value in system ticks (see #04048)
- 0000h-FFEFh = new number of system ticks
- FFFDh = get current value without changing
- FFFEh = start timeout count
- FFFFh = never timeout
- Return: AX = status, or current timeout value if DX=FFFDh on entry
- may destroy SI,DI
- SeeAlso: INT E0/CL=B9h
- --------O-E0----CLBD-------------------------
- INT E0 - DR Multiuser DOS - "P_DELAY" - DELAY EXECUTION
- CL = BDh
- DX = delay in system ticks (typically 16.6 ms/tick)
- Return: after the delay elapses
- no results
- Notes: the length of a system tick is installation-dependent (typically
- 1/50 or 1/60 second); the length may be determined by reading the
- TICKSPERSEC value from the system data segment
- the actual delay before the process is rescheduled to run may be up to
- one tick longer than requested; the delay between rescheduling and
- actual execution cannot be predicted if higher-priority processes
- are awaiting a turn at the CPU
- SeeAlso: INT 15/AH=86h,INT 1A/AX=FF01h,INT 2F/AX=1224h,INT 62/AX=0096h
- --------g-E00000-----------------------------
- INT E0 - PCROBOTS v1.41 - "SWAPTASK" - END CURRENT ROBOT'S TURN
- AX = 0000h
- Return: nothing
- Program: PCROBOTS is P.D. Smith's adaptation of Tom Poindexter's CROBOTS, in
- which specially-written .COM or .EXE programs form robots battling
- each other in a user-defined arena
- --------g-E00001-----------------------------
- INT E0 - PCROBOTS v1.41 - "MOVEMENT" - START MOVING
- AX = 0001h
- BX = speed (0-maximum for robot)
- CX = direction (0-359 degrees)
- Return: nothing
- Notes: the speed will change to the specified value at the maximum
- acceleration the robot is capable of; if the robot is already moving
- faster than its maximum maneuverability speed, it will not be able
- to change direction
- this call also terminates the current robot's turn
- SeeAlso: AX=0000h,AX=0002h,AX=0003h
- --------g-E00002-----------------------------
- INT E0 - PCROBOTS v1.41 - "SCAN" - SCAN FOR OTHER ROBOTS IN THE GIVEN DIRECTION
- AX = 0002h
- BX = direction (0-359 degrees)
- CX = resolution (0-45 degrees)
- Return: AX = status
- FFFFh if nothing detected
- else robot ID (0-19)
- BX = range to detected robot
- Notes: the scan searches within CX degrees to either side of the specified
- direction
- the scanner will see right through walls, but shells will not pass
- through walls
- this call also terminates the current robot's turn
- SeeAlso: AX=0000h,AX=0001h,AX=0003h
- --------g-E00003-----------------------------
- INT E0 - PCROBOTS v1.41 - "SHOOT" - FIRE A SHELL AT ANOTHER ROBOT
- AX = 0003h
- BX = direction (0-359 degrees)
- CX = range (0-700)
- Return: AX = status (0000h not fired, else ID of shell fired)
- Notes: up to seven shells may be in flight for a robot at one time; the cannon
- takes 50 ticks to reload
- this call also terminates the current robot's turn
- SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=002Ch
- --------g-E00010-----------------------------
- INT E0 - PCROBOTS v1.41 - "GETXY" - GET ROBOT'S CURRENT POSITION
- AX = 0010h
- Return: BX = current X coordinate (0-999)
- CX = current Y coordinate (0-999)
- --------g-E00011-----------------------------
- INT E0 - PCROBOTS v1.41 - "TRANSMIT" - SEND DATA TO ANOTHER ROBOT
- AX = 0011h
- BX = target robot ID
- CX = data to be sent
- Return: AX = status (0000h data could not be sent, 0001h data sent)
- Note: this call costs one unit of battery power
- --------g-E00012-----------------------------
- INT E0 - PCROBOTS v1.41 - "RECEIVE" - GET DATA FROM OTHER ROBOTS
- AX = 0012h
- Return: AX = status
- 0000h no data available
- 0001h data retrieved
- BX = sender's ID
- CX = data
- Note: each robot has a 20-word receive FIFO; if the FIFO is full, other
- robots will be unable to send more data until some is read
- --------g-E00013-----------------------------
- INT E0 - PCROBOTS v1.41 - "DAMAGE" - DETERMINE HOW MUCH DAMAGE SUSTAINED
- AX = 0013h
- Return: BX = damage status
- Note: the initial value depends on configuration, but is typically 100; as
- the robot is damaged, it decreases
- --------g-E00014-----------------------------
- INT E0 - PCROBOTS v1.41 - "SPEED" - DETERMINE HOW FAST ROBOT IS MOVING
- AX = 0014h
- Return: BX = current speed
- --------g-E00015-----------------------------
- INT E0 - PCROBOTS v1.41 - "BATTERY" - DETERMINE HOW MUCH BATTERY POWER LEFT
- AX = 0015h
- Return: BX = current battery charge
- Note: the battery starts off with 1000 units of charge, and is constantly
- being charged by solar panels and constantly discharged by motion;
- the battery is charged at 4 units per turn and discharged at
- 0.1*speed units per turn.
- --------g-E00016-----------------------------
- INT E0 - PCROBOTS v1.41 - "TICKS" - DETERMINE HOW LONG SINCE GAME STARTED
- AX = 0016h
- Return: BX:CX = number of game ticks elapsed (not related to real time)
- --------g-E00017-----------------------------
- INT E0 - PCROBOTS v1.41 - "L_SIN" - GET SCALED SINE OF AN ANGLE
- AX = 0017h
- BX = angle (0-359 degrees)
- Return: BX:CX = 100000*sine of angle
- SeeAlso: AX=0018h,AX=0019h,AX=001Ah,AX=001Bh
- --------g-E00018-----------------------------
- INT E0 - PCROBOTS v1.41 - "L_COS" - GET SCALED COSINE OF AN ANGLE
- AX = 0018h
- BX = angle (0-359 degrees)
- Return: BX:CX = 100000*cosine of angle
- SeeAlso: AX=0017h,AX=0019h,AX=001Ah
- --------g-E00019-----------------------------
- INT E0 - PCROBOTS v1.41 - "L_TAN" - GET SCALED TANGENT OF AN ANGLE
- AX = 0019h
- BX = angle (0-359 degrees)
- Return: BX:CX = 100000*tangent of angle
- SeeAlso: AX=0017h,AX=0018h,AX=001Ah
- --------g-E0001A-----------------------------
- INT E0 - PCROBOTS v1.41 - "L_ATAN" - GET ANGLE GIVEN SCALED TANGENT
- AX = 001Ah
- BX:CX = 100000*tangent of an angle
- Return: AX = angle (-90 to +90 degrees)
- SeeAlso: AX=0017h,AX=0018h,AX=0019h
- --------g-E0001B-----------------------------
- INT E0 - PCROBOTS v1.41 - "SQRT" - DETERMINE SQUARE ROOT OF A NUMBER
- AX = 001Bh
- BX:CX = value
- Return: BX:CX = square root
- SeeAlso: AX=0017h
- --------g-E0001C-----------------------------
- INT E0 - PCROBOTS v1.41 - "SET_PATTERN" - SPECIFY ROBOT'S DISPLAY IMAGE
- AX = 001Ch
- BX:CX -> pattern array
- Return: nothing
- Note: the pattern array consists of five bytes, the low five bits of each
- specifying the bit pattern for one line of the robot's screen display
- --------g-E0001D-----------------------------
- INT E0 - PCROBOTS v1.41 - "DEBUG_FLAG" - SET/CLEAR MARKERS NEXT TO ROBOT'S NAME
- AX = 001Dh
- BX = flag number (0 or 1)
- CX = new value (0 reset, 1 set)
- Return: nothing
- Program: PCROBOTS is P.D. Smith's adaptation of Tom Poindexter's CROBOTS, in
- which specially-written .COM or .EXE programs form robots battling
- each other in a user-defined arena
- Note: the two flag markers may be used for any purpose, typically for
- debugging to provide a visual display of progress
- --------g-E0001E-----------------------------
- INT E0 - PCROBOTS v1.41 - "BUY_ARMOUR" - BUY OR SELL ARMOR FOR ROBOT
- AX = 001Eh
- BX = number of armor units to buy (negative to sell)
- Return: nothing
- Note: each armor unit is worth 50 battery units; the robot's armor rating
- will not go above its initial rating, so attempts to purchase more
- will waste battery units
- SeeAlso: AX=001Fh
- --------g-E0001F-----------------------------
- INT E0 - PCROBOTS v1.41 - "BUY_SHELLS" - BUY ADDITIONAL CANNON SHELLS
- AX = 001Fh
- BX = number of shells to buy
- Return: nothing
- Note: each shell costs ten battery units
- SeeAlso: AX=001Eh,AX=0020h
- --------g-E00020-----------------------------
- INT E0 - PCROBOTS v1.41 - "SHELLS LEFT" - DETERMINE HOW MANY SHELLS ROBOT HAS
- AX = 0020h
- Return: BX = number of shells remaining
- SeeAlso: AX=001Fh
- --------g-E00021-----------------------------
- INT E0 - PCROBOTS v1.41 - "GET LOCAL MAP"
- AX = 0021h
- BX:CX -> 81-byte buffer for map (see #04060)
- Return: buffer filled with 9x9 area of map centered on robot's position
- (Table 04060)
- Values for PCROBOTS map squares:
- 2Eh '.' empty square
- 44h 'D' damaging trap
- 52h 'R' refueling point
- 58h 'X' wall
- --------g-E00022-----------------------------
- INT E0 - PCROBOTS v1.41 - "INVISIBILITY" - CONTROL ROBOT'S INVISIBILITY DEVICE
- AX = 0022h
- BX = new state (0000h become visible, 0001h become invisible)
- Return: nothing
- Notes: this function has no effect if the robot is not capable of invisibility
- the robot can only stay invisible for 100 turns, after which it will
- automatically become visible; it must also be remain visible for
- as many turns as it was invisible before it can turn invisible
- again
- SeeAlso: AX=0024h,AX=0080h
- --------g-E00023-----------------------------
- INT E0 - PCROBOTS v1.41 - "GET_SHELL_STATUS" - FIND OUT WHAT HAPPENED TO SHELL
- AX = 0023h
- Return: BX = status of last shell to land
- 0000h missed completely
- 0001h hit a wall
- 0002h hit a robot within 50-square radius
- 0003h hit a robot within 25-square radius
- 0004h hit a robot within 5-square radius
- --------g-E00024-----------------------------
- INT E0 - PCROBOTS v1.41 - "IS_INVISIBLE" - DETERMINE WHETHER ROBOT IS INVISIBLE
- AX = 0024h
- Return: BX = visibility (0000h visible, 0001h invisible)
- SeeAlso: AX=0022h,AX=0080h
- --------g-E00025-----------------------------
- INT E0 - PCROBOTS v1.41 - "L_ATAN2" - GET ARCTANGENT
- AX = 0025h
- BX = Y
- CX = X
- Return: AX = angle (arctangent of Y/X)
- --------g-E00026-----------------------------
- INT E0 - PCROBOTS v1.41 - "GET_ROBOT_ID" - DETERMINE CURRENT ROBOT'S IDENTIFIER
- AX = 0026h
- Return: AX = robot ID
- --------g-E00027-----------------------------
- INT E0 - PCROBOTS v1.41 - "REGISTER_IFF" - REGISTER FRIEND/FOE IDENT STRING
- AX = 0027h
- BX:CX = ASCIZ IFF string
- Return: nothing
- Note: the IFF string may only be set once
- SeeAlso: AX=0028h,AX=0029h
- --------g-E00028-----------------------------
- INT E0 - PCROBOTS v1.41 - "CHECK_IFF" - QUERY FRIEND/FOE IDENTIFICATION STRING
- AX = 0028h
- BX = robot ID to test
- Return: AX = status
- 0000h IFF strings match
- 0001h IFF strings differ or invalid robot ID
- SeeAlso: AX=0027h
- --------g-E00029-----------------------------
- INT E0 - PCROBOTS v1.41 - "REGISTER_NAME" - SPECIFY ROBOT'S NAME
- AX = 0029h
- BX:CX -> ASCIZ name string
- Return: nothing
- Note: the name may only be set once
- SeeAlso: AX=0027h,AX=002Ah
- --------g-E0002A-----------------------------
- INT E0 - PCROBOTS v1.41 - "FIND_NAME" - SEARCH FOR ROBOT WITH GIVEN NAME
- AX = 002Ah
- BX:CX -> ASCIZ name string
- DX = first ID to check
- Return: AX = robot ID or FFFFh if no robot with specified name
- SeeAlso: AX=0028h,AX=0029h,AX=002Bh
- --------g-E0002B-----------------------------
- INT E0 - PCROBOTS v1.41 - "GET_TEAM_ID" - DETERMINE TEAM MEMBERSHIP OF ROBOT
- AX = 002Bh
- Return: AX = team ID (0-2) or FFFFh if 'loner'
- SeeAlso: AX=0029h
- --------g-E0002C-----------------------------
- INT E0 - PCROBOTS v1.41 - "GET_ASHELL_STATUS" - FIND OUT WHAT HAPPENED TO SHELL
- AX = 002Ch
- BX = shell ID
- Return: AX = status
- 0000h missed completely
- 0001h hit a wall
- 0002h hit a robot within a 50-square radius
- 0003h hit a robot within a 25-square radius
- 0004h hit a robot within a 5-square radius
- 0005h shell not known (too old or not yet fired)
- 0006h shell still in flight
- SeeAlso: AX=0003h
- --------g-E0002D-----------------------------
- INT E0 - PCROBOTS v1.41 - "REGISTER_X" - SELECT AUTOMATIC X POSITION UPDATES
- AX = 002Dh
- BX:CX -> X word variable
- Return: AX = status (0001h OK, 0000h problem with address)
- Note: after this call, PCROBOTS will automatically update the specified
- word whenever the robot moves
- SeeAlso: AX=002Eh
- --------g-E0002E-----------------------------
- INT E0 - PCROBOTS v1.41 - "REGISTER_Y" - SELECT AUTOMATIC Y POSITION UPDATES
- AX = 002Eh
- BX:CX -> Y word variable
- Return: AX = status (0001h OK, 0000h problem with address)
- Note: after this call, PCROBOTS will automatically update the specified
- word whenever the robot moves
- SeeAlso: AX=002Dh
- --------g-E00080-----------------------------
- INT E0 - PCROBOTS v1.41 - "CONFIGURE" - CUSTOMIZE ROBOT
- AX = 0080h
- BX = basic configuration (see #04061)
- CX = advanced configuration (see #04062)
- Return: AX = status (0001h OK, 0000h not first call in program)
- Program: PCROBOTS is P.D. Smith's adaptation of Tom Poindexter's CROBOTS, in
- which specially-written .COM or .EXE programs form robots battling
- each other in a user-defined arena
- Notes: a maximum of ten points may be allocated to the robot; if you attempt
- to allocate more, some items will be given a value of zero. If this
- function is not called, each attribute is set to the default value
- of 2.
- if the invisibility option is chosen, the robot will start with only
- 900 cannon shells instead of the default 1000
- Bitfields for PCROBOTS basic configuration:
- Bit(s) Description (Table 04061)
- 0-3 maximum speed (0-4 = 50,75,100,150,200)
- 4-7 maneuverability (0-4 = 20%,35%,50%,75%,100%)
- 8-11 cannon range (0-4 = 300,500,700,1000,1500)
- 12-15 robot armor (0-4 = 50,75,100,150,200)
- Bitfields for PCROBOTS advanced configuration:
- Bit(s) Description (Table 04062)
- 0-2 robot acceleration (0-4 = 5,7,10,15,20)
- 3 capable of invisibility
- --------r-E1---------------------------------
- INT E1 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------N-E1---------------------------------
- INT E1 - PC Cluster Disk Server Information (NOT A VECTOR!)
- Desc: points at a data table
- SeeAlso: INT E2
- --------O-E1---------------------------------
- INT E1 - MP/M-86, - ALTERNATE CP/M-86 FUNCTION CALLS
- CL = function number (see #04019,#04020)
- DS,DX = parameters
- Return: as appropriate for function
- CX is often the error code (see #04021)
- Desc: used by some applications which alter CP/M functions while running a
- child program, to store the original INT E0 vector before
- intercepting INT E0
- SeeAlso: #04019 at INT E0"CP/M"
- ----------E1---------------------------------
- INT E1 - DeskMate (Tandy) - TASK DATA SEGMENTS (NOT A VECTOR!)
- Desc: used to store data; the low word of the vector is the data segment for
- the first task; the high word is the data segment of the second task
- (DeskMate supports 2-way task switching between small- or
- medium-model applications)
- Program: DeskMate is a proprietary GUI from Tandy distributed with several
- models of the Tandy 1000's, 2500's, 3000's, and laptops. Retail
- and runtime versions also exist. Some Tandy's are designed to
- boot directly into DeskMate.
- SeeAlso: INT E0"DeskMate"
- --------r-E2---------------------------------
- INT E2 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------N-E2---------------------------------
- INT E2 - PC Cluster Program - RELOCATED INT 1C
- SeeAlso: INT 1C
- --------r-E3---------------------------------
- INT E3 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-E40005-----------------------------
- INT E4 - Logitech Modula v2.0 - MonitorEntry
- AX = 0005h
- BX = priority
- Return: nothing
- SeeAlso: AX=0006h
- --------r-E40006-----------------------------
- INT E4 - Logitech Modula v2.0 - MonitorExit
- AX = 0006h
- Return: nothing
- SeeAlso: AX=0005h
- --------r-E4---------------------------------
- INT E4 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-E5---------------------------------
- INT E5 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-E6---------------------------------
- INT E6 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------O-E6---------------------------------
- INT E6 C - CP/M-86 v1.1 - UNKNOWN DISK DRIVE
- AX = function which accessed drive
- 0000h SELDSK
- 0001h READ
- 0002h WRITE
- 0003h HOME
- DX:BX -> parameter block (see #04063)
- Return: AX = return value
- Desc: called by CP/M-86 kernel when an unknown disk drive is used, which
- permits an application to provide access services
- Format of CP/M-86 unknown-drive paramter block:
- Offset Size Description (Table 04063)
- 00h BYTE drive number (00h = first unknown drive, etc.)
- 01h BYTE deblocking flag (00h = normal write, 01h = directory write)
- 02h WORD track number
- 04h WORD sector number
- 06h DWORD data transfer address
- 0Ah BYTE verify flag (nonzero to verify writes)
- Note: in CP/M-86 v1.1, this is actually a portion of a BIOS disk data
- table which starts one byte before the address given to the INT E6
- handler; that extra byte is the current logical drive number
- --------O-E600-------------------------------
- INT E6 - Linux DOSEMU - INSTALLATION CHECK
- AH = 00h
- Return: AX = AA55h if installed
- BH = major version number
- BL = minor version number
- CX = patchlevel
- Notes: check for the BIOS date string "02/25/93" at F000:FFF5 before
- calling this function. In addition, the segment address of this
- vector should be F000h (for existing versions of DOSemu, the
- vector is F000h:0E60h)
- SeeAlso: AH=FFh
- --------O-E601-------------------------------
- INT E6 - Linux DOSEMU - REGISTER DUMP
- AH = 01h
- Return: nothing
- SeeAlso: AH=00h
- --------O-E602-------------------------------
- INT E6 - Linux DOSEMU - SET I/O PORT PERMISSIONS
- AH = 02h
- BX = base I/O port address
- CX = number of consecutive I/O ports
- CF set to allow DOS to use ports
- CF clear if DOS should not be allowed to use ports
- Return: nothing
- SeeAlso: AH=00h
- --------O-E605-------------------------------
- INT E6 - Linux DOSEMU - STARTUP BANNER
- AH = 05h
- Return: nothing
- SeeAlso: AH=00h
- --------O-E612-------------------------------
- INT E6 - Linux DOSEMU - SET "HOGTHRESHOLD"
- AH = 12h
- BX = new "hogthreshold" (00h-99h)
- Return: nothing
- Desc: specify how much CPU time DOSEMU may use
- SeeAlso: AH=00h
- --------O-E622-------------------------------
- INT E6 - Linux DOSEMU - GET EMS STATUS
- AH = 22h
- Return: ???
- SeeAlso: AH=00h
- --------O-E630-------------------------------
- INT E6 - Linux DOSEMU - SET BOOTDISK FLAG
- AH = 30h
- BX = new flag state (0 = false, 1 = true)
- Return: nothing
- SeeAlso: AH=00h
- --------O-E650-------------------------------
- INT E6 - Linux DOSEMU - EXECUTE UNIX COMMAND
- AH = 50h
- ES:DX -> ASCIZ Unix command
- SeeAlso: AH=00h,AH=51h
- --------O-E651-------------------------------
- INT E6 - Linux DOSEMU - EXECUTE DOS COMMAND FROM UNIX
- AH = 51h
- ES:DX -> ASCIZ DOS command
- SeeAlso: AH=00h,AH=50h
- --------O-E680-------------------------------
- INT E6 - Linux DOSEMU - GET CURRENT UNIX DIRECTORY
- AH = 80h
- Return: ES:DX -> current Unix directory
- AX = length of current directory name
- SeeAlso: AH=00h,AH=81h
- --------O-E681-------------------------------
- INT E6 - Linux DOSEMU - CHANGE CURRENT UNIX DIRECTORY
- AH = 81h
- ES:DX -> ASCIZ directory name
- Return: nothing
- SeeAlso: AH=00h,AH=80h
- --------O-E6FF-------------------------------
- INT E6 - Linux DOSEMU - TERMINATE
- AH = FFh
- SeeAlso: AH=00h
- --------r-E7---------------------------------
- INT E7 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-E8---------------------------------
- INT E8 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-E9---------------------------------
- INT E9 - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-EA---------------------------------
- INT EA - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-EB---------------------------------
- INT EB - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------r-EC---------------------------------
- INT EC - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC
- BASIC.COM/BASICA.COM do not restore vector on termination
- --------N-EC---------------------------------
- INT EC - used by Alloy NTNX
- --------r-EC---------------------------------
- INT EC - Exact - RUNTIME INTERFACE MULTIPLEXOR
- AX = function number (0000h to 0140h)
- STACK: DWORD address to return to
- any arguments required by function
- Return: STACK: return address popped, but otherwise unchanged
- Desc: this is the interface from applications to the runtime system by Exact
- Automatisering B.V. of the Netherlands. By using this interrupt,
- it can provide DLL-style capabilities under MS-DOS.
- Note: the interrupt handler removes the return address and flags placed on
- the stack by the INT EC, then jumps to the appropriate function
- --------r-ED---------------------------------
- INT ED - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- INT 80 through INT ED are modified but not restored by Direct Access
- v4.0, and may be left dangling by other programs written with the
- same version of compiled BASIC
- SeeAlso: INT EC"BASIC",INT EE"BASIC"
- --------r-EE---------------------------------
- INT EE - IBM ROM BASIC - used while in interpreter
- Notes: called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
- BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT ED"BASIC",INT EE"BASIC"
- --------r-EF---------------------------------
- INT EF - BASIC - ORIGINAL INT 09 VECTOR
- Note: BASIC.COM/BASICA.COM do not restore vector on termination
- SeeAlso: INT EE"BASIC",INT F0"BASIC"
- --------O-EF----CX00C8-----------------------
- INT EF - GEM - AES INTERFACE
- CX = 00C8h
- DX = 0000h
- ES:BX -> AES parameter block (see #04064)
- SeeAlso: INT EF/CX=00C9h,INT EF/CX=0473h
- Format of AES parameter block:
- Offset Size Description (Table 04064)
- 00h DWORD -> control array (see #04065)
- 04h DWORD -> global variables (15 WORDs)
- 08h DWORD -> integer input parameters
- 0Ch DWORS -> buffer for integer results
- 10h DWORD -> address (DWORD) input parameters
- 14h DWORD -> buffer for address (DWORD) results
- SeeAlso: #04066
- Format of AES control array:
- Offset Size Description (Table 04065)
- 00h WORD function number (000Ah-0084h)
- 02h WORD number of words of integer input parameters
- 04h WORD number of words available for integer results
- 06h WORD number of words of address input parameters
- 08h WORD number of words available for address results
- SeeAlso: #04064
- --------O-EF----CX00C9-----------------------
- INT EF - GEM - AES INTERFACE
- CX = 00C9h
- DX = 0000h
- ES:BX -> AES parameter block (see #04064)
- SeeAlso: INT EF/CX=00C8h,INT EF/CX=0473h
- --------O-EF----CX0473-----------------------
- INT EF - GEM - VDI INTERFACE
- CX = 0473h
- DS:DX -> GEM VDI parameter block (see #04066)
- Note: if installed, one of the following ASCII signatures will appear two
- bytes after the INT EF entry point:
- "GEMVDI" GEM VDI (but not AES) is present
- "GEMAES" GEM/ViewMAX VDI and AES are both present
- "ViewMAX" ViewMAX VDI (only) is present
- each of the above is followed by an ASCIZ number indicating the
- version ("10" for GEM/1 AES and VDI; "20" for GEM/2,GEM/3,ViewMAX
- AES and GEM/2 VDI; "23" for GEM/3 VDI; and "1" for ViewMAX VDIs)
- SeeAlso: INT EF/CX=00C8h,INT EF/CX=00C9h
- Index: installation check;GEM
- Format of VDI parameter block:
- Offset Size Description (Table 04066)
- 00h DWORD -> control array (see #04067)
- 08h DWORD -> integer parameters
- 0Ch DWORD -> (x,y) pair parameters
- 10h DWORD -> integer results
- 14h DWORD -> (x,y) pair results
- SeeAlso: #04064
- Format of VDI control array:
- Offset Size Description (Table 04067)
- 00h WORD (call) function number (0001h-0084h)
- 02h WORD (call) number of words of pair parameters
- 04h WORD (ret) number of words of pair results
- 06h WORD (call) number of words of integer parameters
- 08h WORD (ret) number of words of integer results
- 0Ah WORD subfunction number
- 0Ch WORD graphics handle
- 0Eh DWORD (call) -> pointer parameter
- 12h DWORD (ret) -> pointer result
- SeeAlso: #04066
- --------r-F0---------------------------------
- INT F0 - BASICA.COM, GWBASIC, compiled BASIC - ORIGINAL INT 08 VECTOR
- Note: BASICA.COM does not restore vector on termination
- SeeAlso: INT EF"BASIC"
- --------*-F1---------------------------------
- INT F1 - reserved for user interrupt
- --------s-F1---------------------------------
- INT F1 - SPEECH.COM - CONVERT TEXT STRING TO SPEECH
- DS:BX -> '$'-terminated text string
- Return: nothing
- Program: SPEECH.COM is a resident text-to-speech converter by Douglas Sisco
- --------s-F1---------------------------------
- INT F1 - Andy C. McGuire SPEECH.COM/SAY.COM
- SeeAlso: INT F2"SPEECH"
- --------U-F1---------------------------------
- INT F1 - AQUEDUCT, PIPELINE - GET DATA AREA ADDRESS
- Return: AX:BX -> data area
- Program: AQUEDUCT and PIPELINE are TSRs by James W. Birdsall to connect COM1
- and COM2 in software
- Note: The installation check consists of testing for the following signature
- immediately preceding the interrupt handler: "JWBtvv" where 't' is
- either "A" for AQUEDUCT or "P" for PIPELINE and "vv" is a two-digit
- version number
- Index: installation check;AQUEDUCT|installation check;PIPELINE
- --------N-F1---------------------------------
- INT F1 - NetWare Remote Boot - INSTALLATION CHECK (NOT A VECTOR!)
- Note: if this vector contains the value 5774654Eh ("NetW"), the remote boot
- BIOS extension is active, and access to the floppy disk is redirected
- to an image file in the server's SYS:LOGIN directory
- SeeAlso: INT F2"NetWare",INT F3"NetWare",INT F4"NetWare"
- --------v-F1---------------------------------
- INT F1 - VIRUS - "Violetta" - ???
- Note: used but not chained by virus
- SeeAlso: INT E0"VIRUS",INT FF"VIRUS"
- ----------F101-------------------------------
- INT F1 - Common ISDN API (CAPI) v1.1 - "API-REGISTER" - INITIALIZE CAPI
- AH = 01h
- ES:BX -> buffer for CAPI's use (refer to note below)
- CX = minimum number of pending messages
- DX = maximum simultaneous Level 3 connections
- SI = maximum concurrent received B3 data blocks
- DI = maximum B3 data block size
- Return: AX = CAPI-assigned application ID
- 0000h on error
- BX = error number
- 1001h registration error
- Range: INT 00 to INT FF, selectable by program parameter
- Notes: the caller is required to provide at least 512 bytes of stack space
- the CAPI interrupt handler begins with a header which is nearly
- identical to the IBM Interrupt Sharing Protocol header
- (see #02568 at INT 2D"AMIS"), except that the short jump instruction
- to a hardware reset handler at offset 09h is replaced by the
- signature bytes "IA"
- the maximum length of a message is fixed at 180 bytes; the standard
- document suggests using CX=10, DI=1, SI=7, and DI=130 for
- applications which use only a single connection and standard
- protocols
- the total size of the application-provided buffer must be at least
- 180*CX + DX*SI*DI bytes
- SeeAlso: AH=02h,INT F1/AL=01h
- Index: installation check;Common ISDN API
- ----------F1--01-----------------------------
- INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_REGISTER" - INITIALIZE CAPI
- AL = 01h
- AH = CAPI version number * 10 (14h for v2.0)
- ES:BX -> buffer for CAPI's use (refer to note below)
- CX = number of bytes for message buffer
- DX = maximum simultaneous logical (Level 3) connections
- SI = maximum concurrent received B3 data blocks (min. 2)
- DI = maximum B3 data block size (up to 2048 bytes)
- Return: AX = CAPI-assigned application ID
- 0000h on error
- BX = error number
- 1001h registration error
- Range: INT 00 to INT FF, selectable by program parameter
- Notes: the caller is required to provide at least 512 bytes of stack space
- the CAPI interrupt handler begins with a header (see #04068) which is
- nearly identical to the IBM Interrupt Sharing Protocol header
- (see #02568 at INT 2D"AMIS"), except that the short jump instruction
- to a hardware reset handler at offset 09h is zeroed out and the
- entire header is inexplicably shortened by one byte
- the standard document suggests using 1024 + (1024*DX) bytes for the
- message buffer for typical applications
- the total size of the application-provided buffer must be at least
- CX + DX*SI*DI bytes
- SeeAlso: AH=01h,INT F1/AL=02h
- Index: installation check;Common ISDN API
- Format of CAPI v2.0 interrupt handler entry point:
- Offset Size Description (Table 04068)
- 00h 2 BYTEs short jump to actual start of interrupt handler, immediately
- following this data block (EBh 0Fh)
- 02h DWORD address of next handler in chain
- 06h WORD signature 424Bh
- 08h BYTE EOI flag (80h)
- 80h primary hardware interrupt handler (will issue EOI)
- 09h 2 BYTEs reserved (0)
- (is short jump to hardware reset routine in ISP header)
- 0Bh 4 BYTEs signature "CAPI"
- 0Fh 2 BYTEs two-digit CAPI version number in ASCII ('20')
- SeeAlso: #02568 at INT 2D
- ----------F102-------------------------------
- INT F1 - Common ISDN API (CAPI) v1.1 - "API-RELEASE" - UNREGISTER FROM CAPI
- AH = 02h
- DX = application ID (see AH=01h)
- Return: AX = status (0000h,1002h) (see #04069)
- Notes: the caller is required to provide at least 512 bytes of stack space
- SeeAlso: AH=01h,INT F1/AL=02h
- (Table 04069)
- Values for CAPI v1.1 error code:
- 0000h successful
- 1001h registration error
- 1002h invalid application ID
- 1003h message too small or incorrectly coded message number
- 1004h invalid command or subcommand
- 1005h message queue full
- 1006h message queue empty
- 1007h message(s) lost due to queue overflow
- 1008h error uninstalling
- SeeAlso: #04070
- ----------F1--02-----------------------------
- INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_RELEASE" - UNREGISTER FROM CAPI
- AL = 02h
- AH = CAPI version number * 10 (14h for v2.0)
- DX = application ID (see INT F1/AL=01h)
- Return: AX = status (0000h,11xxh) (see #04070)
- Notes: the caller is required to provide at least 512 bytes of stack space
- SeeAlso: AH=02h,INT F1/AL=01h,INT F1/AL=03h
- (Table 04070)
- Values for CAPI v2.0 error code:
- 0000h successful
- 1001h too many applications
- 1002h logical block size too small (must be at least 128 bytes)
- 1003h buffer > 64K
- 1004h message buffer too small (minimum 1024 bytes)
- 1005h too many logical connections requested
- 1006h reserved
- 1007h could not register because CAPI busy, try again
- 1008h OS resource unavailable (out of memory, etc.)
- 1009h COMMON-ISDN-API not installed
- 100Ah controller does not support external equipment
- 100Bh controller supports only external equipment
- 1101h invalid application ID
- 1102h illegal command or subcommand, or message too short
- 1103h message queue full
- 1104h queue empty
- 1105h queue overflowed (message lost)
- 1106h unknown notification parameter
- 1107h could not accept message because CAPI busy, try again
- 1108h OS resource unavailable (out of memory, etc.)
- 1109h COMMON-ISDN-API not installed
- 110Ah controller does not support external equipment
- 110Bh controller supports only external equipment
- 2001h message not supported in current state
- 2002h illegal controller/PLCI/NCCI
- 2003h out of PLCI
- 2004h out of NCCI
- 2005h out of LISTEN
- 2006h out of FAX resources (T.30 protocol)
- 2007h illegal message parameter coding
- 3001h unsupported B1 protocol
- 3002h unsupported B2 protocol
- 3003h unsupported B3 protocol
- 3004h unsupported B1 protocol parameter
- 3005h unsupported B2 protocol parameter
- 3006h unsupported B3 protocol parameter
- 3007h unsupported B protocol combination
- 3008h NCPI not supported
- 3009h unknown CIP value
- 300Ah unsupported flags (reserved bits set)
- 300Bh unsupported facility
- 300Ch data length not supported by current protocol
- 300Dh reset procedure not supported by current protocol
- SeeAlso: #04069
- ----------F103-------------------------------
- INT F1 - Common ISDN API (CAPI) v1.1 - "API-PUT-MESSAGE"
- AH = 03h
- DX = application ID (see AH=01h)
- ES:BX -> message to be sent (see #04071)
- Return: AX = status (0000h,1002h,1003h,1004h,1005h) (see #04069)
- Notes: the caller is required to provide at least 512 bytes of stack space
- the message buffer may be reused as soon as this call returns
- SeeAlso: AH=01h,AH=04h,INT F1/AL=03h
- Format of CAPI message:
- Offset Size Description (Table 04071)
- 00h WORD total message length, including header
- 02h WORD application ID (see AH=01h)
- 04h BYTE command (see #04072,#04073)
- 05h BYTE subcommand (see #04072,#04073)
- 06h WORD message sequence number
- 0000h-7FFFh messages from application to CAPI (and replies)
- 8000h-FFFFh messages from CAPI to application (and replies)
- 08h var message data (max 172 bytes for v1.1 only)
- (Table 04072)
- Values for CAPI v1.1 message command/subcommand:
- Cmd/SubCmd Name Description
- 01h/00h RESET-B3-REQ request resetting of a Level 3 connection
- 01h/01h RESET-B3-CONF confirm Level 3 connection reset
- 01h/02h RESET-B3-IND indication from CAPI that Level 3 conn. reset
- 01h/03h RESET-B3-RESP confirm receipt of RESET-B3-IND
- 02h/00h CONNECT-REQ establish B-channel connection
- 02h/01h CONNECT-CONF confirm start of connection establishment
- 02h/02h CONNECT-IND indication from CAPI of incoming connection
- 02h/03h CONNECT-RESP accept incoming connection
- 03h/02h CONNECT-ACTIVE-IND indication that B-channel connection complete
- 03h/03h CONNECT-ACTIVE-RESP confirm connection-complete indication
- 04h/00h DISCONNECT-REQ request shutdown of B-channel connection
- 04h/01h DISCONNECT-CONF confirm shutdown of B-channel connection
- 04h/02h DISCONNECT-IND indication that B-channel is shutting down
- 04h/03h DISCONNECT-RESP confirm that application knows of shutdown
- 05h/00h LISTEN-REQ enable indication of incoming connections
- 05h/01h LISTEN-CONF confirm enabling of incoming conn. indication
- 06h/00h GET-PARAMS-REQ request B-channel parameters
- 06h/01h GET-PARAMS-CONF return B-channel parameters
- 07h/00h INFO-REQ set B-channel info to be signalled to app
- 07h/01h INFO-CONF confirm B-channel info signalling
- 07h/02h INFO-IND signal B-channel events to application
- 07h/03h INFO-CONF confirm receipt of INFO-IND
- 08h/00h DATA-REQ send D-channel data
- 08h/01h DATA-CONF confirm receipt of DATA-REQ
- 08h/02h DATA-IND receive D-channel data
- 08h/03h DATA-RESP confirm receipt fo DATA-IND
- 09h/00h CONNECT-INFO-REQ request connection information
- 09h/01h CONNECT-INFO-CONF return connection information
- 40h/00h SELECT-B2-PROTOCOL-REQ select Level 2 protocol
- 40h/01h SELECT-B2-PROTOCOL-CONF confirm receipt of SELECT-B2-PROTOCOL-REQ
- 80h/00h SELECT-B3-PROTOCOL-REQ select Level 3 protocol
- 80h/01h SELECT-B3-PROTOCOL-CONF confirm receipt of SELECT-B3-PROTOCOL-REQ
- 81h/00h LISTEN-B3-REQ enable notification of incoming Level 3 calls
- 81h/01h LISTEN-B3-CONF confirm receipt of LISTEN-B3-REQ
- 82h/00h CONNECT-B3-REQ establish Level 3 connection
- 82h/01h CONNECT-B3-CONF confirm start of connection establishment
- 82h/02h CONNECT-B3-IND indication of incoming Level 3 connection
- 82h/03h CONNECT-B3-RESP accept incoming connection
- 83h/02h CONNECT-B3-ACTIVE-IND indication that Level 3 connection complete
- 83h/03h CONNECT-B3-ACTIVE-RESP confirm connection-complete indication
- 84h/00h DISCONNECT-B3-REQ request shutdown of Level 3 connection
- 84h/01h DISCONNECT-B3-CONF confirm shutdown of Level 3 connection
- 84h/02h DISCONNECT-B3-IND indication that Level 3 is shutting down
- 84h/03h DISCONNECT-B3-RESP confirm that application knows of shutdown
- 85h/00h GET-B3-PARAMS-REQ request Level 3 parameters
- 85h/01h GET-B3-PARAMS-CONF return Level 3 parameters
- 86h/00h DATA-B3-REQ send data on Level 3
- 86h/01h DATA-B3-CONF confirm sending of Level 3 data
- 86h/02h DATA-B3-IND indication of incoming Level 3 data
- 86h/03h DATA-B3-RESP confirm receipt of Level 3 data
- 87h/02h HANDSET-IND indication of Handset events
- 87h/03h HANDSET-RESP confirm receipt of Handset event
- FFh/00h MANUFACTURER-REQ vendor-specific request
- FFh/01h MANUFACTURER-CONF vendor-specific request confirmation
- FFh/02h MANUFACTURER-IND vendor-specific notification
- FFh/03h MANUFACTURER-RESP vendor-specific notification confirmation
- SeeAlso: #04071,#04073
- ----------F1--03-----------------------------
- INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_PUT_MESSAGE"
- AL = 03h
- AH = CAPI version number * 10 (14h for v2.0)
- DX = application ID (see INT F1/AL=01h)
- ES:BX -> message to be sent (see #04071)
- Return: AX = status (0000h,11xxh) (see #04070)
- Notes: the caller is required to provide at least 512 bytes of stack space
- the message buffer may be reused as soon as this call returns
- SeeAlso: AH=03h,INT F1/AL=01h,INT F1/AL=04h
- (Table 04073)
- Values for CAPI v2.0 message command/subcommand:
- Cmd/SubCmd Name Description
- 01h/80h ALERT_REQ indicate compatibility with incoming calls
- 01h/81h ALERT_CONF confirm receipt of ALERT_REQ
- 02h/80h CONNECT_REQ establish B-channel connection
- 02h/81h CONNECT_CONF confirm start of connection establishment
- 02h/82h CONNECT_IND indication from CAPI of incoming connection
- 02h/83h CONNECT_RESP accept incoming connection
- 03h/82h CONNECT_ACTIVE_IND indication that B-channel connection complete
- 03h/83h CONNECT_ACTIVE_RESP confirm connection-complete indication
- 04h/80h DISCONNECT_REQ request shutdown of B-channel connection
- 04h/81h DISCONNECT_CONF confirm shutdown of B-channel connection
- 04h/82h DISCONNECT_IND indication that B-channel is shutting down
- 04h/83h DISCONNECT_RESP confirm that application knows of shutdown
- 05h/80h LISTEN_REQ enable signalling on incoming events
- 05h/81h LISTEN_CONF confirm enabling of incoming event signalling
- 08h/80h INFO_REQ send protocol information for physical connect
- 08h/81h INFO_CONF confirm INFO_REQ
- 08h/82h INFO_IND indicate event for physical connection
- 08h/83h INFO_CONF confirm receipt of INFO_IND
- 41h/80h SELECT_B_PROTOCOL_REQ change protocol on already-active connect
- 41h/81h SELECT_B_PROTOCOL_CONF confirm receipt of SELECT_B_PROTOCOL_REQ
- 80h/80h FACILITY_REQ control optional facilities
- 80h/81h FACILITY_CONF confirm acceptance of FACILITY_REQ
- 80h/82h FACILITY_IND indicate facility-dependent event
- 80h/83h FACILITY_RESP confirm receipt of FACILITY_IND
- 82h/80h CONNECT_B3_REQ establish Level 3 connection
- 82h/81h CONNECT_B3_CONF confirm start of connection establishment
- 82h/82h CONNECT_B3_IND indication of incoming Level 3 connection
- 82h/83h CONNECT_B3_RESP accept incoming connection
- 83h/82h CONNECT_B3_ACTIVE_IND indication that Level 3 connection complete
- 83h/83h CONNECT_B3_ACTIVE_RESP confirm connection-complete indication
- 84h/80h DISCONNECT_B3_REQ request shutdown of Level 3 connection
- 84h/81h DISCONNECT_B3_CONF confirm shutdown of Level 3 connection
- 84h/82h DISCONNECT_B3_IND indication that Level 3 is shutting down
- 84h/83h DISCONNECT_B3_RESP confirm that application knows of shutdown
- 85h/80h GET_B3_PARAMS_REQ request Level 3 parameters
- 85h/81h GET_B3_PARAMS_CONF return Level 3 parameters
- 86h/80h DATA_B3_REQ send data on Level 3
- 86h/81h DATA_B3_CONF confirm sending of Level 3 data
- 86h/82h DATA_B3_IND indication of incoming Level 3 data
- 86h/83h DATA_B3_RESP confirm receipt of Level 3 data
- 87h/80h RESET_B3_REQ request resetting of a logical connection
- 87h/81h RESET_B3_CONF confirm logical connection reset
- 87h/82h RESET_B3_IND indication from CAPI that logical conn. reset
- 87h/83h RESET_B3_RESP confirm receipt of RESET_B3_IND
- 88h/82h CONNECT_B3_T90_ACTIVE_IND indicate switch from T.70 to T.90
- 88h/83h CONNECT_B3_T90_ACTIVE_RESP confirm receipt of T90_ACTIVE_IND
- FFh/80h MANUFACTURER_REQ vendor-specific request
- FFh/81h MANUFACTURER_CONF vendor-specific request confirmation
- FFh/82h MANUFACTURER_IND vendor-specific notification
- FFh/83h MANUFACTURER_RESP vendor-specific notification confirmation
- SeeAlso: #04071,#04072
- ----------F104-------------------------------
- INT F1 - Common ISDN API (CAPI) v1.1 - "API-GET-MESSAGE"
- AH = 04h
- DX = application ID (see AH=01h)
- Return: AX = status (0000h,1002h,1006h,1007h) (see #04069)
- ES:BX -> message if successful (see #04071)
- Range: INT 00 to INT FF, selectable by program parameter
- Notes: the caller is required to provide at least 512 bytes of stack space
- the returned message may be overwritten by the next call to this
- function
- SeeAlso: AH=03h
- ----------F1--04-----------------------------
- INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_MESSAGE"
- AL = 04h
- AH = CAPI version number * 10 (14h for v2.0)
- DX = application ID (see AH=01h)
- Return: AX = status (0000h,11xxh) (see #04070)
- ES:BX -> message if successful (see #04071)
- Range: INT 00 to INT FF, selectable by program parameter
- Notes: the caller is required to provide at least 512 bytes of stack space
- the returned message may be overwritten by the next call to this
- function
- SeeAlso: AH=04h,INT F1/AL=03h
- ----------F105-------------------------------
- INT F1 - Common ISDN API (CAPI) v1.1 - "API-SET-SIGNAL" - SIGNAL HANDLING
- AH = 05h
- DX = application ID (see AH=01h)
- ES:BX -> signal handler or 0000h:0000h to disable
- Return: AX = status (0000h,1002h) (see #04069)
- Notes: the caller is required to provide at least 512 bytes of stack space
- the signal handler is called as though it were an interrupt, with
- interrupts disabled; the handler must preserve all registers and
- return with an IRET
- SeeAlso: AH=01h
- ----------F1--05-----------------------------
- INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_SET_SIGNAL" - SIGNAL HANDLING
- AL = 05h
- AH = CAPI version number * 10 (14h for v2.0)
- DX = application ID (see AH=01h)
- ES:BX -> signal handler or 0000h:0000h to disable
- SI:DI = parameter to pass to signal handler
- Return: AX = status (0000h,11xxh) (see #04070)
- Notes: the caller is required to provide at least 512 bytes of stack space
- the signal handler is called as though it were an interrupt, with
- interrupts disabled and DX,SI,DI set as they were when this function
- was called; the handler must preserve all registers and return with
- an IRET
- the signal handler may call CAPI_PUT_MESSAGE, CAPI_GET_MESSAGE, and
- CAPI_SET_SIGNAL
- SeeAlso: INT F1/AL=01h
- ----------F106-------------------------------
- INT F1 - Common ISDN API (CAPI) v1.1 - "API-DEINSTALL" - UNINSTALL
- AH = 06h
- BX = force flag
- 0000h normal uninstall
- 0001h forced uninstall
- Return: AX = status (0000h,1008h) (see #04069)
- Desc: reset ISDN controller, close all ISDN Level 1 connections except for
- telephone connections
- Notes: the caller is required to provide at least 512 bytes of stack space
- SeeAlso: INT F1/AL=01h,INT F1/AH=01h
- ----------F1F0-------------------------------
- INT F1 - Common ISDN API (CAPI) v1.1 - "API-GET-MANUFACTURER"
- AH = F0h
- ES:BX -> 64-byte buffer for manufacturer identification information
- Return: ES:BX buffer filled with ASCIZ idnetification string
- Range: INT 00 to INT FF, selectable by program parameter
- Notes: the caller is required to provide at least 512 bytes of stack space
- SeeAlso: AH=01h,AH=F1h,AH=F2h,AH=FFh,INT F1/AL=F0h
- ----------F1--F0-----------------------------
- INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_MANUFACTURER"
- AL = F0h
- AH = CAPI version number * 10 (14h for v2.0)
- ES:BX -> 64-byte buffer for manufacturer identification information
- Return: ES:BX buffer filled with ASCIZ idnetification string
- Range: INT 00 to INT FF, selectable by program parameter
- Notes: the caller is required to provide at least 512 bytes of stack space
- SeeAlso: AH=F0h,INT F1/AL=01h,INT F1/AL=F1h,INT F1/AL=F2h,INT F1/AL=FFh
- ----------F1F1-------------------------------
- INT F1 - Common ISDN API (CAPI) v1.1 - "API-GET-VERSION"
- AH = F1h
- ES:BX -> 64-byte buffer for CAPI version number
- Return: ES:BX buffer filled with ASCIZ version string
- Notes: the caller is required to provide at least 512 bytes of stack space
- SeeAlso: AH=01h,AH=F0h,AH=F2h,AH=FFh
- ----------F1--F1-----------------------------
- INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_VERSION"
- AL = F1h
- AH = CAPI version number * 10 (14h for v2.0)
- Return: AH = CAPI major version number
- AL = CAPI minor version number
- DH = vendor-specific major version
- DL = vendor-specific minor version
- Notes: the caller is required to provide at least 512 bytes of stack space
- SeeAlso: AH=F1h,INT F1/AL=01h,INT F1/AL=F0h,INT F1/AL=F2h,INT F1/AL=FFh
- ----------F1F2-------------------------------
- INT F1 - Common ISDN API (CAPI) v1.1 - "API-GET-SERIAL-NUMBER"
- AH = F2h
- ES:BX -> 64-byte buffer for CAPI serial number
- Return: ES:BX buffer filled with ASCIZ serial number (seven digits), empty
- string if no serial number
- Notes: the caller is required to provide at least 512 bytes of stack space
- SeeAlso: AH=01h,AH=F0h,AH=F1h,AH=FFh
- ----------F1--F2-----------------------------
- INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_SERIAL_NUMBER"
- AL = F2h
- AH = CAPI version number * 10 (14h for v2.0)
- ES:BX -> 64-byte buffer for CAPI serial number
- Return: ES:BX buffer filled with ASCIZ serial number (seven digits), empty
- string if no serial number
- Notes: the caller is required to provide at least 512 bytes of stack space
- SeeAlso: AH=F2h,INT F1/AL=01h,INT F1/AL=F0h,INT F1/AL=F1h,INT F1/AL=F3h
- ----------F1--F3-----------------------------
- INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_PROFILE" - GET CAPABILITIES
- AL = F3h
- AH = CAPI version number * 10 (14h for v2.0)
- ES:BX -> 64-byte buffer for CAPI capabilities (see #04074)
- CX = controller number (01h-06h) or 0000h to get number of controllers
- Return: AX = status (0000h,11xxh) (see #04070)
- ES:BX buffer filled if successful
- Notes: the caller is required to provide at least 512 bytes of stack space
- SeeAlso: INT F1/AL=01h,INT F1/AL=F0h,INT F1/AL=F2h,INT F1/AH=FFh
- Format of CAPI v2.0 capabilities:
- Offset Size Description (Table 04074)
- 00h WORD number of installed controllers
- 02h WORD number of supported B channels
- 04h DWORD global options (see #04075)
- 08h DWORD B1 protocol support flags (see #04076)
- 0Ch DWORD B2 protocol support flags (see #04077)
- 10h DWORD B3 protocol support flags (see #04078)
- 14h 24 BYTEs reserved for CAPI use
- 2Ch 20 BYTEs vendor-specific information
- Bitfields for CAPI v2.0 global options:
- Bit(s) Description (Table 04075)
- 0 internal controller supported
- 1 external controller supported
- 2 handset supported (only if bit 1 also set)
- 3 DTMF supported
- 4-31 reserved (0)
- SeeAlso: #04074
- Bitfields for CAPI v2.0 B1 protocol support:
- Bit(s) Description (Table 04076)
- 0 64k bps with HDLC framing (required, always set)
- 1 64k bps bit-transparent operation with network byte framing
- 2 V.110 asynchronous with start/stop byte framing
- 3 V.110 synchronous with HDLC framing
- 4 T.30 modem for group 3 FAX
- 5 64k bps inverted with HDLC framing
- 6 56k bps bit-transparent operation with network byte framing
- 7-31 reserved (0)
- SeeAlso: #04074
- Bitfields for CAPI v2.0 B2 protocol support:
- Bit(s) Description (Table 04077)
- 0 ISO 7776 (X.75 SLP) (required, always set)
- 1 transparent
- 2 SDLC
- 3 Q.921 LAPD (D-channel X.25)
- 4 T.30 for group 3 FAX
- 5 point-to-point protocol (PPP)
- 6 transparent (ignoring B1 framing errors)
- 7-31 reserved (0)
- SeeAlso: #04074
- Bitfields for CAPI v2.0 B3 protocol support:
- Bit(s) Description (Table 04078)
- 0 transparent (required, always set)
- 1 T.90NL with T.70NL compatibility
- 2 ISO 8208 (X.25 DTE-DTE)
- 3 X.25 DCE
- 4 T.30 for group 3 FAX
- 5-31 reserved (0)
- SeeAlso: #04074
- ----------F1FF-------------------------------
- INT F1 - Common ISDN API (CAPI) v1.1 - "API-MANUFACTURER" - VENDOR-SPECIFIC
- AH = FFh
- other registers vendor-specific
- Return: registers vendor-specific
- Range: INT 00 to INT FF, selectable by program parameter
- Notes: the caller is required to provide at least 512 bytes of stack space
- SeeAlso: AH=01h,AH=F0h,AH=F1h,AH=F2h,INT F1/AH=FFh
- ----------F1--FF-----------------------------
- INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_MANUFACTURER" - VENDOR-SPECIFIC
- AL = FFh
- AH = CAPI version number * 10 (14h for v2.0)
- other registers vendor-specific
- Return: registers vendor-specific
- Range: INT 00 to INT FF, selectable by program parameter
- Notes: the caller is required to provide at least 512 bytes of stack space
- SeeAlso: AH=FFh,INT F1/AL=01h,INT F1/AL=F0h,INT F1/AL=F1h,INT F1/AL=F2h
- --------*-F2---------------------------------
- INT F2 - reserved for user interrupt
- --------s-F2---------------------------------
- INT F2 - Andy C. McGuire SPEECH.COM/SAY.COM
- SeeAlso: INT F1"SPEECH"
- --------N-F2---------------------------------
- INT F2 - NetWare Remote Boot - ORIGINAL INT 13
- SeeAlso: INT F1"NetWare",INT F3"NetWare",INT F4"NetWare"
- ----------F2---------------------------------
- INT F2 - ICCTSR 1.0 - ImageCapture COLOR Developer's Kit - API
- AH = function number (see #04079)
- ???
- Return: ???
- Program: ImageCapture is a product of International Computers
- SeeAlso: INT F3"ICCTSR"
- (Table 04079)
- Values for ImageCapture function:
- 01h power up
- 02h power down
- 03h set controls
- 04h capture image
- 05h display image
- 06h read file
- 07h write file
- 08h write array
- 09h read pixel
- 0Ah write pixel
- 0Bh check if VGA present
- 0Ch set video mode
- 0Dh check for keystroke
- 0Eh delay
- --------*-F3---------------------------------
- INT F3 - reserved for user interrupt
- SeeAlso: INT F2"user",INT F4"user"
- --------s-F3---------------------------------
- INT F3 - SoundBlaster - POINTER TO ECHO VALUE
- Note: this is not a vector, but a pointer to a DWORD containing the echo
- value selected with SET-ECHO.EXE
- SeeAlso: INT 2F/AX=FBFBh/ES=0000h
- ----------F3---------------------------------
- INT F3 - ICCTSR 1.0 - HANDSHAKE ID VECTOR
- Program: ImageCapture is a product of International Computers
- SeeAlso: INT F2"ICCTSR"
- --------N-F3---------------------------------
- INT F3 - NetWare Remote Boot - BOOT ROM'S INT 13 HANDLER
- SeeAlso: INT F1"NetWare",INT F2"NetWare",INT F4"NetWare"
- --------*-F4---------------------------------
- INT F4 - reserved for user interrupt
- SeeAlso: INT F3"user",INT F5"user"
- --------T-F4---------------------------------
- INT F4 - DoubleDOS - GIVE UP REST OF CURRENT CLOCK TICK AND ALL OF NEXT TICK
- SeeAlso: INT 21/AH=EEh"DoubleDOS",INT F5"DoubleDOS",INT FE"DoubleDOS"
- --------N-F4---------------------------------
- INT F4 - NetWare Remote Boot - ???
- SeeAlso: INT F1"NetWare",INT F2"NetWare",INT F3"NetWare"
- --------*-F5---------------------------------
- INT F5 - reserved for user interrupt
- SeeAlso: INT F4"user",INT F6"user"
- --------T-F5---------------------------------
- INT F5 - DoubleDOS - ???
- SeeAlso: INT F4"DoubleDOS",INT F6"DoubleDOS"
- --------*-F6---------------------------------
- INT F6 - reserved for user interrupt
- SeeAlso: INT F5"user",INT F7"user"
- --------T-F6---------------------------------
- INT F6 - DoubleDOS - ???
- SeeAlso: INT F5"DoubleDOS",INT F7"DoubleDOS"
- --------*-F7---------------------------------
- INT F7 - reserved for user interrupt
- SeeAlso: INT F6"user"
- --------T-F7---------------------------------
- INT F7 - DoubleDOS - ???
- SeeAlso: INT F6"DoubleDOS"
- ----------F700-------------------------------
- INT F7 - FSBBS 2.0 - CONFIGURATION RECORD
- AH = 00h
- AL = function
- 00h get configuration record
- Return: DS:DX -> configuration record
- 01h set configuration record
- Return: nothing
- 02h get path for option
- DS:DX -> option name
- Return: DS:DX -> path
- 03h determine whether configuration record set
- Return: AX = status
- 0000h set
- 0001h not yet set
- 04h get link state
- Return: AX = state
- 0000h unlinked
- 0001h linked
- Notes: this information is preliminary and still subject to change
- all of the INT F7 calls for FSBBS are used for interprogram
- communication between the BBS kernel and the programs it spawns
- SeeAlso: AH=01h
- ----------F701-------------------------------
- INT F7 - FSBBS 2.0 - USER RECORD
- AH = 01h
- AL = function
- 00h get user record for user currently online
- Return: DS:DX -> user record
- 01h set user record
- DS:DX -> user record
- Return: nothing
- SeeAlso: AH=00h,AH=02h
- ----------F702-------------------------------
- INT F7 - FSBBS 2.0 - GET ACCOUNT NAME
- AH = 02h
- Return: DS:DX -> 8-character blank-padded account name
- SeeAlso: AH=01h
- ----------F703-------------------------------
- INT F7 - FSBBS 2.0 - TERMINAL NUMBER
- AH = 03h
- AL = function
- 00h get terminal index number
- Return: DX = index number
- 01h set terminal index number
- DX = terminal index
- Return: nothing
- ----------F704-------------------------------
- INT F7 - FSBBS 2.0 - PASSDATA BUFFER
- AH = 04h
- AL = function
- 00h get PassData buffer contents
- DS:DX -> buffer for PassData contents
- Return: DS:DX buffer filled
- 01h set PassData contents
- DS:DX -> buffer containing new PassData
- CH = length of data in buffer
- Return: nothing
- ----------F705-------------------------------
- INT F7 - FSBBS 2.0 - TIMER FUNCTIONS
- AH = 05h
- AL = function
- 00h get time remaining
- Return: DX = number of minutes remaining
- 01h get current time
- Return: DS:DX -> 8-character time string
- 02h increment time
- DX = number of additional minutes
- 03h decrement time
- DX = number of minutes
- SeeAlso: AH=06h
- ----------F706-------------------------------
- INT F7 - FSBBS 2.0 - FUNCTION AVAILABILITY
- AH = 06h
- AL = function
- 00h determine whether function is available
- DX = index of function
- 01h set function availability
- DX = index of function
- ???
- Return: nothing
- SeeAlso: AH=05h,AH=07h
- ----------F707-------------------------------
- INT F7 - FSBBS 2.0 - DUMP FUNCTIONS
- AH = 07h
- AL = function
- 00h get current dump mode
- Return: DL = mode
- 01h set dump mode
- DL = mode
- SeeAlso: AH=06h
- --------*-F8---------------------------------
- INT F8 - reserved for user interrupt
- --------h-F8---------------------------------
- INT F8 - Sanyo MBC-550/555 - IRQ0 - 100 HZ INTERRUPT
- Note: normally masked off at 8259 interrupt controller
- SeeAlso: INT 08"IRQ0",INT F9"Sanyo",INT FA"Sanyo"
- --------T-F8---------------------------------
- INT F8 - DoubleDOS - ???
- --------*-F9---------------------------------
- INT F9 - reserved for user interrupt
- --------T-F9---------------------------------
- INT F9 - DoubleDOS - ???
- --------h-F9---------------------------------
- INT F9 - Sanyo MBC-550/555 - IRQ1 - ???
- Note: documented as "for system use only"; normally enabled at the 8259
- SeeAlso: INT 09"IRQ1",INT F8"Sanyo",INT FA"Sanyo"
- --------*-FA---------------------------------
- INT FA - reserved for user interrupt
- --------h-FA---------------------------------
- INT FA - Sanyo MBC-550/555 - IRQ2 - SERIAL PORT USART INTERRUPT
- Note: this vector is not used on the Tandy 1000TL
- SeeAlso: INT 0A"IRQ2",INT F9"Sanyo",INT FB"Sanyo"
- --------T-FA---------------------------------
- INT FA - DoubleDOS - TURN OFF TIMESHARING
- SeeAlso: INT 21/AH=EAh"DoubleDOS",INT FB"DoubleDOS"
- ----------FA---------------------------------
- INT FA P - ASM Edit - INSTALLATION CHECK
- Program: ASM Edit is a shareware programmer's editor
- Note: ASM Edit hooks this vector in protected mode to allow DPMI programs
- to detect whether they were run while shelled to DOS from ASM Edit
- Format of ASM Edit signature block:
- Offset Size Description (Table 04080)
- 00h BYTE CFh (IRET)
- 01h 8 BYTEs signature "ASM Edit" (no trailing NUL)
- --------*-FB---------------------------------
- INT FB - reserved for user interrupt
- --------h-FB---------------------------------
- INT FB - Sanyo MBC-550/555 - IRQ3 - KEYBOARD USART RECEIVE INTERRUPT
- SeeAlso: INT 0B"IRQ3",INT FA"Sanyo",INT FC"Sanyo"
- --------T-FB---------------------------------
- INT FB - DoubleDOS - TURN ON TIMESHARING
- SeeAlso: INT 21/AH=EBh"DoubleDOS",INT FA"DoubleDOS"
- --------*-FC---------------------------------
- INT FC - reserved for user interrupt
- --------T-FC---------------------------------
- INT FC - DoubleDOS - GET CURRENT SCREEN BUFFER ADDRESS
- Return: ES = segment of display buffer
- Desc: determine the address of the virtual screen to which the program
- should write instead of the actual video memory, so that the
- multitasked programs do not interfere with each other's output
- Note: the display buffer may be moved if multitasking is enabled
- SeeAlso: INT 21/AH=ECh"DoubleDOS",INT FB"DoubleDOS"
- --------h-FC---------------------------------
- INT FC - Sanyo MBC-550/555 - IRQ4 - PRINTER READY INTERRUPT
- Note: normally masked off at the 8259 interrupt controller
- SeeAlso: INT 0C"IRQ4",INT FB"Sanyo",INT FD"Sanyo"
- --------*-FD---------------------------------
- INT FD - reserved for user interrupt
- --------T-FD---------------------------------
- INT FD - DoubleDOS - ???
- --------h-FD---------------------------------
- INT FD - Sanyo MBC-550/555 - IRQ5 - FLOPPY DISK CONTROLLER
- SeeAlso: INT 0D"IRQ5",INT FC"Sanyo",INT FE"Sanyo"
- --------S-FD---------------------------------
- INT FD - TFPCX - INSTALLATION CHECK
- AH = function (also see separate entries below)
- Program: TFPCX is an interface between modem and terminal program for packet-
- radio communications
- InstallCheck: test for the string "N5NX" three bytes beyond the interrupt
- handler
- Range: INT FD is the default, but may be changed, so the full installation
- check consists of scanning for the signature
- Note: TFPCX returns AX=FFFFh on any unsupported function call
- SeeAlso: AH=01h,AH=03h,AH=FEh
- --------S-FD01-------------------------------
- INT FD - TFPCX - TEST FOR CHARACTER WAITING
- AH = 01h
- Return: AX = status
- 0000h no characters waiting
- 0001h character available for input
- Program: TFPCX is an interface between modem and terminal program for packet-
- radio communications
- SeeAlso: AH=02h
- --------S-FD02-------------------------------
- INT FD - TFPCX - GET CHARACTER
- AH = 02h
- Return: AL = character
- Notes: this call is only allowed if AH=01h indicated that a character is
- available
- all available characters should be read before sending any additional
- characters
- SeeAlso: AH=01h,AH=03h
- --------S-FD03-------------------------------
- INT FD - TFPCX - OUTPUT CHARACTER
- AH = 03h
- AL = character to send
- Return: nothing
- SeeAlso: AH=02h
- --------S-FDFE-------------------------------
- INT FD - TFPCX - GET VERSION
- AH = FEh
- Return: AH = major version
- AL = minor version
- Program: TFPCX is an interface between modem and terminal program for packet-
- radio communications
- SeeAlso: AH=01h,AH=03h
- --------B-FE---------------------------------
- INT FE - AT/XT286/PS50+ - destroyed by return from protected mode
- Note: the ROM BIOS uses 0030h:0100h as the initial stack on startup, which
- is the last fourth of the interrupt vector table. If the processor
- is returned to real mode via a hardware reset (the only possibility
- on an 80286, though there are a number of ways of generating one),
- then the BIOS startup code stacks three words on its scratch stack
- before determining that a return to real mode has been requested.
- As a result, INT FE and INT FF are corrupted.
- SeeAlso: INT FF"XT286"
- --------T-FE---------------------------------
- INT FE - DoubleDOS - GIVE UP TIME
- AL = number of 55ms time slices to give away
- Return: after other program (if active) has run
- SeeAlso: INT 21/AH=EEh"DoubleDOS",INT F4"DoubleDOS"
- --------G-FE---------------------------------
- INT FE - Turbo Debugger 8086 v2.5+ - OVERLAY MANAGER
- SeeAlso: INT 3F
- --------h-FE---------------------------------
- INT FE - Sanyo MBC-550/555 - IRQ6 - 8087 COPROCESSOR INTERRUPT
- Note: normally masked off at the 8259 interrupt controller
- SeeAlso: INT 0E"IRQ6",INT FD"Sanyo",INT FF"Sanyo"
- --------B-FF---------------------------------
- INT FF - AT/XT286/PS50+ - destroyed by return from protected mode
- Note: (see INT FE"XT286")
- SeeAlso: INT FE"XT286"
- --------b-FF---------------------------------
- INT FF - Z100 - WARM BOOT
- SeeAlso: INT 40"Z100"
- --------h-FF---------------------------------
- INT FF - Sanyo MBC-550/555 - IRQ7 - USER INTERRUPT FOR EXTERNAL INTERRUPT
- Note: normally masked off at the 8259 interrupt controller
- SeeAlso: INT 0F"IRQ7",INT FE"Sanyo"
- --------Q-FF---------------------------------
- INT FF U - QEMM-386.SYS v6.0+ - internal
- Notes: requires that a byte in the conventional-memory stub be set to the
- desired function number (00h through 0Ch)
- SeeAlso: #04081
- (Table 04081)
- Values for QEMM internal functions:
- 00h reflect back to Virtual86-mode interrupt handler (default)
- 01h ???
- 02h access DR7???
- 03h QPI upcall (see INT 67/AH=3Fh)
- 04h ???
- 05h ???
- 06h INT 15/AH=87h
- 07h EMS services (see INT 67/AH=40h,INT 67/AH=5Dh)
- 08h ???
- 09h QEMM exception handler
- 0Ah XMS services (see INT 2F/AX=4310h"XMS")
- 0Bh Virtual DMA Services (see INT 4B/AX=8102h)
- 0Ch ???
- --------v-FF---------------------------------
- INT FF - VIRUS - "Violetta" - ???
- Note: used but not chained by virus
- SeeAlso: INT E0"VIRUS",INT F1"VIRUS"
- --------V-FF----BX0000-----------------------
- INT FF - PC/FORTH - GRAPHICS API - VIDEO STATUS CHANGE
- BX = 0000h
- DS:SI -> FORTH program counter
- SS:BP -> FORTH parameter stack
- SS:SP -> FORTH return stack
- DS:DX -> FORTH video parameter area
- Desc: called to inform graphics driver of any status changes such as video
- mode changes, character color changes, graphics XOR mode turned on
- or off, etc.; also used as an installation check
- Index: installation check;PC/FORTH
- --------V-FF---------------------------------
- INT FF - PC/FORTH - GRAPHICS API
- BX = function number
- 0001h function REDRAW
- 0002h function !PEL
- 0003h function @PEL
- 0004h function LINE
- 0005h function ARC
- 0006h function @BLOCK
- 0007h function !BLOCK
- 0008h function FLOOD
- DS:SI -> FORTH program counter
- SS:BP -> FORTH parameter stack
- SS:SP -> FORTH return stack
- details of parameters not available
- Return: AX,BX,CX,DX,ES,DI may be destroyed
- Note: these functions all display an error message if the graphics routines
- are not resident
- --------!---Admin----------------------------
- Highest Table Number = 04081
- --------!---FILELIST-------------------------
- Please redistribute all of the files comprising the interrupt list (listed at
- the beginning of the list and in INTERRUP.1ST) unmodified as a group, in a
- quartet of archives named INTER60A through INTER60D (preferably the original
- authenticated PKZIP archives), the utility programs in a fifth archive
- called INTER60E.ZIP, the WinHelp-related programs in a sixth archive
- named INTER60F.ZIP, and the non-WinHelp hypertext programs in a seventh archive
- names INTER60G.ZIP.
- Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
- --------!---CONTACT_INFO---------------------
- Internet: ralf@pobox.com (currently forwards to ralf@telerama.lm.com)
- FIDO: Ralf Brown 1:129/26.1
|